اعمل محرك قواعد (Rules) للعمولة بدل ما تثبتها داخل المنتج أو الفاتورة. كل قاعدة تقول:
- أين تُطبَّق؟ (على الفاتورة كلها / على منتج / على تصنيف / على مندوب)
- كيف تُحسب؟ (قيمة ثابتة / نسبة من السعر / نسبة من الربح / من الربح الإضافي)
- متى تُطبَّق؟ (تواريخ، حد أدنى للربح/قيمة الفاتورة، فروع معيّنة…)
- من يأخذها؟ (مندوب واحد، توزيع بين فريق…)
- هل تتراكم مع غيرها أم تُقصي غيرها؟ (Stack vs First-match)
طبقات التطبيق (من الأضيق للأوسع)
- استثناءات محددة (منتج/باركود معيّن بلا عمولة)
- قواعد المنتج
- قواعد التصنيف
- قواعد المندوب/الفريق
- قواعد الفاتورة العامة
- قاعدة افتراضية (Fallback) إن لم تنطبق أي قاعدة
كل قاعدة لها أولوية (priority). إمّا:
- Exclusive: أول قاعدة مطابقة “توقف” البحث.
- Stackable: تُجمع العمولات من القواعد المتعددة (مع سقف/حد أقصى لو لزم).
أنواع الحساب الشائعة
- ثابت لكل بيع (على المنتج أو الفاتورة)
- نسبة من سعر البيع
- نسبة من الربح (انتبه لتعريف “الربح”: آخر تكلفة؟ متوسط؟ FIFO؟)
- ربح إضافي (فوق سعر قياسي/حد مستهدف)
- قائمة بيضاء/سوداء لمنتجات أو تصنيفات معيّنة
نقاط حاسمة تجعل النظام “سلس وذكي”
- تعريف الربح واحد وواضح (سياسة تكلفة: AVG/Last/FIFO) كي لا تتغيّر العمولة بتغيّر طريقة التكلفة.
- خصومات وضرائب: قرّر هل تُحتسب النسبة قبل الخصم أم بعده؟ قبل الضريبة أم بعدها؟ ثبت القاعدة.
- العملات: إمّا تتحاسب العمولة بعملة الفاتورة مع تحويل موحّد، أو بعملة ثابتة للمندوب. المهم قاعدة ثابتة.
- الإرجاع/الإلغاء: عمولة سالبة أو تسوية في دورة لاحقة — لازم منطق واضح.
- التواريخ والحملات: القاعدة تقبل نافذة زمنية لسهولة العروض المؤقتة.
- التقارير والأثر الرجعي: خزّن “ما هي القاعدة التي طُبّقت ولماذا؟” لأجل الشفافية والنزاعات.
كيف تجمع كل الحالات التي ذكرتها؟
- منتج عليه عمولة/منتج لا: قاعدة على المنتج أو استثناء.
- عمولة ثابتة: نوع “ثابت” (على المنتج أو على الفاتورة).
- نسبة من الربح: نوع “profit-based” ويعتمد على سياسة التكلفة.
- على كل فاتورة بيع: قاعدة “invoice” (ثابتة أو نسبة من الإجمالي).
- على أصناف محددة: قواعد على التصنيف (Category) أو قائمة منتجات.
- على الربح الإضافي: قاعدة “extra_profit” (بيع − سعر قياسي) × نسبة.
قرار التشغيل (Flow مختصر)
- اجمع القواعد النشطة المطابقة للسياق (فرع/تاريخ/مندوب).
- رتّبها حسب الأولوية.
- طبّق إمّا أول قاعدة فقط أو اجمع القواعد حسب نوعها.
- احترم السقوف (Cap) وحدود التراكم.
- خزّن نتيجة الحساب + هوية القاعدة.
لو أردتها “سهلة الاستخدام” لمالك النظام:
- شاشة بسيطة لإنشاء قاعدة: نطاق → طريقة حساب → شروط → أولوية → تراكم/إقصاء.
- زر تفعيل/تعطيل + نافذة زمنية + محاكٍ سريع (تجربة على فاتورة افتراضية لتبيان النتيجة).
