# Claude Rules: Financial Indicators ## Surse de Date - OBLIGATORIU ### Preferință: VBAL (Balanța de Verificare) **ÎNTOTDEAUNA** folosește tabelul `VBAL` pentru calculul indicatorilor financiari, NU `vbalanta_parteneri`. | Indicator | Tabel | Conturi | Coloane | |-----------|-------|---------|---------| | Vânzări/Cifra Afaceri | VBAL | 70x | TOTCRED - TOTDEB(709) | | Cheltuieli | VBAL | 6x | TOTDEB - TOTCRED(609) | | Încasări clienți | VBAL | 4111, 461 | RULCRED (lunar), TOTCRED (YTD) | | Plăți furnizori | VBAL | 401, 404, 462 | RULDEB (lunar), TOTDEB (YTD) | | Solduri bilanțiere | VBAL | diverse | SOLDDEB, SOLDCRED | ### Excepție: ACT (Registru Jurnal) Pentru **Achiziții YTD** se folosește tabelul `ACT` deoarece captează și achizițiile directe pe cheltuieli (6x = 4x): ```sql -- Achiziții totale (stocuri + cheltuieli directe) SELECT SUM(CASE WHEN (SCD LIKE '3%' OR SCD LIKE '6%') AND (SCC LIKE '4%' OR SCC LIKE '46%') THEN SUMA ELSE 0 END) FROM ACT WHERE STERS = 0 ``` ## Structura VBAL ```sql SELECT cont, -- Cont contabil (ex: '4111', '701') solddeb1, -- Sold debitor la 1 ianuarie soldcred1, -- Sold creditor la 1 ianuarie ruldeb, -- Rulaj DEBIT luna curentă rulcred, -- Rulaj CREDIT luna curentă totdeb, -- Total DEBIT YTD (de la 1 ianuarie) totcred, -- Total CREDIT YTD (de la 1 ianuarie) solddeb, -- Sold final debitor soldcred -- Sold final creditor FROM {schema}.VBAL WHERE AN = :an AND LUNA = :luna ``` ### Când să folosești fiecare coloană: | Nevoie | Coloană | Exemplu | |--------|---------|---------| | Valoare lunară | `RULDEB`, `RULCRED` | Încasări luna curentă | | Valoare YTD | `TOTDEB`, `TOTCRED` | Cifra de Afaceri YTD | | Sold curent | `SOLDDEB`, `SOLDCRED` | Sold clienți | | Sold început an | `SOLDDEB1`, `SOLDCRED1` | Active la 1 ianuarie | ## TVA în Indicatori ### Cu TVA (fluxuri de numerar reale): - ✅ Cash Flow (încasări/plăți) - ✅ Solduri clienți/furnizori - ✅ DSO, DPO (zile încasare/plată) ### Fără TVA (indicatori economici): - ✅ Cifra de Afaceri (Clasa 7) - ✅ Cheltuieli (Clasa 6) - ✅ Profit Brut - ✅ Achiziții (din ACT) ## Pattern-uri de Cod ### Query VBAL cu agregare pe conturi: ```python query = f""" SELECT NVL(SUM(CASE WHEN CONT LIKE '70%' THEN TOTCRED ELSE 0 END), 0) - NVL(SUM(CASE WHEN CONT = '709' THEN TOTDEB ELSE 0 END), 0) as cifra_afaceri FROM {schema}.VBAL WHERE AN = :an AND LUNA = :luna """ ``` ### Cache decorator: ```python @staticmethod @cached(cache_type='fin_indicator_name', key_params=['company_id', 'luna', 'an']) async def get_indicator(...): ... ``` ## NU folosi - ❌ `vbalanta_parteneri` pentru calcule agregate (doar pentru rapoarte pe parteneri) - ❌ `SOLDDEB`/`SOLDCRED` pentru Clasa 6/7 (conturile se închid lunar, sold=0) - ❌ Hardcodare valori TVA (19%, 9%) în formule