Cititorul FDB: sume totale ca SAGA, analitice pastrate, baza oprita acceptata

Proba pe LACERTA (06/2026, firma reala) a gasit doua defecte in citire_fdb:
- precedentul netea si rulajele din an, deci conturile de cheltuieli/venituri
  pierdeau rulajul (CPP gresit). Acum: preluare netata + rulaj an brut;
  potriveste 44/44 sintetice din importul facut din exportul SAGA (inainte 19/44).
- analiticele se rulau in sintetic, deci facturile per document nu se foloseau
  si analiticele nepartener disparea. Acum balanta are toate nivelurile.

Baza primita se copiaza in temporar si copia se repune online (clientul o
trimite si in full shutdown). tests/test_lacerta.py: 48/53 frunze identice cu
REF, restul explicate; se sare fara fisierele clientului, care sunt ignorate
de git. README nou; analiza in docs/analiza_lacerta_fdb.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYeAtVxeS8m4oXekjX8Am2
This commit is contained in:
2026-09-25 16:14:14 +03:00
parent 3499a0946c
commit 99d9cf0aff
8 changed files with 453 additions and 44 deletions

80
README.md Normal file
View File

@@ -0,0 +1,80 @@
# solduri2roa
Transforma soldurile unei firme din SAGA in xlsx-ul de initializare pentru ROACONT.
## Pe scurt
```
py extrage.py --fisier <sursa> --firma FIRMA --an 2026 --luna 6
py genereaza.py --firma FIRMA --an 2026 --luna 6
```
Rezultatul este `iesiri/init_FIRMA_2026_6.xlsx`, care se importa in ROACONT.
`--an`/`--luna` = luna ale carei solduri finale se preiau.
## Surse acceptate
| sursa | fisier | ce se obtine |
|---|---|---|
| SAGA noua (Firebird) | `CONT_BAZA.FDB` (o **copie**, nu baza vie) | balanta + parteneri cu CUI + facturi per document |
| export SAGA | `.xls` / `.xlsx` | doar balanta |
| balanta tiparita | `.pdf` | doar balanta |
Tipul se deduce din extensie. **FDB-ul e sursa recomandata.** Clientul face copia dupa
`docs/procedura_copie_fdb_client.md`. Poate fi si oprita (`shutdown`): unealta
lucreaza pe o copie a ei si nu atinge fisierul primit. Backupul `.fbk` nu e acceptat
inca.
## Pasii
1. **Extrage** - `extrage.py` scrie in `date/`: `balanta_FIRMA.csv` (+ `parteneri_`,
`facturi_` din FDB).
2. **Genereaza** - `genereaza.py` scrie in `iesiri/`:
- `init_FIRMA_<an>_<luna>.xlsx` - fisierul de import;
- `verificare_FIRMA.md` - verificarile; toate trebuie sa fie `OK`.
Si in `date/`:
- `mapare_FIRMA.xlsx` - ce cont ROA primeste fiecare cont SAGA (doar de citit);
- `corectii_FIRMA.xlsx` - creat gol la prima rulare; **aici corectezi tu**.
3. **Corecteaza** daca genereaza se opreste (`Stop: ...`) sau maparea nu e buna.
Completezi `corectii_FIRMA.xlsx` si rulezi din nou pasul 2.
4. **Importa** xlsx-ul in ROACONT (formularul de initializare solduri).
5. **Coduri fiscale** - partenerii fara CUI intra cu un cod provizoriu (`401.00027`).
Le cauti pe ANAF si le corectezi dupa import (`sql/update_cod_fiscal_<SCHEMA>.sql`).
Din FDB raman doar partenerii fara CUI in SAGA; din PDF/xls, toti.
## Corectii (`corectii_FIRMA.xlsx`)
Coloane: `cont_saga`, `cont`, `acont`, `exclus`, `motiv`. `cont` are maxim 4 caractere,
`acont` la fel.
| `cont_saga` | se aplica la |
|---|---|
| `419.NETOPIA` | exact acel cont |
| `4428.TOATE` | toate analiticele lui 4428 |
| `4428.RESTUL` | analiticele lui 4428 fara corectie exacta |
Exemple: `419.NETOPIA -> 419 / 2`, `4428.TOATE -> 4428 / (gol)` = strange tot pe sintetic.
Cand un analitic nu incape in 4 caractere, genereaza se opreste si iti cere corectia.
## Reguli de stiut
- Conturile cu parteneri sunt in `config/conturi_parteneri.csv` (autoritatea).
Primesc un rand `BALANTA` pe sintetic si randuri `FACTURA` per partener sau document.
- In xlsx intra doar frunzele (ultimul nivel de analitic).
- Diferenta dintre sintetic si suma analiticelor (note puse direct pe sintetic) iese
pe un analitic de diferenta (`9999`, `99`) sau, la parteneri, pe `NEREPARTIZAT` in ROA.
- Nu ajusta cifre ca sa treaca o verificare. Raporteaza.
## Teste
```
py -m unittest discover -s tests
```
Testele pe date de client (LACERTA) se sar daca fisierele din `exemple/` lipsesc.
Aceste fisiere nu sunt in git.
## Mai mult
`docs/decizii_import.md` (regulile de mapare), `docs/analiza_lacerta_fdb.md` (proba pe
client real), `CLAUDE.md` (verificarile obligatorii).