Inrolare ROACONTRACTE conform COMUN\docs\inrolare-proiect-git-text.md: - .gitignore/.gitattributes dupa modelul ROACONT (COMUN/ exclus, are repo propriu) - 439 texte FoxBin2Prg generate in arbore (vc2/sc2/fr2/mn2/pj2/db2) - Clase\registry.vcx ramane binar: memo .vct corupt (Error 41), nu se poate converti - Clase\ferestre_contracte.vcx: text generat, roundtrip scutit (fara write-back) - CLAUDE.md, docs/README.md, roa_sync.bat Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
7.8 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this is
ROACONTRACTE is a Visual FoxPro 9 desktop application (Romanian-language) for contracte —
client/supplier contracts with rate (scadentar), facturare din contract, incasari, garantii si
alerte. Thick client: VFP source (.prg, .scx, .vcx, .mnx, .frx) compiled to
roacontracte.exe, on an Oracle backend reached through the shared goExecutor/goConn
pass-through objects (gcS = schema, primita in parametrul de lansare).
It is one product in the ROA suite built by ROA Romfast SRL; this directory
(D:\ROA\ROACONTRACTE) is one working copy inside the D:\ROA tree that holds the siblings
(ROACONT, ROAGEST, ROAIMOB, ROAFACTURARE, ...) plus the suite-wide shared library
D:\ROA\COMUNROA.
Cod, comentarii, meniuri si changelog sunt in romana — pastreaza limba la editari.
Version control
Primarily an SVN working copy (^/ROACONTRACTE/Trunk, repository root
http://svnroa:3001/svn/ROA) — svn status, svn diff, svn commit raman fluxul legacy.
COMUN\ e external SVN (^/COMUN/Trunk). A git mirror runs in parallel
(gitea.romfast.ro:romfast/roacontracte.git), synced from SVN; SVN stays the source of truth.
Git tracks the FoxBin2Prg text versions of the VFP binaries (.vc2/.sc2/.fr2/.mn2/.pj2/.db2),
generated in-tree next to each binary — not the binaries themselves. Refresh them with
git_sync.ps1 at the start of every session and before any git commit:
powershell -ExecutionPolicy Bypass -File D:\ROA\UTIL\foxbin2prg\git_sync.ps1 -ProjectRoot D:\ROA\ROACONTRACTE
Sau, mai simplu, roa_sync.bat din radacina proiectului: face svn update -> git_sync -> commit
sync SVN rN pe main (proiect + COMUN) -> push.
Then search the .??2 files in-tree with Grep, citing file:line. Write-back text->binary via
txt2vcx.ps1 is supported only for .vc2/.sc2; .frx/.mnx/.pjx/.dbf are editable only in
the VFP IDE. See D:\ROA\UTIL\foxbin2prg\CLAUDE.md and COMUN\docs\flux-editare-vfp-text.md.
COMUN/ is excluded from this repo's git — shared by every ROA product and versioned by its
own git repo, gitea.romfast.ro:romfast/comun.git. Run git commands for COMUN/ from inside
that directory, and treat any change there as cross-project (fara push --force).
Building / running
No CLI build. Compiled from the VFP 9 IDE: open roaContracte.pjx, then Project > Build.
Entry point is Programe/roacontracte.prg (PARAMETERS tparam — sir cu ; trimis de launcher-ul
ROA Start: host, user, parola, idutil, idprogram, ..., an, luna, schema, idfirma; altfel intra pe
valorile de dezvoltare din cod).
roacontracte.exe refuza sa porneasca daca numele fisierului nu incepe cu ROACONTRACTE.
Startup-ul e procedural (nu RoaApp): SET PATH peste folderele proprii + COMUN\* + ..\COMUNROA\,
zeci de SET CLASSLIB/PROCEDURE ... ADDITIVE (ordinea conteaza — inregistrarile ulterioare umbresc),
apoi goApp = CREATEOBJECT("wzApplication") (AppWizard, COMUN\clase\appwiz.vcx) cu
goApp.cStartupMenu = meniuri\roacontracte.mpr si goApp.cStartupForm = COMUN\ferestre\frm_login.scx.
Fisiere .prg/.vcx noi comune trebuie inregistrate acolo ca sa fie vizibile in aplicatie.
config.fpw da mediul de rulare; versiune_db.txt (YYYY_MM_DD_NN) e marcajul ultimei migrari DB.
Editeaza intotdeauna sursa, nu compilatul (.FXP/.SCT/.VCT/.MPR).
Directory layout
Programe/ logica de business proprie (oproceduri_roacontracte.prg, oproceduri_roaclienti.prg,
oparteneri_contracte.prg, oproceduri_registretva.prg, oproceduri_preluari.prg, pmenu.prg,
refverif.prg, verifica.prg) · Clase/ .vcx proprii (ferestre_contracte.vcx,
onom_clienti.vcx, roaclienti.vcx, ofundal*.vcx, outlook2003bar.vcx) · Ferestre/ formulare
(frm_dg_*.scx = paginile din datele generale ale contractului, fundal.scx, startfirma.scx) ·
Meniuri/ (roacontracte.mnx = meniul de start, rapIncasari.mnx) · Rapoarte/ .frx
(rcontracte, rcontracte_centralizator, rRate, rrate_facturi, rRate_facturi_extins,
rincasari, rap_facturat_incasat, rctrrestdefact, ratedefacturat, ralerte,
fisa_contractului) · Grafice/, datemenu/, Locale/, Teste/ · COMUN/ biblioteca partajata.
Ca la ROAGEST, o buna parte din logica efectiva vine din COMUN\programe\ si COMUN\clase\
rezolvate prin SET PATH (login, nomenclatoare, parteneri, eFactura ANAF, listari, oracle).
Domain quick reference
Obiecte Oracle uzuale (vezi Programe/oproceduri_roacontracte.prg): vcontracte,
vcontracte_toate, vtipuri_contracte, vctr_scadentar (ratele contractului),
vctr_rate_facturi (legatura rata-factura), vctr_articole, vctr_selectii,
ctr_facturi_garantii, vireg_parteneri/ireg_parteneri, vnom_valute, vnom_sectii,
vatas_referinte (atasamente), vcrm_politici_preturi, vcrm_note_vanzari.
TVA e sensibil la perioada documentului (19/9/5% inainte de 01.08.2025, 21/11% dupa) — foloseste cota din perioada documentului, nu "cota curenta".
Changelog convention
changelog_roacontracte.txt, blocuri de comentariu HTML, cea mai noua intrare prima:
<!--
DD/MM/YYYY
ROACONTRACTE - X.Y.Z
:modificare:
<ce s-a schimbat>
-->
Tag-uri: :nou:, :modificare:, :eroare:, :adaugare:. Se bumpeaza MAJOR.MINOR.PATCH
(seria curenta 2.3.x). Intrarile sunt scurte, orientate spre utilizator: o singura intrare
consolidata per livrare, fara pasi intermediari sau detalii interne.
Reguli de lucru si testare
Inainte de orice modificare de cod sau testare, citeste COMUN\docs\reguli_lucru.md.
Nu e optional si nu e doar context: contine regulile de livrare (diff ca fisier + aprobare
inainte de write-back), comentariile (max o linie), modificarile minime, harnessul de testare
headless si — la punctul 7 — lista de conventii obligatorii per zona atinsa (encoding cp1252 la
editarea .vc2/.sc2, UX formulare/griduri, GO pe Recno(), goExecutor + ALTER TABLE,
testare UI, export Oracle). Fisierul e index: urmeaza linkurile relevante pentru sarcina curenta.
Depanare detaliata: COMUN\docs\depanare_testare_vfp.md.
Foloseste PowerShell, nu Bash (bash.exe crapa pe aceste masini si lasa stackdump-uri).
Mod de lucru: delegare catre subagenti + review inainte de commit
- Orchestrare pe misiuni lungi: niciodata un singur subagent care acumuleaza context pe multe
sarcini inlantuite — sesiunea principala orchestreaza subagenti proaspeti per sarcina (max
~200-250k tokens per subagent, apoi handoff + agent nou), cu handoff compact pe disc:
COMUN\docs\orchestrare-subagenti.md. - Delegare: modificarile de volum/rutina (aplicarea unei propuneri aprobate din
docs/, editari pe versiunile text.??2+ write-back, actualizari de documentatie, rulari de teste) se delega catre subagenti Sonnet care lucreaza in background (Agent tool cumodel: sonnet), iar sesiunea principala doar orchestreaza si verifica rezultatele. - Fara commit fara review: nu da commit (git sau svn) din proprie initiativa pe modificari de
cod — diff-ul se livreaza intai ca fisier in
docs/, iar commit-ul vine dupa aprobare. - Curatenie inainte de commit:
powershell -File COMUN\utile\curatenie.ps1(-DryRundoar listeaza) sterge patch-urile de review, handoff-urile, backup-urile*.pre_runda*.baksi artefactele de test.
Stil de raspuns
Raspunsuri scurte si concrete: stare (facut / de decis / urmeaza), cu fisier si linie. Fara naratiune de proces, fara reluari. Detaliile lungi (dovezi, iesiri de test) se scriu in fisier si se trimite link-ul.
Project insights (docs/)
docs/ tine notite scurte si concrete descoperite in timpul lucrului (fluxuri ascunse, capcane,
proceduri/tabele cheie) — vezi docs/README.md. Ofera-te proactiv sa actualizezi docs/ cand
descoperi ceva neevident, ca sesiunile viitoare sa nu reinvestigheze.