Legolas:
Rispondo solo ora perché mi sono preso un week-end in famiglia lontano da tutto (l'unico contatto con internet era Youtube per i cartoni di Peppa Pig e della Pimpa per il pupo, che altrimenti non mangia... ::) ;D )
Comunque grazie! Ho cercato un po' in rete e ho trovato un articolo per Delphi XE2 e, dopo qualche affanno, sono riuscito a farlo funzionare anche con Lazarus. Si tratta di un semplice programmino che controlla la validità del VAT dei membri di uno Stato europeo.
Occorre prima di tutto generare le unit dal file WSDL disponibile qui: http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl che, grazie all'aiuto di WST è un'operazione da un paio di click :D
Il progetto richiede un tedit (edVAT) e un tbutton (btnVAT). Bisogna aggiungere wst_synapse e wst_core tra i packages richiesti dal progetto, oltre che aggiungere tra gli uses le unit generate da WST.
Senza dilungarmi troppo, per chi fosse interessato, ecco il codice:
procedure TForm1.btnVATClick(Sender: TObject); var WS: checkVatPortType; inp: checkVat_Type; outp: checkVatResponse; begin SYNAPSE_RegisterHTTP_Transport(); WS := wst_CreateInstance_checkVatPortType(); inp := checkVat_Type.Create; try inp.countryCode := Copy(edVAT.Text,1,Pos(#32,edVAT.Text)-1); inp.vatNumber := Copy(edVAT.Text,Pos(#32,edVAT.Text)+1,255); outp := WS.checkVat(inp); if outp.valid then ShowMessage('OK: ' + outp.name + #13#10 + outp.address) else ShowMessage(outp.vatNumber + ' not OK') finally inp.Free; outp.Free end end;
end.
--- Termina codice ---
E' solo un inizio, ma ora credo di aver capito come funziona il tutto :)
Ettore Cicinelli:
Salve, scusate sono nuovo in questo forum, ma sto cercando di imparare a programmare in Lazarus, avevo letto l'articolo del Dr. Bob's riguardo l'incorporazione del VIES in Delphi, poi per fortuna ho trovato la versione in lazarus proposta da Legolas ed ho eseguito le istruzioni fedelmente. Alla fine quando cerco di compilare il progetto mi da sempre il seguente errore:"checkVatService_proxy.pas(...)Error:Identifier not found "urn_ec_europa_eu_taxud_vies_services_checkVat_types" e successivamente: checkVatService_proxy.pas(...) Error: interface type expected, but got "<erroneus type>", non trova quell'identificatore anche se c'è. Non capisco. Grazie per l'attenzione e scusate in anticipo se ho sbagliato qualcosa.
DragoRosso:
Ripartiamo da zero.
Prima cosa devi scaricare il file "checkVatService.wsdl" dal link indicato (http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
Poi dal OPL (Online Package Manager) devi scaricare ed installare il componente WST con tutti i suoi collegati.
Ora possiamo continuare.
Dalla voce di menu "Progetto/Web Services Toolkit" scegli "Import WDSL file" ti si aprirà un pagina e imposta il file di input (scaricato prima) e la directory dove verranno generati i wrapper pascal.
Se tutto OK, allora hai tutto.
PER USARE I WRAPPER GENERATI, vai nel menu "Progetto/Opzioni di progetto" e sotto "Opzioni Compilatore/Percorsi" devi aggiungere la path dove ci sono i wrapper appena generati nella prima linea a destra "Altri file unit (-Fu):".
Ciao
DragoRosso:
Aggiornamento, devi portare due modifiche ai wrapper creati.
Nel file "checkvatService_proxy.pas" alla riga 19 devi eseguire la sostituzione come indicato qui sotto:
e alla riga 69 (o giù di li) sempre dello stesso file:
--- Codice: --- class function TcheckVatPortType_Proxy.GetServiceType() : PTypeInfo; begin result := TypeInfo(checkVatService.checkVatPortType); end;
--- Termina codice ---
Ultima cosa: l'immisione della partita IVA è:
codice paese (le due lettere internazionali, per l'Italia è IT) SPAZIO PARTITA IVA
Ciao
Ettore Cicinelli:
Grazie infinite per la sollecita risposta, ma avevo già fatto quasi tutto come hai detto, non avevo collegato soltanto i wrapper generati con l'opzione "Compilatore/Percorsi", ma li avevo riposti nella stessa dir del progetto e li avevo lanciati manualmente. Comunque anche così ottengo sempre i 2 errori che avevo detto nel precedente nella unit checkVatService_proxy. Grazie comunque e se vi sovviene altro alla soluzione del problema ve nesarei grato.