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

VariableDéfautRôle
LRVO_MODULE_BILLINGfalseActive le module. Sans elle, rien n'est enregistré.
LRVO_MODULE_BILLING_CRONtrueEnregistre 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.

VariableDéfaut
LRVO_MODULE_BILLING_COMPANY_NAMELRVO_NAME
LRVO_MODULE_BILLING_COMPANY_ADDRESSvide
LRVO_MODULE_BILLING_COMPANY_CITYvide
LRVO_MODULE_BILLING_COMPANY_PROVINCEQuébec
LRVO_MODULE_BILLING_COMPANY_POSTAL_CODEvide
LRVO_MODULE_BILLING_COMPANY_COUNTRYCanada
LRVO_MODULE_BILLING_COMPANY_PHONEvide
LRVO_MODULE_BILLING_COMPANY_EMAILvide
LRVO_MODULE_BILLING_COMPANY_LOGO_URLLRVO_LOGO_URL
LRVO_MODULE_BILLING_COMPANY_LOGO_URL_DARK..._LOGO_URL
LRVO_MODULE_BILLING_COMPANY_SITE_URLLRVO_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

VariableDéfautRôle
LRVO_MODULE_BILLING_TAXES_ENABLEDtrueFacturer avec taxes.
LRVO_MODULE_BILLING_GST_RATE5Taux de TPS en pourcentage.
LRVO_MODULE_BILLING_QST_RATE9.975Taux de TVQ en pourcentage.
LRVO_MODULE_BILLING_GST_NUMBERvideNuméro d'inscription à la TPS.
LRVO_MODULE_BILLING_QST_NUMBERvideNuméro d'inscription à la TVQ.
LRVO_MODULE_BILLING_DEFAULT_TAX_PROFILEgst_qstProfil 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

VariableDéfautExemple produit
LRVO_MODULE_BILLING_INVOICE_PREFIXFACFAC-2026-0001
LRVO_MODULE_BILLING_INVOICE_PAD40001, ou 00001 avec 5
LRVO_MODULE_BILLING_TRANSACTION_PREFIXTRXTRX-2026-0001
LRVO_MODULE_BILLING_CLIENT_PREFIXCLICLI-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

VariableDéfautRôle
LRVO_MODULE_BILLING_INTEREST_ENABLEDtrueActive l'accumulation.
LRVO_MODULE_BILLING_INTEREST_RATE1Taux mensuel en pourcentage.
LRVO_MODULE_BILLING_INTEREST_GRACE_DAYS3Jours 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

VariableDéfautRôle
LRVO_MODULE_BILLING_DEFAULT_TERMS_DAYS30Délai de paiement des nouveaux clients.
LRVO_MODULE_BILLING_REMINDER_DAYS30,14,7,3,1Échelle des rappels avant échéance, en jours.
LRVO_MODULE_BILLING_OVERDUE_INTERVAL_DAYS7Espacement des avis de retard.
LRVO_MODULE_BILLING_OVERDUE_MAX_NOTICES4Nombre maximal d'avis de retard.
LRVO_MODULE_BILLING_ADMIN_EMAILvideReç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

VariableDéfautRôle
LRVO_MODULE_BILLING_INTERAC_ENABLEDfalseAffiche les instructions sur la page publique.
LRVO_MODULE_BILLING_INTERAC_EMAILvideAdresse à laquelle envoyer le virement.

Variables du projet hôte

Le module les lit sans les redéclarer.

VariableUsage
STRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEYLe paiement par carte n'apparaît que si les deux sont présentes.
STRIPE_WEBHOOK_SECRETVérification de la signature du webhook.
LRVO_CURRENCYDevise des nouvelles factures, CAD par défaut.
LRVO_TIMEZONEHeure d'exécution des tâches, America/Toronto par défaut.
NEXT_PUBLIC_URLBase des liens de paiement envoyés aux clients.
LRVO_ENCRYPTION_KEYChiffre la réponse de sécurité Interac en base.

Permissions

CléCe qu'elle ouvre
billing.viewLecture des factures, clients, articles, transactions, et téléchargement des PDF.
billing.manageCré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.

ItemChemin
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 :

BlocCe qu'il montre
Cinq rangéesLes 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.
GraphiqueLes revenus nets des douze derniers mois, une barre par mois.
Ligne d'alerteLe 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.

Sur cette page