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.9 KiB
Test real al caii de scriere (buton=1) din do_editare_factura
Aprobat explicit de Marius pe 08.08.2026: test care scrie efectiv in MARIUSM_AUTO@ROA_CENTRAL.
Script: COMUN\utile\Teste\editare_factura\test_writeback_buton1.prg. Log complet:
COMUN\utile\Teste\editare_factura\test_writeback_buton1_log.txt.
Rezultat
PASS pe toate cele 5 verificari cerute, de doua ori (salvare fara modificari + salvare cu o
modificare), cu COMMIT real, verificat independent prin sqlplus dupa rulare.
Document consumat: cod=1140886, id_vanzare=1048 (factura tip 1, 07-AUG-26, total_cu_tva=302.51,
1 linie VANZARI_DETALII, 5 randuri ACT, id_set=25010, id_fact=8009658, 1 rand RUL).
Cod-ul final ramas in baza dupa acest test: 1140894 (a trecut prin 1140886 -> 1140893 ->
1140894, cate o realocare la fiecare salvare). Oricine reia testul pe acest document trebuie sa
citeasca cod-ul curent din VANZARI (nu presupune 1140886).
Calea testata: harness direct, NU UI condus prin Timer
frm_modific2024 a fost ocolit complet - nu a fost instantiat deloc, dupa doua incercari esuate
(vezi sectiunea "Ce nu acopera" mai jos). Harnessul:
- Reproduce exact starea de cursoare pe care
do_editare_facturao lasa inainte deCreateobject('frm_modific2024',...), folosind functia realaIncarcaCursoareModificareNota(COMUN\programe\ofacturare_editare.prg) pe date Oracle reale. - Seteaza
buton=1direct (sare pesteinainte_de_do_termin). - Ruleaza LITERAL codul ramurii
buton=1dindo_editare_factura(ofacturare_comun.vc2:3805-3840), inclusivOSCRIE_IN_FISIERE(2,...)(stergere),OSCRIE_IN_FISIERE(0,...)(scriere) sipack_contafin.finalizeaza_modificare_nota. Thisform.do_deschide_tranzactie()/do_inchide_tranzactie()sunt reproduse INLINE (MyDeschideTranzactie/MyInchideTranzactiein harness), copiate identic dupa_frm_base.vc2:252-302, fara sa instantieze niciun formular.
OSCRIE_IN_FISIERE (COMUN\programe\oscrie_in_fisiere.prg) nu a fost mock-uit - a rulat
codul real, cu conexiune Oracle reala.
Cele 5 verificari (ambele rulari)
| # | Verificare | TEST 1 (fara modificari) | TEST 2 (explicatie modificata) |
|---|---|---|---|
| 1 | ACT: vechi STERS=1, nou cu aceeasi suma |
PASS (5/5 sters, suma 792.53 -> 792.53) | PASS (5/5 sters, suma 792.53 -> 792.53) |
| 2 | RUL: acelasi tipar |
PASS (1 rand vechi sters, 1 rand nou) | PASS (identic) |
| 3 | VANZARI: cod nou, sters=0, id_fact neschimbat, totaluri neschimbate |
PASS (1140886->1140893) |
PASS (1140893->1140894) |
| 4 | VANZARI_DETALII: neatins |
PASS (1 rand, sume identice) | PASS (identic) |
| 5 | lnSucces>0 pe tot lantul + commit (nu rollback) |
PASS (lnSucces=1, COMMIT) |
PASS (lnSucces=1, COMMIT) |
Verificare suplimentara TEST 2: explicatia modificata (NOTA 1 -> NOTA 1 (test writeback)) a
ajuns efectiv in randul nou din ACT - PASS, confirmat si independent prin sqlplus
(cod=1140894, randul 4111/704, coloana EXPLICATIA).
Independent, prin sqlplus dupa rulare (nu doar din logul VFP): VANZARI.cod=1140894,
sters=0, totaluri neschimbate; ACT cod 1140886 si 1140893 toate STERS=1; ACT cod
1140894 are 5 randuri active cu aceleasi sume/id_set/id_fact; RUL cod 1140894 1 rand activ;
VANZARI_DETALII neschimbat.
Ce NU acopera acest test
- Validarea din
inainte_de_do_termin(omodificari.vc2:13357-13549-verificare_note_contabile, echilibru 4426-4428,VerificaAvertizareExigibilizareTVA) - a fost sarita,buton=1a fost fortat direct in harness. - Comportamentul real al formularului
frm_modific2024la butonul "Terminat" (sau la editari facute de utilizator in grid-urile lui) - formularul nu a fost instantiat deloc. - Testul demonstreaza ca lantul de scriere functioneaza pe acest tip de document - nu ca utilizatorul ajunge la el prin fluxul UI complet.
Incidente pe parcurs (rezolvate, fara sa fi fost bug de aplicatie)
- Instantierea
frm_modific2024s-a blocat de doua ori, headless, fara nicio linie de eroare in log:- Prima data pe un dialog nativ Windows "Open" (
#32770), confirmat prin enumerarea ferestrelor procesului (EnumWindows/GetWindowText) - tipar deja documentat intestare-ui-vfp.md, capcana j (o tabela/cursor lipsa in mediul minimal declanseaza dialogul de cautare fisier in loc de eroare catchabila). Cauza exacta (ce control/tabela anume) nu a fost investigata mai departe - nu era obiectul acestui test, siomodificari.vc2era in lucru in paralel la S4/PAGE3. - Din aceasta cauza s-a decis ocolirea completa a formularului (vezi sectiunea de mai sus).
- Prima data pe un dialog nativ Windows "Open" (
- Bug de harness (nu de aplicatie):
pnAn/pnLunadeclarateLOCALin loc dePrivate. Apelulpack_contafin.finalizeaza_modificare_nota(?pnLuna,?pnAn,...)foloseste?pnLuna/?pnAnca bind-variabile, rezolvate degoExecutor.oExecutain josul stivei de apel - vizibilitatea asta cerePrivate, nuLocal(exact cum sunt declarate in codul real,ofacturare_comun.vc2:3742:Private pnAn, pnLuna, lnCod, lnIdFact, lnIdVanzare). CuLocal, rularea a produs o fereastra nativa VFP "View Parameter" (vizibila o singura data prinEnumWindows, apoi rezolvata singura fara interventie) sifinalizeaza_modificare_notaa returnat-1de doua ori consecutiv - fara nicio scriere efectiva (ROLLBACK ambele dati, date verificate neatinse). Corectat in harness (Private pnAn, pnLuna, lnCod, lnIdFact), dupa care ambele teste au trecut curat. Concluzie: nu e un defect alofacturare_comun.vc2sau aloscrie_in_fisiere.prg- codul real foloseste deja declararea corecta.
Date de test consumate ireversibil
cod=1140886 (id_vanzare=1048) nu mai exista ca document activ - a fost realocat de doua ori.
Orice test viitor pe acest document trebuie sa porneasca de la cod=1140894 (curent) sau sa aleaga
alt document.