Files
flora2roa/CLAUDE.md

5.1 KiB

CLAUDE.md

Ghid pentru agenti (Claude Code / Jcode) care lucreaza in acest repo.

Ce este

FLORA2ROA e o aplicatie Visual FoxPro 9 care importa facturile si vanzarile din Fidelio (hotel, XML) si BIZ (restaurant, XML) si genereaza note contabile in ROA (Oracle). Un singur formular, frm_import.scx, face tot fluxul: citeste XML-urile din interval, completeaza nomenclatorul de parteneri, construieste notele si le scrie in ROA.

Radacina: D:\PROIECTE\FLORA\FLORA2ROA. Nu are folder COMUN\ (doar comun.h local), deci scripturile partajate ROA au echivalente locale in Teste\.

Reguli de lucru: OBLIGATORIU inainte de orice modificare

Citeste D:\ROA\ROACONT\COMUN\docs\reguli_lucru.md. Nu e context optional, e contractul de livrare. Ce se incalca cel mai usor daca nu-l citesti:

  • Nu se comite fara aprobare. Livrezi diff ca FISIER (docs\diff_runda<N>_<subiect>.patch), iar write-back-ul in binar si commit-ul se fac dupa ce utilizatorul aproba. Patch-urile de review nu se comit niciodata (sunt in .gitignore).
  • Comentarii minime, fara jurnal. O linie, descriind comportamentul CURENT. Interzis inline: istoricul modificarii ("inlocuieste...", "nu mai depinde de..."), nume de agent, referinte la runde/decizii. Istoricul sta doar in antetul fisierului, cumulativ, semnat de om.
  • Modificari minime: doar ce s-a cerut, fara refactorizari din oficiu.
  • Punctul 7 din acel fisier e un index de conventii per zona atinsa (encoding cp1252, UX formulare, GO pe Recno(), goExecutor + ALTER TABLE, testare UI, export Oracle).

Documentatia proprie a proiectului

  • docs\depanare_testare_flora2roa.md - harnessul de testare headless, ce contine Teste\, comenzile uzuale si capcanele confirmate aici. De citit inainte de a rula sau scrie teste.
  • docs\flux_git_flora2roa.md - fluxul git + SVN, ce urmareste fiecare, roa_sync.bat.

Versionare

SVN e sursa de adevar, inclusiv pentru binarele VFP. git urmareste versiunile TEXT (.sc2, .pj2) generate de FoxBin2Prg in arbore, plus .prg, Teste\, docs\. Binarele sunt git-ignored, ca diff-urile sa fie lizibile. La inceput de sesiune: roa_sync.bat.

svn commit (care atinge binarele) se face doar cu acordul explicit al utilizatorului.

Editarea formularului

frm_import.scx se editeaza pe text, byte-safe in Windows-1252:

powershell -ExecutionPolicy Bypass -File Teste\text_din_bin.ps1       # binar -> frm_import.sc2
# editezi frm_import.sc2 cu [IO.File]::ReadAllText/WriteAllText + GetEncoding(1252)
powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile frm_import.sc2
powershell -ExecutionPolicy Bypass -File Teste\recompileaza_binare.ps1

Ultimul pas nu e optional: write-back-ul reface .scx/.sct fara cod obiect, deci formularul ruleaza fara #INCLUDE "comun.h" si constantele (CT_SUCCES) crapa in RUNTIME, desi verificarea de sintaxa trece.

Testare

Nu exista IDE in flux. Totul headless, din PowerShell:

powershell -ExecutionPolicy Bypass -File Teste\ruleaza_teste.ps1        # suita + sinteza
powershell -ExecutionPolicy Bypass -File Teste\verifica_sintaxa.ps1     # dupa orice editare .prg

Un .fxp vechi ascunde modificarile din .prg: daca un test da acelasi rezultat dupa o corectie evidenta, sterge .fxp-ul si reia.

Cod

  • Punct de intrare main.prg; myutils.prg = biblioteca de functii utilitare; capp/app/myapp.prg = obiectele globale (goApp, goConn, goExecutor, goLog).
  • Constantele din comun.h (CT_SUCCES = 1, CT_INSUCCES) sunt conventia de retur.
  • Cod si mesaje in romana, fara diacritice (fisierele sunt cp1252).
  • Functiile utilitare partajate se copiaza din D:\ROA\ROACONT\COMUN\programe\oproceduri_comune.prg, nu se rescriu.

Reguli de domeniu (contabil) de stiut

  • In ROA, RO12345678 (platitor de TVA) si 12345678 sunt doi parteneri diferiti: prefixul RO se pastreaza exact cum vine din import si nu se adauga niciodata automat.
  • La D394/D406 o persoana fizica poate fi raportata fara CNP, deci un CNP invalid se goleste. O persoana juridica trebuie sa aiba cod fiscal: codul ei nu se sterge niciodata, ca eroarea sa fie semnalata la validarea declaratiei si corectata la sursa, in Fidelio.
  • Algoritmul romanesc de validare (CNP/CUI) nu se aplica partenerilor straini; codurile lor pot fi si numai din cifre, de orice lungime.

Changelog

changelog_flora2roa.txt, blocuri de comentariu HTML, cel mai nou primul:

<!--
DD/MM/YYYY
FLORA2ROA - X.Y.Z

:modificare:
  Ce vede utilizatorul.
-->

Taguri: :nou:, :modificare:, :eroare:. Text pentru utilizator, scurt, netehnic, o fraza per idee. Erorile introduse si reparate in aceeasi versiune nelivrata nu se trec: :eroare: e doar pentru ce a fost in productie. La bump de versiune se actualizeaza si flora2roa.txt (fisierul pe care update.bat il compara cu cel de pe server).

Stil de raspuns

Scurt si concret. Ce e gata (fisier:linie), ce urmeaza, ce trebuie decis. Fara naratiunea drumului pana la rezultat, fara reluari, fara justificari necerute. Detaliile lungi (dovezi, iesiri de test) se scriu in fisier si se trimite link.