Files
roafacturare/docs/cercetare/rec_s4_runda1.md
Marius Mutu d9f5ca4226 docs: planurile, proiectarile si rapoartele de lucru intra in versionare
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
2026-08-11 22:17:17 +03:00

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 din VANZARI corespunzator notei curente (filtru compus cod+nract+serie_act+data_act, necesar pentru ca VANZARI.COD nu e unic — vezi progres.md), cursor tvanz.
    • IncarcaArticoleFactura(tnIdVanzare) — liniile active (sters=0) din VANZARI_DETALII, cu denumire articol/gestiune/valuta pentru afisare, cursor tvd.
  • 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 + fiecare Text1).
    • Proprietati noi pe clasa: lAreArticoleVanzari, nIdVanzare, nTipVanzare.
    • Load(): placeholder CREATE CURSOR tvd (...) — evita dialogul nativ "Open" pe RecordSource inexistent la constructia grid-ului.
    • Show(): bloc nou care cheama IncarcaVanzareNota/IncarcaArticoleFactura si comuta pgfArticole.PageCount intre 2 si 3 dupa lAreArticoleVanzari.

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 are ControlCount=0 pe formularul principal frm_facturi, deci butoanele native nu sunt disponibile pentru a conduce fluxul complet prin UI).
  • Fluxul UI complet prin "Terminat" — netestat; verifica_pagecount_form instantiaza frm_modific2024 direct (Createobject+Show), la fel ca do_editare_factura, dar nu conduce formularul pana la inchidere. Validarea din inainte_de_do_termin nu e exercitata de aceasta suita.
  • Garda referinte pe do_editare_factura ramane 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:

  1. DO ... WITH gnAn, gnLuna pasa prin referinta si umbrea variabilele in procedurile apelate, provocand dialogul nativ "View Parameter" pe un ?gnAn din SQL passthrough — remediat cu pasare prin valoare (DO ... WITH (gnAn), (gnLuna)).
  2. Harnessul de test (test_init_env_auto.prg) incarca implicit clasa omodificari din copia de lucru ROACONT, nu din fisierul editat — remediat cu RELEASE CLASSLIB + SET CLASSLIB TO pe calea completa a fisierului sub test.
  3. Proprietatile custom noi (lAreArticoleVanzari, nIdVanzare, nTipVanzare) lipseau din *<DefinedPropArrayMethod> (intrarile *p:) — regula era documentata doar pentru metode (*m:); aplicata acum si aici, in COMUN\docs\flux-editare-vfp-text.md.

Curatare facuta la inchidere

  • Scoase liniile de log [BISECT] si [DIAG] (ClassLibrary/PEMSTATUS) din test_page3_articole.prg — erau instrumentatie de depanare, fara rol in suita finala. Corectiile de fond (parantezele pe (gnAn)/(gnLuna), blocul RELEASE 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).