Dolibarr avancé : fiscalité Maroc sans casser l’existant

(Guide complet pour intégrer les exigences fiscales marocaines dans un ERP Dolibarr déjà en production)


1. Pourquoi un “Dolibarr avancé” pour le Maroc ?

Enjeu Description
Conformité légale Le Code général des impôts (CGI) marocain impose la TVA, l’impôt sur les sociétés, les retenues à la source, les taxes d’enregistrement, etc.
Complexité des déclarations Chaque type de document (facture, devis, bon de commande, note de crédit…) doit être structuré selon les règles de la Direction des Impôts (DI).
Intégration avec l’existant Les entreprises ne souhaitent pas refaire tout le paramétrage ni perdre leurs historiques de comptabilité.
Scalabilité Un moteur fiscal qui évolue avec les changements de taux ou de nouvelles obligations (ex. : e‑facture, reporting BEPS).

Dolibarr, grâce à son architecture modulaire, permet d’ajouter des règles fiscales avancées sans toucher directement aux tables de base de données de l’ERP. Le « sans casser l’existant » passe par :

  1. Isolation des nouvelles règles dans des modules spécifiques.
  2. Gestion des versions (snapshot des paramètres avant mise à jour).
  3. Tests automatisés (unités + recettes fonctionnelles).
  4. Plan de rollback (revert à la configuration d’origine).


2. Architecture fiscale de Dolibarr adaptée au Maroc

+-------------------+          +----------------------------+
| Modules de base | ---> | Core Dolibarr (CRUD) |
+-------------------+ +----------------------------+
^ |
| v
+-------------------+ +----------------------------+
| Module "TVA Maroc | ---> | Hook / Event Manager |
+-------------------+ +----------------------------+
^ |
| v
+-------------------+ +----------------------------+
| Module "Impôt | ---> | Tables personnalisées (session_tax, fiscalyear…) |
+-------------------+ +----------------------------+

  • Modules dédiés : mod_fadmin (gestion des comptes), mod_taxes (TVA, retenue à la source), mod_fiscalyear (exercice comptable).
  • Hooks natifs : hookFormMainInit, hookDisplayAdminMenu, hookfileSave.
  • Tables personnalisées (ou suffixes) :

    • llx_fiscal_year – période fiscale marocaine (ex. : 01/01 – 31/12).
    • llx_tax_category – catégories de TVA (0, 10, 20, 30 %).
    • llx_vat_declaration – générateur de fichiers DEB/DEB‑E.


3. Étapes de mise en place (sans modifier le cœur)

3.1. Sauvegarde & Plan de rollback

# 1️⃣ Exporter la base actuel (SQL dump)
mysqldump -u dolibarr_user -p dolibarr_db > dolibarr_backup_$(date +%Y%m%d).sql
# 2️⃣ Versionner le répertoire de configuration
git init && git add modules/ && git commit -m "Backup avant ajout de fiscalité"

Règle : En cas d’erreur, simplement restaurer le dump et désactiver le module via l’interface.

3.2. Installation du module de base « Tax Maroc »

  1. Télécharger le fichier mod_taxes_morocco.zip (développé dans le repo officiel ou fork privé).
  2. Décompresser dans htdocs/custom/ (ou www/dolibarr/custom).
  3. Dans l’admin → Modules → Gestion des modules → « Tax Morocco » → Enable.

Astuce : Les modules placés dans custom/ ne seront jamais écrasés lors d’une mise à jour de Dolibarr.

3.3. Configuration de la TVA

Champ Valeur recommandée (exemple)
Taux normal 20 %
Taux réduit 10 %
Taux super‑réduit 7 %
Exonéré 0 %
Retenue à la source (IR) % selon la catégorie du bénéficiaire (ex. : 10 % pour les services).
Date d’application 01/01/2024 (ou la date de mise à jour officielle).

Interface : Facturation → Setup → Taxes → TVA – Maroc.

  • Cocher « Appliquer les taux par défaut selon le pays du client/fournisseur ».
  • Définir les conditions d’imposition (client résident, non‑résident, exportateur).

3.4. Définir les Catégories fiscales (exemple)

Code Libellé Description Exemple d’usage
GEN Général Produits/services standard 20 % TVA
EXE Exportation Vente à l’étranger 0 % TVA / exonération
SERVMED Services médicaux Taux réduit 7 % TVA
AGRI Agro‑alimentaire Taux réduit 10 % TVA

Chemin : Facturation → Setup → Tax Category.
Créer les catégories et associer le taux correspondant. Ces catégories seront visibles dans la liste déroulante du formulaire de facture.

3.5. Règles de Retenue à la Source

  1. Créer un paramètre « Retenue à la source » dans Facturation → Setup → Retenue à la source.
  2. Définir les taux par catégorie de prestataires (ex. : 5 % pour les consultants, 10 % pour les professionnels du bâtiment).

$parameters['RETENTION_RATE'] = [
'CONSULTANT' => 5,
'CONSTRUCTION'=> 10,
'MEDICAL' => 7,
];

  1. Dans le module mod_taxes_morocco, le hook hookFormMainInit ajoute automatiquement un champ rétention dans la facture quand le client appartient à une catégorie concernée.

3.6. Génération de la Déclaration de TVA

Dolibarr possède déjà le module « DEB » (Déclaration des exploitations bancaires). Nous enrichissons ce module via :

  • Table llx_vat_declaration : stocke les champs obligatoires (numéro de TVA, période, montant HT, montant TVA, etc.).
  • Script CLI dolibarr/bin/vat_report.php exécutable via cron (0 2 1 * * /usr/bin/php vat_report.php --period 2024M01 > /var/log/vat_report_2024M01.log).
  • Export CSV/Excel compatible avec les formulaires officiels de la DI.

3.7. Personnalisation du PDF Facture

$fc = new Facture($db);
$fc->getInfo(); // récupère les lignes
$template = 'facture_ht_maroc.tpl'; // template dédié
// Ajouter le champ de retenue à la source
echo '<tr><td>Retenu à la source ('.$fc->retention_rate.'%)</td><td>'.number_format($fc->retention_amount,2,',','').'</td></tr>';

Changer le fichier tpl/facture_ht_maroc.tpl via le menu Paramètres → Impression → Modèles de facture.


4. Intégration « Sans casser l’existant » – Bonnes pratiques

Action Objectif Mise en œuvre
Sandbox Tester les changements sur un jeu de données de reproduction. Copier la base prod → dolibarr_test → désactiver les module de production.
Versionnage des modèles fiscaux Revenir à une version antérieure rapidement. Git tag :tax-v1.2 → déploiement via git checkout tags/tax-v1.2.
Gestion des droits Empêcher la modification accidentelle par des utilisateurs non autorisés. Permissions: Fiscalité → Admin → rôle tax_admin.
Monitoring Alertes sur anomalies de calcul (ex. : TVA négative). Hook hookInvoiceAfterCreate → log + envoi d’e‑mail à l’équipe finance.
Documentation interne Procédure de mise à jour annuelle du taux de TVA. Wiki interne : Mise à jour du taux TVA – procédure 2025.


5. Exemple complet – Ajout d’une nouvelle catégorie « Livraison à domicile »

  1. Création de la catégorie

    • Menu : Facturation → Setup → Tax Category → Nouveau
    • Nom : LIVR_HOM
    • Taux : 10 % (taux réduit)

  2. Attribution automatique

    • Dans le module mod_taxes_morocco → règle if $product->ref starts with "LIVRE") → assignerLIVR_HOM`.

  3. Mise à jour du PDF

    • Editer tpl/facture_ht_maroc.tpl pour afficher la catégorie :
      <td>{$tax_category}</td>

  4. Test fonctionnel

    • Créer une facture client avec un article LIVRE001 → vérifier que le taux 10 % est appliqué, la TVA figure dans le récapitulatif et que la retenue à la source n’est pas ajoutée.

  5. Déploiement

    • Git commit → tag v2025-11-tax-category-livraison → déploiement sur serveur de prod via Jenkins.


6. Gestion des évolutions légales (exemple : 2026 TVA à 19 %)

  1. Déclaration officielle (Bulletin Officiel des Finances) – mettre à jour le taux par défaut.
  2. Mise à jour du fichier tax_rate_config.php :
    $tax_rates['default']['TVA_NORMAL'] = 19; // avant 20 % -> 19 %
  3. Migration de données :

    • Script dolibarr/bin/tax_rate_migration.php qui recalcule les factures post‑date avec la nouvelle base.
  4. Versionnage : Créez un tag tax-rate-2026-19 et notez la date de mise à jour.

Conseil : Ajouter une notification dans l’interface (ex. : icône 📢) pour rappeler aux administrateurs de vérifier le taux chaque année.


7. Checklist de déploiement « Beta »

Action
1 Backup complet de la production.
2 Installation du module mod_taxes_morocco en mode test.
3 Création des catégories de TVA et test de facturation avec plusieurs clients.
4 Génération d’une déclaration DEB fictive et comparaison avec le modèle officiel.
5 Vérification des droits d’accès (seuls les profils tax_admin / accountant peuvent modifier le taux).
6 Lancement du cron de calcul DEB et validation du fichier exporté.
7 Test de scénario rollback (simuler la suppression du module).
8 Documentation envoyée aux équipes comptabilité et auditors.
9 Plan de communication interne (email + réunion 30 jours avant la mise en production).
10 Go‑live avec vérification quotidienne pendant les 30 premiers jours.


8. Conclusion

Dolibarr, grâce à sonarchitecture modulaire et à ses hooks natifs, permet d’ajouter une fiscalité marocaine avancée tout en conservant les processus déjà workflow‑isés. En suivant la méthode présentée :

  • Pas de modification du core → aucune rupture future lors d’une mise à jour.
  • Paramétrage isolé → les taux, catégories et règles de retenue sont gérés dans des modules dédiés.
  • Tests et rollback garantissent la continuité de l’activité comptable.

En résumé : un Dolibarr « avancé » pour le Maroc, c’est avant tout une couche de configuration financière découpée, versionnée et testée, qui s’enroule autour du même moteur de gestion d’entreprise que vos équipes utilisent déjà.


Annexes utiles

Ressource Lien
Code source du module mod_taxes_morocco (GitHub) https://github.com/yourorg/dolibarr-mod-tax-morocco
Guide officiel de la TVA marocaine (Bulletin des Finances) https://www.finances.gov.ma/fr/tva
Plugin de génération DEB (CSV) https://github.com/dolibarr/dolibarr-declaration-europe
Dockerfile d’exemple (PHP‑8.2) https://github.com/dolibarr/dolibarr-docker-morocco
Template PDF Facture « Maroc » htdocs/interfaces/templates/facture_ht_maroc.tpl

Astuce finale : Automatisez la mise à jour annuelle du taux dans votre CI/CD afin que le pipeline de déploiement inclue une pull‑request "Tax rate update 2025 → 2026". Cela évite les oublis et assure la conformité à 100 %.

Bonne intégration ! 🚀

Publications similaires