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
165 lines
10 KiB
Markdown
165 lines
10 KiB
Markdown
# 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).
|