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:
185
utile/Teste/cache_anaf/test_margine_tvaincasare_frontiera.prg
Normal file
185
utile/Teste/cache_anaf/test_margine_tvaincasare_frontiera.prg
Normal file
@@ -0,0 +1,185 @@
|
||||
* test_margine_tvaincasare_frontiera.prg - S13, test de REGRESIE pentru fixul de 01.08.2026 la
|
||||
* marginea tvaincasare (validare.prg:2708, "nvl(data_sfarsit_tvainc - 1, ...)" - acum EXCLUSIV).
|
||||
* Scris initial (versiune veche, pastrata in istoricul git) ca sa EXPUNA divergenta cache/RTVAI la
|
||||
* frontiera - a reusit, si a produs sectiunea A-ter din handoff (decizie Marius: cache aliniat la
|
||||
* conventia -1 folosita deja de pack_roartvai.PartenerInRTVAI). Dupa fix, testul verifica ACORDUL.
|
||||
*
|
||||
* CAZUL: CUI real 1768121, o singura perioada RTVAI continua 01.01.2013 -> 01.01.2021, FARA nicio
|
||||
* reintrare ulterioara in rtvai_istoric (un singur rand I si un singur rand D, nimic dupa). Data
|
||||
* 01.01.2021 e eveniment real (publicat 15.10.2020, inainte ca importul RTVAI sa moara pe
|
||||
* 23.10.2020) - nu artefact de import oprit.
|
||||
*
|
||||
* Fara CREATEOBJECT/ADDPROPERTY in interiorul unei PROCEDURE (capcana l, depanare_testare_vfp.md) -
|
||||
* obiectele se construiesc INLINE in programul principal.
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET DELETED ON
|
||||
SET EXACT ON
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcTestLog
|
||||
gcTestLog = "D:\ROA\ROACONT\COMUN\utile\Teste\cache_anaf\test_margine_tvaincasare_frontiera_log.txt"
|
||||
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13)+CHR(10), gcTestLog)
|
||||
|
||||
ON ERROR DO VpaErrTvainc 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 WriteTestLogTvainc WITH 'EROARE: conectare Oracle esuata - GATA'
|
||||
QUIT
|
||||
ENDIF
|
||||
DO WriteTestLogTvainc WITH 'mediu OK, schema=' + gcS
|
||||
|
||||
*!* 01.08.2026 marius.mutu: watermark pe ID, inainte de orice scriere - garda pt DELETE-ul din CurataIstoricTvaincTest
|
||||
PUBLIC gnIdMaxIstoricTvainc
|
||||
gnIdMaxIstoricTvainc = 0
|
||||
IF goExecutor.oExecuta('SELECT NVL(MAX(ID),0) AS IDMAX FROM ISTORIC_CODURI_FISCALE', 'crsWmIstoricTvainc')
|
||||
SELECT crsWmIstoricTvainc
|
||||
GO TOP
|
||||
gnIdMaxIstoricTvainc = IDMAX
|
||||
USE IN (SELECT('crsWmIstoricTvainc'))
|
||||
ENDIF
|
||||
*!* 01.08.2026 marius.mutu: watermark invalid = SELECT esuat - avertisment explicit, stergerile se vor sari
|
||||
IF gnIdMaxIstoricTvainc <= 0
|
||||
DO WriteTestLogTvainc WITH 'ATENTIE: watermark invalid (0) - stergerile din ISTORIC_CODURI_FISCALE vor fi SARITE'
|
||||
ENDIF
|
||||
DO WriteTestLogTvainc WITH 'watermark ISTORIC_CODURI_FISCALE id_max=' + TRANSFORM(gnIdMaxIstoricTvainc)
|
||||
|
||||
PUBLIC goVerifTvainc
|
||||
goVerifTvainc = CREATEOBJECT('VerificareANAF')
|
||||
|
||||
DO CurataIstoricTvaincTest
|
||||
|
||||
LOCAL lnCui, ldInceput, ldSfarsit
|
||||
lnCui = 1768121
|
||||
ldInceput = {^2013-01-01}
|
||||
ldSfarsit = {^2021-01-01}
|
||||
|
||||
* -- seed cache cu EXACT aceeasi perioada ca in rtvai_istoric (aceeasi forma ca crsANAF) --
|
||||
IF USED('crsSeedTvainc')
|
||||
USE IN crsSeedTvainc
|
||||
ENDIF
|
||||
CREATE CURSOR crsSeedTvainc (cui N(13), data D, denumire V(100), firma V(100), adresa C(244), nrRegCom C(30), ;
|
||||
scpTVA L, data_inceput_ScpTVA D, data_sfarsit_ScpTVA D, data_anul_imp_ScpTVA D, mesaj_ScpTVA C(244), ;
|
||||
dataInceputTvaInc D, dataSfarsitTvaInc D, dataActualizareTvaInc D, dataPublicareTvaInc D, tipActTvaInc C(100), statusTvaIncasare L, ;
|
||||
dataInactivare D, dataReactivare D, dataPublicare D, dataRadiere D, statusInactivi L, ;
|
||||
dataInceputSplitTVA D, dataAnulareSplitTVA D, tva L, tvaincasare L, splittva L, inactiv L, ;
|
||||
mesaj V(100), judet V(100), strada V(100), nr V(20), localitate V(100), Bloc V(20), scara V(20), etaj V(20), apart V(20), ;
|
||||
sursa C(20), data_sursa D)
|
||||
INSERT INTO crsSeedTvainc (cui, data, dataInceputTvaInc, dataSfarsitTvaInc, tvaincasare) ;
|
||||
VALUES (lnCui, DATE(), ldInceput, ldSfarsit, .T.)
|
||||
goVerifTvainc.SalveazaIstoricDinCursor('crsSeedTvainc', gnIdUtil)
|
||||
USE IN crsSeedTvainc
|
||||
DO WriteTestLogTvainc WITH 'seed cache: cui=' + TRANSFORM(lnCui) + ' dataInceputTvaInc=' + DTOC(ldInceput) + ' dataSfarsitTvaInc=' + DTOC(ldSfarsit)
|
||||
|
||||
* -- 4 date de proba: interior, o zi inainte de sfarsit, EXACT sfarsitul (marginea care era
|
||||
* divergenta inainte de fix), o zi dupa sfarsit - toate patru trebuie ACORD dupa fix --
|
||||
IF USED('crsProbeTvainc')
|
||||
USE IN crsProbeTvainc
|
||||
ENDIF
|
||||
CREATE CURSOR crsProbeTvainc (eticheta C(40), proba D, asteptare C(20))
|
||||
INSERT INTO crsProbeTvainc VALUES ('interior (8 ani in perioada)', {^2020-01-01}, 'ACORD')
|
||||
INSERT INTO crsProbeTvainc VALUES ('o zi inainte de sfarsit', ldSfarsit - 1, 'ACORD')
|
||||
INSERT INTO crsProbeTvainc VALUES ('EXACT sfarsitul (frontiera)', ldSfarsit, 'ACORD')
|
||||
INSERT INTO crsProbeTvainc VALUES ('o zi dupa sfarsit', ldSfarsit + 1, 'ACORD')
|
||||
|
||||
LOCAL lnTotalProbe, lnAcordCorect, lnNeasteptat
|
||||
lnTotalProbe = 0
|
||||
lnAcordCorect = 0
|
||||
lnNeasteptat = 0
|
||||
|
||||
SELECT crsProbeTvainc
|
||||
SCAN
|
||||
LOCAL lcEticheta, ldProba, lcAsteptare, llCacheTvainc, llCacheAbtine, lnRtvaiVal
|
||||
lcEticheta = eticheta
|
||||
ldProba = proba
|
||||
lcAsteptare = asteptare
|
||||
|
||||
* -- termen (a): CACHE REAL, formula acum exclusiva (validare.prg:2708, "- 1", fixul de 01.08.2026) --
|
||||
IF USED('crsCacheTvainc')
|
||||
USE IN crsCacheTvainc
|
||||
ENDIF
|
||||
goVerifTvainc.CitesteIstoricPentruCoduri(TRANSFORM(lnCui), ldProba, 'crsCacheTvainc')
|
||||
llCacheAbtine = .T.
|
||||
llCacheTvainc = .F.
|
||||
IF USED('crsCacheTvainc')
|
||||
SELECT crsCacheTvainc
|
||||
LOCATE FOR cui = lnCui
|
||||
IF FOUND()
|
||||
llCacheAbtine = .F.
|
||||
llCacheTvainc = tvaincasare
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
* -- termen (c): RTVAI REAL, pack_roartvai.PartenerInRTVAI (neschimbata, foloseste -1 la sfarsit) --
|
||||
lnRtvaiVal = ObtineVerdictRTVAITvainc(lnCui, ldProba)
|
||||
|
||||
lnTotalProbe = lnTotalProbe + 1
|
||||
IF !llCacheAbtine AND (IIF(llCacheTvainc,1,0) = lnRtvaiVal)
|
||||
lnAcordCorect = lnAcordCorect + 1
|
||||
DO WriteTestLogTvainc WITH ' ' + lcEticheta + ' (' + DTOC(ldProba) + '): ACORD (asteptat) - cache(tvaincasare=' + TRANSFORM(llCacheTvainc) + ') rtvai=' + TRANSFORM(lnRtvaiVal)
|
||||
ELSE
|
||||
lnNeasteptat = lnNeasteptat + 1
|
||||
DO WriteTestLogTvainc WITH ' ' + lcEticheta + ' (' + DTOC(ldProba) + '): NEASTEPTAT - cache abtine=' + TRANSFORM(llCacheAbtine) + ' cache(tvaincasare=' + TRANSFORM(llCacheTvainc) + ') rtvai=' + TRANSFORM(lnRtvaiVal)
|
||||
ENDIF
|
||||
|
||||
IF USED('crsCacheTvainc')
|
||||
USE IN crsCacheTvainc
|
||||
ENDIF
|
||||
SELECT crsProbeTvainc
|
||||
ENDSCAN
|
||||
|
||||
DO WriteTestLogTvainc WITH 'REZULTAT: total=' + TRANSFORM(lnTotalProbe) + ' acord=' + TRANSFORM(lnAcordCorect) + '/4 (asteptat 4 - regresie fix, inclusiv EXACT sfarsitul)' + ;
|
||||
' neasteptat=' + TRANSFORM(lnNeasteptat) + ' (asteptat 0)'
|
||||
|
||||
DO CurataIstoricTvaincTest
|
||||
|
||||
DO WriteTestLogTvainc WITH 'GATA'
|
||||
QUIT
|
||||
|
||||
*-- verdict "TVA la incasare la data D" din rtvai_istoric COMPLET (istoricul importat, nu ANAF),
|
||||
*-- prin procedura Oracle REALA pack_roartvai.PartenerInRTVAI (neschimbata) - aceeasi ca in
|
||||
*-- test_echivalenta_cache_rtvai.prg::ObtineVerdictRTVAI --
|
||||
PROCEDURE ObtineVerdictRTVAITvainc
|
||||
LPARAMETERS tnCui, tdData
|
||||
PRIVATE pnCodFiscal, pdData, pcDenumire, pnRTVAI
|
||||
pnCodFiscal = tnCui
|
||||
pdData = tdData
|
||||
pcDenumire = ''
|
||||
pnRTVAI = 0
|
||||
LOCAL lcSql
|
||||
lcSql = [begin pack_roartvai.PartenerInRTVAI(?pnCodFiscal, ?pdData, ?@pcDenumire, ?@pnRTVAI); end;]
|
||||
IF !goExecutor.oExecuta(lcSql)
|
||||
RETURN -1
|
||||
ENDIF
|
||||
RETURN pnRTVAI
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE WriteTestLogTvainc
|
||||
LPARAMETERS tcMesaj
|
||||
STRTOFILE(TTOC(DATETIME()) + ' ' + tcMesaj + CHR(13)+CHR(10), gcTestLog, 1)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VpaErrTvainc
|
||||
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
||||
DO WriteTestLogTvainc WITH 'ON ERROR nEroare=' + TRANSFORM(tnErr) + ' mesaj=' + tcMsg + ' program=' + tcProg + ' linia=' + TRANSFORM(tnLine)
|
||||
ENDPROC
|
||||
|
||||
*-- sterge DOAR CUI-ul de test al acestui fisier din ISTORIC_CODURI_FISCALE --
|
||||
PROCEDURE CurataIstoricTvaincTest
|
||||
LOCAL lnSterse
|
||||
*!* 01.08.2026 marius.mutu: watermark invalid - nu sterg nimic (fara el, DELETE ar lovi tot istoricul comun)
|
||||
IF TYPE('gnIdMaxIstoricTvainc') <> 'N' OR gnIdMaxIstoricTvainc <= 0
|
||||
DO WriteTestLogTvainc WITH 'CurataIstoricTvaincTest: SARIT - watermark invalid, nu sterg nimic'
|
||||
RETURN
|
||||
ENDIF
|
||||
*!* 01.08.2026 marius.mutu: garda pe ID > watermark (nu SCHEMA_SURSA - stergea randuri de referinta proprii)
|
||||
lnSterse = goExecutor.oExecuta([DELETE FROM ISTORIC_CODURI_FISCALE WHERE ID > ] + TRANSFORM(gnIdMaxIstoricTvainc) + [ AND COD_FISCAL_N IN (1768121)])
|
||||
=goExecutor.oExecuta('COMMIT')
|
||||
DO WriteTestLogTvainc WITH 'CurataIstoricTvaincTest: sters=' + TRANSFORM(lnSterse)
|
||||
ENDPROC
|
||||
Reference in New Issue
Block a user