← Back to team overview

openobject-italia-core-devs team mailing list archive

Re: [Merge] lp:~a-camilli/openobject-italia/6.1-spesometro into lp:openobject-italia/6.1

 

Bravo Alessandro,
ottimo lavoro veramente straordinario.

Per l'incompatibilità con python 2.6, se posso permettermi, coglierei l'occasione per rivedere il codice anche in funzione degli sviluppi futuri, visto che vuoi introdurre anche la dichiarazione analitica.
Soltanto a titolo di esempio, ovviamente puoi operare come meglio credi, ti propongo, un pezzo di codice del software estratto dal mio precedente gestionale.
Questa parte di codice inserisce un valore del campi formattando secondo le specifiche ministeriali e può essere usato in qualsiasi quadro; in questo modo non è necessario ripetere le stesse istruzioni in ogni quadro e si può utilizzare nei record C, D e anche E; inoltre si avrebbe un punto di scrittura comune per tutti (anche per debug).
Ho fatto una rapida simil-traduzione in python, come ho detto è soltanto un codice di esempio

#
# Extract from Italian Agenzia delle Entrate (Revenue Agency), here AdE standard
#  format_id: means how field if formatted
#  pic: public section; may be “FA”, “BL”, “SE”, etc
#  prog_sezione: section index
#  val_id: index to value from Ade standard
#  val: value to insert in file
#  parter_id: in order to extrat partner info from record
#
#  AdE standard is: pic (2 chars), prog_sezione (3 digit, zero left filled),
#    val_id (3 digit, zero left filled, val (16 chars)
#  val may be one of
#  string text: left align, space filled  -> i.e. 'FOO     '
#  combobox: value '1' right align, space filled   -> i.e. '       1'
#  numeric: right align, space filled    -> i.e. '     123'
#  date: day (2 digit), month (2 digit), year (4 digit) -> i.e. '26061959'
#
add_1_field (format_id, pic, prog_sezione, val_id, val, partner_id)

    rcd += '{0:2s}'.format(pic)
    rcd += '{0:3d}'.format(prog_sezione)
    rcd += '{0:3d}'.format(val_id)
    if format_id == 'AN':
    # Text -> if is longer than 16 chars, will be splitted in 2 o more fields
	if val.len > 16:
	    _split_string_positional_field(self, val)
	else:
	    rcd += '{0:16s}'.format(val)
    elif format_id == 'CB':
    # Combobox -> if false do nothing, if true set value '      1 '
      if val_id:
	    rcd += '{0:16d}'.format(val)
    elif format_id == 'NP':
    # Positive number -> right align, space filled
	rcd += '{0:16d}' ….
    elif format_id == 'CF':
    # Fiscal code -> May of vatnumber too, left align
	rcd += '{0:16s}'.format(val)
    elif format_id == 'DT':
    # Birthday, extracted by parter_id -> day, month, year, left align
	rcd += '{0:16s}' ….
    elif format_id == 'PN':
    # Born district, extracted by parter_id -> 2 chars, left align
	rcd += '{0:16s}' ….
    elif format_id == 'r1':
    # Name, extracted by parter_id -> 2 chars, left align
	rcd += '{0:16s}' ….
    elif format_id == 'r3':
    # Born in city, extracted by parter_id -> 2 chars, left align
	rcd += '{0:16s}' ….
    elif format_id == 'r4':
    # Live in city, extracted by parter_id -> 2 chars, left align
	rcd += '{0:16s}' ….
    elif format_id == 'r5':
    # Live in country, extracted by parter_id -> 2 chars, left align
    # Warning: code extracted by res.country of l10n_it_base v7.0.02 (2014)
    # Warning: it is a numeric code, right align space filled but  …
    #  must be 3 digit len -> '    011'
	rcd += '{0:16s}' ….
    elif format_id == 'r6':
    # Live in addresss, extracted by parter_id -> 2 chars, left align
	rcd += '{0:16s}' ….
    elif format_id == 'dr':
    # recording date
	rcd += '{0:16s}' ….
    elif format_id == 'dd':
    # document date
	rcd += '{0:16s}' ….
    elif format_id == 'dn':
    # document number
	rcd += '{0:16s}' ….
    else:
		Error



-- 
https://code.launchpad.net/~a-camilli/openobject-italia/6.1-spesometro/+merge/210439
Your team OpenERP Italia core devs is subscribed to branch lp:openobject-italia/6.1.


References