Folderul docs\ era pana acum in afara oricarui control de versiuni - nici git, nici SVN - desi contine planurile pe puncte, proiectarile si rapoartele de cercetare pe care se sprijina modificarile din cod. O stergere acolo era definitiva. Fisierele intermediare (handoff-uri intre sesiuni, diff-uri deja aplicate) au fost sterse inainte, nu versionate: ce era durabil in ele a intrat in antetele fisierelor de test la care se refereau. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
5.4 KiB
S4 runda 1 (PAGE3, doar afisare) — raport de inchidere, 08.08.2026
Runda 1 din S4 (plan_06_s4_proiectare.md) e inchisa. Diff-ul de review:
docs\diff_s4_runda1_page3.patch. Istoricul complet al sesiunii de implementare/depanare:
docs\cercetare\handoff_s4_runda1.md, docs\cercetare\handoff_propr_custom.md,
docs\handoff_sesiune_08082026_c.md.
Ce s-a implementat
COMUN\programe\ofacturare_editare.prg, doua functii noi la coada fisierului:IncarcaVanzareNota(tnCod, tnNract, tcSerieAct, tdDataAct)— gaseste randul dinVANZARIcorespunzator notei curente (filtru compuscod+nract+serie_act+data_act, necesar pentru caVANZARI.CODnu e unic — veziprogres.md), cursortvanz.IncarcaArticoleFactura(tnIdVanzare)— liniile active (sters=0) dinVANZARI_DETALII, cu denumire articol/gestiune/valuta pentru afisare, cursortvd.
COMUN\clase\omodificari.vc2(frm_modific2024):pgfArticole.PageCount = 3,PAGE3.Caption = "Articole factura".- Grid nou
pgfArticole.PAGE3.grdArticoleFactura— 13 coloane,RecordSource="tvd", strict readonly (grid + fiecareText1). - Proprietati noi pe clasa:
lAreArticoleVanzari,nIdVanzare,nTipVanzare. Load(): placeholderCREATE CURSOR tvd (...)— evita dialogul nativ "Open" peRecordSourceinexistent la constructia grid-ului.Show(): bloc nou care cheamaIncarcaVanzareNota/IncarcaArticoleFacturasi comutapgfArticole.PageCountintre 2 si 3 dupalAreArticoleVanzari.
Write-back facut, text si binar sincronizate, fidelity-check OK.
Ce s-a testat, si cu ce rezultat
Suita COMUN\utile\Teste\editare_factura\test_page3_articole.prg, headless sub
COMUN\utile\Teste\watchdog_vfp.ps1 -AutoDismiss, conexiune reala MARIUSM_AUTO. Rulare finala
(dupa curatarea instrumentatiei de depanare): exit code 0, 0 dialoguri, toate cazurile PASS
(test_page3_articole_log.txt):
| Caz | Verifica | Rezultat |
|---|---|---|
cod=1140888 (factura, tip=1) |
IncarcaVanzareNota/IncarcaArticoleFactura direct: id_vanzare=1050, tip=1, 4 linii |
PASS |
cod=1140885 (tip=-12, cu rand VANZARI) |
idem: id_vanzare=1047, tip=-12 (detectia merge pe orice tip, nu doar facturi) |
PASS |
cod=1125486 (nota fara rand VANZARI) |
0 randuri gasite (caz negativ) | PASS |
cod=1139934 (4 randuri VANZARI cu acelasi cod) |
filtrul compus gaseste exact id_vanzare=882 pe nract=375/SSS, 0 randuri pe nract=13 (fara corespondent) |
PASS |
cod=1140888, frm_modific2024 instantiat (Createobject+Show, ca in do_editare_factura) |
PageCount=3, lAreArticoleVanzari=.T., nIdVanzare=1050 |
PASS |
cod=1125486, idem |
PageCount=2, lAreArticoleVanzari=.F. |
PASS |
Testul nu atinge Oracle in scriere — doar SELECT-uri prin goExecutor.
Ce NU e acoperit (ramane pentru runde ulterioare)
- Editarea in memorie a liniilor din grid — runda 2 din S4; grid-ul e strict readonly in
aceasta runda, prin design (B.2 din plan, marcaje
_modificat/sters/id_vanzare_det=0, nu e inceput). - Inchiderea prin
do_renunt()— netestata, la fel ca in rundele S1-S3 (mediul minimal de test areControlCount=0pe formularul principalfrm_facturi, deci butoanele native nu sunt disponibile pentru a conduce fluxul complet prin UI). - Fluxul UI complet prin "Terminat" — netestat;
verifica_pagecount_forminstantiazafrm_modific2024direct (Createobject+Show), la fel cado_editare_factura, dar nu conduce formularul pana la inchidere. Validarea dininainte_de_do_terminnu e exercitata de aceasta suita. - Garda referinte pe
do_editare_facturaramane netestata izolat (fara candidat pozitiv in datele de test) — mostenit din rundele anterioare, nu specific rundei 1 din S4.
Blocaje rezolvate in aceasta sesiune (istoric, nu de reluat)
Trei blocaje separate au impiedicat verificarea live inainte de aceasta runda de inchidere, toate
documentate pe larg in handoff_sesiune_08082026_c.md si COMUN\docs\testare-ui-vfp.md:
DO ... WITH gnAn, gnLunapasa prin referinta si umbrea variabilele in procedurile apelate, provocand dialogul nativ "View Parameter" pe un?gnAndin SQL passthrough — remediat cu pasare prin valoare (DO ... WITH (gnAn), (gnLuna)).- Harnessul de test (
test_init_env_auto.prg) incarca implicit clasaomodificaridin copia de lucru ROACONT, nu din fisierul editat — remediat cuRELEASE CLASSLIB+SET CLASSLIB TOpe calea completa a fisierului sub test. - Proprietatile custom noi (
lAreArticoleVanzari,nIdVanzare,nTipVanzare) lipseau din*<DefinedPropArrayMethod>(intrarile*p:) — regula era documentata doar pentru metode (*m:); aplicata acum si aici, inCOMUN\docs\flux-editare-vfp-text.md.
Curatare facuta la inchidere
- Scoase liniile de log
[BISECT]si[DIAG](ClassLibrary/PEMSTATUS) dintest_page3_articole.prg— erau instrumentatie de depanare, fara rol in suita finala. Corectiile de fond (parantezele pe(gnAn)/(gnLuna), bloculRELEASE CLASSLIB/SET CLASSLIB TO) au ramas, cu comentariile lor. - Sters
test_baseline_isolation.prg(+.FXP+ log) — era temporar prin design; concluzia lui ("binarul original nu are blocajul") s-a dovedit nula, testa copia ROACONT a clasei, nu fisierul editat (vezi capcana #2 de mai sus). - Suita rulata din nou dupa curatare — PASS pe toate cazurile (tabelul de mai sus).