Verificare ANAF: la serviciul web ajung doar CIF-uri valide (SVN r17939)
Lotul ramas pentru ANAF se construia cu un Scan fara filtru pe cui_n, deci codurile
care nu sunt CUI RO valid (cod gol, alta tara, peste 10 cifre) erau retrimise la fiecare
rulare - fereastra arata "Verific codurile fiscale 1..16 / 16" desi cele 903 coduri reale
veneau din cache, iar cererea plecata spre ANAF era goala: {"cui":0} -> 404.
- lotul ramas: Scan For cui_n <> 0.
- NormalizeazaCoduriCursor: cui_n se completeaza doar daca trece si algoritmul cifrei de
control (VerificareCod.VALIDARE_CIF), nu doar tara RO / numai cifre / maxim 10 caractere;
plus Val() <> 0, ca un cod de zerouri sa nu ajunga la ANAF drept cui:0. VALIDARE_CIF nu
s-a atins, e doar apelata.
- ANAF_SincronWebService_PlatitorTva: acelasi filtru la compunerea cererii (cele doua
trebuie sa ramana identice) si LOOP cand grupul nu are niciun CUI valid, deci fara
cerere HTTP goala.
Verificat: compilare curata; test headless pe NormalizeazaCoduriCursor (RO7320118, 7320118,
RO25501, "RO 1879855" trec; 7320119 cu cifra de control gresita, 0, cod gol, BG123456789,
CNP de 13 cifre sunt excluse). Fara fals-pozitive pe date reale: toate cele 903 coduri
confirmate de ANAF pe ROMFAST trec algoritmul.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JCzVWfqscv1xyo5uvJiWiW
This commit is contained in:
@@ -1946,7 +1946,8 @@ Define Class VerificareANAF As Custom
|
||||
Use In (Select(m.lcCursorRamas))
|
||||
Create Cursor (m.lcCursorRamas) (cod_fiscal c(30) Null, data D null)
|
||||
Select (m.lcAliasNorm)
|
||||
Scan
|
||||
*!* 02.08.2026 marius.mutu: la ANAF ajung doar codurile care sunt CUI RO valid - restul nu pot fi nici in cache, nici verificate
|
||||
Scan For cui_n <> 0
|
||||
lnCuiCurent = cui_n
|
||||
lcCodFiscalCurent = cod_fiscal
|
||||
ldDataCurenta = data
|
||||
@@ -2062,7 +2063,7 @@ Define Class VerificareANAF As Custom
|
||||
Function NormalizeazaCoduriCursor
|
||||
Lparameters tcCursorListaCIF, tdData
|
||||
|
||||
Local loVerificareCod As "VerificareCod", lcCodFiscal, lcCodTara, lcCodFiscalFRO, lcAliasNorm, lcSelect, llDataCursor, ldDataRand, ldDataImplicit
|
||||
Local loVerificareCod As "VerificareCod", lcCodFiscal, lcCodTara, lcCodFiscalFRO, lcAliasNorm, lcSelect, llDataCursor, ldDataRand, ldDataImplicit, lnCuiNorm
|
||||
lcSelect = Select()
|
||||
lcAliasNorm = 'crsCoduriNormalizate'
|
||||
Use In (Select(m.lcAliasNorm))
|
||||
@@ -2080,8 +2081,13 @@ Define Class VerificareANAF As Custom
|
||||
lcCodFiscalFRO = Strtran(m.lcCodFiscal, m.lcCodTara, '')
|
||||
lcCodFiscalFRO = Strtran(Strtran(Strtran(m.lcCodFiscalFRO, ' ', ''), 'RO', ''), 'R', '')
|
||||
ldDataRand = Iif(m.llDataCursor And !Empty(Nvl(data, {})), Nvl(data, {}), m.ldDataImplicit)
|
||||
Insert Into (m.lcAliasNorm) (cod_fiscal, data, cui_n) Values ;
|
||||
(m.lcCodFiscal, m.ldDataRand, Iif(m.lcCodTara = 'RO' And Isdigit(m.lcCodFiscalFRO) And Len(m.lcCodFiscalFRO) <= 10, Int(Val(m.lcCodFiscalFRO)), 0))
|
||||
*!* 02.08.2026 marius.mutu: pe langa formatul de baza, si cifra de control (VALIDARE_CIF) - un CIF invalid nu are ce cauta nici in cache, nici la ANAF
|
||||
lnCuiNorm = 0
|
||||
If m.lcCodTara = 'RO' And Isdigit(m.lcCodFiscalFRO) And Len(m.lcCodFiscalFRO) <= 10 ;
|
||||
And Val(m.lcCodFiscalFRO) <> 0 And loVerificareCod.VALIDARE_CIF(m.lcCodFiscalFRO)
|
||||
lnCuiNorm = Int(Val(m.lcCodFiscalFRO))
|
||||
Endif
|
||||
Insert Into (m.lcAliasNorm) (cod_fiscal, data, cui_n) Values (m.lcCodFiscal, m.ldDataRand, m.lnCuiNorm)
|
||||
Select (m.tcCursorListaCIF)
|
||||
Endscan
|
||||
|
||||
@@ -2173,7 +2179,8 @@ Define Class VerificareANAF As Custom
|
||||
lcCodFiscalFRO = Strtran(m.lcCodFiscal, m.lcCodTara, '')
|
||||
lcCodFiscalFRO = Strtran(Strtran(Strtran(m.lcCodFiscalFRO, ' ', ''), 'RO', ''), 'R', '')
|
||||
|
||||
If m.llRO AND (Isdigit(m.lcCodFiscalFRO) and Len(m.lcCodFiscalFRO) <= 10)
|
||||
*!* 02.08.2026 marius.mutu: acelasi filtru ca in NormalizeazaCoduriCursor - format de baza plus cifra de control (VALIDARE_CIF)
|
||||
If m.llRO AND (Isdigit(m.lcCodFiscalFRO) and Len(m.lcCodFiscalFRO) <= 10 and Val(m.lcCodFiscalFRO) <> 0 and loVerificareCod.VALIDARE_CIF(m.lcCodFiscalFRO))
|
||||
loCol = Createobject("empty")
|
||||
AddProperty(loCol, "cui", Int(Val(m.lcCodFiscalFRO)))
|
||||
AddProperty(loCol, "data", m.lcDataFormatted)
|
||||
@@ -2181,10 +2188,12 @@ Define Class VerificareANAF As Custom
|
||||
laCoduri[lnIdx] = loCol
|
||||
ENDIF
|
||||
Endscan && tcCursorListaCIF
|
||||
IF m.lnIdx > 0
|
||||
Dimension laCoduri(lnIdx)
|
||||
ENDIF
|
||||
|
||||
*!* 02.08.2026 marius.mutu: grup fara niciun CUI valid - nu se mai trimite cerere goala la ANAF
|
||||
IF m.lnIdx = 0
|
||||
LOOP
|
||||
ENDIF
|
||||
Dimension laCoduri(lnIdx)
|
||||
|
||||
lcSend = nfjsoncreate(@laCoduri)
|
||||
goLog.Log('lcSend: ' + m.lcSend, 'ANAF_SincronWebService_PlatitorTva')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user