sync SVN r18026
This commit is contained in:
327
docs/diff_r6_punct6.md
Normal file
327
docs/diff_r6_punct6.md
Normal file
@@ -0,0 +1,327 @@
|
||||
# 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="" />
|
||||
|
||||
*<DefinedPropArrayMethod>
|
||||
*p: nid
|
||||
+ *p: nidjtvaales
|
||||
*p: ntip_selectie && 0 - cautare in toti delegatii; 1 - cautare in delegatii clientului
|
||||
*p: orec
|
||||
*</DefinedPropArrayMethod>
|
||||
@@ -5145,9 +5152,10 @@ DEFINE CLASS frm_modifica_articol_factura AS frm_termin_renunt OF "_frm_child.vc
|
||||
*<PropValue>
|
||||
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<69> explica<63>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
|
||||
*</PropValue>
|
||||
@@ -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<63>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 @@
|
||||
<!--
|
||||
-19/08/2026
|
||||
+20/08/2026
|
||||
ROAFACTURARE - 2.11.15
|
||||
|
||||
:nou:
|
||||
@@ -7,11 +7,19 @@ ROAFACTURARE - 2.11.15
|
||||
|
||||
Pe linia de articol se poate alege explicatia TVA. Lista propune doar explicatiile cu cota TVA a liniei, iar codul de taxa SAF-T se completeaza automat dupa explicatia aleasa.
|
||||
|
||||
+ Lista de facturi, butonul de modificare a explicatiei articolului: se poate alege acum si explicatia TVA. Lista propune doar explicatiile cu aceeasi cota de TVA ca linia facturii, iar codul de taxa SAF-T se completeaza automat dupa explicatia aleasa. Valorile facturii raman neschimbate - nu se recalculeaza cota si nici totalurile documentului.
|
||||
+
|
||||
:modificare:
|
||||
Totalul notelor din bara de jos se actualizeaza imediat dupa modificarea sumei de pe randul de nota, nu doar la editarea articolelor.
|
||||
|
||||
Fereastra de sincronizare articole - rulaje: coloanele arata acum ce valoare se inlocuieste si de unde se preia cea noua, in loc de "vechi" si "nou" explicate separat.
|
||||
|
||||
+ Editare factura, pagina Articole: seria, lotul si explicatia se tasteaza direct in grid, iar articolul, gestiunea, valuta, explicatia TVA si codul de taxa SAF-T se aleg prin dublu clic pe celula. Culorile arata la ce foloseste fiecare coloana: alb - se tasteaza direct, verde - se alege dintr-o lista, gri - nu se poate edita.
|
||||
+
|
||||
+ Editare factura, pagina Articole: pretul si pretul cu TVA se afiseaza cu numarul de zecimale stabilit pentru preturile de vanzare, nu cu cel pentru preturile de achizitie.
|
||||
+
|
||||
+ Optiunea de meniu prin care se deschide editarea se numeste acum "Editare factura (note, rulaje, articole)".
|
||||
+
|
||||
:eroare:
|
||||
S-a corectat o eroare la descarcarea articolelor importate din eFactura, care aveau pret de achizitie cu 4 zecimale.
|
||||
|
||||
```
|
||||
|
||||
## 3. `docs\progres.md` (repo ROAFACTURARE)
|
||||
|
||||
```diff
|
||||
diff --git a/docs/progres.md b/docs/progres.md
|
||||
index 52c419d..f1805d9 100644
|
||||
--- a/docs/progres.md
|
||||
+++ b/docs/progres.md
|
||||
@@ -2309,5 +2309,20 @@ initial, apoi **respinsa** — nu se reintroduce.
|
||||
- `ff_2026_08_20_01` (garda `FACT-025`, runda 5) e **deja aplicat** pe `MARIUSM_AUTO`; scriptul 02 il
|
||||
contine. **Nu se re-aplica 01** — ar sterge punctul 6.
|
||||
|
||||
-Ramase: proba pe ecran a punctelor 1-5, aplicarea scriptului pe `MARIUSM_AUTO`, partea VFP a
|
||||
-punctului 6, si intrarea de changelog pentru runda 6 (nu exista inca).
|
||||
+Ramase: partea VFP a punctului 6 si intrarea de changelog pentru runda 6 (nu exista inca).
|
||||
+
|
||||
+**Corectie 20.08.2026, seara** — doua puncte din lista de mai sus erau deja facute:
|
||||
+
|
||||
+- **Proba pe ecran a punctelor 1-5**: facuta de Marius.
|
||||
+- **Scriptul `ff_2026_08_20_02_COMUN_PACK_FACTURARE.sql` era deja aplicat** pe schema
|
||||
+ `MARIUSM_AUTO` de pe `ROA_CENTRAL`, contrar notei de mai sus ("NERULAT"). Dovezi, nu mtime:
|
||||
+ `VERSIUNE` are randul `20.08.2026 / seq 2 / COMUN_PACK_FACTURARE`; `ALL_OBJECTS` da PACKAGE si
|
||||
+ PACKAGE BODY **VALID**, `last_ddl_time` 20.08.2026 13:56:38; iar sursa vie din `ALL_SOURCE`
|
||||
+ (spec + body, normalizata: fara `CREATE OR REPLACE`, fara `/`, fara antetul de comentariu si
|
||||
+ fara `exec`/`commit`) e **identica cu fisierul de pe disc — 0 linii diferenta pe 16 407**.
|
||||
+ Deci in Oracle sta varianta **finala** (fara recalcul), nu varianta respinsa, desi fisierul are
|
||||
+ mtime 15:45, ulterior compilarii de la 13:56.
|
||||
+ Concluzie de metoda: mtime-ul fisierului si nota "scriptul nu a fost rulat" din raportul de
|
||||
+ livrare nu sunt surse de stare pentru ce e in Oracle. Starea se citeste din `VERSIUNE` +
|
||||
+ `ALL_SOURCE`, prin diff, inainte de a re-aplica ceva.
|
||||
+- Ramane valabila interdictia: **nu se re-aplica `ff_2026_08_20_01`** — ar sterge punctul 6.
|
||||
```
|
||||
Reference in New Issue
Block a user