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
132 lines
8.7 KiB
Markdown
132 lines
8.7 KiB
Markdown
# 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.
|