WebEDI Interfaccia web service Descrizione dei servizi Documento Redatto da: Massimo Candi Verificato da: Massimo Candi Approvato da: Massimo Candi Modello Codice Documento Versione e Data Identificativo file Totale pagine SGQ-MGN-03_01 Codice Edizione N. 1 D:\Documents and settings\a903213\local 60 Settings\Temporary Internet Files\Content.Outlook\0Z2YKOOA\EDIWebService 2 0.doc
Scopo del documento In questo documento vengono descritte le operazioni esposte dal web service. 2 60
Lista di distribuzione Nominativo Massimo Candi Riferimento Enel Servizi 3 60
Modifiche al documento Le modifiche riportate nella tabella seguente sono riferite alla versione precedente del documento. Descrizione cambiamenti Riferimento 4 60
Acronimi Di seguito la lista degli acronimi utilizzati nel documento. Acronimo Descrizione 5 60
Indice 1. Introduzione... 7 2. Operazioni esposte dal web service... 8 3. Servizi di Autenticazione... 9 3.1. login()... 9 3.2. logoff()... 11 4. Servizi trasferimento documenti... 12 4.1. getlistadocumenti()... 12 4.2. getdocumento()... 16 4.3. updatedocumento()... 18 4.4. setdocumento()... 19 5. Servizi Estratto Conto... 21 5.1. getecperiodbalances... 21 5.2. getecstatement... 25 5.3. getecopenitems... 29 5.4. geteclistparkinvoice... 32 5.5. getecbalanceditems... 35 5.6. getecbalancedetail... 38 5.7. Schema XSD MESSAGE... 41 6. Codici di errore... 43 7. WSDL... 44 6 60
1. Introduzione Al fine di consentire l accesso diretto tra un sistema esterno ed il sistema WebEDI è stata sviluppata una componente applicativa in grado di mettersi al servizio di un applicazione comunicando su di una medesima rete tramite il protocollo http/https. Una componente applicativa di questo tipo prende comunemente il nome di Web Service e consente quindi alle applicazioni che vi si collegano di usufruire delle funzioni che mette a disposizione. Nella figura seguente è indicata la struttura di riferimento del Web Service. WEB Services WEB SERVER Internet Information Server Apache AXIS Logica BUSINESS Application Container 7 60
2. Operazioni esposte dal web service Possiamo suddividere le operazioni previste dal web service in tre gruppi: - Autenticazione: login(), logoff() - Trasferimento documenti: getlistadocumenti(), set Documento(), getdocumento(), updatedocumento() - Estratto conto: getecperiodbalances(), getecstatement(), getecopenitems(), getecbalanceditems(), geteclistparkinvoice(), getecbalancedetail(). 8 60
3. Servizi di Autenticazione La prima operazione che deve essere invocata è il servizio login al fine di autenticarsi sul sistema mediante userid e password. Al termine delle operazioni, deve essere chiamato il servizio logoff che chiude la sessione http aperta dal servizio login. Tra il login ed il logoff è possibile richiamare gli altri servizi previsti dal web service. Si precisa che la userid da indicare non può essere l indirizzo di posta con cui ci si è registrati sul portale Fornitori. Qualora non si disponga di altro contattare il service (06 8305 5500) chiedendo l utenza corretta e fornendo la userid in possesso. 3.1. login() public java.lang.string login(java.lang.string userid, java.lang.string password) Parameters: userid, password Returns: java.lang.string Il servizio consente il riconoscimento sul sistema WebEDI mediante la userid e password con cui si accede al portale Enel Fornitori. Esempio di busta XML da inviare al servizio: <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:login xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string">amleto</in0> <in1 xsi:type="xsd:string">passw01</in1> </m:login> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Viene restituita una stringa strutturata come segue: <Messaggio> <Da></Da> <A></A> <id></id> <TipoDoc></TipoDoc> <Risposta> <Tipo></Tipo> <Codice></Codice> <Msg> </Msg> </Risposta> </Messaggio> 9 60
E possibile verificare l esito dell operazione controllando il contenuto dei nodi Tipo, Codice, Msg secondo la tabella: <Tipo> <Codice> <Msg> I 003 Login effettuato correttamente E possibile chiamare le operazioni successive. E 005 Userid non valorizzata E 052 Password non valorizzata E 999 Errore di autenticazione Userid o password errata Effettuato il login con esito positivo è possibile procedere alla chiamate delle altre operazioni previste dal web service. Le successive operazioni devono essere invocate nell ambito della stessa sessione http del login effettuato. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("userid",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.addparameter("password",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.setoperationname("login"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] userid,password}); System.out.println(ret); Si precisa che per poter accedere al web service occorre entrare su WebEDI almeno una volta autenticandosi sul portale Fornitori con le stesse credenziali utilizzate per il web service. 10 60
3.2. logoff() public java.lang.string logoff() Returns: java.lang.string Il servizio chiude la sessione di lavoro http. Deve essere invocato al termine delle operazioni previste dalla sessione di lavoro. Esempio di busta XML da inviare al servizio: <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:logoff xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:/> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Viene restituita una stringa strutturata come segue: <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance"> <soapenv:body> <ns1:logoffresponse soapenv: xmlns:ns1="http://soap.edimassivo.sistinf.it"/> </soapenv:body> </soapenv:envelope> try axis_call.setoperationname("logoff"); axis_call.removeallparameters(); axis_call.setreturntype(null); ret = (String)axis_call.invoke(new Object [] }); } catch(exception e) } 11 60
4. Servizi trasferimento documenti Vanno distinte due fasi: - invio dei documenti ad ENEL: servizio set Documento - ricezione documenti inviati da Enel: servizi getlistadocumenti, getdocumento, update Documento In particolare, riguardo alla ricezione dei documenti, la logica per implementare il trasferimento dei documenti deve prevedere la seguente sequenza di operazioni: getlistadocumenti getdocumento updatedocumento getlistadocumenti restituisce l elenco dei documenti inviati da Enel non ancora ricevuti getdocumento consente di ricevere la stringa XML del singolo documento updatedocumento consente di modificare lo stato del documento in Ricevuto. setdocumento consente di inviare la stringa XML di un singolo documento Il sistema controlla se è stato fatto prima il login con esito positivo. 4.1. getlistadocumenti() public java.lang.string getlistadocumenti() public java.lang.string getlistadocumenti(java.lang.string richiesta) Parameters: richiesta Returns: java.lang.string Il servizio consente di avere l elenco dei documenti inviati da Enel non ancora ricevuti. Prevede un parametro di input in cui specificare la query qualora si intenda effettuare una ricezione selettiva per tipo documento. Se viene richiamato il servizio senza il passaggio del parametro viene restituita la lista completa di tutti i documenti da ricevere. Esempio di busta XML da inviare al servizio senza il passaggio del parametro richiesta : <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:getlistadocumenti xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:/> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 12 60
Esempio di busta XML da inviare al servizio senza il passaggio del parametro richiesta : <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:getlistadocumenti xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string"><query_edi><parametri><cond_colonna>and</cond_colonna>& lt;colonna>tipodocumento</colonna><cond_valore>=</cond_valore><valore>3 </valore></parametri></query_edi></in0> </m:getlistadocumenti> </SOAP-ENV:Body> </SOAP-ENV:Envelope> In questo caso il parametro richiesta contiene la seguente stringa: <Query_Edi> <Parametri> <cond_colonna>and</cond_colonna> <colonna>tipodocumento</colonna> <cond_valore>=</cond_valore> <valore>3</valore> </Parametri> </Query_Edi> <cond_colonna> <colonna> <cond_valore> <valore> AND, OR TIPODOCUMENTO = 3 benestare 2 specifica ordine 4 avviso pagamento 5 ricevuta di ritorno Esempio di query multipla: <Query_Edi> <Parametri> <cond_colonna>and</cond_colonna> <colonna>tipodocumento</colonna> <cond_valore>=</cond_valore> <valore>3</valore> </Parametri> <Parametri> <cond_colonna>or</cond_colonna> <colonna>tipodocumento</colonna> <cond_valore>=</cond_valore> <valore>5</valore> </Parametri> </Query_Edi> 13 60
In caso di errore o documenti non disponibili per i criteri di ricerca impostati viene restituita una stringa strutturata come segue: <Messaggio> <Da></Da> <A></A> <id></id> <TipoDoc></TipoDoc> <Risposta> <Tipo></Tipo> <Codice></Codice> <Msg> </Msg> </Risposta> </Messaggio> E possibile verificare l esito dell operazione controllando il contenuto dei nodi Tipo, Codice, Msg secondo la tabella: <Tipo> <Codice> <Msg> W 100 Dati non presenti per le selezioni effettuate E 999 Caricamento Lista Documenti in Errore... Se ci sono invece documenti da ricevere viene restituita una stringa strutturata come segue: <Lista> <RecLista> <pkcoda>53285</pkcoda> <Mittente>C.E.B. IMPIANTI - SRL</Mittente> <NumDoc>0000492989</NumDoc> <TipoDoc>3</TipoDoc> <DescrDoc>BENESTARE</DescrDoc> <DataIn>14/07/2009</DataIn> <CodiceAppalto> </CodiceAppalto></RecLista> <RecLista> <pkcoda>54093</pkcoda> <Mittente>C.E.B. IMPIANTI - SRL</Mittente> <NumDoc>0000493040</NumDoc> <TipoDoc>3</TipoDoc> <DescrDoc>BENESTARE</DescrDoc> <DataIn>04/11/2009</DataIn> <CodiceAppalto> </CodiceAppalto></RecLista> <RecLista> <pkcoda>55342</pkcoda> <Mittente>C.E.B. IMPIANTI - SRL</Mittente> <NumDoc>0000493047</NumDoc> <TipoDoc>3</TipoDoc> <DescrDoc>BENESTARE</DescrDoc> <DataIn>25/01/2010</DataIn> <CodiceAppalto> </CodiceAppalto></RecLista> </Lista> 14 60
La stringa strutturata prevede n occorrenze del nodo RecLista che contiene i seguenti campi: - pkcoda: identificativo EDI univoco per documento - Mittente: partita iva ENEL - NumDoc: numero documento - TipoDoc: tipologia docunto - DescrDoc: descrizione del documento - DataIn: data di inserimento da parte di ENEL - CodiceAppalto (non è gestito) Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.setoperationname("getlistadocumenti"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] }); System.out.println(ret); Tabella tipi documento Codice Descrizione 3 BENESTARE 4 AVVISO DI PAGAMENTO 5 RICEVUTA DI RITORNO 20 LETTERA DI INCARICO 15 60
4.2. getdocumento() public java.lang.string getdocumento(java.lang.integer) Parameters: pkcoda Returns: java.lang.string Il servizio consente di estrarre da WebEDI il documento che ha come identificativo EDI il valore passato del parametro pkcoda. Il valore pkcoda viene restituito dal servizio getlistadocumenti descritto nel paragrafo precedente. Esempio di busta XML da inviare al servizio con il passaggio del parametro rpkcoda : <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:getdocumento xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:int">26063</in0> </m:getdocumento> </SOAP-ENV:Body> </SOAP-ENV:Envelope> In caso di errore o documenti non disponibili per i criteri di ricerca impostati viene restituita una stringa strutturata come segue: <Messaggio> <Da></Da> <A></A> <id></id> <TipoDoc></TipoDoc> <Risposta> <Tipo></Tipo> <Codice></Codice> <Msg> </Msg> </Risposta> </Messaggio> E possibile verificare l esito dell operazione controllando il contenuto dei nodi Tipo, Codice, Msg secondo la tabella: <Tipo> <Codice> <Msg> W 100 Dati non presenti per le selezioni effettuate E 999 Errore generico... 16 60
Se il documento richiesto è presente viene restituita la stringa XML del documento stesso: Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("pkcoda",org.apache.axis.encoding.xmltype.xsd_int.javax.xml.rpc.parametermode.in); axis_call.setoperationname("getdocumento"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] pkcoda}); System.out.println(ret); 17 60
4.3. updatedocumento() public java.lang.string updatedocumento(java.lang.integer) Parameters: pkcoda Returns: java.lang.string Il servizio consente di cambiare lo stato del documento in Ricevuto relativamente al documento con identificativo EDI passato nel parametro pkcoda. Il servizio deve essere richiamato dopo il getdocumento andato a buon fine. Esempio di busta XML da inviare al servizio con il passaggio del parametro rpkcoda : <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:updatedocumento xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:int">26063</in0> </m:updatedocumento> </SOAP-ENV:Body> </SOAP-ENV:Envelope> In caso di errore o documenti non disponibili per i criteri di ricerca impostati viene restituita una stringa strutturata come segue: <Messaggio> <Da></Da> <A></A> <id></id> <TipoDoc></TipoDoc> <Risposta> <Tipo></Tipo> <Codice></Codice> <Msg> </Msg> </Risposta> </Messaggio> E possibile verificare l esito dell operazione controllando il contenuto dei nodi Tipo, Codice, Msg secondo la tabella: <Tipo> <Codice> <Msg> W 100 Dati non presenti per le selezioni effettuate E 999 Errore generico... I 001 Aggiornamento effettuato 18 60
Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("pkcoda",org.apache.axis.encoding.xmltype.xsd_int,javax.xml.rpc.parametermode.in); axis_call.setoperationname("updatedocumento"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] pkcoda}); System.out.println(ret); 4.4. setdocumento() public java.lang.string setdocumento(java.lang.string) Parameters: stringaxml Returns: java.lang.string Il servizio consente di inviare un singolo documento XML conforme allo schema di validazione ENEL. Esempio di busta XML da inviare al servizio con il passaggio del parametro stringaxml : <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:setdocumento xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string">stringaxml</in0> </m:setdocumento> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 19 60
In caso di errore di invio viene restituita una stringa strutturata come segue: <Messaggio> <Da></Da> <A></A> <id></id> <TipoDoc></TipoDoc> <Risposta> <Tipo></Tipo> <Codice></Codice> <Msg> </Msg> </Risposta> </Messaggio> E possibile verificare l esito dell operazione controllando il contenuto dei nodi Tipo, Codice, Msg secondo la tabella: <Tipo> <Codice> <Msg> W 100 Dati non presenti per le selezioni effettuate E. Errore.. I 001 Inserimento effettuato Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("pkcoda",org.apache.axis.encoding.xmltype.xsd_int,javax.xml.rpc.parametermode.in); axis_call.setoperationname("updatedocumento"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] pkcoda}); System.out.println(ret); 20 60
5. Servizi Estratto Conto I servizi di seguito descritti consentono ai fornitori accreditati sul portale Fornitori ed abilitati al servizio WebEDI di consultare il proprio estratto conto. Elenco dei servizi previsti: getecperiodbalances: saldo per singolo periodo getecstatement: elenco operazioni in accredito/addebito getecopenitems: elenco delle registrazioni aperte getecbalanceditems: elenco operazioni chiuse (fatture pagate/pareggiate) getecbalancedetail: dettaglio operazioni dare/avere di un determinate periodo geteclistparkinvocice: elenco fatture/note di credito in lavorazione I servizi possono essere richiamati solo dopo aver effettuato il login. I dati che verranno messi a disposizione dai servizi verranno estratti dai sistemi gestionali ENEL solo alla prima invocazione nell ambito dello stesso giorno. 5.1. getecperiodbalances public java.lang.string getecperiodbalances(java.lang.string, java.lang.string) Parameters: piva_fornitore, piva_enel Returns: java.lang.string Con questo servizio un sistema esterno chiede il saldo della propria azienda rispetto una singola società ENEL. Il servizio si aspetta due parametri in input: partita iva del fornitore partita iva della società ENEL Esempio di busta XML da inviare al servizio: <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:getecperiodbalances xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string">01392380547</in0> <in1 xsi:type="xsd:string">05779711000</in1> </m:getecperiodbalances> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 21 60
In caso di errore o dati non disponibili per i criteri di ricerca impostati viene restituita una stringa strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>E</RC> <MSG> </MSG> <ITEMS> </ITEMS> </T-MESSAGE> E possibile verificare l esito dell operazione controllando il contenuto dei nodi RC, MSG secondo la tabella: <RC> W E <MSG> Dato non disponibile. Ripetere richiesta tra qualche minuto Fornitore non abilitato.. I Information. Viene restituito dei dati Per RC=I restituisce una stringa XML strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>I</RC> <MSG>Information</MSG> <ITEMS> <ITEM> <PERIOD>1</PERIOD> <DEBITS_MTH>0</DEBITS_MTH> <CREDIT_MTH>0</CREDIT_MTH> <BALANCE>0</BALANCE> <ACCUMULATED_BALANCE>1635254.15</ACCUMULATED_BALANCE> <CURRENCY>EUR</CURRENCY> </ITEM> <ITEM> <PERIOD>2</PERIOD> <DEBITS_MTH>0</DEBITS_MTH> <CREDIT_MTH>0</CREDIT_MTH> <BALANCE>0</BALANCE> <ACCUMULATED_BALANCE>1635254.15</ACCUMULATED_BALANCE> <CURRENCY>EUR</CURRENCY> </ITEM>.. 22 60
L XML prevede un nodo ITEM per ciascun periodo (mese dell anno corrente). PERIOD DEBITS_MTH CREDIT_MTH BALANCE Mese dell anno corrente importo delle operazioni di addebito registrate da Enel sul conto del fornitore (es. nota di credito emessa dal fornitore, pagamenti o altre operazioni contabili) fino alla data ora estrazione importo delle operazioni di accredito registrate da Enel sul conto del fornitore (es. fatture) fino alla data ora estrazione evidenzia la differenza tra il valore Avere e il valore Dare fino alla data ora estrazione ACCUMULATED_BALANCE il saldo accumulato si riferisce all elenco di tutte le registrazioni ancora aperte nei confronti del fornitore Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("par1",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.addparameter("par2",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.setoperationname("getecperiodbalances"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] piva_fornitore, piva_enel}); System.out.println(ret); 23 60
Schema di validazione. <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:complextype name="t_message"> <xsd:sequence> <xsd:element name="rc" type="xsd:string"/> <xsd:element name="msg" type="xsd:string"/> <xsd:element name="item" type="t_item" minoccurs="0" maxoccurs="12"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="t_item"> <xsd:sequence> <xsd:element name="period" type="xsd:string"/> <xsd:element name="debits_mth" type="xsd:float"/> <xsd:element name="credit_mth" type="xsd:float"/> <xsd:element name="balance" type="xsd:float"/> <xsd:element name="accumulated_balance" type="xsd:float"/> <xsd:element name="currency" type="xsd:string"/> </xsd:sequence> </xsd:complextype> <xsd:element name="message" type="t_message"/> </xsd:schema> 24 60
5.2. getecstatement public java.lang.string getecstatements(java.lang.string, java.lang.string, java.lang.integer, java.lang.string) Parameters: piva_fornitore, piva_enel, period, operazione Returns: java.lang.string Con questo servizio un sistema esterno, solo dopo aver invocato il servizio getecperiodbalances, può richiedere i seguenti dati in base al parametro operazione indicato: D : elenco delle operazioni di addebito registrate da Enel sul conto del fornitore (es. nota di credito emessa dal fornitore, pagamenti o altre operazioni contabili) fino alla data ora estrazione A : elenco delle operazioni di accredito registrate da Enel sul conto del fornitore (es. fatture) fino alla data ora estrazione Esempio di busta XML da inviare al servizio per i movimenti DARE: <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:getecstatement xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string">01392380547</in0> <in1 xsi:type="xsd:string">05779711000</in1> <in2 xsi:type="xsd:int">9</in2> <in3 xsi:type="xsd:string">d</in3> </m:getecstatement> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Esempio di busta XML da inviare al servizio per i movimenti AVERE: <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:getecstatement xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string">01392380547</in0> <in1 xsi:type="xsd:string">05779711000</in1> <in2 xsi:type="xsd:int">9</in2> <in3 xsi:type="xsd:string">a</in3> </m:getecstatement> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 25 60
In caso di errore o dati non disponibili per i criteri di ricerca impostati viene restituita una stringa strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>E</RC> <MSG> </MSG> <ITEMS> </ITEMS> </T-MESSAGE> E possibile verificare l esito dell operazione controllando il contenuto dei nodi RC, MSG secondo la tabella: <RC> W E <MSG> Dato non disponibile. Ripetere richiesta tra qualche minuto Fornitore non abilitato.. I Information. Viene restituito dei dati 26 60
Per RC=I restituisce una stringa XML strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>I</RC> <MSG>Information</MSG> <ITEMS> <ITEM> <REF_DOC_NO>ALE4</REF_DOC_NO> <DOC_DATE>2010-06-27</DOC_DATE> <CURRENCY>EUR</CURRENCY> <LC_AMOUNT>13200</LC_AMOUNT> <TERM_DATE>2011-08-25</TERM_DATE> <DOC_TYPE>FAT. FORN. ITALIA </DOC_TYPE> <PYMT_METH>PAE - FOR - Bonifico in EU </PYMT_METH> <PMNT_BLOCK>Blocco al Pag. Gener</PMNT_BLOCK> <ITEM_TEXT>FAT. FORN. ITALIA</ITEM_TEXT> <DB_CR_IND>H</DB_CR_IND> </ITEM> <ITEM> <REF_DOC_NO>NUOVO</REF_DOC_NO> <DOC_DATE>2010-06-27</DOC_DATE> <CURRENCY>EUR</CURRENCY> <LC_AMOUNT>119</LC_AMOUNT> <TERM_DATE>2010-06-27</TERM_DATE> Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("par1",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.addparameter("par2",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.addparameter("par3",org.apache.axis.encoding.xmltype.xsd_int,javax.xml.rpc.parametermode.in); axis_call.addparameter("par4",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.setoperationname("getecstatement"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] piva_fornitore, piva_enel, period, operazione}); System.out.println(ret); 27 60
Schema di validazione MESSAGE. 28 60
5.3. getecopenitems public java.lang.string getecopenitems(java.lang.string, java.lang.string) Parameters: piva_fornitore, piva_enel Returns: java.lang.string Con questo servizio un sistema esterno, solo dopo aver invocato il servizio getecperiodbalances, può richiedere il saldo accumulato riferito all elenco di tutte le registrazioni ancora aperte nei confronti del fornitore. Esempio di busta XML da inviare al servizio: <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:getecopenitems xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string">01392380547</in0> <in1 xsi:type="xsd:string">05779711000</in1> </m:getecopenitems> </SOAP-ENV:Body> </SOAP-ENV:Envelope> In caso di errore o dati non disponibili per i criteri di ricerca impostati viene restituita una stringa strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>E</RC> <MSG> </MSG> <ITEMS> </ITEMS> </T-MESSAGE> E possibile verificare l esito dell operazione controllando il contenuto dei nodi RC, MSG secondo la tabella: <RC> W E <MSG> Dato non disponibile. Ripetere richiesta tra qualche minuto Fornitore non abilitato.. I Information. Viene restituito dei dati 29 60
Per RC=I restituisce una stringa XML strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>I</RC> <MSG>Information</MSG> <ITEMS> <ITEM> <REF_DOC_NO>194/03</REF_DOC_NO> <DOC_DATE>2003-07-01</DOC_DATE> <CURRENCY>EUR</CURRENCY> <LC_AMOUNT>1059.23</LC_AMOUNT> <TERM_DATE>2011-07-29</TERM_DATE> <DOC_TYPE>FAT. FORN. ITALIA </DOC_TYPE> <PYMT_METH>PAE - FOR - Bonifico in EU </PYMT_METH> <PMNT_BLOCK>Blocco al Pag. Gener</PMNT_BLOCK> <ITEM_TEXT>FAT. FORN. ITALIA</ITEM_TEXT> <DB_CR_IND>H</DB_CR_IND> </ITEM> <ITEM> <REF_DOC_NO>198/03</REF_DOC_NO> <DOC_DATE>2003-07-01</DOC_DATE> <CURRENCY>EUR</CURRENCY> Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("par1",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.addparameter("par2",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.setoperationname("getecopenitems"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] piva_fornitore, piva_enel}); System.out.println(ret); 30 60
Schema di validazione MESSAGE. 31 60
5.4. geteclistparkinvoice public java.lang.string geteclistparkinvocice(java.lang.string, java.lang.string) Parameters: piva_fornitore, piva_enel Returns: java.lang.string Con questo servizio un sistema esterno, solo dopo aver invocato il servizio getecperiodbalances, può richiedere il saldo accumulato si riferisce all elenco di tutte le registrazioni ancora aperte nei confronti del fornitore. Esempio di busta XML da inviare al servizio: <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:geteclistparkinvoice xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string">string</in0> <in1 xsi:type="xsd:string">string</in1> </m:geteclistparkinvoice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> In caso di errore o dati non disponibili per i criteri di ricerca impostati viene restituita una stringa strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>E</RC> <MSG> </MSG> <ITEMS> </ITEMS> </T-MESSAGE> E possibile verificare l esito dell operazione controllando il contenuto dei nodi RC, MSG secondo la tabella: <RC> W E <MSG> Dato non disponibile. Ripetere richiesta tra qualche minuto Fornitore non abilitato.. I Information. Viene restituito dei dati 32 60
Per RC=I restituisce una stringa XML strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>I</RC> <MSG>Information</MSG> <ITEMS> <ITEM> <REF_DOC_NO>43123423</REF_DOC_NO> <DOC_DATE>2009-12-20</DOC_DATE> <CURRENCY>EUR</CURRENCY> <LC_AMOUNT>136.68</LC_AMOUNT> <AMT_DOCCURR>136.68</AMT_DOCCURR> <TERM_DATE>2011-05-25</TERM_DATE> <DOC_TYPE>FAT. FORN. ITALIA</DOC_TYPE> <PYMT_METH>PAE - FOR - Bonifico in EU</PYMT_METH> <PMNT_BLOCK></PMNT_BLOCK> <ITEM_TEXT></ITEM_TEXT> </ITEM> <ITEM> <REF_DOC_NO>54354</REF_DOC_NO> <DOC_DATE>2009-12-20</DOC_DATE> <CURRENCY>EUR</CURRENCY> Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("par1",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.addparameter("par2",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.setoperationname("geteclistparkinvoice"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] piva_fornitore, piva_enel}); System.out.println(ret); 33 60
Schema di validazione. 34 60
5.5. getecbalanceditems public java.lang.string getecbalanceditems(java.lang.string, java.lang.string,java.lang.integer) Parameters: piva_fornitore, piva_enel, periodo Returns: java.lang.string Con questo servizio un sistema esterno, solo dopo aver invocato il servizio getecbalanceditems, può richiedere l elenco operazioni chiuse (fatture pagate/pareggiate). Esempio di busta XML da inviare al servizio: <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:getecbalanceditems xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string">01392380547</in0> <in1 xsi:type="xsd:string">05779711000</in1> <in2 xsi:type="xsd:int">9</in2> </m:getecbalanceditems> </SOAP-ENV:Body> </SOAP-ENV:Envelope> In caso di errore o dati non disponibili per i criteri di ricerca impostati viene restituita una stringa strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>E</RC> <MSG> </MSG> <ITEMS> </ITEMS> </T-MESSAGE> E possibile verificare l esito dell operazione controllando il contenuto dei nodi RC, MSG secondo la tabella: <RC> W E <MSG> Dato non disponibile. Ripetere richiesta tra qualche minuto Fornitore non abilitato.. I Information. Viene restituito dei dati 35 60
Per RC=I restituisce una stringa XML strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>I</RC> <MSG>Information</MSG> <ITEMS> <ITEM> <REF_DOC_NO>12000</REF_DOC_NO> <DOC_DATE>2011-05-31</DOC_DATE> <CURRENCY>EUR</CURRENCY> <LC_AMOUNT>20</LC_AMOUNT> <AMT_DOCCURR>20</AMT_DOCCURR> <TERM_DATE>2011-05-31</TERM_DATE> <DOC_TYPE>FAT. FORN. ITALIA </DOC_TYPE> <PYMT_METH>PAE - FOR - Bonifico in EU </PYMT_METH> <PMNT_BLOCK></PMNT_BLOCK> <ITEM_TEXT>20110608-I1112 PAG.TO AUTOMATICOFAT. FORN. ITALIA</ITEM_TEXT> <DB_CR_IND>H</DB_CR_IND> </ITEM> <ITEM> <REF_DOC_NO>12000</REF_DOC_NO> <DOC_DATE>2011-05-31</DOC_DATE> <CURRENCY>EUR</CURRENCY> Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("par1",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.addparameter("par2",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.setoperationname("getecbalanceditems"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] piva_fornitore, piva_enel}); System.out.println(ret); 36 60
Schema di validazione. 37 60
5.6. getecbalancedetail public java.lang.string ge EcBalanceDetail(java.lang.string, java.lang.string, java.lang.integer) Parameters: piva_fornitore, piva_enel, period Returns: java.lang.string Con questo servizio un sistema esterno, solo dopo aver invocato il servizio getecbalancedetail, può richiedere l evidenza della differenza tra il valore Avere e il valore Dare fino alla data ora estrazione. <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <SOAP-ENV:Body> <m:getecbalancedetail xmlns:m="http://soap.edimassivo.sistinf.it" SOAP- ENV:> <in0 xsi:type="xsd:string">01392380547</in0> <in1 xsi:type="xsd:string">05779711000</in1> <in2 xsi:type="xsd:int">9</in2> </m:getecbalancedetail> </SOAP-ENV:Body> </SOAP-ENV:Envelope> In caso di errore o dati non disponibili per i criteri di ricerca impostati viene restituita una stringa strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>E</RC> <MSG> </MSG> <ITEMS> </ITEMS> </T-MESSAGE> E possibile verificare l esito dell operazione controllando il contenuto dei nodi RC, MSG secondo la tabella: <RC> W E <MSG> Dato non disponibile. Ripetere richiesta tra qualche minuto Fornitore no abilitato.. I Information. Viene restituito dei dati 38 60
In output restituisce una stringa XML strutturata come segue: <?xml version="1.0" encoding="iso-8859-1"?> <T-MESSAGE> <RC>I</RC> <MSG>Information</MSG> <ITEMS> <ITEM> <REF_DOC_NO>ALE4</REF_DOC_NO> <DOC_DATE>2010-06-27</DOC_DATE> <CURRENCY>EUR</CURRENCY> <LC_AMOUNT>13200</LC_AMOUNT> <TERM_DATE>2011-08-25</TERM_DATE> <DOC_TYPE>FAT. FORN. ITALIA </DOC_TYPE> <PYMT_METH>PAE - FOR - Bonifico in EU </PYMT_METH> <PMNT_BLOCK>Blocco al Pag. Gener</PMNT_BLOCK> <ITEM_TEXT>FAT. FORN. ITALIA</ITEM_TEXT> <DB_CR_IND>H</DB_CR_IND> </ITEM> <ITEM> <REF_DOC_NO>NUOVO</REF_DOC_NO> <DOC_DATE>2010-06-27</DOC_DATE> <CURRENCY>EUR</CURRENCY> <LC_AMOUNT>119</LC_AMOUNT> <TERM_DATE>2010-06-27</TERM_DATE> Esempio di invocazione del servizio. try service = new Service(); axis_call = (org.apache.axis.client.call)service.createcall(); axis_call.settargetendpointaddress( new URL(indirizzo)); axis_call.setusesoapaction(false); axis_call.setsoapactionuri(""); axis_call.setmaintainsession(true); try axis_call.removeallparameters(); axis_call.addparameter("par1",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.addparameter("par2",org.apache.axis.encoding.xmltype.xsd_string,javax.xml.rpc.parametermode.in); axis_call.addparameter("par3",org.apache.axis.encoding.xmltype.xsd_int,javax.xml.rpc.parametermode.in); axis_call.setoperationname("getecbalancedetail"); axis_call.setreturntype(xmltype.xsd_string); } catch(exception e) return false; } ret = (String)axis_call.invoke(new Object [] piva_fornitore, piva_enel, period, operazione}); System.out.println(ret); 39 60
Schema di validazione MESSAGE 40 60
5.7. Schema XSD MESSAGE Lo schema MESSAGE si riferisce alla stringa XML restituita dai servizi previsti per l estratto conto. <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:complextype name="t_message"> <xsd:sequence> <xsd:element name="rc" type="xsd:string"/> <xsd:element name="msg" type="xsd:string"/> <xsd:element name="item" type="t_item" minoccurs="0" maxoccurs="unbounded"/> <xsd:element name="total_amount" type="xsd:float"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="t_item"> <xsd:sequence> <xsd:element name="ref_doc_no" type="xsd:string"/> <xsd:element name="doc_date" type="xsd:date"/> <xsd:element name="currency" type="xsd:string"/> <xsd:element name="lc_amount" type="xsd:float"/> <xsd:element name="term_date" type="xsd:date"/> <xsd:element name="doc_type" type="xsd:string"/> 41 60
<xsd:element name="pymt_meth" type="xsd:string"/> <xsd:element name="pmnt_block" type="xsd:string"/> <xsd:element name="item_text" type="xsd:string"/> <xsd:element name="db_cr_ind"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:enumeration value="h"/> <xsd:enumeration value="s"/> <xsd:enumeration value=""/> </xsd:restriction> </xsd:simpletype> </xsd:element> </xsd:sequence> </xsd:complextype> <xsd:element name="message" type="t_message"/> </xsd:schema> Per ogni documento riportato nell XML è presente una occorrenza del nodo ITEM. Segue il significato dei singoli nodi figlio. REF_DOC_NO DOC_DATE CURRENCY LC_AMOUNT TERM_DATE DOC_TYPE PYMT_METH PMNT_BLOCK ITEM_TEXT DB_CR_IND Numero del documento. I documenti di pagamento Enel non riportano un valore Data del document Valuta Importo Data di scadenza termini di pagamento Tipologia del document Metodo di pagamento Descrizione dell eventuale blocco al pagamento Note Dove valorizzato assume i valori H (movimento avere) S (movimenti dare) Il nodo TOTAL_AMOUNT risporta il totale complessivo dei movimenti in divisa EURO. 42 60
6. Codici di errore 004=Login gia' effettuato 005=Userid non valorizzata 006=Esecuzione processo di connessione fallito 007=Utente non abilitato 008=Non esiste Partita Iva associata all'identificativo 011=Login non effettuato 012=Il criterio di selezione non e' valido 013=Manca il tag TipoDoc nel documento 014=Documento assente dalla Tabella TipoDocumenti 015=Tipo Comunicazione assente dalla Tabella TipoDocumenti 016=Tipo Comunicazione non valido per il documento selezionato 017=Manca la Partita Iva del Mittente 018=La Partita Iva del mittente non risulta essere quella dell'utente collegato 019=Manca la Partita Iva della Sede Legale 020=La Partita Iva della Sede Legale non risulta essere quella dell'utente collegato 021=Manca la Data Emissione Fattura 022=Data Emissione non valida 023=La data emissione non puo' essere minore di 5 giorni della data solare 024=Manca la Data dell'ordine 025=E' presente la Data Ordine senza il Numero dell'ordine 026=La data dell'ordine deve essere minore o uguale alla data emissione fattura 027=Data Ordine non valida 032=Manca la Data del Benestare 033=E' presente la Data Benestare senza il Numero del Benestare 034=La data del Benestare deve essere minore o uguale alla data emissione fattura 035=Data Benestare non valida 036=Manca la Data della Fattura Associata 037=E' presente la Data Fattura Associata senza il Numero della Fattura Associata 038=La data della Fattura Associata deve essere minore o uguale alla data emissione fattura 039=Data Fattura Associata non valida 044=Manca la Partita Iva del destinatario 049=Partita Iva non presente sulla Tabella Fornitore Societa' Documento 050=Richiesta per costruzione query non corretta 051=Servizio in fase di sviluppo 052=Password mancante 100=La Partita Iva fornitore indicata (pivaforn) non risulta essere quella dell'utente collegato (P_Iva login) 999= Errore generico 43 60
7. WSDL Segue il WSDL per puntare l ambiente di ESERCIZIO WebEDI <?xml version="1.0" encoding="utf-8"?> <!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by ENEL SERVIZI SRL (ENEL SERVIZI SRL) --> <wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:intf="https://weg.enel.it/axis/rpcedi.do/urn:soapedi" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"> <wsdl:message name="getecbalancedetailrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:part name="in2" type="xsd:int"/> <wsdl:message name="getecbalanceditemsrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:part name="in2" type="xsd:int"/> <wsdl:message name="getlistadocumentiresponse1"> <wsdl:part name="getlistadocumentireturn" type="xsd:string"/> <wsdl:message name="myhomerequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:message name="getlistadocumentirequest"> <wsdl:message name="getecbalanceditemsresponse"> <wsdl:part name="getecbalanceditemsreturn" type="xsd:string"/> <wsdl:message name="setdocumentorequest"> <wsdl:part name="in0" type="xsd:string"/> 44 60
<wsdl:message name="getecstatementresponse"> <wsdl:part name="getecstatementreturn" type="xsd:string"/> <wsdl:message name="getecperiodbalancesrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:message name="geteclistparkinvoiceresponse"> <wsdl:part name="geteclistparkinvoicereturn" type="xsd:string"/> <wsdl:message name="geteclistparkinvoicerequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:message name="getecbalancedetailresponse"> <wsdl:part name="getecbalancedetailreturn" type="xsd:string"/> <wsdl:message name="getdocumentorequest1"> <wsdl:part name="in0" type="xsd:int"/> <wsdl:message name="getdocumentoresponse"> <wsdl:part name="getdocumentoreturn" type="xsd:string"/> <wsdl:message name="updatedocumentorequest"> <wsdl:part name="in0" type="xsd:int"/> <wsdl:message name="getlistadocumentirequest1"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:message name="getdocumentoresponse1"> <wsdl:part name="getdocumentoreturn" type="xsd:string"/> <wsdl:message name="myhomeresponse"> <wsdl:part name="myhomereturn" type="xsd:string"/> <wsdl:message name="getecstatementrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:part name="in2" type="xsd:int"/> <wsdl:part name="in3" type="xsd:string"/> <wsdl:message name="getlistadocumentiresponse"> <wsdl:part name="getlistadocumentireturn" type="xsd:string"/> <wsdl:message name="loginrequest1"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:message name="logoffresponse"> <wsdl:message name="updatedocumentoresponse1"> <wsdl:part name="updatedocumentoreturn" type="xsd:string"/> <wsdl:message name="logoffrequest"> <wsdl:message name="updatedocumentoresponse"> <wsdl:part name="updatedocumentoreturn" type="xsd:string"/> 45 60
<wsdl:message name="getdocumentorequest"> <wsdl:message name="getecperiodbalancesresponse"> <wsdl:part name="getecperiodbalancesreturn" type="xsd:string"/> <wsdl:message name="getdocumentorequest2"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:message name="getecopenitemsrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:message name="loginresponse"> <wsdl:part name="loginreturn" type="xsd:string"/> <wsdl:message name="loginrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:message name="getdocumentoresponse2"> <wsdl:part name="getdocumentoreturn" type="xsd:string"/> <wsdl:message name="setdocumentoresponse"> <wsdl:part name="setdocumentoreturn" type="xsd:string"/> <wsdl:message name="getecopenitemsresponse"> <wsdl:part name="getecopenitemsreturn" type="xsd:string"/> <wsdl:message name="updatedocumentorequest1"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:message name="loginresponse1"> <wsdl:part name="loginreturn" type="xsd:string"/> <wsdl:porttype name="edisoapservice"> <wsdl:operation name="myhome" parameterorder="in0"> <wsdl:input name="myhomerequest" message="intf:myhomerequest"/> <wsdl:output name="myhomeresponse" message="intf:myhomeresponse"/> <wsdl:operation name="getdocumento"> <wsdl:input name="getdocumentorequest" message="intf:getdocumentorequest"/> <wsdl:output name="getdocumentoresponse" message="intf:getdocumentoresponse"/> <wsdl:operation name="getdocumento" parameterorder="in0"> <wsdl:input name="getdocumentorequest1" message="intf:getdocumentorequest1"/> <wsdl:output name="getdocumentoresponse1" message="intf:getdocumentoresponse1"/> <wsdl:operation name="getlistadocumenti"> <wsdl:input name="getlistadocumentirequest" message="intf:getlistadocumentirequest"/> <wsdl:output name="getlistadocumentiresponse" message="intf:getlistadocumentiresponse"/> <wsdl:operation name="getlistadocumenti" parameterorder="in0"> 46 60
<wsdl:input name="getlistadocumentirequest1" message="intf:getlistadocumentirequest1"/> <wsdl:output name="getlistadocumentiresponse1" message="intf:getlistadocumentiresponse1"/> <wsdl:operation name="login" parameterorder="in0 in1"> <wsdl:input name="loginrequest1" message="intf:loginrequest1"/> <wsdl:output name="loginresponse1" message="intf:loginresponse1"/> <wsdl:operation name="logoff"> <wsdl:input name="logoffrequest" message="intf:logoffrequest"/> <wsdl:output name="logoffresponse" message="intf:logoffresponse"/> <wsdl:operation name="setdocumento" parameterorder="in0"> <wsdl:input name="setdocumentorequest" message="intf:setdocumentorequest"/> <wsdl:output name="setdocumentoresponse" message="intf:setdocumentoresponse"/> <wsdl:operation name="updatedocumento" parameterorder="in0"> <wsdl:input name="updatedocumentorequest" message="intf:updatedocumentorequest"/> <wsdl:output name="updatedocumentoresponse" message="intf:updatedocumentoresponse"/> <wsdl:operation name="getecperiodbalances" parameterorder="in0 in1"> <wsdl:input name="getecperiodbalancesrequest" message="intf:getecperiodbalancesrequest"/> <wsdl:output name="getecperiodbalancesresponse" message="intf:getecperiodbalancesresponse"/> <wsdl:operation name="getecstatement" parameterorder="in0 in1 in2 in3"> <wsdl:input name="getecstatementrequest" message="intf:getecstatementrequest"/> <wsdl:output name="getecstatementresponse" message="intf:getecstatementresponse"/> <wsdl:operation name="getecopenitems" parameterorder="in0 in1"> <wsdl:input name="getecopenitemsrequest" message="intf:getecopenitemsrequest"/> <wsdl:output name="getecopenitemsresponse" message="intf:getecopenitemsresponse"/> <wsdl:operation name="getecbalanceditems" parameterorder="in0 in1 in2"> <wsdl:input name="getecbalanceditemsrequest" message="intf:getecbalanceditemsrequest"/> <wsdl:output name="getecbalanceditemsresponse" message="intf:getecbalanceditemsresponse"/> <wsdl:operation name="getecbalancedetail" parameterorder="in0 in1 in2"> <wsdl:input name="getecbalancedetailrequest" message="intf:getecbalancedetailrequest"/> <wsdl:output name="getecbalancedetailresponse" message="intf:getecbalancedetailresponse"/> <wsdl:operation name="geteclistparkinvoice" parameterorder="in0 in1"> <wsdl:input name="geteclistparkinvoicerequest" message="intf:geteclistparkinvoicerequest"/> 47 60
<wsdl:output name="geteclistparkinvoiceresponse" message="intf:geteclistparkinvoiceresponse"/> </wsdl:porttype> <wsdl:binding name="soapedisoapbinding" type="intf:edisoapservice"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="myhome"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="myhomerequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="myhomeresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="getdocumento"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getdocumentorequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="getdocumentoresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="getdocumento"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getdocumentorequest1"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="getdocumentoresponse1"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="getlistadocumenti"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getlistadocumentirequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="getlistadocumentiresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> 48 60
<wsdl:operation name="getlistadocumenti"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getlistadocumentirequest1"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="getlistadocumentiresponse1"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="login"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="loginrequest1"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="loginresponse1"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="logoff"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="logoffrequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="logoffresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="setdocumento"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="setdocumentorequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="setdocumentoresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="updatedocumento"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="updatedocumentorequest"> namespace="http://soap.edimassivo.sistinf.it"/> 49 60
</wsdl:input> <wsdl:output name="updatedocumentoresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="getecperiodbalances"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getecperiodbalancesrequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="getecperiodbalancesresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="getecstatement"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getecstatementrequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="getecstatementresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="getecopenitems"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getecopenitemsrequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="getecopenitemsresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="getecbalanceditems"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getecbalanceditemsrequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="getecbalanceditemsresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> 50 60
<wsdl:operation name="geteclistparkinvoice"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="geteclistparkinvoicerequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="geteclistparkinvoiceresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> <wsdl:operation name="getecbalancedetail"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getecbalancedetailrequest"> namespace="http://soap.edimassivo.sistinf.it"/> </wsdl:input> <wsdl:output name="getecbalancedetailresponse"> namespace="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:output> </wsdl:binding> <wsdl:service name="edisoapservice"> <wsdl:port name="urn:soapedi" binding="intf:soapedisoapbinding"> <wsdlsoap:address location="https://weg.enel.it/axis/rpcedi.do/urn:soapedi"/> </wsdl:port> </wsdl:service> </wsdl:definitions> 51 60
Segue il WSDL per puntare l ambiente di COLLAUDO WebEDI <?xml version="1.0" encoding="utf-8"?> <!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by ENEL SERVIZI SRL (ENEL SERVIZI SRL) --> <wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:intf="https://weg.enel.it/axis/rpcedi.do/urn:soapediadd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="https://weg.enel.it/axis/rpcedi.do/urn:soapediadd"> <wsdl:message name="getecbalancedetailrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:part name="in2" type="xsd:int"/> <wsdl:message name="getecbalanceditemsrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:part name="in2" type="xsd:int"/> <wsdl:message name="getlistadocumentiresponse1"> <wsdl:part name="getlistadocumentireturn" type="xsd:string"/> <wsdl:message name="myhomerequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:message name="getlistadocumentirequest"> <wsdl:message name="getecbalanceditemsresponse"> <wsdl:part name="getecbalanceditemsreturn" type="xsd:string"/> <wsdl:message name="setdocumentorequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:message name="getecstatementresponse"> <wsdl:part name="getecstatementreturn" type="xsd:string"/> 52 60