114 lines
7.0 KiB
Markdown
114 lines
7.0 KiB
Markdown
# 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.
|