Borderou eFactura: potrivire cu registrul de TVA rapida si corecta

Potrivirea pe numar compara nract cu grupurile de cifre extrase din xnumar_act,
in loc sa aplice un regex peste nract. Predicatul devine sargabil, deci foloseste
IDX_JC2007_003/IDX_JV2007_003 in loc sa scaneze toata luna din jurnal pentru
fiecare factura: borderoul de facturi trimise trece de la 97 de secunde la sub una
(masurat pe o firma cu 6006 facturi si 6466 randuri in jurnal).

Rezerva pe suma egala se pastreaza, dar in view se leaga prin COALESCE, nu prin OR:
se evalueaza doar pentru facturile pe care numarul nu le-a gasit. Legata prin OR,
potrivea nediferentiat orice document cu aceeasi suma la acelasi partener in aceeasi
zi - pana la 49 de documente pentru o factura - si afisa o "Diferenta" gresita.

jcnt si coloana "Pot." se elimina: dupa corectarea potrivirii numarul de documente
potrivite e practic intotdeauna 1, iar starea "nu e in registru" se citeste din
jtotctva IS NULL. jtotctva se declara nullable in cursor, altfel NULL-ul devine 0 si
randurile fara potrivire nu s-ar mai colora.

Pragul de la care un rand devine galben urca de la 0.01 la 0.15 lei: la 0.01 ieseau
841 de randuri galbene din 6006, toate diferente de rotunjire sub 0.11 lei.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FW7zDopcHo2fHq5L53MjMM
This commit is contained in:
2026-07-28 23:31:04 +03:00
parent 31a157cb55
commit 0df20461e2
2 changed files with 17 additions and 12 deletions

View File

@@ -5295,7 +5295,7 @@ DEFINE CLASS anaf_efactura AS _frmbase OF "_frm_base.vcx"
PROCEDURE do_cauta
LOCAL lcfiltru, lcFiltru2, lcFiltru3, lcval1, lcColoana, ldData1, ldData2
Local lcData1, llErori, llNetrimise, llPJ, llTrimise, llDiferente, lnActivePage
Local lcData1, lcData2, llErori, llNetrimise, llPJ, llTrimise, llDiferente, lnActivePage
WAIT WINDOW 'Selectie inregistrari...' NOWAIT
@@ -5322,9 +5322,12 @@ DEFINE CLASS anaf_efactura AS _frmbase OF "_frm_base.vcx"
IF !('DATA_ACT'$upper(THISFORM.filtru_pretty) OR 'DATA_TRIMIS'$upper(THISFORM.filtru_pretty) )
lcData1 = '01' + PADL(INT(m.gnLuna),2,'0') + ALLTRIM(STR(m.gnAn))
*!* data_act pe interval (nu extract(year/month...)) ca sa poata folosi IDX_ANAF_EFACTURA_1(FACTURA_EMISA,XDATA_ACT,DATA_RASPUNS)
ldData1 = GOMONTH(m.ldData1, 1)
lcData2 = '01' + PADL(MONTH(m.ldData1),2,'0') + ALLTRIM(STR(YEAR(m.ldData1)))
lcFiltru = m.lcFiltru + [ and ((extract(year from data_act) = ?gnAn and extract(month from data_act) = ?gnLuna) OR (trimis = 1 and tip_mesaj_raspuns is null and extract(year from data_act) >=2023))]
lcFiltru2 = m.lcFiltru2 + [ and ((extract(year from data_act) = ?gnAn and extract(month from data_act) = ?gnLuna) or (data_act is null and data_raspuns >= to_date('] + m.lcData1 + [','ddmmyyyy')))]
lcFiltru3 = m.lcFiltru3 + [ and ((extract(year from data_act) = ?gnAn and extract(month from data_act) = ?gnLuna) or (data_act is null and data_raspuns >= to_date('] + m.lcData1 + [','ddmmyyyy')))]
lcFiltru2 = m.lcFiltru2 + [ and ((data_act >= to_date('] + m.lcData1 + [','ddmmyyyy') and data_act < to_date('] + m.lcData2 + [','ddmmyyyy')) or (data_act is null and data_raspuns >= to_date('] + m.lcData1 + [','ddmmyyyy')))]
lcFiltru3 = m.lcFiltru3 + [ and ((data_act >= to_date('] + m.lcData1 + [','ddmmyyyy') and data_act < to_date('] + m.lcData2 + [','ddmmyyyy')) or (data_act is null and data_raspuns >= to_date('] + m.lcData1 + [','ddmmyyyy')))]
ENDIF
@@ -6031,12 +6034,12 @@ DEFINE CLASS anaf_efactura AS _frmbase OF "_frm_base.vcx"
ENDWITH
WITH this.pgfeFactura.page3.grdFacturiTrimise
.SetAll("DynamicBackColor","IIF(diferenta <> 0, RGB(225,225,225), RGB(255,255,255))", "Column")
.SetAll("DynamicBackColor","IIF(ISNULL(jtotctva), RGB(225,225,225), IIF(ISNULL(diferenta) OR ABS(NVL(diferenta,0)) > 0.15, RGB(255,235,180), RGB(255,255,255)))", "Column")
.SetAll("DynamicForeColor","IIF(creditnote = 1, RGB(225,0,0), RGB(0,0,0))", "Column")
ENDWITH
WITH this.pgfeFactura.page2.grdFacturiPrimite
.SetAll("DynamicBackColor","IIF(diferenta <> 0, RGB(225,225,225), RGB(255,255,255))", "Column")
.SetAll("DynamicBackColor","IIF(ISNULL(jtotctva), RGB(225,225,225), IIF(ISNULL(diferenta) OR ABS(NVL(diferenta,0)) > 0.15, RGB(255,235,180), RGB(255,255,255)))", "Column")
.SetAll("DynamicForeColor","IIF(creditnote = 1, RGB(225,0,0), RGB(0,0,0))", "Column")
ENDWITH
@@ -11385,8 +11388,10 @@ DEFINE CLASS frm_import_efactura AS _frmbase OF "_frm_base.vcx"
IF !('DATA_ACT'$upper(THISFORM.filtru_pretty) OR 'DATA_TRIMIS'$upper(THISFORM.filtru_pretty) )
lcData1 = '01' + PADL(INT(m.gnLuna),2,'0') + ALLTRIM(STR(m.gnAn))
lcFiltru = m.lcFiltru + [ and ((extract(year from data_act) = ?gnAn and extract(month from data_act) = ?gnLuna) or (data_act is null and data_raspuns >= to_date('] + m.lcData1 + [','ddmmyyyy')))]
*!* data_act pe interval (nu extract(year/month...)) ca sa poata folosi IDX_ANAF_EFACTURA_1(FACTURA_EMISA,XDATA_ACT,DATA_RASPUNS)
ldData1 = GOMONTH(m.ldData1, 1)
lcData2 = '01' + PADL(MONTH(m.ldData1),2,'0') + ALLTRIM(STR(YEAR(m.ldData1)))
lcFiltru = m.lcFiltru + [ and ((data_act >= to_date('] + m.lcData1 + [','ddmmyyyy') and data_act < to_date('] + m.lcData2 + [','ddmmyyyy')) or (data_act is null and data_raspuns >= to_date('] + m.lcData1 + [','ddmmyyyy')))]
ENDIF
* Filtre buton cautare