Files
roa2web-service-auto/.claude/rules/financial-indicators.md
Claude Agent 1b9ebf1d8f feat(dashboard): Complete dashboard desktop cleanup and improvements
User Stories Completed:
- US-001: Eliminare SolduriCompactCard de pe Desktop
- US-002: Eliminare Icoane din Header-ul CollapsibleCard
- US-003: Reorganizare TreasuryDualCard - Text Înainte de Grafice
- US-004: Reorganizare ClientiBalanceCard - Text Înainte de Grafice
- US-005: Reorganizare FurnizoriBalanceCard - Text Înainte de Grafice
- US-006: Grafice Colapsabile în TreasuryDualCard
- US-007: Grafice Colapsabile în ClientiBalanceCard
- US-008: Grafice Colapsabile în FurnizoriBalanceCard
- US-009: Grafice Colapsabile în CashFlowMetricCard

Additional Improvements:
- Add cache metadata display (CacheFooter component) for all dashboard cards
- Add @cached decorators to get_monthly_flows and get_indicators_with_sparklines
- Fix financial indicators calculations and sparkline sync
- Add state reset on company change to prevent stale data
- New shared components: CacheFooter.vue, authRedirect.js
- Enhanced FinancialIndicatorsCard with sparklines and period selection

Squashed from branch: ralph/dashboard-desktop-cleanup (11 commits)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 07:27:27 +00:00

97 lines
3.1 KiB
Markdown

# Claude Rules: Financial Indicators
<!-- paths: backend/modules/reports/services/financial_indicators_service.py, backend/modules/reports/services/dashboard_service.py, backend/modules/reports/models/financial_indicators.py -->
## 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