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
4.8 KiB
Propunere: precizia pretului de achizitie la trimiterea liniilor de factura (FACT-008)
Diagnostic: docs/cercetare/rec_fact008_pret_achizitie_zecimale.md.
Diff: docs/diff_fact008_precizie_pret.patch — aplicat pe 18.08.2026, necomis.
In productia vending optiunea PPRET a fost pusa pe 4 si eroarea a disparut, confirmand diagnosticul.
Modificarea de cod acopera acelasi lucru independent de configurare.
Modificarea propusa
Un singur tipar, in 8 locuri: serializarea in SQL foloseste precizia declarata a cursorului, nu
gnPPret / gnPPretV / gnPPretVal singure.
- Alltrim(Str(poArt.pret_achizitie,18,gnPPret))
+ Alltrim(Str(poArt.pret_achizitie,18,Max(gnPPret,4)))
Cursoarele sunt deja definite pret_achizitie N(20, Max(gnPPret,4)), pretd N(20, Max(gnPPretVal,4)), pretv_orig N(20, Max(gnPPretV,4)) — modificarea doar aliniaza emiterea cu
declaratia. Coloanele tinta din Oracle suporta precizia (STOC.PRET/PRETV/PRETD au scale 4,
VANZARI_DETALII_TEMP.PRET_ACHIZITIE scale 6).
| fisier | linii | camp |
|---|---|---|
COMUN\clase\ofacturare.vc2 (frm_facturare_articole.do_scrie_articole) |
14073, 14074, 14087 | pret_achizitie, pretd, pretv_orig |
COMUN\clase\ofacturare.vc2 (frm_facturare_articole2.do_scrie_articole) |
18108, 18109, 18122 | pret_achizitie, pretd, pretv_orig |
COMUN\programe\ofacturare_stoc.prg (adauga_articol_factura_stoc) |
360, 361 | pret_achizitie, pretd |
pret_achizitie rezolva eroarea raportata. pretd si pretv_orig sunt aceeasi eroare, latenta:
descarca_gestiune le compara si pe ele prin egalitate exacta (A.PRETD = V_PRETD,
A.PRETV = V_PRETV_ALES), iar coloanele din STOC au tot scale 4. La vending nu se manifesta
(pretv = 0, pretd = 0 peste tot), dar pe o gestiune tinuta la pret de vanzare ar da acelasi
FACT-008. Daca se prefera modificarea strict minima, se pot pastra doar cele 3 linii cu
pret_achizitie — spun explicit ca as include si celelalte 5.
Ce NU propun
- Rotunjire la importul eFactura (
ROACONT\COMUN\clase\anaf_efactura.vc2, liniile 12727, 12744, 12786). Ar strica valoarea receptiei: 8.559 x 500 = 4279.50 fata de 4279.28 cat e valoarea reala a facturii. Zecimalele sunt corecte, transportul din facturare e cel gresit. (Ramane discutabila inconsecventa dintre4la 12744/12786 si6la 12727 — dar e cosmetica, nu cauza.) - Relaxarea predicatului din
pack_facturare.descarca_gestiune(round(A.PRET, ...)). Pe un articol cu mai multe loturi in aceeasi gestiune ar putea potrivi lotul gresit si ar descarca alt cost.
Deblocare imediata in productie, separat de cod
OPTIUNI.PPRET de la 3 la 4 la vending — facut de Marius pe 18.08.2026, eroarea a disparut. Are
efect fara recompilare si a deblocat toate cele 14 articole din stoc care dadeau FACT-008. Cu
PPRET = 4, Max(gnPPret,4) din diff devine oricum echivalent, deci cele doua masuri nu se bat cap
in cap. Optiunea ramane pe 4 pana cand versiunea noua e in productie.
Aplicare (dupa aprobare)
.prg— editare directa, atentie la CRLF..vc2— editare byte-safe (fisierul e cp1250 cu diacritice; liniile atinse sunt ASCII) apoi write-back cutxt2vcx.ps1 -AllowComun, si verificare pe binar prin reconversie in cache temporar + diff, nu pe mtime.COMUN\e partajat de toate produsele ROA si versionat separat (comun.git) — modificarea atinge si ROAGEST/ROAACNPRO/ROAIMOB. Commit-ul se face dinCOMUN\.- Changelog: intrarea intra la
2.11.15, tag:eroare:— versiunea nu se bumpeaza, 2.11.15 nu e inca in productie. - Fara test headless util aici: eroarea apare doar cu un rand real din
STOCcu pret pe 4 zecimale. Verificarea practica e o factura pe articolul 5155 dupa recompilare.
Scriptul PPRET = 4 pentru toate firmele: abandonat
Scriptul a fost scris si apoi sters (SCRIPTURI_CLAR\2026\08\ff_2026_08_19_01_COMUN_OPTIUNI_PPRET.sql).
Decizia lui Marius, 19.08.2026: nu e nevoie de el.
Dupa ce intra versiunile cu Max(gnPPret,4), scriptul nu mai repara nimic, iar PPRET nu e doar
precizie de transport — conduce si rotunjirea pretului unitar la NIR-ul introdus manual
(ointroduceri.vc2: Round(valoare/cantitate, gnPPret)) si mastile de afisare. Pus pe 4 la toate
firmele ar fi schimbat rotunjirea receptiilor manuale la toti clientii, ca sa repare ceva ce codul
repara deja. versiune_db.txt a ramas nebumpat.
Ramane de acoperit prin cod, nu prin configurare: ROAGEST\Programe\ofactureaza.prg (liniile 267,
268, 280) inca trunchiaza, iar copiile COMUN din celelalte produse sunt in urma si primesc
reparatia la urmatorul svn update plus recompilare.
La vending PPRET ramane pe 4 pana cand versiunea noua e in productie — acum e singurul lucru care tine facturarea in picioare acolo. Dupa punerea in productie se poate reveni la 3, daca nu se doresc preturi de achizitie pe 4 zecimale la receptiile manuale.