🏗️

موديول الإنتاج الحالي في Moon ERP (Existing Production Module)

يوجد بالفعل موديول Modules\Production داخل النظام، لكنه نواة مبدئية صغيرة (Minimum Viable Module) تغطي تعريف مراكز الإنتاج وقوائم المكونات وأوامر التشغيل بدورة حياة أساسية وحسابات تكلفة دفترية فقط — دون أي ترحيل فعلي للمخزون أو القيود المحاسبية، ودون أحداث (Events) أو خدمات تكامل مع باقي الموديولات.

نظرة عامة على النضج والاستخدام

الموديول قائم على نفس بنية باقي الموديولات (BaseModel مع company_id، فصل الفروع، وترقيم المستندات عبر SequenceService)، وله واجهة Angular كاملة وصلاحيات مُسجَّلة في Core. لكنه غير مُفعَّل فعلياً في الإنتاج: لا يوجد بيانات أولية (Seeder فارغ)، ولا اختبارات، ولا أي موديول آخر يشير إليه.

7جداول (Tables)
7نماذج (Models)
4Controllers
19صلاحية (Permissions)
0أحداث / مستمعين
0اختبارات / Seeders فعّالة

الجداول الموجودة فعلياً

الجدول (Table)الغرضأعمدة لافتة
production_centersمراكز الإنتاج (آلة/عمالة/مختلط)type, capacity_per_hour, cost_per_hour, overhead_rate, account_id
bill_of_materialsقائمة المكونات للمنتجversion, quantity, is_default, standard_cost
bom_componentsمكونات قائمة الـBOMquantity, waste_percentage, cost_per_unit
bom_operationsعمليات الـBOM (التوجيه المبدئي)production_center_id, sequence, setup_time_minutes, run_time_minutes
production_ordersأوامر التشغيلorder_number, status, planned/produced/scrap_quantity, تكاليف مخططة/فعلية
production_order_materialsمواد أمر التشغيل والمستهلك منهاplanned_quantity, consumed_quantity, actual_cost
production_order_operationsعمليات أمر التشغيلplanned/actual_setup_time, planned/actual_run_time, status

ملاحظة: ترحيل الجداول مكتوب بأسلوب دفاعي عبر ثلاث هجرات (2026_03_31_000001_create_production_tables ثم ...000002_ensure... ثم ...000003_force_create...) كلها بشرط if (! Schema::hasTable(...))، وهو ما يدل على مشاكل سابقة في تطبيق الهجرات (استنتاج).

دورة حياة أمر التشغيل المُطبَّقة

  1. draft — إنشاء الأمر وترقيمه عبر SequenceService('production','order')، وتعبئة المواد/العمليات تلقائياً من الـBOM إن وُجد.
  2. confirmed — عبر confirm (يُسمح فقط من draft).
  3. in_progress — عبر start؛ يسجّل actual_start_date.
  4. أثناء التشغيل: consume (تسجيل استهلاك المواد) وrecord-output (تسجيل الكمية المنتجة والهالك).
  5. completed — عبر complete؛ يحسب التكاليف الفعلية من المواد والعمليات.
  6. cancelled — عبر cancel (من draft أو confirmed فقط).

ما الذي يرحّله فعلياً للمخزون والمحاسبة؟

التكامل والصلاحيات

تغطية مفاهيم المواصفة (Spec Coverage)

مفهوم المواصفةالحالةملاحظة
BOM Versionsجزئيعمود version نصّي فقط، بلا منطق إصدارات/تفعيل/تأريخ.
Routing / Operationsجزئيbom_operations + production_order_operations بتسلسل وأزمنة، بلا توجيه متقدم.
Work Centersموجودproduction_centers بأنواع وطاقة وتكلفة/ساعة.
Tools / Moldsغير موجودلا جداول للعدد/القوالب.
MRP / التخطيطغير موجودلا تخطيط احتياجات مواد ولا اقتراح أوامر شراء/تشغيل.
Confirmations / Shop Floorجزئيconsume وrecord-output فقط، بلا محطات/تأكيدات تفصيلية.
Costingجزئيحساب مخطط/فعلي وانحراف دفترياً، بلا ترحيل محاسبي فعلي.
Stock Postingغير موجودلا ترحيل صرف مواد ولا استلام منتج تام في المخزون.

التوصية

الموديول الحالي نواة هيكلية نظيفة ومتوافقة مع «وصفة» النظام لكنها سطحية وظيفياً وغير مستخدمة في الإنتاج (لا بيانات، لا اختبارات، لا مراجع خارجية). التوصية: التوسعة في مكانه (Extend in place) بالبناء فوق الجداول والصلاحيات والواجهة القائمة — لا إعادة بناء كاملة — مع إضافة الطبقات الناقصة (ترحيل المخزون، القيود المحاسبية عبر CreateJournalEntry، الأحداث/المستمعين، طبقة الإصدارات، MRP، والعدد/القوالب). مخاطر الترحيل شبه معدومة لعدم وجود بيانات أو ارتباطات قائمة (استنتاج).