Skip to content

Commit

Permalink
Minor bug fix and support for SIAMM Palermo
Browse files Browse the repository at this point in the history
  • Loading branch information
gigidn committed Jan 29, 2016
1 parent 3e99737 commit 8f79fd0
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 26 deletions.
2 changes: 1 addition & 1 deletion PyFePA/fepa.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def __setattr__(self,item,value):
try:
validator = self.__class__.__dict__[item]
vval = validator.validate(value)
if vval:
if vval or vval == 0:
super(GenFePA, self).__setattr__(item,vval)
else:
raise ValueError('Value {0} not allowed in {1}.{2}'.format(value,self.__class__,item))
Expand Down
1 change: 1 addition & 0 deletions PyFePA/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ def validate(self, value):
elif self.minlen <= len('{:.2f}'.format(float(value))) <= self.maxlen:
return float(value)
except(ValueError, TypeError):
print 'DEBUG- ', value
return False

def __init__(self, **kwargs):
Expand Down
2 changes: 1 addition & 1 deletion PyFePA/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def validate(invoice_part):
value = invoice_part.__getattribute__(k)
if value:
value = value if isinstance(v,FieldObject) or (isinstance(value,list) and v.multi) else v.tostring(value)
if not value and v.required and not v.conflict:
if not (value or value == 0) and v.required and not v.conflict:
raise ValidateException('Missing required value on {0}.{1}'.format(invoice_part.__class__.__name__, k))
taglist[v.code] = {'tag': k, 'value': value, 'type': v.type, 'depend': v.depend,
'conflict': v.conflict, 'required': v.required}
Expand Down
46 changes: 24 additions & 22 deletions PyFePA/siamm.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,32 +109,34 @@ def _siam_serialize(value):

validate(value)

intercettazioni = etree.Element('Intercettazioni')
(etree.SubElement(intercettazioni, 'ID')).text = str(value['id']) if 'id' in value else '1'
(etree.SubElement(intercettazioni, 'BENEFICIARIO')).text = unicode(value['beneficiario'].strip('IT'))
(etree.SubElement(intercettazioni, 'TIPOPAGAMENTO')).text = value['tipopagamento']
(etree.SubElement(intercettazioni, 'ENTEPAGANTE')).text = value['entepagante']
(etree.SubElement(intercettazioni, 'NUMEROFATTURA')).text = value['numerofattura']
(etree.SubElement(intercettazioni, 'DATAEMISSIONEPROVV')).text = \
"{:%Y-%m-%dT%H:%M:%S}".format(value['dataemissioneprovv']) if 'dataemissioneprovv' in value else ''
(etree.SubElement(intercettazioni, 'NUMEROMODELLO37')).text = \
value['numeromodello37'] if 'numeromodello37' in value else None
(etree.SubElement(intercettazioni, 'REGISTRO')).text = value['registro']
(etree.SubElement(intercettazioni, 'DATAFATTURA')).text = \
"{:%Y-%m-%dT%H:%M:%S}".format(value['datafattura'])
(etree.SubElement(intercettazioni, 'IMPORTOTOTALE')).text = \
'{:.2f}'.format(float(value['importototale']))
(etree.SubElement(intercettazioni, 'IMPORTOIVA')).text = \
'{:.2f}'.format(float(value['importoiva']))
(etree.SubElement(intercettazioni, 'NR_RG')).text = value['nr_rg'] if 'nr_rg' in value else None
(etree.SubElement(intercettazioni, 'SEDE')).text = value['sede']
intercettazioni = etree.Element('INTERCETTAZIONI')
(etree.SubElement(intercettazioni, 'ID')).text = str(value['id']).upper() if 'id' in value else '1'
(etree.SubElement(intercettazioni, 'BENEFICIARIO')).text = unicode(value['beneficiario'].strip('IT')).upper()
(etree.SubElement(intercettazioni, 'TIPOPAGAMENTO')).text = value['tipopagamento'].upper()
(etree.SubElement(intercettazioni, 'ENTEPAGANTE')).text = value['entepagante'].upper()
(etree.SubElement(intercettazioni, 'DATAINIZIOPRESTAZIONE')).text = \
"{:%Y-%m-%dT%H:%M:%S}".format(value['datainizioprestazione'])
(etree.SubElement(intercettazioni, 'DATAFINEPRESTAZIONE')).text = \
"{:%Y-%m-%dT%H:%M:%S}".format(value['datafineprestazione'])
(etree.SubElement(intercettazioni, 'COGNOMEMAGISTRATO')).text = unicode(value['cognomemagistrato'])
(etree.SubElement(intercettazioni, 'NOMEMAGISTRATO')).text = unicode(value['nomemagistrato'])
(etree.SubElement(intercettazioni, 'TIPOINTERCETTAZIONE')).text = value['tipointercettazione']
(etree.SubElement(intercettazioni, 'NR_RG')).text = value['nr_rg'] if 'nr_rg' in value else None
(etree.SubElement(intercettazioni, 'REGISTRO')).text = value['registro'].upper()
(etree.SubElement(intercettazioni, 'SEDE')).text = value['sede'].upper()
(etree.SubElement(intercettazioni, 'IMPORTOTOTALE')).text = \
'{:.2f}'.format(float(value['importototale']))
(etree.SubElement(intercettazioni, 'IMPORTOIVA')).text = \
'{:.2f}'.format(float(value['importoiva']))
(etree.SubElement(intercettazioni, 'NUMEROFATTURA')).text = value['numerofattura'].upper()
(etree.SubElement(intercettazioni, 'DATAFATTURA')).text = \
"{:%Y-%m-%dT%H:%M:%S}".format(value['datafattura'])
if not value['tipointercettazione'] == 'GPS':
(etree.SubElement(intercettazioni, 'NUMEROMODELLO37')).text = \
value['numeromodello37'] if 'numeromodello37' in value else None
(etree.SubElement(intercettazioni, 'TIPOINTERCETTAZIONE')).text = value['tipointercettazione'].upper()
(etree.SubElement(intercettazioni, 'NOMEMAGISTRATO')).text = unicode(value['nomemagistrato']).upper()
(etree.SubElement(intercettazioni, 'COGNOMEMAGISTRATO')).text = unicode(value['cognomemagistrato']).upper()
(etree.SubElement(intercettazioni, 'DATAEMISSIONEPROVV')).text = \
"{:%Y-%m-%dT%H:%M:%S}".format(value['dataemissioneprovv']) if 'dataemissioneprovv' in value \
and value['dataemissioneprovv'] != '' else ''

return intercettazioni

Expand Down
2 changes: 1 addition & 1 deletion PyFePA/test/IT01234567890_11001.xml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
<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>
<Quantita>5.00</Quantita>
<UnitaMisura>Unita</UnitaMisura>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoUnitario>0.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
setup(
name = 'PyFePA',
packages = ['PyFePA'],
version = '1.0.2',
version = '1.0.3',
description = 'Python object of italian FatturaPA, serialize, deserialize and verify',
author = 'Luigi Di Naro',
author_email = '[email protected]',
Expand Down

0 comments on commit 8f79fd0

Please sign in to comment.