Files
roafacturare/docs/cercetare/rec_cantitate_negativa_date.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

6.4 KiB

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.