# solduri2roa Transforma soldurile unei firme din SAGA in xlsx-ul de initializare pentru ROACONT. ## Pe scurt ``` py extrage.py --fisier --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) sau backup `.fbk` | 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. Un `.fbk` se restaureaza automat in temporar. ## Pasii 1. **Extrage** - `extrage.py` scrie in `date/`: `balanta_FIRMA.csv` (+ `parteneri_`, `facturi_` din FDB). 2. **Genereaza** - `genereaza.py` scrie in `iesiri/`: - `init_FIRMA__.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_.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. `exclus` = da scoate contul din import, cu tot cu analiticele lui. | `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 / 01` = strange toate analiticele pe unul singur (lasa `acont` gol doar daca sinteticul nu are si postari directe). Cand un analitic nu incape in 4 caractere, genereaza se opreste si iti cere corectia. Cont cu parteneri care are si analitice functionale (ex. `461.SGR`): pastrezi analiticul cu `461.SGR -> 461 / SGR` si pui partenerii pe alt acont cu `461.RESTUL -> 461 / 1`. Iese cate un rand BALANTA pe fiecare acont, cu facturile lui. ## 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). - Data soldurilor este ultima zi a lunii (`30.06.2026` pentru `--luna 6`). - 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. Din FDB intra cu debitul si creditul brute (rulaj ca in SAGA); din PDF/xls, pe net. - Conturile fara sold si fara rulaj nu intra in xlsx. - 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).