Catalogue des types de règles
Les seize types de règles paramétrables : à quoi chacun sert, ses paramètres, le refus vu par l’utilisateur et comment le simuler avant de l’activer.
Un type de règle reste du code Go compilé et testé : le consultant choisit un type, paramètre des seuils et une portée, jamais de logique métier écrite en dur. Les seize fiches ci-dessous suivent toutes le même plan : à quoi ça sert, tables et moment, portées possibles, paramètres, ce que voit l’utilisateur en cas de refus, comment simuler, et la référence normative quand elle existe.
Tolérance de sur-réception sur_reception
Limite l’écart entre la quantité commandée et la quantité reçue à la réception, en pourcentage et/ou en quantité absolue.
| Type | reception_items |
|---|---|
| Portée | Locataire, fournisseur, article |
| Moment | À la saisie |
| Sans paramétrage | Aucune limite ne s’applique |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
pct_max | Nombre | Optionnel | 5 |
abs_max | Nombre | Optionnel | 10 |
illimitee | Booléen | Optionnel | false |
Ce que voit l’utilisateur
{
"code": "sur_reception",
"params": { "commande": "…", "recu": "…", "maximum": "…" },
"message": "réception au-delà de la tolérance : commandé 100, reçu 120, maximum autorisé 105. Ajustez la quantité reçue ou faites relever la tolérance de sur-réception."
}HTTP 400 · sur_reception
Simuler
{
"rule_type": "sur_reception",
"scope_type": "tenant",
"params": { "pct_max": 5, "illimitee": false },
"jours": 90
}Référence normative
—
Limite de crédit client limite_credit_client
Refuse une commande client ou une facture qui passe au ferme si elle fait franchir au client sa limite de crédit.
| Type | sales_orders, invoices |
|---|---|
| Portée | Locataire, client |
| Moment | Au ferme |
| Sans paramétrage | Aucune vérification, même si une limite de crédit est renseignée |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
tolerance_pct | Nombre | Optionnel | 10 |
inclure_commandes | Booléen | Optionnel | true |
mode | Texte | Optionnel — bloquer | avertir | avertir |
Ce que voit l’utilisateur
{
"code": "limite_credit_depassee",
"params": { "client": "…", "encours": "…", "montant": "…", "limite": "…" },
"message": "plafond de crédit du client dépassé : encours 12 000 + document 5 000 > limite 15 000. Faites relever la limite, encaissez des factures ouvertes ou réduisez le document."
}HTTP 409 · limite_credit_depassee
Simuler
{
"rule_type": "limite_credit_client",
"scope_type": "tenant",
"params": { "tolerance_pct": 10, "inclure_commandes": true, "mode": "avertir" },
"jours": 90
}Référence normative
—
Champ requis au statut champ_requis_statut
Exige un ou plusieurs champs renseignés avant qu’un document passe à un statut donné, ou à n’importe quel statut ferme.
| Type | choisie par le consultant : n’importe quelle table exposée par le CRUD générique (paramètre table) |
|---|---|
| Portée | Locataire |
| Moment | Au ferme |
| Sans paramétrage | Aucun champ requis |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
table | Texte | Requis | sales_orders |
statut | Texte | Optionnel — vide = n’importe quel statut ferme | confirmed |
champs | Liste de textes | Requis | delivery_date |
Ce que voit l’utilisateur
{
"code": "champ_requis_statut",
"params": { "table": "…", "statut": "…", "champs": "…" },
"message": "le document ne peut pas passer au statut confirmed : renseignez d’abord delivery_date."
}HTTP 400 · champ_requis_statut
Simuler
{
"rule_type": "champ_requis_statut",
"scope_type": "tenant",
"params": { "table": "sales_orders", "statut": "", "champs": ["delivery_date"] },
"jours": 90
}Référence normative
—
Période close periode_close
Refuse tout document daté dans une période comptable déjà clôturée, ou en cours de clôture sur demande.
| Type | invoices, supplier_invoices, credit_notes, payments, accounting_entries (périmètre par défaut, paramètre tables pour le restreindre) |
|---|---|
| Portée | Locataire |
| Moment | Au ferme |
| Sans paramétrage | Aucune période contrôlée |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
tables | Liste de textes | Optionnel | invoices, payments |
bloquer_closing | Booléen | Optionnel | false |
Ce que voit l’utilisateur
{
"code": "periode_close",
"params": { "periode": "…", "table": "…" },
"message": "la période comptable 2026-08 est clôturée : datez le document dans une période ouverte ou faites rouvrir la période."
}HTTP 409 · periode_close
Simuler
{
"rule_type": "periode_close",
"scope_type": "tenant",
"params": {},
"jours": 90
}Référence normative
Pratique comptable standard : fenêtre de dates de comptabilisation autorisées.
Approbation par montant approbation_montant
Refuse le passage au ferme d’un achat ou d’un devis dont le montant dépasse un seuil sans approbation d’un niveau suffisant.
| Type | purchase_orders, purchase_requests, quotes (choisie par le paramètre table) |
|---|---|
| Portée | Locataire, fournisseur |
| Moment | Au ferme |
| Sans paramétrage | La grille historique des DA s’applique (5 000 → achat, 50 000 → direction achat) |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
table | Texte | Requis | purchase_orders |
paliers | Liste de textes | Requis — format seuil:rôle | 5000:achat, 50000:directeur_achat |
mode | Texte | Optionnel — bloquer | avertir | avertir |
Ce que voit l’utilisateur
{
"code": "approbation_requise",
"params": { "table": "…", "montant": "…", "seuil": "…", "niveau": "…", "role": "…" },
"message": "ce document de 62 000 dépasse le seuil de 50 000 : il doit être approuvé (niveau 3 — Directeur achats) avant de passer au ferme. Soumettez-le à l’approbation avant de le repasser au ferme."
}HTTP 409 · approbation_requise
Simuler
{
"rule_type": "approbation_montant",
"scope_type": "tenant",
"params": { "table": "purchase_orders", "paliers": ["10000:2", "100000:3"], "mode": "avertir" },
"jours": 90
}Référence normative
Pratique achats standard : stratégie de libération des demandes par seuils de montant.
Workflow requis workflow_requis
Refuse le passage au ferme d’un document tant que son workflow d’approbation actif n’a pas d’instance approuvée.
| Type | quotes, purchase_requests, purchase_order_amendments, consumption_vouchers, production_release_pvs, supplier_invoices, manufacturing_orders, purchase_orders, sales_orders (paramètre tables pour restreindre) |
|---|---|
| Portée | Locataire |
| Moment | Au ferme |
| Sans paramétrage | Aucune approbation exigée |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
tables | Liste de textes | Optionnel | purchase_orders |
mode | Texte | Optionnel — bloquer | avertir | bloquer |
Ce que voit l’utilisateur
{
"code": "workflow_requis",
"params": { "table": "…", "workflow": "…" },
"message": "ce document est soumis au workflow « Validation achats » : soumettez-le à l’approbation et attendez la validation avant de le passer au ferme."
}HTTP 409 · workflow_requis
Simuler
{
"rule_type": "workflow_requis",
"scope_type": "tenant",
"params": {},
"jours": 90
}Référence normative
Pratique de gouvernance standard : un document sous circuit d’approbation actif ne se libère pas hors circuit.
Fournisseur non évalué fournisseur_non_evalue
Refuse le passage au ferme d’une commande d’achat pour un fournisseur sans évaluation valide.
| Type | purchase_orders |
|---|---|
| Portée | Locataire, fournisseur |
| Moment | Au ferme |
| Sans paramétrage | Aucun fournisseur n’est contrôlé |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
age_max_jours | Nombre | Optionnel — défaut 365 | 365 |
score_min | Nombre | Optionnel | 70 |
accepter_audit | Booléen | Optionnel | true |
Ce que voit l’utilisateur
{
"code": "fournisseur_non_evalue",
"params": { "fournisseur": "…", "derniere_evaluation": "…", "age_max": "…" },
"message": "fournisseur ACME sans évaluation valide (dernière évaluation : jamais, validité 365 jours) : évaluez le fournisseur ou ajustez la portée avant de passer la commande au ferme."
}HTTP 409 · fournisseur_non_evalue
Simuler
{
"rule_type": "fournisseur_non_evalue",
"scope_type": "tenant",
"params": { "age_max_jours": 365, "mode": "avertir" },
"jours": 90
}Référence normative
ISO 9001 § 8.4.1 — maîtrise des processus, produits et services fournis par des prestataires externes.
NC sans action corrective nc_sans_action
Refuse la fermeture d’une non-conformité sans action corrective rattachée.
| Type | non_conformities |
|---|---|
| Portée | Locataire |
| Moment | Au ferme |
| Sans paramétrage | Aucune fermeture n’est contrôlée |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
severites | Liste de textes | Optionnel — défaut : major, critical | major, critical |
exiger_verification | Booléen | Optionnel | true |
Ce que voit l’utilisateur
{
"code": "nc_sans_action",
"params": { "nc": "…", "severite": "…" },
"message": "la non-conformité NC-2026-014 (sévérité major) ne peut pas être fermée sans action corrective : ajoutez une action corrective rattachée avant de clôturer."
}HTTP 409 · nc_sans_action
Simuler
{
"rule_type": "nc_sans_action",
"scope_type": "tenant",
"params": { "severites": ["major", "critical"], "mode": "avertir" },
"jours": 90
}Référence normative
ISO 9001 § 10.2 — non-conformité et action corrective.
Traçabilité requise tracabilite_requise
Refuse la réception, la sortie ou la clôture de fabrication d’un article suivi par lot sans numéro de lot renseigné.
| Type | reception_items, consumption_voucher_items, delivery_note_items (à la saisie) ; manufacturing_orders (clôture d’OF, via une garde dédiée) |
|---|---|
| Portée | Locataire, article |
| Moment | À la saisie — La clôture d’un ordre de fabrication est contrôlée à part, par une garde dédiée appelée à la clôture — pas par le registre générique de règles. |
| Sans paramétrage | Aucun article n’est contrôlé |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
moments | Liste de textes | Optionnel — reception, sortie, fabrication | reception |
tous_articles | Booléen | Optionnel | false |
serie_aussi | Booléen | Optionnel | false |
Ce que voit l’utilisateur
{
"code": "tracabilite_requise",
"params": { "article": "…", "document": "…", "moment": "…" },
"message": "l’article REF-2210 est suivi par lot : renseignez le numéro de lot avant d’enregistrer ce réception."
}HTTP 400 · tracabilite_requise
Simuler
{
"rule_type": "tracabilite_requise",
"scope_type": "tenant",
"params": { "moments": ["reception"], "mode": "avertir" },
"jours": 90
}Référence normative
Traçabilité lot/série de bout en bout ; IATF 16949 § 8.5.2 ; ISO 13485 § 7.5.9.
Certificat expiré certificat_expire
Refuse la commande d’achat au ferme ou la réception pour un fournisseur, et un article si demandé, sans certificat matière valide.
| Type | purchase_orders (au ferme), receptions (à la saisie) |
|---|---|
| Portée | Locataire, fournisseur, article |
| Moment | Au ferme — Le catalogue déclare ce type « au ferme » ; la table receptions mord en réalité à la saisie, la table purchase_orders au ferme. |
| Sans paramétrage | Aucun certificat n’est contrôlé |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
normes | Liste de textes | Optionnel | OEKO-TEX, BSCI, GOTS |
par_article | Booléen | Optionnel | true |
tolerance_jours | Nombre | Optionnel — défaut 0 | 0 |
Ce que voit l’utilisateur
{
"code": "certificat_expire",
"params": { "fournisseur": "…", "norme": "…", "expire_le": "…" },
"message": "fournisseur ACME : certificat OEKO-TEX expiré ou absent (aucun certificat) : renouvelez le certificat avant de poursuivre."
}HTTP 409 · certificat_expire
Simuler
{
"rule_type": "certificat_expire",
"scope_type": "tenant",
"params": { "normes": ["OEKO-TEX", "BSCI", "GOTS"], "mode": "avertir" },
"jours": 90
}Référence normative
Oeko-Tex / BSCI / GOTS ; ISO 13485 § 7.4 — informations documentées d’origine externe.
Équipement non étalonné equipement_non_etalonne
Refuse un contrôle qualité ou une mesure SPC saisi avec un instrument hors étalonnage.
| Type | quality_controls, spc_measurements |
|---|---|
| Portée | Locataire |
| Moment | À la saisie |
| Sans paramétrage | Aucun instrument n’est contrôlé |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
tables | Liste de textes | Optionnel | quality_controls |
tolerance_jours | Nombre | Optionnel — défaut 0 | 0 |
Ce que voit l’utilisateur
{
"code": "equipement_non_etalonne",
"params": { "instrument": "…", "echeance": "…" },
"message": "instrument PIED-003 hors étalonnage (échéance : 2026-05-01) : ré-étalonnez l’instrument avant de l’utiliser pour ce contrôle."
}HTTP 409 · equipement_non_etalonne
Simuler
{
"rule_type": "equipement_non_etalonne",
"scope_type": "tenant",
"params": { "mode": "bloquer" },
"jours": 90
}Référence normative
ISO 9001 § 7.1.5 ; IATF 16949 § 7.1.5.2 — ressources de surveillance et de mesure.
Document requis avant statut document_requis_avant_statut
Refuse le passage d’un OF, d’une commande d’achat ou d’une commande client à un statut cible tant que le document requis n’existe pas pour son article.
| Type | manufacturing_orders, purchase_orders, sales_orders (choisie par le paramètre table) |
|---|---|
| Portée | Locataire |
| Moment | Au ferme |
| Sans paramétrage | Rien n’est contrôlé tant qu’aucune règle complète n’est posée — table, statut et documents sont tous requis |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
table | Texte | Requis | manufacturing_orders |
statut | Texte | Requis | in_progress |
documents | Liste de textes | Requis — fmea_studies, quality_control_plans, document_control | fmea_studies |
statut_document | Texte | Optionnel — défaut selon le type de document | completed |
Ce que voit l’utilisateur
{
"code": "document_requis",
"params": { "document": "…", "article": "…", "statut": "…" },
"message": "le document ne peut pas passer au statut in_progress : document(s) requis manquant(s) pour l’article ART-4471 (fmea_studies)."
}HTTP 409 · document_requis
Simuler
{
"rule_type": "document_requis_avant_statut",
"scope_type": "tenant",
"params": {
"table": "manufacturing_orders",
"statut": "in_progress",
"documents": ["fmea_studies"],
"mode": "bloquer"
},
"jours": 90
}Référence normative
IATF 16949 — PPAP / AMDEC (FMEA) ; ISO 9001 § 8.5.1 — maîtrise de la production et de la prestation de service.
Dimension requise dimension_requise
Refuse le passage d’un en-tête à un statut (ou n’importe quel statut ferme), ou la saisie d’une ligne, tant qu’une ou plusieurs dimensions analytiques choisies restent vides après héritage (fiche → en-tête → ligne).
| Type | table choisie par le consultant, restreinte aux 28 tables porteuses de dimensions : les 15 en-têtes (quotes, invoices, purchase_orders, sales_orders, delivery_notes, credit_notes, consumption_vouchers, purchase_requests, receptions, supplier_invoices, subcontracting_orders, supplier_rfqs, manufacturing_orders, technical_studies, stock_movements) et leurs 13 tables de lignes |
|---|---|
| Portée | Locataire, client, fournisseur |
| Moment | Au ferme — Sur un en-tête : au ferme (paramètre statut, vide = n’importe quel statut ferme). Sur une ligne : à chaque saisie — une ligne n’a pas de statut propre. |
| Sans paramétrage | Aucune dimension n’est exigée |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
table | Texte | Requis | invoices |
statut | Texte | Optionnel — vide = n’importe quel statut ferme (ignoré sur une ligne) | confirmed |
dimensions | Liste de textes | Requis — codes dim_dimensions.code | AFFAIRE |
Ce que voit l’utilisateur
{
"code": "dimension_requise",
"params": { "table": "…", "dimensions": "…" },
"message": "renseignez la dimension AFFAIRE avant de passer au statut confirmed."
}HTTP 400 · dimension_requise
Simuler
{
"rule_type": "dimension_requise",
"scope_type": "tenant",
"params": { "table": "invoices", "statut": "", "dimensions": ["AFFAIRE"], "mode": "avertir" },
"jours": 90
}Référence normative
Comptabilité analytique standard : dimensions obligatoires par compte/document.
Combinaison de dimensions interdite combinaison_interdite
Refuse, dès la saisie, tout couple de valeurs de dimensions présent dans les combinaisons interdites configurées (Réglages → Dimensions). Ce type ne lit aucun paramètre propre dans rule_parameters — seule son activation compte ; la simulation, elle, demande une table cible ponctuelle (non stockée) pour savoir où rejouer le contrôle.
| Type | les mêmes 28 tables porteuses de dimensions que dimension_requise — ce type n’a aucun paramètre table propre |
|---|---|
| Portée | Locataire |
| Moment | À la saisie |
| Sans paramétrage | Aucune combinaison n’est bloquée |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|
Ce que voit l’utilisateur
{
"code": "combinaison_interdite",
"params": { "dimension_a": "…", "valeur_a": "…", "dimension_b": "…", "valeur_b": "…" },
"message": "combinaison de dimensions interdite : Affaire = Import ne peut pas être associé à Compte = 5800."
}HTTP 400 · combinaison_interdite
Simuler
{
"rule_type": "combinaison_interdite",
"scope_type": "tenant",
"params": { "table": "invoices" },
"jours": 90
}Référence normative
Combinaisons de dimensions interdites (table dim_forbidden).
Habilitation requise habilitation_requise
Refuse l’affectation d’un opérateur à une opération de production (ou son démarrage) si l’opérateur ne possède pas, au niveau minimal exigé, une compétence requise par le poste (workstation_competencies) — ou sans formation/certification valide si exigée.
| Type | manufacturing_operations (CRUD générique) ; mord aussi sur la route dédiée PUT /manufacturing-operations/{id}/operator |
|---|---|
| Portée | Locataire |
| Moment | À la saisie — Mord quand operator_id est posé (affectation), ou quand le statut passe à in_progress avec un opérateur déjà affecté. |
| Sans paramétrage | Aucun opérateur n’est contrôlé |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
niveau_min_defaut | Nombre | Optionnel — défaut 2 ; le seuil posé sur la fiche du poste prime quand il existe | 2 |
exiger_formation_valide | Booléen | Optionnel | true |
Ce que voit l’utilisateur
{
"code": "habilitation_requise",
"params": { "operateur": "…", "poste": "…", "competence": "…" },
"message": "opérateur Karim B. non habilité pour le poste Sertissage 3 : compétence requise « Sertissage niveau 3 » absente ou insuffisante. Complétez l’habilitation (niveau, formation) avant d’affecter cet opérateur."
}HTTP 409 · habilitation_requise
Simuler
{
"rule_type": "habilitation_requise",
"scope_type": "tenant",
"params": { "niveau_min_defaut": 2, "exiger_formation_valide": true, "mode": "avertir" },
"jours": 90
}Référence normative
ISO 9001 § 7.2 ; IATF 16949 § 7.2.1 — compétence, sensibilisation et formation.
Séparation des tâches separation_taches
Empêche la personne qui a réalisé une action A (créer un fournisseur/client, créer un document, modifier un RIB…) de réaliser ensuite une action B (approuver, valider un paiement, passer au ferme, approuver un workflow…) sur ce même document — contrôle quatre yeux. Une seule ligne active par locataire : la matrice de conflits est portée en liste.
| Type | tables de documents fermés (même périmètre que workflow_requis) plus payments — quatre points de morsure : le registre CRUD générique, la garde du passage au ferme, l’approbation de workflow (internal/workflow) et la validation de paiement (internal/finance) |
|---|---|
| Portée | Locataire |
| Moment | Au ferme — Mord aussi à l’approbation (approved_by posé) et à la validation de paiement — pas seulement au passage au ferme. |
| Sans paramétrage | Aucun conflit n’est contrôlé |
Paramètres
| Paramètre | Type | Requis / défaut | Exemple |
|---|---|---|---|
conflits | Liste de textes | Requis — format action_a:action_b | creer_fournisseur:valider_paiement, creer_da:approuver |
tables | Liste de textes | Optionnel — défaut = toutes les tables éligibles | purchase_orders, payments |
mode | Texte | Optionnel — bloquer | avertir | avertir |
Ce que voit l’utilisateur
{
"code": "separation_taches",
"params": { "action_a": "…", "action_b": "…", "utilisateur": "…" },
"message": "séparation des tâches : la personne qui a « creer_fournisseur » ne peut pas « valider_paiement » sur ce document — contrôle quatre yeux, demandez à un autre utilisateur."
}HTTP 409 · separation_taches
Simuler
{
"rule_type": "separation_taches",
"scope_type": "tenant",
"params": { "conflits": ["creer_fournisseur:valider_paiement", "creer_da:approuver"], "mode": "avertir" },
"jours": 90
}Référence normative
Matrice de séparation des tâches (contrôle quatre yeux) — pratique d’audit interne standard.
← Retour à Règles métier et contrôle
Voir aussi : Packs par métier · Mise en service · Exemples par secteur · Pilotage et signaux de risque · Copilote · Profils de statuts