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
10 KiB
S8 — matricea pe tipuri de sursa, cele 4 documente
Test: COMUN\utile\Teste\editare_factura\test_s8_matrice_surse.prg, log:
COMUN\utile\Teste\editare_factura\test_s8_matrice_surse_log.txt (rescris la fiecare rulare -
cifrele de mai jos sunt citite din log imediat dupa fiecare rulare, inainte de a activa
urmatorul document, si verificate independent prin sqlplus).
Matricea completa (4 documente) a fost rulata, cate unul pe rand, activat prin gaCazuriActive in
test_s8_matrice_surse.prg. Codul (EditeazaDinRoafacturare/EditeazaDinRegistruJurnal/
VerificaDupaEditare/CalculeazaTotaluriS4b) e neschimbat intre rulari - parametrizarea prin
id_vanzare a functionat neschimbata pe toate cele 4 tipuri.
Sinteza cifrelor REZULTAT (autoritare, din log)
| Document | Tip sursa | REZULTAT | FAIL-uri | Cauza FAIL-urilor |
|---|---|---|---|---|
| 1048 | lista de preturi (tip 1) | 44 PASS / 0 FAIL | - | - |
| 1055 | factura din contract (tip 2) | 44 PASS / 0 FAIL | - | - |
| 1052 | aviz (tip 22) | 26 PASS / 1 FAIL | 1 | garda ReferinteDocumenteNota blocheaza corect intrarea ROAFACTURARE (constatare, nu defect de test - vezi mai jos) |
| 1054 | factura din aviz (tip 4) | 42 PASS / 2 FAIL | 2 | Reccount(trul)=0 pe ambele intrari - normal pentru tip 4 (vezi mai jos), nu defect |
Niciun EROARE in niciunul din cele 4 loguri.
Document 1048 — lista de preturi (tip 1)
Deja raportat integral in versiunea anterioara a acestui document (ambele intrari au reusit complet,
0 anomalii). Stare finala neschimbata de rularile ulterioare pe celelalte documente: cod=1140918,
id_fact=8009658 (neschimbat), totaluri 250.01/52.50/302.51 (neschimbate), 1 linie activa.
Document 1055 — factura din contract (tip 2)
Ambele intrari au reusit complet (COMMIT), fara nicio anomalie in lantul de scriere.
| inainte | dupa ROAFACTURARE | dupa registrul jurnal | |
|---|---|---|---|
cod |
1140911 | 1140919 | 1140920 |
id_fact |
8009680 | 8009680 | 8009680 (neschimbat) |
| totaluri | 200.00 / 42.00 / 242.00 | neschimbate | neschimbate |
| linii active | 2 | 2 | 2 |
vact_tot: cod 1140911 si 1140919 (notele vechi) - toate randurile STERS=1; cod 1140920 (nota
curenta) - toate randurile STERS=0.
Constatare (nu defect): verdictul S4b e divergent pe tot parcursul - ACT=242, RUL=121
(exact jumatate), neschimbat de cele doua editari (121 -> 121 pe ambele treceri). Verdictul e
etichetat explicit "informativ, nu e eroare" de catre frm_modific2024 insusi (decizia din S4b:
formularul arata divergenta, nu o blocheaza). Asertiile testului nu presupun ACT=RUL - verifica
doar ca fiecare total ramane concordant fata de inainte de editare, ceea ce s-a confirmat.
Document 1052 — aviz (tip 22)
Nu e factura - constatare confirmata, exact cum a semnalat briefingul.
Intrarea ROAFACTURARE (do_editare_factura): BLOCATA de garda, corect
FAIL ... document fara referinte / netrimis in eFactura [.T.]
ReferinteDocumenteNota(2026, 8, 1140908) a intors adevarat - verificat direct in Oracle:
ACT.id_factc = 8009677 (id_fact-ul avizului 1052) exista pe cod=1140910, care e nota lui 1054
("factura din aviz", emisa din acest aviz). Garda functioneaza exact cum trebuie: blocheaza
editarea unui document sursa care are deja o factura emisa din el - nicio scriere nu s-a produs
(verificat: cod a ramas 1140908 neschimbat pana la intrarea urmatoare). EsteInEFactura nu a
contribuit (anaf_efactura nu are randuri pentru id_fact=8009677).
Aceasta e o FAIL de asertie asteptata si corecta - testul a presupus (mostenit din modelul
S5, gandit pentru facturi) ca documentul e editabil; pentru un aviz cu factura deja emisa din el,
nu e. Marcata ca atare, nu ca defect.
Intrarea registru jurnal ROACONT (do_modifica): A REUSIT COMPLET, fara aceeasi garda
PASS ... blocul ScrieArticoleFacturaEditate s-a executat pe aceasta cale (garda satisfacuta) [.T.]
PASS ... lantul complet a reusit (COMMIT) [lnSucces=1]
Constatare reala, de raportat lui Marius: afisjurcom.do_modifica (comun.vc2:2222-2569) nu
are garda ReferinteDocumenteNota/EsteInEFactura in secventa reprodusa (confirmat deja indirect
de test_s5_al_doilea_intrare.prg, dar niciodata exercitata pana acum pe un document care CHIAR are
o referinta reala). Rezultat: editarea prin registrul jurnal a trecut pana la COMMIT pe un
document (1052) pe care intrarea ROAFACTURARE l-a blocat explicit din acelasi motiv.
Pe aceasta rulare fara consecinta vizibila (editarea nu a modificat nicio linie - doar a
realocat cod-ul si a refacut nota; documentul 1054, care il refera, a fost verificat neschimbat:
cod=1140910, id_fact=8009679, totaluri 252.07/52.93/305.00, toate identice cu inainte).
Legatura structurala ramane valida pentru ca trece prin id_fact/id_vanzare, niciodata prin cod
(S6, deja inchis). Dar daca editarea prin ROACONT ar fi inclus si o modificare de continut pe un
document cu referinte reale, nimic nu ar fi oprit-o - asimetria intre cele doua puncte de intrare e
reala, nu doar teoretica. Nu s-a atins comun.vc2/omodificari.vc2 pentru a o corecta (livrare
inchisa) - se raporteaza pentru decizia lui Marius.
| inainte | dupa ROAFACTURARE | dupa registrul jurnal | |
|---|---|---|---|
cod |
1140908 | (blocat, nescris) | 1140921 |
id_fact |
8009677 | - | 8009677 (neschimbat) |
| totaluri | 271.17 / 56.94 / 328.11 | - | neschimbate |
| linii active | 2 | - | 2 |
vact_tot: cod 1140908 (nota veche) - toate randurile STERS=1; cod 1140921 (nota curenta) -
toate randurile STERS=0. S4b: ACT=RUL=328.11, verdict sincronizat, neschimbat de editare.
Document 1054 — factura din aviz (tip 4)
Ambele intrari au reusit complet (COMMIT), singurele 2 FAIL din aceasta rulare sunt pe
Reccount(trul)>0.
Stabilit inainte de editare, nu ghicit: interogare pe toate cele 6 documente tip=4 din baza
(145, 665, 668, 697, 974, 1054) - toate au exact 2 randuri ACT si 0 randuri RUL,
indiferent de total_cu_tva. Tiparul e 100% consistent pe populatia completa de documente tip 4,
nu doar pe 1054 - normal pentru tip 4, nu o particularitate a acestui document. Explicatia
structurala plauzibila: miscarea de stoc s-a inregistrat deja la emiterea avizului sursa; factura
emisa din aviz nu mai genereaza randuri RUL proprii (ar dubla miscarea), doar nota contabila
(ACT). Cele doua FAIL (Reccount(trul)>0 cerut de asertia generica, Reccount(trul)=0 gasit)
sunt asteptate si corecte pentru acest tip de document - verificarea "rulaje refacute" nu e
concludenta pentru tip 4 (nu exista rulaje de refacut), nu semnaleaza un defect.
Restul verificarilor (nota veche/noua, id_fact, totaluri denormalizate, S4b ACT concordant,
stoc) au trecut integral pe ambele intrari.
| inainte | dupa ROAFACTURARE | dupa registrul jurnal | |
|---|---|---|---|
cod |
1140910 | 1140922 | 1140923 |
id_fact |
8009679 | 8009679 | 8009679 (neschimbat) |
| totaluri | 252.07 / 52.93 / 305.00 | neschimbate | neschimbate |
| linii active | 1 | 1 | 1 |
vact_tot: cod 1140910 si 1140922 (notele vechi) - toate randurile STERS=1; cod 1140923 (nota
curenta) - toate randurile STERS=0. S4b: ACT=305, RUL=0, verdict divergent (informativ),
neschimbat de editare (305->305, 0->0).
Verdict explicit pe cele 8 verificari cerute de plan (plan_06_editare_factura.md:286-288)
| # | Verificare | Verdict pe matrice |
|---|---|---|
| 1 | nota veche STERS=1 |
PASS pe toate cele 7 scrieri reusite (1048x2, 1055x2, 1052x1 - ROACONT, 1054x2). N/A pe 1052/ROAFACTURARE (blocat inainte de scriere, nu s-a creat nicio nota noua). |
| 2 | nota noua corecta (exista, activa, acelasi id_fact) |
PASS pe toate cele 7 scrieri reusite. |
| 3 | id_fact neschimbat |
PASS pe toate cele 7 - 8009658, 8009680, 8009677, 8009679 identice inainte/dupa. |
| 4 | VANZARI/VANZARI_DETALII sincronizate |
PASS pe toate cele 7 - numar de linii active neschimbat, totaluri coerente (ftva+tva=ctva). |
| 5 | totalurile denormalizate corecte | PASS pe toate cele 7 - identice cu inainte de editare (reeditare fara modificari de continut). |
| 6 | rulajele refacute | PASS pe 1048 (x2), 1055 (x2), 1052 (x1, ROACONT). FAIL asteptat pe 1054 (x2) - RUL=0 e normal pentru tip 4 (confirmat pe toate cele 6 documente tip 4 din baza), verificarea nu e concludenta pentru acest tip. |
| 7 | totalurile de control S4b concordante | PASS pe toate cele 7 - Total ACT si Total RUL raman fiecare neschimbate fata de inainte de editare, indiferent daca verdictul absolut e sincronizat (1048, 1052) sau divergent (1055, 1054 - divergenta insasi e preexistenta editarii, nu cauzata de ea). |
| 8 | verificarile de stoc de la emitere NU s-au declansat | PASS pe toate cele 7 - gcMockUltimMesaj ramas gol dupa fiecare lant de scriere; structural, verifica_stoc (oscrie_in_fisiere.prg:92) nu se poate declansa pentru ca ambele puncte de intrare trec tlModificare=.T.. |
Al treilea caz obligatoriu (document care nu e factura, deschis din registru jurnal, fara
pagina de articole) - deja acoperit separat, per handoff (docs\handoff_punct6_10082026_pm.md:113).
Constatare de raportat separat (nu de reparat aici)
Asimetria de garda intre punctele de intrare (sectiunea document 1052 de mai sus): intrarea
ROAFACTURARE (ofacturare_comun.vc2, do_editare_factura) verifica ReferinteDocumenteNota/
EsteInEFactura inainte de a permite editarea; intrarea registru jurnal ROACONT
(comun.vc2, afisjurcom.do_modifica) nu are aceasta garda in secventa reprodusa si a scris pana
la capat pe acelasi document pe care ROAFACTURARE l-a blocat. Nicio consecinta vizibila pe aceasta
rulare (editare fara modificari de continut, documentul care refera - 1054 - verificat neschimbat),
dar protectia lipseste structural pe calea ROACONT. omodificari.vc2/comun.vc2 nu au fost
atinse (livrari inchise) - decizia (adaugarea gardei si pe ROACONT, sau acceptarea asimetriei) ii
revine lui Marius.
Ramas de facut
Toate cele 4 documente din matrice au fost editate de doua ori si verificate. Nimic ramas pe felia S8 in sine. Documentele consumate (coduri realocate, note vechi sterse ireversibil): 1048 (-> 1140918), 1052 (-> 1140921), 1054 (-> 1140923), 1055 (-> 1140920).