Files
solduri2roa/CLAUDE.md
Marius Mutu 9a83e367d8 Muta datele din radacina in date/, iesiri/ si sablon/
date/    - intrari de la client (PDF-urile, exportul SAGA) si balanta intermediara
iesiri/  - xlsx-urile generate si verificare_<FIRMA>.md (ignorat de git)
sablon/  - sablonul ROA

Punctele de intrare scriu acolo implicit: extrage.py --dir=date, genereaza.py
citeste din date/ si scrie in iesiri/ (--dir-iesire), ca radacina sa nu se
murdareasca la fiecare rulare. Sablonul e cautat langa script, in sablon/.

Actualizate: TEMPLATE, cele trei teste care tin caile, .gitignore, CLAUDE.md si
handoff-ul. Poarta capat-la-capat incepuse sa sara tacut dupa mutarea PDF-urilor
(skipTest pe "lipsesc PDF-urile"); acum arata din nou catre date/ si ruleaza.
33 de teste trec, zero skip-uri.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYeAtVxeS8m4oXekjX8Am2
2026-09-21 16:42:25 +03:00

2.7 KiB

solduri2roa

Convertor balante SAGA (PDF) -> xlsx de initializare solduri ROACONT.

Mediu

  • py (Python 3.13). Instalate: pdfplumber, openpyxl, xlrd (.xls BIFF), firebird-driver (Firebird embedded). Fara alte dependinte; testele folosesc unittest din stdlib.
  • Nu folosi sed -i (corupe fisierele). Scrie cu heredoc sau Python.
  • D:\ROA\ROACONT = read-only. Nu comite (git/svn) fara aprobare.

Fisiere

extrage.py punctul de intrare: sursa (pdf/xlsx/fdb) -> contractul intern
genereaza.py punctul de intrare: contractul intern -> xlsx de import
extract_balanta.py PDF -> balanta_<FIRMA>.csv (pdfplumber pe coordonate)
citire_xlsx.py foaie SAGA .xls/.xlsx -> acelasi contract
citire_fdb.py CONT_BAZA.FDB -> balanta + parteneri + facturi (verificat doar pe sintetic)
mapare.py propunere automata + corectii_<FIRMA>.xlsx, .TOATE/.RESTUL
config/conturi_parteneri.csv conturile cu parteneri - autoritatea, nu CONFIG_CONT_IREG
date/ intrari de la client (PDF, export SAGA) + balanta intermediara
iesiri/ xlsx-urile generate + verificare_<FIRMA>.md (ignorat de git)
sablon/init_facturi_balanta_note.xlsx sablonul ROA (rand 1 = coloane)
genereaza_xlsx.py CSV -> init_<FIRMA>_<an>_<luna>.xlsx
init_facturi_balanta_note.xlsx sablonul ROA (rand 1 = coloane, 2-13 instructiuni, 20+ exemple)
docs/decizii_import.md regulile de mapare - citeste intai
docs/conturi_cu_analitice.md per cont: ANALITIC sau PARTENER (confirmat de Marius)
docs/config_cont_ireg.md CONFIG_CONT_IREG din Oracle local; CONT e VARCHAR2(4)
docs/raport_form_init_balanta.md semantica formularului de import ROACONT
docs/plan_solduri2roa.md etapele

Reguli care se uita usor

  • pdftotext decaleaza coloanele. Doar pdfplumber, grupare pe top, coloane dupa x1.
  • totdeb/totcred = sume totale, nu solduri (bilantul/CPP se bazeaza pe ele).
  • In xlsx intra doar frunzele; importul reface sinteticul din suma analiticelor.
  • Conturile cu parteneri nu primesc analitice: rand BALANTA pe sintetic + cate un FACTURA per partener.
  • cont <= 4 car., acont <= 4 car. Analitic SAGA lung -> cifre concatenate (1171.01.12 -> 0112).
  • SAGA neteaza D/C la sintetice: diferentele se calculeaza pe net. Net != 0 -> analitic/partener de diferenta.
  • Nu ajusta cifre ca sa treaca o verificare. Raporteaza.

Verificari obligatorii inainte de a declara gata

SUM(totdeb)=SUM(totcred); total = randul "Totaluri:" din PDF; fiecare frunza din CSV apare exact o data; per cont cu parteneri SUM(sold FACTURA) = netul sinteticului; fara (cont,acont) duplicat.