Closed shinesoftware closed 5 years ago
Ciao,
se invii le fatture con Aruba o altro intermediario il blocco da usare è TerzoIntermediarioOSoggettoEmittente
. L' IdTrasmittente
è l’identificativo univoco del soggetto trasmittente e nulla c'entra con l'intermediario (es. Aruba). Il blocco ContattiTrasmittente
viene aggiunto solo se si specifica il telefono o l'indirizzo email.
Fammi sapere se non ho capito bene qualcosa altrimenti chiudo il ticket.
Grazie a te!
Ciao,
dopo aver chiarito con Aruba, il supporto tecnico ci conferma che la sezione indicata dentro DatiTrasmissione viene usata per identificare il trasmittente. Nei fatti Aruba controlla la suddetta sezione sostituendola durante la fase di importazione nei loro sistemi ed indicando all'operatore che tenta di importare la fattura il seguente messaggio:
La fattura contiene ID e/o contatti del trasmittente differenti dai dati dell'intermediario Aruba PEC.
se l'operatore tenta di completare l'operazione di importazione appare il seguente messaggio:
Quindi il supporto tecnico ci ha indicato che le suddette sezioni devono essere lasciate in bianco oppure impostare i dati esclusivamente dentro la sezione dell'IdTrasmittente, cancellando i dati presenti dentro il blocco ContattiTrasmittente.
Cordialmente
Ok, allora dovrebbe essere tutto apposto in quanto il blocco ContattiTrasmittente
non viene aggiunto se non si specifica telefono o email. Se mi dai conferma chiudo.
Grazie!
il blocco
ContattiTrasmittente
non viene aggiunto se non si specifica telefono o email.
Confermo che impostando a NULL i due parametri del telefono ed email del decente ottengo la cancellazione della sezione ContattiTrasmittente
in questione.
Per quanto riguarda il codice IdTrasmittente come si risolve? il problema non è solamente il blocco ContattiTrasmittente
ma anche la sezione IdTrasmittente, come posso impostare il valore richiesto da Aruba?
Rimanendo sempre in tema, se la classe FatturaElettronicaFactory viene istanziata il costruttore imposta i dati del CedentePrestatore senza badare al parametro IdTrasmittente che essendo impostato di default su "true" la sezione IdTrasmittente verrà generata di default.
Credo sia debba aggiungere controllare il parametro al fine di evitare che venga automaticamente considerato impostato a "true".
Partiamo dal presupposto che il blocco IdTrasmittente
è obbligatorio, se lo omettiamo otteniamo un errore in fase di validazione del file xml con il file xsd. Se usi FatturaElettronicaFactory
per generare le tue fatture, dovresti poter impostare un IdTrasmittente
arbitrario usando il metodo pubblico setIdTrasmittente
. Esempio:
$feFactory = new FatturaElettronicaFactory(
$datiAnagrafici,
$sede,
'+39123456789',
'info@deved.it'
)
$idTrasmittenteDiverso = new IdTrasmittente('IT', '123456789');
$feFactory->setIdTrasmittente(idTrasmittenteDiverso);
fammi sapere se così risolvi.
Grazie! Salvatore
Sono pienamente d'accordo con te. Ho provato a fare quanto mi hai suggerito ed il risultato è che il nome del file viene modificato in IT123456789 _1.xml invece di mantenere il numero della partita iva del cedente. Come risolvere?
Questo non è possibile in quanto le specifiche tecniche dicono che il file deve essere “nominato” in maniera opportuna affinché possa essere accettato dal Sistema di Interscambio. Ovvero:
Codice Paese Identificativo univoco del Trasmittente _ Progressivo univoco del file
dove:
il Codice Paese va espresso secondo lo standard ISO 3166-1 alpha-2 code, l’Identificativo univoco del Trasmittente, sia esso persona fisica o soggetto giuridico, è rappresentato dal suo identificativo fiscale (codice fiscale nel caso di soggetto trasmittente residente in Italia, identificativo proprio del Paese di appartenenza nel caso di soggetto trasmittente residente all’estero). La lunghezza di questo identificativo è di: 11 caratteri (minimo) e 16 caratteri (massimo) nel caso di codice paese IT, 2 caratteri (minimo) e 28 caratteri (massimo) altrimenti, il progressivo univoco del file è rappresentato da una stringa alfanumerica di lunghezza massima di 5 caratteri e con valori ammessi da “A” a “Z” e da “0” a “9”. Il separatore degli elementi che compongono il nome file è il carattere underscore (“_”), codice ASCII 95. L’estensione del file assume il valore “.xml” oppure “.xml.p7m” in base al tipo di firma utilizzata (a tal proposito consultare la sezione Firmare la FatturaPA).
usare la partita iva del cedente nel nome file è formalmente sbagliato. A questo punto ti consiglio di implementare qualcosa di custom nel tuo codice per modificare il nome del file a tuo piacimento.
Quindi i file devono avere la partita iva di Aruba (trasmittente) e non del Cedente. Confermi?
Secondo me no. Io uso Agyo di TeamSystem e non conosco nello specifico il servizio di Aruba, ma dovrebbe valere la stessa cosa per tutti: il blocco IdTrasmittente va compilato con i dati di chi emette la fattura (soggetto passivo IVA) e non di Aruba. I dati dell'intermediario vanno invece inseriti nel blocco TerzoIntermediarioOSoggettoEmittente
. Infatti in quest'ultimo blocco io inserisco i dati di Team System. Se guardi in questo test trovi l'esempio di cui parlo.
Ho contattato nuovamente il servizio Aruba e mi riconfermano che nella sezione IdTrasmittente dovrebbe esserci la loro partita iva e quando ho obiettato riguardo a tale impostazione hanno risposto di aprire una segnalazione tecnica! C'è da impazzire! Ad ogni modo non è possibile sovrascrivere il nome del file in uscita?
@shinesoftware c'è un esempio per creare il file col nome che vuoi nella documentazione
//generazione file XML
$xml = $fattura->toXml();
//print su schermo
echo $xml;
//scrivi file
file_put_contents('file_col_nome_che_voglio.xml', $xml);
@endelwar speravo ci fosse un metodo interno poichè avevo visto un metodo getFileName() quindi cercavo un setFileName
$file = $fattura->getFileName();
grazie
Ecco la risposta:
Gentile cliente, ai fini della Sua richiesta la presente per informarLa che è definito trasmittente il soggetto, sia esso cedente/prestatore o terzo intermediario, che trasmette al SdI (Sistema di Interscambio) il file fattura ovvero il file archivio, quindi Aruba Pec. RingraziandoLa per la collaborazione, restiamo a Sua completa disposizione.
Cordiali saluti
Sono alquanto perplesso. Con Agyo caricando le fatture massivamente non funziona così. I dati di TeamSystem li inserisco nel blocco TerzoIntermediarioOSoggettoEmittente
e in IdTrasmittente
lascio i dati del soggetto passivo IVA. L'unico dubbio è che Agyo possa sovrascrivere quel blocco. Potresti provare a scrivere sul Forum Italia
Comunque ho fatto delle ricerche sul forum e pare tu abbia ragione. Ma a questo punto se usi
$fatturaElettronicaFactory->setIdTrasmittente($trasmittente);
inserendo già i dati di Aruba non hai già risolto?
Grazie!
Ma a questo punto se usi
$fatturaElettronicaFactory->setIdTrasmittente($trasmittente);
inserendo già i dati di Aruba non hai già risolto?
Grazie!
Si ma parzialmente. In poche parole il file generato avrà il nome del file contente la partita iva di Aruba (IT1879020517) invece che la partita iva del Cedente Prestatore come: IT01879020517_1.xml
Tale difficoltà genera un altro problema. L'archiviazione dei files XML da parte del Cedente qualora dovesse trasmettere più fatture per più posizioni fiscali.
Ad esempio: Un negoziante ha tre aziende con tre partite iva differenti e desidera impostare l'Id del Trasmittente di Aruba. Cosa otterrebbe alla generazione di una fattura per ogni singolo negozio? Il negoziante si troverà lo stesso file xml IT01879020517_1.xml
ripetuto tre volte, uno per ogni fattura di ogni singolo negozio.
Come si può risolvere elegantemente questo problema?
A presto
Quello che posso fare è aggiungere un metodo setFileName($nomefile)
, può andarti bene?
Tranquillo io ho risolto già il problema evitando di chiedere attraverso il metodo getFilename() il nome del file ma se vuoi aggiungilo pure magari servirà a qualcuno.
Al momento indico direttamente il codice del paese + la partita iva del cedente + numero incrementale non si può far altro.
Grazie @salgua
Ho approfondito la questione. Nella fattispecie ho controllato un file xml dopo l'elaborazione di Agyo, scaricandolo direttamente dal sito dell'AdE, ed effettivamente Agyo sovrascrive il blocco IdTrasmittente
con i propri dati, e sovrascrive anche il nome file con il suo codice fiscale ed il suo progressivo invio. In questo caso vengono rispettate le indicazioni presenti a questo indirizzo usando l' IdTrasmittente
anche nel nome file.
Describe the bug Nel caso di un trasmittente diverso dal mittente della fattura, ad esempio con invio via servizio Aruba, il modulo non permette la cancellazione di alcune sezioni superflue all'invio come la sezione DatiTrasmissione > ContattiTrasmittente
To Reproduce Creare una normale fattura indicando l'Id Trasmittente di un servizio esterno come su detto ed associando un IdTrasmittente.
Nella sezione:
il modulo genera la costruzione di una sezione relativa ai ContattiTrasmittente che non è utile ai fini di un invio attraverso un servizio esternalizzato.
Expected behavior La possibilità di cancellare la sezione DatiTrasmissione > ContattiTrasmittente e l'impostazione di un IdTrasmittente personalizzato.
Grazie mille