Soap Client Fattura Elettronica

Buongiorno a tutti,

Sto cercando di inviare tramite xojo la nuova e famosissima fattura elettronica tramite SOAP. Per mi genera un’eccezione “Incorrect parameters” quando chiamo l’Invoke.

Dim sock As New HTTPSecureSocket

sock.Secure = True
sock.ConnectionType = sock.TLSv12
sock.Port = 443
sock.CertificateFile = //file del certificato client
sock.CertificatePassword= //password generazione certificato client
sock.Yield = True

Dim webService As New SOAPMethod
webService.UseSocket(sock)

webService.LoadWSDLFromURL("https://servizi.fatturapa.it/SdI2AccoglienzaWeb/SdIRiceviFile_service/WEB-INF/wsdl/SdIRiceviFile_v1.0.wsdl")

webService.Parameter("NomeFile") = txtNomeFile.Text
webService.Parameter("File") = //Codifica Base64 del file fattura XML

Dim soapResponse As SOAPResult
soapResponse =  webService.Invoke("RiceviFile")

l’unico dubbio che mi viene che la classe SOAPMethod non supporta l’invio del file con la codifica base64.
Qualcuno sa aiutarmi?
Grazie

Hai convertito il file in base64 e inviato nel parametro file?

Se si forse non prevede il ritorno a capo (usa la modalit per avere una stringa unica)

Si antonio ho convertito la stringa XML tramite EncodeBase64 utilizzando entrambe le due forme:

dim xmlBase64 as String = EncodeBase64(xmlString)

dim xmlBase64 as String = EncodeBase64(xmlString,0)

Per da sempre la stessa eccezione. E’ possibile che essendoci nel WSDL uno schemaLocation=“TrasmissioneTypes_v1.0.xsd” non riesce a caricare i types specificati al suo interno?

Se pu servire a qualcuno per ora ho risolto utilizzando direttamente la post del HTTPSecureSocket in questo modo

dim soapRequestAsString as String 
soapRequestAsString = "<?xml version='1.0' encoding='UTF-8'?>"+ _
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:typ='http://www.fatturapa.gov.it/sdi/ws/trasmissione/v1.0/types'>"+ _
"<soapenv:Header/>"+ _
"<soapenv:Body>"+ _
"<typ:fileSdIAccoglienza>"+ _
"<NomeFile>"+txtNomeFile.Text+"</NomeFile>"+ _
"<File>"+blob+"</File>"+ _
"</typ:fileSdIAccoglienza>"+ _
"</soapenv:Body>"+ _
"</soapenv:Envelope>"


dim Socket as New HTTPSecureSocket

Socket.Secure = True
Socket.ConnectionType = Socket.TLSv12
Socket.Port = 443
Socket.CertificateFile = //file del certificato client
Socket.CertificatePassword= //password generazione certificato client
Socket.Yield = True
Socket.SetRequestHeader("SOAPAction", "RiceviFile")


Socket.setPostContent soapRequestAsString, "text/xml"

dim response as String = Socket.post("https://servizi.fatturapa.it/ricevi_file", 30)

If response = "" Then

Else

end 

E’ un po scomodo perch ho dovuto interpretare la risposta tramite espressioni regolari per almeno l’invio funziona.

Attilio…
Premetto che non sono preparatissimo per il sistema SOAP, per ti dico . .perch rendere difficile ci che comunque non lo ?.
Una volta entrato nel sito di ADE ( Agenzie delle Entrate ) in particolare nella sezione dedicata alle fatture elettroniche devi specificare un email pec dove vuoi che i documenti fiscali vengano inviati ( ricezione ) e la stessa cosa dichiari la Pec di chi invia.
Per documenti fiscali, ti indico la Fattura Elettronica e la liquidazione iva ( di cui non acora ho avuto il modo di vedere il tracciato XML dei risultati ) con la pec non sono cos un problema.
Invia le fatture Elettroniche. all’indirizzo pec segnalato dall’ADE sdi01@pec.fatturapa.it una volta firmate ( non usare la firma XML devi firmarle come documento.
Puoi creare una email per ogni fattura oppure un unica email con pi invii.
Le fatture devi firmarle, una per una, o anche tutte assieme in una volta sola. La dimensione del messaggio con pi allegati deve essere inferiore a 30 mbyte.
Di concerto avrai in risposta un messaggio con tanti allegati quante sono le fatture allegate.
Essendo una pec riceverai un messaggio con un allegato e nell’allegato avrai il messaggio pec con gli allegati.
Nella fattispecie, ho risolto solo con i plugin MBS l’apertura del messaggio allegato come un nuovo messaggio email.
Antonio sostiene che l’email alla fine un file di testo.
Io ho notato che la pec. un email ( un file di testo ) con un allegato crittografato che un email con allegati.
In teoria non difficile, se apri il sito dell’ade e ti logghi con il pin che vai prende appunto alla sede dell’agenzia delle entrate puoi impostare l’indirizzo PEC che sar autorizzato all’invio e alla ricezione.
Non difficile se ci sono riuscito io che sono scemo te riesci di sicuro.

Si Attilio, la soluzione quella (usare l’httpsocket)
Ci sono alcune configurazioni di azioni soap che non sono “chiare” per il soap client. Evidentemente questa una di quelle.

Tempo fa avevo realizzato una applicazione che usava servizi soap e per quasi tutte le funzionalit il client soap funzionava perfettamente, per un paio ho dovuto usare l’httpsocket.

[quote=414669:@Massimiliano Chiodi]Attilio…
Premetto che non sono preparatissimo per il sistema SOAP, però ti dico . .perchè rendere difficile ciò che comunque non lo è ?.
Una volta entrato nel sito di ADE ( Agenzie delle Entrate ) in particolare nella sezione dedicata alle fatture elettroniche devi specificare un email pec dove vuoi che i documenti fiscali vengano inviati ( ricezione ) e la stessa cosa dichiari la Pec di chi invia.
Per documenti fiscali, ti indico la Fattura Elettronica e la liquidazione iva ( di cui non acora ho avuto il modo di vedere il tracciato XML dei risultati ) con la pec non sono così un problema.
Invia le fatture Elettroniche. all’indirizzo pec segnalato dall’ADE sdi01@pec.fatturapa.it una volta firmate ( non usare la firma XML devi firmarle come documento.
Puoi creare una email per ogni fattura oppure un unica email con più invii.
Le fatture devi firmarle, una per una, o anche tutte assieme in una volta sola. La dimensione del messaggio con più allegati deve essere inferiore a 30 mbyte.
Di concerto avrai in risposta un messaggio con tanti allegati quante sono le fatture allegate.
Essendo una pec riceverai un messaggio con un allegato e nell’allegato avrai il messaggio pec con gli allegati.
Nella fattispecie, ho risolto solo con i plugin MBS l’apertura del messaggio allegato come un nuovo messaggio email.
Antonio sostiene che l’email è alla fine un file di testo.
Io ho notato che la pec. è un email ( un file di testo ) con un allegato crittografato che è un email con allegati.
In teoria non è difficile, se apri il sito dell’ade e ti logghi con il pin che vai prende appunto alla sede dell’agenzia delle entrate puoi impostare l’indirizzo PEC che sarà autorizzato all’invio e alla ricezione.
Non è difficile se ci sono riuscito io che sono scemo te riesci di sicuro.[/quote]

Ciao Massimiliano,

Inizialmente avevo optato per l’utilizzo della PEC visto che secondo me è comodissima tant’è che avevo già integrato tutto nel gestionale. Fino a un mese fa davo per chiuso il capitolo fattura elettronica. Purtroppo però molti fornitori ci hanno “costretti” (so che non è obbligatorio averlo) a fornirgli il codice SDI per inviarci le fatture. Questa costrizione purtroppo è dettata dal fatto che molte persone non sono ancora informate sulle varie modalità di invio/ricezione e quindi si affidano alle società di consulenza che ovviamente vendono un servizio aggiuntivo, ovvero l’SDICOOP. Armandomi di tanta pazienza mi sono letto la documentazione dell’ADE per l’accreditamento del canale e ho messo in piedi un WS SOAP in php che riceve le notifiche del Sistema di Interscambio e già che c’ero un client sempre web per l’invio.Diciamo che rispetto alla PEC tramite l’SDICOOP hai una gestione più pulita sia delle notifiche che dello storico però il funzionamento logico è identico. Per completare il cerchio e sperare di chiudere in fretta questo capitolo mi mancava solo l’invio diretto tramite XOJO che ora sembra funzionare!

[quote=414737:@Antonio Rinaldi]Si Attilio, la soluzione è quella (usare l’httpsocket)
Ci sono alcune configurazioni di azioni soap che non sono “chiare” per il soap client. Evidentemente questa è una di quelle.

Tempo fa avevo realizzato una applicazione che usava servizi soap e per quasi tutte le funzionalità il client soap funzionava perfettamente, per un paio ho dovuto usare l’httpsocket.[/quote]

Antonio,
grazie come sempre per la risposta! Un ultima curiosità … anche tu usavi le espressioni regolari per interpretare la risposta SOAP?

Allora, per non creare fraintedimenti … riceverai le fatture via SDI : tramite pec, nella cartella FTP e scaricabile via SOAP, nel cassetto fiscale …
Quindi scegli come vuoi ricevere la fattura;
Non un imposizione, alle aziende che ti chiedono ‘obbligatoriamente’ il codice di 7 cifre possono indicare 0000000, possono omettere anche la pec. puoi rispondere semplicemente di mandarla indicando il codice fiscale dell’azienda, tanto, arriva comunque, come indicato sopra, via PEC, nella cartella FTP, via SOAP, nel cassetto fiscale, nel portale dedicato ( mi ero dimenticato ) …
L’ignoranza dei contabili purtroppo una brutta bestia. Io sono andato all’ADE e mi sono fatto spiegare da un dirigente, tra l’altro molto preparato. ( Fa parte del team di sviluppo ).
Tra l’altro mi diceva che la cosa transitoria, perch si attende ancora di recepire la legislazione Europea ( che applicher anche alle vendite intrastat ) che formalizza l’invio del PDF con la traccia della fattura elettronica in Inglese.
Ogni stato a Livello Europeo ha elaborato in previsione quello che voleva con metodologie molto fantasiose.
Chi utilizza il PDF con la traccia dati xml incorporata ( Germania ) chi applica solo la stessa cosa per le fatture sopra un certo importo ( Spagna ), chi come il Portogallo la ha introdotta obbligatoria dal 2012…
Comunque — alle richieste impositive rispondi di inserire 0000000 ( 7 zeri ) nel codice … sono fornitori, se vogliono vendere si devono adeguare.

Io purtroppo non sono cos preparato per posso dirti che hai fatto bene a chiarire tutte le varie opzioni.Ho inserito il “costretti” apposta tra virgolette solo per dire che ho dovuto cambiare rotta dato che certe decisioni aziendali non le prendo io. Tutto sto giro di mettere in piedi WS, client ecc … non server a un gran che come dici tu perch i codici a 7 cifre una volta accreditato il canale vengono praticamente generati casualmente e decidi tu a che ragione sociale assegnarli. Si possono richiedere al massimo 100 codici a canale ma solo un modo per filtrare le fatture a manina leggendo il file xml. Cosa al quanto inutile visto che cmq esistono gi p.IVA e CF come parametri obbligatori. Diciamo che ho preso con filosofia tutta sta situazione e ho imparato cose nuove anche se SOAP non fa per me :stuck_out_tongue:

Ma alla fine… diciamocelo … .BASTA CHE TI PAGHINO, che chiedano tutto quello che vogliono.
Tanto anche quando la ricevi, in qualsiasi modo sia, per contabilizzarla serve sempre la manina che indichi le giuste contropartite contabili. C’ gi chi ha paura di aver perso il posto di lavoro…

No, trasformavo il documento XML ricevuto in un più facilmente gestibile (eliminando in modo appropriato i name space visto che se ben progettato all’interno del documento puoi farlo e poi leggevo il documento come xml semplice.

Ma dipende dalla risposta.

[quote=414801:@Massimiliano Chiodi]Ma alla fine… diciamocelo … .BASTA CHE TI PAGHINO, che chiedano tutto quello che vogliono.
Tanto anche quando la ricevi, in qualsiasi modo sia, per contabilizzarla serve sempre la manina che indichi le giuste contropartite contabili. C’è già chi ha paura di aver perso il posto di lavoro…[/quote]

Basta che le richieste non siano troppo fuori portata :stuck_out_tongue:

[quote=414802:@Antonio Rinaldi]No, trasformavo il documento XML ricevuto in un più facilmente gestibile (eliminando in modo appropriato i name space visto che se ben progettato all’interno del documento puoi farlo e poi leggevo il documento come xml semplice.

Ma dipende dalla risposta.[/quote]

Ho provato anche io a convertirlo direttamente in XML ma mi dava degli errori. Alla fine ho pulito la risposta con le espressioni regolari(ho praticamente estratto solo i campi che mi servivano) e poi l’ho convertito in XML. Se hai qualche suggerimento è ben accetto …

Lunedì ti posto la risposta in modo tale che puoi farti un idea.

Grazie a tutti