Files
roafacturare/docs/raport_r6_punct6_vfp.md
2026-08-20 22:44:52 +03:00

7.0 KiB

Raport runda 6, punctul 6, partea VFP

GATA — text editat, write-back facut si verificat

Implementare completa a partii VFP din punctul 6 (explicatia TVA in dialogul de modificare a articolului din frm_facturi), conform docs\brief_r6_punct6_vfp.md, punctele M1-M5, plus doua corectii cerute de team-lead la review (TabIndex complet, Destroy inchide ambele cursoare). Scris pe binar cu succes; verificarile de mai jos confirma sincronizarea text/binar.

Inventar modificari (numerotare finala, dupa write-back)

Fisier: D:\ROA\ROAFACTURARE\COMUN\clase\ofacturare_comun.vc2 (+ ofacturare_comun.vcx/.vct).

  • M1 — frm_facturi.do_modifica_explicatie (:4642): la :4650-4651, doua AddProperty(poRec, 'data_act', crsfacturi.data_act) / AddProperty(poRec, 'id_part', Nvl(crsfacturi.id_part, 0)), intre poRec.explicatie = NVL(...) si If poRec.sters = 0.
  • M2 — clasa frm_modifica_articol_factura (:5132-5369):
    • Layout: Height 370->431 (:5155); _shape3.Top 323->384 (:5192); cbo_saft.Top 329->390 (:5234); lbSaft.Top 332->393 (:5284).
    • OBJECTDATA ZOrder (:5140-5143): 4 linii noi — _shape4, lbExplTva, cbo_expl_tva, lbExplTvaInfo.
    • Proprietate noua nidjtvaales: *p: nidjtvaales in *<DefinedPropArrayMethod> (:5147, intre *p: nid si *p: ntip_selectie), valoare initiala nidjtvaales = 0 in *<PropValue> (:5158).
    • Obiecte noi (ADD OBJECT): _shape4 (:5197), cbo_expl_tva (:5207, ControlSource gol, RowSource populat in Init), lbExplTva (:5257, caption Explicaţie TVA, diacritic cp1250 0xFE), lbExplTvaInfo (:5266).
  • M3 — frm_modifica_articol_factura.Init (:5313-5353): la final (dupa blocul citeste_lungcampexplart), populare cbo_expl_tva din vjtva_coloane filtrat pe cota TVA a liniei, cu cele 3 ramuri din brief (cota necunoscuta la :5331-5336; gasit la :5342-5345; negasit la :5346-5350).
  • M4 — cbo_expl_tva.InteractiveChange (:5355-5367, metoda noua — override de eveniment de baza, nu necesita *m:): seteaza Thisform.nidjtvaales, poRec.id_jtva_coloana, si sub garda gl406 recalculeaza poRec.taxcode prin GetTaxCodeIdPart.
  • M5 — inainte_de_do_termin (:5298-5311): parametrul 5 (lcParamJtva, :5301-5302) construit literal (nu bind), null cand Thisform.nidjtvaales n-a fost atins.
  • In plus fata de M1-M5, cerut/corectat la review:
    • PROCEDURE Destroy (:5288-5296) — inchide crsExplTvaCbo (RowSource-ul combo-ului) si crsExplTvaArt (cursorul intermediar din Init) daca raman deschise, apoi DoDefault() (:5295) — lantul de curatenie mostenit din frm_termin_renunt (_frm_child.vcx) nu e taiat; acelasi tipar (cleanup local + DODEFAULT()) e deja folosit in fisier la frm_modifica_factura.Destroy (:5720-5722).
    • TabIndex, ordine completa: Ed_tx_simplu1=1, cbo_expl_tva=2 (nou), cbo_saft=2->3, BUT_TERMIN1=3->4, But_renunt1=4->5, Lb_titlu_alb_b121=5->6, lbSaft=6->7, lbExplTva=8 (nou); lbExplTvaInfo ramane fara TabIndex (Visible = .F.).

Ordinea fizica finala a metodelor in clasa: Destroy, inainte_de_do_termin, Init, cbo_expl_tva.InteractiveChange — confirmata din textul regenerat de FoxBin2Prg la fidelity-check (nu presupusa).

Write-back — confirmat

txt2vcx.ps1 -TextFile COMUN\clase\ofacturare_comun.vc2 -ProjectRoot D:\ROA\ROAFACTURARE -CacheRoot D:\ROA\ROAFACTURARE -AllowComun:

  • Prima rulare (pe textul M1-M5, inainte de corectiile de TabIndex/Destroy): ESEC pe ordine — exact avertismentul din brief ("FoxBin2Prg nu pastreaza ordinea textuala pentru ADD OBJECT multiple"). Am adoptat ca sursa blocul clasei frm_modifica_articol_factura din <staging>\verify\ofacturare_comun.vc2 (ordinea canonica ADD OBJECT: _shape3, _shape4, cbo_expl_tva, cbo_saft, Ed_tx_simplu1, lbExplTva, lbExplTvaInfo, lbSaft), fara sa ating nicio alta clasa din fisier.
  • Rularea finala (dupa corectiile de TabIndex + Destroy, cu semnal WRITE-BACK ACUM de la team-lead, lock-ul lui Marius eliberat): OK — 1/1 fisier(e) scrise cu succes, fara alt esec de fidelitate.

Dovada de sincronizare text/binar (nu mtime — reconversie separata + diff): vcx2txt.ps1 -Source ofacturare_comun.vcx -Force intr-un cache temporar separat, apoi diff cu textul din arbore -> 0 linii diferenta.

Verificari encoding (inainte / dupa, pe tot parcursul)

  • Octeti > 0x7F: 12 inainte de orice editare -> 13 dupa toate editarile si dupa write-back (neschimbat de la corectiile de TabIndex/Destroy — nu ating diacritice). Singurul octet nou e 0xFE (diacriticul ț din caption-ul lbExplTva, Explicaţie TVA); zero aparitii de EF BF BD (fara corupere UTF-8).
  • Octetul diacritic verificat explicit (cerut de team-lead): lbExplTva.Caption (:5258) are octetul 0xFE exact in aceeasi pozitie semantica ca Lb_titlu_alb_b121.Caption (:5170, "Modific\xE3 explica\xFEie articol") din aceeasi clasa — acelasi octet 0xFE = ț cp1250 in ambele, confirmat byte-cu-byte (od -c) pe fisierul final, dupa write-back.
  • LF izolate (0x0A fara 0x0D inainte): 0, atat inainte cat si dupa toate editarile si dupa write-back. Fisierul final are 7540 de linii, toate CRLF.

Scop

git status in D:\ROA\ROAFACTURARE\COMUN (repo propriu al lui COMUN, unde .vc2 e versionat si .vcx/.vct sunt gitignored prin design — git check-ignore confirma *.VCX/*.VCT in .gitignore): doar clase/ofacturare_comun.vc2 modificat (117 insertii, 11 stergeri), niciun alt fisier. Niciun PL/SQL, niciun omodificari.vc2, niciun grid de articole, niciun Text1.ReadOnly atins — conform interdictiilor.

Ce n-a fost facut si de ce

Nimic din scopul brief-ului a ramas nefacut. Singura abatere fata de fluxul standard a fost timpul de asteptare intre editarea textului si write-back, cauzat de un lock legitim (sesiunea VFP activa a lui Marius pe acelasi binar) — nu de o problema de implementare; write-back-ul s-a facut abia dupa ce team-lead a confirmat eliberarea lock-ului si a dat semnalul explicit.

Nu s-a comis nimic si nu s-a rulat nicio sincronizare

Nu s-a rulat git_sync.ps1, roa_sync.bat, svn update/commit, git commit/push. Nu s-a pornit VFP, nu s-a deschis IDE-ul. Commit-ul ramane la latitudinea sesiunii principale, dupa aprobare.

Fisiere atinse in aceasta sesiune

  • D:\ROA\ROAFACTURARE\COMUN\clase\ofacturare_comun.vc2 — editat, write-back facut, verificat (0 linii diferenta la reconversie).
  • D:\ROA\ROAFACTURARE\COMUN\clase\ofacturare_comun.vcx / .vct — regenerate prin write-back, verificate byte-identic cu textul din arbore (via reconversie separata).
  • D:\ROA\ROAFACTURARE\COMUN\clase\ofacturare_comun.vc2.pre_r6p6.bak, ofacturare_comun.vc2.pre_r6p6_fix2.bak — backup-uri locale (baseline-uri intermediare), netracked de git, de sters la curatenie (COMUN\utile\curatenie.ps1).
  • D:\ROA\ROAFACTURARE\docs\raport_r6_punct6_vfp.md — acest raport.
  • Niciun proces deschis, nicio tranzactie Oracle deschisa, niciun date de test consumate.