Facturation¶
À quoi ça sert¶
L'écran Facturation (/dashboard/accounting/invoices) permet de créer des factures clients, de les envoyer, d'enregistrer les règlements reçus et de suivre leur statut jusqu'au paiement complet. Le backend gère également les avoirs et l'annulation, la génération du PDF et un système de relances (dunning) automatiques sur les factures en retard.
Prérequis¶
Prérequis
- Modules sous licence :
ACCOUNTING - Permissions :
accounting.read,accounting.write,accounting.invoicing.read - Rôles :
ACCOUNTANT,CFO,ORG_ADMIN
Comment ça marche¶
Créer et envoyer une facture¶
- Depuis Comptabilité → Facturation, cliquez sur Nouvelle facture.
- Renseignez le formulaire : nom du client, description, montant HT, taux de TVA (18 % par défaut) et date d'échéance.
- Cliquez sur Enregistrer — la facture est créée avec le statut Brouillon et un numéro de pièce généré automatiquement (préfixe
FAC, compteur annuel par tenant). - Tant qu'une facture est en Brouillon, elle reste modifiable. Dès qu'elle est envoyée, elle devient figée.
- Dans la liste des factures, cliquez sur Envoyer (icône enveloppe) sur une ligne en statut Brouillon.
- À l'envoi, le système génère et stocke automatiquement le PDF de la facture et publie l'événement comptable qui crédite le compte de vente correspondant (classe 7) et débite le compte clients (classe 4).
Encaisser un paiement¶
- Sur une facture au statut Envoyée, cliquez sur Enregistrer le paiement.
- Saisissez le montant réglé et la date de paiement.
- Le montant payé ne peut jamais dépasser le montant dû restant — le système refuse tout surpaiement.
- Si le règlement couvre exactement le solde, la facture passe au statut Payée ; sinon elle passe en Partiellement payée et reste disponible pour un règlement complémentaire.
Suivi du statut¶
Le statut d'une facture suit le cycle : Brouillon → Envoyée → (Partiellement payée) → Payée, avec une sortie possible vers Annulée.
| Statut | Signification |
|---|---|
DRAFT (Brouillon) |
Facture créée, modifiable, non comptabilisée |
SENT (Envoyée) |
Facture émise, écriture comptable de vente passée, PDF généré |
PARTIALLY_PAID (Partiellement payée) |
Un règlement partiel a été enregistré |
PAID (Payée) |
Le montant dû est nul |
CANCELLED (Annulée) |
Facture annulée — génère une contrepassation comptable |
Avoirs et annulation (fonctions serveur — non encore exposées dans l'écran de liste)¶
Le service de facturation gère deux opérations qui ne sont, à ce jour, disponibles que via l'API et pas encore via un bouton dans l'écran /dashboard/accounting/invoices :
- Avoir (credit note) : émis contre une facture Envoyée, Partiellement payée ou Payée, pour tout ou partie du montant. Il génère un nouveau document de type
CREDIT_NOTE(préfixeAVOIR), reprend les lignes de la facture d'origine au prorata et négative, et réduit le montant dû de la facture d'origine. Impossible d'annuler une facture qui a déjà un avoir associé. - Annulation : possible sur une facture Envoyée ou Partiellement payée (pas sur une facture Brouillon, déjà Payée ou déjà Annulée), et impossible si un avoir existe déjà dessus. Elle génère une écriture de contrepassation datée du jour de l'annulation (pas de la date d'émission d'origine, pour ne pas tomber sur une période déjà clôturée).
Qui peut faire quoi¶
| Permission requise | Rôles concernés |
|---|---|
accounting.read |
ACCOUNTANT, CFO, ORG_ADMIN |
accounting.write |
ACCOUNTANT, CFO, ORG_ADMIN |
accounting.invoicing.read |
ACCOUNTANT, CFO, ORG_ADMIN |
| Action | Permission requise |
|---|---|
| Consulter la liste et le détail des factures | accounting.read |
| Créer, modifier, envoyer, encaisser, annuler, créer un avoir | accounting.write |
| Télécharger le PDF d'une facture (endpoint dédié) | accounting.invoicing.read |
D'après la matrice V185 : ACCOUNTANT a accounting.invoicing.read (lecture facturation) mais pas accounting.write — en pratique, sur le tenant de démo, seul ADMIN dispose de accounting.write pour créer/modifier/envoyer des factures. CFO a uniquement accounting.invoicing.read (consultation).
Détails techniques¶
Détails techniques
- Entité
CustomerInvoice(app.jigi.accounting.invoicing.domain), tableaccounting.customer_invoices, lignes dansaccounting.customer_invoice_lines(CustomerInvoiceLine). - Règlements : entité
InvoicePayment, tableaccounting.invoice_payments— un paiement partiel ou total par ligne insérée. - Endpoints (
CustomerInvoiceController, base/accounting/invoices) :GET /accounting/invoices(liste, pagination, filtrestatus)GET /accounting/invoices/{id}POST /accounting/invoices/PUT /accounting/invoices/{id}(modification réservée aux facturesDRAFT)POST /accounting/invoices/{id}/sendPOST /accounting/invoices/{id}/record-paymentPOST /accounting/invoices/{id}/cancelPOST /accounting/invoices/credit-noteGET /accounting/invoices/{id}/pdf
- Numérotation :
ChartOfAccountService.nextPieceNumber(tenantId, "FAC" | "AVOIR"), compteur par tenant/année dansPieceNumberCounter. - Relances :
DunningConfig/DunningReminder(tableaccounting.dunning_config,accounting.dunning_reminders), configurables viaGET/PUT /accounting/dunning/config(accounting.read/accounting.manage) ; le déclenchement des rappels est planifié côté serveur (schedulerinvoicing/scheduler). - Service :
CustomerInvoiceService(app.jigi.accounting.invoicing.service) — publie des événements (CustomerInvoiceIssuedEvent,CustomerInvoicePaidEvent,CustomerInvoiceCreditedEvent,CustomerInvoiceCancelledEvent) consommés par le module Journal pour générer automatiquement les écritures comptables.
Cas d'erreur et FAQ¶
Puis-je modifier une facture déjà envoyée ? Non. Seules les factures au statut Brouillon sont modifiables. Pour corriger une facture envoyée, utilisez un avoir (via l'API pour l'instant) ou annulez-la si aucun paiement n'a encore été enregistré.
J'ai enregistré un paiement supérieur au montant dû, pourquoi est-il refusé ? Le système interdit tout surpaiement : le montant saisi ne peut pas dépasser le solde dû restant de la facture.
Comment récupérer le PDF d'une facture ?
Le PDF est généré automatiquement à l'envoi et stocké côté serveur (GET /accounting/invoices/{id}/pdf). Le téléchargement n'est pas encore relié à un bouton dans l'écran Facturation — contactez le support si vous avez besoin du fichier en attendant.
Une facture Payée peut-elle être annulée ? Non, l'annulation n'est possible que sur une facture Envoyée ou Partiellement payée. Pour une facture déjà Payée, émettez un avoir.
Qui peut créer une facture ?
Seuls les utilisateurs disposant de accounting.write (rôle ADMIN sur la matrice standard) peuvent créer, envoyer ou encaisser une facture. ACCOUNTANT et CFO peuvent uniquement la consulter.