# 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_.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_.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_.md` (ignorat de git) | | `sablon/init_facturi_balanta_note.xlsx` | sablonul ROA (rand 1 = coloane) | | `genereaza_xlsx.py` | CSV -> `init___.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.