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
This commit is contained in:
125
docs/cercetare/rec_cantitate_negativa_date.md
Normal file
125
docs/cercetare/rec_cantitate_negativa_date.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# Cercetare pe date: `cantitate < 0` / `cantitate = 0` pe articole de vânzări (validarea de la `omodificari.vc2:14386`)
|
||||
|
||||
Schema verificată: `MARIUSM_AUTO`@`ROA_CENTRAL` (schema de dezvoltare, folosită și pentru rulări de
|
||||
teste automate — vezi caveat la final). Toate interogările: `SET TRANSACTION READ ONLY`, încheiate
|
||||
cu `ROLLBACK` (confirmat: „Rollback complete." la fiecare rulare, zero scrieri).
|
||||
|
||||
Sursă date: view-ul `vvanzari_articole` (JOIN `VANZARI_DETALII`+articol, expune deja `denumire`,
|
||||
`pret_achizitie`), filtrat `sters = 0` (= liniile active), înjumătățit cu `VANZARI` pe `id_vanzare`
|
||||
pentru `tip`/`cod`/`data_act`. Nu trag concluzii de produs — doar cifre și exemple, cerute punct cu punct.
|
||||
|
||||
## 1. Câte linii, pe `VANZARI.TIP`
|
||||
|
||||
**`cantitate < 0`** (linii active, sparte pe tip):
|
||||
|
||||
| TIP | linii | documente | etichetă (dacă am confirmat-o în cod) |
|
||||
|---|---|---|---|
|
||||
| -13 | 1 | 1 | necunoscută — vezi caveat |
|
||||
| -12 | 9 | 8 | necunoscută — vezi caveat |
|
||||
| -8 | 1 | 1 | necunoscută — vezi caveat |
|
||||
| -7 | 1 | 1 | necunoscută — vezi caveat |
|
||||
| -6 | 25 | 24 | necunoscută — vezi caveat |
|
||||
| -4 | 1 | 1 | necunoscută — vezi caveat |
|
||||
| -2 | 1 | 1 | necunoscută — vezi caveat |
|
||||
| -1 | 3 | 2 | necunoscută — vezi caveat |
|
||||
| 1 | 3 | 2 | lista de preturi (confirmat de team-lead) |
|
||||
| 3 | 10 | 4 | necunoscută — nu am verificat-o în cod |
|
||||
| 8 | 2 | 1 | necunoscută — nu am verificat-o în cod |
|
||||
| 24 | 1 | 1 | necunoscută — nu am verificat-o în cod |
|
||||
| 41 | 4 | 4 | necunoscută — nu am verificat-o în cod |
|
||||
| 51 | 3 | 1 | ROAACNPRO / import (menționat în `omodificari.vc2:13125-13127`, cercetarea `rec_s8_rulaje_tip4.md`) |
|
||||
|
||||
Total: **65 linii active cu `cantitate < 0`, pe 52 documente distincte.**
|
||||
|
||||
**`cantitate = 0`** (linii active, sparte pe tip):
|
||||
|
||||
| TIP | linii | documente | etichetă |
|
||||
|---|---|---|---|
|
||||
| -6 | 2 | 2 | necunoscută — vezi caveat |
|
||||
| 2 | 1 | 1 | contract (confirmat de team-lead) |
|
||||
| 22 | 5 | 5 | aviz (confirmat în cod, `oproceduri_facturare.prg` etc.) |
|
||||
|
||||
Total: **8 linii active cu `cantitate = 0`, pe 8 documente distincte.**
|
||||
|
||||
Tabelele de mai sus conțin `TIP = -6`, nu `TIP = 6` — sunt valori distincte, nu le-am confundat.
|
||||
|
||||
> **CORECTIE a sesiunii principale, 12.08.2026 — afirmatia „doar `TIP = 4` trece prin validarea de la
|
||||
> `:14386`" era GRESITA si a fost stearsa de aici si din §6.** Contaminare din misiunea anterioara a
|
||||
> aceluiasi agent, care era chiar despre tip 4.
|
||||
>
|
||||
> Pagina de articole **nu e conditionata de tip**. `omodificari.vc2:14842`:
|
||||
> `IF "OFACTURARE_EDITARE" $ Upper(Set("Procedure")) AND Reccount('tact') > 0`, apoi
|
||||
> `IF Reccount('tvanz') = 1` -> `lAreArticoleVanzari = .T.`. `nTipVanzare` e doar **retinut**
|
||||
> (`:14841`), niciodata folosit ca poarta. Deci **orice document cu rand in `VANZARI`** primeste `tvd`
|
||||
> si trece prin `:14386`.
|
||||
>
|
||||
> Dovedit si empiric de matricea S8 (`rec_s8_matrice.md`): asertia „tvd incarcat cu liniile active
|
||||
> reale" a trecut pe `1048` (tip 1), `1055` (tip 2), `1052` (tip 22) **si** `1054` (tip 4).
|
||||
>
|
||||
> **Consecinta**: absenta lui `TIP = 4` din tabele **nu e o veste buna** si nu arata ca validarea n-a
|
||||
> respins nimic real. Cele 52 de documente cu `cantitate < 0` sunt exact populatia pe care validarea o
|
||||
> blocheaza. Tipurile `-6` si `41` sunt **retur-transfer** (`docs\progres.md`, sectiunea #8/S8), adica
|
||||
> fix cazul semnalat de Marius.
|
||||
|
||||
## 2. Exemple concrete (3 + 3, cele mai recente după `data_act`)
|
||||
|
||||
**`cantitate < 0`:**
|
||||
|
||||
| id_vanzare | tip | cod | data_act | denumire | cantitate | pret | id_articol | pret_achizitie |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| 1035 | 3 | 1140727 | 26-MAR-26 | DISCOUNT | -3 | 4.8 | 4294507213 | 0 |
|
||||
| 1035 | 3 | 1140727 | 26-MAR-26 | DISCOUNT | -1 | 3.15 | 4294507213 | 0 |
|
||||
| 1035 | 3 | 1140727 | 26-MAR-26 | DISCOUNT | -3 | 3.3 | 4294507213 | 0 |
|
||||
|
||||
**`cantitate = 0`:**
|
||||
|
||||
| id_vanzare | tip | cod | data_act | denumire | cantitate | pret | id_articol | pret_achizitie |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| 1051 | 22 | 1140907 | 10-AUG-26 | SERVICII PER BUC | 0 | 0 | 4294507490 | 0 |
|
||||
| 1057 | 2 | 1140913 | 10-AUG-26 | SERVICII PER BUC | 0 | 0 | 4294507490 | 0 |
|
||||
| 1056 | 22 | 1140912 | 10-AUG-26 | SERVICII PER BUC | 0 | 0 | 4294507490 | 0 |
|
||||
|
||||
(Toate cele 3 exemple de `cantitate=0` provin sunt pe `id_articol` completat, `pret = 0`.)
|
||||
|
||||
## 3. Recență
|
||||
|
||||
| categorie | `MAX(data_act)` | linii în ultimele 12 luni |
|
||||
|---|---|---|
|
||||
| `cantitate < 0` | 26-MAR-26 | 10 din 65 |
|
||||
| `cantitate = 0` | 10-AUG-26 | 6 din 8 |
|
||||
|
||||
## 4. `pret = 0` pe linii active
|
||||
|
||||
**19 linii, pe 17 documente distincte**, `MAX(data_act) = 10-AUG-26`. Toate cele 19 au `id_articol`
|
||||
completat (`linii_cu_articol = 19` din `19` — deci nu sunt rânduri-rest fără articol).
|
||||
|
||||
## 5. `pret IS NULL` pe linii active
|
||||
|
||||
**0 linii.** Confirmă structural ce ați bănuit: `VANZARI_DETALII.PRET` e `NOT NULL` (verificat cu
|
||||
`DESC vanzari_detalii` — coloana `PRET NUMBER(22,6) NOT NULL`), deci interogarea pe `pret IS NULL`
|
||||
nu putea da altceva decât 0.
|
||||
|
||||
## 6. `cantitate < 0` pe documente cu pagină de articole (validarea `:14386`)
|
||||
|
||||
Agentul a raportat aici ca „doar `TIP = 4` trece prin validare" si ca `TIP = 4` lipsind din date ar
|
||||
insemna ca validarea n-a respins nimic real. **Ambele sunt gresite** — vezi caseta de corectie din §1.
|
||||
|
||||
Raspunsul corect, stabilit de sesiunea principala din cod: pagina de articole **nu are filtru pe
|
||||
tip** (`omodificari.vc2:14842`), deci **toate** cele 52 de documente cu `cantitate < 0` si cele 8 cu
|
||||
`cantitate = 0` trec prin `:14386` la editare, si toate ar fi respinse.
|
||||
|
||||
## Caveat pe date
|
||||
|
||||
- Schema e cea de **dezvoltare** (`MARIUSM_AUTO`), folosită și pentru rulările automate de teste
|
||||
(vezi `docs/cercetare/rec_s8_rulaje_tip4.md` — același `id_vanzare` a fost editat de un test).
|
||||
Recența (`10-AUG-26` = practic azi) poate reflecta rulări de test, nu neapărat uz curent real.
|
||||
- **Valorile negative de `TIP`** (-1, -2, -4, -6, -7, -8, -12, -13) nu corespund niciunui tip de
|
||||
document cunoscut din codul citit până acum — `VANZARI.TIP` e `NUMBER(2) NOT NULL`, dar coloana nu
|
||||
are o constrângere de semn în schema Oracle, deci acceptă tehnic valori negative. N-am cercetat
|
||||
originea lor (ar necesita căutare suplimentară în cod, în afara scopului acestei misiuni) — le
|
||||
raportez ca atare, fără să presupun că sunt date de test sau eroare.
|
||||
|
||||
## Fișiere atinse
|
||||
|
||||
Niciunul (misiune read-only). Interogări Oracle read-only pe `MARIUSM_AUTO`@`ROA_CENTRAL`, cu
|
||||
`ROLLBACK` la final pe toate scripturile.
|
||||
Reference in New Issue
Block a user