sync SVN r18185

This commit is contained in:
2026-09-19 18:02:09 +03:00
parent b851051c44
commit 4eae0bd4a6
2 changed files with 466 additions and 131 deletions

View File

@@ -320,6 +320,12 @@ Procedure aleg_document_pereche
If gnButon = 1
Select (lcSelAct)
Delete
lnSubPozAloc = 0
If Type('toAct.ngrupa') = 'N' && rand negrupat: grupa noua cu pozitii 1..n (1M, 2M...); rand deja grupat: pastreaza grupa/pozitia
Local lnGrupaPereche
Calculate Max(ngrupa) To lnGrupaPereche
lnGrupaPereche = Iif(toAct.npoz > 0, toAct.ngrupa, Nvl(m.lnGrupaPereche, 0) + 1)
Endif
Select (lcFis)
Scan For ales
Scatter Name oper
@@ -330,8 +336,20 @@ Procedure aleg_document_pereche
If Type('toAct.Suma_val')# 'U'
Replace Suma_val With oper.sumaachi2
Endif
If Type('toAct.nordine') = 'N'
Replace nordine With toAct.nordine + m.lnSubPozAloc
Endif
If Type('toAct.ngrupa') = 'N'
Replace ngrupa With m.lnGrupaPereche, npoz With Iif(toAct.npoz > 0, toAct.npoz, m.lnSubPozAloc + 1), csursa_f With 'M'
Endif
lnSubPozAloc = m.lnSubPozAloc + 1
Select (lcFis)
Endscan
Select (lcSelAct)
If Type('toAct.nordine') = 'N' && ordine de afisare pe nordine, ca grupul sa ramana alaturat
Index On Iif(nordine = 0, 2147483647, nordine) Tag ordtact Additive && randurile noi fara nordine raman la sfarsit
Set Order To Tag ordtact
Endif
Else
lnSucces = -1
Endif
@@ -555,7 +573,7 @@ select p.acont || nvl2(p.cont_alt, ' - ' || p.cont_alt, '') || nvl2(p.cod, ' - '
************************** SFARSIT: verific_analitic *****************************
************************** INCEPUT: verificare_note_contabile *****************************
Procedure verificare_note_contabile
Parameters tcAct,tlVerificAnalitic,tlAlegPartener, tlNuVerificCont
Parameters tcAct,tlVerificAnalitic,tlAlegPartener, tlNuVerificCont, tlFaraMesaj
*!* 03.05.2013 : am adaugat lcIdFact, lcMesajIdFact
Local lcInMesaj, lcInMesajAcont, lcInMesajP, lcInMesajIreg, lcMesaj, lcInMesajPSters, lcAct, lnId_set, ll_return, lcIdFact, lcMesajIdFact
@@ -568,6 +586,16 @@ Procedure verificare_note_contabile
lcAct = Alltrim(tcAct)
Endif
*!* 18.09.2026
*!* marius.mutu
*!* marcaj opt-in al randurilor cu campuri lipsa, doar daca apelantul are campul clipsa pe cursor
Local llMarcajLipsuri, llMesajConstruit, lcClipsaRand
llMarcajLipsuri = (Type(lcAct + '.clipsa') = 'C')
llMesajConstruit = .F.
If llMarcajLipsuri
Replace All clipsa With '' In (lcAct)
Endif
Select (lcAct)
lnNrNota=1
Scan For Suma <> 0
@@ -581,46 +609,73 @@ Procedure verificare_note_contabile
*!* 07.05.2013 ^
*!* 11.03.2008
*!* tlNuVerificCont - nu se verifica conturile
lcClipsaRand = ''
If !tlNuVerificCont
*!* la clasele 8 si 9 se poate sa nu fie contul corespondent completat
If Empty(lcScd) And !Inlist(Left(lcScc,1),'8','9')
ll_return = .F.
lcMesaj = lcMesaj + ',' + 'contul debitor'
If !llMesajConstruit
lcMesaj = lcMesaj + ',' + 'contul debitor'
Endif
lcClipsaRand = lcClipsaRand + 'S'
Endif
If Empty(lcScc) And !Inlist(Left(lcScd,1),'8','9')
ll_return = .F.
lcMesaj = lcMesaj + ',' + 'contul creditor'
If !llMesajConstruit
lcMesaj = lcMesaj + ',' + 'contul creditor'
Endif
lcClipsaRand = lcClipsaRand + 'C'
Endif
Endif
*!* 11.03.2008 ^
If Empty(nract)
ll_return = .F.
lcMesaj = lcMesaj + ',' + 'nr.document'
If !llMesajConstruit
lcMesaj = lcMesaj + ',' + 'nr.document'
Endif
lcClipsaRand = lcClipsaRand + 'N'
Endif
If (!Empty(Suma_val) Or !Empty(Curs)) And Empty(Id_Valuta)
ll_return = .F.
lcMesaj = lcMesaj + ',' + 'nume valuta'
If !llMesajConstruit
lcMesaj = lcMesaj + ',' + 'nume valuta'
Endif
lcClipsaRand = lcClipsaRand + 'V'
Endif
If Type('cu_tva')<>'U'
If cu_tva = 1 And Empty(Nvl(id_jtva_coloana,0))
ll_return = .F.
lcMesaj = lcMesaj + ',' + 'explicatie TVA'
If !llMesajConstruit
lcMesaj = lcMesaj + ',' + 'explicatie TVA'
Endif
lcClipsaRand = lcClipsaRand + 'T'
Endif
Endif
If llMarcajLipsuri And !Empty(lcClipsaRand)
Replace clipsa With Alltrim(clipsa) + lcClipsaRand In (lcAct)
Endif
If !ll_return
*!* modificare ROAPRODUCTIE v 2.0.2
*!* aMESSAGEBOX("La nota nr. "+Alltrim(Str(lnNrNota))+" nu ati completat campu"+ Iif(At([,],lcMesaj,2)>0,[rile],[l]) + ;
*!* ": "+Substr(lcMesaj,2,60)+"...",0+48,"Atentie")
lcMesaj = "La nota nr. "+Alltrim(Str(lnNrNota))+" nu ati completat campu"+ Iif(At([,],lcMesaj,2)>0,[rile],[l]) + ;
": "+Substr(lcMesaj,2,60)+"..." + Chr(13) + Chr(10) + Chr(13)+ Chr(10)
If !llMesajConstruit
lcMesaj = "La nota nr. "+Alltrim(Str(lnNrNota))+" nu ati completat campu"+ Iif(At([,],lcMesaj,2)>0,[rile],[l]) + ;
": "+Substr(lcMesaj,2,60)+"..." + Chr(13) + Chr(10) + Chr(13)+ Chr(10)
llMesajConstruit = .T.
Endif
*!* modificare ROAPRODUCTIE v 2.0.2 ^
Exit
If !llMarcajLipsuri
Exit
Endif
Endif
lnNrNota=lnNrNota+1
Endscan
If ll_return
lcMesaj = []
If ll_return Or llMarcajLipsuri
*!* pastreaza mesajul trecerii 1 cand se intra doar datorita marcajului (ll_return deja .F.)
If ll_return
lcMesaj = []
Endif
Select (lcAct)
Go Top
@@ -657,14 +712,24 @@ Procedure verificare_note_contabile
lcLista = lcLista + ',' + Alltrim(Cont)
Endscan
lcSql = 'select distinct c.cont as contpart, c.fel_cont, c.cu_inregistrari, c.explicatie as explic_cont,e.cont_c as exceptie, e.debit as pozitie, e.invers, 0 as gasit ' + ;
'from ' + gcS + '.vconfig_cont_ireg c left join ' + gcS + '.exceptii_ireg e on c.cont = e.cont and e.invers = 1 ' + ;
'where to_number(c.cont) in (' + lcLista + ')'
lcCursor = 'verif_part'
*!* 19.09.2026
*!* marius.mutu
*!* verificare silentioasa: verif_part local din cache-ul crsLipsuriCfg, fara Oracle
If tlFaraMesaj And Used('crsLipsuriCfg')
Select crsLipsuriCfg.contpart, crsLipsuriCfg.fel_cont, crsLipsuriCfg.cu_inregistrari, crsLipsuriCfg.explic_cont, crsLipsuriCfg.exceptie, crsLipsuriCfg.pozitie, crsLipsuriCfg.invers, 0 As gasit ;
From crsLipsuriCfg Inner Join tcont On Alltrim(crsLipsuriCfg.contpart) = Alltrim(tcont.cont) ;
Into Cursor verif_part Readwrite
lnSucces = 1
Else
lcSql = 'select distinct c.cont as contpart, c.fel_cont, c.cu_inregistrari, c.explicatie as explic_cont,e.cont_c as exceptie, e.debit as pozitie, e.invers, 0 as gasit ' + ;
'from ' + gcS + '.vconfig_cont_ireg c left join ' + gcS + '.exceptii_ireg e on c.cont = e.cont and e.invers = 1 ' + ;
'where to_number(c.cont) in (' + lcLista + ')'
lcCursor = 'verif_part'
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
If lnSucces < 0
aMESSAGEBOX('Modificare:Verific completare id_part ' +goExecutor.cEroare,0+16,"Eroare")
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
If lnSucces < 0 And !tlFaraMesaj
aMESSAGEBOX('Modificare:Verific completare id_part ' +goExecutor.cEroare,0+16,"Eroare")
Endif
Endif
If lnSucces > 0
@@ -673,72 +738,91 @@ Procedure verificare_note_contabile
Scan For !Empty(Suma)
Scatter Name loCont
Select verif_part
Locate For contpart=loCont.scd
If Found()
If Empty(loCont.Id_partd) And !(loCont.scd$lcInMesajP)
lcInMesajP=lcInMesajP+','+loCont.scd
Replace gasit With 1
Endif
If Empty(loCont.pereched) And cu_inregistrari = 1 And fel_cont = 1 And !(loCont.scd$lcInMesajIreg)
Locate For contpart=loCont.scd And inlist(upper(exceptie), 'X', upper(loCont.scc)) And fel_cont = 1 And pozitie = 0 And invers = 1
If !Found()
lcInMesajIreg = lcInMesajIreg + ',' + loCont.scd
*!* contul poate fi gol (clasa 8/9 sau tlNuVerificCont) - Locate cu criteriu gol ar gasi primul rand din verif_part (SET EXACT OFF)
If !Empty(loCont.scd)
Select verif_part
Locate For contpart=loCont.scd
If Found()
If Empty(loCont.Id_partd) And !(loCont.scd$lcInMesajP)
lcInMesajP=lcInMesajP+','+loCont.scd
Replace gasit With 1
Endif
If llMarcajLipsuri And Empty(loCont.Id_partd)
Replace clipsa With Alltrim(clipsa) + 'p' In (lcAct)
Endif
If Empty(loCont.pereched) And cu_inregistrari = 1 And fel_cont = 1 And !(loCont.scd$lcInMesajIreg)
Locate For contpart=loCont.scd And inlist(upper(exceptie), 'X', upper(loCont.scc)) And fel_cont = 1 And pozitie = 0 And invers = 1
If !Found()
lcInMesajIreg = lcInMesajIreg + ',' + loCont.scd
If llMarcajLipsuri
Replace clipsa With Alltrim(clipsa) + 'd' In (lcAct)
Endif
Endif
Endif
*!* modificare 06.11.2007
Else
If !Empty(loCont.Id_partd) And !tlFaraMesaj
Select (lcAct)
lcInMesajPSters = lcInMesajPSters + ',' + loCont.scd
Replace Id_partd With 0,partd With ''
Endif
*!* modificare 06.11.2007 ^
Endif
*!* modificare 06.11.2007
Else
If !Empty(loCont.Id_partd)
Select (lcAct)
lcInMesajPSters = lcInMesajPSters + ',' + loCont.scd
Replace Id_partd With 0,partd With ''
Endif
*!* modificare 06.11.2007 ^
Endif
Select verif_part
Locate For contpart=loCont.scc
If Found()
If Empty(loCont.Id_partc) And !(loCont.scc$lcInMesajP)
lcInMesajP=lcInMesajP+','+loCont.scc
Replace gasit With 1
Endif
If cu_inregistrari = 1 And fel_cont = 0 And Empty(loCont.perechec) And !(loCont.scc$lcInMesajIreg)
Locate For contpart=loCont.scc And inlist(upper(exceptie), 'X', upper(loCont.scd)) And fel_cont = 0 And pozitie = 1 And invers = 1
If !Found()
lcInMesajIreg = lcInMesajIreg + ',' + loCont.scc
If !Empty(loCont.scc)
Select verif_part
Locate For contpart=loCont.scc
If Found()
If Empty(loCont.Id_partc) And !(loCont.scc$lcInMesajP)
lcInMesajP=lcInMesajP+','+loCont.scc
Replace gasit With 1
Endif
If llMarcajLipsuri And Empty(loCont.Id_partc)
Replace clipsa With Alltrim(clipsa) + 'q' In (lcAct)
Endif
If cu_inregistrari = 1 And fel_cont = 0 And Empty(loCont.perechec) And !(loCont.scc$lcInMesajIreg)
Locate For contpart=loCont.scc And inlist(upper(exceptie), 'X', upper(loCont.scd)) And fel_cont = 0 And pozitie = 1 And invers = 1
If !Found()
lcInMesajIreg = lcInMesajIreg + ',' + loCont.scc
If llMarcajLipsuri
Replace clipsa With Alltrim(clipsa) + 'c' In (lcAct)
Endif
Endif
Endif
*!* modificare 06.11.2007
Else
If !Empty(loCont.Id_partc) And !tlFaraMesaj
Select (lcAct)
lcInMesajPSters = lcInMesajPSters + ',' + loCont.scc
Replace Id_partc With 0,partc With ''
Endif
*!* modificare 06.11.2007 ^
Endif
*!* modificare 06.11.2007
Else
If !Empty(loCont.Id_partc)
Select (lcAct)
lcInMesajPSters = lcInMesajPSters + ',' + loCont.scc
Replace Id_partc With 0,partc With ''
Endif
*!* modificare 06.11.2007 ^
Endif
Select (lcAct)
Endscan
*!* modificare 06.11.2007
Else
Select (lcAct)
Scan
If !Empty(Id_partd)
lcInMesajPSters = lcInMesajPSters + ',' + Alltrim(scd)
Replace Id_partd With 0,partd With ''
Endif
If !Empty(Id_partc)
lcInMesajPSters = lcInMesajPSters + ',' + Alltrim(scc)
Replace Id_partc With 0,partc With ''
Endif
Endscan
If !tlFaraMesaj
Select (lcAct)
Scan
If !Empty(Id_partd)
lcInMesajPSters = lcInMesajPSters + ',' + Alltrim(scd)
Replace Id_partd With 0,partd With ''
Endif
If !Empty(Id_partc)
lcInMesajPSters = lcInMesajPSters + ',' + Alltrim(scc)
Replace Id_partc With 0,partc With ''
Endif
Endscan
Endif
Endif
*!* modificare 06.11.2007 ^
Endif
*!* modificare 07.05.2013
If lnSucces > 0 And !Empty(Nvl(lcIdFact,[]))
If lnSucces > 0 And !Empty(Nvl(lcIdFact,[])) And !tlFaraMesaj
lcSql = [select pack_contafin.verifica_id_documente(']+lcIdFact+[') as rez from dual]
lcCursor = 'crsverifdoc'
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
@@ -766,49 +850,72 @@ Procedure verificare_note_contabile
*!* modificare 07.05.2013 ^
If lnSucces > 0 And tlVerificAnalitic
lcSql=[select CONT, ACONT FROM ] + gcS + [.vplcont_ANALITIC where inactiv = 0 and an = ?gnAn order by cont ]
lcCursor = 'plcontana'
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
*!* verificare silentioasa: plcontana local din cache-ul crsLipsuriPlcont, fara Oracle
If tlFaraMesaj And Used('crsLipsuriPlcont')
Select Cont, Acont From crsLipsuriPlcont Order By Cont Into Cursor plcontana
lnSucces = 1
Else
lcSql=[select CONT, ACONT FROM ] + gcS + [.vplcont_ANALITIC where inactiv = 0 and an = ?gnAn order by cont ]
lcCursor = 'plcontana'
lnSucces = goExecutor.oExecute(lcSql,lcCursor)
If lnSucces < 0
aMESSAGEBOX('Modificare:Verific completare analitic ' +goExecutor.cEroare,0+16,"Eroare")
If lnSucces < 0 And !tlFaraMesaj
aMESSAGEBOX('Modificare:Verific completare analitic ' +goExecutor.cEroare,0+16,"Eroare")
Endif
Endif
If lnSucces > 0
Select (lcAct)
Scan For !Empty(Suma)
Scatter Name loCont
If Empty(Nvl(loCont.ascd, ''))
Select plcontana
Locate For Alltrim(Cont)=Alltrim(loCont.scd)
If Found()
If !(loCont.scd$lcInMesaj)
lcInMesaj=lcInMesaj+','+loCont.scd
*!* contul poate fi gol (clasa 8/9 sau tlNuVerificCont) - Locate cu criteriu gol ar gasi primul rand din plcontana (SET EXACT OFF)
If !Empty(loCont.scd)
If Empty(Nvl(loCont.ascd, ''))
Select plcontana
Locate For Alltrim(Cont)=Alltrim(loCont.scd)
If Found()
If !(loCont.scd$lcInMesaj)
lcInMesaj=lcInMesaj+','+loCont.scd
Endif
If llMarcajLipsuri
Replace clipsa With Alltrim(clipsa) + 'a' In (lcAct)
Endif
Endif
Endif
Else
Select plcontana
Locate For Alltrim(Cont)=Alltrim(loCont.scd) And Alltrim(acont) = Alltrim(loCont.ascd)
If !Found()
If !(Alltrim(loCont.scd) + '.' + Alltrim(loCont.ascd)$lcInMesajAcont)
lcInMesajAcont = lcInMesajAcont + ',' + Alltrim(loCont.scd) + '.' + Alltrim(loCont.ascd)
Else
Select plcontana
Locate For Alltrim(Cont)=Alltrim(loCont.scd) And Alltrim(acont) = Alltrim(loCont.ascd)
If !Found()
If !(Alltrim(loCont.scd) + '.' + Alltrim(loCont.ascd)$lcInMesajAcont)
lcInMesajAcont = lcInMesajAcont + ',' + Alltrim(loCont.scd) + '.' + Alltrim(loCont.ascd)
Endif
If llMarcajLipsuri
Replace clipsa With Alltrim(clipsa) + 'a' In (lcAct)
Endif
Endif
Endif
Endif
If Empty(Nvl(loCont.ascc,''))
Select plcontana
Locate For Cont=loCont.scc
If Found()
If !(loCont.scc$lcInMesaj)
lcInMesaj=lcInMesaj+','+loCont.scc
If !Empty(loCont.scc)
If Empty(Nvl(loCont.ascc,''))
Select plcontana
Locate For Cont=loCont.scc
If Found()
If !(loCont.scc$lcInMesaj)
lcInMesaj=lcInMesaj+','+loCont.scc
Endif
If llMarcajLipsuri
Replace clipsa With Alltrim(clipsa) + 'b' In (lcAct)
Endif
Endif
Endif
Else
Select plcontana
Locate For Alltrim(Cont)=Alltrim(loCont.scc) And Alltrim(acont) = Alltrim(loCont.ascc)
If !Found()
If !(Alltrim(loCont.scc) + '.' + Alltrim(loCont.ascc)$lcInMesajAcont)
lcInMesajAcont = lcInMesajAcont + ',' + Alltrim(loCont.scc) + '.' + Alltrim(loCont.ascc)
Else
Select plcontana
Locate For Alltrim(Cont)=Alltrim(loCont.scc) And Alltrim(acont) = Alltrim(loCont.ascc)
If !Found()
If !(Alltrim(loCont.scc) + '.' + Alltrim(loCont.ascc)$lcInMesajAcont)
lcInMesajAcont = lcInMesajAcont + ',' + Alltrim(loCont.scc) + '.' + Alltrim(loCont.ascc)
Endif
If llMarcajLipsuri
Replace clipsa With Alltrim(clipsa) + 'b' In (lcAct)
Endif
Endif
Endif
Endif
@@ -877,7 +984,7 @@ Procedure verificare_note_contabile
lcInMesajP = 'partenerul pentru contul ' + lcInMesajP
Endif
*!* modificare ROAPRODUCTIE v 2.0.2 ^
If tlAlegPartener && dc nu pot sa ma intorc sa completez partenerii
If tlAlegPartener And !tlFaraMesaj && dc nu pot sa ma intorc sa completez partenerii
If Used('verif_part')
*!* modificare ROAPRODUCTIE v 2.0.2
aMESSAGEBOX('Nu ati completat '+ lcInMesajP+' !',48,"Atentie")
@@ -975,7 +1082,10 @@ Procedure verificare_note_contabile
Use In (Select("cduplicatetemp"))
*!* modificare ROAPRODUCTIE v 2.0.2
If !Empty(lcMesaj)
If !Empty(lcMesaj) And !tlFaraMesaj
If llMarcajLipsuri
lcMesaj = lcMesaj + 'Celulele de completat sunt marcate cu rosu in lista.' + Chr(13) + Chr(10)
Endif
aMESSAGEBOX(Space(45) + "REZULTATE VERIFICARI" + Chr(13)+ Chr(10) + Replicate([=],60) + Chr(13)+ Chr(10) + lcMesaj,48,"Atentie")
Endif
*!* modificare ROAPRODUCTIE v 2.0.2 ^
@@ -996,7 +1106,10 @@ Procedure verificare_note_contabile
Use In tcont
Endif
Else
If !Empty(lcMesaj)
If !Empty(lcMesaj) And !tlFaraMesaj
If llMarcajLipsuri
lcMesaj = lcMesaj + 'Celulele de completat sunt marcate cu rosu in lista.' + Chr(13) + Chr(10)
Endif
aMESSAGEBOX(Space(45) + "REZULTATE VERIFICARI" + Chr(13)+ Chr(10) + Replicate([=],60) + Chr(13)+ Chr(10) + lcMesaj,48,"Atentie")
Endif
Endif