From 4784bb0752f42c19860a90db2d2b32ba30c93baf Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Fri, 18 Sep 2026 15:21:17 +0300 Subject: [PATCH] sync SVN r18177 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01QGrSUJc5CBmgeDRUGJX7j3 --- Programe/oproceduri_import.prg | 58 ++++++++++++++++++++++++++-------- changelog_roacont.txt | 11 +++++++ 2 files changed, 56 insertions(+), 13 deletions(-) diff --git a/Programe/oproceduri_import.prg b/Programe/oproceduri_import.prg index 50334be..55b59ab 100644 --- a/Programe/oproceduri_import.prg +++ b/Programe/oproceduri_import.prg @@ -156,7 +156,7 @@ Define Class ImportNote As Custom Space(4) As scd, Space(4) As scc, Space(4) As ascd, Space(4) As ascc, ; Cast(Null As N(10)) As id_partd, Cast(Null As N(10)) As id_partc, Space(100) As partd, Space(100) As partc, ; Cast(Null As N(10)) As id_part, SPACE(100) as partener, ; - Cast(0 As I) As id_factd, Cast(0 As I) As id_factc, Cast(0 As I) As pereched, Cast(0 As I) As perechec, ; + Cast(0 As I) As id_factd, Cast(0 As I) As id_factc, Cast(0 As N(20)) As pereched, Cast(0 As N(20)) As perechec, ; Cast(Null As I) As id_fdoc, Space(50) As fdoc, .F. As listoric, ; Cast(0 As I) As ngrupa, Cast(0 As I) As npoz, Space(1) As csursa_f, Cast(0 As I) As nordine ; From C_IMPORT_TEMP ; @@ -484,7 +484,7 @@ Define Class ExtrasBanca As Custom [and (a.an*12+a.luna) >= (?gnAn*12+?gnLuna-12) and p.sters = 0 and p.inactiv = 0] llIstoricOk = goExecutor.oExecuta(m.lcSqlIstoric, "cIstoricBrut") If m.llIstoricOk - Create Cursor cCheiIstoric (cheie C(63), id_part N(9)) + Create Cursor cCheiIstoric (cheie C(63), id_part N(10)) Select cIstoricBrut Scan lcCheieTxt = TextIstoricNormalizat(explicatia) @@ -522,12 +522,12 @@ Define Class ExtrasBanca As Custom Index On id_part Tag id_part Use In (Select("cSolduriBrut")) Endif - Create Cursor cAlocTemp (nrec I, npoz I, id_fact I, nract I, cont C(4) Null, acont C(20) Null, suma N(15, 2), csursa C(1)) + Create Cursor cAlocTemp (nrec I, npoz I, id_fact I, nract N(20), cont C(4) Null, acont C(20) Null, suma N(15, 2), csursa C(1)) Endif * Caut/creez parteneri - Create Cursor cGrupParteneriCui (id_part_ales N(9), id_part N(9), denumire C(100)) - Create Cursor cIbanDeSalvat (id_part N(9), iban C(24), denumire C(100)) + Create Cursor cGrupParteneriCui (id_part_ales N(10), id_part N(10), denumire C(100)) + Create Cursor cIbanDeSalvat (id_part N(10), iban C(24), denumire C(100)) SELECT distinct cod_fiscal, denumire, iban FROM cActTemp INTO CURSOR cParteneriTemp READWRITE SELECT cParteneriTemp lcRecc = Transform(Reccount()) @@ -801,7 +801,10 @@ Define Class ExtrasBanca As Custom Case m.lcTip2 = This.cTipAlte && "ALT" && alte cheltuieli/venituri exploatare lcContD = "6588" Case m.lcTip2 = This.cTipTerti && "TRF" && terti (clienti/furnizori) - lcContD = "401" + lcContD = ContSalariiDinText(cActTemp.explicatie, Evl(Alltrim(Nvl(cActTemp.denumire, '')), m.lcPartener)) + If Empty(m.lcContD) + lcContD = "401" + Endif Case m.lcTip2 = This.cTipBuget && "BUG" && datorii la buget lcContD = Icase(m.lcGrupaBuget = 'TVA', '4423', m.lcGrupaBuget = 'CAM', '436', '4481') If Inlist(m.lcGrupaBuget, 'TVA', 'CAM') @@ -1189,11 +1192,12 @@ Function ContAvans Endfunc * -------------------------------------------------------------------- -* Candidatii de facturi ai unui partener din cSolduriFact: intai doar tcCont, altfel orice cont al partenerului -* (404/461/462 devin candidati doar prin acest fallback) - cursor cCandRand (nract, dataact, nrecsold), ordonat +* Candidatii de facturi ai unui partener din cSolduriFact: intai doar tcCont, altfel (fara tlDoarContul) conturile de acelasi +* sens - 401 -> 404/462, 4111 -> 461 - cursor cCandRand (nract, dataact, nrecsold), ordonat * -------------------------------------------------------------------- Procedure DeschideCandidatiFactura - Lparameters tnIdPart, tcCont + Lparameters tnIdPart, tcCont, tlDoarContul + Local lcAlteConturi If Used('cCandRand') Use In (Select('cCandRand')) @@ -1203,11 +1207,12 @@ Procedure DeschideCandidatiFactura Where id_part = m.tnIdPart And Alltrim(Cont) = m.tcCont And ramas > 0 ; Order By dataact, nract ; Into Cursor cCandRand Readwrite - If Reccount('cCandRand') = 0 + If Reccount('cCandRand') = 0 And !m.tlDoarContul + lcAlteConturi = Icase(m.tcCont = '401', ',404,462,', m.tcCont = '4111', ',461,', '') Use In (Select('cCandRand')) Select nract, dataact, Recno() As nrecsold ; From cSolduriFact ; - Where id_part = m.tnIdPart And ramas > 0 ; + Where id_part = m.tnIdPart And (',' + Alltrim(Cont) + ',') $ m.lcAlteConturi And ramas > 0 ; Order By dataact, nract ; Into Cursor cCandRand Readwrite Endif @@ -1307,12 +1312,12 @@ Procedure AlocaSumaExacta Endproc * -------------------------------------------------------------------- -* F - aloca in ordine cronologica pana la epuizarea sumei (ultima factura poate ramane platita partial) +* F - aloca in ordine cronologica pana la epuizarea sumei (ultima factura poate ramane platita partial), doar pe contul randului * -------------------------------------------------------------------- Procedure AlocaFifo Lparameters tnIdPart, tcCont, tnRecCrt, tnRest, tnNpoz, tcContAloc - DeschideCandidatiFactura(m.tnIdPart, m.tcCont) + DeschideCandidatiFactura(m.tnIdPart, m.tcCont, .T.) Select cCandRand Scan If m.tnRest <= 0 @@ -1325,6 +1330,33 @@ Procedure AlocaFifo Use In (Select('cCandRand')) Endproc +* -------------------------------------------------------------------- +* Cont de salarii dupa cuvintele din explicatie: LICHIDARE/SALARIU/SALARII -> 421, AVANS -> 425; +* gol daca nu se potriveste sau daca beneficiarul are forma de societate in denumire (SA, SRL, PFA...) +* -------------------------------------------------------------------- +Function ContSalariiDinText + Lparameters tcText, tcBeneficiar + Local lcText, lcCont, lcBeneficiar + + lcText = ' ' + Chrtran(Upper(Nvl(m.tcText, '')), '/.,;:-_()', Space(9)) + ' ' + lcText = Strtran(m.lcText, ' LICHIDARE DEPOZIT ', ' ') + Do Case + Case ' LICHIDARE ' $ m.lcText Or ' SALARIU ' $ m.lcText Or ' SALARII ' $ m.lcText + lcCont = '421' + Case ' AVANS ' $ m.lcText + lcCont = '425' + Otherwise + Return '' + Endcase + + lcBeneficiar = ' ' + Chrtran(Strtran(Upper(Nvl(m.tcBeneficiar, '')), '.', ''), '/,;:-_()', Space(8)) + ' ' + If ' SA ' $ m.lcBeneficiar Or ' SRL ' $ m.lcBeneficiar Or ' SNC ' $ m.lcBeneficiar Or ' SCS ' $ m.lcBeneficiar Or ; + ' RA ' $ m.lcBeneficiar Or ' PFA ' $ m.lcBeneficiar Or ' II ' $ m.lcBeneficiar Or ' IF ' $ m.lcBeneficiar + Return '' + Endif + Return m.lcCont +Endfunc + * -------------------------------------------------------------------- * Numere de document din text (explicatie+documente), cifre lungi de minim 3, fara cod_fiscal/iban * -------------------------------------------------------------------- diff --git a/changelog_roacont.txt b/changelog_roacont.txt index 928c6fd..03ccc62 100644 --- a/changelog_roacont.txt +++ b/changelog_roacont.txt @@ -1,3 +1,14 @@ + +