diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d456f47
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*.pyc
+dist/
+.vscode/
+*.egg-info/
+MANIFEST
\ No newline at end of file
diff --git a/PyFePA/fepa.py b/PyFePA/fepa.py
index 3c38ab8..57d58d3 100644
--- a/PyFePA/fepa.py
+++ b/PyFePA/fepa.py
@@ -15,7 +15,7 @@
#
###################################################################################################################
-from fields import *
+from .fields import *
import sys
@@ -24,14 +24,14 @@
'RF11', 'RF12', 'RF13', 'RF14', 'RF15', 'RF16', 'RF17', 'RF18', 'RF19')
SU = ('SU', 'SM')
SL = ('LS', 'LN')
-TD = map(lambda td: 'TD{:0=2d}'.format(td), range(1, 6))
+TD = ['TD{:0=2d}'.format(td) for td in range(1, 6)]
TR = ['RT01','RT01']
-TC = map(lambda tc: 'TC{:0=2d}'.format(tc), range(1,22))
-NT = map(lambda nt: 'NT{:0=2d}'.format(nt), range(1,7))
+TC = ['TC{:0=2d}'.format(tc) for tc in range(1,22)]
+NT = ['N{:0=1d}'.format(nt) for nt in range(1,8)]
TCP = ('SC', 'PR', 'AB', 'AC')
SM = ('SC', 'MG')
TP = ('TP01', 'TP02', 'TP03')
-MP = map(lambda mp: 'MP{:0=2d}'.format(mp), range(1,22))
+MP = ['MP{:0=2d}'.format(mp) for mp in range(1,22)]
EI = ('I','D','S')
@@ -63,7 +63,7 @@ def __getattribute__(self, item):
def from_element(self, element):
- for k, v in self.__class__.__dict__.items():
+ for k, v in list(self.__class__.__dict__.items()):
if isinstance(v,FieldType):
tagg = [t for t in list(element) if str.lower(t.tag) == str.lower(k)]
if len(tagg) == 1 or (v.multi and len(tagg) > 1):
diff --git a/PyFePA/fields.py b/PyFePA/fields.py
index a904ebb..a30324c 100644
--- a/PyFePA/fields.py
+++ b/PyFePA/fields.py
@@ -18,6 +18,7 @@
import datetime
import importlib
import dateutil.parser
+from decimal import Decimal
class FieldType(object):
@@ -29,11 +30,11 @@ class FieldType(object):
multi = False
def __init__(self, **kwargs):
- self.required = kwargs['required'] if kwargs.has_key('required') else False
- self.depend = kwargs['depend'] if kwargs.has_key('depend') else None
- self.conflict = kwargs['conflict'] if kwargs.has_key('conflict') else None
- self.code = kwargs['code'] if kwargs.has_key('code') else None
- self.multi = kwargs['multi'] if kwargs.has_key('multi') else False
+ self.required = kwargs['required'] if 'required' in kwargs else False
+ self.depend = kwargs['depend'] if 'depend' in kwargs else None
+ self.conflict = kwargs['conflict'] if 'conflict' in kwargs else None
+ self.code = kwargs['code'] if 'code' in kwargs else None
+ self.multi = kwargs['multi'] if 'multi' in kwargs else False
def validate(self, value):
retval = False
@@ -56,27 +57,28 @@ def validate(self, value):
elif not (self.minlen and self.maxlen ):
valid = True
elif self.minlen and not self.maxlen :
- valid = self.minlen <= len(unicode(value))
+ valid = self.minlen <= len(value)
elif self.maxlen and not self.minlen:
- valid = len(unicode(value)) <= self.maxlen
+ valid = len(value) <= self.maxlen
else:
- valid = self.minlen <= len(unicode(value)) <= self.maxlen
+ valid = self.minlen <= len(value) <= self.maxlen
+
if valid:
- return value if isinstance(value,(str,unicode)) else unicode(value)
+ return value if isinstance(value,str) else value.decode('utf8')
else:
return valid
def __init__(self, **kwargs):
- self.minlen = kwargs['minlen'] if kwargs.has_key('minlen') else False
- self.maxlen = kwargs['maxlen'] if kwargs.has_key('maxlen') else False
+ self.minlen = kwargs['minlen'] if 'minlen' in kwargs else False
+ self.maxlen = kwargs['maxlen'] if 'maxlen' in kwargs else False
super(FieldString,self).__init__(**kwargs)
@classmethod
def tostring(cls,value):
- return unicode(value)
+ return str(value)
class FieldCostant(FieldType):
@@ -87,20 +89,20 @@ class FieldCostant(FieldType):
def validate(self, value):
if super(FieldCostant,self).validate(value):
return value
- elif unicode(value) in self.cvalue:
+ elif str(value) in self.cvalue:
return value
else:
return False
def __init__(self, **kwargs):
- self.cvalue = kwargs['cvalue'] if kwargs.has_key('cvalue') else None
+ self.cvalue = kwargs['cvalue'] if 'cvalue' in kwargs else None
super(FieldCostant,self).__init__(**kwargs)
@classmethod
def tostring(cls,value):
- return unicode(value)
+ return str(value)
class FieldInteger(FieldType):
@@ -120,8 +122,8 @@ def validate(self, value):
def __init__(self, **kwargs):
- self.minlen = kwargs['minlen'] if kwargs.has_key('minlen') else None
- self.maxlen = kwargs['maxlen'] if kwargs.has_key('maxlen') else None
+ self.minlen = kwargs['minlen'] if 'minlen' in kwargs else None
+ self.maxlen = kwargs['maxlen'] if 'maxlen' in kwargs else None
super(FieldInteger,self).__init__(**kwargs)
@@ -141,21 +143,21 @@ def validate(self, value):
if super(FieldDecimal,self).validate(value):
return value
elif self.minlen <= len('{:.2f}'.format(float(value))) <= self.maxlen:
- return float(value)
+ return Decimal(value).quantize(Decimal('.01'))
except(ValueError, TypeError):
- print 'DEBUG- ', value
+ print(('DEBUG- ', value))
return False
def __init__(self, **kwargs):
- self.minlen = kwargs['minlen'] if kwargs.has_key('minlen') else None
- self.maxlen = kwargs['maxlen'] if kwargs.has_key('maxlen') else None
+ self.minlen = kwargs['minlen'] if 'minlen' in kwargs else None
+ self.maxlen = kwargs['maxlen'] if 'maxlen' in kwargs else None
super(FieldDecimal,self).__init__(**kwargs)
@classmethod
def tostring(cls,value):
- return '{:.2f}'.format(float(value))
+ return str(Decimal(value).quantize(Decimal('.01')))
class FieldDate(FieldType):
@@ -209,7 +211,7 @@ def validate(self, value):
def __init__(self, **kwargs):
- self.object_class = kwargs['object_class'] if kwargs.has_key('object_class') else False
+ self.object_class = kwargs['object_class'] if 'object_class' in kwargs else False
super(FieldObject,self).__init__(**kwargs)
@classmethod
diff --git a/PyFePA/sdi.py b/PyFePA/sdi.py
index 7aed53c..7a168ee 100644
--- a/PyFePA/sdi.py
+++ b/PyFePA/sdi.py
@@ -15,8 +15,8 @@
#
###################################################################################################################
-from fields import *
-from fepa import GenFePA
+from .fields import *
+from .fepa import GenFePA
lxml = False
@@ -134,4 +134,4 @@ class AttestazioneTrasmissioneFattura(GenFePA):
test.DataOraRicezione = '2015-01-01'
test.IdentificativoSdI = '12334'
-print test
\ No newline at end of file
+print(test)
\ No newline at end of file
diff --git a/PyFePA/serializer.py b/PyFePA/serializer.py
index 1c20f33..d5647fc 100644
--- a/PyFePA/serializer.py
+++ b/PyFePA/serializer.py
@@ -38,7 +38,7 @@ class ValidateException(Exception):
def validate(invoice_part):
taglist = {}
- for k, v in invoice_part.__class__.__dict__.items():
+ for k, v in list(invoice_part.__class__.__dict__.items()):
if isinstance(v, FieldType):
value = invoice_part.__getattribute__(k)
if value:
@@ -49,7 +49,7 @@ def validate(invoice_part):
'conflict': v.conflict, 'required': v.required}
# Risolve Dipendenze e Conflitti
- for v in taglist.values():
+ for v in list(taglist.values()):
if v['value'] is not None and v['depend'] is not None:
for d in v['depend']:
if taglist[d]['value'] is None:
@@ -57,11 +57,11 @@ def validate(invoice_part):
elif v['value'] is not None and v['conflict'] is not None:
for d in v['conflict']:
if taglist[d]['value'] is not None:
- raise ValidateException('{0} Conflict whit {1}'.format(v['tag'],v['conflict']))
+ raise ValidateException('Cannot specify both {0} and {1} at the same time'.format(v['tag'],v['conflict']))
elif v['value'] is None and v['conflict'] is not None and v['required']:
for d in v['conflict']:
if taglist[d]['value'] is None:
- raise ValidateException('{0} or {1} mast be specify'.format(v['tag'],v['conflict']))
+ raise ValidateException('Either {0} or {1} is missing. Alternatively they could both be specified, which is not allowed.'.format(v['tag'],v['conflict']))
return taglist
@@ -98,7 +98,7 @@ def globalvalidation(fattura):
raise ValidateException('Denominazione Azienda Mancante')
for feb in fattura.FatturaElettronicaBody:
if feb.DatiGenerali.DatiGeneraliDocumento.Data > datetime.date.today():
- print feb.DatiGenerali.DatiGeneraliDocumento.Data, '- TODAY -', datetime.date.today()
+ print((feb.DatiGenerali.DatiGeneraliDocumento.Data, '- TODAY -', datetime.date.today()))
raise ValidateException('00403 - Data Fattura non puo essere nel futuro')
for ln in feb.DatiBeniServizi.DettaglioLinee:
if ln.Ritenuta and not feb.DatiGenerali.DatiGeneraliDocumento.DatiRitenuta:
@@ -146,6 +146,8 @@ def serializexml(invoice_part,tagname):
for t in taglist[k]['value']:
fe.append(serializexml(t, taglist[k]['tag']))
elif taglist[k]['type'] == 'S' and taglist[k]['value'] is not None:
+ if type(taglist[k]['value']) != str:
+ taglist[k]['value'] = str(taglist[k]['value'])
(ElementTree.SubElement(fe, taglist[k]['tag'])).text = taglist[k]['value']
elif taglist[k]['type'] == 'O' and taglist[k]['value'] is not None:
fe.append(serializexml(taglist[k]['value'],taglist[k]['tag']))
diff --git a/PyFePA/siamm.py b/PyFePA/siamm.py
index 245c86d..a0bd65d 100644
--- a/PyFePA/siamm.py
+++ b/PyFePA/siamm.py
@@ -17,7 +17,7 @@
import datetime
-from utils import piva
+from .utils import piva
lxml = False
@@ -120,7 +120,7 @@ def _siam_serialize(value):
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'])
+ (etree.SubElement(intercettazioni, 'BENEFICIARIO')).text = str(value['beneficiario'])
(etree.SubElement(intercettazioni, 'TIPOPAGAMENTO')).text = value['tipopagamento'].upper()
(etree.SubElement(intercettazioni, 'ENTEPAGANTE')).text = value['entepagante'].upper()
(etree.SubElement(intercettazioni, 'DATAINIZIOPRESTAZIONE')).text = \
@@ -141,8 +141,8 @@ def _siam_serialize(value):
(etree.SubElement(intercettazioni, 'NUMEROMODELLO37')).text = \
fillprot(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, 'NOMEMAGISTRATO')).text = str(value['nomemagistrato']).upper()
+ (etree.SubElement(intercettazioni, 'COGNOMEMAGISTRATO')).text = str(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 ''
diff --git a/PyFePA/test/build_fatturapa.py b/PyFePA/test/build_fatturapa.py
index 6e9707d..ae65f1f 100644
--- a/PyFePA/test/build_fatturapa.py
+++ b/PyFePA/test/build_fatturapa.py
@@ -221,4 +221,4 @@ def allegati(self):
if __name__ == "__main__":
fatturapa = FatturaPA()
fpa = fatturapa.get_fatturapa()
- print serializer(fpa,'xml')
\ No newline at end of file
+ print((serializer(fpa,'xml')))
\ No newline at end of file
diff --git a/PyFePA/test/test_fields.py b/PyFePA/test/test_fields.py
index 6fcc93e..d985440 100644
--- a/PyFePA/test/test_fields.py
+++ b/PyFePA/test/test_fields.py
@@ -38,10 +38,10 @@ def testFiledString(self):
sf = fields.FieldString(required=True, minlen=1, maxlen=12)
sfb64 = fields.FieldString(required=True, minlen=1)
self.assertEqual(tstr, sf.validate(tstr))
- self.assertEqual(unicode(tdate), sf.validate(tdate))
+ self.assertEqual(str(tdate), sf.validate(tdate))
self.assertEqual(False, sf.validate(tdatetime))
- self.assertEqual(unicode(tint), sf.validate(tint))
- self.assertEqual(unicode(tdec), sf.validate(tdec))
+ self.assertEqual(str(tint), sf.validate(tint))
+ self.assertEqual(str(tdec), sf.validate(tdec))
self.assertEqual(False, sf.validate(tobj))
self.assertEqual(tconst, sf.validate(tconst))
self.assertEqual(False, sf.validate('abcdefghilmnop'))
diff --git a/PyFePA/utils.py b/PyFePA/utils.py
index 7ad93be..67ed791 100644
--- a/PyFePA/utils.py
+++ b/PyFePA/utils.py
@@ -25,9 +25,9 @@ def piva(value):
if (len(value) != 11) or not value.isdigit():
return False
- value = map(int, value)
- checksum = sum(map(lambda x: value[x], xrange(0, 10, 2)))
- checksum += sum(map(lambda x: (2 * value[x]) - 9 if (2 * value[x]) > 9 else (2 * value[x]) , xrange(1, 10, 2)))
+ value = list(map(int, value))
+ checksum = sum([value[x] for x in range(0, 10, 2)])
+ checksum += sum([(2 * value[x]) - 9 if (2 * value[x]) > 9 else (2 * value[x]) for x in range(1, 10, 2)])
checksum = 10 - (checksum % 10) if checksum % 10 != 0 else 0
return value[10] == checksum
diff --git a/PyFePA/xsd/fatturaPA_v1.2.1.xsl b/PyFePA/xsd/fatturaPA_v1.2.1.xsl
new file mode 100644
index 0000000..8b5aef2
--- /dev/null
+++ b/PyFePA/xsd/fatturaPA_v1.2.1.xsl
@@ -0,0 +1,3068 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gennaio
+
+
+ Febbraio
+
+
+ Marzo
+
+
+ Aprile
+
+
+ Maggio
+
+
+ Giugno
+
+
+ Luglio
+
+
+ Agosto
+
+
+ Settembre
+
+
+ Ottobre
+
+
+ Novembre
+
+
+ Dicembre
+
+
+ Mese non riconosciuto
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
FATTURA ELETTRONICA
+
+
+
+
+ Versione
+
+
+
+
+
+
Dati relativi alla trasmissione
+
+
+
+
+ -
+ Identificativo del trasmittente:
+
+
+
+
+
+
+
+ -
+ Progressivo di invio:
+
+
+
+
+
+
+ -
+ Formato Trasmissione:
+
+
+
+
+
+
+ -
+ Codice Amministrazione destinataria:
+
+
+
+
+
+
+ -
+ Telefono del trasmittente:
+
+
+
+
+
+
+ -
+ E-mail del trasmittente:
+
+
+
+
+
+
+ -
+ Destinatario PEC:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del cedente / prestatore
+
+
+ Dati anagrafici
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Codice fiscale:
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+ -
+ Titolo:
+
+
+
+
+
+
+ -
+ Codice EORI:
+
+
+
+
+
+
+ -
+ Albo professionale di appartenenza:
+
+
+
+
+
+
+ -
+ Provincia di competenza dell'Albo:
+
+
+
+
+
+
+ -
+ Numero iscrizione all'Albo:
+
+
+
+
+
+
+ -
+ Data iscrizione all'Albo:
+
+
+
+
+
+
+
+
+
+ -
+ Regime fiscale:
+
+
+
+
+
+
+
+
+
+ (ordinario)
+
+
+ (contribuenti minimi)
+
+
+ (nuove iniziative produttive) - Non più valido in quanto abrogato dalla legge di stabilità 2015
+
+
+ (agricoltura e attività connesse e pesca)
+
+
+ (vendita sali e tabacchi)
+
+
+ (commercio fiammiferi)
+
+
+ (editoria)
+
+
+ (gestione servizi telefonia pubblica)
+
+
+ (rivendita documenti di trasporto pubblico e di sosta)
+
+
+ (intrattenimenti, giochi e altre attività di cui alla tariffa allegata al DPR 640/72)
+
+
+ (agenzie viaggi e turismo)
+
+
+ (agriturismo)
+
+
+ (vendite a domicilio)
+
+
+ (rivendita beni usati, oggetti d’arte,
+ d’antiquariato o da collezione)
+
+
+ (agenzie di vendite all’asta di oggetti d’arte,
+ antiquariato o da collezione)
+
+
+ (IVA per cassa P.A.)
+
+
+ (IVA per cassa - art. 32-bis, D.L. 83/2012)
+
+
+ (Regime forfettario)
+
+
+ (altro)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+
+
+
+
+ Dati della sede
+
+
+
+ -
+ Indirizzo:
+
+
+
+
+
+
+ -
+ Numero civico:
+
+
+
+
+
+
+ -
+ CAP:
+
+
+
+
+
+
+ -
+ Comune:
+
+
+
+
+
+
+ -
+ Provincia:
+
+
+
+
+
+
+ -
+ Nazione:
+
+
+
+
+
+
+
+
+
+
+ Dati della stabile organizzazione
+
+
+
+ -
+ Indirizzo:
+
+
+
+
+
+
+ -
+ Numero civico:
+
+
+
+
+
+
+ -
+ CAP:
+
+
+
+
+
+
+ -
+ Comune:
+
+
+
+
+
+
+ -
+ Provincia:
+
+
+
+
+
+
+ -
+ Nazione:
+
+
+
+
+
+
+
+
+
+
+ Dati di iscrizione nel registro delle imprese
+
+
+
+
+ -
+ Provincia Ufficio Registro Imprese:
+
+
+
+
+
+
+ -
+ Numero di iscrizione:
+
+
+
+
+
+
+ -
+ Capitale sociale:
+
+
+
+
+
+
+ -
+ Numero soci:
+
+
+
+
+
+
+
+
+
+ (socio unico)
+
+
+ (più soci)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Stato di liquidazione:
+
+
+
+
+
+
+
+
+
+ (in liquidazione)
+
+
+ (non in liquidazione)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+
+
+
+
+
+ Recapiti
+
+
+ -
+ Telefono:
+
+
+
+
+
+
+ -
+ Fax:
+
+
+
+
+
+
+ -
+ E-mail:
+
+
+
+
+
+
+
+
+
+
+ Riferimento amministrativo
+
+ -
+ Riferimento:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del rappresentante fiscale del cedente / prestatore
+
+
+ Dati anagrafici
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Codice fiscale:
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+ -
+ Titolo onorifico:
+
+
+
+
+
+
+ -
+ Codice EORI:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del cessionario / committente
+
+
+ Dati anagrafici
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Codice Fiscale:
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+ -
+ Titolo onorifico:
+
+
+
+
+
+
+ -
+ Codice EORI:
+
+
+
+
+
+
+
+
+
+
+
+ Dati della sede
+
+
+
+
+ -
+ Indirizzo:
+
+
+
+
+
+
+ -
+ Numero civico:
+
+
+
+
+
+
+ -
+ CAP:
+
+
+
+
+
+
+ -
+ Comune:
+
+
+
+
+
+
+ -
+ Provincia:
+
+
+
+
+
+
+ -
+ Nazione:
+
+
+
+
+
+
+
+
+
+
+
+ Stabile organizzazione del cessionario / committente
+
+
+
+
+ -
+ Indirizzo:
+
+
+
+
+
+
+ -
+ Numero civico:
+
+
+
+
+
+
+ -
+ CAP:
+
+
+
+
+
+
+ -
+ Comune:
+
+
+
+
+
+
+ -
+ Provincia:
+
+
+
+
+
+
+ -
+ Nazione:
+
+
+
+
+
+
+
+
+
+
+
+
Dati del rappresentante fiscale del cessionario / committente
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Soggetto emittente la fattura
+
+ -
+ Soggetto emittente:
+
+
+
+
+
+
+
+
+ (cessionario/committente)
+
+
+ (terzo)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Numero documento nel lotto:
+
+
+
+
+
+
+ Versione
+
+
+
+
+
+
+
+
+
+
+
Dati generali del documento
+
+
+
+ -
+ Tipologia documento:
+
+
+
+
+
+
+
+
+
+ (fattura)
+
+
+ (acconto/anticipo su fattura)
+
+
+ (acconto/anticipo su parcella)
+
+
+ (nota di credito)
+
+
+ (nota di debito)
+
+
+ (parcella)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Valuta importi:
+
+
+
+
+
+
+ -
+ Data documento:
+
+
+
+
+
+
+
+
+
+ -
+ Numero documento:
+
+
+
+
+
+
+ -
+ Importo totale documento:
+
+
+
+
+
+
+ -
+ Arrotondamento su Importo totale documento:
+
+
+
+
+
+
+
+ -
+ Causale:
+
+
+
+
+
+
+
+ -
+ Art. 73 DPR 633/72:
+
+
+
+
+
+
+
+
+
+
+
+ Ritenuta
+
+
+ -
+ Tipologia ritenuta:
+
+
+
+
+
+
+
+
+ (ritenuta persone fisiche)
+
+
+ (ritenuta persone giuridiche)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Importo ritenuta:
+
+
+
+
+
+
+ -
+ Aliquota ritenuta (%):
+
+
+
+
+
+
+ -
+ Causale di pagamento:
+
+
+
+
+
+
+
+ (decodifica come da modello 770S)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bollo
+
+
+ -
+ Bollo virtuale:
+
+
+
+
+
+
+ -
+ Importo bollo:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Cassa previdenziale
+
+
+
+ -
+ Tipologia cassa previdenziale:
+
+
+
+
+
+
+
+
+ (Cassa Nazionale Previdenza e Assistenza Avvocati
+ e Procuratori legali)
+
+
+ (Cassa Previdenza Dottori Commercialisti)
+
+
+ (Cassa Previdenza e Assistenza Geometri)
+
+
+ (Cassa Nazionale Previdenza e Assistenza
+ Ingegneri e Architetti liberi profess.)
+
+
+ (Cassa Nazionale del Notariato)
+
+
+ (Cassa Nazionale Previdenza e Assistenza
+ Ragionieri e Periti commerciali)
+
+
+ (Ente Nazionale Assistenza Agenti e Rappresentanti
+ di Commercio-ENASARCO)
+
+
+ (Ente Nazionale Previdenza e Assistenza Consulenti
+ del Lavoro-ENPACL)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Medici-ENPAM)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Farmacisti-ENPAF)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Veterinari-ENPAV)
+
+
+ (Ente Nazionale Previdenza e Assistenza Impiegati
+ dell'Agricoltura-ENPAIA)
+
+
+ (Fondo Previdenza Impiegati Imprese di Spedizione
+ e Agenzie Marittime)
+
+
+ (Istituto Nazionale Previdenza Giornalisti
+ Italiani-INPGI)
+
+
+ (Opera Nazionale Assistenza Orfani Sanitari
+ Italiani-ONAOSI)
+
+
+ (Cassa Autonoma Assistenza Integrativa
+ Giornalisti Italiani-CASAGIT)
+
+
+ (Ente Previdenza Periti Industriali e Periti
+ Industriali Laureati-EPPI)
+
+
+ (Ente Previdenza e Assistenza
+ Pluricategoriale-EPAP)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Biologi-ENPAB)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Professione Infermieristica-ENPAPI)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Psicologi-ENPAP)
+
+
+ (INPS)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Aliquota contributo cassa (%):
+
+
+
+
+
+
+ -
+ Importo contributo cassa:
+
+
+
+
+
+
+ -
+ Imponibile previdenziale:
+
+
+
+
+
+
+ -
+ Aliquota IVA applicata:
+
+
+
+
+
+
+ -
+ Contributo cassa soggetto a ritenuta:
+
+
+
+
+
+
+ -
+ Tipologia di non imponibilità del contributo:
+
+
+
+
+
+
+
+
+ (escluse ex art. 15)
+
+
+ (non soggette)
+
+
+ (non imponibili)
+
+
+ (esenti)
+
+
+ (regime del margine / IVA non esposta in fattura)
+
+
+ (inversione contabile)
+
+
+ (IVA assolta in altro stato UE)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Riferimento amministrativo / contabile:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sconto/maggiorazione
+
+
+
+
+ -
+ Tipologia:
+
+
+
+
+
+
+
+
+
+ (sconto)
+
+
+
+ (maggiorazione)
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Percentuale:
+
+
+
+
+
+
+ -
+ Importo:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati dell'ordine di acquisto
+
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+ -
+ Identificativo ordine di acquisto:
+
+
+
+
+
+
+ -
+ Data ordine di acquisto:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea ordine di acquisto:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del contratto
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+ -
+ Identificativo contratto:
+
+
+
+
+
+
+ -
+ Data contratto:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea contratto:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati della convenzione
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+ -
+ Identificativo convenzione:
+
+
+
+
+
+
+ -
+ Data convenzione:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea convenzione:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati della ricezione
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+ -
+ Identificativo ricezione:
+
+
+
+
+
+
+ -
+ Data ricezione:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea ricezione:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati della fattura collegata
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+ -
+ Identificativo fattura collegata:
+
+
+
+
+
+
+ -
+ Data fattura collegata:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea fattura collegata:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Stato avanzamento lavori
+
+
+ -
+ Numero fase avanzamento:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del documento di trasporto
+
+
+
+ -
+ Numero DDT:
+
+
+
+
+
+
+ -
+ Data DDT:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi al trasporto
+
+
+ Dati del vettore
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Codice Fiscale:
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+ -
+ Titolo onorifico:
+
+
+
+
+
+
+ -
+ Codice EORI:
+
+
+
+
+
+
+ -
+ Numero licenza di guida:
+
+
+
+
+
+
+
+
+
+
+ Altri dati
+
+
+
+
+ -
+ Mezzo di trasporto:
+
+
+
+
+
+
+ -
+ Causale trasporto:
+
+
+
+
+
+
+ -
+ Numero colli trasportati:
+
+
+
+
+
+
+ -
+ Descrizione beni trasportati:
+
+
+
+
+
+
+ -
+ Unità di misura del peso merce:
+
+
+
+
+
+
+ -
+ Peso lordo:
+
+
+
+
+
+
+ -
+ Peso netto:
+
+
+
+
+
+
+ -
+ Data e ora ritiro merce:
+
+
+
+
+
+
+
+
+
+ -
+ Data inizio trasporto:
+
+
+
+
+
+
+
+
+
+ -
+ Tipologia di resa:
+
+
+
+
+ (codifica secondo standard ICC)
+
+
+
+ -
+ Indirizzo di resa:
+
+
+
+
+
+
+ -
+ Numero civico indirizzo di resa:
+
+
+
+
+
+
+ -
+ CAP indirizzo di resa:
+
+
+
+
+
+
+ -
+ Comune di resa:
+
+
+
+
+
+
+ -
+ Provincia di resa:
+
+
+
+
+
+
+ -
+ Nazione di resa:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi alla fattura principale
+
+
+ -
+ Numero fattura principale:
+
+
+
+
+
+
+ -
+ Data fattura principale:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi alle linee di dettaglio della fornitura
+
+
+
+ Nr. linea:
+
+
+
+
+
+
+
+ -
+ Tipo cessione/prestazione:
+
+
+
+
+
+
+
+
+ (sconto)
+
+
+ (premio)
+
+
+ (abbuono)
+
+
+ (spesa accessoria)
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+
Codifica articolo
+
+
+
+ -
+ Tipo:
+
+
+
+
+
+
+ -
+ Valore:
+
+
+
+
+
+
+
+
+
+
+ -
+ Descrizione bene/servizio:
+
+
+
+
+
+
+ -
+ Quantità:
+
+
+
+
+
+
+ -
+ Unità di misura:
+
+
+
+
+
+
+ -
+ Data inizio periodo di riferimento:
+
+
+
+
+
+
+
+
+
+ -
+ Data fine periodo di riferimento:
+
+
+
+
+
+
+
+
+
+ -
+ Valore unitario:
+
+
+
+
+
+
+ -
+
Sconto/Maggiorazione
+
+
+
+
+ -
+ Tipo:
+
+
+
+
+
+
+
+
+
+ (sconto)
+
+
+
+ (maggiorazione)
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Percentuale (%):
+
+
+
+
+
+
+ -
+ Importo:
+
+
+
+
+
+
+
+
+
+
+ -
+ Valore totale:
+
+
+
+
+
+
+ -
+ IVA (%):
+
+
+
+
+
+
+ -
+ Soggetta a ritenuta:
+
+
+
+
+
+
+ -
+ Natura operazione:
+
+
+
+
+
+
+
+
+ (esclusa ex art.15)
+
+
+ (non soggetta)
+
+
+ (non imponibile)
+
+
+ (esente)
+
+
+ (regime del margine / IVA non esposta in fattura)
+
+
+ (inversione contabile)
+
+
+ (IVA assolta in altro stato UE)
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Riferimento amministrativo/contabile:
+
+
+
+
+
+
+ -
+
Altri dati gestionali
+
+
+
+ -
+ Tipo dato:
+
+
+
+
+
+
+ -
+ Valore testo:
+
+
+
+
+
+
+ -
+ Valore numerico:
+
+
+
+
+
+
+ -
+ Valore data:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati di riepilogo per aliquota IVA e natura
+
+
+
+ -
+ Aliquota IVA (%):
+
+
+
+
+
+
+ -
+ Natura operazioni:
+
+
+
+
+
+
+
+
+ (escluse ex art.15)
+
+
+ (non soggette)
+
+
+ (non imponibili)
+
+
+ (esenti)
+
+
+ (regime del margine / IVA non esposta in fattura)
+
+
+ (inversione contabile)
+
+
+ (IVA assolta in altro stato UE)
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Spese accessorie:
+
+
+
+
+
+
+ -
+ Arrotondamento:
+
+
+
+
+
+
+ -
+ Totale imponibile/importo:
+
+
+
+
+
+
+ -
+ Totale imposta:
+
+
+
+
+
+
+ -
+ Esigibilità IVA:
+
+
+
+
+
+
+
+
+ (esigibilità immediata)
+
+
+ (esigibilità differita)
+
+
+ (scissione dei pagamenti)
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Riferimento normativo:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati Veicoli ex art. 38 dl 331/1993
+
+
+
+ -
+ Data prima immatricolazione / iscrizione PR:
+
+
+
+
+
+
+
+
+
+ -
+ Totale percorso:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi al pagamento
+
+
+
+ -
+ Condizioni di pagamento:
+
+
+
+
+
+
+
+
+ (pagamento a rate)
+
+
+ (pagamento completo)
+
+
+ (anticipo)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+
+ Dettaglio pagamento
+
+
+
+
+ -
+ Beneficiario del pagamento:
+
+
+
+
+
+
+ -
+ Modalità:
+
+
+
+
+
+
+
+
+ (contanti)
+
+
+ (assegno)
+
+
+ (assegno circolare)
+
+
+ (contanti presso Tesoreria)
+
+
+ (bonifico)
+
+
+ (vaglia cambiario)
+
+
+ (bollettino bancario)
+
+
+ (carta di pagamento)
+
+
+ (RID)
+
+
+ (RID utenze)
+
+
+ (RID veloce)
+
+
+ (RIBA)
+
+
+ (MAV)
+
+
+ (quietanza erario)
+
+
+ (giroconto su conti di contabilità speciale)
+
+
+ (domiciliazione bancaria)
+
+
+ (domiciliazione postale)
+
+
+ (bollettino di c/c postale)
+
+
+ (SEPA Direct Debit)
+
+
+ (SEPA Direct Debit CORE)
+
+
+ (SEPA Direct Debit B2B)
+
+
+ (Trattenuta su somme già riscosse)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Decorrenza termini di pagamento:
+
+
+
+
+
+
+
+
+
+ -
+ Termini di pagamento (in giorni):
+
+
+
+
+
+
+ -
+ Data scadenza pagamento:
+
+
+
+
+
+
+
+
+
+ -
+ Importo:
+
+
+
+
+
+
+ -
+ Codice Ufficio Postale:
+
+
+
+
+
+
+ -
+ Cognome del quietanzante:
+
+
+
+
+
+
+ -
+ Nome del quietanzante:
+
+
+
+
+
+
+ -
+ CF del quietanzante:
+
+
+
+
+
+
+ -
+ Titolo del quietanzante:
+
+
+
+
+
+
+ -
+ Istituto finanziario:
+
+
+
+
+
+
+ -
+ Codice IBAN:
+
+
+
+
+
+
+ -
+ Codice ABI:
+
+
+
+
+
+
+ -
+ Codice CAB:
+
+
+
+
+
+
+ -
+ Codice BIC:
+
+
+
+
+
+
+ -
+ Sconto per pagamento anticipato:
+
+
+
+
+
+
+ -
+ Data limite per il pagamento anticipato:
+
+
+
+
+
+
+
+
+
+ -
+ Penale per ritardato pagamento:
+
+
+
+
+
+
+ -
+ Data di decorrenza della penale:
+
+
+
+
+
+
+
+
+
+ -
+ Codice pagamento:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi agli allegati
+
+
+
+
+ -
+ Nome dell'allegato:
+
+
+
+
+
+
+ -
+ Algoritmo di compressione:
+
+
+
+
+
+
+ -
+ Formato:
+
+
+
+
+
+
+ -
+ Descrizione:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PyFePA/xsd/fatturaordinaria_v1.2.1.xsl b/PyFePA/xsd/fatturaordinaria_v1.2.1.xsl
new file mode 100644
index 0000000..8958ea6
--- /dev/null
+++ b/PyFePA/xsd/fatturaordinaria_v1.2.1.xsl
@@ -0,0 +1,3068 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gennaio
+
+
+ Febbraio
+
+
+ Marzo
+
+
+ Aprile
+
+
+ Maggio
+
+
+ Giugno
+
+
+ Luglio
+
+
+ Agosto
+
+
+ Settembre
+
+
+ Ottobre
+
+
+ Novembre
+
+
+ Dicembre
+
+
+ Mese non riconosciuto
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
FATTURA ELETTRONICA
+
+
+
+
+ Versione
+
+
+
+
+
+
Dati relativi alla trasmissione
+
+
+
+
+ -
+ Identificativo del trasmittente:
+
+
+
+
+
+
+
+ -
+ Progressivo di invio:
+
+
+
+
+
+
+ -
+ Formato Trasmissione:
+
+
+
+
+
+
+ -
+ Codice identificativo destinatario:
+
+
+
+
+
+
+ -
+ Telefono del trasmittente:
+
+
+
+
+
+
+ -
+ E-mail del trasmittente:
+
+
+
+
+
+
+ -
+ Destinatario PEC:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del cedente / prestatore
+
+
+ Dati anagrafici
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Codice fiscale:
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+ -
+ Titolo:
+
+
+
+
+
+
+ -
+ Codice EORI:
+
+
+
+
+
+
+ -
+ Albo professionale di appartenenza:
+
+
+
+
+
+
+ -
+ Provincia di competenza dell'Albo:
+
+
+
+
+
+
+ -
+ Numero iscrizione all'Albo:
+
+
+
+
+
+
+ -
+ Data iscrizione all'Albo:
+
+
+
+
+
+
+
+
+
+ -
+ Regime fiscale:
+
+
+
+
+
+
+
+
+
+ (ordinario)
+
+
+ (contribuenti minimi)
+
+
+ (nuove iniziative produttive) - Non più valido in quanto abrogato dalla legge di stabilità 2015
+
+
+ (agricoltura e attività connesse e pesca)
+
+
+ (vendita sali e tabacchi)
+
+
+ (commercio fiammiferi)
+
+
+ (editoria)
+
+
+ (gestione servizi telefonia pubblica)
+
+
+ (rivendita documenti di trasporto pubblico e di sosta)
+
+
+ (intrattenimenti, giochi e altre attività di cui alla tariffa allegata al DPR 640/72)
+
+
+ (agenzie viaggi e turismo)
+
+
+ (agriturismo)
+
+
+ (vendite a domicilio)
+
+
+ (rivendita beni usati, oggetti d’arte,
+ d’antiquariato o da collezione)
+
+
+ (agenzie di vendite all’asta di oggetti d’arte,
+ antiquariato o da collezione)
+
+
+ (IVA per cassa P.A.)
+
+
+ (IVA per cassa - art. 32-bis, D.L. 83/2012)
+
+
+ (Regime forfettario)
+
+
+ (altro)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+
+
+
+
+ Dati della sede
+
+
+
+ -
+ Indirizzo:
+
+
+
+
+
+
+ -
+ Numero civico:
+
+
+
+
+
+
+ -
+ CAP:
+
+
+
+
+
+
+ -
+ Comune:
+
+
+
+
+
+
+ -
+ Provincia:
+
+
+
+
+
+
+ -
+ Nazione:
+
+
+
+
+
+
+
+
+
+
+ Dati della stabile organizzazione
+
+
+
+ -
+ Indirizzo:
+
+
+
+
+
+
+ -
+ Numero civico:
+
+
+
+
+
+
+ -
+ CAP:
+
+
+
+
+
+
+ -
+ Comune:
+
+
+
+
+
+
+ -
+ Provincia:
+
+
+
+
+
+
+ -
+ Nazione:
+
+
+
+
+
+
+
+
+
+
+ Dati di iscrizione nel registro delle imprese
+
+
+
+
+ -
+ Provincia Ufficio Registro Imprese:
+
+
+
+
+
+
+ -
+ Numero di iscrizione:
+
+
+
+
+
+
+ -
+ Capitale sociale:
+
+
+
+
+
+
+ -
+ Numero soci:
+
+
+
+
+
+
+
+
+
+ (socio unico)
+
+
+ (più soci)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Stato di liquidazione:
+
+
+
+
+
+
+
+
+
+ (in liquidazione)
+
+
+ (non in liquidazione)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+
+
+
+
+
+ Recapiti
+
+
+ -
+ Telefono:
+
+
+
+
+
+
+ -
+ Fax:
+
+
+
+
+
+
+ -
+ E-mail:
+
+
+
+
+
+
+
+
+
+
+ Riferimento amministrativo
+
+ -
+ Riferimento:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del rappresentante fiscale del cedente / prestatore
+
+
+ Dati anagrafici
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Codice fiscale:
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+ -
+ Titolo onorifico:
+
+
+
+
+
+
+ -
+ Codice EORI:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del cessionario / committente
+
+
+ Dati anagrafici
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Codice Fiscale:
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+ -
+ Titolo onorifico:
+
+
+
+
+
+
+ -
+ Codice EORI:
+
+
+
+
+
+
+
+
+
+
+
+ Dati della sede
+
+
+
+
+ -
+ Indirizzo:
+
+
+
+
+
+
+ -
+ Numero civico:
+
+
+
+
+
+
+ -
+ CAP:
+
+
+
+
+
+
+ -
+ Comune:
+
+
+
+
+
+
+ -
+ Provincia:
+
+
+
+
+
+
+ -
+ Nazione:
+
+
+
+
+
+
+
+
+
+
+
+ Stabile organizzazione del cessionario / committente
+
+
+
+
+ -
+ Indirizzo:
+
+
+
+
+
+
+ -
+ Numero civico:
+
+
+
+
+
+
+ -
+ CAP:
+
+
+
+
+
+
+ -
+ Comune:
+
+
+
+
+
+
+ -
+ Provincia:
+
+
+
+
+
+
+ -
+ Nazione:
+
+
+
+
+
+
+
+
+
+
+
+
Dati del rappresentante fiscale del cessionario / committente
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Soggetto emittente la fattura
+
+ -
+ Soggetto emittente:
+
+
+
+
+
+
+
+
+ (cessionario/committente)
+
+
+ (terzo)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Numero documento nel lotto:
+
+
+
+
+
+
+ Versione
+
+
+
+
+
+
+
+
+
+
+
Dati generali del documento
+
+
+
+ -
+ Tipologia documento:
+
+
+
+
+
+
+
+
+
+ (fattura)
+
+
+ (acconto/anticipo su fattura)
+
+
+ (acconto/anticipo su parcella)
+
+
+ (nota di credito)
+
+
+ (nota di debito)
+
+
+ (parcella)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Valuta importi:
+
+
+
+
+
+
+ -
+ Data documento:
+
+
+
+
+
+
+
+
+
+ -
+ Numero documento:
+
+
+
+
+
+
+ -
+ Importo totale documento:
+
+
+
+
+
+
+ -
+ Arrotondamento su Importo totale documento:
+
+
+
+
+
+
+
+ -
+ Causale:
+
+
+
+
+
+
+
+ -
+ Art. 73 DPR 633/72:
+
+
+
+
+
+
+
+
+
+
+
+ Ritenuta
+
+
+ -
+ Tipologia ritenuta:
+
+
+
+
+
+
+
+
+ (ritenuta persone fisiche)
+
+
+ (ritenuta persone giuridiche)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Importo ritenuta:
+
+
+
+
+
+
+ -
+ Aliquota ritenuta (%):
+
+
+
+
+
+
+ -
+ Causale di pagamento:
+
+
+
+
+
+
+
+ (decodifica come da modello 770S)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bollo
+
+
+ -
+ Bollo virtuale:
+
+
+
+
+
+
+ -
+ Importo bollo:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Cassa previdenziale
+
+
+
+ -
+ Tipologia cassa previdenziale:
+
+
+
+
+
+
+
+
+ (Cassa Nazionale Previdenza e Assistenza Avvocati
+ e Procuratori legali)
+
+
+ (Cassa Previdenza Dottori Commercialisti)
+
+
+ (Cassa Previdenza e Assistenza Geometri)
+
+
+ (Cassa Nazionale Previdenza e Assistenza
+ Ingegneri e Architetti liberi profess.)
+
+
+ (Cassa Nazionale del Notariato)
+
+
+ (Cassa Nazionale Previdenza e Assistenza
+ Ragionieri e Periti commerciali)
+
+
+ (Ente Nazionale Assistenza Agenti e Rappresentanti
+ di Commercio-ENASARCO)
+
+
+ (Ente Nazionale Previdenza e Assistenza Consulenti
+ del Lavoro-ENPACL)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Medici-ENPAM)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Farmacisti-ENPAF)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Veterinari-ENPAV)
+
+
+ (Ente Nazionale Previdenza e Assistenza Impiegati
+ dell'Agricoltura-ENPAIA)
+
+
+ (Fondo Previdenza Impiegati Imprese di Spedizione
+ e Agenzie Marittime)
+
+
+ (Istituto Nazionale Previdenza Giornalisti
+ Italiani-INPGI)
+
+
+ (Opera Nazionale Assistenza Orfani Sanitari
+ Italiani-ONAOSI)
+
+
+ (Cassa Autonoma Assistenza Integrativa
+ Giornalisti Italiani-CASAGIT)
+
+
+ (Ente Previdenza Periti Industriali e Periti
+ Industriali Laureati-EPPI)
+
+
+ (Ente Previdenza e Assistenza
+ Pluricategoriale-EPAP)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Biologi-ENPAB)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Professione Infermieristica-ENPAPI)
+
+
+ (Ente Nazionale Previdenza e Assistenza
+ Psicologi-ENPAP)
+
+
+ (INPS)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Aliquota contributo cassa (%):
+
+
+
+
+
+
+ -
+ Importo contributo cassa:
+
+
+
+
+
+
+ -
+ Imponibile previdenziale:
+
+
+
+
+
+
+ -
+ Aliquota IVA applicata:
+
+
+
+
+
+
+ -
+ Contributo cassa soggetto a ritenuta:
+
+
+
+
+
+
+ -
+ Tipologia di non imponibilità del contributo:
+
+
+
+
+
+
+
+
+ (escluse ex art. 15)
+
+
+ (non soggette)
+
+
+ (non imponibili)
+
+
+ (esenti)
+
+
+ (regime del margine / IVA non esposta in fattura)
+
+
+ (inversione contabile)
+
+
+ (IVA assolta in altro Stato UE)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Riferimento amministrativo / contabile:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sconto/maggiorazione
+
+
+
+
+ -
+ Tipologia:
+
+
+
+
+
+
+
+
+
+ (sconto)
+
+
+
+ (maggiorazione)
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Percentuale:
+
+
+
+
+
+
+ -
+ Importo:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati dell'ordine di acquisto
+
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+ -
+ Identificativo ordine di acquisto:
+
+
+
+
+
+
+ -
+ Data ordine di acquisto:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea ordine di acquisto:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del contratto
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+ -
+ Identificativo contratto:
+
+
+
+
+
+
+ -
+ Data contratto:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea contratto:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati della convenzione
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+ -
+ Identificativo convenzione:
+
+
+
+
+
+
+ -
+ Data convenzione:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea convenzione:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati della ricezione
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+ -
+ Identificativo ricezione:
+
+
+
+
+
+
+ -
+ Data ricezione:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea ricezione:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati della fattura collegata
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+ -
+ Identificativo fattura collegata:
+
+
+
+
+
+
+ -
+ Data fattura collegata:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea fattura collegata:
+
+
+
+
+
+
+ -
+ Codice commessa/convenzione:
+
+
+
+
+
+
+ -
+ Codice Unitario Progetto (CUP):
+
+
+
+
+
+
+ -
+ Codice Identificativo Gara (CIG):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Stato avanzamento lavori
+
+
+ -
+ Numero fase avanzamento:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati del documento di trasporto
+
+
+
+ -
+ Numero DDT:
+
+
+
+
+
+
+ -
+ Data DDT:
+
+
+
+
+
+
+
+
+
+ -
+ Numero linea di fattura a cui si riferisce:
+
+
+
+ ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi al trasporto
+
+
+ Dati del vettore
+
+
+
+
+ -
+ Identificativo fiscale ai fini IVA:
+
+
+
+
+
+
+
+ -
+ Codice Fiscale:
+
+
+
+
+
+
+ -
+ Denominazione:
+
+
+
+
+
+
+ -
+ Nome:
+
+
+
+
+
+
+ -
+ Cognome:
+
+
+
+
+
+
+ -
+ Titolo onorifico:
+
+
+
+
+
+
+ -
+ Codice EORI:
+
+
+
+
+
+
+ -
+ Numero licenza di guida:
+
+
+
+
+
+
+
+
+
+
+ Altri dati
+
+
+
+
+ -
+ Mezzo di trasporto:
+
+
+
+
+
+
+ -
+ Causale trasporto:
+
+
+
+
+
+
+ -
+ Numero colli trasportati:
+
+
+
+
+
+
+ -
+ Descrizione beni trasportati:
+
+
+
+
+
+
+ -
+ Unità di misura del peso merce:
+
+
+
+
+
+
+ -
+ Peso lordo:
+
+
+
+
+
+
+ -
+ Peso netto:
+
+
+
+
+
+
+ -
+ Data e ora ritiro merce:
+
+
+
+
+
+
+
+
+
+ -
+ Data inizio trasporto:
+
+
+
+
+
+
+
+
+
+ -
+ Tipologia di resa:
+
+
+
+
+ (codifica secondo standard ICC)
+
+
+
+ -
+ Indirizzo di resa:
+
+
+
+
+
+
+ -
+ Numero civico indirizzo di resa:
+
+
+
+
+
+
+ -
+ CAP indirizzo di resa:
+
+
+
+
+
+
+ -
+ Comune di resa:
+
+
+
+
+
+
+ -
+ Provincia di resa:
+
+
+
+
+
+
+ -
+ Nazione di resa:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi alla fattura principale
+
+
+ -
+ Numero fattura principale:
+
+
+
+
+
+
+ -
+ Data fattura principale:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi alle linee di dettaglio della fornitura
+
+
+
+ Nr. linea:
+
+
+
+
+
+
+
+ -
+ Tipo cessione/prestazione:
+
+
+
+
+
+
+
+
+ (sconto)
+
+
+ (premio)
+
+
+ (abbuono)
+
+
+ (spesa accessoria)
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+
Codifica articolo
+
+
+
+ -
+ Tipo:
+
+
+
+
+
+
+ -
+ Valore:
+
+
+
+
+
+
+
+
+
+
+ -
+ Descrizione bene/servizio:
+
+
+
+
+
+
+ -
+ Quantità:
+
+
+
+
+
+
+ -
+ Unità di misura:
+
+
+
+
+
+
+ -
+ Data inizio periodo di riferimento:
+
+
+
+
+
+
+
+
+
+ -
+ Data fine periodo di riferimento:
+
+
+
+
+
+
+
+
+
+ -
+ Valore unitario:
+
+
+
+
+
+
+ -
+
Sconto/Maggiorazione
+
+
+
+
+ -
+ Tipo:
+
+
+
+
+
+
+
+
+
+ (sconto)
+
+
+
+ (maggiorazione)
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Percentuale (%):
+
+
+
+
+
+
+ -
+ Importo:
+
+
+
+
+
+
+
+
+
+
+ -
+ Valore totale:
+
+
+
+
+
+
+ -
+ IVA (%):
+
+
+
+
+
+
+ -
+ Soggetta a ritenuta:
+
+
+
+
+
+
+ -
+ Natura operazione:
+
+
+
+
+
+
+
+
+ (esclusa ex art.15)
+
+
+ (non soggetta)
+
+
+ (non imponibile)
+
+
+ (esente)
+
+
+ (regime del margine / IVA non esposta in fattura)
+
+
+ (inversione contabile)
+
+
+ (IVA assolta in altro Stato UE)
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Riferimento amministrativo/contabile:
+
+
+
+
+
+
+ -
+
Altri dati gestionali
+
+
+
+ -
+ Tipo dato:
+
+
+
+
+
+
+ -
+ Valore testo:
+
+
+
+
+
+
+ -
+ Valore numerico:
+
+
+
+
+
+
+ -
+ Valore data:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati di riepilogo per aliquota IVA e natura
+
+
+
+ -
+ Aliquota IVA (%):
+
+
+
+
+
+
+ -
+ Natura operazioni:
+
+
+
+
+
+
+
+
+ (escluse ex art.15)
+
+
+ (non soggette)
+
+
+ (non imponibili)
+
+
+ (esenti)
+
+
+ (regime del margine / IVA non esposta in fattura)
+
+
+ (inversione contabile)
+
+
+ (IVA assolta in altro Stato UE)
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Spese accessorie:
+
+
+
+
+
+
+ -
+ Arrotondamento:
+
+
+
+
+
+
+ -
+ Totale imponibile/importo:
+
+
+
+
+
+
+ -
+ Totale imposta:
+
+
+
+
+
+
+ -
+ Esigibilità IVA:
+
+
+
+
+
+
+
+
+ (esigibilità immediata)
+
+
+ (esigibilità differita)
+
+
+ (scissione dei pagamenti)
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Riferimento normativo:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati Veicoli ex art. 38 dl 331/1993
+
+
+
+ -
+ Data prima immatricolazione / iscrizione PR:
+
+
+
+
+
+
+
+
+
+ -
+ Totale percorso:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi al pagamento
+
+
+
+ -
+ Condizioni di pagamento:
+
+
+
+
+
+
+
+
+ (pagamento a rate)
+
+
+ (pagamento completo)
+
+
+ (anticipo)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+
+ Dettaglio pagamento
+
+
+
+
+ -
+ Beneficiario del pagamento:
+
+
+
+
+
+
+ -
+ Modalità:
+
+
+
+
+
+
+
+
+ (contanti)
+
+
+ (assegno)
+
+
+ (assegno circolare)
+
+
+ (contanti presso Tesoreria)
+
+
+ (bonifico)
+
+
+ (vaglia cambiario)
+
+
+ (bollettino bancario)
+
+
+ (carta di pagamento)
+
+
+ (RID)
+
+
+ (RID utenze)
+
+
+ (RID veloce)
+
+
+ (RIBA)
+
+
+ (MAV)
+
+
+ (quietanza erario)
+
+
+ (giroconto su conti di contabilità speciale)
+
+
+ (domiciliazione bancaria)
+
+
+ (domiciliazione postale)
+
+
+ (bollettino di c/c postale)
+
+
+ (SEPA Direct Debit)
+
+
+ (SEPA Direct Debit CORE)
+
+
+ (SEPA Direct Debit B2B)
+
+
+ (Trattenuta su somme già riscosse)
+
+
+
+
+ (!!! codice non previsto !!!)
+
+
+
+
+
+ -
+ Decorrenza termini di pagamento:
+
+
+
+
+
+
+
+
+
+ -
+ Termini di pagamento (in giorni):
+
+
+
+
+
+
+ -
+ Data scadenza pagamento:
+
+
+
+
+
+
+
+
+
+ -
+ Importo:
+
+
+
+
+
+
+ -
+ Codice Ufficio Postale:
+
+
+
+
+
+
+ -
+ Cognome del quietanzante:
+
+
+
+
+
+
+ -
+ Nome del quietanzante:
+
+
+
+
+
+
+ -
+ CF del quietanzante:
+
+
+
+
+
+
+ -
+ Titolo del quietanzante:
+
+
+
+
+
+
+ -
+ Istituto finanziario:
+
+
+
+
+
+
+ -
+ Codice IBAN:
+
+
+
+
+
+
+ -
+ Codice ABI:
+
+
+
+
+
+
+ -
+ Codice CAB:
+
+
+
+
+
+
+ -
+ Codice BIC:
+
+
+
+
+
+
+ -
+ Sconto per pagamento anticipato:
+
+
+
+
+
+
+ -
+ Data limite per il pagamento anticipato:
+
+
+
+
+
+
+
+
+
+ -
+ Penale per ritardato pagamento:
+
+
+
+
+
+
+ -
+ Data di decorrenza della penale:
+
+
+
+
+
+
+
+
+
+ -
+ Codice pagamento:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dati relativi agli allegati
+
+
+
+
+ -
+ Nome dell'allegato:
+
+
+
+
+
+
+ -
+ Algoritmo di compressione:
+
+
+
+
+
+
+ -
+ Formato:
+
+
+
+
+
+
+ -
+ Descrizione:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/runit.py b/runit.py
index 0742aca..ff5d9ee 100644
--- a/runit.py
+++ b/runit.py
@@ -34,7 +34,7 @@
with open(DPATH+'/PyFePA/test/IT01234567890_11001.xml', 'rt') as f:
tree = ElementTree.parse(f)
fe = serializer.deserialize(element=tree)
- print serializer.serializer(fe,'xml')
+ print((serializer.serializer(fe,'xml')))
testdata_list = [testdata,testdata,testdata]
-print siamm.serialize(testdata_list)
\ No newline at end of file
+print((siamm.serialize(testdata_list)))
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 46df80b..3f01bfe 100644
--- a/setup.py
+++ b/setup.py
@@ -22,7 +22,7 @@
setup(
name = 'PyFePA',
packages = ['PyFePA'],
- version = '1.2.1b',
+ version = '1.2.3',
description = 'Python object of italian FatturaPA, serialize, deserialize and verify',
author = 'Luigi Di Naro',
author_email = 'Luigi.DiNaro@ktec.it',
@@ -33,4 +33,5 @@
package_data = {'PyFePA' : files },
license= 'AGPLv3',
classifiers = [],
-)
\ No newline at end of file
+ install_requires=['python-dateutil'],
+)