5.3 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:
diff aplicat (sters). Istoricul complet al sesiunii de implementare/depanare:
docs\cercetare\handoff_s4_runda1.md, handoff intermediar (sters),
handoff intermediar (sters).
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 intermediar (sters) 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).