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

63
docs/verificare_MASTER.md Normal file
View File

@@ -0,0 +1,63 @@
# Verificare `init_MASTER_2025_12.xlsx`
Generat de `genereaza_xlsx.py` din `balanta_MASTERJOB.csv`. Randuri de date: 79 (46 BALANTA, 33 FACTURA).
## 1. Balanta generala (SUM totdeb = SUM totcred)
- SUM(totdeb) = 2318592.91
- SUM(totcred) = 2318592.91
- diferenta (totdeb - totcred) = 0.0 -> OK
- Totaluri balanta: total_d=2318572.11 total_c=2318572.11 net=0.0
- NET xlsx (0.0) vs NET Totaluri (0.0) -> OK
- Nota: SUM(totdeb)=2318592.91 difera de Totaluri.total_d=2318572.11 cu 20.8; suma pe laturi a PDF-ului nu se poate reconstrui din frunze acolo unde SAGA a netat sinteticul (gross-ul parintelui e netat). Netul se pastreaza exact.
## 2. Conturi frunza din CSV, reprezentate o singura data
- frunze in CSV: 67
- reprezentate in xlsx: 67
- conturi pierdute: [] (gol) -> OK
- frunze cu mai putin/mai mult de un rand dedicat: [] (gol) -> OK
## 3. Conturi partener: FACTURA + NEREPARTIZAT = net sintetic
Formularul scade din randul BALANTA suma randurilor FACTURA de pe acelasi `(cont, acont, latura)` si lasa restul pe partenerul `NEREPARTIZAT`. Deci: `net sintetic - SUM(sold FACTURA cu semn) = analitice sarite + postare directa pe sintetic`.
| cont | SUM(sold FACTURA) | net sintetic | analitice sarite | postare directa | NEREPARTIZAT asteptat | diferenta | rezultat |
|---|---|---|---|---|---|---|---|
| 401 | -547108.99 | -547108.99 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
| 4092 | 4.0 | 4.0 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
| 4111 | 12000.0 | 12000.0 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
| 4551 | -751724.61 | -751724.61 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
| 461 | 69289.0 | 69289.0 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
| 462 | -9810.0 | -9810.0 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
| 5121 | 15599.25 | 15730.61 | -20.8 | 152.16 | 131.36 | 131.36 | OK |
| 5124 | 1060090.96 | 1060090.96 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
| 5311 | 98460.87 | 98460.87 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
Rezultat: OK
## 4. Analitice sarite (sold pe latura opusa formularului)
Latura FACTURA e fixa in cod (`:379`): `401,404,462,419,408,4551` -> CREDIT, orice alt cont -> DEBIT. Un analitic cu sold pe latura opusa nu primeste rand FACTURA; ramane in BALANTA si formularul ii pune `NEREPARTIZAT`.
| cont | analitic | sold (semnat) | motiv |
|---|---|---|---|
| 5121 | 5121.01 | -20.8 | sold creditor vs latura D a formularului |
## 5. Lungimi si dubluri
- cont > 4 sau acont > 4: [] (gol) -> OK
- perechi (cont, acont) duplicate la BALANTA: [] (gol) -> OK
## 6. Randuri de diferenta generate (pct. 13-15)
- 117: diferenta neta 2635.87 -> BALANTA (analitic de diferenta)
- 5121: diferenta neta 152.16 -> BALANTA (analitic de diferenta, fara FACTURA)
Nota: randurile FACTURA de tip `DIFERENTA SINTETIC` au fost eliminate; diferenta nu se mai inventa, o rezolva formularul prin `NEREPARTIZAT`.
## Verdict
TOATE verificarile au trecut.
Nota: coloana `explicatia` (D/C la FACTURA) a fost folosita doar ca control intern si este goala in xlsx-ul final (capul de tabel o pastreaza).