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
This commit is contained in:
2026-08-11 22:17:17 +03:00
parent 40933df3c8
commit d9f5ca4226
145 changed files with 43431 additions and 0 deletions

View File

@@ -0,0 +1,131 @@
# S8 — Inventar pe tipuri de sursa. Rezultat
Cerinta din plan (`docs\plan_06_editare_factura.md:282-291`): test pe fluxul real, cate un caz din
fiecare tip de sursa (lista de preturi, comanda, contract, aviz), fiecare rulat **de doua ori** (o
data din ROAFACTURARE, o data din registrul jurnal ROACONT), plus un al treilea caz obligatoriu — un
document care nu e factura, deschis din jurnal (**deja acoperit**, testul de garda
`ofacturare_editare.prg` scos din `SET PROCEDURE` -> `PageCount = 2`).
Faza de fata e **inventar, READ-ONLY**: doar `SELECT` si un apel de functie PL/SQL
(`pack_documente.ReferinteDocumenteNota`, functie de citire, fara `INSERT`/`UPDATE`/`COMMIT`).
Zero scriere, zero editare de documente, zero modificare de cod.
## Verdict
**Matricea completa NU e realizabila azi.** Doar tipul **lista de preturi** are documente eligibile
in luna curenta (august 2026) — 3 documente, din care **2 sunt deja indisponibile** (consumate/baza
de regresie in lucrari anterioare). Ramane **un singur candidat neatins**: `id_vanzare=1048`.
Celelalte trei tipuri — **comanda, contract, aviz** — au **zero documente in luna curenta**. Nu e o
limitare de cod sau de garda: nu exista niciun document de acel tip datat in august 2026, in toata
`MARIUSM_AUTO`. Cea mai recenta factura pe comanda e din 26.03.2026, pe contract din 30.06.2026, iar
pe aviz (`tip=4`, "FACT. DIN AVIZ") din **30.11.2023**. Nu se fabrica date.
## 1. Cum se determina „tipul de sursa" — dovada pe cod
`VANZARI.TIP` — mapat explicit in `COMUN\clase\ofacturare.vc2`, atat in configurarea UI a
formularului de facturare (`frm_facturare_articole.Init`, `Do Case` pe `poDate.tip`, `:15122-15153`)
cat si in constantele denumite din `do_copiaza` (`:3628-3681`):
| Tip sursa (cerut de S8) | `VANZARI.TIP` | Eticheta din cod | Sursa |
|---|---|---|---|
| lista de preturi | `1, 5, 7, 10` | POLITICA PRETURI (lei / invoice / credit note / factura valuta) | `ofacturare.vc2:15122-15123`, `:3629-3632` |
| contract | `2, 6` | CONTRACT / CONTRACT - VALUTA | `ofacturare.vc2:15129-15130`, `:3638`, `:3658` |
| comanda | `3` | COMANDA | `ofacturare.vc2:15144-15145`, `:3639` |
| aviz | `4` | FACT. DIN AVIZ (factura emisa pe baza unui aviz anterior) | `ofacturare.vc2:15151-15152`, `:3640` |
Se mapeaza curat pe un singur camp (`VANZARI.TIP`), fara ambiguitate. Precizari:
- Tipurile `21/22/23/24/25/26/28/29/41` etc. sunt **avize propriu-zise sau transferuri** (documente
separate, nu facturi cu sursa aviz) — nu intra in matrice, pentru ca S8 cere editarea unei
**facturi**, nu a unui aviz.
- `tip=-12` (facturi din ROAAUTO, devize auto) e alt caz, deja documentat separat in
`docs\cercetare\roaauto_facturi.md` — nu face parte din cele patru tipuri cerute de plan.
- Contractul (`2,6`) are azi acces liber la lista de preturi in dialogul de adaugare articole
(`docs\cercetare\retur_si_lista_preturi.md`, sectiunea B), dar asta nu schimba clasificarea sursei
— clasificarea e pe `VANZARI.TIP`, nu pe ce se poate adauga ulterior.
## 2. Cate documente exista, per filtru — cifre pe `MARIUSM_AUTO`
Garda de editare cumulata (varianta strictă, `frm_facturi.do_editare_factura`,
`ofacturare_comun.vc2:3715-3872`): `sters=0`, `eproforma<>1`, luna curenta (`data_act` in august
2026), fara linii din seturi (`id_vanzare_set` nenul pe nicio linie activa), fara referinte
(`pack_documente.ReferinteDocumenteNota`), netrimisa in eFactura (`anaf_efactura.id_fact`).
| Pas / filtru | lista de preturi | contract | comanda | aviz |
|---|---|---|---|---|
| 1. `sters=0`, tip in grup, luna curenta (08.2026) | **3** | 0 | 0 | 0 |
| 2. + `eproforma<>1` | 3 (neschimbat) | 0 | 0 | 0 |
| 3. + fara linii din seturi | 3 (neschimbat) | 0 | 0 | 0 |
| 4. + fara referinte incasari/plati | 3 (neschimbat) | 0 | 0 | 0 |
| 5. + netrimis in eFactura (**eligibil final**) | **3** | 0 | 0 | 0 |
Niciun filtru nu a eliminat vreun document din grupul „lista de preturi" — cele 3 existente treceau
deja toate gardele. Pentru celelalte trei tipuri, blocajul e la pasul 1: **nu exista document in
luna curenta**, deci pasii 2-5 sunt irelevanti (cifra ramane 0, nu se pierde nimic pe drum).
**Istoric, ca sa se vada ca nu e o problema de cautare**: `comanda` are 38 de facturi nesterse in
total (cea mai recenta 26.03.2026), `contract` 23 (cea mai recenta 30.06.2026), `aviz` doar 5 in tot
istoricul (cea mai recenta **30.11.2023**) — tipul `aviz` (facturare directa dintr-un aviz emis, fara
trecere prin lista de preturi/comanda/contract) e practic neutilizat de câţiva ani, nu doar in luna
curenta.
**Al doilea punct de intrare (ROACONT/`afisjurcom.do_modifica`, `comun.vc2:2222-2572`)**: garda e
mai laxa — verifica doar luna curenta si `id_set` in afara intervalului `[30000,30009]` (rezervat
ROAPRODUCTIE); nu verifica `eproforma`, referinte sau eFactura (vezi `handoff_punct6_dupa_s5.md`,
confirmat din nou pe cod la aceasta cercetare). Verificat pe cei 3 candidati lista de preturi:
`id_set=25010` pentru toti trei (an=2026, luna=8) — in afara intervalului interzis, deci **toti trei
trec si garda ROACONT**. Cum niciun filtru specific ROAFACTURARE (eproforma/referinte/eFactura) n-a
eliminat vreun document din cele 3, garda mai laxa a jurnalului **nu aduce candidati suplimentari**
pentru lista de preturi — si, evident, nu poate aduce candidati pentru comanda/contract/aviz, unde
blocajul e lipsa documentului insusi (ambele puncte de intrare cer luna curenta).
## 3. Lista concreta de candidati propusi
| Tip sursa | `id_vanzare` | `cod` | `id_fact` | Stare | De ce |
|---|---|---|---|---|---|
| lista de preturi | **1048** | 1140894 | 8009658 | **neatins, eligibil** | 1 linie activa, fara valuta (`in_valuta=0`), `discount=0`, client RAJA (`id_part=463`) — document simplu, curat, tip=1 |
| lista de preturi | 1049 | 1140906 (curent) | 8009659 | eligibil pe cod, dar **deja consumat** | documentul de test S5/S7 — `cod` realocat de 8 ori, folosit intentionat ca baza de continuitate; nu se reia pentru S8 fara sa se stie ca istoricul lui e deja incarcat |
| lista de preturi | 1050 | 1140895 | 8009660 | eligibil pe cod, dar **interzis explicit** | „baza suitelor de regresie — nu se atinge" (`handoff_punct6_dupa_s5.md`) |
| contract | — | — | — | **zero** | niciun document `tip in (2,6)` in august 2026 (cel mai recent 30.06.2026) |
| comanda | — | — | — | **zero** | niciun document `tip=3` in august 2026 (cel mai recent 26.03.2026) |
| aviz | — | — | — | **zero** | niciun document `tip=4` in august 2026 (cel mai recent **30.11.2023**) |
**Singurul candidat utilizabil pentru matrice, azi: `id_vanzare=1048` (lista de preturi).** Pentru
comanda/contract/aviz nu exista alternativa in luna curenta — orice executie ar cere fie asteptarea
pana quando apare un document nou de acel tip in perioada curenta, fie o decizie explicita de a
relaxa criteriul „luna curenta" (schimbare de scop, nu de agent).
## 4. Ce ar consuma executia matricei (daca se aproba)
- **Un singur `cod` disponibil de consumat**: `id_vanzare=1048`, `cod=1140894`. Fiecare trecere prin
fluxul de editare realoca `cod` ireversibil (pattern confirmat empiric in S5/S7: 8 realocari pe
`id_vanzare=1049`). Testarea „de doua ori" (ROAFACTURARE + ROACONT) ar realoca `cod`-ul cel putin
**de doua ori** pe acest document.
- **Comanda/contract/aviz**: executie **imposibila** azi, indiferent de aprobare — nu exista document
de consumat. Singura cale de a acoperi aceste trei tipuri e sa apara documente noi in productie in
luna curenta, sau o decizie separata de relaxare a scopului (nu s-a luat).
- Al treilea caz obligatoriu (document care nu e factura, din jurnal) — deja acoperit, zero consum
suplimentar.
- Nimic din inventarul de fata nu a consumat date: read-only, zero `INSERT`/`UPDATE`/`COMMIT`.
## Ce NU acopera cercetarea
- `glLunaInchisa` (garda VFP „luna contabila inchisa") nu e verificabila din Oracle — presupusa
deschisa (mediul de test curent), neverificata direct.
- Nu s-a cautat in alte luni/ani pentru un eventual document comanda/contract/aviz care sa fi ramas
needitat din alt motiv — cerinta explicita a fost „luna curenta", conform gardei reale de editare.
- Coloana `VANZARI.ID_VANZARE_SET` nu exista direct pe `VANZARI` — verificarea „fara linii din
seturi" s-a facut pe `VANZARI_DETALII.ID_VANZARE_SET` (linii active), consistent cu decizia 39
(`handoff_s5.md`).
## Date de test — NIMIC consumat
Interogari `SELECT` + un apel de functie PL/SQL de citire (`pack_documente.ReferinteDocumenteNota`).
Zero `INSERT`/`UPDATE`/`DELETE`/`COMMIT`. `id_vanzare=1049` si `1050` — neatinse, doar citite.
`id_vanzare=1048` — doar citit, nu editat; ramane candidatul propus pentru executia viitoare.
## Fisiere atinse
Niciunul de productie. Scripturi `.sql` de interogare, in scratchpad (nu in `docs\`, nu in
`SCRIPTURI_CLAR`) — pur exploratorii, nu fac parte din livrare.