إجابة سؤالك «أنا تايه — عايز كل العمليات واضحة وشغالة وفي انسيابية»: التشخيص الكامل لمكان الخلل، مقارنة بـ Odoo وSAP وKatana وMRPeasy وDynamics، ومصفوفة الأدوار، وخطة تنفيذ مرحلية تحوّل الموديول من «شاشات شغالة» إلى «نظام مترابط يقودك».
راجعنا الـ17 شاشة كلها والـ60+ نقطة API. النتيجة: كل شاشة شغالة لوحدها، لكن:
/factory/orders/:id أصلاً — فلا يمكن لأي شاشة (MRP، الترمينال، التقارير، الدُفعات، الإشعارات) أن «تفتح الأمر». دي أم الفجوات وسبب معظم الطرق المسدودة.اللي حصل معاك بالتسلسل: أصدرت أمر الطقم ← النظام حجز مكونات غير موجودة (سليم) ← صرفت المواد ← النظام سمح بصرف قطع رصيدها صفر لأن المخزن مفعّل فيه «السماح بالسالب» ← التكلفة طلعت صفر والأرصدة بالسالب. ثلاث بوابات كانت هتمنع ده في الأنظمة العالمية:
| البوابة | كيف تعمل في SAP/Odoo/Katana | عندنا |
|---|---|---|
| ١. ترتيب الإصدار بعمق البوم (Low-Level Code) | الـMRP يخطط ويُصدر الأعمق أولاً؛ أمر الأب يفضل «منتظراً» حتى تجهز مكوناته | غير موجود |
| ٢. فحص توفر المواد عند الإصدار/الصرف (ATP) | SAP يمنع الإصدار بمكونات ناقصة؛ Odoo يعرض الأمر «Waiting» برمز رمادي؛ Katana إشارات مرور لكل مكون (متاح/متوقع/غير متاح) | جزئي — الصرف يفحص لكن مخزنك كان مفعّلاً فيه السالب فعدّى |
| ٣. الربط (Pegging) — أي أمر يغذي أي أمر | SAP order report وBC order tracking: شجرة الطلب ← أمر الطقم ← أوامر القطع ← أوامر الشراء | موجود في الباك إند فقط — جدول pegging يُكتب مع كل MRP ولا تعرضه أي شاشة! |
المصدر: Odoo Manufacturing وKatana وMRPeasy وSAP PP/S4HANA وDynamics 365 BC (بحث حي).
| # | الخطوة القياسية | عندنا | الفجوة |
|---|---|---|---|
| 1 | تجميع الطلب (مبيعات + تنبؤ + حدود إعادة طلب) | جزئي | أوامر البيع المؤكدة فقط؛ لا تنبؤات |
| 2 | جدول الإنتاج الرئيسي MPS | باك إند فقط | شاشة MPS موجودة لكن «اعتماد» الجدول طريق مسدود — لا يوصلك للـMRP |
| 3 | تشغيل MRP بانفجار متعدد المستويات | يعمل ✓ | المحرك سليم (انفجار + تجميع عرض + إزاحة مهل) |
| 4 | مراجعة المخطِّط (استثناءات + تغطية مواد) | جزئي | تبويب استثناءات للقراءة فقط — بلا أي إجراء سياقي |
| 5 | تحويل المقترحات (فردي + جماعي) | فردي فقط | تحويل واحد-واحد — مؤلم لما الـMRP يقترح 8 أوامر للدورة |
| 6 | إصدار متعدد المستويات: الأعمق أولاً | مفقود | أكبر فجوة — سبب مشكلتك مباشرة |
| 7 | فحص توفر المواد + تجهيز/Staging | جزئي | فحص عند الصرف فقط؛ لا «قائمة نواقص» ولا إشارات مرور جاهزية |
| 8 | جدولة السعة وقائمة الإرسال للمراكز | جزئي | CRP خريطة حرارية للقراءة فقط؛ لا جانت ولا سحب-وإفلات |
| 9 | تنفيذ المشغّل (طابور مركزه فقط، بالأولوية) | يعمل ✓ | الترمينال موجود — يحتاج التقسية (§٢-🅱) |
| 10 | تأكيدات العمليات (وقت/كمية/هالك/درجات) | يعمل ✓ | شامل (حتى عكس التأكيد والدرجات) — يحتاج ربط شاشات فقط |
| 11 | استلام الإنتاج التام (+ دُفعات وسلالة) | يعمل ✓ | الاستلام متعدد الدرجات في الباك إند ولا تعرضه الواجهة |
| 12 | التكاليف (WIP فعلي ضد معياري + انحرافات) | يعمل ✓ | قوي — ينقصه رابط القيود من الأمر وworkflow للانحرافات |
| 13 | الإقفال (تسوية + منع قيود لاحقة) | يعمل ✓ | — |
| الشاشة | عند مين | مكافئها في خطتنا |
|---|---|---|
| لوحة أولويات الأوامر بإشارات مرور توفر المواد | Katana Make screen | المرحلة ١ — عمود «الجاهزية» في قائمة الأوامر + لوحة الأمر |
| لوحة قيادة أمر الإنتاج (Order Cockpit) | SAP Fiori Manage Production Orders | المرحلة ١ — صفحة /factory/orders/:id |
| قائمة النواقص (Missing Parts List) | SAP CO24 | المرحلة ٢ — تبويب «نواقص المواد» في قمرة التخطيط |
| شجرة الطلب ← الأوامر (Pegging / Order tracking) | SAP + Dynamics BC | المرحلة ١ — موجودة في الباك إند! نعرضها فقط |
| جدول إنتاج جانت بالسحب | MRPeasy + Odoo Work Orders Planning | المرحلة ٢ — نسخة مبسطة (خط زمني للحملات على المراكز) |
| كشك المشغّل / تابلت | Odoo Shop Floor + MRPeasy kiosk | موجود (الترمينال) — تقسية بالمرحلة ٣ |
| العطل | الأثر |
|---|---|
| عدّادات الحالات في قائمة الأوامر تحسب الصفحة الحالية فقط (25 صفاً) بينما الإجمالي من السيرفر | أرقام متناقضة فوق الجدول بمجرد تجاوز 25 أمراً |
| تقارير الإنتاج لسه بتتكلم بمفردات الحالات القديمة (draft/confirmed/in_progress) بينما الأوامر على دورة الحياة الجديدة | تقرير الملخص يُسقط أوامر فعلية من التوزيع |
| زر «بدء» في الأوامر كود ميت (canStart ترجع false دائماً) لكن كتلته باقية في القالب مرتين | تشويش — يلمح بوجود خطوة غير موجودة |
| تخصيص الدُفعات في حوار الصرف يطلب كتابة رقم الدُفعة الداخلي يدوياً في حقل رقمي | غير قابل للاستخدام عملياً (اتعوّض مؤقتاً بالـFEFO التلقائي) |
| ~10 رسائل خطأ احتياطية إنجليزية صلبة غير مترجمة (Operation failed…) عبر 5 شاشات + لاحقة «د» العربية الصلبة في مسارات التشغيل | كسر تجربة اللغة |
| عند تغيير المنتج في حوار الأمر، قائمة البومات لا تُفلتَر على بومات المنتج المختار | يمكن اختيار بوم منتج آخر بالغلط |
| حالة «منتظر» في الترمينال تأخذ نفس اللون الأخضر لحالة «جاهز» | المشغّل لا يميز الجاهز من المنتظر |
| القدرة | القيمة |
|---|---|
GET mrp/peggings — شجرة «مين بيغذي مين» تُكتب مع كل تشغيلة MRP | هي ذاتها إجابة سؤالك «أصنع إيه الأول» — تتعرض كشجرة في لوحة الأمر وقمرة التخطيط |
الاستلام متعدد الدرجات receive-fg lines[] مع grade_code | حوار الاستلام الحالي يستلم درجة واحدة فقط — الفرز درجات موجود في الباك إند |
أمر التسوية الشهرية للأوفرهيد production:settle-applied-overhead | مبني ومُختبَر لكنه غير مجدول ولا له زر — قيد الإقفال الشهري معطّل عملياً |
| حدث «انتهاء عمر العدة» ToolLifeExceeded | يُطلق في الفراغ — لا مستمع ولا إشعار صيانة |
رايل الاستهلاك القديم orders/{id}/consume ما زال حياً بجانب الرايل الصحيح | ثغرة تناسق: استهلاك بلا حركة مخزون ولا قيد — يُقفل |
| workflow الانحرافات أحادي الاتجاه (عرض فقط — لا إقرار/تسكين/إغلاق تحقيق) | محاسب التكاليف لا يستطيع «قفل» انحراف بعد معالجته |
| الدور | مسؤوليته | صلاحياته (من الموجود) | شاشاته الرئيسية |
|---|---|---|---|
| مخطط الإنتاج | من الطلب للخطة: MPS، تشغيل MRP، مراجعة الاستثناءات، تحويل المقترحات، إعادة الجدولة قبل الإصدار | mrp.view/run/convert + orders.view/create/update + boms.view + reports.view | قمرة التخطيط، MPS، CRP، الأوامر (قراءة) |
| مدير/مشرف الإنتاج | من الخطة للتنفيذ: إصدار وفك حجز، توزيع العمل على المراكز، اعتماد الهالك، متابعة اللوحة، الإقفال | orders.* (كلها) + shopfloor.supervise + confirmations.view + consume + reports.view | الأوامر، اللوحة الحية، التأكيدات |
| مشغّل الماكينة | طابور مركزه فقط: بدء/إيقاف/إنهاء، تسجيل كمية وهالك — بلا أي تكاليف أو تخطيط | shopfloor.operate + confirmations.create فقط | الترمينال فقط |
| أمين المخزن | جانب المواد: الصرف على الأوامر، استلام الإنتاج التام، الإرجاعات | consume + orders.view + (صلاحيات المخازن inventory.*) | الأوامر (صرف/استلام)، المخازن |
| مفتش الجودة يحتاج صلاحيتين جديدتين | الفحص أثناء وبعد التشغيل، اعتماد الدرجات، حجز/رفض دُفعات | confirmations.view + batches view/update + production.quality.inspect وproduction.quality.disposition (جديدتان) | التأكيدات، الدُفعات |
| محاسب التكاليف | خط النقود: مراجعة WIP والقيود، التكلفة المعيارية وroll-up، تحليل وإقفال الانحرافات، تسوية الأوفرهيد | costing + reports.view + orders.view (قراءة فقط للباقي) | التكاليف المعيارية، الانحرافات، التقارير |
التنفيذ: 6 أدوار تُزرع seed جاهزة على شاشة الأدوار الحالية (نفس آلية أدوار المعمل) + صلاحيتا الجودة الجديدتان + إخفاء عناصر القائمة الجانبية حسب الدور — فالمشغّل يفتح التابلت يلاقي الترمينال وبس.
/factory/orders/:id (والنافذة الحالية تبقى للعرض السريع):
| # | القرار | التوصية |
|---|---|---|
| ١ | تنظيف PRD-2026-00002: مسح سجل الصرف الوهمي + إرجاع الأمر «مُصدر» + إعادة الحجوزات + إقفال «السماح بالسالب» على مخزن المصنع | نفّذ — الأمر حالياً بحالة ملوثة (استهلاك بتكلفة صفر) |
| ٢ | اعتماد الخطة أعلاه وترتيب البدء | الإصلاحات الفورية + المرحلة ١ فوراً (هما اللي يحلوا «التوهان»)، والباقي بالترتيب |
| ٣ | تطوير خامة العميل الجزئية (الخيار أ المعتمد سابقاً) | يدخل بعد المرحلة ٢ (لا يحجب الترتيب) |
| ٤ | توحيد تعريف العمليات (مسار التشغيل هو المعتمد، وتبويب عمليات البوم يُخفى أو يُشار له «مرجعي») | المسار هو المعتمد — نوضّحها في المرحلة ١ |
أُعدّ هذا التقرير بتحليل خماسي متوازٍ (مراجعة 17 شاشة واجهة، 60+ نقطة API باك إند، تشخيص حي بالـAPI، بحث مقارن في 5 أنظمة عالمية، مراجعة UX من 25 ملاحظة) — قابل للتحديث مع كل مرحلة تنفيذ.