Cache ANAF pe ISTORIC_CODURI_FISCALE: verificare din memorie, plasa la tacere ANAF
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
This commit is contained in:
103
utile/Teste/partener_anaf/sonda_anaf_inline.prg
Normal file
103
utile/Teste/partener_anaf/sonda_anaf_inline.prg
Normal file
@@ -0,0 +1,103 @@
|
||||
* 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
|
||||
149
utile/Teste/partener_anaf/sonda_anaf_single.prg
Normal file
149
utile/Teste/partener_anaf/sonda_anaf_single.prg
Normal file
@@ -0,0 +1,149 @@
|
||||
* sonda_anaf_single.prg
|
||||
* Diagnostic (NU repara nimic): pe schema MARIUSM_AUTO, ecranul de cautare partener arata
|
||||
* pentru toate codurile fiscale banda "ANAF nu a raspuns - verificare sarita"
|
||||
* (COMUN\programe\ocautare.prg:801), desi ANAF raspunde OK 200 la curl direct pe aceeasi masina.
|
||||
* Scopul scriptului: izoleaza pasul care arunca exceptie in ANAF_VerificaCuiSingle /
|
||||
* ANAF_CreeazaCerereANAF (validare.prg), pas cu pas, cu Try/Catch separat pe fiecare bucata.
|
||||
*
|
||||
* Rulare headless (nu tine VFP IDE sau roacont.exe deschis):
|
||||
* & "C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe" -A -T ;
|
||||
* "D:\ROA\ROACONT\COMUN\utile\Teste\partener_anaf\sonda_anaf_single.prg"
|
||||
* Rezultatul se scrie in %TEMP%\sonda_anaf_single.txt
|
||||
|
||||
PUBLIC gcLogFile
|
||||
gcLogFile = ADDBS(SYS(2023)) + 'sonda_anaf_single.txt'
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcLogFile)
|
||||
DO SondaLog WITH 'SET(SAFETY)=' + SET('SAFETY') + ' SET(RESOURCE)=' + SET('RESOURCE')
|
||||
|
||||
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)
|
||||
DO SondaLog WITH 'REZULTAT: NEDETERMINAT'
|
||||
QUIT
|
||||
ENDIF
|
||||
DO SondaLog WITH 'mediu OK, gnAn=' + TRANSFORM(gnAn) + ' luna=' + TRANSFORM(gnLuna) + ' gcS=' + gcS
|
||||
|
||||
* ===== pas 0: instantiere VerificareANAF, ca in ANAF_VerificaCuiSingle - incarca =====
|
||||
* ===== nfjsonread.prg / nfjsoncreate.prg ca proceduri (VerificareANAF.Init) =====
|
||||
LOCAL loVerifANAF, loEx1 As Exception
|
||||
TRY
|
||||
loVerifANAF = CREATEOBJECT('VerificareANAF')
|
||||
DO SondaLog WITH 'PAS0 CREATEOBJECT(VerificareANAF): OK, nfjsonread/nfjsoncreate incarcate'
|
||||
CATCH TO loEx1
|
||||
DO SondaLog WITH 'PAS0 CREATEOBJECT(VerificareANAF): EXCEPTIE ' + loEx1.Message + ' [' + loEx1.Procedure + ':' + TRANSFORM(loEx1.LineNo) + ']'
|
||||
ENDTRY
|
||||
|
||||
* ===== pas A: doar Createobject('winHTTP.winHTTPrequest.5.1') =====
|
||||
LOCAL loHttpA, loEx2 As Exception
|
||||
TRY
|
||||
loHttpA = CREATEOBJECT('winHTTP.winHTTPrequest.5.1')
|
||||
DO SondaLog WITH 'PAS A winHTTP.winHTTPrequest.5.1: OK, VARTYPE=' + VARTYPE(loHttpA)
|
||||
CATCH TO loEx2
|
||||
DO SondaLog WITH 'PAS A winHTTP.winHTTPrequest.5.1: EXCEPTIE ' + loEx2.Message + ' [' + loEx2.Procedure + ':' + TRANSFORM(loEx2.LineNo) + ']'
|
||||
ENDTRY
|
||||
|
||||
* ===== pas B: nfjsoncreate pe un array cu un obiect (cui + data), ca in ANAF_CreeazaCerereANAF =====
|
||||
LOCAL loColB As "empty", laCoduriB[1], lcSendB, loEx3 As Exception
|
||||
TRY
|
||||
loColB = CREATEOBJECT('empty')
|
||||
ADDPROPERTY(loColB, 'cui', 1879855)
|
||||
ADDPROPERTY(loColB, 'data', '2026-08-01')
|
||||
laCoduriB[1] = loColB
|
||||
lcSendB = nfjsoncreate(@laCoduriB)
|
||||
DO SondaLog WITH 'PAS B nfjsoncreate: OK, rezultat=' + TRANSFORM(lcSendB)
|
||||
CATCH TO loEx3
|
||||
DO SondaLog WITH 'PAS B nfjsoncreate: EXCEPTIE ' + loEx3.Message + ' [' + loEx3.Procedure + ':' + TRANSFORM(loEx3.LineNo) + ']'
|
||||
ENDTRY
|
||||
|
||||
* ===== pas C: ANAF_CreeazaCerereANAF(1879855, Date(), .F.) direct, sincron =====
|
||||
LOCAL loHttpC, loEx4 As Exception
|
||||
TRY
|
||||
loHttpC = ANAF_CreeazaCerereANAF(1879855, DATE(), .F.)
|
||||
IF VARTYPE(loHttpC) = 'O'
|
||||
DO SondaLog WITH 'PAS C ANAF_CreeazaCerereANAF: OK, Status=' + TRANSFORM(loHttpC.Status) + ' responseText(200)=' + LEFT(ALLTRIM(loHttpC.responseText), 200)
|
||||
ELSE
|
||||
DO SondaLog WITH 'PAS C ANAF_CreeazaCerereANAF: OK dar VARTYPE=' + VARTYPE(loHttpC) + ' (nu e obiect)'
|
||||
ENDIF
|
||||
CATCH TO loEx4
|
||||
DO SondaLog WITH 'PAS C ANAF_CreeazaCerereANAF: EXCEPTIE ' + loEx4.Message + ' [' + loEx4.Procedure + ':' + TRANSFORM(loEx4.LineNo) + ']'
|
||||
ENDTRY
|
||||
|
||||
* ===== pas E: nfjsonread + ParseJsonANAFv8 direct pe raspunsul de la pasul C, izolat =====
|
||||
LOCAL loParsedE, loEx5 As Exception
|
||||
IF VARTYPE(loHttpC) = 'O'
|
||||
TRY
|
||||
loParsedE = nfjsonread(ALLTRIM(loHttpC.responseText))
|
||||
DO SondaLog WITH 'PAS E nfjsonread: OK, TYPE=' + TYPE('loParsedE') + ' PEMSTATUS(found_vfpsafe_)=' + TRANSFORM(PEMSTATUS(loParsedE, 'found_vfpsafe_', 5))
|
||||
loVerifANAF.ParseJsonANAFv8(loParsedE, 'crsDiagE')
|
||||
DO SondaLog WITH 'PAS E ParseJsonANAFv8: OK, RECCOUNT(crsDiagE)=' + TRANSFORM(RECCOUNT('crsDiagE'))
|
||||
IF USED('crsDiagE') AND RECCOUNT('crsDiagE') > 0
|
||||
SELECT crsDiagE
|
||||
GO TOP
|
||||
DO SondaLog WITH 'PAS E primul rand: cui=' + TRANSFORM(NVL(cui, 0)) + ' denumire=' + NVL(denumire, '')
|
||||
ENDIF
|
||||
CATCH TO loEx5
|
||||
DO SondaLog WITH 'PAS E nfjsonread/ParseJsonANAFv8: EXCEPTIE ' + loEx5.Message + ' [' + loEx5.Procedure + ':' + TRANSFORM(loEx5.LineNo) + ']'
|
||||
ENDTRY
|
||||
ELSE
|
||||
DO SondaLog WITH 'PAS E: sarit, loHttpC nu e obiect (PAS C a esuat)'
|
||||
ENDIF
|
||||
|
||||
* ===== pas F: exact linia "Use In (Select(alias))" din ANAF_VerificaCuiSingle, pe un alias =====
|
||||
* ===== care NU e deschis (ca la primul apel din sesiune) =====
|
||||
LOCAL lcAliasF, lnSelF, loEx6 As Exception
|
||||
lcAliasF = "crsANAFSingleTemp"
|
||||
lnSelF = SELECT(m.lcAliasF)
|
||||
DO SondaLog WITH 'PAS F SELECT(' + m.lcAliasF + ')=' + TRANSFORM(lnSelF) + ' inainte de orice Use'
|
||||
TRY
|
||||
Use In (SELECT(m.lcAliasF))
|
||||
DO SondaLog WITH 'PAS F Use In (Select(alias)) pe alias neschis: OK'
|
||||
CATCH TO loEx6
|
||||
DO SondaLog WITH 'PAS F Use In (Select(alias)) pe alias neschis: EXCEPTIE ' + loEx6.Message + ' [' + loEx6.Procedure + ':' + TRANSFORM(loEx6.LineNo) + ']'
|
||||
ENDTRY
|
||||
|
||||
* ===== pas D: fluxul real, ANAF_VerificaCuiSingle, pentru cele 3 coduri fiscale =====
|
||||
LOCAL lcCui, loResult, llNegasit, lcClasaEsec, lnI
|
||||
LOCAL ARRAY laCui[3]
|
||||
laCui[1] = '1879855'
|
||||
laCui[2] = '12751583'
|
||||
laCui[3] = '11980333'
|
||||
FOR lnI = 1 TO 3
|
||||
lcCui = laCui[lnI]
|
||||
llNegasit = .F.
|
||||
lcClasaEsec = ''
|
||||
loResult = ANAF_VerificaCuiSingle(m.lcCui, DATE(), @llNegasit, @lcClasaEsec)
|
||||
IF VARTYPE(loResult) = 'O'
|
||||
DO SondaLog WITH 'PAS D CUI=' + m.lcCui + ' -> OBIECT, denumire=' + NVL(loResult.denumire, '') + ' tlNegasit=' + TRANSFORM(llNegasit) + ' tcClasaEsec=' + m.lcClasaEsec
|
||||
ELSE
|
||||
DO SondaLog WITH 'PAS D CUI=' + m.lcCui + ' -> VARTYPE=' + VARTYPE(loResult) + ' tlNegasit=' + TRANSFORM(llNegasit) + ' tcClasaEsec=' + m.lcClasaEsec
|
||||
ENDIF
|
||||
IF USED('crsANAFSingleTemp')
|
||||
LOCAL lnSelSaveD
|
||||
lnSelSaveD = SELECT()
|
||||
SELECT crsANAFSingleTemp
|
||||
DO SondaLog WITH 'PAS D dupa CUI=' + m.lcCui + ': crsANAFSingleTemp deschis, RECCOUNT=' + TRANSFORM(RECCOUNT()) + ' RECNO=' + TRANSFORM(RECNO()) + ' EOF=' + TRANSFORM(EOF()) + ' denumire=[' + NVL(denumire, '<NULL>') + ']'
|
||||
SELECT (m.lnSelSaveD)
|
||||
ELSE
|
||||
DO SondaLog WITH 'PAS D dupa CUI=' + m.lcCui + ': crsANAFSingleTemp NU e deschis'
|
||||
ENDIF
|
||||
ENDFOR
|
||||
|
||||
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
|
||||
103
utile/Teste/partener_anaf/sonda_pack_parteneri.prg
Normal file
103
utile/Teste/partener_anaf/sonda_pack_parteneri.prg
Normal file
@@ -0,0 +1,103 @@
|
||||
* sonda_pack_parteneri.prg
|
||||
* Diagnostic (NU repara nimic, doar SELECT-uri): verifica pe schema MARIUSM_AUTO daca
|
||||
* PACK_PARTENERI e INVALID sau are alta semnatura pentru SAVE_ISTORIC_COD_FISCAL, in
|
||||
* contextul mutarii ISTORIC_CODURI_FISCALE si recompilarii pachetului din 31.07/01.08.2026
|
||||
* (vezi D:\ROA\DATABASE\SCRIPTURI_CLAR\2026\08\ff_2026_08_01_02_COMUN_PACK_PARTENERI.sql).
|
||||
* Foloseste goExecutor (aceeasi conexiune Oracle ca restul harnessului), doar SELECT-uri
|
||||
* pe dictionarul de date (all_objects/all_arguments/all_errors/all_tables) - nimic scris.
|
||||
*
|
||||
* Rulare headless:
|
||||
* & "C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe" -A -T ;
|
||||
* "D:\ROA\ROACONT\COMUN\utile\Teste\partener_anaf\sonda_pack_parteneri.prg"
|
||||
* Rezultatul se scrie in %TEMP%\sonda_pack_parteneri.txt
|
||||
|
||||
PUBLIC gcLogFile
|
||||
gcLogFile = ADDBS(SYS(2023)) + 'sonda_pack_parteneri.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
|
||||
|
||||
* ===== a) obiecte INVALID pe MARIUSM_AUTO =====
|
||||
LOCAL llSucces
|
||||
llSucces = goExecutor.oExecuta("SELECT object_name, object_type, status, last_ddl_time FROM all_objects WHERE owner = 'MARIUSM_AUTO' AND status <> 'VALID' ORDER BY object_type, object_name", "crsInvalid")
|
||||
IF m.llSucces
|
||||
SELECT crsInvalid
|
||||
DO SondaLog WITH 'a) obiecte INVALID pe MARIUSM_AUTO: RECCOUNT=' + TRANSFORM(RECCOUNT())
|
||||
SCAN
|
||||
DO SondaLog WITH ' ' + ALLTRIM(object_type) + ' ' + ALLTRIM(object_name) + ' status=' + ALLTRIM(status) + ' last_ddl=' + TTOC(last_ddl_time)
|
||||
ENDSCAN
|
||||
ELSE
|
||||
DO SondaLog WITH 'a) EROARE la interogarea all_objects (INVALID)'
|
||||
ENDIF
|
||||
|
||||
* ===== b) starea PACK_PARTENERI + semnatura SAVE_ISTORIC_COD_FISCAL =====
|
||||
llSucces = goExecutor.oExecuta("SELECT object_type, status, last_ddl_time FROM all_objects WHERE owner='MARIUSM_AUTO' AND object_name='PACK_PARTENERI'", "crsStare")
|
||||
IF m.llSucces
|
||||
SELECT crsStare
|
||||
DO SondaLog WITH 'b) PACK_PARTENERI RECCOUNT=' + TRANSFORM(RECCOUNT())
|
||||
SCAN
|
||||
DO SondaLog WITH ' ' + ALLTRIM(object_type) + ' status=' + ALLTRIM(status) + ' last_ddl=' + TTOC(last_ddl_time)
|
||||
ENDSCAN
|
||||
ELSE
|
||||
DO SondaLog WITH 'b) EROARE la interogarea all_objects (PACK_PARTENERI)'
|
||||
ENDIF
|
||||
|
||||
llSucces = goExecutor.oExecuta("SELECT argument_name, position, data_type FROM all_arguments WHERE owner='MARIUSM_AUTO' AND package_name='PACK_PARTENERI' AND object_name='SAVE_ISTORIC_COD_FISCAL' ORDER BY position", "crsArg")
|
||||
IF m.llSucces
|
||||
SELECT crsArg
|
||||
DO SondaLog WITH 'b) SAVE_ISTORIC_COD_FISCAL argumente: RECCOUNT=' + TRANSFORM(RECCOUNT())
|
||||
SCAN
|
||||
DO SondaLog WITH ' pos=' + TRANSFORM(position) + ' ' + NVL(argument_name, '<return>') + ' ' + ALLTRIM(data_type)
|
||||
ENDSCAN
|
||||
ELSE
|
||||
DO SondaLog WITH 'b) EROARE la interogarea all_arguments'
|
||||
ENDIF
|
||||
|
||||
* ===== c) erori de compilare, daca PACK_PARTENERI e INVALID =====
|
||||
llSucces = goExecutor.oExecuta("SELECT line, position, text FROM all_errors WHERE owner='MARIUSM_AUTO' AND name='PACK_PARTENERI' ORDER BY sequence", "crsErr")
|
||||
IF m.llSucces
|
||||
SELECT crsErr
|
||||
DO SondaLog WITH 'c) all_errors PACK_PARTENERI: RECCOUNT=' + TRANSFORM(RECCOUNT())
|
||||
SCAN
|
||||
DO SondaLog WITH ' linia ' + TRANSFORM(line) + ':' + TRANSFORM(position) + ' ' + ALLTRIM(text)
|
||||
ENDSCAN
|
||||
ELSE
|
||||
DO SondaLog WITH 'c) EROARE la interogarea all_errors'
|
||||
ENDIF
|
||||
|
||||
* ===== d) a ramas tabela locala ISTORIC_CODURI_FISCALE pe schema? =====
|
||||
llSucces = goExecutor.oExecuta("SELECT table_name FROM all_tables WHERE owner='MARIUSM_AUTO' AND table_name LIKE 'ISTORIC_CODURI_FISCALE%'", "crsTab")
|
||||
IF m.llSucces
|
||||
SELECT crsTab
|
||||
DO SondaLog WITH 'd) tabele ISTORIC_CODURI_FISCALE% pe MARIUSM_AUTO: RECCOUNT=' + TRANSFORM(RECCOUNT())
|
||||
SCAN
|
||||
DO SondaLog WITH ' ' + ALLTRIM(table_name)
|
||||
ENDSCAN
|
||||
ELSE
|
||||
DO SondaLog WITH 'd) EROARE la interogarea all_tables'
|
||||
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
|
||||
@@ -52,6 +52,13 @@
|
||||
* ANAF plus data verificarii. Scenariile 11-13 (VerificaDataDocument/VerificaCacheData/
|
||||
* VerificaDataFallback) acopera data documentului; mock_anaf_verificare.prg retine data primita
|
||||
* in gdANAFUltimaData (PUBLIC, declarata mai jos).
|
||||
*
|
||||
* S12 (contract-cache-anaf.md, 31.07.2026): scenariile cache-ului ANAF pe ISTORIC_CODURI_FISCALE
|
||||
* (plasa S9/ocautare.prg + helper-ele S3/validare.prg) - CUI-uri dedicate cu cifra de control CIF
|
||||
* valida (8000090/8000197/8000294/8000391/8000499, gnIdCacheA/B/C/D/F)
|
||||
* (gnIdCacheA/B/C/D/F), randuri de istoric inserate prin pack_parteneri.save_istoric_cod_fiscal
|
||||
* (InsereazaIstoricTest); interogarile pe ISTORIC_CODURI_FISCALE se numara cu dummyexecutoristorictest
|
||||
* (acelasi tipar ca dummyexecutorH2test), ca sa dovedeasca cand cache-ul e sarit sau folosit o singura data.
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
@@ -85,6 +92,21 @@ IF gnHandle <= 0
|
||||
ENDIF
|
||||
DO VpaLog WITH 'mediu OK, schema=' + gcS
|
||||
|
||||
*!* 01.08.2026 marius.mutu: watermark pe ID, o singura data la inceput - garda pt toate DELETE-urile din ISTORIC_CODURI_FISCALE de mai jos
|
||||
PUBLIC gnIdMaxIstoricV2UI
|
||||
gnIdMaxIstoricV2UI = 0
|
||||
IF goExecutor.oExecuta('SELECT NVL(MAX(ID),0) AS IDMAX FROM ISTORIC_CODURI_FISCALE', 'crsWmIstoricV2UI')
|
||||
SELECT crsWmIstoricV2UI
|
||||
GO TOP
|
||||
gnIdMaxIstoricV2UI = IDMAX
|
||||
USE IN (SELECT('crsWmIstoricV2UI'))
|
||||
ENDIF
|
||||
*!* 01.08.2026 marius.mutu: watermark invalid = SELECT esuat - avertisment explicit, stergerile se vor sari
|
||||
IF gnIdMaxIstoricV2UI <= 0
|
||||
DO VpaLog WITH 'ATENTIE: watermark invalid (0) - stergerile din ISTORIC_CODURI_FISCALE vor fi SARITE'
|
||||
ENDIF
|
||||
DO VpaLog WITH 'watermark ISTORIC_CODURI_FISCALE id_max=' + TRANSFORM(gnIdMaxIstoricV2UI)
|
||||
|
||||
*-- RE-TEST RUNDA 10: fix aplicat in ocautare.prg (guard '_BAZA' eliminat, NewObject pe _label
|
||||
*-- din _baza.vcx rezolvat pe SET PATH, cu fallback anaf_label) - FARA workaround de test, cale
|
||||
*-- reala (Activeaza se apeleaza natural, fara SET CLASSLIB manual).
|
||||
@@ -148,6 +170,7 @@ glMockSondaReusitaManual = .T.
|
||||
PUBLIC gnIdConcord, gnIdDiscord, gnIdPereche, gnIdNopereche, gnIdPersfiz, gnIdSpatiu, gnIdInactiv, gnIdInexistent
|
||||
PUBLIC gnIdCnpInv, gnIdCifInv, gnMockInputBox, gnMockInputCount, gcMockUltimPrompt, gcMockInputSecventa
|
||||
PUBLIC gnIdCadere, gnIdNenumeric
|
||||
PUBLIC gnIdCacheA, gnIdCacheB, gnIdCacheC, gnIdCacheD, gnIdCacheF
|
||||
gnMockInputBox = 1
|
||||
gnMockInputCount = 0
|
||||
gcMockUltimPrompt = ''
|
||||
@@ -308,6 +331,17 @@ TRY
|
||||
DO RuleazaIzolat WITH 'VerificaSondaReuseste'
|
||||
DO RuleazaIzolat WITH 'VerificaSondaExpira'
|
||||
|
||||
*=========================================================================
|
||||
* Scenariile S12 (contract-cache-anaf.md): cache-ul ANAF pe ISTORIC_CODURI_FISCALE, prin
|
||||
* plasa de siguranta din ocautare.prg (S9) si helper-ele din validare.prg (S3)
|
||||
*=========================================================================
|
||||
DO RuleazaIzolat WITH 'VerificaCacheIndispIstoricPopulat'
|
||||
DO RuleazaIzolat WITH 'VerificaCacheIndispIstoricGol'
|
||||
DO RuleazaIzolat WITH 'VerificaCacheIndispIstoricVechi'
|
||||
DO RuleazaIzolat WITH 'VerificaCodInexistentNuAtingeCache'
|
||||
DO RuleazaIzolat WITH 'VerificaSeTesteazaNuAtingeCache'
|
||||
DO RuleazaIzolat WITH 'VerificaOrdineCacheAnafSarit'
|
||||
|
||||
DO VpaLog WITH 'GATA - toate scenariile executate'
|
||||
DO HarnessStep WITH 4, 'toate scenariile executate'
|
||||
DO HarnessDone WITH 'done'
|
||||
@@ -325,12 +359,29 @@ QUIT
|
||||
PROCEDURE CurataDateTest
|
||||
*-- CORESP_TIP_PART are FK_CORESP_TIP_PART_001 catre NOM_PARTENERI - copilul se sterge inaintea
|
||||
*-- parintelui (ORA-02292), aceeasi lista de coduri in ambele instructiuni (lcCoduri).
|
||||
LOCAL lnOk, lnOkCoresp, lcCoduri
|
||||
lcCoduri = ['RO1112223','7654320','RO7654320','RO 7654320','9000004','9000012','9000039','1234567890128','1234567890123','1234567','RO9000055','TEST NENUMERIC OIL MARKET SRL']
|
||||
LOCAL lnOk, lnOkCoresp, lcCoduri, lnOkIstoric
|
||||
lcCoduri = ['RO1112223','7654320','RO7654320','RO 7654320','9000004','9000012','9000039','1234567890128','1234567890123','1234567','RO9000055','TEST NENUMERIC OIL MARKET SRL','8000090','8000197','8000294','8000391','8000499']
|
||||
lnOkCoresp = goExecutor.oExecuta([DELETE FROM CORESP_TIP_PART WHERE ID_PART IN (SELECT ID_PART FROM NOM_PARTENERI WHERE COD_FISCAL IN (] + m.lcCoduri + [))])
|
||||
lnOk = goExecutor.oExecuta([DELETE FROM NOM_PARTENERI WHERE COD_FISCAL IN (] + m.lcCoduri + [)])
|
||||
*-- S12: randuri de istoric ale scenariilor de cache (9000039 e reutilizat de scenariul 4, testul lui isi
|
||||
*-- insereaza propriul rand pt. CUI-ul existent gnIdInexistent) - plasa de siguranta, fiecare scenariu isi
|
||||
*-- sterge deja randul propriu la final, dar CurataDateTest acopera si opririle premature (CATCH/FINALLY).
|
||||
*!* 01.08.2026 marius.mutu: garda pe ID > watermark, prin StergeIstoricV2UI (nu SCHEMA_SURSA - stergea randuri de referinta proprii)
|
||||
lnOkIstoric = StergeIstoricV2UI("COD_FISCAL IN ('8000090','8000197','8000294','8000391','8000499','9000039')")
|
||||
DO VpaLog WITH 'CurataDateTest: sters coresp_tip_part=' + TRANSFORM(m.lnOkCoresp) + ' nom_parteneri=' + TRANSFORM(m.lnOk) + ' istoric_coduri_fiscale=' + TRANSFORM(m.lnOkIstoric)
|
||||
ENDPROC
|
||||
|
||||
*!* 01.08.2026 marius.mutu: helper unic pt DELETE-urile din ISTORIC_CODURI_FISCALE - garda watermark o singura data
|
||||
PROCEDURE StergeIstoricV2UI
|
||||
LPARAMETERS tcCondCod
|
||||
LOCAL lnOkD
|
||||
IF TYPE('gnIdMaxIstoricV2UI') <> 'N' OR gnIdMaxIstoricV2UI <= 0
|
||||
DO VpaLog WITH 'StergeIstoricV2UI: SARIT - watermark invalid, nu sterg nimic (' + m.tcCondCod + ')'
|
||||
RETURN 0
|
||||
ENDIF
|
||||
lnOkD = goExecutor.oExecuta("DELETE FROM ISTORIC_CODURI_FISCALE WHERE ID > " + TRANSFORM(gnIdMaxIstoricV2UI) + " AND " + m.tcCondCod)
|
||||
=goExecutor.oExecuta('COMMIT')
|
||||
DO VpaLog WITH 'CurataDateTest: sters coresp_tip_part=' + TRANSFORM(m.lnOkCoresp) + ' nom_parteneri=' + TRANSFORM(m.lnOk)
|
||||
RETURN lnOkD
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE CreeazaDateTest
|
||||
@@ -373,6 +424,22 @@ PROCEDURE CreeazaDateTest
|
||||
lcIns = [INSERT INTO NOM_PARTENERI (NUME,DENUMIRE,COD_FISCAL,STERS,ID_MOD,INACTIV,TIP_PERSOANA,INSTITUTIE_PUBLICA,ENTITATE_AFILIATA) VALUES ] + ;
|
||||
[('TEST ANAF NENUMERIC SRL','TEST ANAF NENUMERIC SRL','TEST NENUMERIC OIL MARKET SRL',0,0,0,1,0,0)]
|
||||
=goExecutor.oExecuta(m.lcIns)
|
||||
*-- S12: parteneri disposable pt. scenariile de cache (istoric ANAF pe ISTORIC_CODURI_FISCALE)
|
||||
lcIns = [INSERT INTO NOM_PARTENERI (NUME,DENUMIRE,COD_FISCAL,STERS,ID_MOD,INACTIV,TIP_PERSOANA,INSTITUTIE_PUBLICA,ENTITATE_AFILIATA) VALUES ] + ;
|
||||
[('TEST ANAF CACHE A SRL','TEST ANAF CACHE A SRL','8000090',0,0,0,1,0,0)]
|
||||
=goExecutor.oExecuta(m.lcIns)
|
||||
lcIns = [INSERT INTO NOM_PARTENERI (NUME,DENUMIRE,COD_FISCAL,STERS,ID_MOD,INACTIV,TIP_PERSOANA,INSTITUTIE_PUBLICA,ENTITATE_AFILIATA) VALUES ] + ;
|
||||
[('TEST ANAF CACHE B SRL','TEST ANAF CACHE B SRL','8000197',0,0,0,1,0,0)]
|
||||
=goExecutor.oExecuta(m.lcIns)
|
||||
lcIns = [INSERT INTO NOM_PARTENERI (NUME,DENUMIRE,COD_FISCAL,STERS,ID_MOD,INACTIV,TIP_PERSOANA,INSTITUTIE_PUBLICA,ENTITATE_AFILIATA) VALUES ] + ;
|
||||
[('TEST ANAF CACHE C SRL','TEST ANAF CACHE C SRL','8000294',0,0,0,1,0,0)]
|
||||
=goExecutor.oExecuta(m.lcIns)
|
||||
lcIns = [INSERT INTO NOM_PARTENERI (NUME,DENUMIRE,COD_FISCAL,STERS,ID_MOD,INACTIV,TIP_PERSOANA,INSTITUTIE_PUBLICA,ENTITATE_AFILIATA) VALUES ] + ;
|
||||
[('TEST ANAF CACHE D SRL','TEST ANAF CACHE D SRL','8000391',0,0,0,1,0,0)]
|
||||
=goExecutor.oExecuta(m.lcIns)
|
||||
lcIns = [INSERT INTO NOM_PARTENERI (NUME,DENUMIRE,COD_FISCAL,STERS,ID_MOD,INACTIV,TIP_PERSOANA,INSTITUTIE_PUBLICA,ENTITATE_AFILIATA) VALUES ] + ;
|
||||
[('TEST ANAF CACHE F SRL','TEST ANAF CACHE F SRL','8000499',0,0,0,1,0,0)]
|
||||
=goExecutor.oExecuta(m.lcIns)
|
||||
=goExecutor.oExecuta('COMMIT')
|
||||
|
||||
gnIdConcord = 0
|
||||
@@ -387,6 +454,11 @@ PROCEDURE CreeazaDateTest
|
||||
gnIdCifInv = 0
|
||||
gnIdCadere = 0
|
||||
gnIdNenumeric = 0
|
||||
gnIdCacheA = 0
|
||||
gnIdCacheB = 0
|
||||
gnIdCacheC = 0
|
||||
gnIdCacheD = 0
|
||||
gnIdCacheF = 0
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = 'RO 7654320'], @gnIdSpatiu)
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = 'RO1112223'], @gnIdConcord)
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = '7654320'], @gnIdDiscord)
|
||||
@@ -399,10 +471,17 @@ PROCEDURE CreeazaDateTest
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = '1234567'], @gnIdCifInv)
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = 'RO9000055'], @gnIdCadere)
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = 'TEST NENUMERIC OIL MARKET SRL'], @gnIdNenumeric)
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = '8000090'], @gnIdCacheA)
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = '8000197'], @gnIdCacheB)
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = '8000294'], @gnIdCacheC)
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = '8000391'], @gnIdCacheD)
|
||||
=goExecutor.oSelect2Value([SELECT ID_PART AS NR FROM NOM_PARTENERI WHERE COD_FISCAL = '8000499'], @gnIdCacheF)
|
||||
DO VpaLog WITH 'CreeazaDateTest: id-uri alocate concord=' + TRANSFORM(gnIdConcord) + ' discord=' + TRANSFORM(gnIdDiscord) + ;
|
||||
' pereche=' + TRANSFORM(gnIdPereche) + ' spatiu=' + TRANSFORM(gnIdSpatiu) + ;
|
||||
' nopereche=' + TRANSFORM(gnIdNopereche) + ' persfiz=' + TRANSFORM(gnIdPersfiz) + ;
|
||||
' cadere=' + TRANSFORM(gnIdCadere) + ' nenumeric=' + TRANSFORM(gnIdNenumeric)
|
||||
' cadere=' + TRANSFORM(gnIdCadere) + ' nenumeric=' + TRANSFORM(gnIdNenumeric) + ;
|
||||
' cacheA=' + TRANSFORM(gnIdCacheA) + ' cacheB=' + TRANSFORM(gnIdCacheB) + ' cacheC=' + TRANSFORM(gnIdCacheC) + ;
|
||||
' cacheD=' + TRANSFORM(gnIdCacheD) + ' cacheF=' + TRANSFORM(gnIdCacheF)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE PornesteCautare
|
||||
@@ -2217,6 +2296,428 @@ PROCEDURE VerificaComutareOptiune
|
||||
RELEASE goCacheANAF_Nivel
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE InsereazaIstoricTest
|
||||
*-- S12: insereaza un rand in ISTORIC_CODURI_FISCALE prin pack_parteneri.save_istoric_cod_fiscal
|
||||
*-- (26 parametri, acelasi apel ca in validare.prg), cu scpTVA activ din tdInceput - cel putin o
|
||||
*-- data de interval, altfel DATAORAV_ANAF ramane null si randul nu conteaza ca proaspat (contract
|
||||
*-- -cache-anaf.md 2.3). Fara CREATEOBJECT/ADDPROPERTY (doar variabile Private + goExecutor.oExecuta),
|
||||
*-- deci sigura de apelat dintr-o PROCEDURA (spre deosebire de capcana l). Intoarce .T./.F.
|
||||
LPARAMETERS tcCui, tcFirma, tdInceput
|
||||
PRIVATE pcCodFiscal, pcFirma, pcAdresa, pcJudet, pcRegCom, pcCodPostal, pcTelefon, pcFax, pcDataTvamfin, ;
|
||||
pnPlatitorTvaMfin, pcStare, pnPlatitorTvaVies, pnInterogareVies, pnIdUtil, ;
|
||||
pnInactiv, pnTvaIncasare, pnSplitTva, ;
|
||||
pdInceputScpTva, pdSfarsitScpTva, pdAnulImpScpTva, pdInceputTvaInc, pdSfarsitTvaInc, ;
|
||||
pdInactivare, pdReactivare, pdInceputSplitTva, pdAnulareSplitTva
|
||||
LOCAL lcSqlIstoric, llOk
|
||||
pcCodFiscal = m.tcCui
|
||||
pcFirma = m.tcFirma
|
||||
pcAdresa = ''
|
||||
pcJudet = ''
|
||||
pcRegCom = ''
|
||||
pcCodPostal = ''
|
||||
pcTelefon = ''
|
||||
pcFax = ''
|
||||
pcDataTvamfin = ''
|
||||
pnPlatitorTvaMfin = 0
|
||||
pcStare = ''
|
||||
pnPlatitorTvaVies = 0
|
||||
pnInterogareVies = 0
|
||||
pnIdUtil = 0
|
||||
pnInactiv = 0
|
||||
pnTvaIncasare = 0
|
||||
pnSplitTva = 0
|
||||
pdInceputScpTva = m.tdInceput
|
||||
pdSfarsitScpTva = {}
|
||||
pdAnulImpScpTva = {}
|
||||
pdInceputTvaInc = {}
|
||||
pdSfarsitTvaInc = {}
|
||||
pdInactivare = {}
|
||||
pdReactivare = {}
|
||||
pdInceputSplitTva = {}
|
||||
pdAnulareSplitTva = {}
|
||||
lcSqlIstoric = "begin pack_parteneri.save_istoric_cod_fiscal(?pcCodFiscal,?pcFirma,?pcAdresa,?pcJudet,?pcRegCom,?pcCodPostal,?pcTelefon,?pcFax,?pcDataTvamfin,?pnPlatitorTvaMfin,?pcStare," + ;
|
||||
"?pnPlatitorTvaVies,?pnInterogareVies,?pnIdUtil,?pnInactiv,?pnTvaIncasare,?pnSplitTva,?pdInceputScpTva,?pdSfarsitScpTva," + ;
|
||||
"?pdAnulImpScpTva,?pdInceputTvaInc,?pdSfarsitTvaInc,?pdInactivare,?pdReactivare,?pdInceputSplitTva,?pdAnulareSplitTva); end;"
|
||||
llOk = goExecutor.oExecuta(m.lcSqlIstoric)
|
||||
IF m.llOk
|
||||
=goExecutor.oExecuta('COMMIT')
|
||||
ENDIF
|
||||
RETURN m.llOk
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VerificaCacheIndispIstoricPopulat
|
||||
*-- S12 scenariile 1+6 (contract-cache-anaf.md, plasa S9): ANAF cazut + istoric proaspat pt.
|
||||
*-- acelasi CUI -> verdict citit din istoric, etichetat CACHE_INDISP, cu dDataSursa completat si
|
||||
*-- sufixul "ANAF indisponibil" pe banda; AL DOILEA apel (formular nou, acelasi CUI) vine din
|
||||
*-- goCacheANAF_Sesiune, FARA o a doua interogare pe ISTORIC_CODURI_FISCALE (contor prin dummy
|
||||
*-- executor, acelasi tipar ca H2/discriminatorul de documente, mai sus in fisier).
|
||||
LOCAL loFormP, loVerifP, lnOk, lcCapP, lnInainte, llInsP, loReal, loFormP2, loVerifP2, lnOk2, loDummy, loExcP2
|
||||
IF TYPE('goCacheANAF_Sesiune') = 'O'
|
||||
goCacheANAF_Sesiune = CREATEOBJECT('Collection')
|
||||
ENDIF
|
||||
llInsP = InsereazaIstoricTest('8000090', 'TEST S12 CACHE POPULAT SRL', {^2020-01-01})
|
||||
IF !m.llInsP
|
||||
DO VpaLog WITH 'FAIL cache-indisp-populat (S12/1): insert istoric esuat - ' + goExecutor.cEroare
|
||||
RETURN
|
||||
ENDIF
|
||||
ANAF_SeteazaStareServiciu('CAZUT', 'test S12/1')
|
||||
|
||||
lnOk = goExecutor.oExecute([SELECT DISTINCT DENUMIRE, NUME, COD_FISCAL, ID_PART, INACTIV FROM NOM_PARTENERI ] + ;
|
||||
[WHERE ID_PART = ] + TRANSFORM(gnIdCacheA), 'ctests12a')
|
||||
loFormP = CREATEOBJECT('cauta_alfa_form', 'ctests12a', '', 'Denumire,Nume,Cod fiscal,Id,Inactiv', ;
|
||||
'denumire,nume,cod_fiscal,id_part,inactiv', .F., '', 1, '', '', '', '')
|
||||
loFormP.crs_cursor = 'ctests12a'
|
||||
loFormP.lAles = .F.
|
||||
loVerifP = CREATEOBJECT('anaf_verif_cautare')
|
||||
ADDPROPERTY(loFormP, 'oVerifAlegere', loVerifP)
|
||||
loVerifP.Activeaza(loFormP)
|
||||
loFormP.WindowType = 0
|
||||
loFormP.Show()
|
||||
SELECT ctests12a
|
||||
GO TOP
|
||||
lnInainte = gnANAFCallCount
|
||||
loFormP._GRID1.AfterRowColChange(1)
|
||||
DO AsteaptaTimer WITH loVerifP
|
||||
lcCapP = ALLTRIM(loFormP.lb_anaf.Caption)
|
||||
|
||||
IF gnANAFCallCount = lnInainte AND VARTYPE(loVerifP.oStare) = 'O' AND loVerifP.oStare.cSursa == 'CACHE_INDISP' ;
|
||||
AND !EMPTY(loVerifP.oStare.dDataSursa) AND 'ANAF indisponibil' $ lcCapP AND 'date din' $ lcCapP
|
||||
DO VpaLog WITH 'PASS cache-indisp-populat (S12/1): ANAF cazut + istoric proaspat -> cSursa=CACHE_INDISP, dDataSursa=' + ;
|
||||
DTOC(loVerifP.oStare.dDataSursa) + ', banda=[' + lcCapP + '], 0 apeluri ANAF noi'
|
||||
ELSE
|
||||
DO VpaLog WITH 'FAIL cache-indisp-populat (S12/1): apeluri noi=' + TRANSFORM(gnANAFCallCount - lnInainte) + ;
|
||||
' oStare=' + TRANSFORM(VARTYPE(loVerifP.oStare)) + ' banda=[' + lcCapP + ']'
|
||||
ENDIF
|
||||
|
||||
*-- scenariul 6: al doilea apel, pe formular NOU, acelasi CUI - trebuie servit din goCacheANAF_Sesiune,
|
||||
*-- FARA o a doua interogare pe ISTORIC_CODURI_FISCALE.
|
||||
loReal = goExecutor
|
||||
loDummy = CREATEOBJECT('dummyexecutoristorictest')
|
||||
loDummy.oReal = loReal
|
||||
goExecutor = loDummy
|
||||
TRY
|
||||
lnOk2 = goExecutor.oExecute([SELECT DISTINCT DENUMIRE, NUME, COD_FISCAL, ID_PART, INACTIV FROM NOM_PARTENERI ] + ;
|
||||
[WHERE ID_PART = ] + TRANSFORM(gnIdCacheA), 'ctests12a2')
|
||||
loFormP2 = CREATEOBJECT('cauta_alfa_form', 'ctests12a2', '', 'Denumire,Nume,Cod fiscal,Id,Inactiv', ;
|
||||
'denumire,nume,cod_fiscal,id_part,inactiv', .F., '', 1, '', '', '', '')
|
||||
loFormP2.crs_cursor = 'ctests12a2'
|
||||
loFormP2.lAles = .F.
|
||||
loVerifP2 = CREATEOBJECT('anaf_verif_cautare')
|
||||
ADDPROPERTY(loFormP2, 'oVerifAlegere', loVerifP2)
|
||||
loVerifP2.Activeaza(loFormP2)
|
||||
loFormP2.WindowType = 0
|
||||
loFormP2.Show()
|
||||
SELECT ctests12a2
|
||||
GO TOP
|
||||
loFormP2._GRID1.AfterRowColChange(1)
|
||||
DO AsteaptaTimer WITH loVerifP2
|
||||
CATCH TO loExcP2
|
||||
DO VpaLog WITH 'FAIL cache-sesiune-fara-oracle (S12/6, EXCEPTIE): ' + loExcP2.Message
|
||||
FINALLY
|
||||
goExecutor = loReal
|
||||
ENDTRY
|
||||
|
||||
IF VARTYPE(loVerifP2.oStare) = 'O' AND loVerifP2.oStare.cSursa == 'CACHE_INDISP' AND loDummy.nIstoricQueryCount = 0
|
||||
DO VpaLog WITH 'PASS cache-sesiune-fara-oracle (S12/6): al doilea apel (formular nou, acelasi CUI) servit din goCacheANAF_Sesiune, 0 interogari noi pe ISTORIC_CODURI_FISCALE'
|
||||
ELSE
|
||||
DO VpaLog WITH 'FAIL cache-sesiune-fara-oracle (S12/6): oStare=' + TRANSFORM(VARTYPE(loVerifP2.oStare)) + ;
|
||||
' interogari-istoric=' + TRANSFORM(loDummy.nIstoricQueryCount)
|
||||
ENDIF
|
||||
|
||||
TRY
|
||||
loVerifP.Dezactiveaza()
|
||||
loVerifP2.Dezactiveaza()
|
||||
CATCH
|
||||
ENDTRY
|
||||
loFormP.Release()
|
||||
loFormP2.Release()
|
||||
IF USED('ctests12a')
|
||||
USE IN ctests12a
|
||||
ENDIF
|
||||
IF USED('ctests12a2')
|
||||
USE IN ctests12a2
|
||||
ENDIF
|
||||
*!* 01.08.2026 marius.mutu: garda pe ID > watermark, prin StergeIstoricV2UI (nu SCHEMA_SURSA - stergea randuri de referinta proprii)
|
||||
=StergeIstoricV2UI("COD_FISCAL = '8000090'")
|
||||
ANAF_SeteazaStareServiciu('NECUNOSCUT', 'reset dupa S12/1')
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VerificaCacheIndispIstoricGol
|
||||
*-- S12 scenariul 2: ANAF cazut, istoric FARA niciun rand pt. CUI -> comportament identic cu azi
|
||||
*-- (.NULL., banda "ANAF nu a raspuns - verificare sarita"), fara eticheta de cache.
|
||||
LOCAL loFormG, loVerifG, lnOk, lcCapG, lnInainte
|
||||
IF TYPE('goCacheANAF_Sesiune') = 'O'
|
||||
goCacheANAF_Sesiune = CREATEOBJECT('Collection')
|
||||
ENDIF
|
||||
ANAF_SeteazaStareServiciu('CAZUT', 'test S12/2')
|
||||
|
||||
lnOk = goExecutor.oExecute([SELECT DISTINCT DENUMIRE, NUME, COD_FISCAL, ID_PART, INACTIV FROM NOM_PARTENERI ] + ;
|
||||
[WHERE ID_PART = ] + TRANSFORM(gnIdCacheB), 'ctests12b')
|
||||
loFormG = CREATEOBJECT('cauta_alfa_form', 'ctests12b', '', 'Denumire,Nume,Cod fiscal,Id,Inactiv', ;
|
||||
'denumire,nume,cod_fiscal,id_part,inactiv', .F., '', 1, '', '', '', '')
|
||||
loFormG.crs_cursor = 'ctests12b'
|
||||
loFormG.lAles = .F.
|
||||
loVerifG = CREATEOBJECT('anaf_verif_cautare')
|
||||
ADDPROPERTY(loFormG, 'oVerifAlegere', loVerifG)
|
||||
loVerifG.Activeaza(loFormG)
|
||||
loFormG.WindowType = 0
|
||||
loFormG.Show()
|
||||
SELECT ctests12b
|
||||
GO TOP
|
||||
lnInainte = gnANAFCallCount
|
||||
loFormG._GRID1.AfterRowColChange(1)
|
||||
DO AsteaptaTimer WITH loVerifG
|
||||
lcCapG = ALLTRIM(loFormG.lb_anaf.Caption)
|
||||
|
||||
IF gnANAFCallCount = lnInainte AND ISNULL(loVerifG.oStare) AND 'ANAF nu a raspuns - verificare sarita' $ lcCapG
|
||||
DO VpaLog WITH 'PASS cache-indisp-istoric-gol (S12/2): ANAF cazut, istoric gol -> .NULL., banda identica cu azi [' + lcCapG + ']'
|
||||
ELSE
|
||||
DO VpaLog WITH 'FAIL cache-indisp-istoric-gol (S12/2): apeluri noi=' + TRANSFORM(gnANAFCallCount - lnInainte) + ;
|
||||
' oStare=' + TRANSFORM(VARTYPE(loVerifG.oStare)) + ' banda=[' + lcCapG + ']'
|
||||
ENDIF
|
||||
|
||||
loVerifG.Dezactiveaza()
|
||||
loFormG.Release()
|
||||
IF USED('ctests12b')
|
||||
USE IN ctests12b
|
||||
ENDIF
|
||||
ANAF_SeteazaStareServiciu('NECUNOSCUT', 'reset dupa S12/2')
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VerificaCacheIndispIstoricVechi
|
||||
*-- S12 scenariul 3: ANAF cazut, istoric are un rand pt. CUI dar DATAORAV_ANAF mai vechi decat
|
||||
*-- ANAFCACHEZILE (30 zile implicit) -> filtrul din CitesteIstoricPentruCoduri il exclude, deci
|
||||
*-- comportamentul ramane identic cu istoricul gol (.NULL.).
|
||||
LOCAL loFormV, loVerifV, lnOk, lcCapV, lnInainte, llInsV
|
||||
IF TYPE('goCacheANAF_Sesiune') = 'O'
|
||||
goCacheANAF_Sesiune = CREATEOBJECT('Collection')
|
||||
ENDIF
|
||||
llInsV = InsereazaIstoricTest('8000294', 'TEST S12 CACHE VECHI SRL', {^2020-01-01})
|
||||
IF !m.llInsV
|
||||
DO VpaLog WITH 'FAIL cache-indisp-istoric-vechi (S12/3): insert istoric esuat - ' + goExecutor.cEroare
|
||||
RETURN
|
||||
ENDIF
|
||||
*-- imbatraneste DATAORAV_ANAF direct in Oracle - numai randul propriu de test (COD_FISCAL='8000294')
|
||||
=goExecutor.oExecuta("UPDATE ISTORIC_CODURI_FISCALE SET DATAORAV_ANAF = SYSDATE - 40 WHERE COD_FISCAL = '8000294'")
|
||||
=goExecutor.oExecuta('COMMIT')
|
||||
ANAF_SeteazaStareServiciu('CAZUT', 'test S12/3')
|
||||
|
||||
lnOk = goExecutor.oExecute([SELECT DISTINCT DENUMIRE, NUME, COD_FISCAL, ID_PART, INACTIV FROM NOM_PARTENERI ] + ;
|
||||
[WHERE ID_PART = ] + TRANSFORM(gnIdCacheC), 'ctests12c')
|
||||
loFormV = CREATEOBJECT('cauta_alfa_form', 'ctests12c', '', 'Denumire,Nume,Cod fiscal,Id,Inactiv', ;
|
||||
'denumire,nume,cod_fiscal,id_part,inactiv', .F., '', 1, '', '', '', '')
|
||||
loFormV.crs_cursor = 'ctests12c'
|
||||
loFormV.lAles = .F.
|
||||
loVerifV = CREATEOBJECT('anaf_verif_cautare')
|
||||
ADDPROPERTY(loFormV, 'oVerifAlegere', loVerifV)
|
||||
loVerifV.Activeaza(loFormV)
|
||||
loFormV.WindowType = 0
|
||||
loFormV.Show()
|
||||
SELECT ctests12c
|
||||
GO TOP
|
||||
lnInainte = gnANAFCallCount
|
||||
loFormV._GRID1.AfterRowColChange(1)
|
||||
DO AsteaptaTimer WITH loVerifV
|
||||
lcCapV = ALLTRIM(loFormV.lb_anaf.Caption)
|
||||
|
||||
IF gnANAFCallCount = lnInainte AND ISNULL(loVerifV.oStare) AND 'ANAF nu a raspuns - verificare sarita' $ lcCapV
|
||||
DO VpaLog WITH 'PASS cache-indisp-istoric-vechi (S12/3): istoric 40 zile (peste ANAFCACHEZILE=30) -> .NULL., nu se ofera nimic [' + lcCapV + ']'
|
||||
ELSE
|
||||
DO VpaLog WITH 'FAIL cache-indisp-istoric-vechi (S12/3): apeluri noi=' + TRANSFORM(gnANAFCallCount - lnInainte) + ;
|
||||
' oStare=' + TRANSFORM(VARTYPE(loVerifV.oStare)) + ' banda=[' + lcCapV + ']'
|
||||
ENDIF
|
||||
|
||||
loVerifV.Dezactiveaza()
|
||||
loFormV.Release()
|
||||
IF USED('ctests12c')
|
||||
USE IN ctests12c
|
||||
ENDIF
|
||||
*!* 01.08.2026 marius.mutu: garda pe ID > watermark, prin StergeIstoricV2UI (nu SCHEMA_SURSA - stergea randuri de referinta proprii)
|
||||
=StergeIstoricV2UI("COD_FISCAL = '8000294'")
|
||||
ANAF_SeteazaStareServiciu('NECUNOSCUT', 'reset dupa S12/3')
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VerificaCodInexistentNuAtingeCache
|
||||
*-- S12 scenariul 4: cod fiscal valid ca structura dar negasit la ANAF (tlNegasit) -> verdict
|
||||
*-- "inexistent", istoricul NU e atins deloc (nici citit, nici folosit ca plasa) - chiar daca exista
|
||||
*-- un rand proaspat pt. acelasi CUI. Contor de interogari pe ISTORIC_CODURI_FISCALE prin dummy
|
||||
*-- executor (acelasi tipar ca H2/discriminatorul de documente, mai sus in fisier).
|
||||
LOCAL loFormN, loVerifN, lnOk, lcCapN, llInsN, loReal, loDummy, loExcN4
|
||||
IF TYPE('goCacheANAF_Sesiune') = 'O'
|
||||
goCacheANAF_Sesiune = CREATEOBJECT('Collection')
|
||||
ENDIF
|
||||
llInsN = InsereazaIstoricTest('9000039', 'TEST S12 NU TREBUIE FOLOSIT SRL', {^2020-01-01})
|
||||
IF !m.llInsN
|
||||
DO VpaLog WITH 'FAIL cod-inexistent-nu-atinge-cache (S12/4): insert istoric esuat - ' + goExecutor.cEroare
|
||||
RETURN
|
||||
ENDIF
|
||||
|
||||
loReal = goExecutor
|
||||
loDummy = CREATEOBJECT('dummyexecutoristorictest')
|
||||
loDummy.oReal = loReal
|
||||
goExecutor = loDummy
|
||||
TRY
|
||||
lnOk = goExecutor.oExecute([SELECT DISTINCT DENUMIRE, NUME, COD_FISCAL, ID_PART, INACTIV FROM NOM_PARTENERI ] + ;
|
||||
[WHERE ID_PART = ] + TRANSFORM(gnIdInexistent), 'ctests12d')
|
||||
loFormN = CREATEOBJECT('cauta_alfa_form', 'ctests12d', '', 'Denumire,Nume,Cod fiscal,Id,Inactiv', ;
|
||||
'denumire,nume,cod_fiscal,id_part,inactiv', .F., '', 1, '', '', '', '')
|
||||
loFormN.crs_cursor = 'ctests12d'
|
||||
loFormN.lAles = .F.
|
||||
loVerifN = CREATEOBJECT('anaf_verif_cautare')
|
||||
ADDPROPERTY(loFormN, 'oVerifAlegere', loVerifN)
|
||||
loVerifN.Activeaza(loFormN)
|
||||
loFormN.WindowType = 0
|
||||
loFormN.Show()
|
||||
SELECT ctests12d
|
||||
GO TOP
|
||||
loFormN._GRID1.AfterRowColChange(1)
|
||||
DO AsteaptaTimer WITH loVerifN
|
||||
lcCapN = ALLTRIM(loFormN.lb_anaf.Caption)
|
||||
CATCH TO loExcN4
|
||||
lcCapN = 'EXCEPTIE: ' + loExcN4.Message
|
||||
FINALLY
|
||||
goExecutor = loReal
|
||||
ENDTRY
|
||||
|
||||
IF 'Cod fiscal inexistent la ANAF (9000039)' $ lcCapN AND loDummy.nIstoricQueryCount = 0
|
||||
DO VpaLog WITH 'PASS cod-inexistent-nu-atinge-cache (S12/4): verdict inexistent, 0 interogari pe ISTORIC_CODURI_FISCALE (istoric avea rand proaspat, neatins) - [' + lcCapN + ']'
|
||||
ELSE
|
||||
DO VpaLog WITH 'FAIL cod-inexistent-nu-atinge-cache (S12/4): banda=[' + lcCapN + '] interogari-istoric=' + TRANSFORM(loDummy.nIstoricQueryCount)
|
||||
ENDIF
|
||||
|
||||
TRY
|
||||
loVerifN.Dezactiveaza()
|
||||
CATCH
|
||||
ENDTRY
|
||||
loFormN.Release()
|
||||
IF USED('ctests12d')
|
||||
USE IN ctests12d
|
||||
ENDIF
|
||||
*!* 01.08.2026 marius.mutu: garda pe ID > watermark, prin StergeIstoricV2UI (nu SCHEMA_SURSA - stergea randuri de referinta proprii)
|
||||
=StergeIstoricV2UI("COD_FISCAL = '9000039'")
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VerificaSeTesteazaNuAtingeCache
|
||||
*-- S12 scenariul 5: sonda in aer (stare SE_TESTEAZA) ramane neschimbata dupa S9 - randul NU face
|
||||
*-- apel ANAF propriu si NU atinge istoricul (spre deosebire de CAZUT/FARA_RASPUNS, care citesc din
|
||||
*-- cache); banda ramane "ANAF: se verifica ...", nu devine CACHE_INDISP.
|
||||
LOCAL loFormT5, loVerifT5, lnOk, lcCapT5, lnInainte, llInsT5
|
||||
IF TYPE('goCacheANAF_Sesiune') = 'O'
|
||||
goCacheANAF_Sesiune = CREATEOBJECT('Collection')
|
||||
ENDIF
|
||||
llInsT5 = InsereazaIstoricTest('8000391', 'TEST S12 CACHE SONDA SRL', {^2020-01-01})
|
||||
IF !m.llInsT5
|
||||
DO VpaLog WITH 'FAIL se-testeaza-nu-atinge-cache (S12/5): insert istoric esuat - ' + goExecutor.cEroare
|
||||
RETURN
|
||||
ENDIF
|
||||
ANAF_SeteazaStareServiciu('NECUNOSCUT', 'pregatire S12/5')
|
||||
gcMockSondaModo = 'MANUAL'
|
||||
glMockSondaGataManual = .F.
|
||||
|
||||
lnOk = goExecutor.oExecute([SELECT DISTINCT DENUMIRE, NUME, COD_FISCAL, ID_PART, INACTIV FROM NOM_PARTENERI ] + ;
|
||||
[WHERE ID_PART = ] + TRANSFORM(gnIdCacheD), 'ctests12e')
|
||||
loFormT5 = CREATEOBJECT('cauta_alfa_form', 'ctests12e', '', 'Denumire,Nume,Cod fiscal,Id,Inactiv', ;
|
||||
'denumire,nume,cod_fiscal,id_part,inactiv', .F., '', 1, '', '', '', '')
|
||||
loFormT5.crs_cursor = 'ctests12e'
|
||||
loFormT5.lAles = .F.
|
||||
loVerifT5 = CREATEOBJECT('anaf_verif_cautare')
|
||||
ADDPROPERTY(loFormT5, 'oVerifAlegere', loVerifT5)
|
||||
loVerifT5.Activeaza(loFormT5) && NECUNOSCUT -> porneste sonda (mock) -> SE_TESTEAZA
|
||||
loFormT5.WindowType = 0
|
||||
loFormT5.Show()
|
||||
SELECT ctests12e
|
||||
GO TOP
|
||||
lnInainte = gnANAFCallCount
|
||||
loFormT5._GRID1.AfterRowColChange(1)
|
||||
DOEVENTS FORCE
|
||||
lcCapT5 = ALLTRIM(loFormT5.lb_anaf.Caption)
|
||||
|
||||
IF gnANAFCallCount = lnInainte AND ANAF_StareServiciu() == 'SE_TESTEAZA' AND 'ANAF: se verifica' $ lcCapT5 ;
|
||||
AND (ISNULL(loVerifT5.oStare) OR loVerifT5.oStare.cSursa <> 'CACHE_INDISP')
|
||||
DO VpaLog WITH 'PASS se-testeaza-nu-atinge-cache (S12/5): sonda in aer -> neschimbat, banda [' + lcCapT5 + '], nu trece prin cache desi istoricul are rand proaspat'
|
||||
ELSE
|
||||
DO VpaLog WITH 'FAIL se-testeaza-nu-atinge-cache (S12/5): apeluri noi=' + TRANSFORM(gnANAFCallCount - lnInainte) + ;
|
||||
' stare=' + ANAF_StareServiciu() + ' banda=[' + lcCapT5 + ']'
|
||||
ENDIF
|
||||
|
||||
loVerifT5.Dezactiveaza()
|
||||
loFormT5.Release()
|
||||
IF USED('ctests12e')
|
||||
USE IN ctests12e
|
||||
ENDIF
|
||||
*!* 01.08.2026 marius.mutu: garda pe ID > watermark, prin StergeIstoricV2UI (nu SCHEMA_SURSA - stergea randuri de referinta proprii)
|
||||
=StergeIstoricV2UI("COD_FISCAL = '8000391'")
|
||||
ANAF_SeteazaStareServiciu('NECUNOSCUT', 'reset dupa S12/5')
|
||||
gcMockSondaModo = 'AUTO'
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VerificaOrdineCacheAnafSarit
|
||||
*-- S12 scenariul 7: OrdineCache('UNIC')=CACHE,ANAF + rand proaspat in istoric -> ANAF NU e apelat
|
||||
*-- deloc (verificat prin gnANAFCallCount), verdictul vine direct din cache (cSursa=CACHE - pe acest
|
||||
*-- traseu istoricul e incercat INAINTE de starea serviciului).
|
||||
LOCAL loFormO, loVerifO, lnOk, lcCapO, lnInainte, llInsO, lcOrdineOrig, llAveaRand
|
||||
IF TYPE('goCacheANAF_Sesiune') = 'O'
|
||||
goCacheANAF_Sesiune = CREATEOBJECT('Collection')
|
||||
ENDIF
|
||||
llInsO = InsereazaIstoricTest('8000499', 'TEST S12 CACHE ORDINE SRL', {^2020-01-01})
|
||||
IF !m.llInsO
|
||||
DO VpaLog WITH 'FAIL ordine-cache-anaf-sarit (S12/7): insert istoric esuat - ' + goExecutor.cEroare
|
||||
RETURN
|
||||
ENDIF
|
||||
ANAF_SeteazaStareServiciu('NECUNOSCUT', 'pregatire S12/7')
|
||||
|
||||
lcOrdineOrig = ''
|
||||
=goExecutor.oSelect2Value("SELECT VARVALUE AS NR FROM OPTIUNI WHERE VARNAME = 'ANAFCACHEORDINE_UNIC'", @lcOrdineOrig)
|
||||
llAveaRand = !EMPTY(NVL(lcOrdineOrig, ''))
|
||||
IF m.llAveaRand
|
||||
=goExecutor.oExecuta("UPDATE OPTIUNI SET VARVALUE = 'CACHE,ANAF' WHERE VARNAME = 'ANAFCACHEORDINE_UNIC'")
|
||||
ELSE
|
||||
=goExecutor.oExecuta("INSERT INTO OPTIUNI (VARNAME, VARVALUE) VALUES ('ANAFCACHEORDINE_UNIC', 'CACHE,ANAF')")
|
||||
ENDIF
|
||||
=goExecutor.oExecuta('COMMIT')
|
||||
|
||||
lnOk = goExecutor.oExecute([SELECT DISTINCT DENUMIRE, NUME, COD_FISCAL, ID_PART, INACTIV FROM NOM_PARTENERI ] + ;
|
||||
[WHERE ID_PART = ] + TRANSFORM(gnIdCacheF), 'ctests12f')
|
||||
loFormO = CREATEOBJECT('cauta_alfa_form', 'ctests12f', '', 'Denumire,Nume,Cod fiscal,Id,Inactiv', ;
|
||||
'denumire,nume,cod_fiscal,id_part,inactiv', .F., '', 1, '', '', '', '')
|
||||
loFormO.crs_cursor = 'ctests12f'
|
||||
loFormO.lAles = .F.
|
||||
loVerifO = CREATEOBJECT('anaf_verif_cautare')
|
||||
ADDPROPERTY(loFormO, 'oVerifAlegere', loVerifO)
|
||||
loVerifO.Activeaza(loFormO)
|
||||
loFormO.WindowType = 0
|
||||
loFormO.Show()
|
||||
SELECT ctests12f
|
||||
GO TOP
|
||||
lnInainte = gnANAFCallCount
|
||||
loFormO._GRID1.AfterRowColChange(1)
|
||||
DO AsteaptaTimer WITH loVerifO
|
||||
lcCapO = ALLTRIM(loFormO.lb_anaf.Caption)
|
||||
|
||||
IF gnANAFCallCount = lnInainte AND VARTYPE(loVerifO.oStare) = 'O' AND loVerifO.oStare.cSursa == 'CACHE'
|
||||
DO VpaLog WITH 'PASS ordine-cache-anaf-sarit (S12/7): OrdineCache=CACHE,ANAF + rand proaspat -> 0 apeluri ANAF, verdict din cache [' + lcCapO + ']'
|
||||
ELSE
|
||||
DO VpaLog WITH 'FAIL ordine-cache-anaf-sarit (S12/7): apeluri noi=' + TRANSFORM(gnANAFCallCount - lnInainte) + ;
|
||||
' oStare=' + TRANSFORM(VARTYPE(loVerifO.oStare)) + ' banda=[' + lcCapO + ']'
|
||||
ENDIF
|
||||
|
||||
loVerifO.Dezactiveaza()
|
||||
loFormO.Release()
|
||||
IF USED('ctests12f')
|
||||
USE IN ctests12f
|
||||
ENDIF
|
||||
*-- restaureaza optiunea originala (per schema - alte teste/utilizatori depind de implicit)
|
||||
IF m.llAveaRand
|
||||
=goExecutor.oExecuta("UPDATE OPTIUNI SET VARVALUE = '" + STRTRAN(m.lcOrdineOrig, "'", "''") + "' WHERE VARNAME = 'ANAFCACHEORDINE_UNIC'")
|
||||
ELSE
|
||||
=goExecutor.oExecuta("DELETE FROM OPTIUNI WHERE VARNAME = 'ANAFCACHEORDINE_UNIC'")
|
||||
ENDIF
|
||||
=goExecutor.oExecuta('COMMIT')
|
||||
*!* 01.08.2026 marius.mutu: garda pe ID > watermark, prin StergeIstoricV2UI (nu SCHEMA_SURSA - stergea randuri de referinta proprii)
|
||||
=StergeIstoricV2UI("COD_FISCAL = '8000499'")
|
||||
ANAF_SeteazaStareServiciu('NECUNOSCUT', 'reset dupa S12/7')
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VpaErr
|
||||
*-- OBLIGATORIU headless (depanare_testare_vfp.md): handlerul ON ERROR se termina cu QUIT.
|
||||
*-- In fluxul normal, erorile din TRY-ul principal ajung la CATCH TO loExc (nu aici) - VpaErr
|
||||
@@ -2303,3 +2804,34 @@ DEFINE CLASS dummyexecutordoctest AS Custom
|
||||
RETURN This.oReal.oSelect2Value(m.tcSql, @tuValue)
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
|
||||
*-- S12: dublura de goExecutor pentru scenariile de cache - numara interogarile care ating
|
||||
*-- ISTORIC_CODURI_FISCALE (CitesteIstoricPentruCoduri trece prin oExecuta, validare.prg), ca sa
|
||||
*-- dovedeasca cand cache-ul Oracle e sarit (cod negasit la ANAF) sau folosit o singura data (al
|
||||
*-- doilea apel pe acelasi CUI vine din goCacheANAF_Sesiune).
|
||||
DEFINE CLASS dummyexecutoristorictest AS Custom
|
||||
oReal = .NULL.
|
||||
cEroare = ''
|
||||
nIstoricQueryCount = 0
|
||||
PROCEDURE oExecuta
|
||||
LPARAMETERS tcSql, tcCursor
|
||||
LOCAL lnRez
|
||||
IF 'ISTORIC_CODURI_FISCALE' $ UPPER(tcSql)
|
||||
This.nIstoricQueryCount = This.nIstoricQueryCount + 1
|
||||
ENDIF
|
||||
lnRez = This.oReal.oExecuta(m.tcSql, m.tcCursor)
|
||||
This.cEroare = This.oReal.cEroare
|
||||
RETURN lnRez
|
||||
ENDPROC
|
||||
PROCEDURE oExecute
|
||||
LPARAMETERS tcSql, tcCursor
|
||||
LOCAL lnRez
|
||||
lnRez = This.oReal.oExecute(m.tcSql, m.tcCursor)
|
||||
This.cEroare = This.oReal.cEroare
|
||||
RETURN lnRez
|
||||
ENDPROC
|
||||
PROCEDURE oSelect2Value
|
||||
LPARAMETERS tcSql, tuValue
|
||||
RETURN This.oReal.oSelect2Value(m.tcSql, @tuValue)
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
|
||||
Reference in New Issue
Block a user