Enumerarea diferentelor dintre rulaje si articole capata interfata: buton pe
pagina de articole, dialog cu grid si comutator de directie, plus verificarea la
salvare. Dialogul propune, nu decide - aplicarea ramane o apasare explicita.
- omodificari.vc2: cmdSincronizeazaArticole pe PAGE3, dezactivat odata cu restul
paginii cand documentul e blocat in eFactura; frm_sincronizare_articole,
derivata din frm_termin_renunt. Gridul e legat de propunere_afisata, cursor
stabil creat in Load si doar golit si reumplut - propunere_sincronizare se
recreeaza la fiecare apel, deci o legare directa s-ar rupe la prima comutare
de directie.
- id_articol trece de la I la N(20), in toate cele 6 locuri scrise pentru acest
punct. Restul codebase-ului foloseste dintotdeauna N(20): valorile reale trec
de 2^31 pe 89.8% din NOM_ARTICOLE, iar un camp I le trunchia tacit, asa incat
potrivirea pe id_articol cadea si iesea perechea Adaugare+Semnalare in locul
unei Modificari. Nu e o schimbare de design, e revenire la conventia casei.
- doua accesari This. in loc de Thisform. in Click-ul butonului de adaugare
articol: proprietatile sunt ale formularului, iar scurtcircuitul OR le
evalua exact cand documentul avea articole - orice click real dadea eroare.
- teste: test_s4b_dialog (35/0) acopera instantierea, comutarea directiei si
aplicarea la salvare; test_s4b_sincronizare (42/0) capata cazul id_articol
3598545102, care ar fi picat inainte de schimbarea de tip.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
Rulajele contabile si articolele facturii sunt doua reprezentari independente ale
aceluiasi document, editabile separat. Helperele noi construiesc enumerarea
diferentelor dintre ele si o pot aplica, la cererea utilizatorului.
- ConstruiestePropunereSincronizare: potrivire pe id_articol, singura cheie
comuna - nu exista corespondent la nivel de linie intre rulaj si articol.
Agregarea RUL foloseste pretul mediu ponderat cand un articol are mai multe
randuri. Articolele nestocate, documentele in valuta si articolele cu mai
multe randuri RUL active raman N-A, cu motiv afisat: propunerea ar fi o
presupunere, nu un calcul.
- AplicaSincronizareArticole: scrie doar in tvd/trul, in memorie. Nu adauga
randuri de rulaj (conturile nu se deduc din articol) si nu sterge linii in
nicio directie - divergenta se semnaleaza, stergerea ramane manuala.
Scrierea reala in Oracle ramane calea existenta, la salvare.
- test_s4b_sincronizare: headless, fara Oracle, pe cursoare construite in test.
Butonul, dialogul si verificarea la salvare vin separat.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3