Skip to content

Commit

Permalink
First support for v. 1.2 spec
Browse files Browse the repository at this point in the history
gigidn committed Jan 16, 2017

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 26cd8ed commit 3b7c7b8
Showing 12 changed files with 3,127 additions and 1,496 deletions.
18 changes: 8 additions & 10 deletions PyFePA/fepa.py
Original file line number Diff line number Diff line change
@@ -27,11 +27,11 @@
TD = map(lambda td: 'TD{:0=2d}'.format(td), 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,6))
NT = map(lambda nt: 'NT{:0=2d}'.format(nt), range(1,7))
TCP = ('SC', 'PR', 'AB', 'AC')
SM = ('SC', 'MG')
TP = ('TP01', 'TP02', 'TP03')
MP = map(lambda mp: 'MP{:0=2d}'.format(mp), range(1,21))
MP = map(lambda mp: 'MP{:0=2d}'.format(mp), range(1,22))
EI = ('I','D','S')


@@ -103,21 +103,19 @@ class FatturaElettronicaHeader(GenFePA):
CedentePrestatore = FieldObject(required=True,object_class='CedentePrestatore', code=2)
RappresentanteFiscale = FieldObject(object_class='RappresentanteFiscale', code=3)
CessionarioCommittente = FieldObject(required=True,object_class='CessionarioCommittente', code=4)
TerzoIntermediarioOSoggettoEmittente = FieldObject(object_class='TerzoIntermediarioOSoggettoEmittente', code=5, depend= [6])
TerzoIntermediarioOSoggettoEmittente = FieldObject(object_class='TerzoIntermediarioOSoggettoEmittente',
code=5, depend= [6])
SoggettoEmittente = FieldCostant(cvalue=['CC','TZ'],code=6)


class DatiTrasmissione(GenFePA):

IdTrasmittente = FieldObject(required=True,object_class='IdTrasmittente', code=1)
ProgressivoInvio = FieldString(minlen=1,maxlen=10,required=True,code=2)
FormatoTrasmissione = FieldCostant(cvalue=['SDI11'],required=True,code=3)
CodiceDestinatario = FieldString(minlen=1,maxlen=6,required=True,code=4)
FormatoTrasmissione = FieldCostant(cvalue=['FPA12','FPR12'],required=True,code=3)
CodiceDestinatario = FieldString(minlen=6,maxlen=7,required=True,code=4)
ContattiTrasmittente = FieldObject(object_class='ContattiTrasmittente', code=5)

def __init__(self):
self.FormatoTrasmissione = 'SDI11'
super(GenFePA,self).__init__()
PECDestinatario = FieldString(minlen=7,maxlen=256,code=6)


class IdTrasmittente(GenFePA):
@@ -491,7 +489,7 @@ class DettaglioPagamento(GenFePA):
CFQuietanzante = FieldString(minlen=1, maxlen=16, code=10)
TitoloQuietanzante = FieldString(minlen=2, maxlen=10, code=11)
IstitutoFinanziario = FieldString(minlen=1, maxlen=80, code=12)
IBAN = FieldString(minlen=27, maxlen=34, code=13)
IBAN = FieldString(minlen=15, maxlen=34, code=13)
ABI = FieldString(minlen=5, maxlen=5, code=14)
CAB = FieldString(minlen=5, maxlen=5, code=15)
BIC = FieldString(minlen=8, maxlen=11, code=16)
2 changes: 1 addition & 1 deletion PyFePA/serializer.py
Original file line number Diff line number Diff line change
@@ -156,7 +156,7 @@ def serializer(obj,toformat,**kwargs):
globalvalidation(obj)
ser = serializexml(obj,'FatturaElettronica')
if lxml:
with open(DPATH+'/xsd/fatturapa_v1.1.xsd', 'rt') as f:
with open(DPATH+'/xsd/fatturapa_v1.2.xsd', 'rt') as f:
xmlschema_doc = ElementTree.parse(f)
xmlschema = ElementTree.XMLSchema(xmlschema_doc)
if not xmlschema.validate(ser):
2 changes: 1 addition & 1 deletion PyFePA/siamm.py
Original file line number Diff line number Diff line change
@@ -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'].strip('IT')).upper()
(etree.SubElement(intercettazioni, 'BENEFICIARIO')).text = unicode(value['beneficiario'])
(etree.SubElement(intercettazioni, 'TIPOPAGAMENTO')).text = value['tipopagamento'].upper()
(etree.SubElement(intercettazioni, 'ENTEPAGANTE')).text = value['entepagante'].upper()
(etree.SubElement(intercettazioni, 'DATAINIZIOPRESTAZIONE')).text = \
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="fatturapa_v1.1.xsl"?>
<p:FatturaElettronica versione="1.1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://www.fatturapa.gov.it/sdi/fatturapa/v1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<p:FatturaElettronica versione="FPA12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd ">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>00000000000</IdCodice>
<IdCodice>12345670017</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>SDI11</FormatoTrasmissione>
<FormatoTrasmissione>FPA12</FormatoTrasmissione>
<CodiceDestinatario>AAAAAA</CodiceDestinatario>
<ContattiTrasmittente/>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
@@ -19,9 +20,9 @@
<IdCodice>01234567890</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
<Denominazione>ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF01</RegimeFiscale>
<RegimeFiscale>RF19</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
@@ -52,7 +53,7 @@
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Data>2017-01-13</Data>
<Numero>123</Numero>
<Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR SSSSSSSSSSSSSS</Causale>
<Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB</Causale>
@@ -62,47 +63,47 @@
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
<CodiceCIG>456def</CodiceCIG>
</DatiOrdineAcquisto>
<DatiContratto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>123</IdDocumento>
<Data>2012-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>123</IdDocumento>
<Data>2016-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiContratto>
<DatiConvenzione>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>123</IdDocumento>
<NumItem>5</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>456</IdDocumento>
<NumItem>5</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiConvenzione>
<DatiRicezione>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>123</IdDocumento>
<NumItem>5</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>789</IdDocumento>
<NumItem>5</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiRicezione>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>00000000000</IdCodice>
</IdFiscaleIVA>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2017-01-10T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<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>
<Descrizione>DESCRIZIONE DELLA FORNITURA</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
@@ -119,7 +120,7 @@
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<DataScadenzaPagamento>2017-02-18</DataScadenzaPagamento>
<ImportoPagamento>6.10</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
136 changes: 136 additions & 0 deletions PyFePA/test/IT01234567890_FPA02.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8"?>
<p:FatturaElettronica versione="FPA12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd ">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>12345670017</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>FPA12</FormatoTrasmissione>
<CodiceDestinatario>AAAAAA</CodiceDestinatario>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234567890</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF01</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<CodiceFiscale>09876543210</CodiceFiscale>
<Anagrafica>
<Denominazione>AMMINISTRAZIONE BETA</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2017-01-13</Data>
<Numero>123</Numero>
<Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR SSSSSSSSSSSSSS</Causale>
<Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB</Causale>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiOrdineAcquisto>
<DatiContratto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>123</IdDocumento>
<Data>2016-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiContratto>
<DatiConvenzione>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>456</IdDocumento>
<NumItem>5</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiConvenzione>
<DatiRicezione>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>789</IdDocumento>
<NumItem>5</NumItem>
<CodiceCUP>123abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiRicezione>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2017-01-10T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<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>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>FORNITURE VARIE PER UFFICIO</Descrizione>
<Quantita>10.00</Quantita>
<PrezzoUnitario>2.00</PrezzoUnitario>
<PrezzoTotale>20.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>25.00</ImponibileImporto>
<Imposta>5.50</Imposta>
<EsigibilitaIVA>D</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2017-02-30</DataScadenzaPagamento>
<ImportoPagamento>30.50</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>
Loading

0 comments on commit 3b7c7b8

Please sign in to comment.