pai cu asta ne framintam de atita timp, sa trimitem si sa primim facturile la ANAF
recunosc ca si eu m-am dezmeticit mai greu dar cu ajutorul lui Eugen si a materialelor postate aici am ajuns la un final
iti pun aici procedura ce o folosesc in conversatiile cu ANAF-ul
ar trebui sa te prinizi usor cum se face
spor!
Code: Select all
FUNCTION Anaf_eFact
LPARAMETERS cOpr,sSend
LOCAL loHTTP, lcServer, cRaspuns
lcTipHTTP='MsXml2.serverXMLHTTP.6.0'
Try
loHTTP = CreateObject(lcTipHTTP)
Catch
?? CHR(7)
cRaspuns='.F. Probleme cu '+lcTipHTTP
RETURN cRaspuns
Endtry
cSPV=UPPER(oEfact.SPV) && test/prod
cRaspuns='.F. lipsa cOpr'
DO CASE
CASE cOpr='FactIncarc'
cCui=oEfact.CodFiscal
cBear=oEfact.CodBear
IF cSPV='TEST'
cUrl="https://api.anaf.ro/test/FCTEL/rest/upload?standard=UBL&cif="+cCui
ELSE
cUrl="https://api.anaf.ro/prod/FCTEL/rest/upload?standard=UBL&cif="+cCui
ENDIF
=loHTTP.Open("POST",cUrl,.F.)
=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
=loHTTP.SetRequestHeader("content-type", "application/xml")
=loHTTP.Send(sSend)
iDoW=0
DO WHILE loHTTP.ReadyState!=4
WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
iDoW=iDoW+1
IF iDoW>15
EXIT
ENDIF
ENDDO
IF iDoW<=15
cRaspuns=loHTTP.ResponseText+CHR(13)+CHR(10)+ ;
'Body'+CHR(13)+CHR(10)+TRANSFORM(loHTTP.ResponseBody)
=STRTOFILE(loHTTP.ResponseBody,'zz_FactIncarcBody.txt')
ELSE
cRaspuns='.F. Probleme raspuns ANAF [FactIncarc]'
ENDIF
CASE cOpr='FactDescarc'
iDsc=sSend && id descarcare
cBear=oEfact.CodBear
IF cSPV='TEST'
cUrl="https://api.anaf.ro/test/FCTEL/rest/descarcare?id="+iDsc
ELSE
cUrl="https://api.anaf.ro/prod/FCTEL/rest/descarcare?id="+iDsc
ENDIF
=loHTTP.Open("GET",cUrl,.F.)
=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
=loHTTP.Send()
iDoW=0
DO WHILE loHTTP.ReadyState!=4
WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
iDoW=iDoW+1
IF iDoW>15
EXIT
ENDIF
ENDDO
IF iDoW<=15
=loHTTP.GetAllResponseHeaders()
cRaspuns=loHTTP.ResponseBody
ELSE
cRaspuns='.F. Probleme raspuns ANAF [FactDescarc]'
ENDIF
CASE cOpr='FactStare'
iInc=sSend && id incarcare
cBear=oEfact.CodBear
IF cSPV='TEST'
cUrl="https://api.anaf.ro/test/FCTEL/rest/stareMesaj?id_incarcare="+iInc
ELSE
cUrl="https://api.anaf.ro/prod/FCTEL/rest/stareMesaj?id_incarcare="+iInc
ENDIF
=loHTTP.Open("GET",cUrl,.F.)
=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
=loHTTP.Send()
iDoW=0
DO WHILE loHTTP.ReadyState!=4
WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
iDoW=iDoW+1
IF iDoW>15
EXIT
ENDIF
ENDDO
IF iDoW<=15
=loHTTP.GetAllResponseHeaders()
cRaspuns=loHTTP.ResponseBody
ELSE
cRaspuns='.F. Probleme raspuns ANAF [FactStare]'
ENDIF
CASE cOpr='ListaMesaje'
cCui=oEfact.CodFiscal
cBear=oEfact.CodBear
cZile=ALLTRIM(sSend)
IF cSPV='TEST'
cUrl="https://api.anaf.ro/test/FCTEL/rest/listaMesajeFactura?zile="+cZile+"&cif="+cCui
ELSE
cUrl="https://api.anaf.ro/prod/FCTEL/rest/listaMesajeFactura?zile="+cZile+"&cif="+cCui
ENDIF
=loHTTP.Open("GET",cUrl,.F.)
=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
=loHTTP.SetRequestHeader("Cache-Control", "no-cache")
=loHTTP.SetRequestHeader("Cache-Control", "max-age=0")
=loHTTP.Send()
iDoW=0
DO WHILE loHTTP.ReadyState!=4
WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
iDoW=iDoW+1
IF iDoW>15
EXIT
ENDIF
ENDDO
cRaspuns=IIF(iDoW<=15,loHTTP.ResponseText,'.F. Probleme raspuns ANAF [ListaMesaje]')
CASE cOpr='Validare'
cUrl='https://webservicesp.anaf.ro/prod/FCTEL/rest/validare/FACT1'
oTipAct=loHTTP.Open("POST", cUrl, .F.)
oTipCon=loHTTP.SetRequestHeader("content-type", "text/plain")
cTipRsp=loHTTP.Send(sSend)
iDoW=0
DO WHILE loHTTP.ReadyState!=4
WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
iDoW=iDoW+1
IF iDoW>15
EXIT
ENDIF
ENDDO
cRaspuns=IIF(iDoW<=15,loHTTP.ResponseText,'.F. Probleme raspuns ANAF [Validare]')
CASE cOpr='XmlToPdf'
cUrl='https://webservicesp.anaf.ro/prod/FCTEL/rest/transformare/FACT1/DA'
oTipAct=loHTTP.Open("POST", cUrl, .F.)
oTipCon=loHTTP.SetRequestHeader("content-type", "text/plain")
cTipRsp=loHTTP.Send(sSend)
iDoW=0
DO WHILE loHTTP.ReadyState!=4
WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
iDoW=iDoW+1
IF iDoW>15
EXIT
ENDIF
ENDDO
IF iDoW<=15
=loHTTP.GetAllResponseHeaders()
cRaspuns=loHTTP.ResponseBody
ELSE
cRaspuns='.F. Probleme raspuns ANAF [XmlToPdf]'
ENDIF
OTHERWISE
* nimic
ENDCASE
RETURN cRaspuns
ENDFUNC