🗺️

خريطة البناء: المواصفة على Moon ERP كياناً بكيان (Spec → Moon ERP Mapping)

هذا القسم هو القرار الهندسي الحاسم: لكل كيان من كيانات النموذج الموحّد في المواصفة (27 كياناً في الملف 06) حُسم أحد ثلاثة خيارات — جدول جديد بادئته mfg_ داخل الوحدة، أو إعادة استخدام موديل قائم في Moon ERP بالاسم، أو توسعة جدول قائم في وحدة الإنتاج الحالية. النتيجة: لا نبني ما هو مبني، ولا نرمم ما يجب بناؤه من جديد.

القرار الأول والحاسم: توسعة Modules/Production في مكانها — لا وحدة جديدة

بعد تدقيق كامل للوحدة الحالية (التقرير 10)، القرار هو EXTEND in place وليس إنشاء Modules/Manufacturing موازية. الأسباب:

قاعدة التسمية: الجداول السبعة القديمة تحتفظ بأسمائها، وكل جدول جديد يأخذ البادئة mfg_ وفق وصفة الوحدات السريرية الموثقة. بادئة الصلاحيات تبقى production.* وتُسجَّل كمساهم في Core PermissionDependencyRegistry تماماً كما تسجل وحدة المختبرات lis.

مسار ترحيل الجداول السبعة الحالية

الجدول الحاليالمسار
production_centersتوسعة → يصبح Work_Center الكامل (ربط مركز تكلفة، طاقة فعلية، تقويم، معدلات تكلفة، labor_calc)
bill_of_materialsتوسعة → BOM_Header بإصدارات وتواريخ سريان ودورة حياة (تفعيل BomStatus المعلن وغير المستخدم)
bom_componentsتوسعة → BOM_Line (نوع ومستوى الصرف، ربط بعملية التشغيل، بدائل عبر mfg_bom_substitutes)
bom_operationsإهلاك وترحيل: مسار التشغيل يصبح كياناً مستقلاً مُصدَّراً (mfg_routing_headers/operations)؛ تُنسخ الصفوف إلى مسار افتراضي نشط لكل منتج، ثم يُجمَّد الجدول ويُحذف بعد دورة إصدار
production_ordersتوسعة → Production_Order_Header بآلة حالات موسعة وحقول التجميد والتصنيع بالأجرة
production_order_materialsتوسعة → Order_Component (هو ذاته مخزن اللقطة المجمدة للمكونات)
production_order_operationsتوسعة → Order_Operation (سطح طابق المصنع الحي: حالة العملية، المؤكِّد، الكميات)
27كيان مواصفة محسوم
24جدول جديد mfg_*
6جداول قائمة تُوسَّع
10+موديل قائم يُعاد استخدامه

جدول القرارات الكامل — كياناً بكيان

كيان المواصفةالقرارالجدول/الموديل في Moonملاحظات
البيانات الرئيسية (Master Data)
Item (الصنف)REUSECore Product / ProductVariant + product_unitsالصنف لا تملكه وحدة التصنيع أبداً. تحويلات وحدات القياس — فجوة في المواصفة — محلولة أصلاً بـ unit_groups/units/product_units. حقول التصنيع للصنف تذهب لجدول الامتداد (الصف 10) وليس لتضخيم products
BOM_HeaderEXTENDbill_of_materialsإضافة bom_type {Production, Engineering, Phantom}، حالة {Draft, Active, Inactive, Obsolete}، تواريخ سريان، مُعتمِد. قاعدة: نسخة نشطة واحدة لكل منتج في نافذة السريان
BOM_LineEXTENDbom_componentsإضافة issue_type/issue_level/operation_seq؛ نسبة الهالك موجودة (waste_percentage)؛ البدائل في جدول ابن جديد mfg_bom_substitutes؛ التعدد المستوى بالتفجير التكراري خدمياً دون تغيير مخطط
Routing_HeaderNEWmfg_routing_headersمسار تشغيل مستقل مُصدَّر بنوع {Production, Repair, Inspection} ونطاق حجم دفعة وتواريخ سريان — يحل محل ربط العمليات المباشر بقائمة المواد
Routing_OperationNEWmfg_routing_operationsأرقام عمليات بمضاعفات 10، cavity_count افتراضي 1 (مبدأ العمومية)، أزمنة تجهيز/تشغيل/انتظار/نقل، علم الفحص، مهارة مطلوبة
Work_CenterEXTENDproduction_centersالإضافة الأهم: cost_center_id إلى Accounting cost_centers (واجهة الإنتاج مع المحاسبة — مفقودة اليوم)؛ طاقة فعلية = يومية × مضاعِف × كفاءة × استغلال؛ labor_calc {Hourly, PieceRate}؛ عمود cost_driver {LaborHours, MachineHours, DirectMaterialCost, UnitsProduced} — مقام معدل تحميل الأعباء يسكن هنا لكل مركز عمل؛ عمود budgeted_monthly_volume كأساس حجم الموازنة لانحراف FOVV؛ ربط تقويم عمل. أعمدة المعدلات والطاقة والمُسبّب تُجدول في المرحلة 2 والتقويم في المرحلة 4 (المرحلة 1 تضيف cost_center_id فقط)
Tool / Mold (العُدّة/القالب)NEWmfg_toolsكيان جديد كلياً (غير موجود اليوم): دورات عمر، عداد دورات، حالة {Available, Mounted, Maintenance, Retired}؛ ربط cmms_assets للصيانة الوقائية بالعداد، وربط fixed_asset_id بسجل الأصول الثابتة في المحاسبة (موجود ومتحقق منه: جدول fixed_assets وخدمة FixedAssetService وقيود إهلاك DepreciationEntry) — المطلوب الجديد فقط: طريقة إهلاك بالاستخدام UnitsOfProduction (الطرق الحالية: قسط ثابت/متناقص/مُعجَّل) وتوليد قيد الإهلاك من قراءات العداد
التخطيط (Planning) — طبقة جديدة بالكامل
MPS_HeaderNEWmfg_mps_headersخطة رئيسية بفترات {Day, Week, Month} وأسوار تجميد؛ نطاق الفرع عبر Core DataScope
MPS_LineNEWmfg_mps_linesالطلب المؤكد يُسحب من Sales sales_orders عبر Action؛ التنبؤ — فجوة بالمواصفة — يُدخل يدوياً/استيراداً في الإصدار الأول
Item_MRP_SettingsNEWmfg_item_mrp_settingsجدول امتداد 1:1 فوق products (نمط AccBpExt): نوع الشراء/التصنيع، ملكية المادة، طريقة التكلفة، قاعدة تحجيم الدفعات، مخزون أمان، زمن توريد
MRP_Planned_OrderNEWmfg_mrp_runs / mfg_mrp_planned_orders / mfg_mrp_exceptionsمخرجات عابرة تُعاد كل تشغيلة؛ التثبيت: أمر إنتاج مخطط → production_orders، وأمر شراء مخطط → Purchases purchase_requests عبر Action جديد يُستخلص CreatePurchaseRequest (التحويل لأمر شراء موجود أصلاً)؛ كل أمر مخطط يحمل source_demand_id الذي يعتمد عليه جدول الربط Pegging
CRP_LoadNEWmfg_crp_loadsحمل مقابل طاقة لكل مورد {Machine, Tool, Labor}؛ يتطلب تقويم عمل جديد mfg_work_calendars (فجوة مواصفة) مع إعادة استخدام ورديات HRM
التنفيذ (Execution)
Production_Order_HeaderEXTENDproduction_ordersتوسعة آلة الحالات إلى Planned → Released → InProcess → Completed → Closed؛ إضافة نوع الأمر والإنتاج وملكية المادة وحساب WIP وأختام لقطة التجميد؛ أعمدة المستودعات الميتة تعمل أخيراً
Order_ComponentEXTENDproduction_order_materialsهو مخزن اللقطة المجمدة للمكونات عند الإطلاق؛ إضافة كمية محجوزة وملكية ونوع/مستوى صرف مجمّدين
Order_OperationEXTENDproduction_order_operationsحالة العملية تتحول لتعداد OperationStatus {Waiting, Ready, InProgress, Completed}؛ هذا هو السطح الحي لطابق المصنع (التقدم الآلي بحدث OperationCompleted)
Material_Issue_HeaderNEW + REUSEmfg_material_issuesInventory ApproveIssueمستند تصنيعي يحمل ما ينقص المخزون (نوع/مستوى الصرف، العملية)؛ عند الترحيل ينشئ InventoryIssue ويرحّل قيد WIP/مواد خام عبر CreateJournalEntry حصراً؛ الحجز عند الإطلاق يستهلك هنا (واجهة حجز جديدة فوق عمود reserved_quantity القائم)
Material_Issue_LineNEWmfg_material_issue_linesفرع التصنيع بالأجرة: ownership=Customer يصرف من مخازن أمانة (علم is_consignment على warehouses) بحركة تتبع فقط دون تقييم
Confirmation_HeaderNEWmfg_confirmationsتأكيد العمليات: قيود عمالة/ماكينة/أعباء محمَّلة؛ العامل يُحل عبر employees.user_id؛ معدل الأجر من مركز العمل في الإصدار الأول (HRM لا يخزن معدل ساعة/قطعة — فجوة موثقة)؛ كميات أجر القطعة تُغذَّى للرواتب عبر Action بملكية HRM (RecordPieceworkEntry) يكتب جدولاً تملكه HRM — لا تقرأ الرواتب أي جدول mfg_*
Confirmation_YieldNEWmfg_confirmation_yieldsالغلة توزيع لا رقم: درجات A/B/C بتخصيص تكلفة بالقيمة البيعية (NRV)، وينهار تلقائياً لدرجة واحدة في المصانع العادية (مبدأ العمومية)
Confirmation_DetailNEWmfg_confirmation_detailsهالك وإعادة تشغيل وأزمنة فعلية وأكواد أسباب — يغذي محرك الانحرافات وOEE المستقبلي وتحويل الهالك لعدم مطابقة في QMS
Goods_Receipt_HeaderNEW + REUSEmfg_goods_receiptsInventory ApproveReceiptنفس نمط استلام المشتريات المعتمد (PurchaseGrnController::approve)؛ قيد تام الصنع + انحراف / WIP؛ فرع الأجرة: الإيراد أجر تشغيل فقط
Goods_Receipt_LineNEW + REUSE QMSmfg_goods_receipt_lines + QMS qms_inspectionsسطر لكل درجة؛ حالة الجودة {Released, OnHold, Rejected} تُحسم من نتيجة فحص QMS — وحدة التصنيع لا تبني أي جداول جودة (جدولا خطط الفحص والفحوص يحملان production_order_id جاهزاً، أما عدم المطابقة فترتبط عبر inspection_id فقط؛ يُضاف قيد المفتاح وعمود operation_no)؛ حتى وصول بوابات QMS في المرحلة 6 تكون الحالة الافتراضية للاستلام «مفرج عنه» (قرار D-21)
التكاليف (Costing)
Standard_CostNEWmfg_standard_costsتكلفة معيارية مفككة (مواد/عمالة/أعباء) لكل صنف؛ التقييم الفعلي Average/FIFO يُعاد استخدامه من inventory_cost_layers + StockService
Cost_CenterREUSEAccounting CostCenter (cost_centers)حسم غموض الملكية في المواصفة: المحاسبة هي سجل الحقيقة. موجود هرمياً مع بُعد cost_center_id على سطور القيود وتقارير تصفية جاهزة؛ توسعة صغيرة: عمود type {Production, Service, Auxiliary} وعمود manager_id (كلاهما غائب — متحقق منه)؛ موازنة الأعباء الثابتة لكل مركز تكلفة موجودة أصلاً في المحاسبة (budgets + budget_lines ببُعد مركز التكلفة ومبالغ شهرية m1–m12) وتغذي انحراف FOVV — الناقص الوحيد حجم الإنتاج الموازني (عمود على مركز العمل في الإصدار الأول)؛ توزيع الخدمات بإعادة استخدام CostAllocationService (طريقة Direct متاحة، والباقي مؤجل)
Variance_RecordNEWmfg_variance_recordsالانحرافات السبعة بنطاقات التسامح (<2% عادي، 2–5% مراقبة، >5% تحقيق) وتوجيه للمالك؛ تُحسب عند إقفال الأمر وبوظيفة شهرية قبل إقفال الفترة المالية (CreateJournalEntry يرفض الفترات المقفلة)؛ مدخلات FOVV: موازنة الإنفاق من budget_lines القائمة وحجم الموازنة من مركز العمل، وبغياب موازنة معتمدة للفترة يُعلَن ستة انحرافات فقط (قرار D-22)؛ حسابات WIP والمحمَّل والانحرافات تُبذر عبر AutoAccountService ومفاتيح SettingsService
الربط العرضي وطابق المصنع
PeggingNEWmfg_peggingsربط متعدد-لمتعدد بين sales_orders وproduction_orders؛ جانب المبيعات لا يُمس؛ سياسة التخصيص (فجوة مواصفة) = أقدمية أمر البيع في الإصدار الأول
Delivery_ScheduleNEWmfg_delivery_schedulesتجزئة التسليم؛ مع توسعة صغرى وحيدة في المبيعات: عمود promised_date على sales_orders لإرجاع وعد التسليم المحسوب (CTP) — غير موجود اليوم
طبقة طابق المصنع SFCREUSEproduction_order_operations + mfg_confirmationsلا جداول جديدة — المواصفة نفسها تنص أن 80% من المنطق قائم في التنفيذ؛ المطلوب: شاشة محطة لمسية (تُستنسخ من نمط pos-layout)، تقدم آلي بالأحداث، ولوحة مشرف حية لكشف الاختناقات

الوصفة المنزلية: التعدادات وآلات الحالات والأحداث

لمسات صغيرة محسوبة خارج الوحدة

  1. المخزون: واجهة حجز/تحرير فوق عمود reserved_quantity القائم وغير المستخدم + أنواع حركة production_issue/production_receipt + إضافة حالة ProductionOrder لتعدادي أنواع المرجعية ReceiptReferenceType/IssueReferenceType (كلاهما تعداد منضبط اليوم) + علم مخازن الأمانة.
  2. المحاسبة: عمودا نوع ومدير مركز التكلفة + بذر حسابات WIP والمحمَّل والانحرافات + طريقة إهلاك بالاستخدام UnitsOfProduction لقيود إهلاك العُدد (سجل الأصول الثابتة والموازنات موجودان ويُعاد استخدامهما كما هما).
  3. المشتريات: استخلاص CreatePurchaseRequest كـ Action قابل للنداء من MRP.
  4. المبيعات: عمود promised_date فقط (اسم قانوني وحيد — قرار D-16).
  5. QMS وCMMS: قيد مفتاح production_order_id وعمود operation_no في QMS؛ مغذّي قراءات عداد الدورات في CMMS + مدخل قراءة فقط GetDowntimeWindows لخصم الأعطال من طاقة CRP بلا قراءة جداول مباشرة.
  6. الموارد البشرية: Action جديد بملكية HRM RecordPieceworkEntry + جدول ترحيلي تملكه HRM لأجر القطعة (المرحلة 6)؛ حقول معدل الأجر مؤجلة — الإصدار الأول يعتمد معدلات مركز العمل.

واجهة Angular — توسعة features/production

تبقى المجموعة على المسار production بنفس حارسي moduleGuard/permissionGuard، وتضاف مجلدات: routings, tools, planning/{mps,mrp,crp}, execution/{issues,confirmations,receipts}, shop-floor (محطة لمسية مستنسخة من نمط pos-layout مع لوحة مشرف حية) وcosting للانحرافات وتحليل باريتو — بإعادة استخدام مكونات data-table/form-dialog/print المشتركة ومفاتيح ترجمة إنجليزية أولاً.