Verificarile de partener nu mai depind exclusiv de raspunsul ANAF: se citeste intai cache-ul din ISTORIC_CODURI_FISCALE (mutat in CONTAFIN_ORACLE), cu provenienta afisata pe ecrane (sursa / data_sursa) si cu plasa de siguranta cand ANAF tace. Ordinea cache/ANAF e configurabila; cache-ul expira. - programe/validare.prg: verificare single si pe loturi peste cache, contract 404 separat de caderea de serviciu, expirarea cache-ului, corectii la verdictul pe firma si la etichetarea CACHE_INDISP. - programe/ocautare.prg: plasa de siguranta si banda de provenienta la cautarea de partener. - programe/oproceduri_comune.prg: VERIFICA_RTVAI_DATA citeste si cache-ul. - clase/overificari.vc2: propagarea provenientei in interfata. - utile/Teste/: harness-uri de testare headless - echivalenta cache/ANAF pe 200 de coduri reale, marginile pe inactiv si TVA la incasare, mock batch ANAF, baseline D394 si sondele de diagnostic ANAF. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JCzVWfqscv1xyo5uvJiWiW
104 lines
4.2 KiB
Plaintext
104 lines
4.2 KiB
Plaintext
* sonda_anaf_inline.prg
|
|
* Diagnostic (NU repara nimic): PACK_PARTENERI e VALID pe MARIUSM_AUTO, cu semnatura
|
|
* SAVE_ISTORIC_COD_FISCAL identica (27 parametri, aceeasi ordine/tip) cu apelul din
|
|
* SalveazaIstoricDinCursor (validare.prg:2639-2642) - vezi sonda_pack_parteneri.txt.
|
|
* Ipoteza PACK_PARTENERI INVALID e infirmata. Acest script REPLICA inline corpul lui
|
|
* ANAF_VerificaCuiSingle (validare.prg:1640), FARA sa modifice validare.prg, cu
|
|
* Try/Catch separat pe fiecare din cele trei sub-apeluri (ParseJsonANAFv8,
|
|
* SalveazaIstoricDinCursor, ANAF_VerdictDinCursor), ca sa vedem exact care arunca.
|
|
*
|
|
* Rulare headless:
|
|
* & "C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe" -A -T ;
|
|
* "D:\ROA\ROACONT\COMUN\utile\Teste\partener_anaf\sonda_anaf_inline.prg"
|
|
* Rezultatul se scrie in %TEMP%\sonda_anaf_inline.txt
|
|
|
|
PUBLIC gcLogFile
|
|
gcLogFile = ADDBS(SYS(2023)) + 'sonda_anaf_inline.txt'
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcLogFile)
|
|
|
|
ON ERROR DO SondaErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
DO D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
|
IF gnHandle <= 0
|
|
DO SondaLog WITH 'EROARE: conectare Oracle esuata, gnHandle=' + TRANSFORM(gnHandle)
|
|
QUIT
|
|
ENDIF
|
|
DO SondaLog WITH 'mediu OK, gcS=' + gcS
|
|
DO SondaLog WITH 'TYPE(gnIdUtil)=' + TYPE('gnIdUtil') + ' gnIdUtil=' + TRANSFORM(gnIdUtil)
|
|
|
|
LOCAL loVerifANAF, loHttpG, loEx As Exception
|
|
LOCAL lcJsonStringG, lcAliasG, lnCuiCautatG, ldDataG
|
|
LOCAL llNegasitG, lcClasaEsecG, loResultG
|
|
|
|
lcAliasG = 'crsANAFSingleTemp'
|
|
lnCuiCautatG = 1879855
|
|
ldDataG = DATE()
|
|
llNegasitG = .F.
|
|
lcClasaEsecG = ''
|
|
loResultG = .NULL.
|
|
lcJsonStringG = ''
|
|
|
|
loVerifANAF = CREATEOBJECT('VerificareANAF')
|
|
DO SondaLog WITH 'PAS G Createobject(VerificareANAF): OK'
|
|
|
|
TRY
|
|
loHttpG = ANAF_CreeazaCerereANAF(m.lnCuiCautatG, m.ldDataG, .F.)
|
|
lcJsonStringG = ALLTRIM(loHttpG.responseText)
|
|
DO SondaLog WITH 'PAS G ANAF_CreeazaCerereANAF: OK, Status=' + TRANSFORM(loHttpG.Status) + ' len(json)=' + TRANSFORM(LEN(m.lcJsonStringG))
|
|
CATCH TO loEx
|
|
DO SondaLog WITH 'PAS G ANAF_CreeazaCerereANAF: EXCEPTIE ' + loEx.Message + ' [' + loEx.Procedure + ':' + TRANSFORM(loEx.LineNo) + ']'
|
|
ENDTRY
|
|
|
|
IF !EMPTY(m.lcJsonStringG) AND LEFT(m.lcJsonStringG, 1) = '{'
|
|
|
|
USE IN (SELECT(m.lcAliasG))
|
|
|
|
TRY
|
|
loVerifANAF.ParseJsonANAFv8(nfjsonread(m.lcJsonStringG), m.lcAliasG)
|
|
DO SondaLog WITH 'PAS G ParseJsonANAFv8: OK, alias deschis=' + TRANSFORM(USED(m.lcAliasG)) + ' RECCOUNT=' + IIF(USED(m.lcAliasG), TRANSFORM(RECCOUNT(m.lcAliasG)), '-')
|
|
CATCH TO loEx
|
|
DO SondaLog WITH 'PAS G ParseJsonANAFv8: EXCEPTIE ' + loEx.Message + ' [' + loEx.Procedure + ':' + TRANSFORM(loEx.LineNo) + ']'
|
|
ENDTRY
|
|
|
|
TRY
|
|
loVerifANAF.SalveazaIstoricDinCursor(m.lcAliasG, gnIdUtil)
|
|
DO SondaLog WITH 'PAS G SalveazaIstoricDinCursor: OK, alias deschis=' + TRANSFORM(USED(m.lcAliasG)) + ' RECCOUNT=' + IIF(USED(m.lcAliasG), TRANSFORM(RECCOUNT(m.lcAliasG)), '-')
|
|
IF USED(m.lcAliasG)
|
|
LOCAL lnSelSaveG
|
|
lnSelSaveG = SELECT()
|
|
SELECT (m.lcAliasG)
|
|
DO SondaLog WITH 'PAS G dupa Salveaza - pozitie cursor: RECNO=' + TRANSFORM(RECNO()) + ' EOF=' + TRANSFORM(EOF()) + ' denumire=[' + NVL(denumire, '<NULL>') + '] cui=' + TRANSFORM(NVL(cui, -1))
|
|
SELECT (m.lnSelSaveG)
|
|
ENDIF
|
|
CATCH TO loEx
|
|
DO SondaLog WITH 'PAS G SalveazaIstoricDinCursor: EXCEPTIE ' + loEx.Message + ' [' + loEx.Procedure + ':' + TRANSFORM(loEx.LineNo) + ']'
|
|
ENDTRY
|
|
|
|
TRY
|
|
loResultG = ANAF_VerdictDinCursor(m.lcAliasG, m.lnCuiCautatG, @llNegasitG, @lcClasaEsecG)
|
|
DO SondaLog WITH 'PAS G ANAF_VerdictDinCursor: OK, VARTYPE(loResultG)=' + VARTYPE(loResultG) + ' tlNegasit=' + TRANSFORM(llNegasitG) + ' tcClasaEsec=' + m.lcClasaEsecG
|
|
CATCH TO loEx
|
|
DO SondaLog WITH 'PAS G ANAF_VerdictDinCursor: EXCEPTIE ' + loEx.Message + ' [' + loEx.Procedure + ':' + TRANSFORM(loEx.LineNo) + ']'
|
|
ENDTRY
|
|
ELSE
|
|
DO SondaLog WITH 'PAS G: raspuns gol sau nu incepe cu {, sarim parsarea'
|
|
ENDIF
|
|
|
|
DO SondaLog WITH 'REZULTAT: TERMINAT ' + TTOC(DATETIME())
|
|
QUIT
|
|
|
|
PROCEDURE SondaErr
|
|
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
|
DO SondaLog WITH 'ON ERROR ' + TRANSFORM(tnErr) + ' [' + tcProg + ':' + TRANSFORM(tnLine) + '] ' + tcMsg
|
|
ENDPROC
|
|
|
|
PROCEDURE SondaLog
|
|
LPARAMETERS tcMsg
|
|
LOCAL lcL
|
|
lcL = FILETOSTR(gcLogFile)
|
|
STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcLogFile)
|
|
ENDPROC
|