Skip to content

Commit 8f79fd0

Browse files
committed
Minor bug fix and support for SIAMM Palermo
1 parent 3e99737 commit 8f79fd0

File tree

6 files changed

+29
-26
lines changed

6 files changed

+29
-26
lines changed

PyFePA/fepa.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def __setattr__(self,item,value):
4545
try:
4646
validator = self.__class__.__dict__[item]
4747
vval = validator.validate(value)
48-
if vval:
48+
if vval or vval == 0:
4949
super(GenFePA, self).__setattr__(item,vval)
5050
else:
5151
raise ValueError('Value {0} not allowed in {1}.{2}'.format(value,self.__class__,item))

PyFePA/fields.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ def validate(self, value):
143143
elif self.minlen <= len('{:.2f}'.format(float(value))) <= self.maxlen:
144144
return float(value)
145145
except(ValueError, TypeError):
146+
print 'DEBUG- ', value
146147
return False
147148

148149
def __init__(self, **kwargs):

PyFePA/serializer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def validate(invoice_part):
4343
value = invoice_part.__getattribute__(k)
4444
if value:
4545
value = value if isinstance(v,FieldObject) or (isinstance(value,list) and v.multi) else v.tostring(value)
46-
if not value and v.required and not v.conflict:
46+
if not (value or value == 0) and v.required and not v.conflict:
4747
raise ValidateException('Missing required value on {0}.{1}'.format(invoice_part.__class__.__name__, k))
4848
taglist[v.code] = {'tag': k, 'value': value, 'type': v.type, 'depend': v.depend,
4949
'conflict': v.conflict, 'required': v.required}

PyFePA/siamm.py

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -109,32 +109,34 @@ def _siam_serialize(value):
109109

110110
validate(value)
111111

112-
intercettazioni = etree.Element('Intercettazioni')
113-
(etree.SubElement(intercettazioni, 'ID')).text = str(value['id']) if 'id' in value else '1'
114-
(etree.SubElement(intercettazioni, 'BENEFICIARIO')).text = unicode(value['beneficiario'].strip('IT'))
115-
(etree.SubElement(intercettazioni, 'TIPOPAGAMENTO')).text = value['tipopagamento']
116-
(etree.SubElement(intercettazioni, 'ENTEPAGANTE')).text = value['entepagante']
117-
(etree.SubElement(intercettazioni, 'NUMEROFATTURA')).text = value['numerofattura']
118-
(etree.SubElement(intercettazioni, 'DATAEMISSIONEPROVV')).text = \
119-
"{:%Y-%m-%dT%H:%M:%S}".format(value['dataemissioneprovv']) if 'dataemissioneprovv' in value else ''
120-
(etree.SubElement(intercettazioni, 'NUMEROMODELLO37')).text = \
121-
value['numeromodello37'] if 'numeromodello37' in value else None
122-
(etree.SubElement(intercettazioni, 'REGISTRO')).text = value['registro']
123-
(etree.SubElement(intercettazioni, 'DATAFATTURA')).text = \
124-
"{:%Y-%m-%dT%H:%M:%S}".format(value['datafattura'])
125-
(etree.SubElement(intercettazioni, 'IMPORTOTOTALE')).text = \
126-
'{:.2f}'.format(float(value['importototale']))
127-
(etree.SubElement(intercettazioni, 'IMPORTOIVA')).text = \
128-
'{:.2f}'.format(float(value['importoiva']))
129-
(etree.SubElement(intercettazioni, 'NR_RG')).text = value['nr_rg'] if 'nr_rg' in value else None
130-
(etree.SubElement(intercettazioni, 'SEDE')).text = value['sede']
112+
intercettazioni = etree.Element('INTERCETTAZIONI')
113+
(etree.SubElement(intercettazioni, 'ID')).text = str(value['id']).upper() if 'id' in value else '1'
114+
(etree.SubElement(intercettazioni, 'BENEFICIARIO')).text = unicode(value['beneficiario'].strip('IT')).upper()
115+
(etree.SubElement(intercettazioni, 'TIPOPAGAMENTO')).text = value['tipopagamento'].upper()
116+
(etree.SubElement(intercettazioni, 'ENTEPAGANTE')).text = value['entepagante'].upper()
131117
(etree.SubElement(intercettazioni, 'DATAINIZIOPRESTAZIONE')).text = \
132118
"{:%Y-%m-%dT%H:%M:%S}".format(value['datainizioprestazione'])
133119
(etree.SubElement(intercettazioni, 'DATAFINEPRESTAZIONE')).text = \
134120
"{:%Y-%m-%dT%H:%M:%S}".format(value['datafineprestazione'])
135-
(etree.SubElement(intercettazioni, 'COGNOMEMAGISTRATO')).text = unicode(value['cognomemagistrato'])
136-
(etree.SubElement(intercettazioni, 'NOMEMAGISTRATO')).text = unicode(value['nomemagistrato'])
137-
(etree.SubElement(intercettazioni, 'TIPOINTERCETTAZIONE')).text = value['tipointercettazione']
121+
(etree.SubElement(intercettazioni, 'NR_RG')).text = value['nr_rg'] if 'nr_rg' in value else None
122+
(etree.SubElement(intercettazioni, 'REGISTRO')).text = value['registro'].upper()
123+
(etree.SubElement(intercettazioni, 'SEDE')).text = value['sede'].upper()
124+
(etree.SubElement(intercettazioni, 'IMPORTOTOTALE')).text = \
125+
'{:.2f}'.format(float(value['importototale']))
126+
(etree.SubElement(intercettazioni, 'IMPORTOIVA')).text = \
127+
'{:.2f}'.format(float(value['importoiva']))
128+
(etree.SubElement(intercettazioni, 'NUMEROFATTURA')).text = value['numerofattura'].upper()
129+
(etree.SubElement(intercettazioni, 'DATAFATTURA')).text = \
130+
"{:%Y-%m-%dT%H:%M:%S}".format(value['datafattura'])
131+
if not value['tipointercettazione'] == 'GPS':
132+
(etree.SubElement(intercettazioni, 'NUMEROMODELLO37')).text = \
133+
value['numeromodello37'] if 'numeromodello37' in value else None
134+
(etree.SubElement(intercettazioni, 'TIPOINTERCETTAZIONE')).text = value['tipointercettazione'].upper()
135+
(etree.SubElement(intercettazioni, 'NOMEMAGISTRATO')).text = unicode(value['nomemagistrato']).upper()
136+
(etree.SubElement(intercettazioni, 'COGNOMEMAGISTRATO')).text = unicode(value['cognomemagistrato']).upper()
137+
(etree.SubElement(intercettazioni, 'DATAEMISSIONEPROVV')).text = \
138+
"{:%Y-%m-%dT%H:%M:%S}".format(value['dataemissioneprovv']) if 'dataemissioneprovv' in value \
139+
and value['dataemissioneprovv'] != '' else ''
138140

139141
return intercettazioni
140142

PyFePA/test/IT01234567890_11001.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@
101101
<Descrizione>LA DESCRIZIONE DELLA FORNITURA èàè àù PUO' SUPERARE I CENTO CARATTERI CHE RAPPRESENTAVANO IL PRECEDENTE LIMITE DIMENSIONALE. TALE LIMITE NELLA NUOVA VERSIONE E' STATO PORTATO A MILLE CARATTERI</Descrizione>
102102
<Quantita>5.00</Quantita>
103103
<UnitaMisura>Unita</UnitaMisura>
104-
<PrezzoUnitario>1.00</PrezzoUnitario>
104+
<PrezzoUnitario>0.00</PrezzoUnitario>
105105
<PrezzoTotale>5.00</PrezzoTotale>
106106
<AliquotaIVA>22.00</AliquotaIVA>
107107
</DettaglioLinee>

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
setup(
2323
name = 'PyFePA',
2424
packages = ['PyFePA'],
25-
version = '1.0.2',
25+
version = '1.0.3',
2626
description = 'Python object of italian FatturaPA, serialize, deserialize and verify',
2727
author = 'Luigi Di Naro',
2828
author_email = 'Luigi.DiNaro@ktec.it',

0 commit comments

Comments
 (0)