From 377ee33fac772a5badead0da1540f73cd4bb9b71 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Tue, 15 Sep 2026 17:00:47 +0300 Subject: [PATCH] Plati la buget din importul de extrase: recunoastere dupa IBAN Trezorerie (TVA 4423, CAM 436, cont unic defalcat din frm_modific2024) Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01LBKZQUq6vimKuAFsrS2D1s --- clase/omodificari.vc2 | 162 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 161 insertions(+), 1 deletion(-) diff --git a/clase/omodificari.vc2 b/clase/omodificari.vc2 index 1c06f48..46728aa 100644 --- a/clase/omodificari.vc2 +++ b/clase/omodificari.vc2 @@ -6811,14 +6811,19 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" *m: calculeaza_valori_rul *m: ccontrol_assign *m: creeaza_note_tva_incasare + *m: defalcarebuget *m: do_adauga_rul *m: do_adauga_tva_exigibil *m: do_copie_rul *m: do_import *m: do_modifica_explicatie_tva *m: do_sterge_rul + *m: esteplatanedefalcata + *m: esterandbugetnedefalcat + *m: gridrightclickbuget *m: grid_focus_prima_coloana *m: resize_grid1 + *m: saltplatabuget *m: salveazaxml *m: semnaturadivergentesincronizare *m: sincronizeaza_nnir @@ -6829,6 +6834,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" *m: verificaavertizareexigibilizaretva *p: cacont *p: ccont + *p: ccontbugetanalitic *p: ccontrol *p: cpaymentcode *p: csemnaturasincronizare @@ -6871,6 +6877,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" BorderStyle = 3 cacont = ccont = + ccontbugetanalitic = cpaymentcode = csemnaturasincronizare = DoCreate = .T. @@ -13071,7 +13078,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" PROCEDURE ActualizeazaTotaluriExtrase *!* SQL, nu SUM/FOR: ignora SET FILTER, WHERE exclude randurile sterse - LOCAL lnIncasari, lnPlati, lnSelect, lcNuBate, lcTooltip, lcIban, lnCalculat, llBate, lnVerificate, lnSoldNote, lnSoldExtras + LOCAL lnIncasari, lnPlati, lnSelect, lcNuBate, lcTooltip, lcIban, lnCalculat, llBate, lnVerificate, lnSoldNote, lnSoldExtras, lnRecnoBuget, lnPlatiBuget IF !This.lActivExtrase OR !USED('tact') RETURN ENDIF @@ -13142,6 +13149,21 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" IF This.lblExtraseAutosalvare.Visible This.lblExtraseAutosalvare.Left = This.lblExtraseTotaluri.Left + This.lblExtraseTotaluri.Width + 12 ENDIF + IF Type('This.lblPlatiBuget') = 'O' + lnSelect = SELECT() + SELECT tact + lnRecnoBuget = RECNO() + COUNT FOR This.EsteRandBugetNedefalcat(.T.) TO lnPlatiBuget + TRY + GO m.lnRecnoBuget + CATCH + GO TOP + ENDTRY + SELECT (m.lnSelect) + This.lblPlatiBuget.Visible = m.lnPlatiBuget > 0 + This.lblPlatiBuget.Caption = 'Plati la buget de defalcat: ' + ALLTRIM(TRANSFORM(m.lnPlatiBuget)) + This.lblPlatiBuget.Left = IIF(This.lblExtraseAutosalvare.Visible, This.lblExtraseAutosalvare.Left + This.lblExtraseAutosalvare.Width, This.lblExtraseTotaluri.Left + This.lblExtraseTotaluri.Width) + 12 + ENDIF ENDPROC PROCEDURE ActualizeazaVerdictActRul @@ -13784,6 +13806,32 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" ENDPROC + PROCEDURE DefalcareBuget + LOCAL lnRec, loFrm, lcGrupa, lnOptGrupa + lnRec = RECNO('tact') + lcGrupa = Alltrim(Nvl(tact.cbuget,'')) + IF EMPTY(m.lcGrupa) + lnOptGrupa = xmenu('Cont unic;TVA;CAM') + IF EMPTY(m.lnOptGrupa) + RETURN + ENDIF + lcGrupa = Icase(m.lnOptGrupa = 1, 'CU', m.lnOptGrupa = 2, 'TVA', 'CAM') + ENDIF + IF !IncarcaDefalcareBuget(m.lcGrupa) + RETURN + ENDIF + loFrm = CREATEOBJECT('frmDefalcareBuget', tact.dataact, tact.suma, m.lcGrupa, tact.explicatia) + loFrm.Show(1) + IF gnButon = 1 + AplicaDefalcareBuget(m.lnRec, m.lcGrupa) + Thisform.CalculeazaTotal() + Thisform.Grid1.Refresh() + ENDIF + IF USED('cDefalcare') + USE IN cDefalcare + ENDIF + ENDPROC + PROCEDURE do_adauga *!* 27.07.2011 *!* marius.mutu @@ -14482,6 +14530,41 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" *!* RETURN ll_l ENDPROC + PROCEDURE EstePlataNedefalcata + IF Type('tact.cbuget') <> 'C' OR Deleted('tact') OR Alltrim(Nvl(tact.csursa_f,'')) == 'B' + RETURN .F. + ENDIF + IF Left(Nvl(tact.scc,''),3) <> '512' + RETURN .F. + ENDIF + RETURN Nvl(tact.ngrupa,0) = 0 OR !Empty(Nvl(tact.cbuget,'')) + ENDPROC + + PROCEDURE EsteRandBugetNedefalcat + LPARAMETERS tlSemnalStrict + IF Type('tact.cbuget') <> 'C' OR Deleted('tact') OR Alltrim(Nvl(tact.csursa_f,'')) == 'B' + RETURN .F. + ENDIF + IF Alltrim(tact.cbuget) == 'CU' + RETURN Alltrim(Nvl(tact.scd,'')) == '4481' + ENDIF + IF !Inlist(Alltrim(tact.cbuget), 'TVA', 'CAM') + RETURN .F. + ENDIF + IF !m.tlSemnalStrict + RETURN .T. + ENDIF + RETURN Empty(Nvl(tact.ascd,'')) AND (',' + Alltrim(Nvl(tact.scd,'')) + ',') $ This.cContBugetAnalitic + ENDPROC + + PROCEDURE GridRightClickBuget + IF Thisform.lActivExtrase AND Type('Thisform.cmdDefalcareBuget') = 'O' AND Thisform.cmdDefalcareBuget.Enabled + IF xmenu('Defalcare plata la buget') = 1 + Thisform.DefalcareBuget() + ENDIF + ENDIF + ENDPROC + PROCEDURE grid_focus_prima_coloana Local lnColumns, loColumn, loGrid, i Local lcColumn @@ -14913,6 +14996,11 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" IF This.lActivExtrase This.lblExtraseTotaluri.Top = this.grid1.Top + this.grid1.Height + 4 This.lblExtraseAutosalvare.Top = this.grid1.Top + this.grid1.Height + 4 + IF Type('This.lblPlatiBuget') = 'O' + This.lblPlatiBuget.Top = this.grid1.Top + this.grid1.Height + 4 + This.cmdDefalcareBuget.Left = This.Command4.Left + This.cmdDefalcareBuget.Top = This.Command4.Top + This.Command4.Height + ENDIF ENDIF This.aseaza_pagina_articole() @@ -14929,6 +15017,31 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" IF This.lActivExtrase This.lblExtraseTotaluri.Top = this.grid1.Top + this.grid1.Height + 4 This.lblExtraseAutosalvare.Top = this.grid1.Top + this.grid1.Height + 4 + IF Type('This.lblPlatiBuget') = 'O' + This.lblPlatiBuget.Top = this.grid1.Top + this.grid1.Height + 4 + This.cmdDefalcareBuget.Left = This.Command4.Left + This.cmdDefalcareBuget.Top = This.Command4.Top + This.Command4.Height + ENDIF + ENDIF + ENDPROC + + PROCEDURE SaltPlataBuget + LOCAL lnRec + lnRec = RECNO('tact') + SELECT tact + LOCATE FOR This.EsteRandBugetNedefalcat(.T.) AND RECNO() > m.lnRec + IF !FOUND() + LOCATE FOR This.EsteRandBugetNedefalcat(.T.) + ENDIF + IF FOUND() + Thisform.Grid1.SetFocus() + Thisform.Grid1.Refresh() + ELSE + TRY + GO m.lnRec + CATCH + GO TOP + ENDTRY ENDIF ENDPROC @@ -15060,6 +15173,45 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" this.grid1.Column1.ControlSource = "IIF(tact.npoz > 0, TRANSFORM(tact.npoz) + tact.csursa_f, NRCRT())" this.grid1.Column1.DynamicBackColor = "IIF(tact.npoz > 0, IIF(MOD(tact.ngrupa,2)=1, RGB(198,224,255), RGB(225,210,255)), IIF(ALES, RGB(255,255,225), RGB(255,255,255)))" ENDIF + IF This.lActivExtrase AND Type('tact.cbuget') = 'C' + LOCAL lcSqlBuget, lnSuccesBuget, lnColBuget, loColBuget, lcExprBuget, lcCtrlBuget + This.cContBugetAnalitic = ',' + lcSqlBuget = [select distinct cont from ] + gcS + [.vplcont_analitic where cont in ('4423','436') and inactiv = 0 and an = ?gnAn] + lnSuccesBuget = goExecutor.oExecute(lcSqlBuget, 'crsContBugetAn') + IF m.lnSuccesBuget >= 0 AND USED('crsContBugetAn') + SELECT crsContBugetAn + SCAN + This.cContBugetAnalitic = This.cContBugetAnalitic + ALLTRIM(cont) + ',' + ENDSCAN + USE IN crsContBugetAn + ENDIF + This.NewObject('lblPlatiBuget', '_label', '_baza.vcx') + This.lblPlatiBuget.ForeColor = RGB(255,0,0) + This.lblPlatiBuget.FontBold = .T. + This.lblPlatiBuget.Visible = .F. + Bindevent(This.lblPlatiBuget, 'Click', This, 'SaltPlataBuget') + This.NewObject('cmdDefalcareBuget', '_commandbutton', '_baza.vcx') + This.cmdDefalcareBuget.Caption = 'Defalcare buget' + This.cmdDefalcareBuget.Width = 110 + This.cmdDefalcareBuget.Enabled = .F. + This.cmdDefalcareBuget.Visible = .T. + Bindevent(This.cmdDefalcareBuget, 'Click', This, 'DefalcareBuget') + This.lblPlatiBuget.Top = This.grid1.Top + This.grid1.Height + 4 + This.cmdDefalcareBuget.Left = This.Command4.Left + This.cmdDefalcareBuget.Top = This.Command4.Top + This.Command4.Height + FOR lnColBuget = 1 TO This.grid1.ColumnCount + loColBuget = This.grid1.Columns(lnColBuget) + lcExprBuget = ALLTRIM(loColBuget.DynamicBackColor) + IF EMPTY(m.lcExprBuget) + lcExprBuget = TRANSFORM(loColBuget.BackColor) + ENDIF + loColBuget.DynamicBackColor = "IIF(Thisform.EsteRandBugetNedefalcat(.T.), RGB(255,200,200), " + m.lcExprBuget + ")" + lcCtrlBuget = loColBuget.CurrentControl + IF !EMPTY(m.lcCtrlBuget) + Bindevent(loColBuget.&lcCtrlBuget, 'RightClick', This, 'GridRightClickBuget') + ENDIF + ENDFOR + ENDIF IF Type('tact.dublura') = 'L' * randurile deja contate intr-un import anterior (90023), pastrate la raspunsul Nu, apar gri peste orice alta culoare de coloana LOCAL lnColDup, loColDup, lcExprDup @@ -15781,6 +15933,9 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" ENDIF && llReadOnly + IF Type('Thisform.cmdDefalcareBuget') = 'O' + Thisform.cmdDefalcareBuget.Enabled = !m.llReadOnly AND Thisform.EstePlataNedefalcata() + ENDIF IF Thisform.lActivExtrase Thisform.nContorAutosalvare = Thisform.nContorAutosalvare + 1 IF Thisform.nContorAutosalvare >= 10 @@ -15814,8 +15969,13 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" lcTip = 'Avans: rest peste facturi - verificati' CASE tact.csursa_f = 'M' lcTip = 'Document pereche ales de operator' + CASE tact.csursa_f = 'B' + lcTip = 'Plata la buget defalcata pe conturi' ENDCASE ENDIF + IF Thisform.EsteRandBugetNedefalcat(.T.) + lcTip = 'Plata la buget - apasati Defalcare buget' + ENDIF This.ToolTipText = m.lcTip ENDPROC