diff --git a/clase/omodificari.vc2 b/clase/omodificari.vc2 index de126c2..525ba90 100644 --- a/clase/omodificari.vc2 +++ b/clase/omodificari.vc2 @@ -6798,6 +6798,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" * *m: actualizeazabaratotaluri + *m: actualizeazalabellipsuri *m: actualizeazatotaluriextrase *m: actualizeazaverdictactrul *m: adaugalinietvddinarticol @@ -6823,6 +6824,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" *m: gridrightclickbuget *m: grid_focus_prima_coloana *m: resize_grid1 + *m: saltlipsaurmatoare *m: saltplatabuget *m: salveazaxml *m: semnaturadivergentesincronizare @@ -6832,12 +6834,14 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" *m: updateexplicatiesaftrul *m: valideaza_data *m: verificaavertizareexigibilizaretva + *m: verificalipsurisilentios *p: cacont *p: ccont *p: ccontbugetanalitic *p: ccontrol *p: cpaymentcode *p: csemnaturasincronizare + *p: csemnlipsuri *p: fel_compensare *p: lactivextrase *p: larearticolevanzari @@ -6856,6 +6860,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" *p: nnnirvechi *p: noldsuma && Valoarea la intrarea in campul "Suma" *p: nprimadata + *p: nreclipsuri *p: nsuma && Total suma inregistrari *p: ntaxcode *p: ntipvanzare @@ -6881,6 +6886,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" ccontbugetanalitic = cpaymentcode = csemnaturasincronizare = + csemnlipsuri = DoCreate = .T. FontCharSet = 238 Height = 530 @@ -6902,6 +6908,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" nnnirvechi = 0 noldsuma = 0 nprimadata = 0 + nreclipsuri = 0 nsuma = 0 ntaxcode = 0 ntipvanzare = 0 @@ -13078,6 +13085,33 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" This.pgfArticole.PAGE3.Refresh() ENDPROC + PROCEDURE ActualizeazaLabelLipsuri + *!* 18.09.2026 + *!* marius.mutu + *!* recalculeaza eticheta cu randurile marcate clipsa nevida (verificare_note_contabile) si arata/ascunde eticheta + LOCAL lnLipsuri, lnArea, lnRecno + IF Type('This.lblLipsuri') <> 'O' OR !Used('tact') OR Type('tact.clipsa') <> 'C' + RETURN + ENDIF + lnArea = Select() + lnRecno = Recno('tact') + SELECT tact + COUNT FOR !Empty(clipsa) TO lnLipsuri + IF Between(m.lnRecno, 1, Reccount('tact')) + GO (m.lnRecno) IN tact + ENDIF + IF m.lnArea > 0 + SELECT (m.lnArea) + ENDIF + This.lblLipsuri.Visible = (m.lnLipsuri > 0) + IF m.lnLipsuri > 0 + This.lblLipsuri.Caption = 'Completeaza: ' + Transform(m.lnLipsuri) + This.lblLipsuri.ToolTipText = 'Celulele rosii trebuie completate. Click pentru urmatorul rand.' + This.lblLipsuri.Top = This.grid1.Top + This.grid1.Height + 4 + This.lblLipsuri.Left = IIF(This.lblExtraseAutosalvare.Visible, This.lblExtraseAutosalvare.Left + This.lblExtraseAutosalvare.Width, IIF(This.lblExtraseTotaluri.Visible, This.lblExtraseTotaluri.Left + This.lblExtraseTotaluri.Width, This.cmdSelect.Left + This.cmdSelect.Width)) + 12 + ENDIF + ENDPROC + 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, lnRecnoBuget, lnPlatiBuget @@ -13163,9 +13197,12 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" 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 + This.lblPlatiBuget.Caption = 'Buget: ' + ALLTRIM(TRANSFORM(m.lnPlatiBuget)) + This.lblPlatiBuget.ToolTipText = 'Plati la buget de defalcat - click pentru urmatoarea' + This.lblPlatiBuget.Left = This.Command4.Left + This.lblPlatiBuget.Top = This.cmdDefalcareBuget.Top + This.cmdDefalcareBuget.Height + 2 ENDIF + This.ActualizeazaLabelLipsuri() ENDPROC PROCEDURE ActualizeazaVerdictActRul @@ -13826,6 +13863,10 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" loFrm.Show(1) IF gnButon = 1 AplicaDefalcareBuget(m.lnRec, m.lcGrupa) + TRY + GO m.lnRec IN tact && INDEX ON din ordonare muta pointerul pe primul rand - revin pe primul rand defalcat + CATCH + ENDTRY Thisform.CalculeazaTotal() Thisform.Grid1.Refresh() ENDIF @@ -13834,6 +13875,19 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" ENDIF ENDPROC + PROCEDURE Destroy + *!* 19.09.2026 + *!* marius.mutu + *!* inchide cache-ul local de configurare conturi/plan analitic al verificarii silentioase + IF Used('crsLipsuriCfg') + Use In crsLipsuriCfg + ENDIF + IF Used('crsLipsuriPlcont') + Use In crsLipsuriPlcont + ENDIF + DoDefault() + ENDPROC + PROCEDURE do_adauga *!* 27.07.2011 *!* marius.mutu @@ -14617,6 +14671,20 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" Else llRet = .T. EndIf + *!* 18.09.2026 + *!* marius.mutu + *!* pozitionare pe primul rand cu campuri lipsa (marcaj clipsa) cand verificarea a esuat + If Type('tact.clipsa') = 'C' + This.ActualizeazaLabelLipsuri() + If !m.llRet + Select tact + Locate For !Empty(clipsa) + If Found() + Thisform.Grid1.SetFocus() + Thisform.Grid1.Refresh() + Endif + Endif + Endif *!* 14.03.2008 ^ *!* 13.03.2008 ^ *!* modificare v 2.4.4 @@ -14952,6 +15020,22 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" ENDPROC PROCEDURE Load + *!* coloane de grup (imperechere, defalcare) pe tact daca apelantul nu le-a creat - grid-ul se leaga la construire + IF Used('tact') AND Type('tact.ngrupa') <> 'N' + SELECT *, Cast(0 As I) As ngrupa, Cast(0 As I) As npoz, Space(1) As csursa_f FROM tact INTO CURSOR tact READWRITE + ENDIF + IF Used('tact') AND Type('tact.nordine') <> 'N' + SELECT *, Cast(0 As I) As nordine FROM tact INTO CURSOR tact READWRITE + REPLACE ALL nordine WITH RECNO() * 100 + GO TOP + ENDIF + *!* 18.09.2026 + *!* marius.mutu + *!* campul de marcaj optional pentru randurile cu campuri lipsa (verificare_note_contabile) + IF Used('tact') AND Type('tact.clipsa') <> 'C' + SELECT *, Space(10) As clipsa FROM tact INTO CURSOR tact READWRITE + ENDIF + If !Used('saft_taxtable') update_saft_taxtable() ENDIF @@ -14999,12 +15083,14 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" 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 + This.lblPlatiBuget.Left = This.Command4.Left + This.lblPlatiBuget.Top = This.cmdDefalcareBuget.Top + This.cmdDefalcareBuget.Height + 2 ENDIF ENDIF This.aseaza_pagina_articole() + This.ActualizeazaLabelLipsuri() ENDPROC @@ -15020,11 +15106,36 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" 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 + This.lblPlatiBuget.Left = This.Command4.Left + This.lblPlatiBuget.Top = This.cmdDefalcareBuget.Top + This.cmdDefalcareBuget.Height + 2 ENDIF ENDIF + This.ActualizeazaLabelLipsuri() + ENDPROC + + PROCEDURE SaltLipsaUrmatoare + LOCAL lnRec + lnRec = RECNO('tact') + SELECT tact + IF !EOF() + SKIP + ENDIF + LOCATE REST FOR !EMPTY(clipsa) + IF !FOUND() + LOCATE FOR !EMPTY(clipsa) + ENDIF + IF FOUND() + Thisform.Grid1.SetFocus() + Thisform.Grid1.Refresh() + ELSE + TRY + GO m.lnRec + CATCH + GO TOP + ENDTRY + ENDIF ENDPROC PROCEDURE SaltPlataBuget @@ -15177,6 +15288,56 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" ENDIF *!* 18.09.2026 *!* marius.mutu + *!* evidentiere rosie a celulelor cu campuri lipsa marcate de verificare_note_contabile (litera in tact.clipsa) + IF Type('tact.clipsa') = 'C' + LOCAL lnColLipsa, loColLipsa, lcExprLipsa, lcLitLipsa, lcCondLipsa + LOCAL ARRAY laColLipsa(11,3) + laColLipsa(1,1) = 7 + laColLipsa(1,2) = 'S' + laColLipsa(1,3) = "EMPTY(tact.scd)" + laColLipsa(2,1) = 8 + laColLipsa(2,2) = 'C' + laColLipsa(2,3) = "EMPTY(tact.scc)" + laColLipsa(3,1) = 5 + laColLipsa(3,2) = 'N' + laColLipsa(3,3) = "EMPTY(tact.nract)" + laColLipsa(4,1) = 23 + laColLipsa(4,2) = 'a' + laColLipsa(4,3) = ".T." + laColLipsa(5,1) = 24 + laColLipsa(5,2) = 'b' + laColLipsa(5,3) = ".T." + laColLipsa(6,1) = 6 + laColLipsa(6,2) = 'p' + laColLipsa(6,3) = "EMPTY(NVL(tact.id_partd,0))" + laColLipsa(7,1) = 10 + laColLipsa(7,2) = 'q' + laColLipsa(7,3) = "EMPTY(NVL(tact.id_partc,0))" + laColLipsa(8,1) = 13 + laColLipsa(8,2) = 'd' + laColLipsa(8,3) = "EMPTY(NVL(tact.pereched,0))" + laColLipsa(9,1) = 27 + laColLipsa(9,2) = 'c' + laColLipsa(9,3) = "EMPTY(NVL(tact.perechec,0))" + laColLipsa(10,1) = 29 + laColLipsa(10,2) = 'V' + laColLipsa(10,3) = "EMPTY(NVL(tact.id_valuta,0))" + laColLipsa(11,1) = 35 + laColLipsa(11,2) = 'T' + laColLipsa(11,3) = "EMPTY(NVL(tact.id_jtva_coloana,0))" + FOR lnColLipsa = 1 TO 11 + loColLipsa = This.grid1.Columns(laColLipsa(lnColLipsa,1)) + lcExprLipsa = ALLTRIM(loColLipsa.DynamicBackColor) + IF EMPTY(m.lcExprLipsa) + lcExprLipsa = TRANSFORM(loColLipsa.BackColor) + ENDIF + lcLitLipsa = laColLipsa(lnColLipsa,2) + lcCondLipsa = laColLipsa(lnColLipsa,3) + loColLipsa.DynamicBackColor = "IIF('" + m.lcLitLipsa + "' $ tact.clipsa AND " + m.lcCondLipsa + ", RGB(255,205,205), " + m.lcExprLipsa + ")" + ENDFOR + ENDIF + *!* 18.09.2026 + *!* marius.mutu *!* culoare comuna label/buton cu randul de plata la buget nedefalcat din grid; cursor mana pe label IF This.lActivExtrase AND Type('tact.cbuget') = 'C' LOCAL lcSqlBuget, lnSuccesBuget, lnColBuget, loColBuget, lcExprBuget, lcCtrlBuget @@ -15208,16 +15369,17 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" This.cmdDefalcareBuget.BackColor = This.nColorBuget 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 + This.lblPlatiBuget.Left = This.Command4.Left + This.lblPlatiBuget.Top = This.cmdDefalcareBuget.Top + This.cmdDefalcareBuget.Height + 2 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.), " + ALLTRIM(STR(Thisform.nColorBuget,8,0)) + ", " + m.lcExprBuget + ")" + loColBuget.DynamicBackColor = "IIF(Thisform.EsteRandBugetNedefalcat(.T.) OR Type('tact.csursa_f') = 'C' AND tact.csursa_f == 'B', " + ALLTRIM(STR(Thisform.nColorBuget,8,0)) + ", " + m.lcExprBuget + ")" lcCtrlBuget = loColBuget.CurrentControl IF !EMPTY(m.lcCtrlBuget) Bindevent(loColBuget.&lcCtrlBuget, 'RightClick', This, 'GridRightClickBuget') @@ -15239,6 +15401,22 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" loColDup.DynamicBackColor = "IIF(tact.dublura, RGB(211,211,211), " + m.lcExprDup + ")" ENDFOR ENDIF + *!* 18.09.2026 + *!* marius.mutu + *!* eticheta cu randurile marcate clipsa nevida, sub grid, cu salt la urmatorul rand + IF Type('tact.clipsa') = 'C' + This.NewObject('lblLipsuri', '_label', '_baza.vcx') + This.lblLipsuri.ForeColor = RGB(0,0,0) + This.lblLipsuri.BackStyle = 1 + This.lblLipsuri.BackColor = RGB(255,205,205) + This.lblLipsuri.FontBold = .T. + This.lblLipsuri.MousePointer = 15 + This.lblLipsuri.Visible = .F. + This.lblLipsuri.AutoSize = .T. + This.lblLipsuri.Anchor = 8 + Bindevent(This.lblLipsuri, 'Click', This, 'SaltLipsaUrmatoare') + This.VerificaLipsuriSilentios() + ENDIF This.CalculeazaTotal() *!* 24.05.2011 ^ @@ -15653,6 +15831,40 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" Return (lnRasp = 7) ENDPROC + PROCEDURE VerificaLipsuriSilentios + *!* 19.09.2026 + *!* marius.mutu + *!* verificare silentioasa (fara mesaje, fara efecte pe date) a campurilor lipsa; la primul apel incarca local cache-ul conturi/analitic (crsLipsuriCfg/crsLipsuriPlcont), fara Oracle la fiecare schimbare de rand; repozitioneaza pe randul curent si reactualizeaza eticheta/grid-ul + LOCAL lnRecTact, lcSql, lnSucces + IF !Used('tact') OR Type('tact.clipsa') <> 'C' OR Inlist(This.nid_set, 99998, 90024) + RETURN + ENDIF + IF !Used('crsLipsuriCfg') + 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' + lnSucces = goExecutor.oExecute(lcSql, 'crsLipsuriCfg') + IF lnSucces > 0 + lcSql = 'select CONT, ACONT from ' + gcS + '.vplcont_ANALITIC where inactiv = 0 and an = ?gnAn' + lnSucces = goExecutor.oExecute(lcSql, 'crsLipsuriPlcont') + ENDIF + IF lnSucces < 1 + IF Used('crsLipsuriCfg') + Use In crsLipsuriCfg + ENDIF + IF Used('crsLipsuriPlcont') + Use In crsLipsuriPlcont + ENDIF + ENDIF + ENDIF + lnRecTact = Recno('tact') + verificare_note_contabile('tact', .T., .F., .F., .T.) + IF Between(m.lnRecTact, 1, Reccount('tact')) + GO (m.lnRecTact) IN tact + ENDIF + This.ActualizeazaLabelLipsuri() + This.Grid1.Refresh() + ENDPROC + PROCEDURE But_modificaR.Click Local lcRul, loEditor IF thisform.pgfArticole.ActivePage = 3 @@ -15788,14 +16000,6 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" *thisform.aleg_document_pereche(tnFel,odoc) DO aleg_document_pereche WITH tnFel,odoc,lcSel IN oOperatii_comune.prg SELECT (m.lcSel) - *!* 18.09.2026 marius.mutu - M doar daca s-a ales document (aleg_document_pereche sterge atunci randul original) - IF Type('tact.ngrupa') = 'N' AND BETWEEN(m.lnRecno, 1, RECCOUNT()) - GO m.lnRecno - IF DELETED() - * randurile grupei adaugate de aleg_document_pereche devin M - REPLACE csursa_f WITH 'M' FOR ngrupa = odoc.ngrupa AND npoz = odoc.npoz - ENDIF - ENDIF TRY GOTO m.lnRecno CATCH @@ -15832,14 +16036,6 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" *thisform.aleg_document_pereche(tnFel,odoc) DO aleg_document_pereche WITH tnFel,odoc,lcSel IN oOperatii_comune.prg SELECT (m.lcSel) - *!* 18.09.2026 marius.mutu - M doar daca s-a ales document (aleg_document_pereche sterge atunci randul original) - IF Type('tact.ngrupa') = 'N' AND BETWEEN(m.lnRecno, 1, RECCOUNT()) - GO m.lnRecno - IF DELETED() - * randurile grupei adaugate de aleg_document_pereche devin M - REPLACE csursa_f WITH 'M' FOR ngrupa = odoc.ngrupa AND npoz = odoc.npoz - ENDIF - ENDIF TRY GOTO m.lnRecno CATCH @@ -15866,6 +16062,26 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" Lparameters nColIndex + IF Type('tact.clipsa') = 'C' + *!* 19.09.2026 + *!* marius.mutu + *!* reverificare silentioasa a lipsurilor la schimbarea randului, doar daca randul parasit e nou sau a fost modificat + LOCAL lnRecNouLipsuri, lcSemnVeche + lnRecNouLipsuri = Recno('tact') + IF m.lnRecNouLipsuri <> Thisform.nRecLipsuri + IF Between(Thisform.nRecLipsuri, 1, Reccount('tact')) + GO (Thisform.nRecLipsuri) IN tact + lcSemnVeche = Transform(tact.scd) + '|' + Transform(tact.scc) + '|' + Transform(tact.ascd) + '|' + Transform(tact.ascc) + '|' + Transform(tact.id_partd) + '|' + Transform(tact.id_partc) + '|' + Transform(tact.pereched) + '|' + Transform(tact.perechec) + '|' + Transform(tact.nract) + '|' + Transform(tact.suma) + '|' + Transform(tact.id_valuta) + '|' + Transform(tact.id_jtva_coloana) + IF m.lcSemnVeche <> Thisform.cSemnLipsuri + Thisform.VerificaLipsuriSilentios() + ENDIF + GO (m.lnRecNouLipsuri) IN tact + ENDIF + Thisform.nRecLipsuri = m.lnRecNouLipsuri + Thisform.cSemnLipsuri = Transform(tact.scd) + '|' + Transform(tact.scc) + '|' + Transform(tact.ascd) + '|' + Transform(tact.ascc) + '|' + Transform(tact.id_partd) + '|' + Transform(tact.id_partc) + '|' + Transform(tact.pereched) + '|' + Transform(tact.perechec) + '|' + Transform(tact.nract) + '|' + Transform(tact.suma) + '|' + Transform(tact.id_valuta) + '|' + Transform(tact.id_jtva_coloana) + ENDIF + ENDIF + *** se pot modifica inregistrari pe firma mama sau daca inregistrarile apartin sucursalei curente sau daca editez un set de note definit de utilizator llReadOnly = !(m.glEMama OR NVL(m.gnIdSucursala,0) = NVL(tAct.id_sucursala,0) OR Type('thisform.oSet') = 'O') @@ -17606,19 +17822,21 @@ DEFINE CLASS frmdefalcarebuget AS frm_termin_renunt OF "_frm_child.vcx" cgrupa = ddata = {} DoCreate = .T. - Height = 330 + Height = 440 Name = "frmdefalcarebuget" nnerepartizat = 0 nsuma = 0 - Width = 620 + Width = 629 + _shape1.Anchor = 10 _shape1.Height = 29 _shape1.Left = 0 _shape1.Name = "_shape1" _shape1.Top = 0 _shape1.Width = 628 _shape1.ZOrderSet = 1 + _shape2.Anchor = 8 _shape2.Height = 29 - _shape2.Left = 556 + _shape2.Left = 566 _shape2.Name = "_shape2" _shape2.Top = 0 _shape2.Width = 64 @@ -17627,14 +17845,16 @@ DEFINE CLASS frmdefalcarebuget AS frm_termin_renunt OF "_frm_child.vcx" Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" Lb_titlu_alb_b121.TabIndex = 5 Lb_titlu_alb_b121.ZOrderSet = 3 - BUT_TERMIN1.Left = 588 + BUT_TERMIN1.Anchor = 8 + BUT_TERMIN1.Left = 598 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.TabIndex = 3 BUT_TERMIN1.ToolTipText = "Aplica defalcarea" BUT_TERMIN1.Top = 1 BUT_TERMIN1.ZOrderSet = 4 Gridsort1.Name = "Gridsort1" - But_renunt1.Left = 559 + But_renunt1.Anchor = 8 + But_renunt1.Left = 569 But_renunt1.Name = "But_renunt1" But_renunt1.TabIndex = 4 But_renunt1.ToolTipText = "Inchide fara sa aplicati" @@ -17643,10 +17863,11 @@ DEFINE CLASS frmdefalcarebuget AS frm_termin_renunt OF "_frm_child.vcx" * ADD OBJECT 'grdDefalcare' AS _grid WITH ; + Anchor = 15, ; ColumnCount = 5, ; DeleteMark = .F., ; FontSize = 10, ; - Height = 210, ; + Height = 324, ; lcamptextneeditabil = .F., ; Left = 10, ; Name = "grdDefalcare", ; @@ -17781,12 +18002,13 @@ DEFINE CLASS frmdefalcarebuget AS frm_termin_renunt OF "_frm_child.vcx" *< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" /> ADD OBJECT 'lblNerepartizat' AS _label WITH ; + Anchor = 14, ; AutoSize = .F., ; FontBold = .T., ; Height = 20, ; Left = 10, ; Name = "lblNerepartizat", ; - Top = 288, ; + Top = 402, ; Width = 610, ; ZOrderSet = 2 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" /> diff --git a/programe/ooperatii_comune.prg b/programe/ooperatii_comune.prg index 6689833..d8ad0b7 100644 --- a/programe/ooperatii_comune.prg +++ b/programe/ooperatii_comune.prg @@ -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