# Diff pentru aprobare — runda 6, punctul 6 (partea VFP) + changelog Stare verificata inainte de livrare: - write-back facut; text din arbore vs. text reconvertit din binar: **0 linii diferenta**, md5 identic - octetul diacritic din `lbExplTva.Caption`, citit **din binar**: `0xFE` (cp1250, ca restul clasei) - 13 octeti >0x7F, zero `EF BF BD`, CRLF pe toate liniile - `PACK_FACTURARE` cu semnatura noua era deja aplicat pe `MARIUSM_AUTO` / `ROA_CENTRAL` - proba pe ecran facuta de Marius; a rezultat o corectie de filtru (mai jos) ## Filtrul listei de explicatii TVA — verificat pe date Prima versiune filtra doar `id_jtva_coloana > 0` + cota liniei, si arata si liniile de TVA. Interogare read-only pe `vjtva_coloane` (`MARIUSM_AUTO`), 197 de randuri cu `id > 0`: | `afisat` | ce sunt randurile | exemplu | |---|---|---| | 0 | **liniile de TVA** | `TVA LIVR. INTERN 19%` | | 1 | **bazele** cu cota | `LIVR. INTERN 19%` | | 2 | neimpozabile/scutite (cota 0) | `LIVR. SCUTITE FARA DREPT DE DEDUCERE` | Filtrul devine `afisat > 0 and jv = 1`, acelasi pe care il foloseste emiterea facturii (`ofacturare.prg:170`, `update_jtva_coloane([JV], ...)` cu `tnTip` gol). `jv = 1` nu a fost cerut explicit, dar fara el o factura de **vanzare** primea si explicatii de **achizitie** (`ACH. INT. 19% BUNURI VANZARE` are cota 19, deci garda `FACT-029` din PL/SQL le-ar fi acceptat). Numarul de optiuni ramase per cota, pe datele din `MARIUSM_AUTO`: ``` cota: 0 5 9 11 19 20 21 24 tot: 24 16 36 22 40 18 22 19 afisat>0: 24 9 19 9 21 10 12 11 + jv=1: 15 3 3 3 3 3 3 3 ``` Nicio cota nu ramane cu lista goala, deci ramura "lista goala" ramane teoretica, ca la proiectare. Restrictia pe `cote_tva` de an/luna curenta pe care o adauga `update_jtva_coloane` **nu** a fost preluata intentionat: ar goli lista la editarea unei facturi vechi cu cota iesita din uz (24%). ## 1. `COMUN\clase\ofacturare_comun.vc2` (repo COMUN, se comite ca `.vcx` + `.vct`) ```diff diff --git a/clase/ofacturare_comun.vc2 b/clase/ofacturare_comun.vc2 index 6f7f325..367fd89 100644 --- a/clase/ofacturare_comun.vc2 +++ b/clase/ofacturare_comun.vc2 @@ -4647,6 +4647,8 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx" Select crsDetalii Scatter Name poRec Memo poRec.explicatie = NVL(poRec.explicatie, ' ') + AddProperty(poRec, 'data_act', crsfacturi.data_act) + AddProperty(poRec, 'id_part', Nvl(crsfacturi.id_part, 0)) If poRec.sters = 0 ofrmmodificare = Createobject("frm_modifica_articol_factura") ofrmmodificare.Show() @@ -5135,9 +5137,14 @@ DEFINE CLASS frm_modifica_articol_factura AS frm_termin_renunt OF "_frm_child.vc *< OBJECTDATA: ObjPath="Ed_tx_simplu1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cbo_saft" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lbSaft" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="_shape4" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="lbExplTva" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="cbo_expl_tva" UniqueID="" Timestamp="" /> + *< OBJECTDATA: ObjPath="lbExplTvaInfo" UniqueID="" Timestamp="" /> * *p: nid + *p: nidjtvaales *p: ntip_selectie && 0 - cautare in toti delegatii; 1 - cautare in delegatii clientului *p: orec * @@ -5145,9 +5152,10 @@ DEFINE CLASS frm_modifica_articol_factura AS frm_termin_renunt OF "_frm_child.vc * BorderStyle = 1 DoCreate = .T. - Height = 370 + Height = 431 Name = "frm_modifica_articol_factura" nid = .F. + nidjtvaales = 0 ntip_selectie = 0 orec = .F. Width = 376 @@ -5161,17 +5169,17 @@ DEFINE CLASS frm_modifica_articol_factura AS frm_termin_renunt OF "_frm_child.vc _shape2.ZOrderSet = 2 Lb_titlu_alb_b121.Caption = "Modificã explicaþie articol" Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" - Lb_titlu_alb_b121.TabIndex = 5 + Lb_titlu_alb_b121.TabIndex = 6 Lb_titlu_alb_b121.ZOrderSet = 3 BUT_TERMIN1.Left = 344 BUT_TERMIN1.Name = "BUT_TERMIN1" - BUT_TERMIN1.TabIndex = 3 + BUT_TERMIN1.TabIndex = 4 BUT_TERMIN1.Top = 1 BUT_TERMIN1.ZOrderSet = 4 Gridsort1.Name = "Gridsort1" But_renunt1.Left = 315 But_renunt1.Name = "But_renunt1" - But_renunt1.TabIndex = 4 + But_renunt1.TabIndex = 5 But_renunt1.Top = 1 But_renunt1.ZOrderSet = 6 * @@ -5181,11 +5189,36 @@ DEFINE CLASS frm_modifica_articol_factura AS frm_termin_renunt OF "_frm_child.vc Height = 37, ; Left = 13, ; Name = "_shape3", ; - Top = 323, ; + Top = 384, ; Width = 348, ; ZOrderSet = 0 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="shape" /> + ADD OBJECT '_shape4' AS _shape WITH ; + BackStyle = 0, ; + Height = 58, ; + Left = 13, ; + Name = "_shape4", ; + Top = 323, ; + Width = 348, ; + ZOrderSet = 10 + *< END OBJECT: ClassLib="_baza.vcx" BaseClass="shape" /> + + ADD OBJECT 'cbo_expl_tva' AS _cbbase WITH ; + BoundColumn = 3, ; + BoundTo = .T., ; + ColumnCount = 2, ; + ColumnWidths = "400,60", ; + Height = 24, ; + Left = 110, ; + Name = "cbo_expl_tva", ; + RowSourceType = 3, ; + TabIndex = 2, ; + Top = 329, ; + Width = 238, ; + ZOrderSet = 12 + *< END OBJECT: ClassLib="_cb_base.vcx" BaseClass="combobox" /> + ADD OBJECT 'cbo_saft' AS _cbbase WITH ; BoundColumn = 4, ; BoundTo = .T., ; @@ -5197,8 +5230,8 @@ DEFINE CLASS frm_modifica_articol_factura AS frm_termin_renunt OF "_frm_child.vc Name = "cbo_saft", ; RowSource = "Select taxname, tip, procent_taxa, taxcode From saft_taxtable where tva = 1 order by taxcode Into Cursor crsTaxTableX", ; RowSourceType = 3, ; - TabIndex = 2, ; - Top = 329, ; + TabIndex = 3, ; + Top = 390, ; Width = 266, ; ZOrderSet = 8 *< END OBJECT: ClassLib="_cb_base.vcx" BaseClass="combobox" /> @@ -5221,20 +5254,54 @@ DEFINE CLASS frm_modifica_articol_factura AS frm_termin_renunt OF "_frm_child.vc _lbbase1.Name = "_lbbase1" *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> + ADD OBJECT 'lbExplTva' AS _label WITH ; + Caption = "Explicaþie TVA", ; + Left = 24, ; + Name = "lbExplTva", ; + TabIndex = 8, ; + Top = 332, ; + ZOrderSet = 11 + *< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" /> + + ADD OBJECT 'lbExplTvaInfo' AS _label WITH ; + Caption = "", ; + ForeColor = RGB(128,0,0), ; + Height = 20, ; + Left = 24, ; + Name = "lbExplTvaInfo", ; + Top = 355, ; + Visible = .F., ; + Width = 324, ; + WordWrap = .T., ; + ZOrderSet = 13 + *< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" /> + ADD OBJECT 'lbSaft' AS _label WITH ; Caption = "Cod taxa", ; Left = 24, ; Name = "lbSaft", ; - TabIndex = 6, ; - Top = 332, ; + TabIndex = 7, ; + Top = 393, ; ZOrderSet = 9 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" /> + PROCEDURE Destroy + If Used('crsExplTvaCbo') + Use In crsExplTvaCbo + Endif + If Used('crsExplTvaArt') + Use In crsExplTvaArt + Endif + DoDefault() + ENDPROC + PROCEDURE inainte_de_do_termin - Local llReturn + Local llReturn, lcParamJtva If amessagebox("Doriti sa salvati modificarile?",4+32,"Confirmare salvare explicatie") = 6 + lcParamJtva = Iif(Vartype(Thisform.nidjtvaales) = 'N' And Thisform.nidjtvaales > 0, ; + Alltrim(Str(Thisform.nidjtvaales)), [null]) lcSql = [begin pack_facturare.modifica_explicatie_articol(] + Alltrim(Str(poRec.id_vanzare_det)) + [,] + ; - ['] + Nvl(Alltrim(OracleSpecialCharacters(poRec.explicatie)),'') + [',?gnIdUtil,?poRec.taxcode); end;] + ['] + Nvl(Alltrim(OracleSpecialCharacters(poRec.explicatie)),'') + [',?gnIdUtil,?poRec.taxcode,] + lcParamJtva + [); end;] llReturn = goExecutor.oExecuta(lcSql) Else llReturn = .F. @@ -5258,6 +5325,46 @@ DEFINE CLASS frm_modifica_articol_factura AS frm_termin_renunt OF "_frm_child.vc Endwith Endif + Local lnCota, lcSqlTva, lcCursorTva + Thisform.nidjtvaales = 0 + + If Isnull(poRec.proc_tvav) Or Nvl(poRec.proc_tvav, 0) = 0 + Thisform.cbo_expl_tva.Enabled = .F. + Thisform.lbExplTvaInfo.Caption = [Cota de TVA a acestei linii nu este cunoscuta; explicatia TVA nu poate fi modificata prin acest buton.] + Thisform.lbExplTvaInfo.Visible = .T. + Return + Endif + + lnCota = Round((poRec.proc_tvav - 1) * 100, 2) + lcCursorTva = [crsExplTvaArt] + *!* afisat > 0 = doar bazele, fara liniile de TVA; jv = 1 = doar jurnalul de vanzari + lcSqlTva = [select id_jtva_coloana, denumire, cota_tva from vjtva_coloane where id_jtva_coloana > 0 ] + ; + [and afisat > 0 and jv = 1 and cota_tva = ] + Alltrim(Str(lnCota, 10, 2)) + [ order by denumire] + If goExecutor.oExecuta(lcSqlTva, lcCursorTva) And Reccount(lcCursorTva) > 0 + Thisform.cbo_expl_tva.RowSource = [select denumire, cota_tva, id_jtva_coloana from ] + lcCursorTva + [ into cursor crsExplTvaCbo] + Thisform.cbo_expl_tva.Requery() + Thisform.cbo_expl_tva.Value = Nvl(poRec.id_jtva_coloana, 0) + Else + Thisform.cbo_expl_tva.Enabled = .F. + Thisform.lbExplTvaInfo.Caption = [Nu exista nicio explicatie TVA activa cu aceeasi cota ca linia facturata (cota: ] + ; + Alltrim(Str(lnCota, 10, 2)) + [ %).] + Thisform.lbExplTvaInfo.Visible = .T. + Endif + + ENDPROC + + PROCEDURE cbo_expl_tva.InteractiveChange + Local lnIdJtva + lnIdJtva = Nvl(This.Value, 0) + If lnIdJtva <= 0 + Return + Endif + Thisform.nidjtvaales = lnIdJtva + poRec.id_jtva_coloana = lnIdJtva + If Type('gl406') = 'L' And m.gl406 + poRec.taxcode = GetTaxCodeIdPart(m.gnAn, m.gnLuna, poRec.data_act, m.lnIdJtva, poRec.id_part) + Thisform.cbo_saft.Refresh() + Endif ENDPROC ENDDEFINE ``` ## 2. `changelog_roafacturare.txt` (repo ROAFACTURARE) ```diff diff --git a/changelog_roafacturare.txt b/changelog_roafacturare.txt index ed81ecb..6c0733f 100644 --- a/changelog_roafacturare.txt +++ b/changelog_roafacturare.txt @@ -1,5 +1,5 @@