Configuration
Variables d'environnement du module de facturation, permissions et entrée d'admin.
Toute la configuration passe par des variables d'environnement, lues une fois au démarrage et mises en cache. Changer une valeur demande un redéploiement.
Activation
| Variable | Défaut | Rôle |
|---|---|---|
LRVO_MODULE_BILLING | false | Active le module. Sans elle, rien n'est enregistré. |
LRVO_MODULE_BILLING_CRON | true | Enregistre les trois tâches planifiées. |
Les tâches ne sont jamais enregistrées pendant next build, quelle que soit la valeur de LRVO_MODULE_BILLING_CRON.
Émetteur
Ces valeurs remplissent le bloc émetteur de la facture et du reçu. Elles n'habillent pas les courriels : leur expéditeur, leur logo et leur pied viennent de la configuration du site, LRVO_EMAIL_* et LRVO_NAME. Voir Courriels.
| Variable | Défaut |
|---|---|
LRVO_MODULE_BILLING_COMPANY_NAME | LRVO_NAME |
LRVO_MODULE_BILLING_COMPANY_ADDRESS | vide |
LRVO_MODULE_BILLING_COMPANY_CITY | vide |
LRVO_MODULE_BILLING_COMPANY_PROVINCE | Québec |
LRVO_MODULE_BILLING_COMPANY_POSTAL_CODE | vide |
LRVO_MODULE_BILLING_COMPANY_COUNTRY | Canada |
LRVO_MODULE_BILLING_COMPANY_PHONE | vide |
LRVO_MODULE_BILLING_COMPANY_EMAIL | vide |
LRVO_MODULE_BILLING_COMPANY_LOGO_URL | LRVO_LOGO_URL |
LRVO_MODULE_BILLING_COMPANY_LOGO_URL_DARK | ..._LOGO_URL |
LRVO_MODULE_BILLING_COMPANY_SITE_URL | LRVO_SITE_URL |
Le logo est au format PNG ou JPG, les seuls que le moteur PDF sait lire. Deux écritures sont acceptées : un chemin servi par le site, /assets/logo.png, que le rendu PDF va chercher dans le dossier public/, ou une URL absolue, que le moteur télécharge au moment du rendu et qui doit donc être accessible sans authentification.
..._LOGO_URL sert aux documents PDF et à la page publique en thème clair. ..._LOGO_URL_DARK n'est utilisé que par la page publique en thème sombre, où un logo noir disparaîtrait ; sans lui, le logo clair est affiché dans les deux thèmes. Les PDF n'en tiennent pas compte : le papier est toujours blanc. Leurs couleurs, texte, filets, états payé et en retard, sont les valeurs claires du thème du projet. Le logo des courriels est celui du site, LRVO_EMAIL_LOGO.
..._SITE_URL rend le logo de la page publique cliquable. Laissée vide, la cible du site sert, et sans elle non plus l'image reste une image.
Le nom, le logo et la cible du lien retombent sur la marque du site quand la variable du module est vide : une entreprise qui facture sous le nom de son propre site la déclare une fois, avec LRVO_NAME, LRVO_LOGO_URL et LRVO_SITE_URL. Voir Variables d'environnement.
..._COMPANY_EMAIL a un second rôle, en plus de figurer sur les documents : c'est l'adresse de réponse de tous les courriels du module, et celle que la facture, l'avis de retard et l'avis de remboursement invitent à écrire. Un client qui a une question sur sa facture écrit donc à la comptabilité, et non à l'adresse d'envoi du site.
Taxes
| Variable | Défaut | Rôle |
|---|---|---|
LRVO_MODULE_BILLING_TAXES_ENABLED | true | Facturer avec taxes. |
LRVO_MODULE_BILLING_GST_RATE | 5 | Taux de TPS en pourcentage. |
LRVO_MODULE_BILLING_QST_RATE | 9.975 | Taux de TVQ en pourcentage. |
LRVO_MODULE_BILLING_GST_NUMBER | vide | Numéro d'inscription à la TPS. |
LRVO_MODULE_BILLING_QST_NUMBER | vide | Numéro d'inscription à la TVQ. |
LRVO_MODULE_BILLING_DEFAULT_TAX_PROFILE | gst_qst | Profil des nouveaux clients, articles et lignes. |
Les taux acceptent la virgule comme la période décimale. Ils sont convertis en parties par million et figés sur chaque facture au moment de l'émission. Voir Taxes.
..._TAXES_ENABLED=false s'adresse à un émetteur qui n'est pas inscrit aux taxes : un travailleur autonome sous le seuil d'inscription, par exemple. Les sélecteurs de taxes disparaissent de l'admin, toute écriture est ramenée au profil none, et aucune facture ne porte de ligne de TPS ni de TVQ. ..._DEFAULT_TAX_PROFILE n'a alors plus d'effet.
Une facture émise avant la coupure garde ses taxes : elles sont figées sur sa ligne, pas relues dans la configuration.
Numérotation
| Variable | Défaut | Exemple produit |
|---|---|---|
LRVO_MODULE_BILLING_INVOICE_PREFIX | FAC | FAC-2026-0001 |
LRVO_MODULE_BILLING_INVOICE_PAD | 4 | 0001, ou 00001 avec 5 |
LRVO_MODULE_BILLING_TRANSACTION_PREFIX | TRX | TRX-2026-0001 |
LRVO_MODULE_BILLING_CLIENT_PREFIX | CLI | CLI-0001 |
La séquence des factures et des transactions se remet à zéro chaque année. Celle des clients est continue.
Intérêts de retard
| Variable | Défaut | Rôle |
|---|---|---|
LRVO_MODULE_BILLING_INTEREST_ENABLED | true | Active l'accumulation. |
LRVO_MODULE_BILLING_INTEREST_RATE | 1 | Taux mensuel en pourcentage. |
LRVO_MODULE_BILLING_INTEREST_GRACE_DAYS | 3 | Jours après l'échéance avant le premier intérêt. |
..._INTEREST_ENABLED est le seul interrupteur : il n'y a pas de réglage par facture. Le mettre à false arrête l'accumulation partout, mais laisse en place les intérêts déjà courus, qui restent dus et continuent de s'afficher.
Rappels
| Variable | Défaut | Rôle |
|---|---|---|
LRVO_MODULE_BILLING_DEFAULT_TERMS_DAYS | 30 | Délai de paiement des nouveaux clients. |
LRVO_MODULE_BILLING_REMINDER_DAYS | 30,14,7,3,1 | Échelle des rappels avant échéance, en jours. |
LRVO_MODULE_BILLING_OVERDUE_INTERVAL_DAYS | 7 | Espacement des avis de retard. |
LRVO_MODULE_BILLING_OVERDUE_MAX_NOTICES | 4 | Nombre maximal d'avis de retard. |
LRVO_MODULE_BILLING_ADMIN_EMAIL | vide | Reçoit une copie au premier retard de chaque facture. |
LRVO_MODULE_BILLING_REMINDER_DAYS est trié par ordre décroissant et dédoublonné à la lecture, donc l'ordre de saisie n'a pas d'importance. Voir Récurrences et rappels.
Virement Interac
| Variable | Défaut | Rôle |
|---|---|---|
LRVO_MODULE_BILLING_INTERAC_ENABLED | false | Affiche les instructions sur la page publique. |
LRVO_MODULE_BILLING_INTERAC_EMAIL | vide | Adresse à laquelle envoyer le virement. |
Variables du projet hôte
Le module les lit sans les redéclarer.
| Variable | Usage |
|---|---|
STRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEY | Le paiement par carte n'apparaît que si les deux sont présentes. |
STRIPE_WEBHOOK_SECRET | Vérification de la signature du webhook. |
LRVO_CURRENCY | Devise des nouvelles factures, CAD par défaut. |
LRVO_TIMEZONE | Heure d'exécution des tâches, America/Toronto par défaut. |
NEXT_PUBLIC_URL | Base des liens de paiement envoyés aux clients. |
LRVO_ENCRYPTION_KEY | Chiffre la réponse de sécurité Interac en base. |
Permissions
| Clé | Ce qu'elle ouvre |
|---|---|
billing.view | Lecture des factures, clients, articles, transactions, et téléchargement des PDF. |
billing.manage | Création, émission, encaissement, remboursement et suppression. |
Les deux sont accordées au rôle admin au prochain lrvo-db init. Un rôle qui n'a que billing.view voit toute la section mais ne peut rien écrire : les routes d'écriture répondent 403 avant d'atteindre le code du module.
Entrée d'admin
Section « Facturation », icône InvoiceIcon, ordre 150. Six items, tous conditionnés à billing.view.
| Item | Chemin |
|---|---|
| Factures | /admin/billing/invoices |
| Clients | /admin/billing/clients |
| Articles | /admin/billing/items |
| Catégories | /admin/billing/categories |
| Récurrences | /admin/billing/recurrences |
| Transactions | /admin/billing/transactions |
Tableau de bord
Le module pose une seule tuile sur /admin, titrée « Facturation », large d'une colonne et conditionnée à billing.view. Une tuile par chiffre se serait mêlée à celles des autres modules dans la même grille : des cartes semblables se lisent comme autant d'indicateurs sans rapport, alors qu'un panneau titré dit à qui appartiennent les nombres.
La permission ne fait pas que masquer la tuile : sans elle, les montants ne sont même pas calculés. C'est ce qui les empêche de partir dans la source de la page pour un compte qui atteint /admin sans avoir le droit de les lire.
Le panneau contient, de haut en bas :
| Bloc | Ce qu'il montre |
|---|---|
| Cinq rangées | Les revenus de la semaine, du mois et de l'année en cours, puis le montant à encaisser et le montant en retard avec son nombre de factures. |
| Graphique | Les revenus nets des douze derniers mois, une barre par mois. |
| Ligne d'alerte | Le nombre de tâches planifiées en échec et d'événements Stripe en échec sur les sept derniers jours. |
Les revenus sont la somme des transactions complétées sur la période. Un remboursement étant une ligne négative de la même table, la somme est nette sans traitement particulier, et un mois où les remboursements dépassent les paiements descend sous la ligne du zéro. À encaisser est la somme des soldes des factures sent et partial ; en retard, la part de ces soldes dont la date d'échéance est passée.
Le graphique compte toujours douze barres, y compris les mois sans une seule transaction : un graphique qui saute ses mois vides comprime l'axe du temps et ment sur la tendance. La dernière barre est celle du mois en cours, donc courte par construction, ce que dit l'étiquette sous l'axe. Survoler une barre affiche son mois et son montant.
Deux éléments s'effacent d'eux-mêmes : la ligne d'alerte quand rien n'a échoué, et le panneau entier quand la donnée n'a pas pu être calculée. Un panneau absent ne signale donc jamais un zéro, il signale l'absence de chiffre.
Les montants sont formatés dans la devise de LRVO_CURRENCY. Le panneau agrège toutes les factures sans distinguer leur devise : un site qui facture dans plusieurs devises y lirait une somme sans signification.
Notes
- Une variable illisible retombe sur son défaut sans bloquer le démarrage. Un taux négatif, un délai hors bornes ou un profil de taxes inconnu sont ignorés.
- La configuration est lue une seule fois, au premier accès. Modifier une variable en cours d'exécution n'a aucun effet.