Files
roafacturare/docs/cercetare/rec_s8_matrice.md
Marius Mutu ca3c5d7eea docs: runda 6 - cercetari, propuneri si conventia mediului Oracle
Cercetarile si propunerile rundelor 4-6 pe editarea facturii emise. Starea
rundei 6 si ce s-a stabilit intra in progres.md.

Nou: docs/conventii_mediu_oracle.md - pe dev/test se lucreaza numai cu
ROA_CENTRAL si schemele CONTAFIN_ORACLE si MARIUSM_AUTO; schema ACN nu se
foloseste. Scripturile de pachet sunt necalificate, deci schema tinta o
decide sirul de conectare, nu fisierul.

roafacturare.pj2 regenerat de git_sync.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013gYCNE26G1G7UoGu2ju7aS
2026-08-20 16:35:03 +03:00

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)

INCHISA — decizia lui Marius, 12.08.2026: asimetria se accepta, nu se repara. Nu se atinge nici comun.vc2, nici omodificari.vc2. Sectiunea de mai jos ramane ca inventar al constatarii, nu mai e o intrebare deschisa — nu o redeschide. Motivele, in docs\progres.md.

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).