قواعد العمل والمراقبة

كيف يرفض النظام قبل الكتابة، وكيف يضبط الاستشاري الحدود والنطاقات، وكيف تُقرأ سجلات التغييرات الحساسة.

المبدأ

AVIA ERP refuse avant d'écrire. Une réception qui dépasse la tolérance autorisée, un document fermé sur une période en clôture, un montant qui dépasse la limite de crédit d'un client : le portail bloque l'opération avant qu'elle touche la base, jamais après coup.

Chaque refus porte un code stable, un message dans la langue de l'utilisateur qui dit le problème et ce qu'il faut faire, et des paramètres exploitables (le seuil dépassé, le champ manquant, la période visée…). La forme exacte est détaillée plus bas sur cette page.

Le consultant qui déploie AVIA ERP paramètre des seuils et des portées — jamais de logique métier écrite en dur. Chaque type de règle reste du code testé ; ce qui change d'un client à l'autre, ce sont les valeurs. Avant d'activer une règle, on la simule sur les documents réels des 90 derniers jours : combien auraient été évalués, combien auraient été bloqués.

En chiffres : 16 types de règles plus le type des seuils de risque, 10 packs prêts à l'emploi (4 par métier, 4 normatifs, plus un pack contrôle de gestion et un pack contrôle interne), des dimensions analytiques (affaire / département / centre de coût) avec dimension exigée et combinaison interdite, et une traçabilité lot/série de la réception jusqu'à la fiche série.

الإعدادات › قواعد العمل

شاشة قواعد العمل

L'écran se trouve dans Paramètres → Système → Règles métier. Il liste les règles actives avec leur type, leur portée, leur cible, leurs paramètres, le moment où elles s'appliquent, leur date de création et leur statut.

شاشة الإعدادات › النظام › قواعد العمل مع قاعدة تسامح فائض الاستلام بنسبة 5%

قائمة القواعد النشطة: النوع، النطاق، الهدف، المعطيات، وقت التطبيق والحالة.

إنشاء قاعدة

Le formulaire de création est généré depuis le catalogue des types disponibles (GET /api/v1/rules/types) : choisir un type affiche automatiquement ses portées possibles (locataire, fournisseur, article ou client selon le type) et ses paramètres propres.

المحاكاة قبل التفعيل

Le bouton Simuler sur les 90 derniers jours rejoue les paramètres saisis contre les documents réels de la période, sans rien modifier, et affiche le nombre de documents évalués et combien auraient été bloqués.

نموذج قاعدة جديدة مع نتيجة محاكاة على 90 يوما

قبل تفعيل أي قاعدة، تُحاكى على المستندات الفعلية لآخر 90 يوما.

التعطيل، لا الحذف أبدا

Le bouton bascule appelle un simple PUT qui passe le champ active à faux : la règle disparaît du contrôle mais reste dans l'historique, réversible à tout moment. Une règle n'est jamais supprimée.

Un filtre ?module= restreint la liste à un module ; c'est ce que suit le lien Règles de ce module depuis Paramètres → Achats.

حزم حسب القطاع

Des packs de règles prêtes à l'emploi existent par métier (textile, mécanique de précision, câblage et métallerie, transport et logistique) via GET /api/v1/rules/packs. On peut les simuler puis les appliquer : les règles sont insérées désactivées, à activer une par une après vérification. Appliquer un pack déjà appliqué ne duplique rien.

Simulation du pack Socle ISO 9001 sur Paramètres › Règles métier, avec le résultat par règle

Simuler un pack avant de l’appliquer : évalués / bloqués par règle, sur les 90 derniers jours.

الأنواع المتاحة

فهرس أنواع القواعد

Six types de règles couvrent les points de contrôle courants. Pour chacun, ce tableau donne la portée possible, le moment où la règle s'applique et surtout le comportement quand aucune règle n'est paramétrée pour ce type — le comportement par défaut, celui d'un tenant qui n'a encore rien configuré.

النوعالمعطياتالنطاقالتوقيتبدون إعداد
تسامح فائض الاستلام
sur_reception
pct_max, abs_max, illimiteeالمستأجر، المورد، الصنفعند الإدخاللا يُطبَّق أي حد
حقل مطلوب عند الحالة
champ_requis_statut
table, statut, champsالمستأجرعند الإغلاقلا حقل مطلوب
فترة مغلقة
periode_close
tables, bloquer_closingالمستأجرعند الإغلاقلا فترة مراقبة
سقف ائتمان العميل
limite_credit_client
tolerance_pct, inclure_commandes, modeالمستأجر، العميلعند الإغلاقلا تحقق، حتى لو كان سقف الائتمان محددا
المصادقة حسب المبلغ
approbation_montant
paliers seuil:rôle, modeالمستأجر، الموردعند الإغلاقيُطبَّق الجدول التاريخي لطلبات الشراء (5000 ← المشتريات، 50000 ← إدارة المشتريات)
مسار موافقة مطلوب
workflow_requis
tables, modeالمستأجرعند الإغلاقلا مصادقة مطلوبة

Pour l'approbation par montant, les paliers se déclarent en seuil:rôle, par exemple 5000:achat, 50000:directeur_achat. Sans règle paramétrée, c'est la grille historique des demandes d'achat qui continue de s'appliquer : 5 000 déclenche une approbation achat, 50 000 une approbation direction achat. La période close dépend des périodes fiscales paramétrées en Finance ; le workflow requis ne se déclenche que si un workflow d'approbation est réellement actif pour le document — sans workflow actif, le ferme n'est pas affecté.

سجل التعديلات

ما الذي يُسجَّل

Chaque changement sur un champ déclaré sensible est journalisé : champ, ancienne valeur, nouvelle valeur, auteur et date. Le mécanisme s'appuie sur une table de déclaration (sensitive_fields) et une table de journal (field_changes), alimentées par un déclencheur générique — un champ nouvellement déclaré est journalisé sans code applicatif supplémentaire.

النوعالحقل
الموردونالحساب البنكي، البنك، SWIFT/BIC، سقف الائتمان، الحظر، شروط وطريقة الدفع
العملاءسقف الائتمان، الحظر، شروط وطريقة الدفع
الأصنافسعر التكلفة، سعر البيع، سعر الشراء، التكلفة المتوسطة المرجحة، آخر سعر شراء، الحظر
صلاحيات المستخدمقراءة، إنشاء، تعديل، حذف، الوحدة
الملفات الشخصيةالدور، القسم، نشط أم لا

تصريح حقل إضافي

Un consultant déclare un champ additionnel à journaliser via la ressource sensitive-fields, sur la page sœur Champs journalisés (à côté de Règles métier dans Paramètres → Système) : choisir la table (fournisseurs, clients, articles, employés, profils, droits utilisateur) et le champ. Un champ déclaré peut aussi être désactivé sans perdre l'historique déjà écrit.

Écran Paramètres > Champs journalisés, section Fournisseurs, avec les champs banque, blocage, limite de crédit et paiement, chacun actif par défaut

Écran Champs journalisés : une ligne par champ déclaré, table par table, avec son bouton et sa date de déclaration.

La lecture se fait dans l'onglet Historique de la fiche fournisseur, client ou article.

علامة تبويب السجل في بطاقة المورد، مع إخفاء الحساب البنكي عدا آخر 4 أرقام

كل تعديل على حقل حساس يحتفظ بالقيمة القديمة والجديدة والمنفذ والتاريخ.

Les valeurs bancaires (RIB, IBAN) restent masquées sauf les 4 derniers caractères. Une valeur vide et une valeur absente (NULL) sont traitées comme équivalentes pour ne pas journaliser un faux changement, et l'auteur est posé sur tous les chemins d'écriture, y compris les imports et l'API.

مسار المستند

لوحة مسار المستند

« D'où vient cette facture ? » Le panneau Flux du document répond en remontant la chaîne des conversions : devis, commande de vente, commande d'achat, réception, facture. Chaque conversion (devis → commande, devis → facture, commande → ordre de fabrication, demande d'achat → commande, réception → facture fournisseur…) ajoute un maillon dans la table document_links, exposée par GET /api/v1/document-flow/{type}/{id}.

لوحة مسار المستند على فاتورة، تُظهر عرض السعر الأصلي الذي حُوِّلت منه

يتتبع المسار من عرض السعر إلى الفاتورة؛ كل تحويل يضيف حلقة.

Le même flux apparaît en aperçu (factbox) sur les listes de factures, de fournisseurs et de commandes d'achat quand une ligne est sélectionnée.

الصلاحيات حسب الإجراء والقراءة

تفعيل الصلاحيات دون مفاجآت

Deux réglages contrôlent l'application des droits : AUTH_GUARD_MODE pour les actions d'écriture et AUTH_GUARD_READ_MODE pour la lecture, chacun sur trois valeurs : off (aucun contrôle), observe (le refus est journalisé mais laissé passer) et enforce (le refus bloque réellement). Les deux valent off par défaut.

L'armement se fait module par module via AUTH_GUARD_ENFORCE_MODULES, une liste partagée entre écriture et lecture. Le volume de lecture observée est échantillonné (AUTH_GUARD_READ_LOG_SAMPLE, 100 par défaut) pour ne pas saturer les journaux.

المراقبة، التصحيح، التفعيل

GET /api/v1/admin/auth-guard/observations renvoie le mode courant, le mode lecture, les modules déjà armés, et le compte des refus qui seraient survenus par module et par action. La procédure recommandée : observer une période représentative, corriger les rôles qui manquent d'un droit légitime, puis armer le module.

Un refus de droit, une fois armé, répond 403 avec le code droit_insuffisant — actionnable, contrairement à une simple erreur générique. Un module hors abonnement répond 404 : l'utilisateur ne sait même pas qu'il existe.

ماذا يقول الرفض

شكل الرفض

Tout refus prend la même forme : { code, params, message }. Le message est déjà traduit dans la langue de l'utilisateur (français, anglais ou arabe) ; params porte les valeurs utiles à l'affichage ou à un correctif (seuil, champ, période…).

Exemple de refus
{
  "code": "limite_credit_depassee",
  "params": { "client": "CL-00042", "limite": 15000, "encours": 15820 },
  "message": "Le client CL-00042 dépasse sa limite de crédit de 15 000 TND (encours 15 820 TND)."
}
الرمزالمعنى
ligne_sans_prixسطر في المستند بدون سعر
ligne_sans_quantiteسطر في المستند بدون كمية
sur_receptionالكمية المستلمة تتجاوز التسامح المسموح به
referentiel_bloqueالطرف أو الصنف المعني محظور
periode_closeالفترة المحاسبية المعنية قيد الإغلاق
limite_credit_depasseeالعميل تجاوز سقف ائتمانه
approbation_requiseالمبلغ يتطلب مصادقة قبل الإغلاق
workflow_requisمسار موافقة نشط بدون نسخة معتمدة
document_figeالمستند مجمّد ولا يمكن تعديله بعد الآن
totaux_incoherentsمجاميع المستند لا تطابق سطوره
document_introuvableالمستند المشار إليه غير موجود أو لم يعد متاحا
droit_insuffisantالمستخدم لا يملك صلاحية تنفيذ هذا الإجراء

Le copilote lit ce même refus structuré pour l'expliquer en langage courant et guider l'utilisateur vers la correction — changer la quantité reçue, choisir une autre période, demander une approbation.

Sept pages sœurs vont plus loin : le catalogue complet des types (une fiche par type — paramètres, refus, simulation, référence normative), les packs par métier (composition règle par règle et checklist consultant par pack), la procédure de mise en service sur un nouveau locataire (droits, condition et gravité, champs sensibles, signaux de risque, le copilote), des exemples par secteur (six parcours avec les clients réels nommés dans les packs — textile, mécanique de précision, câblage/métallerie, transport et logistique, contrôle de gestion, contrôle interne), le pilotage (centres de rôle, factbox, centre d'actions, signaux de risque, rapport d'affaire, copilote), le copilote (expliquer un refus, procédures guidées, actions confirmées, ce qu'il ne fait jamais), et les profils de statuts (restreindre sans élargir, un rôle par transition, simulation).

Consultez Administration pour les rôles utilisateur et API & Intégrations pour l'authentification.