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>
This commit is contained in:
96
.claude/rules/financial-indicators.md
Normal file
96
.claude/rules/financial-indicators.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user