Folderul docs\ era pana acum in afara oricarui control de versiuni - nici git, nici SVN - desi contine planurile pe puncte, proiectarile si rapoartele de cercetare pe care se sprijina modificarile din cod. O stergere acolo era definitiva. Fisierele intermediare (handoff-uri intre sesiuni, diff-uri deja aplicate) au fost sterse inainte, nu versionate: ce era durabil in ele a intrat in antetele fisierelor de test la care se refereau. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
6.1 KiB
Plan #10 — integrarea paginii de contracte in ROAFACTURARE
Sursa: COMUN\docs\todos.txt punctul 10.
Ordine de executie: ultimul. Marius si-a exprimat indoiala asupra utilitatii; planul incepe cu o
decizie go/no-go, nu cu implementarea.
Stare: propunere, neinceput.
Constatarea care pune sub semnul intrebarii lucrarea
Motorul de facturare pe baza de contract exista deja si e complet functional in ROAFACTURARE. Nu e o functionalitate lipsa, ci una care merge azi fara pagina de contracte:
facturare_contracte(tcTip)(COMUN\programe\oproceduri_facturare.prg:119-136) — primeste "FACTURA LEI" / "INVOICE" / "FACTURA VALUTA" si apeleazafactureaza(2)/(6)/(52).- Buton deja pe pagina de fundal:
Page2.Cw2.do_actiune(Clase\ofundal_facturare.vc2:886-897), meniu cu cele 3 optiuni. - Cautarea contractului facturabil:
caut_contract_facturare(tnIdPart, tcSirTipFacturare)(COMUN\programe\oproceduri_facturare.prg:1986-2021), din view-ul Oraclefact_vcontracte(:2001). - Alegerea contractului pe factura:
frm_date_factura.do_cauta_contract(COMUN\clase\ofacturare.vc2:9067-9115) sifrm_date_aviz.do_cauta_contract(:7049-7051). - Tab/grid dedicat pe editorul de articole:
grd_contracte,cb_contracte, cursorcrscontracte(COMUN\clase\ofacturare.vc2:15069-15107). - Exista si aviz "catre clienti din contract", tip 26 (
oproceduri_facturare.prg:207,:2045). - Ratele de contract se scriu la emitere:
finalizeaza_facturacheamascrie_rate_facturapentruntip in (2,6,52)(ff_2026_03_23_04_COMUN_PACK_FACTURARE.sql:14785-14786).
Ce lipseste efectiv, fata de cerinta:
- pagina de editare CRUD a contractelor in ROAFACTURARE (azi doar in exe-ul separat
D:\ROA\ROACONTRACTE, cuClase\ferestre_contracte.vcx); - rapoarte de contracte (glob
*contract*inROAFACTURARE\Rapoarte\nu intoarce niciun.frx— doar meniu si iconite); - comasarea drepturilor pe obiectele din ROACONTRACTE cu cele noi din ROAFACTURARE.
Observatie: ROAFACTURARE\Meniuri\contracte.mnx exista deja, dar e un popup de facturare
(lei / invoice / valuta), nu un meniu de administrare — deci numele e ocupat, continutul nu.
Intrebarea de decis inainte de orice cod
Cine editeaza azi contractele si cat de des? Daca persoana care factureaza nu e si cea care intocmeste contractele, integrarea CRUD in ROAFACTURARE nu scade nimic din efortul zilnic — motorul de facturare merge deja. In cazul asta lucrarea se reduce eventual la punctul 2 (rapoarte), care e mult mai ieftin.
Stories
S0 — Decizie go/no-go — DATE CULESE, 05.08.2026
Rulat read-only pe schema de productie VENDING:
| Masura | Valoare |
|---|---|
| contracte existente | 4 |
| contracte create in ultimele 12 luni | 0 |
| facturi emise vreodata pe baza de contract (tip 2, 6, 52) | 0 |
| facturi din contract in ultimele 12 luni | 0 |
Pentru context, din 140 656 de facturi: 116 071 pe lista de preturi, 5 608 din comanda, 11 din aviz.
La acest client contractele sunt practic nefolosite, iar mecanismul de facturare pe contract — care exista si e complet — nu a fost folosit niciodata. O pagina CRUD de contracte in ROAFACTURARE nu ar scadea niciun efort real aici.
Limitare importanta: e un singur client. Inainte de un no-go definitiv, aceleasi patru cifre trebuie luate de la 2-3 clienti care chiar lucreaza pe contracte. Daca si acolo ies zerouri, punctul #10 se inchide; daca nu, se reia de la S1 cu clientul respectiv ca referinta. Gata cand: cifrele exista de la inca 2-3 clienti si decizia e scrisa.
S1 — Inrolarea ROACONTRACTE in fluxul text
ROACONTRACTE nu are cache text generat, deci ferestre_contracte.vcx nu se poate citi in detaliu
si nu se poate edita pe text. Procedura: COMUN\docs\inrolare-proiect-git-text.md.
Depinde de: S0 = go.
S2 — Clasa container ct_contracte in COMUN
Dupa sablonul ct_comenzi (COMUN\clase\ocomenzi.vcx): container CRUD montabil, fisiere in
COMUN\clase\, deci schimbare cross-project.
Depinde de: S1.
S3 — Incarcare lazy
Aceeasi cerinta ca la #11: datele se incarca la prima activare a paginii, cautarea trimite WHERE in
Oracle. Sablonul e detaliat in plan_11_integrare_politici_preturi.md (S4) — se copiaza din
ocomenzi.vc2:1088-1104 / :1484-1510, nu se inventeaza un al doilea.
Atentie — capcana confirmata: ct_contracte din ROACONTRACTE
(Clase\ferestre_contracte.vc2:9) mosteneste acelasi _ct_base ca ct_comenzi, dar nu
suprascrie actualizeaza_cursoare/creeaza_cursoare (zero aparitii in fisier), deci foloseste
stub-ul gol si nu e lazy azi — cursorul principal cContracte apare deja populat la Init
(:1518-1527). Daca clasa se aduce ca atare, se aduce si incarcarea eager. Sablonul de copiat e
strict cel din ocomenzi.vc2.
Depinde de: S2.
S4 — Montare in fundal + entry point + drepturi
Obiect nou in Clase\ofundal_facturare.vc2 langa lb_comenzi; bloc *** CONTRACTE in
Programe\roafacturare.prg (SET CLASSLIB / SET PROCEDURE, dupa modelul :180-181 si
:239-242); adaugare in roafacturare.pjx.
Drepturi: nid_cw libere — Page2 are deja Cw1..Cw9 ocupate
(Clase\ofundal_facturare.vc2:882-926); catalogul server-side din spatele
contafin_oracle.vdef_util_obiecte trebuie inspectat direct in Oracle inainte de alocare.
Comasarea cu drepturile existente din ROACONTRACTE se face aici.
Depinde de: S2.
S5 — Rapoarte de contracte
Poate fi livrat independent de restul, daca S0 arata ca doar rapoartele sunt cerute. .frx se
editeaza doar in IDE-ul VFP.
Depinde de: S0.
S6 — Testare, diff, changelog
Test UI (COMUN\docs\testare-ui-vfp.md); verificare ca ROACONTRACTE stand-alone continua sa mearga.
Diff ca fisier in docs\, commit dupa aprobare, in doua repo-uri (ROAFACTURARE si COMUN).
Riscuri
- Cel mai mare risc e sa se construiasca ceva ce nu reduce niciun efort real — de aceea S0 e blocant.
- Comasarea drepturilor atinge un catalog Oracle nevizibil in sursa VFP; e partea cea mai putin estimabila.
COMUN\clase\inseamna impact pe toate produsele.- Duplicarea CRUD-ului de contracte in doua exe-uri care scriu aceleasi tabele cere validari identice in ambele.