فهرس أنواع القواعد
الأنواع الستة عشر القابلة للإعداد: فائدة كل نوع، معطياته، الرفض الذي يراه المستخدم، وكيفية محاكاته قبل تفعيله.
يبقى نوع القاعدة شفرة Go مُصرَّفة ومُختبَرة: يختار الاستشاري نوعا، يضبط حدودا ونطاقا، ولا يكتب منطق عمل أبدا. تتبع البطاقات الستة عشرة أدناه جميعها نفس الخطة: الفائدة، الجداول والتوقيت، النطاقات الممكنة، المعطيات، ما يراه المستخدم عند الرفض، كيفية المحاكاة، والمرجع المعياري عند وجوده.
تسامح فائض الاستلام 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.
| النوع | reception_items |
|---|---|
| النطاق | المستأجر، المورد، الصنف |
| التوقيت | عند الإدخال |
| بدون إعداد | لا يُطبَّق أي حد |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
pct_max | رقم | اختياري | 5 |
abs_max | رقم | اختياري | 10 |
illimitee | منطقي (نعم/لا) | اختياري | false |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "sur_reception",
"scope_type": "tenant",
"params": { "pct_max": 5, "illimitee": false },
"jours": 90
}المرجع المعياري
—
سقف ائتمان العميل 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.
| النوع | sales_orders, invoices |
|---|---|
| النطاق | المستأجر، العميل |
| التوقيت | عند الإغلاق |
| بدون إعداد | لا تحقق، حتى لو كان سقف الائتمان محددا |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
tolerance_pct | رقم | اختياري | 10 |
inclure_commandes | منطقي (نعم/لا) | اختياري | true |
mode | نص | اختياري — bloquer | avertir | avertir |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "limite_credit_client",
"scope_type": "tenant",
"params": { "tolerance_pct": 10, "inclure_commandes": true, "mode": "avertir" },
"jours": 90
}المرجع المعياري
—
حقل مطلوب عند الحالة champ_requis_statut
Exige un ou plusieurs champs renseignés avant qu’un document passe à un statut donné, ou à n’importe quel statut ferme.
| النوع | choisie par le consultant : n’importe quelle table exposée par le CRUD générique (paramètre table) |
|---|---|
| النطاق | المستأجر |
| التوقيت | عند الإغلاق |
| بدون إعداد | لا حقل مطلوب |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
table | نص | مطلوب | sales_orders |
statut | نص | اختياري — vide = n’importe quel statut ferme | confirmed |
champs | قائمة نصوص | مطلوب | delivery_date |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "champ_requis_statut",
"scope_type": "tenant",
"params": { "table": "sales_orders", "statut": "", "champs": ["delivery_date"] },
"jours": 90
}المرجع المعياري
—
فترة مغلقة periode_close
Refuse tout document daté dans une période comptable déjà clôturée, ou en cours de clôture sur demande.
| النوع | invoices, supplier_invoices, credit_notes, payments, accounting_entries (périmètre par défaut, paramètre tables pour le restreindre) |
|---|---|
| النطاق | المستأجر |
| التوقيت | عند الإغلاق |
| بدون إعداد | لا فترة مراقبة |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
tables | قائمة نصوص | اختياري | invoices, payments |
bloquer_closing | منطقي (نعم/لا) | اختياري | false |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "periode_close",
"scope_type": "tenant",
"params": {},
"jours": 90
}المرجع المعياري
Pratique comptable standard : fenêtre de dates de comptabilisation autorisées.
المصادقة حسب المبلغ 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.
| النوع | purchase_orders, purchase_requests, quotes (choisie par le paramètre table) |
|---|---|
| النطاق | المستأجر، المورد |
| التوقيت | عند الإغلاق |
| بدون إعداد | يُطبَّق الجدول التاريخي لطلبات الشراء (5000 ← المشتريات، 50000 ← إدارة المشتريات) |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
table | نص | مطلوب | purchase_orders |
paliers | قائمة نصوص | مطلوب — format seuil:rôle | 5000:achat, 50000:directeur_achat |
mode | نص | اختياري — bloquer | avertir | avertir |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "approbation_montant",
"scope_type": "tenant",
"params": { "table": "purchase_orders", "paliers": ["10000:2", "100000:3"], "mode": "avertir" },
"jours": 90
}المرجع المعياري
Pratique achats standard : stratégie de libération des demandes par seuils de montant.
مسار موافقة مطلوب workflow_requis
Refuse le passage au ferme d’un document tant que son workflow d’approbation actif n’a pas d’instance approuvée.
| النوع | quotes, purchase_requests, purchase_order_amendments, consumption_vouchers, production_release_pvs, supplier_invoices, manufacturing_orders, purchase_orders, sales_orders (paramètre tables pour restreindre) |
|---|---|
| النطاق | المستأجر |
| التوقيت | عند الإغلاق |
| بدون إعداد | لا مصادقة مطلوبة |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
tables | قائمة نصوص | اختياري | purchase_orders |
mode | نص | اختياري — bloquer | avertir | bloquer |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "workflow_requis",
"scope_type": "tenant",
"params": {},
"jours": 90
}المرجع المعياري
Pratique de gouvernance standard : un document sous circuit d’approbation actif ne se libère pas hors circuit.
مورّد غير مقيَّم fournisseur_non_evalue
Refuse le passage au ferme d’une commande d’achat pour un fournisseur sans évaluation valide.
| النوع | purchase_orders |
|---|---|
| النطاق | المستأجر، المورد |
| التوقيت | عند الإغلاق |
| بدون إعداد | Aucun fournisseur n’est contrôlé |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
age_max_jours | رقم | اختياري — défaut 365 | 365 |
score_min | رقم | اختياري | 70 |
accepter_audit | منطقي (نعم/لا) | اختياري | true |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "fournisseur_non_evalue",
"scope_type": "tenant",
"params": { "age_max_jours": 365, "mode": "avertir" },
"jours": 90
}المرجع المعياري
ISO 9001 § 8.4.1 — maîtrise des processus, produits et services fournis par des prestataires externes.
عدم مطابقة بدون إجراء تصحيحي nc_sans_action
Refuse la fermeture d’une non-conformité sans action corrective rattachée.
| النوع | non_conformities |
|---|---|
| النطاق | المستأجر |
| التوقيت | عند الإغلاق |
| بدون إعداد | Aucune fermeture n’est contrôlée |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
severites | قائمة نصوص | اختياري — défaut : major, critical | major, critical |
exiger_verification | منطقي (نعم/لا) | اختياري | true |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "nc_sans_action",
"scope_type": "tenant",
"params": { "severites": ["major", "critical"], "mode": "avertir" },
"jours": 90
}المرجع المعياري
ISO 9001 § 10.2 — non-conformité et action corrective.
التتبع مطلوب 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é.
| النوع | reception_items, consumption_voucher_items, delivery_note_items (à la saisie) ; manufacturing_orders (clôture d’OF, via une garde dédiée) |
|---|---|
| النطاق | المستأجر، الصنف |
| التوقيت | عند الإدخال — 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. |
| بدون إعداد | Aucun article n’est contrôlé |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
moments | قائمة نصوص | اختياري — reception, sortie, fabrication | reception |
tous_articles | منطقي (نعم/لا) | اختياري | false |
serie_aussi | منطقي (نعم/لا) | اختياري | false |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "tracabilite_requise",
"scope_type": "tenant",
"params": { "moments": ["reception"], "mode": "avertir" },
"jours": 90
}المرجع المعياري
Traçabilité lot/série de bout en bout ; IATF 16949 § 8.5.2 ; ISO 13485 § 7.5.9.
شهادة منتهية الصلاحية 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.
| النوع | purchase_orders (au ferme), receptions (à la saisie) |
|---|---|
| النطاق | المستأجر، المورد، الصنف |
| التوقيت | عند الإغلاق — Le catalogue déclare ce type « au ferme » ; la table receptions mord en réalité à la saisie, la table purchase_orders au ferme. |
| بدون إعداد | Aucun certificat n’est contrôlé |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
normes | قائمة نصوص | اختياري | OEKO-TEX, BSCI, GOTS |
par_article | منطقي (نعم/لا) | اختياري | true |
tolerance_jours | رقم | اختياري — défaut 0 | 0 |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "certificat_expire",
"scope_type": "tenant",
"params": { "normes": ["OEKO-TEX", "BSCI", "GOTS"], "mode": "avertir" },
"jours": 90
}المرجع المعياري
Oeko-Tex / BSCI / GOTS ; ISO 13485 § 7.4 — informations documentées d’origine externe.
معدّة غير معايَرة equipement_non_etalonne
Refuse un contrôle qualité ou une mesure SPC saisi avec un instrument hors étalonnage.
| النوع | quality_controls, spc_measurements |
|---|---|
| النطاق | المستأجر |
| التوقيت | عند الإدخال |
| بدون إعداد | Aucun instrument n’est contrôlé |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
tables | قائمة نصوص | اختياري | quality_controls |
tolerance_jours | رقم | اختياري — défaut 0 | 0 |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "equipement_non_etalonne",
"scope_type": "tenant",
"params": { "mode": "bloquer" },
"jours": 90
}المرجع المعياري
ISO 9001 § 7.1.5 ; IATF 16949 § 7.1.5.2 — ressources de surveillance et de mesure.
مستند مطلوب قبل الحالة 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.
| النوع | manufacturing_orders, purchase_orders, sales_orders (choisie par le paramètre table) |
|---|---|
| النطاق | المستأجر |
| التوقيت | عند الإغلاق |
| بدون إعداد | Rien n’est contrôlé tant qu’aucune règle complète n’est posée — table, statut et documents sont tous requis |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
table | نص | مطلوب | manufacturing_orders |
statut | نص | مطلوب | in_progress |
documents | قائمة نصوص | مطلوب — fmea_studies, quality_control_plans, document_control | fmea_studies |
statut_document | نص | اختياري — défaut selon le type de document | completed |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "document_requis_avant_statut",
"scope_type": "tenant",
"params": {
"table": "manufacturing_orders",
"statut": "in_progress",
"documents": ["fmea_studies"],
"mode": "bloquer"
},
"jours": 90
}المرجع المعياري
IATF 16949 — PPAP / AMDEC (FMEA) ; ISO 9001 § 8.5.1 — maîtrise de la production et de la prestation de service.
محور تحليلي مطلوب 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).
| النوع | 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 |
|---|---|
| النطاق | المستأجر، العميل، المورّد |
| التوقيت | عند الإغلاق — 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. |
| بدون إعداد | Aucune dimension n’est exigée |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
table | نص | مطلوب | invoices |
statut | نص | اختياري — vide = n’importe quel statut ferme (ignoré sur une ligne) | confirmed |
dimensions | قائمة نصوص | مطلوب — codes dim_dimensions.code | AFFAIRE |
ما يراه المستخدم
{
"code": "dimension_requise",
"params": { "table": "…", "dimensions": "…" },
"message": "renseignez la dimension AFFAIRE avant de passer au statut confirmed."
}HTTP 400 · dimension_requise
المحاكاة
{
"rule_type": "dimension_requise",
"scope_type": "tenant",
"params": { "table": "invoices", "statut": "", "dimensions": ["AFFAIRE"], "mode": "avertir" },
"jours": 90
}المرجع المعياري
Comptabilité analytique standard : dimensions obligatoires par compte/document.
مجموعة محاور ممنوعة 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.
| النوع | les mêmes 28 tables porteuses de dimensions que dimension_requise — ce type n’a aucun paramètre table propre |
|---|---|
| النطاق | المستأجر |
| التوقيت | عند الإدخال |
| بدون إعداد | Aucune combinaison n’est bloquée |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "combinaison_interdite",
"scope_type": "tenant",
"params": { "table": "invoices" },
"jours": 90
}المرجع المعياري
Combinaisons de dimensions interdites (table dim_forbidden).
تأهيل مطلوب 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.
| النوع | manufacturing_operations (CRUD générique) ; mord aussi sur la route dédiée PUT /manufacturing-operations/{id}/operator |
|---|---|
| النطاق | المستأجر |
| التوقيت | عند الإدخال — Mord quand operator_id est posé (affectation), ou quand le statut passe à in_progress avec un opérateur déjà affecté. |
| بدون إعداد | Aucun opérateur n’est contrôlé |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
niveau_min_defaut | رقم | اختياري — défaut 2 ; le seuil posé sur la fiche du poste prime quand il existe | 2 |
exiger_formation_valide | منطقي (نعم/لا) | اختياري | true |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "habilitation_requise",
"scope_type": "tenant",
"params": { "niveau_min_defaut": 2, "exiger_formation_valide": true, "mode": "avertir" },
"jours": 90
}المرجع المعياري
ISO 9001 § 7.2 ; IATF 16949 § 7.2.1 — compétence, sensibilisation et formation.
فصل المهام 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.
| النوع | 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) |
|---|---|
| النطاق | المستأجر |
| التوقيت | عند الإغلاق — Mord aussi à l’approbation (approved_by posé) et à la validation de paiement — pas seulement au passage au ferme. |
| بدون إعداد | Aucun conflit n’est contrôlé |
المعطيات
| المعطى | النوع | مطلوب / افتراضي | مثال |
|---|---|---|---|
conflits | قائمة نصوص | مطلوب — format action_a:action_b | creer_fournisseur:valider_paiement, creer_da:approuver |
tables | قائمة نصوص | اختياري — défaut = toutes les tables éligibles | purchase_orders, payments |
mode | نص | اختياري — bloquer | avertir | avertir |
ما يراه المستخدم
{
"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
المحاكاة
{
"rule_type": "separation_taches",
"scope_type": "tenant",
"params": { "conflits": ["creer_fournisseur:valider_paiement", "creer_da:approuver"], "mode": "avertir" },
"jours": 90
}المرجع المعياري
Matrice de séparation des tâches (contrôle quatre yeux) — pratique d’audit interne standard.
← العودة إلى قواعد العمل والمراقبة
انظر أيضا : حزم حسب القطاع · التشغيل · أمثلة حسب القطاع · القيادة وإشارات الخطر · Copilote · Profils de statuts