Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Farmaclick, unit incriminata.

113 views
Skip to first unread message

Daniele

unread,
May 9, 2013, 4:42:29 AM5/9/13
to
Ciao a tutti,
mi rendo conto che la richiesta in corso non e' tra le piu' facili da
soddisfare in quanto i parametri richiesti per le prove non sono di dominio
pubblico.
Quindi gli eventuali test, da farsi dietro i vostri suggerimenti (che
seguiro' scrupolosamente), saranno fatti in seguito.
Quello che e' pubblico e' il sito di farmaclick dove si trovano i file
originali wsdl che e'

http://www.farmaclick.it/I-servizi-documentazione_0204.html

In linea ci sono 3 livelli diversi di standard pubblicati
2005
2008
2010

Quello maggiormente in uso e' il 2005, in pratica _anche_ il 2005 puo'
essere usato sui server che, di fatto, utilizzano il 2010.

Prima di procedere alla richiesta di un ddt, si deve fare la procedura di
login per ottenere un ID di sessione

procedure TFRL.OttieniID;
Var LogIn : LoginInputBean; // nel file importato da wsdl
importer
LogInOutput : LoginOutputBean;
CF : ArrayOf_soapenc_string;
FornitoriBean : ArrayOf_tns1_FornitoreBean;
I,B : Integer;
S : string;

begin
MM1.Clear; // TMemo
SetLength(CF,1);
CF[0]:='';
LogIn:=LoginInputBean.Create;
LogIn.nomeTerminale:='01';
LogIn.userName:='UserName'; // UserName usato per quel fornitore di
servizio
LogIn.password:='Password'; // Password
LogIn.arrayCodiciFornitori:=CF;
LogInOutput:=(HTLog As farmaclick2005001).FCKLogin(LogIn); //
HTLog=THTTPRIO
if LogInOutput.esitoServizio=0 then
begin
FornitoriBean:=LogInOutput.arrayFornitori;
for I:=0 to High(FornitoriBean) do
begin
SessionID:=FornitoriBean[I].IDSessione; // E' sempre lo stesso ....
non cambia
MM1.Lines.Add('ID Sessione: ' + FornitoriBean[I].IDSessione);
MM1.Lines.Add('CAP: ' + FornitoriBean[I].cap);
MM1.Lines.Add('CODICE: ' + FornitoriBean[I].codice);
MM1.Lines.Add('CODICE INTERNO: ' +
FornitoriBean[I].codiceInternoGrossista);
MM1.Lines.Add('Nodo Principale: ' +
FornitoriBean[I].indirizzoNodoPrincipale);
MM1.Lines.Add('Servizzi');
for B:=0 to High(FornitoriBean[I].arrayServiziAttivi) do
begin
MM1.Lines.Add(IntToStr(B)+' - ' +
FornitoriBean[I].arrayServiziAttivi[B]);
end;
MM1.Lines.Add('');
end;
end;

FreeAndNil(LogIn);
MM1.Update;

end;

Questa procedura funziona benissimo !!!

L'ID di sessione 'e salvato in SessionID

Qui la procedura per richiedere il documento elettronico ....

procedure TFRL.RichiediDocumento;
var RInDocumento : RichiestaDocumentoInputBean; // nel file importato da
wsdl importer
ROutDocumento : RichiestaDocumentoOutputBean;
DT : TXSDateTime;

begin
MM1.Lines.Add('');
MM1.Lines.Add('Bolla Elettronica');
MM1.Lines.Add('');

RInDocumento:=RichiestaDocumentoInputBean.Create;
RInDocumento.dataDocumento:=TXSDateTime.Create;
// RInDocumento.dataDocumento.AsDateTime:=StrToDate('02/05/2013/');
// RInDocumento.numeroDocumento:=''; // credo sia il numero di bolla ....
ma non ne sono certo !!
RInDocumento.IDSessione:=SessionID; // ottenuto con la procedura sopra
indicata
RInDocumento.codiceFornitore:='Pippo'; // In realta' e' il nome del
fornitore del servizio
DT:=TXSDateTime.Create;
DT.AsDateTime :=Date;
RInDocumento.dataDocumento:=DT;
RInDocumento.numeroDocumento:=''; // Numero del documento, ma puo' essere
null

RInDocumento.descrizioneArticoli:=True;
RInDocumento.dataContenitori:=True;
RInDocumento.siglaDocumento:=''; // anche questo come il precedente
RInDocumento.tipoDocumento:=1;
ROutDocumento:=(HTDoc as
farmaclick2005001).FCKRichiestaDocumento(RInDocumento);
MM1.Lines.Add('Esito Servizio: ' + IntToStr(ROutDocumento.esitoServizio));
// Restituisce SEMPRE errore 10, ovvero errore interno server farmaclick
RInDocumento.dataDocumento.Free;
RInDocumento.dataDocumento:=nil;
FreeAndNil(RInDocumento);
// DT.Free // qui mi da un errore ... scusate .... non lo scritto !!!!
If Assigned(DT) then DT:=nil; // e' corretto fare cosi' ???
end;

In pratica non invia neanche la richiesta al server.

Ovviamente ho cercato lumi al servizio assistenza del "fornitore" il quale
mi ha risposto che non conoscono i formati wsdl e non sanno come vanno
configurati (sempre che non sia una risposta cortese per evitare di dirmi
.... non romprere !!!!).

Sempre in delphi xe 2.

qualche suggerimento ???

Grazie

Ciao

Daniele




Emanuele Desideri

unread,
May 9, 2013, 5:14:19 AM5/9/13
to
Daniele ha detto questo giovedᅵ :
> Ciao a tutti,

> qualche suggerimento ???
>
> Grazie
>
> Ciao
>
> Daniele

Ciao Daniele,
mi ᅵ sembrato di vedere nella documentazione che esiste una funzione di
test. L'hai provata?
Eventualmente hai provato a contattare Infarma?
Inoltre ti consiglio di dare un'occhiata qui (pag.10)
http://www.farmaclick.it/wsite/FARMACLICK/archive/SpecificheAPI2005/DocInterInfar.pdf
non so se ᅵ un'informazione ancora valida, ma forse vale la pena
verificare.
Un saluto

--
Emanuele Desideri


Daniele

unread,
May 9, 2013, 8:14:46 AM5/9/13
to
Ciao,

> mi ᅵ sembrato di vedere nella documentazione che esiste una funzione di
> test. L'hai provata?
Nessuno con cui si lavora ha implementato quella funzione .....

> Eventualmente hai provato a contattare Infarma?
Si, dopo aver contattato un numero 899 e rimasto in linea 10 minuti mi hanno
detto che per delphi non hanno esempi da dare.

> Inoltre ti consiglio di dare un'occhiata qui (pag.10)
> http://www.farmaclick.it/wsite/FARMACLICK/archive/SpecificheAPI2005/DocInterInfar.pdf
> non so se ᅵ un'informazione ancora valida, ma forse vale la pena
> verificare.
Tutto gia' noto !!!
Il problema e' come passare i parametri e come interpretare il codice di
errore.
Cosa significa errore interno???
Se passava errore 11, allora sapevo che i parametri erano sbagliati!!!!!
Ma errore 10 significa tutto e niente (detto da loro).

Continuo a testare con altri servizi !!!

Grazie

Ciao

Daniele

0 new messages