Import eFactura in lot: borderou cu ce lipseste, coada de contabilizare, alegerea contului

Borderoul tine per factura ce mai are de completat si daca are articole de gestiune
(camp gest, coloana si filtru), coada contabilizeaza in serie facturile bifate si
incheie cu un rezumat, iar contul de furnizor/client se alege din planul de conturi.
Cheia normalizata de articol, rezolvarea automata a partenerului si anularea in bloc
intra tot aici. Pozitia in lista se pastreaza peste reaplicarea filtrului.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Aroafxp4z8bmM5oVECZRXY
This commit is contained in:
2026-09-09 21:35:07 +03:00
parent 8e022d332e
commit 940bb39701
48 changed files with 10602 additions and 519 deletions

View File

@@ -1,5 +1,14 @@
# Reguli de lucru agent (comune proiectelor ROA VFP)
0. **Contextul sesiunii principale: te opresti la maxim 250k si salvezi progresul.** Nu e
optional si nu se negociaza cu "mai termin o banda". La 250k opresti lucrul, scrii in fisierul
de progres starea exacta - ce e gata si testat, ce e scris dar neverificat, ce fisiere sunt
lasate intr-o stare intermediara (in special text `.vc2`/`.sc2` fara write-back in binar) si
care e primul lucru de facut - si predai unei sesiuni noi. Limita absoluta 275k.
Nu estima contextul, masoara-l (`monitorizare-context.md`); daca nu ai masuratoare, opreste-te
mai devreme, nu mai tarziu. Orchestrarea multor benzi paralele consuma context mai repede
decat pare: fiecare raport de agent, fiecare verificare si fiecare decizie se aduna.
1. Modificari de cod: diff ca FISIER `docs\diff_runda<N>_<subiect>.patch`
(`git diff --no-index <baseline.bak> <editat>`), nu in terminal. **COMMIT-ul** e singurul pas
care asteapta aprobarea patch-ului. Write-back-ul in binar (txt2vcx) si testele se fac IMEDIAT
@@ -43,6 +52,26 @@
propune COMPLETAREA unei functii/tabele/view comune, nu o varianta paralela. 80/20: solutia cea
mai simpla care rezolva cazul real. Completeaza `inventar-comun.md` la orice descoperire/creare
de element comun nedocumentat.
**Scara (ponytail), te opresti la prima treapta care tine** - se aplica si de subagenti, nu doar
de sesiunea principala: (1) trebuie sa existe? nevoie presupusa, nu ceruta = nu se scrie, se
spune intr-un rand; (2) exista deja in cod (`inventar-comun.md`, `COMUN\`, clasa/procedura din
acelasi modul)? refoloseste; (3) o face limbajul (VFP, SQL Oracle) sau o biblioteca deja
incarcata in `roacont.prg`? foloseste-o - dependinta noua, niciodata pentru ce tin cateva linii;
(4) intra intr-o linie? o linie; (5) abia apoi minimul care merge.
Scara scurteaza SOLUTIA, niciodata cititul: intai urmaresti fluxul real prin toate fisierele
atinse, apoi alegi treapta. Diff mic in locul gresit nu e economie, e a doua eroare.
La eroare: repari cauza in functia comuna prin care trec toti apelantii (`-Grep` pe apelanti
inainte de a edita), nu doar calea din raport - o garda intr-un loc e diff mai mic decat o garda
in fiecare apelant, si nu lasa fratii stricati.
Interzis din oficiu: clasa/interfata cu o singura utilizare, optiune de configurare pentru o
valoare care nu se schimba, schele "pentru mai tarziu", generalizare pentru un al doilea caz
care nu exista.
Nu se simplifica NICIODATA: validarea datelor venite din exterior (XML eFactura, import,
raspuns web), tratarea erorilor care pot pierde date, drepturile de utilizator, si ce s-a cerut
explicit.
Scurtatura deliberata cu plafon cunoscut (blocare globala, scanare O(n2), euristica naiva) se
marcheaza cu un singur comentariu `*!* ponytail: <plafonul> - <cum se creste daca deranjeaza>`;
e singura exceptie de la regula 2, care interzice justificarile in cod.
**Cod nou: clase in `.prg`, nu metode in `.vcx`/`.scx`.** Logica se incapsuleaza intr-o clasa
(`Define Class ... As Custom`) dintr-un `.prg`; formularul sau clasa vizuala doar instantiaza
obiectul (`Createobject`) si il apeleaza, metoda din binar ramanand un apel de o linie. Sablon: