sync SVN r18177

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QGrSUJc5CBmgeDRUGJX7j3
This commit is contained in:
2026-09-18 15:21:17 +03:00
parent 374c33a5a7
commit 4784bb0752
2 changed files with 56 additions and 13 deletions

View File

@@ -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
* --------------------------------------------------------------------

View File

@@ -1,3 +1,14 @@
<!--
18/09/2026
ROACONT - 2.11.80
:eroare:
Import extrase bancare. S-a corectat eroarea "depasire numerica" la salvarea notelor, aparuta cand se asociau documente cu numar mare.
:modificare:
Import extrase bancare. Platile catre angajati nu mai sunt defalcate automat pe deconturi sau debitori; platile de tip LICHIDARE/SALARIU/SALARII se propun pe contul 421, iar AVANS pe contul 425.
-->
<!--
16/09/2026
ROACONT - 2.11.79