solduri2roa: balante SAGA PDF -> xlsx initializare ROACONT

Extragere pe coordonate (pdfplumber), generarea celor doua xlsx pentru
FUNDATIA si MASTER 12/2025, regulile de mapare si rapoartele de verificare.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BdA5a3ECKFD6Citf1ptPZu
This commit is contained in:
2026-09-21 00:02:30 +03:00
commit 92dc8c7b32
22 changed files with 1876 additions and 0 deletions

33
CLAUDE.md Normal file
View File

@@ -0,0 +1,33 @@
# solduri2roa
Convertor balante SAGA (PDF) -> xlsx de initializare solduri ROACONT.
## Mediu
- `py` (Python 3.13). Instalate: pdfplumber, openpyxl. Fara alte dependinte.
- Nu folosi `sed -i` (corupe fisierele). Scrie cu heredoc sau Python.
- `D:\ROA\ROACONT` = read-only. Nu comite (git/svn) fara aprobare.
## Fisiere
| | |
|---|---|
| `extract_balanta.py` | PDF -> `balanta_<FIRMA>.csv` (pdfplumber pe coordonate) |
| `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.