# Module — Finances & trésorerie

> Journal des mouvements financiers de la boutique : **consignation** des recettes et dépenses,
> résumé par période, rapport de trésorerie. **Aucune intégration de passerelle de paiement** :
> le système enregistre les opérations, il ne les exécute pas.

## 0. État d'implémentation — B4 (2026-07-25) 🚧

| Livré ✅ | Cible non encore faite ⬜ |
|---|---|
| Entité **`Expense`** (append-only, `DEP-AAAA-000000`, catégorie/label/montant/moyen/date/note) | budgets, catégories gérées, pièces jointes |
| **Recettes** = encaissements (`Payment`) des ventes **et** recouvrements de crédit, par moyen (`PaymentRepository::treasuryTotalsByMethod`, hors ventes annulées/remboursées) | rattachement du cash de recouvrement à une session de caisse |
| `FinanceController` : `GET /api/v1/finance/summary?period=today\|7d\|all` (recettes/moyen, dépenses/catégorie, **solde net**), `GET /report/pdf` (dompdf + `templates/pdf/treasury.html.twig`), `GET/POST/DELETE /finance/expenses` | export CSV, ventilation temporelle (graphes) |
| Gating : lecture `COMPANY_VIEW`, saisie des dépenses `COMPANY_EDIT` | permission fine `finance.*` (mapping RBAC) |
| PWA : écran **Finances** (`features/finance/`) — KPIs recettes/dépenses/net par période, ventilation par moyen, dépenses (liste/ajout/suppression), rapport PDF | rapprochement, prévisionnel |
| Test `tests/Functional/Api/FinanceApiTest.php` (résumé, dépenses, PDF) | tests exports |

**Modèle** : le `Payment` est le journal unifié des encaissements (une vente directe crée un
`Payment` du montant reçu ; un recouvrement de crédit ajoute des `Payment` aux ventes soldées) →
les recettes de trésorerie = somme des `Payment` sur la période. Les **dépenses** sont des sorties
hors achats (les paiements fournisseurs viendront du module Fournisseurs/B2). Solde net = recettes −
dépenses. Voir [pos-ventes](pos-ventes.md), [clients-crm](clients-crm.md), [caisse-paiements](caisse-paiements.md).

Fichiers : `src/Entity/Expense.php`, `src/Repository/{ExpenseRepository,PaymentRepository}.php`,
`src/Controller/Api/V1/FinanceController.php`, `templates/pdf/treasury.html.twig` ;
PWA `yima-shop/src/app/features/finance/`, `core/services/finance.service.ts`.
