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.

_______________________________________________
Mailing list: https://launchpad.net/~openobject-italia-core-devs
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openobject-italia-core-devs
More help   : https://help.launchpad.net/ListHelp

Rispondere a