هذا القسم هو القرار الهندسي الحاسم: لكل كيان من كيانات النموذج الموحّد في المواصفة (27 كياناً في الملف 06) حُسم أحد ثلاثة خيارات — جدول جديد بادئته mfg_ داخل الوحدة، أو إعادة استخدام موديل قائم في Moon ERP بالاسم، أو توسعة جدول قائم في وحدة الإنتاج الحالية. النتيجة: لا نبني ما هو مبني، ولا نرمم ما يجب بناؤه من جديد.
Modules/Production في مكانها — لا وحدة جديدةبعد تدقيق كامل للوحدة الحالية (التقرير 10)، القرار هو EXTEND in place وليس إنشاء Modules/Manufacturing موازية. الأسباب:
RolePermissionSeeder، وواجهة Angular كاملة (features/production) بتطابق تام مع الـ API، وترقيم مستندات جاهز عبر SequenceService('production','order').production.* والتسلسلات والواجهة، ثم مشروع إهلاك للوحدة القديمة بلا أي عائد.قاعدة التسمية: الجداول السبعة القديمة تحتفظ بأسمائها، وكل جدول جديد يأخذ البادئة 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 (سطح طابق المصنع الحي: حالة العملية، المؤكِّد، الكميات) |
| كيان المواصفة | القرار | الجدول/الموديل في Moon | ملاحظات |
|---|---|---|---|
| البيانات الرئيسية (Master Data) | |||
| Item (الصنف) | REUSE | Core Product / ProductVariant + product_units | الصنف لا تملكه وحدة التصنيع أبداً. تحويلات وحدات القياس — فجوة في المواصفة — محلولة أصلاً بـ unit_groups/units/product_units. حقول التصنيع للصنف تذهب لجدول الامتداد (الصف 10) وليس لتضخيم products |
| BOM_Header | EXTEND | bill_of_materials | إضافة bom_type {Production, Engineering, Phantom}، حالة {Draft, Active, Inactive, Obsolete}، تواريخ سريان، مُعتمِد. قاعدة: نسخة نشطة واحدة لكل منتج في نافذة السريان |
| BOM_Line | EXTEND | bom_components | إضافة issue_type/issue_level/operation_seq؛ نسبة الهالك موجودة (waste_percentage)؛ البدائل في جدول ابن جديد mfg_bom_substitutes؛ التعدد المستوى بالتفجير التكراري خدمياً دون تغيير مخطط |
| Routing_Header | NEW | mfg_routing_headers | مسار تشغيل مستقل مُصدَّر بنوع {Production, Repair, Inspection} ونطاق حجم دفعة وتواريخ سريان — يحل محل ربط العمليات المباشر بقائمة المواد |
| Routing_Operation | NEW | mfg_routing_operations | أرقام عمليات بمضاعفات 10، cavity_count افتراضي 1 (مبدأ العمومية)، أزمنة تجهيز/تشغيل/انتظار/نقل، علم الفحص، مهارة مطلوبة |
| Work_Center | EXTEND | production_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 (العُدّة/القالب) | NEW | mfg_tools | كيان جديد كلياً (غير موجود اليوم): دورات عمر، عداد دورات، حالة {Available, Mounted, Maintenance, Retired}؛ ربط cmms_assets للصيانة الوقائية بالعداد، وربط fixed_asset_id بسجل الأصول الثابتة في المحاسبة (موجود ومتحقق منه: جدول fixed_assets وخدمة FixedAssetService وقيود إهلاك DepreciationEntry) — المطلوب الجديد فقط: طريقة إهلاك بالاستخدام UnitsOfProduction (الطرق الحالية: قسط ثابت/متناقص/مُعجَّل) وتوليد قيد الإهلاك من قراءات العداد |
| التخطيط (Planning) — طبقة جديدة بالكامل | |||
| MPS_Header | NEW | mfg_mps_headers | خطة رئيسية بفترات {Day, Week, Month} وأسوار تجميد؛ نطاق الفرع عبر Core DataScope |
| MPS_Line | NEW | mfg_mps_lines | الطلب المؤكد يُسحب من Sales sales_orders عبر Action؛ التنبؤ — فجوة بالمواصفة — يُدخل يدوياً/استيراداً في الإصدار الأول |
| Item_MRP_Settings | NEW | mfg_item_mrp_settings | جدول امتداد 1:1 فوق products (نمط AccBpExt): نوع الشراء/التصنيع، ملكية المادة، طريقة التكلفة، قاعدة تحجيم الدفعات، مخزون أمان، زمن توريد |
| MRP_Planned_Order | NEW | mfg_mrp_runs / mfg_mrp_planned_orders / mfg_mrp_exceptions | مخرجات عابرة تُعاد كل تشغيلة؛ التثبيت: أمر إنتاج مخطط → production_orders، وأمر شراء مخطط → Purchases purchase_requests عبر Action جديد يُستخلص CreatePurchaseRequest (التحويل لأمر شراء موجود أصلاً)؛ كل أمر مخطط يحمل source_demand_id الذي يعتمد عليه جدول الربط Pegging |
| CRP_Load | NEW | mfg_crp_loads | حمل مقابل طاقة لكل مورد {Machine, Tool, Labor}؛ يتطلب تقويم عمل جديد mfg_work_calendars (فجوة مواصفة) مع إعادة استخدام ورديات HRM |
| التنفيذ (Execution) | |||
| Production_Order_Header | EXTEND | production_orders | توسعة آلة الحالات إلى Planned → Released → InProcess → Completed → Closed؛ إضافة نوع الأمر والإنتاج وملكية المادة وحساب WIP وأختام لقطة التجميد؛ أعمدة المستودعات الميتة تعمل أخيراً |
| Order_Component | EXTEND | production_order_materials | هو مخزن اللقطة المجمدة للمكونات عند الإطلاق؛ إضافة كمية محجوزة وملكية ونوع/مستوى صرف مجمّدين |
| Order_Operation | EXTEND | production_order_operations | حالة العملية تتحول لتعداد OperationStatus {Waiting, Ready, InProgress, Completed}؛ هذا هو السطح الحي لطابق المصنع (التقدم الآلي بحدث OperationCompleted) |
| Material_Issue_Header | NEW + REUSE | mfg_material_issues → Inventory ApproveIssue | مستند تصنيعي يحمل ما ينقص المخزون (نوع/مستوى الصرف، العملية)؛ عند الترحيل ينشئ InventoryIssue ويرحّل قيد WIP/مواد خام عبر CreateJournalEntry حصراً؛ الحجز عند الإطلاق يستهلك هنا (واجهة حجز جديدة فوق عمود reserved_quantity القائم) |
| Material_Issue_Line | NEW | mfg_material_issue_lines | فرع التصنيع بالأجرة: ownership=Customer يصرف من مخازن أمانة (علم is_consignment على warehouses) بحركة تتبع فقط دون تقييم |
| Confirmation_Header | NEW | mfg_confirmations | تأكيد العمليات: قيود عمالة/ماكينة/أعباء محمَّلة؛ العامل يُحل عبر employees.user_id؛ معدل الأجر من مركز العمل في الإصدار الأول (HRM لا يخزن معدل ساعة/قطعة — فجوة موثقة)؛ كميات أجر القطعة تُغذَّى للرواتب عبر Action بملكية HRM (RecordPieceworkEntry) يكتب جدولاً تملكه HRM — لا تقرأ الرواتب أي جدول mfg_* |
| Confirmation_Yield | NEW | mfg_confirmation_yields | الغلة توزيع لا رقم: درجات A/B/C بتخصيص تكلفة بالقيمة البيعية (NRV)، وينهار تلقائياً لدرجة واحدة في المصانع العادية (مبدأ العمومية) |
| Confirmation_Detail | NEW | mfg_confirmation_details | هالك وإعادة تشغيل وأزمنة فعلية وأكواد أسباب — يغذي محرك الانحرافات وOEE المستقبلي وتحويل الهالك لعدم مطابقة في QMS |
| Goods_Receipt_Header | NEW + REUSE | mfg_goods_receipts → Inventory ApproveReceipt | نفس نمط استلام المشتريات المعتمد (PurchaseGrnController::approve)؛ قيد تام الصنع + انحراف / WIP؛ فرع الأجرة: الإيراد أجر تشغيل فقط |
| Goods_Receipt_Line | NEW + REUSE QMS | mfg_goods_receipt_lines + QMS qms_inspections | سطر لكل درجة؛ حالة الجودة {Released, OnHold, Rejected} تُحسم من نتيجة فحص QMS — وحدة التصنيع لا تبني أي جداول جودة (جدولا خطط الفحص والفحوص يحملان production_order_id جاهزاً، أما عدم المطابقة فترتبط عبر inspection_id فقط؛ يُضاف قيد المفتاح وعمود operation_no)؛ حتى وصول بوابات QMS في المرحلة 6 تكون الحالة الافتراضية للاستلام «مفرج عنه» (قرار D-21) |
| التكاليف (Costing) | |||
| Standard_Cost | NEW | mfg_standard_costs | تكلفة معيارية مفككة (مواد/عمالة/أعباء) لكل صنف؛ التقييم الفعلي Average/FIFO يُعاد استخدامه من inventory_cost_layers + StockService |
| Cost_Center | REUSE | Accounting CostCenter (cost_centers) | حسم غموض الملكية في المواصفة: المحاسبة هي سجل الحقيقة. موجود هرمياً مع بُعد cost_center_id على سطور القيود وتقارير تصفية جاهزة؛ توسعة صغيرة: عمود type {Production, Service, Auxiliary} وعمود manager_id (كلاهما غائب — متحقق منه)؛ موازنة الأعباء الثابتة لكل مركز تكلفة موجودة أصلاً في المحاسبة (budgets + budget_lines ببُعد مركز التكلفة ومبالغ شهرية m1–m12) وتغذي انحراف FOVV — الناقص الوحيد حجم الإنتاج الموازني (عمود على مركز العمل في الإصدار الأول)؛ توزيع الخدمات بإعادة استخدام CostAllocationService (طريقة Direct متاحة، والباقي مؤجل) |
| Variance_Record | NEW | mfg_variance_records | الانحرافات السبعة بنطاقات التسامح (<2% عادي، 2–5% مراقبة، >5% تحقيق) وتوجيه للمالك؛ تُحسب عند إقفال الأمر وبوظيفة شهرية قبل إقفال الفترة المالية (CreateJournalEntry يرفض الفترات المقفلة)؛ مدخلات FOVV: موازنة الإنفاق من budget_lines القائمة وحجم الموازنة من مركز العمل، وبغياب موازنة معتمدة للفترة يُعلَن ستة انحرافات فقط (قرار D-22)؛ حسابات WIP والمحمَّل والانحرافات تُبذر عبر AutoAccountService ومفاتيح SettingsService |
| الربط العرضي وطابق المصنع | |||
| Pegging | NEW | mfg_peggings | ربط متعدد-لمتعدد بين sales_orders وproduction_orders؛ جانب المبيعات لا يُمس؛ سياسة التخصيص (فجوة مواصفة) = أقدمية أمر البيع في الإصدار الأول |
| Delivery_Schedule | NEW | mfg_delivery_schedules | تجزئة التسليم؛ مع توسعة صغرى وحيدة في المبيعات: عمود promised_date على sales_orders لإرجاع وعد التسليم المحسوب (CTP) — غير موجود اليوم |
| طبقة طابق المصنع SFC | REUSE | production_order_operations + mfg_confirmations | لا جداول جديدة — المواصفة نفسها تنص أن 80% من المنطق قائم في التنفيذ؛ المطلوب: شاشة محطة لمسية (تُستنسخ من نمط pos-layout)، تقدم آلي بالأحداث، ولوحة مشرف حية لكشف الاختناقات |
Modules/Production/app/Enums تغطي تعدادات المواصفة الأحد عشر كلها (production_type, material_ownership, procurement_type, costing_method, labor_calc, issue_type, issue_level, resource_type, lot_sizing_rule, order_status, operation_status) إضافة لتعدادات دورات حياة BOM/Routing/Tool والمستندات.ProductionOrderReleased, MaterialIssued, OperationCompleted, ConfirmationPosted, GoodsReceiptPosted, ProductionOrderClosed — كل ترحيل دفتري عبر مستمع يستدعي Modules\Accounting\Actions\CreateJournalEntry حصراً، بوسم source_type='production_order' وبُعد مركز التكلفة على كل سطر.ReleaseProductionOrder, PostMaterialIssue, PostConfirmation, PostGoodsReceipt, CloseProductionOrder, RunMps/RunMrp/RunCrp, ComputeStandardCost, FirmPlannedOrders, PromiseDate.BaseModel/TenantAware (company_id)، DataScope لنطاق الفروع، SequenceService لترقيم كل مستند، وإضافة حالة Production لتعداد ApprovalModule في Core.reserved_quantity القائم وغير المستخدم + أنواع حركة production_issue/production_receipt + إضافة حالة ProductionOrder لتعدادي أنواع المرجعية ReceiptReferenceType/IssueReferenceType (كلاهما تعداد منضبط اليوم) + علم مخازن الأمانة.UnitsOfProduction لقيود إهلاك العُدد (سجل الأصول الثابتة والموازنات موجودان ويُعاد استخدامهما كما هما).CreatePurchaseRequest كـ Action قابل للنداء من MRP.promised_date فقط (اسم قانوني وحيد — قرار D-16).production_order_id وعمود operation_no في QMS؛ مغذّي قراءات عداد الدورات في CMMS + مدخل قراءة فقط GetDowntimeWindows لخصم الأعطال من طاقة CRP بلا قراءة جداول مباشرة.RecordPieceworkEntry + جدول ترحيلي تملكه HRM لأجر القطعة (المرحلة 6)؛ حقول معدل الأجر مؤجلة — الإصدار الأول يعتمد معدلات مركز العمل.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 المشتركة ومفاتيح ترجمة إنجليزية أولاً.