تقرير فني سرّي — للإدارة العليا

التحليل الشامل لإضافة موديول التصنيع إلى Moon ERP
الخريطة، الفجوات، التكاملات، وخطة البناء

دراسة تنفيذية كاملة لبناء موديول التصنيع داخل Moon ERP وفق مواصفة التحليل المُعدّة مسبقاً (manufacturing_spec بأجزائها السبعة): أين يُبنى كل كيان، وما الذي يُعاد استخدامه من الموديولات القائمة، وما الناقص في الـ ERP وفي المواصفة نفسها، وكيف يتفاعل التصنيع مع كل موديول موجود، ومراحل البناء بمخرجات قابلة للتشغيل. خضعت النتائج لمراجعة عدائية مستقلة وصُحّحت ملاحظاتها قبل الإصدار.

📅 تاريخ الإعداد: 11 يونيو 2026 🤖 أُعدّ بواسطة: Claude Code — 17 وكيلاً (Opus 4.8 + Fable 5) 📂 المصدر: المواصفة الكاملة + كود Moon ERP الفعلي
7أجزاء المواصفة (1445 سطراً)
7جداول إنتاج قائمة تتوسع
24جدول mfg_ جديد
9موديولات يتكامل معها
7مراحل بناء (0–6)
5مخالفات رصدتها المراجعة وصُحّحت
📊

الملخص التنفيذي (Executive Summary)

الإجابات المباشرة على سؤالي الإدارة: كيف نبنيه مع الـ ERP؟ وما الناقص؟ — التفاصيل الكاملة في الأقسام الجانبية.

القرار الأول: أين يُبنى؟ — توسعة Modules/Production القائم، لا موديول جديد

الـ ERP يحتوي بالفعل موديول إنتاج مبدئياً (7 جداول: مراكز إنتاج، BOM بمكوناته وعملياته، أوامر إنتاج بموادها وعملياتها) — والفحص أثبت أن جداوله هي نفسها كيانات المواصفة في صورتها الأولية، وأن لديه واجهة Angular كاملة و19 صلاحية مسجّلة وترقيم مستندات جاهز، بينما لا توجد عليه أي بيانات إنتاج ولا يشير إليه أي موديول آخر. لذا القرار: التوسعة في المكان — الجداول السبعة تُمدّد لتطابق المواصفة، وكل الكيانات الجديدة (24 جدولاً: المسارات، العُدد والقوالب، التخطيط MPS/MRP/CRP، التأكيدات، التكلفة المعيارية والانحرافات السبعة، صالة الإنتاج) تُنشأ ببادئة mfg_، وبادئة الصلاحيات تبقى production.*. إنشاء Modules/Manufacturing منفصل كان سيعني ازدواج الصلاحيات والترقيم والواجهة ثم مشروع إهلاك للقديم — هدر صافٍ.

القرار الثاني: ماذا يُعاد استخدامه؟ — التصنيع «عميل» لتسعة موديولات

سؤالك: ما الناقص؟ — في الاتجاهين

ناقص في Moon ERP (يُبنى ضمن المراحل): حجوزات المواد reserve/release (العمود موجود بلا منطق)، إجراء CreatePurchaseRequest من MRP، تتبع اللوط/الباتش والجينيالوجيا في حركة المخزون، تقويم تشغيل وورديات لمراكز العمل، إهلاك بالاستخدام UnitsOfProduction للقوالب، ربط مراكز العمل بمراكز التكلفة، نمط واجهة لمس لصالة الإنتاج. وناقص في المواصفة نفسها (نقد خبير للتحليل المُسلَّم): آلية تحويل وحدات القياس بين مستويات الـ BOM، تتبع اللوط من الخام للمنتج، التعاقد الخارجي لعمليةٍ ضمن المسار (وليس فقط Toll)، أوامر إعادة التشغيل والتصرف في المعيب، تفاصيل المنتجات المشتركة/الثانوية وطريقة توزيعها، تقويم التخطيط، إدارة أوامر التغيير الهندسي ECO، ومصدر التنبؤ بالطلب — كلها موثقة بدرجات الخطورة والعلاج المقترح في قسم الفجوات.

خطة البناء — 7 مراحل بأول منفعة مبكرة

  1. المرحلة 0 (S): تثبيت الأساس — إصلاح الـ FKs الدفاعية، مساهم الصلاحيات، إعدادات الحسابات production.*.
  2. المرحلة 1 (L) ⭐ أول زيادة قابلة للاستخدام: بيانات أساسية v2 + أوامر إنتاج حقيقية ترحّل مخزوناً وقيوداً (صرف خام ← تحت التشغيل ← استلام تام).
  3. المرحلة 2 (L): المسارات والعُدد/القوالب وتأكيدات العمليات وتكلفة التحويل.
  4. المرحلة 3 (M): محرك التكلفة المعيارية والانحرافات السبعة والتسوية الشهرية.
  5. المرحلة 4 (L): التخطيط — MRP وPegging وطلبات الشراء الآلية وCRP وMPS مبسّط.
  6. المرحلة 5 (M): صالة الإنتاج — طرفيات اللمس والتقدم الآلي ولوحة لحظية.
  7. المرحلة 6 (L): التصنيع بالأجر، جينيالوجيا الباتشات، التعميق مع الجيران.

الجودة والمنهجية

11 وكيل فحص على Opus 4.8 (7 قرأوا أجزاء المواصفة بلا فقد + 4 خرّطوا كود الـ ERP الفعلي بالملف والسطر)، ثم 4 محللي قرار أنتجوا الخريطة والفجوات والعقود وخارطة الطريق، ثم مراجعة عدائية مستقلة طاردت التناقضات فرصدت 5 مخالفات (أهمها: وثيقة عقود كُتبت بهوية موديول خاطئة، وتجاوزان لقناة المستندات) — وأُصلحت جميعها في الملفات قبل إصدار هذا التقرير، وصحّحت المراجعة أيضاً ادعاءً خاطئاً بغياب سجل الأصول الثابتة (موجود ومتحقق منه). الملحق الفني manufacturing-erp-analysis.md مُعدّ ليُغذّى مباشرة إلى Claude Code عند بدء التنفيذ.

تحديث (11 يونيو): متطلبات عميل حقيقي — مصنع أدوية تصنيع للغير

بعد إصدار التقرير عُقد لقاء مع عميل محتمل (مصنع أدوية يصنّع للغير بالأوردر) ووصف دورته التشغيلية: دورة تكلفة استكشافية (مواصفات ← BOM مسودة من البحث والتطوير ← تكلفة مبدئية) ودورة إنتاج بالأوردر ببوابات (تجربة معملية ← اتفاق ← عربون ← حجز خامات ← تصنيع)، مع خامات يورّدها العميل وتظل ملكه، وشاشة لكل مرحلة. أُجري تدقيق تغطية كامل وصُمّمت الدورتان وعُدّلت خارطة الطريق — راجع ملحق متطلبات العميل وحتى قسم تعديلات الخطة، وقد خضع الملحق نفسه لمراجعة عدائية ثانية رصدت 24 ملاحظة وأُصلحت جميعها قبل هذا الإصدار.

🗺️

خريطة البناء: المواصفة على 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 المشتركة ومفاتيح ترجمة إنجليزية أولاً.

🕳️

تحليل الفجوات: الناقص في الـ ERP وفي التحليل نفسه (Gap Analysis (Both Directions))

إجابة مباشرة على سؤال الإدارة «إيه اللي ناقص؟» في اتجاهين: الاتجاه (A) ما ينقص نظام Moon ERP اليوم لاستضافة وحدة التصنيع كما تحددها الوثيقة، والاتجاه (B) ما أغفلته وثيقة التحليل نفسها ويجب استدراكه كتابةً قبل بدء التنفيذ. كل فجوة مصنّفة بدرجة الخطورة (حرجة / مهمة / تحسينية) مع العلاج المقترح وحجم الجهد (S = أيام، M = حتى ٣ أسابيع، L = أكثر من ٣ أسابيع) — تنبيه: هذا مقياس للفجوات المفردة ويختلف عن مقياس المراحل في خارطة الطريق (S ≈ أسبوع، M ≈ 2–4 أسابيع، L ≈ 4–8 أسابيع)، فلا تُسقطوا أحدهما على الآخر عند التقدير. الخلاصة: القضبان المالية والمخزنية موجودة ومجرّبة، لكن أسلاك الربط بينها وبين الإنتاج غائبة بالكامل؛ والوثيقة ممتازة في القلب لكنها صامتة عند الحواف التشغيلية.

52فجوة مكتشفة إجمالاً
27فجوة في Moon ERP (الاتجاه A)
25فجوة في الوثيقة نفسها (الاتجاه B)
16فجوة حرجة تمنع إطلاقاً صحيحاً

المنهجية: وما الذي فحصناه واستبعدناه لأنه موجود فعلاً

قبل إعلان أي فجوة تحققنا منها في الكود الفعلي. عدة مرشّحين ثبت أنهم ليسوا فجوات لأن البنية موجودة ومجرّبة، وهذا بحد ذاته خبر إيجابي للإدارة:

الاتجاه A — ما ينقص Moon ERP: الفجوات الحرجة الاثنتا عشرة

القاسم المشترك في الفجوات الحرجة: وحدة الإنتاج الحالية هيكل عظمي نظيف لكنه معزول مالياً ومخزنياً — لا يرحّل قيداً واحداً ولا يحرّك صنفاً واحداً.

#الفجوةماذا ينقص ولماذا يهمالعلاج المقترحالحجم
A1حرجة لا ترحيل محاسبي من الإنتاج إطلاقاًلا يوجد أي استدعاء لـCreateJournalEntry في وحدة الإنتاج؛ سلسلة قيود الإنتاج تحت التشغيل (صرف خامات / أجور وأعباء / استلام تام / تسوية انحرافات) غير موجودة. النتيجة: الإنتاج غير مرئي مالياً والدفاتر خاطئة عند أي إقفال شهري.أربعة Actions ترحيلية تستدعي Modules\Accounting\Actions\CreateJournalEntry بنمط PostLabInvoice المجرّب — بلا أي تعديل على وحدة المحاسبة.L
A2حرجة الإنتاج لا يحرّك المخزوندوال الصرف والإنتاج تعدّل أعمدة كميات داخلية فقط؛ أعمدة المخازن source/target_warehouse_id ميتة. أرصدة المخزون تصبح خاطئة من أول أمر تشغيل.ربط الصرف بـApproveIssue والاستلام بـApproveReceipt بنفس نمط استلام المشتريات GRN القائم.M
A3حرجة طبقة التخطيط غائبة كلياً (MPS / MRP / CRP)لا جداول ولا محرك تخطيط ولا جدول ربط طلب-توريد (Pegging). بدونها تتحول الوحدة إلى إدخال أوامر يدوي بلا شراء تلقائي ولا فحص طاقة ولا وعود تسليم.بناء طبقة التخطيط طبقاً للملف الثاني فوق مصادر البيانات القائمة (المبيعات، الأرصدة، أوامر الشراء).L
A4حرجة تتبع الدفعات (Lot/Batch) ليس كياناً أولياًالمسلسل Serial مكتمل، لكن رقم الدفعة نص حر على بنود المستندات فقط؛ لا أرصدة على مستوى الدفعة ولا شجرة نسب (أي خامة دخلت أي منتج) ولا صرف FEFO. يستحيل الاستدعاء Recall والتتبع.جدول دفعات رئيسي + أرصدة بالدفعة + جدول نسب يُكتب عند الصرف والاستلام + StockService واعٍ بالدفعات.L
A5حرجة منطق حجز المخزون غير موجودالعمود reserved_quantity موجود لكن لا كود يكتبه؛ أمران يمكنهما وعد نفس المخزون. الوثيقة تشترط الحجز عند اعتماد الأمر والاستهلاك عند الصرف.إضافة StockService::reserve()/release() — الخطّاف جاهز والمطلوب منطق فقط.S
A6حرجة بطاقة الصنف بلا حقول تصنيعيةلا تصنيف خام/تحت تشغيل/تام، لا procurement_type (تصنيع/شراء)، لا material_ownership (ملك/عميل)، ولا تكلفة معيارية مفصّلة — وكل تفرعات الوثيقة تعتمد عليها.جدول امتداد mfg_item_mrp_settings (الاسم القانوني في الخريطة) + جدول mfg_standard_costs فوق بطاقة الصنف المشتركة.M
A7حرجة لا تكلفة معيارية ولا محرك انحرافاتالتقييم الحالي FIFO ومتوسط مرجّح فقط؛ الانحرافات السبعة (سعر وكمية المواد، الأجور، الأعباء…) — أثمن مخرجات الوحدة بنص الوثيقة — غير مدعومة.محرك انحرافات يعمل عند إقفال الأمر وشهرياً قبل CloseFiscalPeriod، مع تأسيس الحسابات عبر AutoAccountService ومفاتيح إعدادات production.*_account_id (فضاء الإعدادات الوحيد للوحدة طبقاً لقرار التوسعة D-01).L
A8حرجة لا تقويم تشغيلي/ورديات لمراكز العملمراكز الإنتاج تحمل طاقة بالساعة فقط بلا تقويم أو ورديات أو عطلات؛ كل حسابات الطاقة CRP/CTP بدونه أرقام وهمية.جداول mfg_work_calendars + mfg_calendar_shifts (الاسمان القانونيان في الخريطة) واشتقاق الطاقة الفعلية لكل فترة.M
A9حرجة إصدارات BOM ومسار التشغيل واللقطة المجمّدةالإصدار نص حر بلا تواريخ سريان، لا كيان Routing مستقل، ولا لقطة مجمّدة عند الاعتماد — فتعديل بيانات أساسية لاحق يغيّر أوامر معتمدة ويهدم سلامة التكاليف والتدقيق.جداول mfg_routing_headers/_operations مُصدّرة، ونسخ لقطة عند الانتقال Planned→Released، ومواءمة آلة حالات الأمر مع الوثيقة.M–L
A10حرجة كيان العُدّة/الإسطمبة وعدّادات الأشواطلا كيان Tool في الإنتاج، ووحدة الصيانة CMMS تدعم صيانة بالعداد لكن بلا جدول قراءات يراكم الأشواط. في مصانع القولبة الإسطمبة هي القيد الحاكم، وإهلاكها بالاستخدام لا بالزمن.جدول mfg_tools مرتبط بـcmms_assets + جدول قراءات cmms_asset_meters يتغذى من تأكيدات التشغيل.M
A23حرجة مُسبّب تكلفة الأعباء بلا موضع تخزينالمواصفة تجعل cost_driver (ساعات عمالة/ساعات آلة/تكلفة مواد/وحدات منتجة) مقام معدل تحميل الأعباء، ولا يوجد أي عمود أو جدول يخزّن أي مُسبّب يخص مركز العمل — فقيد الأعباء عند التأكيد (المُسبّب × المعدل) غير قابل للحساب كما هو منصوص.عمود cost_driver على production_centers (لكل مركز عمل)، يُجدول مع توسعة مراكز العمل في المرحلة 2.S
A24حرجة أعمدة طاقة ومعدلات مراكز العمل غائبة وغير مجدولةproduction_centers ينقصه نحو 14 عموداً تتطلبها الخريطة (طاقة يومية، مضاعِف، كفاءة، استغلال، معدلات تجهيز/عمالة/آلة، labor_calc، تقويم…) — المرحلة 2 ترحّل التكاليف من معدلاته والمرحلة 4 تحسب الطاقة الفعلية منها، ولم تكن مجدولة في أي مرحلة.جدولة صريحة: أعمدة المعدلات والطاقة والمُسبّب في المرحلة 2، وعمود التقويم في المرحلة 4 (المرحلة 1 تضيف cost_center_id فقط).M

الاتجاه A — الفجوات المهمة والتحسينية

#الخطورةالفجوةالعلاج المقترحالحجم
A11مهمةلا يوجد Action برمجي لإنشاء طلبات الشراء — MRP لا يستطيع توليد الاحتياجات آلياًاستخلاص Purchases\Actions\CreatePurchaseRequest ثم المسار القائم طلب ← أمر شراءS
A12مهمةمحرك الموافقات لا يغطي الإنتاج — ApprovalModule يعرف المبيعات والمشتريات فقطإضافة حالة Production للمحرك القائمS
A13مهمةلا معدل أجر/قطعة مخزّن في الموارد البشرية (الراتب الأساسي فقط، والساعة تُشتق وقت المرتبات)معدل الأجر على مركز العمل (نهج الوثيقة) مع إمكانية تجاوز لكل موظف؛ كميات القطعة تعود للمرتباتS
A14مهمةالمبيعات بلا حقل لاستقبال تاريخ التسليم الموعود من التخطيطإضافة الحقل وAction يكتبه عائداً من CTPS
A15مهمةلا وعاء ملكية لخامات العميل (تشغيل للغير) — الوثيقة تشترط مخزوناً محفوظاً غير مُقيَّم وغير قابل للشراءمخازن أمانات بعلم is_consignment غير مُقيَّمة وغير قابلة للشراء (نهج الخريطة — D-15)؛ بُعد الملكية الكامل مؤجلM
A16مهمةوحدة الإنتاج بلا أحداث نطاق ولا Actions ولا اختبار واحد — مخالفة لوصفة البيت المعماريةعمود أحداث (OrderReleased، OperationCompleted…) + مستمعين + تغطية اختباراتM
A17مهمةلا شاشة صالة إنتاج لمسية ولا قناة بث لحظي للواجهةاستنساخ نمط شاشة نقاط البيع pos-layout + قناة بث للطابور الجاهز ولوحة المشرفM
A18مهمةمراكز التكلفة بلا تصنيف (إنتاجي/خدمي/مساعد) ولا ربط مركز عمل ← مركز تكلفةعمود type + مفتاح ربط على production_centersS
A25مهمةمدخل حجم الموازنة لانحراف FOVV غائب — موازنة الإنفاق موجودة فعلاً (budgets/budget_lines بمبالغ شهرية لكل مركز تكلفة) لكن لا موضع لحجم الإنتاج الموازنيإعادة استخدام budget_lines + عمود budgeted_monthly_volume على مركز العمل؛ بلا موازنة معتمدة يُعلَن 6 انحرافات فقط (D-22)S
A26مهمةطريقة الإهلاك بالاستخدام غائبة في المحاسبة — سجل الأصول الثابتة نفسه موجود ومتحقق منه، والطرق الحالية قسط ثابت/متناقص/مُعجَّل فقطحالة UnitsOfProduction في تعداد طرق الإهلاك + توليد قيد الإهلاك من قراءات عداد الأشواط (شرط مسبق للمرحلة 2)M
A27مهمةتعدادا أنواع المرجعية في المخزون (ReceiptReferenceType/IssueReferenceType) منضبطان ولا يعرفان الإنتاج — المرجعية production_order تتطلب توسعتهماإضافة حالة ProductionOrder للتعدادين مع أنواع الحركة (A19)S
A19تحسينيةأنواع حركات مخزنية خاصة بالإنتاج غير معرّفةإعادة استخدام صرف/استلام بمرجع production_order في النسخة الأولىS
A20تحسينيةلا نموذج مواقع/أرفف تحت المخزن لمناطق التجهيزتمثيل المواقع كمخازن فرعية في النسخة الأولىM
A21تحسينيةطباعة باركود الدفعات وبطاقات تتبع الأوامرقوالب جديدة فوق خدمة الطباعة القائمةS
A22تحسينيةتوزيع تكاليف الأقسام الخدمية بطريقة مباشرة فقط (لا تنازلي/تبادلي)الاكتفاء بالمباشر في النسخة الأولىM

الاتجاه B — ما أغفلته الوثيقة نفسها: نقد خبير قبل التنفيذ

الوثيقة محكمة في القلب (تخطيط، تنفيذ، تكاليف) لكنها صامتة عند الحواف التشغيلية التي يصطدم بها أي مصنع حقيقي في الشهر الأول. كل بند أدناه يجب حسمه كملحق مكتوب قبل بدء خطوات البناء، وإلا عاد كإعادة عمل مكلفة في طبقتي التنفيذ والتكاليف.

#الخطورةما أغفلته الوثيقة ولماذا يهمالعلاج المقترحالحجم
B1حرجةسياسة تحويل وحدات القياس غير منصوصة (كجم بودرة ← عدد أطباق): الوثيقة تفترض أن النظام المضيف يتكفل بها دون تحديد نقاط التطبيق أو التقريبملحق سياسة من صفحة واحدة يربط محرك units/product_units القائم بكل نقطة لمس (تفجير BOM، صرف، تكلفة)S
B2حرجةتتبع نسب الدفعات (أي خامة دخلت أي منتج) غائب كقاعدة عابرة رغم أن الدرجات والتشغيل للغير يستلزمانهإضافة قاعدة تتبع + جدول نسب لنموذج البيانات (مقترن بـ A4)M
B3حرجةالعمليات المُسنَدة للخارج غير ممثلة: الوثيقة تغطي تشغيل خامات العميل لدينا فقط، ولا تغطي إرسال عمليتنا للخارج (طلاء، طباعة…) — وهو شائع جداًنوع عملية Subcontract + ربط بأمر شراء خدمة + وعاء «تحت تشغيل لدى مورد»M
B4حرجةكيان التقويم التشغيلي/الورديات غير معرّف رغم أن كل حسابات الطاقة والوعود تعتمد عليه (مؤجل مع الجدولة المتقدمة خطأً)تخصيص كيان التقويم الآن وعدم انتظار مرحلة APS (مقترن بـ A8)M
B5مهمةتدفق إعادة التشغيل Rework اسم في تعداد فقط: لا آلية لتوليد أمر إعادة ولا تكلفته ولا عودته للمسارملحق تدفق إعادة التشغيل وتكلفته (تالف طبيعي/غير طبيعي)M
B6مهمةلا تمييز بين المنتجات المشتركة والمنتجات الثانوية، ولا تهيئة لطريقة توزيع التكلفة (قيمة سوقية / وحدات / نسبة ثابتة)هيكل مخرجات على BOM + تعداد طرق توزيع قابلة للتهيئةM
B7مهمةدلالات العكس Reversal لمستندات الصرف/التأكيد/الاستلام مذكورة كحالة بلا خوارزمية (ماذا يُرَدّ للمخزون؟ ماذا يُعكَس محاسبياً؟)تعريف خوارزمية عكس لكل مستند وشروطها المسبقةS
B8مهمةسلوك الصرف الآلي Backflush عند نقص الرصيد غير محدد (منع التأكيد؟ سالب؟ جزئي؟)سياسة مربوطة بعلم allow_negative_stock لكل مخزنS
B9مهمةلا نسبة سماح للإنتاج الزائد/الناقص ولا قاعدة إقفال تلقائي ولا معالجة WIP بين الاستلامات الجزئيةنسبة سماح قابلة للتهيئة + قاعدة إقفال موثقةS
B10مهمةسياسة توزيع جدول الربط Pegging عند العجز وإعادة الربط عند إعادة التخطيط غير معرّفتينقاعدة أولوية + قاعدة إعادة ربط عند كل دورة MRPS
B11مهمةغموض تعدد المخازن/المصانع: MPS يحمل مصنعاً لكن MRP يصفّي رصيداً واحداً بلا بُعد مخزنقرار تصفية لكل مخزن متوائم مع نموذج الفروع والمخازن في MoonM
B12مهمةلا مصدر للتنبؤ بالطلب: MPS يستهلك توقعات لا أحد ينتجها، وMoon بلا وحدة تنبؤشاشة إدخال/استيراد توقعات يدوية في النسخة الأولىM
B13مهمةإدارة التغيير الهندسي ECO مُسمّاة كشرط حوكمة لكن بلا كيان أو تدفق (مرحلة مستقبلية)الإصدارات + موافقات ApprovalModule::Production كبديل خفيف مؤقتM
B14مهمةمرتجع الخامات من الصالة للمخزن (فائض الصرف) غير ممثل — مستند قياسي في أي نظام تنفيذمستند مرتجع إنتاج (عكس صرف بقيد دائن على WIP)S
B15مهمةطبقة الصالة بلا أعطال ولا إيقاف/استئناف ولا إنذار Andon، وOEE مذكور بلا معادلةحالة Paused + سجل توقفات بسيط الآن؛ OEE مرحلة لاحقةM
B16مهمةمصير الانحرافات عند الإقفال (مصروف أم توزيع على المخزون؟) وإجراء مراجعة التكلفة المعيارية وإعادة تقييم الرصيد غير محددينسياسة «مصروف على قائمة الدخل» للنسخة الأولى + إجراء إعادة تقييم موثقS
B17مهمةملكية مراكز التكلفة غامضة: الوثيقة تدرجها ككيان تصنيعي بينما المحاسبة في Moon تملكها فعلاًقرار صريح: المحاسبة هي مصدر الحقيقة والتصنيع يرتبط فقطS
B18مهمةفوترة أجر التشغيل للغير ونقطة الفاتورة الإلكترونية متجاهلتان رغم أنهما التزام تنظيميفاتورة خدمة عبر المبيعات تمر بوحدة EInvoicing القائمةS
B19تحسينيةأساس عملة التكلفة غير محدد رغم تعدد العملات في النظامإعلان التكاليف المعيارية بالعملة الأساسية فقطS
B20تحسينيةلا إجراء جرد فعلي للإنتاج تحت التشغيل نهاية الفترةإجراء جرد WIP دوري لاحقاًM
B21تحسينيةتسلسل المنتج التام غير مطروح رغم جاهزية product_serialsتسلسل اختياري للتام عند الاستلامS
B22تحسينيةخطط المعاينة بالعينات AQL غير محددة (الجودة مؤجلة كلياً للوثيقة وQMS يغطي الوجهة)امتداد QMS لاحقS
B23تحسينيةلا متطلبات تعريب/RTL إطلاقاً في الوثيقةفرض عرف Moon (name_ar ومفاتيح ترجمة) على كل الكيانات الـ26S
B24تحسينيةلا حزمة تقارير سوى باريتو الانحرافات (لا أعمار WIP ولا كشف تكلفة أمر ولا تحميل طاقة ولا تحليل تالف)قائمة تقارير معتمدة للنسخة الأولىM
B25تحسينيةدلالات BOM الوهمي Phantom وبنية الأصناف البديلة مُسمّاة بلا تعريفملحق يحدد التفجير العابر وأولوية/نسب البدائلS

جدول المخاطر الموحّد (الفجوات الحرجة والمهمة)

ترتيب تنفيذي مقترح: الفجوات الحرجة في الاتجاه A هي مسار البناء نفسه، أما فجوات الاتجاه B الحرجة والمهمة فيجب حسمها كملاحق مكتوبة قبل بدء خطوات البناء الاثنتي عشرة — كلفة حسمها اليوم صفحات، وكلفة تجاهلها إعادة بناء طبقتي التنفيذ والتكاليف.

الفجوةالاتجاهالخطورةالعلاجالحجم
الترحيل المحاسبي من الإنتاج (A1)AحرجةActions فوق CreateJournalEntry بنمط LISL
تحريك المخزون من الإنتاج (A2)Aحرجةربط ApproveIssue/ApproveReceipt بنمط GRNM
طبقة التخطيط MPS/MRP/CRP (A3)Aحرجةبناء كامل طبقاً للملف الثانيL
الدفعات والنسب والتتبع (A4+B2)A+Bحرجةدفعات أولية + شجرة نسب + FEFOL
منطق الحجز (A5)Aحرجةreserve()/release() — الخطّاف جاهزS
حقول الصنف التصنيعية (A6)Aحرجةجداول امتداد فوق بطاقة الصنفM
التكلفة المعيارية والانحرافات السبعة (A7)Aحرجةمحرك انحرافات قبل إقفال الفترةL
التقويم التشغيلي والورديات (A8+B4)A+Bحرجةكيان تقويم الآن دون انتظار APSM
الإصدارات واللقطة المجمّدة (A9)AحرجةRouting مُصدَّر + لقطة عند الاعتمادM–L
العُدد والإسطمبات وعدّادات الأشواط (A10)Aحرجةmfg_tools + قراءات عدادات في CMMSM
موضع مُسبّب تكلفة الأعباء (A23)Aحرجةعمود cost_driver على مركز العمل (المرحلة 2)S
أعمدة طاقة ومعدلات مراكز العمل (A24)Aحرجةجدولة التوسعة: المعدلات بالمرحلة 2 والتقويم بالمرحلة 4M
سياسة تحويل الوحدات (B1)Bحرجةملحق سياسة فوق المحرك القائمS
الإسناد الخارجي للعمليات (B3)Bحرجةنوع عملية + أمر شراء خدمة + WIP لدى موردM
طلبات شراء آلية من MRP (A11)Aمهمةاستخلاص CreatePurchaseRequestS
موافقات الإنتاج (A12+B13)A+Bمهمةتوسيع ApprovalModule كبديل ECO مؤقتS–M
مصدر معدل الأجور (A13)Aمهمةالمعدل على مركز العمل + تجاوز اختياريS
إرجاع الموعد للمبيعات (A14)Aمهمةحقل + Action كتابة عائدةS
وعاء أمانات العميل (A15)Aمهمةبُعد ملكية / مخازن أمانات صفرية القيمةM
الأحداث والاختبارات في الوحدة (A16)Aمهمةعمود أحداث + مستمعون + تغطيةM
شاشة الصالة والبث اللحظي (A17)Aمهمةاستنساخ pos-layout + قناة بثM
تصنيف مراكز التكلفة وملكيتها (A18+B17)A+Bمهمةعمود نوع + قرار: المحاسبة هي المصدرS
إعادة التشغيل Rework (B5)Bمهمةملحق تدفق وتكلفة إعادة التشغيلM
مشترك/ثانوي وطرق التوزيع (B6)Bمهمةهيكل مخرجات + تعداد طرقM
دلالات العكس (B7)Bمهمةخوارزمية عكس لكل مستندS
عجز الصرف الآلي (B8)Bمهمةسياسة مربوطة بعلم المخزنS
سماحيات الزيادة/النقص والإقفال (B9)Bمهمةنسب سماح قابلة للتهيئةS
سياسة جدول الربط Pegging (B10)Bمهمةقاعدة أولوية + إعادة ربطS
تصفية متعددة المخازن (B11)Bمهمةقرار تصفية لكل مخزنM
مصدر التنبؤ بالطلب (B12)Bمهمةإدخال/استيراد يدوي أولاًM
مرتجع الصالة للمخزن (B14)Bمهمةمستند مرتجع إنتاجS
الأعطال والإيقاف وOEE (B15)Bمهمةحالة إيقاف + سجل توقفات الآنM
مصير الانحرافات ومراجعة المعياري (B16)Bمهمةسياسة مصروف + إجراء إعادة تقييمS
فوترة أجر التشغيل والفاتورة الإلكترونية (B18)Bمهمةفاتورة خدمة عبر EInvoicingS
حجم الموازنة لانحراف FOVV (A25)Aمهمةإعادة استخدام budget_lines + عمود حجم موازني؛ وإلا 6 انحرافاتS
إهلاك بالاستخدام للقوالب (A26)Aمهمةحالة UnitsOfProduction + قيد إهلاك من العدادM
تعدادا مرجعية المخزون (A27)Aمهمةحالة ProductionOrder على التعدادينS

الخلاصة للإدارة: لا توجد فجوة واحدة تستدعي تعديلاً جوهرياً في وحدات المحاسبة أو المخزون أو المشتريات — القضبان موجودة ومجرّبة، والعمل الحرج كله «أسلاك ربط» تُبنى داخل وحدة التصنيع نفسها. أما الوثيقة فتُعتمد كما هي بشرط إلحاق الملاحق القصيرة التي تحسم الحواف التشغيلية (الإسناد الخارجي، إعادة التشغيل، المرتجعات، العكوس، التقويم، التتبع، السماحيات) قبل اليوم الأول من التنفيذ — وقد جُدولت كتابتها الآن في مسار ملاحق المرحلة 0 بخارطة الطريق (المالك: مهندس المنتج + خبير المصنع، مدة أسبوع، بوابة إلزامية قبل خروج المرحلة 1).

🔌

عقود التكامل: كيف يتفاعل التصنيع مع كل موديول (Integration Contracts)

يحدّد هذا القسم العقود الملزمة بين وحدة التصنيع وكل وحدة قائمة في النظام، باتباع الوصفة المُجرَّبة في وحدة المختبرات: الاستدعاءات الأمامية عبر Actions، والتفاعلات الخلفية عبر الأحداث (Events). الخلاصة الإدارية: التصنيع يعتمد على ثماني وحدات قائمة ولا تعتمد عليه أي وحدة؛ نقاط البيع والمتجر الإلكتروني والفوترة الإلكترونية بلا أي ارتباط مباشر — يصلهم أثر التصنيع عبر المخزون والمبيعات فقط. المطلوب بناؤه عند الجيران محدود: سبعة مداخل خدمية رقيقة فقط، والباقي قضبان جاهزة ومُجرَّبة. هوية الوحدة الملزمة لكل عقد أدناه (القرار D-01): طبقة التصنيع تعيش داخل Modules/Production الموسَّعة — بادئة الصلاحيات production.*، مفتاح الترقيم production (موصول أصلاً)، وفضاء الإعدادات production.*، ومراكز العمل هي production_centers الموسَّعة لا جدولاً جديداً.

القاعدتان الحاكمتان

مصفوفة التفاعل مع كل موديول

الموديولماذا يأخذ منه التصنيعماذا يعطيهالآلية
النواة (Core)دليل الأصناف products، وحدات القياس والتحويلات product_units، الترقيم SequenceService، الإعدادات، نطاق الفروع، المرفقات، الموافقاتجدول امتداد إعدادات الصنف التصنيعية mfg_item_mrp_settings، تسجيل مساهم صلاحيات على البادئة القائمة production، إضافة حالة ApprovalModule::Productionقراءة + خدمات للأمام، وتسجيل عند الإقلاع
المخزون (Inventory)StockService للتسعير قراءةً فقط (getIssueCost/getProductCost)، وإجراءا ApproveIssue وApproveReceipt هما قناة تغيير الأرصدة الوحيدة — لا استدعاء مباشر لزيادة أو إنقاص رصيد بلا مستند، أرصدة التوفر، المستودعاتحجوزات المواد عند الإصدار (بناء جديد reserve/release)، صرف خام ← تحت التشغيل، استلام تام بتكلفة مُجمَّعة، مخازن أمانة بعلم is_consignment لمواد العميل (Toll — قرار D-15)Actions للأمام + مرجعية reference_type='production_order' + إضافة حالة ProductionOrder لتعدادي أنواع المرجعية
المشتريات (Purchases)أوامر الشراء المفتوحة كعرض زمني لاحتساب صافي الاحتياج (MRP)طلبات شراء آلية من تخطيط الاحتياجات تدخل دورة الاعتماد والتحويل القائمةAction جديد رقيق CreatePurchaseRequest يُستدعى للأمام
المبيعات (Sales)أوامر البيع المؤكدة = مصدر الطلب لخطة الإنتاج الرئيسية، ومحفّز أوامر التصنيع حسب الطلبتاريخ تسليم موعود محسوب بالطاقة (CTP) يُكتب رجوعاً في عمود promised_date (الاسم القانوني الوحيد — D-16)، وربط الطلب بالعرض عبر جدول mfg_peggings المملوك للتصنيعFK على جانب التصنيع فقط + Action جديد SetPromisedDate
الحسابات (Accounting)قناة القيد الوحيدة CreateJournalEntry، مراكز التكلفة وبُعد السطر، توزيع الخدمات CostAllocationService، زرع الحسابات، إغلاق الفتراتخمس عائلات قيود لكل أمر إنتاج + قيد امتصاص الأعباء الشهري، كل قيد موسوم بـsource_type='production_order' ومركز التكلفةAction للأمام حصراً؛ التسوية قبل CloseFiscalPeriod
الموارد البشرية (HRM)سلسلة هوية المشغّل employees.user_id، الورديات والحضور؛ معدل الأجر في الإصدار الأول من مركز العمل labor_cost_rate (قرار D-06)، وحقول معدلات HRM مؤجلة كتجاوز اختياري لاحقكميات أجر القطعة المؤكدة لكل موظف لتغذية الرواتب، وساعات العمل الفعليةمستمع داخل التصنيع يستدعي Action جديداً بملكية HRM (RecordPieceworkEntry) يكتب جدولاً تملكه HRM (hrm_piecework_entries) تقرؤه الرواتب — لا تقرأ HRM أي جدول mfg_* إطلاقاً
الجودة (QMS)نتائج الفحص التي تحكم تقدّم العملية وحالة جودة الاستلام (مفرج/معلّق/مرفوض)طلبات فحص أثناء التشغيل للعمليات الموسومة inspection_required، وبلاغات عدم مطابقة عند تجاوز عتبة الخردةActions جديدة CreateInspection/CreateNonConformance؛ الجداول جاهزة بعمود production_order_id
الصيانة (CMMS)سجل أصول الماكينات والقوالب cmms_assets، جداول الصيانة الوقائية بالعداد، ساعات التوقف لخصمها من الطاقة المتاحةعدادات أشواط القوالب التراكمية بعد كل تأكيد، وإطلاق أمر صيانة وقائية عند بلوغ العتبةFK على جانب التصنيع + Actions جديدة RecordMeterReading/CreateWorkOrder وجدول عدادات جديد + مدخل قراءة فقط GetDowntimeWindows يستهلكه CRP بدل أي قراءة مباشرة لجداول الصيانة
نقاط البيع والمتجر (POS/WebStore)توفر المنتج التام بشكل غير مباشر فقط: الاستلام يرفع رصيد المخزون الذي يقرآنه أصلاًصفر ارتباط مباشر — المخزون هو الوسيط
الفوترة الإلكترونية (EInvoicing)لا شيء مباشر؛ فاتورة أجر التشغيل لحساب الغير (Toll) تصدر كفاتورة مبيعات عادية وتمر عبر القناة القائمةصفر ارتباط مباشر — المبيعات هي الوسيط

عقود الأحداث المسماة

الحدثالمُصدِرالمستهلكونأهم حقول الحمولة
ProductionOrderReleasedإصدار أمر الإنتاج (مع تجميد نسخة BOM والمسار)حجز المواد، تجهيز خطط الفحص، إدراج أول عملية في طابور المحطةorder_id, product_id, quantity, production_type, material_ownership, bom_snapshot_id, routing_snapshot_id
MaterialIssuedترحيل صرف المواد بعد ApproveIssue والقيدمُجمِّع تكلفة تحت التشغيل، فك الحجز، تحديث النواقص ولوحة المتابعةissue_id, order_id, operation_no, lines[product, qty, unit_cost, batch_no, ownership], journal_entry_id
ConfirmationPostedترحيل تأكيد العملية (يرحّل أجور وأعباء مُحمَّلة) — الاسم القانوني الموحّد (قرار D-17)التقدّم الآلي للعملية التالية (حدث OperationCompleted)، مراكمة أشواط القالب، تغذية أجر القطعة عبر RecordPieceworkEntry، تقييم الخردة لبلاغ عدم مطابقةorder_id, operation_no, work_center_id, tool_id, employee_id, yield[grade, qty], scrap_quantity, labor_hours, reason_code
GoodsReceiptPostedترحيل استلام التام بعد ApproveReceipt والقيدإيفاء الربط مع أوامر البيع، تحديث التوفر والوعود، متابعة بوابة الجودة المعلّقةgr_id, order_id, lines[item, grade_code, qty, unit_cost, quality_status, batch_no], journal_entry_id
ProductionOrderClosedإقفال الأمر عبر CloseProductionOrder (احتساب الانحرافات السبعة وتصفير WIP) — الاسم القانوني الموحّد (قرار D-17)توجيه الانحرافات للمسؤولين حسب النوع وحدود التفاوت، قائمة مراجعة المعايير، تقرير باريتوorder_id, variances[type, amount, percent, band, owner_role], journal_entry_id
MoldShotCountReachedمُراكِم أشواط الأدوات عند بلوغ عتبة العدادإطلاق أمر صيانة وقائية في CMMS وتحويل حالة القالب إلى صيانة (يُستبعد من الطاقة)tool_id, cmms_asset_id, cycles_used, life_cycles, threshold
MrpRunCompletedتشغيل تخطيط الاحتياجاتإنشاء طلبات الشراء المخططة، إنشاء أوامر الإنتاج المخططة، رسائل الاستثناءاتmrp_run_id, planned_purchase_count, planned_order_count, exceptions[]

المداخل المسماة التي يستدعيها التصنيع

المدخلالموديولالحالةالاستخدام
CreateJournalEntryالحساباتجاهز ومُجرَّبكل قيود دورة التكلفة الخمسة وقيد الامتصاص الشهري
ApproveIssue / ApproveReceipt / StockService::getIssueCostالمخزونجاهزالصرف والاستلام والتسعير بطريقتي FIFO/المتوسط
StockService::reserve/releaseالمخزونبناء جديدحجز المواد عند الإصدار وفكّه عند الصرف (العمود موجود بلا منطق)
CreatePurchaseRequestالمشترياتبناء جديدتحويل مخرجات MRP إلى طلبات شراء داخل الدورة القائمة
SetPromisedDateالمبيعاتبناء جديدكتابة تاريخ التسليم الموعود المحسوب بالطاقة رجوعاً في promised_date
CreateInspection / CreateNonConformanceالجودةبناء جديدبوابات الفحص أثناء التشغيل وعند الاستلام وبلاغات الخردة
RecordMeterReading / CreateWorkOrderالصيانةبناء جديدعدادات أشواط القوالب وأوامر الصيانة الوقائية
GetDowntimeWindowsالصيانةبناء جديدمدخل قراءة فقط يخصم نوافذ الأعطال من طاقة CRP بلا قراءة جداول مباشرة
RecordPieceworkEntryالموارد البشريةبناء جديدتغذية أجر القطعة في جدول تملكه HRM تقرؤه الرواتب
GetLaborRateالموارد البشريةمؤجل بعد الإصدار الأولتجاوز اختياري لمعدل الموظف لاحقاً — الإصدار الأول يعتمد معدل مركز العمل (D-06)
CostAllocationService / SequenceService / SettingsServiceالحسابات / النواةجاهزتوزيع مراكز الخدمة، الترقيم المستندي، ربط الحسابات بالإعدادات

خريطة الترحيل المحاسبي لدورة التكلفة

  1. صرف المواد: مدين WIP / دائن مخزون الخام — بالكمية × تكلفة الصرف الفعلية — نوع production_material_issue.
  2. الأجور المباشرة عند التأكيد: مدين WIP / دائن أجور مُحمَّلة — بالساعات × المعدل أو الكمية × أجر القطعة — نوع production_labor.
  3. الأعباء الصناعية عند التأكيد: مدين WIP / دائن أعباء مُحمَّلة — بمُسبّب التكلفة × معدل التحميل (كلاهما على مركز العمل: عمود cost_driver الجديد × overhead_rate القائم) — نوع production_overhead؛ ومفاتيح الحسابات كلها في فضاء production.* الواحد الذي تبذره المرحلة 0 نفسها.
  4. الخردة غير الطبيعية: مدين مصروف خردة / دائن WIP — نوع production_scrap.
  5. استلام التام بالمعياري مع توزيع القيمة على الدرجات (A/B/C): مدين مخزون التام / دائن WIP — نوع production_receipt.
  6. التسوية عند الإقفال: الرصيد المتبقي في WIP يُحلَّل إلى الانحرافات السبعة (سعر واستخدام المواد ← المشتريات/الإنتاج، معدل وكفاءة العمالة ← الإنتاج، إنفاق وكفاءة الأعباء ← الإدارة، حجم الأعباء الثابتة ← المبيعات/الإدارة) ضمن حدود تفاوت: أقل من 2% طبيعي، 2–5% مراقبة، أكثر من 5% تحقيق — نوع production_variance.
  7. نهاية الشهر: مطابقة الأعباء المُحمَّلة مع الفعلية بعد توزيع مراكز الخدمة، وترحيل الفرق لقائمة الدخل قبل إغلاق الفترة المالية.

في أوامر التشغيل لحساب الغير (Toll) لا يُقيَّد أي عنصر مواد — مواد العميل أمانة بلا قيمة دفترية، وWIP يحمل تكلفة التحويل فقط، والإيراد فاتورة أجر تشغيل عبر المبيعات تمر للفوترة الإلكترونية كالمعتاد.

قانون الاعتماد

8وحدات يستوردها التصنيع للأمام
0وحدات تستورد التصنيع
7أحداث نطاقية مسماة
15مدخلاً خدمياً (منها 7 بناء جديد + 1 مؤجل)
7عائلات قيود محاسبية
🗓️

خارطة الطريق: مراحل البناء بمخرجات قابلة للتشغيل (Build Roadmap)

خطة تنفيذ من ست مراحل تُوفّق بين ترتيب البناء الذي نصّت عليه المواصفة (12 خطوة في ملف التكامل) وبين الواقع الفعلي لـMoon ERP: موديول Modules/Production القائم بجداوله السبعة، وقضبان التكامل الجاهزة في المخزون والمحاسبة. كل مرحلة تنتهي بمُخرَج تشغيلي ملموس يستفيد منه المصنع فوراً — وليس مجرد طبقة تقنية مؤجّلة القيمة.

لماذا نخالف ترتيب المواصفة في ثلاث نقاط؟

المواصفة تضع «التكاملات» في الخطوة الأخيرة (12) وتبني التخطيط (MPS/MRP/CRP) قبل التنفيذ. قرارنا المدروس عكس ذلك في ثلاث نقاط، التزاماً بقاعدة المواصفة نفسها «كل حدث فعلي يُرحّل قيداً محاسبياً لحظياً» وبوصفة Moon ERP المجرَّبة:

وقرار الاتجاه المعتمد: التوسعة في المكان — نمدّ موديول Modules/Production القائم ولا نعيد بناءه؛ لا توجد بيانات إنتاجية ولا مفاتيح خارجية واردة، والواجهة الأمامية وخريطة الـ19 صلاحية جاهزتان. التقدير: S ≈ أسبوع مطوّر، M ≈ 2–4 أسابيع، L ≈ 4–8 أسابيع — وهذا مقياس للمراحل ويختلف عن مقياس الفجوات المفردة في قسم الفجوات (S = أيام / M ≤ 3 أسابيع / L > 3 أسابيع)؛ لا يُسقط أحدهما على الآخر عند وضع الميزانية.

6مراحل (0–6)
1مرحلة فقط حتى أول تشغيل حقيقي
~26كياناً مستهدفاً بنهاية الخطة
7جداول قائمة تُحفَظ كما هي
22قراراً إدارياً مطلوباً

المراحل ومخرجاتها التشغيلية

المرحلةالنطاق الأساسيالموديولات المتأثرةماذا يستطيع المصنع فعله بعدها؟الحجم
0 — التأسيس والتصليب توحيد الهجرات الدفاعية الثلاث، إنشاء طبقات Actions/Events/Listeners الغائبة، تسجيل مساهم الصلاحيات production في PermissionDependencyRegistry، إضافة حالة Production إلى ApprovalModule، تفعيل BomStatus المعلَّق، بذر مفاتيح إعدادات فضاء production.* الوحيد (نفس الفضاء الذي تقرؤه إجراءات الترحيل لاحقاً)، وهيكلة اختبارات Pest — إضافةً إلى مسار ملاحق المواصفة: كتابة ملاحق الفجوات B1–B25 كلها (المالك: مهندس المنتج + خبير المصنع، مدة أسبوع بالتوازي، بوابة إلزامية قبل خروج المرحلة 1). Production, Core لا مخرج تشغيلي — إزالة الدين الهندسي وتجهيز الأساس لكل ما بعده. S
1 — بيانات أساسية v2 + تنفيذ حقيقي BOM متعدد المستويات بإصدارات وتواريخ سريان وبدائل في جدول ابن mfg_bom_substitutes (لا JSON — قرار D-18)، آلة حالات الأمر Planned→Released→InProcess→Completed→Closed مع التجميد (Frozen Snapshot) عند الإطلاق، حجز المخزون، صرف مواد فعلي (خصم مخزون + قيد WIP) واستلام منتج تام بتكلفة فعلية مجمّعة (إضافة مخزون + قيد) عبر مستندي التصنيع mfg_material_issues/mfg_goods_receipts فوق قضبان المخزون (قرار نهائي D-19 — لا استخدام مباشر لمستندات المخزون)؛ حالة جودة الاستلام افتراضياً «مفرج عنه» حتى بوابات المرحلة 6 (D-21). إن انزلق الجدول يُقسَّم إلى 1أ (بيانات أساسية) و1ب (قضبان الترحيل). Production, Inventory, Accounting, Core أول تشغيل حقيقي: أوامر إنتاج يدوية كاملة الدورة بمخزون صحيح وقيود محاسبية لحظية — يتوقف الموديول عن «الكذب» على المحاسبة. L
2 — التوجيه والقوالب والتأكيدات كيانات mfg_routing_headers/operations المُصدَّرة (cavity_count، أزمنة الدورة)، توسعة production_centers بأعمدة الطاقة والمعدلات والمُسبّب (طاقة يومية، مضاعِف، كفاءة، استغلال، معدلات تجهيز/عمالة/آلة، labor_calc، cost_driver — كانت غير مجدولة في أي مرحلة)، سجل القوالب mfg_tools بعمر الدورات مربوطاً بأصول CMMS وبسجل الأصول الثابتة القائم، تأكيدات العمليات بتوزيع الدرجات A/B/C وتخصيص التكلفة بالقيمة (NRV)، الصرف الآلي (Backflush)، وأجر بالساعة أو بالقطعة من معدل مركز العمل (D-06). Production, Accounting, HRM, CMMS تسجيل تشغيل على مستوى العملية بأزمنة فعلية، تكلفة تحويل حقيقية (عمالة + آلة + أوفرهيد داخل WIP)، إنتاج متعدد الدرجات بتكلفة عادلة، وتتبّع عمر القوالب بتنبيهات صيانة. L
3 — محرك التكاليف والانحرافات تكلفة معيارية لكل صنف mfg_standard_costs، طريقة تكلفة لكل صنف (Standard/Actual/Average/FIFO) على جدول الامتداد mfg_item_mrp_settings الذي يُنشأ هنا (قرار D-20 — لا تضخيم لجدول products ولا هجرة Enum عليه)، الانحرافات السبعة (MPV…FOVV) بنطاقات تسامح وتوجيه للمسؤول — مدخلا FOVV: موازنة الإنفاق من budget_lines القائمة + عمود حجم موازني جديد على مركز العمل، وبغيابهما تُعلن 6 انحرافات (D-22) — تسوية الأوفرهيد شهرياً قبل إقفال الفترة، وتوزيع مراكز الخدمة عبر CostAllocationService. Production, Accounting, Core الإدارة تحصل على أثمن مخرجات المواصفة: تفكيك انحراف كل أمر مغلق إلى أسبابه السبعة مع تحديد المسؤول وتقرير Pareto. M
4 — التخطيط: MRP وCRP والربط بالمشتريات والمبيعات إعدادات تخطيط لكل صنف، تشغيل MRP متعدد المستويات (تفجير BOM، قواعد تحجيم الدفعات، فرع التصنيع لحساب الغير)، رسائل استثناءات، جدول الربط mfg_peggings بأوامر البيع، توليد طلبات شراء عبر CreatePurchaseRequest، فحص الطاقة CRP بتقويم عمل وورديات جديد (mfg_work_calendars + ربط calendar_id على مراكز العمل، وخصم الأعطال عبر مدخل القراءة GetDowntimeWindows)، وMPS مبسّط. Production, Purchases, Sales, Inventory المخطِّط يشغّل MRP من الطلب الفعلي والمخزون فيحصل على أوامر إنتاج مقترحة وطلبات شراء تلقائية، ويرى تحميل الطاقة الزائد قبل الإطلاق، وكل أمر إنتاج مربوط بأوامر البيع التي يخدمها. L
5 — شاشات الورش والمتابعة اللحظية طرفية لمسية لكل مركز عمل (على نمط pos-layout) بزرّي [Start]/[Done]، التقدّم الآلي للعملية التالية عبر حدث OperationCompleted، إدخال الكمية/الدرجات/الهالك، ولوحة مشرف حيّة لاكتشاف الاختناقات. Production, HRM, الواجهة الأمامية أرضية مصنع بلا ورق: التكلفة تصبح لحظية بدل إدخال آخر اليوم، والمشرف يرى الاختناق الحالي مباشرة، وتتراكم الأزمنة الفعلية تمهيداً لـOEE. M
6 — التصنيع لحساب الغير والتتبع العميق مخازن أمانة بعلم is_consignment لمواد العميل (تُمسَك ولا تُقيَّم ولا تُشترى — قرار D-15، وبُعد الملكية الكامل مؤجل)، فوترة أجر تشغيل فقط، تشغيلات/دُفعات كاملة الصلاحية في المخزون مع شجرة نسب (Genealogy) من خامة إلى منتج، بوابات فحص QMS على مستوى العملية، خصم أعطال CMMS من طاقة CRP، وتغذية أجر القطعة إلى الرواتب عبر Action بملكية HRM يكتب جدولاً تملكه HRM (لا تقرأ الرواتب أي جدول تصنيعي). Production, Inventory, Sales, QMS, CMMS, HRM, Accounting قبول أعمال تشغيل لحساب الغير بدفاتر نظيفة، وتتبّع أي دفعة منتج تام رجوعاً إلى دفعات الخامات (جاهزية الاستدعاء)، وربط الجودة والصيانة والرواتب بالإنتاج. L

مراحل مستقبلية محجوزة الواجهات وخارج هذه الخطة: الجدولة التفصيلية APS، حساب OEE، أوامر التغيير الهندسي PLM/ECO، والتقاط بيانات الآلات (IoT).

إصلاحات الفجوات المسبقة لكل مرحلة (من الاتجاه المعتمد)

استراتيجية ترحيل البيانات والتأسيس (الجداول السبعة القائمة)

  1. الإبقاء على الجداول السبعة دون إعادة تسمية: لا بيانات إنتاجية ولا مفاتيح خارجية واردة — مخاطر الترحيل شبه معدومة؛ الجداول الجديدة فقط تأخذ بادئة mfg_.
  2. إيقاف النمط الدفاعي: هجرة تحقق واحدة تثبّت الشكل النهائي للجداول السبعة، وكل تغيير لاحق إضافي (ALTER) — لا تكرار لنمط force_create.
  3. هجرة تحويل الحالات: draft→planned، confirmed→released، in_progress→in_process مع تحديث Angular في الإصدار نفسه.
  4. تحويل bom_operations إلى توجيه مُصدَّر في المرحلة 2 (توليد mfg_routing_header لكل BOM له عمليات)، ثم إيقاف الجدول القديم بعد إصدار انتقالي.
  5. التأسيس (Seeders): بذر مفاتيح الإعدادات والحسابات المحاسبية والصلاحيات لكل مرحلة، وحزمة بيانات تجريبية «مصنع الميلامين» (خامة مسحوق، قالب 1 و4 تجاويف، درجات A/B/C) تُستخدم للعرض ولاختبارات الذهب معاً.

استراتيجية الاختبار (بوابة خروج لكل مرحلة)

اختبارات Pest وفق نمط النظام مع حد أدنى 80% تغطية قبل اعتماد أي مرحلة: المرحلة 1 تُثبت توازن كل قيد محاسبي وخصم المخزون وثبات اللقطة المجمّدة بعد الإطلاق؛ المرحلة 2 اختبارات وحدات خالصة لرياضيات التجاويف وتخصيص NRV؛ المرحلة 3 اختبار خاصية أن مجموع الانحرافات السبعة يساوي متبقي WIP حتى القرش؛ المرحلة 4 ملفات ذهبية لسيناريو الميلامين (6000 طبق، عبء 148% يُحل بقالب 4 تجاويف إلى 33 ساعة)؛ المرحلتان 5 و6 اختبارات تزامن الطرفيات وتتبّع النسب وعدم تقييم مخزون الأمانة.

قرارات مطلوبة من الإدارة

القرار المطلوبالخياراتالتوصية
هوية الموديولموديول Manufacturing جديد / توسعة Production القائمالتوسعة في المكان — لا بيانات ولا مراجع واردة، والواجهة والصلاحيات جاهزة
آلة حالات أمر الإنتاجإبقاء الحالات الخمس الحالية / اعتماد آلة المواصفة (مع Closed وCancelled)اعتماد آلة المواصفة مع هجرة تحويل
مالك مراكز التكلفةالإنتاج / المحاسبةالمحاسبة (cost_centers) مع إضافة عمود type؛ مراكز العمل تشير إليها
طريقة التكلفة في الإطلاق الأولمعيارية من اليوم الأول / فعلية (FIFO/متوسط) أولاً ثم معيارية في المرحلة 3فعلية أولاً — القضبان جاهزة، والمعيارية تحتاج محرك الانحرافات
أنواع حركة المخزون الإنتاجيةقيم جديدة في MovementType / الاكتفاء بمرجعية reference_typeقيم جديدة (تقارير أنظف) بموافقة مالك المخزون
مصدر أجر العاملحقول على employees / معدل مركز العمل / خدمة HRمعدل مركز العمل (labor_cost_rate) في الإصدار الأول؛ حقول HRM ومدخل GetLaborRate مؤجلان بعد الإصدار الأول كتجاوز اختياري (مطابق للخريطة)
توقيت التصنيع لحساب الغيرالمرحلة 6 / تقديمه مبكراًالمرحلة 6، ويُقدَّم مكان المرحلة 4 فور توقيع عميل تشغيل فعلي
سياسة عجز الصرف الآلي (Backflush)منع التأكيد / السماح بالسالب / صرف جزئيالمنع افتراضياً مع احترام allow_negative_stock لكل مخزن
طرق توزيع مراكز الخدمةمباشر فقط / بناء Step-Down وReciprocalالمباشر أولاً (موجود عبر CostAllocationService)
إعادة تقييم المخزون عند تفعيل المعياريةإعادة تقييم بقيد / الجديد فقطإعادة تقييم بقيد، بتوقيع المحاسب القانوني
مصدر التنبؤات لـMPSشاشة إدخال يدوي / استيراد / تأجيل MPS كلياًإدخال يدوي + استهلاك أوامر البيع المؤكدة (MPS مبسّط)
إعادة تاريخ الوعد إلى المبيعاتكتابة آلية لتاريخ CTP / حقل استرشاديحقل استرشادي أولاً ثم الأتمتة — العمود promised_date بالاسم القانوني الوحيد (D-16)
نقل البيانات اللحظي لشاشات الورشPolling دوري / WebSockets عبر Laravel ReverbPolling أولاً، وReverb إذا أضرّ التأخير بالتشغيل
نطاق الدفعات في المخزونبُعد دفعات كامل على الأرصدة والطبقات / جدول نسب فقطالبُعد الكامل خلف مفتاح تفعيل لكل شركة (أكبر تغيير عابر للموديولات في الخطة)
نموذج أمانة مواد العميل (D-15)علم is_consignment على المخازن / بُعد ملكية على الأرصدة والحركاتمخازن أمانة بالعلم في الإصدار الأول (نهج الخريطة)، والبُعد الكامل مؤجل
اسم عمود وعد التسليم (D-16)promised_date / promised_delivery_date / production_promised_datesales_orders.promised_date — اسم واحد في كل الوثائق، وAction باسم SetPromisedDate
الأسماء القانونية للأحداث والإجراءات (D-17)تسميات الخريطة / تنويعات العقود وخارطة الطريقاعتماد تسميات الخريطة: ProductionOrderReleased, MaterialIssued, OperationCompleted, ConfirmationPosted, GoodsReceiptPosted, ProductionOrderClosed, MrpRunCompleted؛ وإجراء الإقفال CloseProductionOrder
بنية بدائل BOM (D-18)جدول ابن mfg_bom_substitutes / حقل JSONالجدول الابن بأولوية ونسبة (نهج الخريطة)
ملكية مستندي الصرف والاستلام (D-19)جداول تصنيعية فوق قضبان المخزون / استخدام مستندات المخزون مباشرةالجداول التصنيعية نهائياً — مستندات المخزون بلا موضع لحقول نوع/مستوى الصرف والعملية والدرجة
موطن طريقة التكلفة لكل صنف (D-20)جدول الامتداد mfg_item_mrp_settings / Enum على productsجدول الامتداد، ويُنشأ في المرحلة 3 (لا تضخيم لبطاقة الصنف؛ أعمدة التخطيط تُملأ بالمرحلة 4)
حالة جودة الاستلام قبل بوابات QMS (D-21)مفرج عنه تلقائياً / معلّق افتراضياًمفرج عنه تلقائياً في المراحل 1–5، وتُحسم من نتيجة الفحص اعتباراً من المرحلة 6
سياسة انحراف حجم الأعباء الثابتة FOVV (D-22)حسابه من موازنات budget_lines القائمة + حجم موازني جديد / تقليص النطاقيُحسب عند وجود موازنة معتمدة (إعادة استخدام الموازنات القائمة + عمود حجم على مركز العمل)؛ وإلا تُعلن 6 انحرافات للفترة

الخلاصة التنفيذية للمسار

ست مراحل بأحجام S, L, L, M, L, M, L: المصنع يعمل فعلياً (مخزون وقيود حقيقية على أوامر يدوية) بنهاية المرحلة 1، وكل مرحلة لاحقة تضيف قدرة مكتملة بذاتها — تكلفة التحويل، ثم الانحرافات السبعة، ثم MRP/CRP، ثم شاشات الورش اللحظية، ثم التشغيل لحساب الغير والتتبع — دون أي إعادة عمل، لأن التكامل مع المخزون والمحاسبة مبنيّ من الأساس داخل كل مرحلة لا مؤجَّلاً إلى الخطوة الأخيرة كما اقترحت المواصفة.

🏗️

موديول الإنتاج الحالي في 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، والعدد/القوالب). مخاطر الترحيل شبه معدومة لعدم وجود بيانات أو ارتباطات قائمة (استنتاج).

📦

المخزون والمشتريات: شريان التصنيع (Inventory & Purchases)

وحدتا Modules\Inventory وModules\Purchases هما الجاران الأكثر التصاقاً بوحدة التصنيع المقترحة: منهما تُحجَز المواد، وإليهما تُصرَف للإنتاج، ومنهما تُستلَم المنتجات النهائية، وعبرهما يُطلِق نظام تخطيط الاحتياجات (MRP) طلبات الشراء. هذا القسم يوثّق ما هو جاهز للاستخدام كما هو، وما ينقص ويجب بناؤه، مع تحديد نقاط الربط البرمجية بدقّة.

سيِّد الأصناف ووحدات القياس (Item Master & UoM)

سيِّد المنتجات مملوك لوحدة Modules\Core ومشترَك بين كل الوحدات؛ المخزون والمشتريات يشيران إليه بمفتاح خارجي فقط. البنية الأساسية لوحدات القياس والتحويلات قوية وجاهزة لإعادة الاستخدام في قوائم المكوّنات (BOM) ومسارات التصنيع.

التتبّع بالدُفعة والتسلسل (Batch / Lot / Serial)

التتبّع بالرقم التسلسلي (Serial) مكتمل ومُدار بجدول product_serials مع دورة حياة مُلزَمة عند الاستلام والصرف. أمّا التتبّع بالدُفعة (Batch/Lot) فهو ناقص جوهرياً: لا يوجد جدول رئيسي للدُفعات ولا أرصدة على مستوى الدُفعة؛ batch_number وexpiry_date مجرّد حقول نصّية على بنود الاستلام/الصرف. أرصدة المخزون وطبقات التكلفة مفهرسة بـ(منتج/متغيّر/مستودع) فقط دون الدُفعة.

فجوة التصنيع يحتاج نَسَب الدُفعات (أي دُفعات المواد الخام دخلت في أي دُفعة منتج نهائي) والصرف وفق الأقرب انتهاءً (FEFO) — وهذا غير ممكن في النموذج الحالي ويتطلّب جدول أرصدة دُفعات وخدمة مخزون واعية بالدُفعة. استنتاج

خدمة المخزون المركزية (StockService)

كل حركات المخزون تمرّ عبر Modules\Inventory\Services\StockService. تدعم الخدمة طريقتَي تقييم: الوارد أولاً صادر أولاً (FIFO) عبر طبقات التكلفة، والمتوسّط المرجّح (WAC) عبر الرصيد. الطريقة تُضبَط على مستوى الشركة بإعداد inventory.valuation_method (الافتراضي weighted_avg).

تدفّق الاستلام والشراء (GRN & Receipt Flow)

النمط المرجعي الذي يجب أن يحاكيه التصنيع لاستلام المنتجات النهائية موجود في PurchaseGrnController::approve(): يُنشئ مستند استلام InventoryReceipt بحالة مسوّدة ثم يستدعي ApproveReceipt::execute() الذي يزيد المخزون فعلياً ويُنشئ طبقة التكلفة. أوضاع الاستلام (purchases.grn_mode): مباشر، أو باستلام، أو باستلام مع فحص جودة.

  1. توليد رقم المستند عبر SequenceService::generateNext($company,'inventory','receipt').
  2. إنشاء InventoryReceipt بحالة Draft وبنوده مع تمرير batch_number وexpiry_date وserial_numbers.
  3. استدعاء app(ApproveReceipt::class)->execute($receipt, $userId) لزيادة المخزون.
  4. تحديث كميات الاستلام على أمر الشراء وإعادة احتساب حالته.

طلب الشراء ← أمر الشراء (مدخل MRP)

سيُنشئ تخطيط الاحتياجات (MRP) طلبات شراء آلياً. الطلب موجود في purchase_requests (مع needed_by وpriority وcost_center_id وconverted_to_order_id)، ويتحوّل إلى أمر شراء عبر مسار convertFromRequest الذي يَسِم الطلب بحالة Converted. حدود إعادة الطلب مخزّنة على المنتج، لكن وحدة التنبيهات ReorderAlertController تنبيهية فقط ولا تُنشئ طلبات شراء آلياً.

فجوة إنشاء طلب الشراء يقع اليوم داخل المتحكّم فقط؛ يُنصَح باستخراج إجراء Purchases\Actions\CreatePurchaseRequest ليستدعيه MRP داخلياً دون المرور عبر واجهة HTTP. استنتاج

الترحيل المحاسبي وتكلفة البضاعة المباعة (GL & COGS)

نقطة جوهرية: وحدة المخزون لا تُرحِّل أي قيود محاسبية — حركة المخزون منفصلة عن الترحيل المحاسبي. الوحدة المستهلِكة هي من تكتب القيد دائماً عبر البوّابة الوحيدة Modules\Accounting\Actions\CreateJournalEntry:

الاستدعاءات البرمجية الدقيقة لوحدة التصنيع

الغرضالاستدعاء / الجدولالحالة
حجز المواد عند إطلاق أمر الإنتاجزيادة inventory_stock_balances.reserved_quantity (عبر إجراء جديد ReserveOrderComponents)يُبنى
صرف المواد للإنتاج (خام ← تحت التشغيل)ApproveIssue::execute($issue)StockService::decreaseStock + قيد مدين WIP/دائن المخزون عبر CreateJournalEntryجاهز جزئياً
استلام المنتج النهائي (تحت التشغيل ← نهائي)InventoryReceipt (Draft) ← ApproveReceipt::execute($receipt) + قيد مدين المخزون النهائي/دائن WIPجاهز
إطلاق طلبات الشراء من MRPإنشاء PurchaseRequest + بنوده، ثم convertFromRequestPurchaseOrderجاهز جزئياً
تكلفة الصرف للمعاينةStockService::getIssueCost() / getProductCost()جاهز
مواقع الورشة وتحت التشغيلتمثيلها كسجلّات warehouses (لا يوجد نموذج مواقع/أرفف فرعية)يُبنى
2وحدتان متاخمتان
5دوال StockService عامة
FIFO+WACطريقتا تقييم
9فجوات يجب سدّها

ملخّص الفجوات الجوهرية للمجلس

💰

الحسابات والنواة: القيود ومراكز التكلفة والقضبان (Accounting & Core Rails)

يوضّح هذا القسم البنية المالية القائمة بالفعل في النظام والتي ستعتمد عليها وحدة التصنيع لترحيل تكاليف الإنتاج: قيود اليومية، الدليل المحاسبي، مراكز التكلفة، إغلاق الفترات، والعملات. الخلاصة الإدارية: القضبان المالية جاهزة ومُجرَّبة فعلياً في وحدة المختبرات، ومراكز التكلفة موجودة ولا تحتاج بناءً جديداً؛ المطلوب هو منطق التكاليف نفسه داخل وحدة التصنيع.

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

أي ترحيل إلى دفتر الأستاذ العام يمر حصراً عبر إجراء واحد معتمد هو Modules\Accounting\Actions\CreateJournalEntry بدالة execute(array $data, array $lines). هذه القناة تضمن التوازن، ومنع الترحيل على الحسابات الرئيسية (الإجمالية)، والتحقق من وجود فترة مالية مفتوحة، وتحويل العملات تلقائياً. وحدة المختبرات Modules\LIS\Actions\PostLabInvoice تستخدم هذه القناة فعلياً لترحيل تكلفة المبيعات موزّعةً على مراكز التكلفة — وهو نفس الأسلوب الذي ستتبعه وحدة التصنيع بحذافيره.

مراكز التكلفة موجودة بالفعل

خلافاً لما قد يُفترض، مراكز التكلفة كيان قائم وكامل في وحدة الحسابات عبر جدول cost_centers ونموذج Modules\Accounting\Models\CostCenter بهيكل هرمي (أب/أبناء). كما أن توزيع تكاليف مراكز الخدمة على مراكز الإنتاج مبني فعلاً عبر CostAllocationService وAllocationRule. وتقارير الأستاذ العام GeneralLedgerService تدعم الترشيح حسب مركز التكلفة. لذلك مراكز التكلفة ليست بناءً جديداً — الناقص فقط هو تصنيف نوع المركز (إنتاجي/خدمي/مساعد) وبعض طرق التوزيع المتقدمة.

كيف تُرحَّل دورة الإنتاج تحت التشغيل ← الانحرافات ← التسوية

  1. صرف المواد للأمر: مدين WIP (إنتاج تحت التشغيل) / دائن مخزون المواد الخام — بنوع production_material_issue.
  2. العمالة المباشرة: مدين WIP / دائن أجور مُحمَّلة — بنوع production_labor.
  3. الأعباء الصناعية غير المباشرة: مدين WIP / دائن أعباء مُحمَّلة (MOH Applied) — بنوع production_overhead (معدل التحميل موجود في production_centers.overhead_rate).
  4. استلام المنتج التام بالتكلفة المعيارية: مدين مخزون التام / دائن WIP — بنوع production_receipt.
  5. التسوية: الرصيد المتبقي في WIP = إجمالي الانحراف؛ يُحلَّل إلى الانحرافات السبعة (سعر/استخدام المواد، معدل/كفاءة العمالة، إنفاق/كفاءة الأعباء، حجم الأعباء الثابتة) ويُرحَّل لحسابات الانحراف في قائمة الدخل مع تصفير الأمر — بنوع production_variance.

كل ما سبق يُرحَّل عبر CreateJournalEntry دون أي تعديل على مخطط الحسابات؛ حسابات الإنتاج تحت التشغيل والانحرافات هي حسابات تفصيلية تُهيّأ ببيانات أولية، ومركز التكلفة هو البُعد القائم على السطر. استنتاج: تسلسل القيود

القضبان المتوفّرة من النواة (Core)

القدرةالملف / المصدرالحالة للتصنيع
قيد اليومية الموحّدModules/Accounting/app/Actions/CreateJournalEntry.phpجاهز — يُستخدم كما هو
مراكز التكلفة + بُعد السطرcost_centers، journal_entry_lines.cost_center_idجاهز — ليس بناءً جديداً
توزيع الخدمة ← الإنتاجCostAllocationService، AllocationRuleجاهز للطريقة المباشرة
الدليل المحاسبيaccounts، AccountClassification، AutoAccountServiceجاهز — تُزرع حسابات WIP/الانحراف كحسابات تفصيلية
إغلاق الفتراتModules/Accounting/app/Actions/CloseFiscalPeriod.phpجاهز — التسوية قبل الإغلاق
الترقيم المستنديModules/Core/app/Services/SequenceService.phpجاهز لأرقام أوامر الإنتاج
الإعدادات المُعرّفةModules/Core/app/Services/SettingsService.phpجاهز — تُضاف مفاتيح manufacturing.*
الصلاحيات والتبعياتModules/Core/app/Support/PermissionDependencyRegistry.phpجاهز — تُسجَّل بادئة manufacturing
نطاق الفروعModules/Core/app/Support/DataScope.phpجاهز — أوامر الإنتاج تحمل branch_id
التدقيق والمرفقاتBaseModel + Auditable، Attachmentجاهز بالوراثة

الفجوات التي تتطلّب بناءً جديداً

5تصنيفات الدليل المحاسبي
1قناة معتمدة للترحيل
1بُعد تحليلي على السطر (مركز التكلفة)
5قيود لدورة الإنتاج التام
9فجوات للبناء الجديد
🤝

الجيران: المبيعات والموارد والجودة والصيانة والواجهة (Sales, HRM, QMS, CMMS & Frontend)

موديول التصنيع ليس جزيرة منعزلة؛ فهو يستهلك الطلب من المبيعات، ويأخذ معدلات الأجور من الموارد البشرية لتسعير تأكيدات العمالة، ويربط فحوص الجودة وتقارير عدم المطابقة بموديول الجودة القائم بدلاً من بناء جداول جودة داخلية، ويعامل مراكز العمل والقوالب كأصول قابلة للصيانة في موديول الصيانة. أما الواجهة الأمامية فتتبع نمطاً موحَّداً من المسارات الكسولة وحُرّاس الصلاحيات ومكوّنات الجداول والحوارات والطباعة المشتركة، مع شاشة طرفية لمسية لأرضية المصنع.

1. المبيعات: مصدر الطلب لخطة الإنتاج الرئيسية (Sales → MPS Demand)

يقرأ التصنيع الطلبات المؤكَّدة من جدول sales_orders وبنوده sales_order_items لتغذية خطة الإنتاج الرئيسية (MPS) عبر حقل confirmed_orders_qty، ولربط أوامر التشغيل بالطلب عبر جدول الربط Pegging (علاقة كثير-لكثير بين الطلب والإنتاج). جدول sales_orders يملك بالفعل expected_delivery_date وdelivery_status وstatus، وبند الطلب يتتبّع delivered_quantity وinvoiced_quantity.

فجوة لا يوجد في sales_orders أي حقل «وعد التسليم المتاح» (ATP/CTP) ولا حقل رجوعي يحمل التاريخ المُتعهَّد به من التصنيع؛ الوعد بالتسليم القائم يدوي (expected_delivery_date) دون ربط بقدرة الإنتاج (استنتاج). يلزم خطّاف (Action) من التصنيع يكتب التاريخ المُتعهَّد ويُحدِّث delivery_status عند الربط (Pegging).

2. الموارد البشرية: العمالة وتسعير التأكيدات (HRM → Labor Costing)

تأكيدات العمليات (Confirmation) تُسجِّل ساعات/كميات العامل، ويجب تسعيرها من بيانات الموارد البشرية. جدول employees يربط الموظف بالمستخدم عبر user_id (سلسلة employees.user_id → users.id)، ويملك basic_salary فقط. الورديات في shifts (start_time, end_time, working_hours, is_night_shift) والحضور في attendances (worked_hours, overtime_hours).

فجوة جوهرية لا يوجد حقل «أجر بالساعة» (hourly_rate) ولا «أجر بالقطعة» (piece_rate) على مستوى الموظف؛ الأجر بالساعة مُشتَقّ حسابياً داخل PayrollService من basic_salary / salaryDays / hoursPerDay فقط. وبما أن مواصفات التصنيع تتطلب وضعين (labor_calc ∈ {Hourly, PieceRate})، يلزم مصدر معدّل صريح للتأكيدات، إما حقل جديد أو خدمة معدّلات في الموارد البشرية (استنتاج).

3. الجودة: الفحص أثناء التشغيل وعدم المطابقة على الهالك (QMS Replaces Spec-Internal Quality)

تنصّ المواصفة صراحةً (ملف 06 §6.5) على أن «إدارة الجودة» مرحلة لاحقة تتعلّق بتأكيدات الإنتاج (الدرجات/أكواد الأسباب وبوابات الفحص على العمليات) — وموديول الجودة القائم يغطّيها بالفعل، فلا حاجة لبناء جداول جودة داخل التصنيع. الأهم: جداول qms_inspection_plans وqms_inspections تحمل بالفعل عمود production_order_id، أي أنها صُمِّمت أصلاً للربط بأوامر التشغيل.

حاجة المواصفة (Spec need)المتوفّر في الجودة (QMS has)الربط
بوابة فحص على العملية (inspection_required على Routing_Operation)qms_inspection_plans + qms_inspection_criteriatype='in_process' مع production_order_id
تسجيل نتيجة الفحص أثناء التأكيدqms_inspections (quantity_inspected/accepted/rejected, result) + qms_inspection_resultsعمود production_order_id موجود
تقرير عدم مطابقة على الهالك (NCR)qms_non_conformances (ncr_number, type, severity, root_cause)عبر inspection_id ومن ثم production_order_id
إجراء تصحيحي/وقائي على تكرار العيوبqms_capa_actions (capa_number, type, effectiveness_check)عبر non_conformance_id

فجوة لا يوجد عمود مفتاح أجنبي رسمي على qms_inspections.production_order_id (مجرّد unsignedBigInteger دون constrained) لأن جداول التصنيع لم تُنشأ بعد؛ كما تنقص رابطة operation_no لتثبيت الفحص على عملية بعينها (استنتاج).

4. الصيانة: مراكز العمل والقوالب كأصول (CMMS → Work Centers & Molds)

تنصّ المواصفة (§6.5) على أن الصيانة (PM) «تُقلِّل قدرة مركز العمل أثناء نوافذ التوقّف». موديول الصيانة يوفّر cmms_assets (مع specifications JSON وparent_asset_id) ليمثّل الآلة/القالب كأصل، وcmms_pm_schedules للصيانة الدورية، وcmms_work_orders لأوامر الصيانة بحقل downtime_hours وfailure_code ونوع WorkOrderType ∈ {Preventive, Corrective}.

فجوة لا يوجد جدول قراءات عدّاد (مثل cmms_asset_meters) يجمع عدد ضربات القالب التراكمي (cycles_used في المواصفة) ليُطلِق صيانة العتبة؛ الحقل meter_field نصّي فقط دون مصدر بيانات تراكمي. كما أن cmms_work_order_labor يربط بـuser_id لا بـemployee_id (استنتاج).

5. الواجهة الأمامية: تنظيم الموديول والحُرّاس والشاشة الطرفية (Frontend Conventions)

الواجهة Angular مستقلّة المكوّنات (Standalone) بمسارات كسولة. كل موديول مجموعة مسارات تحت حارس الموديول moduleGuard (يمنع تجاوز تعطيل الموديول)، وكل مسار فرعي تحت permissionGuard مع data.permissions ببادئة الموديول (مثل ['manufacturing.']). المكوّنات تُحمَّل عبر loadComponent الكسول.

العنصر (FE element)الملف/النمطالاستخدام للتصنيع
مجموعة مسارات الموديولapp.routes.ts (canActivate: [moduleGuard])مسار manufacturing بأطفال لكل شاشة
حارس الصلاحياتcore/guards/auth.guard.ts (permissionGuard)data: { permissions: ['manufacturing.bom'] }
جدول البيانات المشتركshared/components/data-table/data-table.component.tsقوائم أوامر التشغيل/BOM/التأكيدات
حوار النموذج المشتركshared/components/form-dialog/form-dialog.component.tsإنشاء/تعديل BOM، إصدار أمر تشغيل
تنقّل الموديولshared/components/module-nav/module-nav.component.tsشريط جانبي لورشة التصنيع
الطباعةshared/print/print.service.ts + print-templates.tsأمر تشغيل، إذن صرف مواد، استلام تام
تخطيط طرفية لمسيةfeatures/pos/pos-layout/ (مرجع نمط)شاشة أرضية المصنع لمسية لكل مركز عمل
  1. ورشة التصنيع: تخطيط (manufacturing-layout) + لوحة + بيانات أساسية (BOM/Routing/Work Center/Tool).
  2. شاشات التخطيط (MPS/MRP/CRP) والتنفيذ (أمر تشغيل، صرف مواد، تأكيد، استلام).
  3. شاشة طرفية لمسية لأرضية المصنع: أهداف لمس كبيرة، أزرار [Start]/[Done]، طابور الأوامر الجاهزة، إدخال كمية/درجة/هالك — على نمط pos-layout.
  4. لوحة إشراف حيّة (Real-time Dashboard) تعرض موضع كل أمر وكشف الاختناقات.
4جيران تكامل (Sales/HRM/QMS/CMMS)
2جداول جودة جاهزة بـ production_order_id
3فجوات جوهرية (ATP، معدّل أجر، عدّاد قالب)
0جداول جودة داخلية مطلوبة (تُستبدَل بـQMS)
📐

المعمارية والمبادئ الحاكمة (Architecture & Principles)

هذا الملف هو الدستور الحاكم لوحدة التصنيع بأكملها؛ كل ملفات المواصفات الأخرى (٠١ إلى ٠٦) ترث قواعده. المطلب الجوهري: بناء وحدة تصنيع عامة (Generic) تصلح لأي مصنع، تُركَّب فوق نظام ERP قائم لديه بالفعل المالية والمخزون والمشتريات والمبيعات والموارد البشرية. مصنع أدوات الميلامين يُستخدم فقط كمثال اختبار إجهاد لإثبات العمومية — وليس نموذجاً يُبرمَج بشكل ثابت.

النطاق ودورة حياة الإنتاج

تغطي الوحدة دورة الإنتاج الكاملة: البيانات الأساسية ← التخطيط ← التنفيذ ← التكاليف، إضافة إلى طبقة التحكم بأرضية المصنع Shop Floor Control (SFC) للتتبع اللحظي. ما يلي خارج النطاق ويتم التكامل معه لا إعادة بنائه: دفتر الأستاذ العام، نواة المخزون والمستودعات، نواة المشتريات، أوامر المبيعات، الموارد البشرية والرواتب.

4طبقات معمارية + SFC
11تعدادات حاكمة (Enums)
7قواعد تصميم شاملة
9حالات إجهاد من مصنع الميلامين

الطبقات المعمارية الأربع

تتدفق البيانات من الأعلى للأسفل، مع حلقة مغلقة: انحرافات التكاليف وتعارضات السعة في CRP تعود لتصحيح التخطيط.

الطبقةملف المواصفةالسؤال الجوهري
البيانات الأساسية (Master Data)01_master_data.mdما المنتج وكيف يُصنع؟
التخطيط (Planning)02_planning.mdهل نستطيع صنعه؟ أي مواد؟ أي جدول زمني؟
التنفيذ (Execution)03_execution.mdماذا حدث فعلياً على أرضية المصنع؟
التكاليف (Costing)04_costing.mdكم كلّف؟ وأين المشكلات؟
التحكم بأرضية المصنع (SFC)05_shop_floor_control.mdأين كل أمر إنتاج الآن (لحظياً)؟
التكاملات ونموذج البيانات06_integrations_and_data_model.mdكيف يتصل بالنظام + نموذج البيانات الكامل

المطلب الجوهري: العمومية (The Genericity Mandate)

القاعدة الأهم على الإطلاق: لا تُبرمِج سلوك مصنع واحد بشكل ثابت أبداً. كل سلوك خاص بمصنع يجب أن يُعبَّر عنه بصيغة إعداد (حقل/تعداد) + منطق تفرّع، لا كمسار برمجي منفصل. القاعدة الذهبية للمطوّر: حين تجد سلوكاً "يفعله هذا المصنع وحده"، لا تفرّع الكود حسب المصنع — أضف حقل إعداد قيمته الافتراضية هي السلوك الشائع، وفرّع بناءً عليه.

واقع خاص بالمصنع (الميلامين)الآلية العامة في النظام
إنتاج حسب الطلب وللمخزون والتصنيع لدى الغير معاًتعداد production_type + تفرّع
العميل يورّد المادة الخام (toll)تعداد material_ownership {Own, Customer}
دورة كبس واحدة تنتج عدة قطع (قالب متعدد التجاويف)حقل cavity_count على الأداة/العملية
دورة واحدة تنتج درجات A/B/C بأسعار مختلفةمنتجات مشتركة: الإنتاجية توزيع لا قيمة مفردة
عامل المكبس يُدفع بالقطعة، الباقون براتب ثابتتعداد labor_calc {Hourly, PieceRate}
العامل يسحب البودرة لوردية كاملةتعداد issue_level {PerOrder, PerShift, PerOperation}
القالب (لا الماكينة) هو قيد السعةتجريد Resource بـ resource_type {Machine, Tool, Labor}
الطلاء يُرش بكميات ضئيلةالمادة تُعامَل كمستهلك أعباء (Overhead)، لا كبند في الـ BOM
القوالب المركّبة فقط هي التي تتآكلالإهلاك بالاستخدام (عدد الدورات)، لا بالزمن التقويمي

القواعد التصميمية الشاملة (Cross-Cutting Rules)

تنطبق هذه القواعد على كل كيان وعملية في الوحدة:

آلتا الحالة المسمّاتان (State Machines)

حالة أمر الإنتاج order_status:

  1. Planned — مُخطَّط
  2. Released — مُصدَر (تؤخذ هنا اللقطة المجمّدة)
  3. InProcess — قيد التنفيذ
  4. Completed — مكتمل
  5. Closed — مُغلق

حالة العملية operation_status:

  1. Waiting — منتظر
  2. Ready — جاهز
  3. InProgress — قيد التشغيل
  4. Completed — مكتمل

التعدادات الحاكمة (Key Enumerations)

التعدادالقيم
production_typeMakeToStock, MakeToOrder, AssembleToOrder, TollManufacturing
material_ownershipOwn, Customer
procurement_typeBuy, Make
costing_methodStandard, Actual, Average, FIFO
labor_calcHourly, PieceRate
issue_typeManual, Backflush, AutoIssue
issue_levelPerOrder, PerShift, PerOperation
resource_typeMachine, Tool, Labor
lot_sizing_ruleExact, Fixed, MinMax, EOQ, PeriodOrder
order_statusPlanned, Released, InProcess, Completed, Closed
operation_statusWaiting, Ready, InProgress, Completed

حالة البناء المرجعية (Build Status)

المكوّنالحالة في التحليلملاحظة للمطوّر
البيانات الأساسية (BOM, Routing, WC)محدد بالكاملأضف الأداة/القالب كمورد من الدرجة الأولى
التخطيط (MPS, MRP, CRP)محدد بالكاملجدولة APS التفصيلية فجوة معروفة (ملف ٠٢)
التنفيذ (PO, Issue, Confirm, GR)محدد بالكامليشمل الدرجات والدفع بالقطعة وصرف الوردية
التكاليف (طرق، عناصر، مراكز، انحرافات)محدد بالكاملتخصيص المنتجات المشتركة مُدرَج
التحكم بأرضية المصنع (SFC)محدد منطقياًطبقة الواجهات/الطرفيات تُبنى (ملف ٠٥)
الجودة، إدارة القوالب، الصيانة، OEEمُعرَّف لا محددمراحل مستقبلية — الواجهات مُشار إليها

ماذا يعني هذا لـ Moon ERP

🧱

البيانات الأساسية: BOM والمسارات ومراكز العمل والإسطمبات (Master Data)

طبقة الأساس في وحدة التصنيع. تعرّف «ما هو المنتج وكيف يُصنع»: قائمة المكونات (BOM)، ومسار التصنيع (Routing)، وموارد الإنتاج (Work Center وTool/Mold). تُنشأ مرة واحدة وتُعدَّل فقط عبر أوامر تغيير هندسي محكومة (ECO). القاعدة الحاكمة: «إن كانت البيانات الأساسية خاطئة، فكل ما يليها خاطئ» — ولهذا تُلتقط نسخة مجمّدة (Frozen Snapshot) منها عند إطلاق أمر الإنتاج.

الغرض والمبدأ الحاكم

تلتزم هذه الطبقة بـ«تفويض العمومية» (Genericity Mandate): لا يُكتب أي سلوك خاص بمصنع واحد كمسار برمجي مستقل، بل يُعبَّر عنه بحقل/قيمة تعداد (config) ينحاز افتراضيًا للسلوك الشائع ثم يتفرّع منه. مصنع الميلامين مذكور كحالة اختبار إجهاد فقط — وليس قالبًا يُبرمَج عليه.

4كيانات أساسية (BOM، Routing، Work Center، Tool)
10+نقاط تهيئة (enums/flags) للعمومية
3آلات حالات (BOM، Routing، Tool)
9اعتماديات متوقعة من الـ ERP المضيف

الكيان: قائمة المكوّنات (BOM — Bill of Materials)

هوية تصنيع المنتج: ما المكوّنات وكمياتها لإنتاج وحدة واحدة. يجب أن يدعم التداخل متعدد المستويات. يتكوّن من رأس (BOM_Header) وأسطر (BOM_Line).

رأس القائمة (BOM_Header)

الحقلالوصف / القاعدة
bom_idالمفتاح الأساسي
parent_item_idمفتاح خارجي ← الصنف (المنتج الأب)
bom_typeتعداد { Production, Engineering, Phantom }
versionتُحفظ عدة إصدارات للتاريخ
base_quantityعادة 1 — الوحدة التي تُعرَّف القائمة لكل واحدة منها
uomوحدة قياس الأب
statusتعداد { Draft, Active, Inactive, Obsolete }
effective_from / effective_toنافذة الصلاحية
created_by / approved_byتدقيق الإنشاء والاعتماد

سطر القائمة (BOM_Line)

الحقلالوصف / القاعدة
bom_idمفتاح خارجي ← رأس القائمة
line_noترتيب السطر
component_idمفتاح خارجي ← الصنف (المكوّن)
quantityلكل base_quantity واحدة من الأب
uomوحدة قياس السطر
scrap_percentageالهدر المتوقع؛ يضرب الـMRP الكمية في (1 + scrap%)
issue_typeتعداد { Manual, Backflush, AutoIssue }
issue_levelتعداد { PerOrder, PerShift, PerOperation }
operation_seqأي عملية مسار تستهلك السطر — الرابط بين BOM والـRouting
substitute_itemsبدائل عند عدم توفّر الأساسي

الكيان: المسار (Routing)

مسار التصنيع: تسلسل العمليات ومن ينفّذ كلًا منها وكم تستغرق — يتيح الجدولة وحساب الزمن. يتكوّن من رأس (Routing_Header) وعمليات (Routing_Operation).

رأس المسار (Routing_Header)

الحقلالوصف / القاعدة
routing_idالمفتاح الأساسي
item_idمفتاح خارجي ← الصنف
routing_typeتعداد { Production, Repair, Inspection }
versionمُؤصَّل بالإصدار
lot_size_from / lot_size_toقد يكون للمنتج مسارات مختلفة حسب حجم الدفعة
statusتعداد { Draft, Active, Inactive }
effective_from / effective_toنافذة الصلاحية
total_lead_timeمحسوب آليًا

عملية المسار (Routing_Operation)

الحقلالوصف / القاعدة
operation_noتسلسل 10، 20، 30 — مضاعفات 10 للسماح بالإدراج (15، 25) دون إعادة ترقيم
descriptionوصف العملية
work_center_idمفتاح خارجي ← مركز العمل
tool_idمفتاح خارجي ← الأداة (قابل لـ null) — الإسطمبة/القالب المطلوب
setup_timeزمن إعداد ثابت مستقل عن حجم الدفعة
run_time_per_unitزمن التشغيل لكل وحدة
cavity_countوحدات لكل دورة — الافتراضي 1؛ أكبر من 1 لتعدد التجاويف
cycle_timeزمن الدورة/الكبسة الواحدة — يُستخدم مع cavity_count
queue_timeانتظار قبل البدء — يُضاف لزمن التوريد لا للتكلفة
move_timeنقل للعملية التالية — زمن توريد لا تكلفة
inspection_requiredمنطقي (هل تتطلب فحصًا)
critical_operationمنطقي — لا يمكن تخطّيها
required_skill_codeالمهارة المطلوبة

الكيان: مركز العمل (Work Center)

حيث يحدث العمل. هو الواجهة بين الإنتاج والمحاسبة — كل التكاليف تتدفّق من خلاله.

الحقلالوصف / القاعدة
wc_idالمفتاح الأساسي
descriptionوصف
categoryتعداد { Machine, Labor, SetupGroup }
plant_locationالموقع داخل المصنع
cost_center_idمفتاح خارجي ← مركز التكلفة
capacity_unitتعداد { Hours, Pieces, Kg }
daily_capacityالطاقة اليومية لوحدة واحدة
capacity_multiplierعدد الآلات/العمال المتطابقين في المركز (تجميع طاقة)
efficiency_percentمعامل الكفاءة
utilization_percentمعامل الاستغلال
calendar_idالورديات والعطلات
setup_cost_rate / labor_cost_rate / machine_cost_rate / overhead_rateمعدلات التكلفة (إعداد/عمالة/آلة/غير مباشر)
labor_calcتعداد { Hourly, PieceRate }
bottleneck_flagمنطقي — اختناق

معادلة الطاقة الفعّالة: effective_capacity = daily_capacity × capacity_multiplier × efficiency% × utilization% — ويستخدم الـCRP الطاقة الفعّالة لا الإجمالية.

الكيان: الأداة / الإسطمبة (Tool / Mold)

في صناعات القولبة الإسطمبة هي قيد الطاقة لا الآلة. مُعمَّمة كـResource من نوع Tool. مصنع بلا قوالب ببساطة لا يملك موارد أدوات — فينهار التجريد بسلاسة.

الحقلالوصف / القاعدة
tool_idالمفتاح الأساسي
descriptionوصف
product_idالمنتج الذي تصنعه — أو عدة منتجات
cavity_countقطع لكل دورة
setup_timeالتركيب/الفك — غالبًا كبير
statusتعداد { Available, Mounted, Maintenance, Retired }
life_cyclesالدورات المتوقعة قبل الاستبدال (إهلاك بالاستخدام)
cycles_usedعدّاد جارٍ
purchase_costللإهلاك لكل دورة

نقطة عامة: نمط حساب العمالة (labor_calc)

يحدّد حقل labor_calc على مركز العمل (أو الصنف) طريقة حساب تكلفة العمالة المباشرة:

الأثر: تحت PieceRate يتحمّل العامل البطيء تكلفته (يكسب أقل) لا المصنع — فلا يوجد «انحراف كفاءة عمالة» تقليدي، وينتقل الانحراف إلى الآلة/التكلفة غير المباشرة. يجب أن يدعم النظام كلا النمطين.

آلات الحالات (State Machines)

حالة قائمة المكوّنات BOM_Header.status:

  1. Draft
  2. Active
  3. Inactive
  4. Obsolete

حالة المسار Routing_Header.status:

  1. Draft
  2. Active
  3. Inactive

حالة الأداة Tool.status (والمركّبة فقط تتآكل):

  1. Available
  2. Mounted
  3. Maintenance
  4. Retired

نقاط التهيئة والتعدادات (Config Points)

الحقلالموضعالقيم / الافتراضي
bom_typeBOM_HeaderProduction / Engineering / Phantom
scrap_percentageBOM_Lineمضاعِف الـMRP (1+scrap%)
issue_typeBOM_LineManual / Backflush / AutoIssue
issue_levelBOM_LinePerOrder / PerShift / PerOperation
routing_typeRouting_HeaderProduction / Repair / Inspection
cavity_countOperation و Toolعدد التجاويف؛ الافتراضي 1
capacity_multiplierWork Centerتجميع الطاقة؛ الافتراضي 1
labor_calcWork Center / itemHourly / PieceRate
resource_typeResourceMachine / Tool / Labor
علم المستهلك الزهيدBOM line / itemالحذف ← تكلفة غير مباشرة

ماذا يعني هذا لـ Moon ERP

🗓️

التخطيط: MPS وMRP وCRP (Planning (MPS/MRP/CRP))

طبقة التخطيط هي «عقل» وحدة التصنيع: تترجم الطلب المتوقّع والفعلي إلى خطة إنتاج ملموسة وقابلة للتنفيذ. تتكوّن من ثلاثة مكوّنات متسلسلة مع حلقة تغذية راجعة مغلقة هي MPS → MRP → CRP، وترث جميع القواعد العامة من ملف المبادئ 00 (اللقطات المجمّدة، آلات الحالة، علاقة الطلب↔التوريد متعدّدة لمتعدّد، التعشيق متعدّد المستويات، التهيئة بدل البرمجة الصلبة، تجريد الموارد).

المخرجات الثلاثة للتخطيط

تنتج طبقة التخطيط ثلاث مخرجات فقط؛ يُنصح بالاحتفاظ بها كنموذج ذهني. المدخلات هي: طلب العميل، البيانات الرئيسية (شجرة المكوّنات BOM والمسار Routing ومراكز العمل)، المخزون الحالي، إعدادات الصنف، وملكية المادة.

#المخرَجالسؤال الذي يجيب عنهالمنتِج
1قبول الطلب وتاريخ التسليمهل نقبل الطلب؟ ومتى نسلّم؟MPS + CTP
2جدول الموادماذا نشتري/نصنع، وكم، ومتىMRP
3خطة الإنتاج التفصيليةمتى تبدأ كل مرحلةMRP draft + CRP confirm
3مكوّنات متسلسلة
3مخرجات تخطيط
3كيانات بيانات جديدة
1فجوة معروفة (APS)

المكوّن الأول: جدول الإنتاج الرئيسي (MPS)

يقرّر ماذا نُنتج وكم ومتى. في وضع الصنع حسب الطلب يتحوّل دوره من «متنبّئ» إلى «مترجِم للطلبات + فاحص قبول وطاقة». يتفرّع سلوكه حسب نوع الإنتاج production_type:

نوع الإنتاجالسلوك
MakeToStockالطلب = استهلاك التوقّع بالطلبات الفعلية؛ اقتراح إنتاج عند نزول الرصيد المتاح PAB تحت مخزون الأمان.
MakeToOrderتجاهل التوقّع؛ الإنتاج المخطّط = الطلبات المؤكّدة؛ مخزون الأمان = 0؛ تشغيل فحص CTP.
AssembleToOrderالمكوّنات تُدار كـMakeToStock والتجميع النهائي كـMakeToOrder.
TollManufacturingتخطيط الطاقة فقط (المادة ملك العميل — انظر MRP).

المعادلة الأساسية: الرصيد المتاح المتوقَّع (PAB)

المعادلة الجوهرية لكل فترة زمنية t:

استهلاك التوقّع (Forecast Consumption)

الطلبات الفعلية تستهلك التوقّع ولا تُضاف إليه — لمنع الحساب المزدوج:

الإعدادات: forecast_consumption_method ∈ {None, Backward, Forward, Both} وconsumption_window.

حواجز الزمن (Time Fences)

تُحدَّد المنطقة بحسب بُعد الفترة عن اليوم، لمنع «عصبية النظام»: الخطة قريبة المدى مستقرّة وبعيدة المدى مرنة.

الشرط (المسافة من اليوم)المنطقةقاعدة الطلب
distance ≤ DTF (Demand Time Fence)FROZENالطلبات الفعلية فقط (تجاهل التوقّع).
distance ≤ PTF (Planning Time Fence)SLUSHYمزج MAX/استهلاك؛ التغييرات تحتاج موافقة.
غير ذلكLIQUIDالطلب = التوقّع (لا طلبات بعد).

القدرة على الوعد (CTP — Capable to Promise)

جوهر الصنع حسب الطلب: وعد تسليم مبني على الطاقة لا على المخزون. يحسب الحِمل على كل مركز عمل عبر مسار الصنف، ويعتمد عنق الزجاجة (أعلى موعد ممكن) كموعد وعد:

  1. لكل عملية في المسار: إن كان مركز العمل من نوع مكبس cycles = Q / cavity_count ثم load += cycles × cycle_time + setup_time، وإلا load += Q × run_time + setup_time.
  2. لكل مركز عمل مطلوب: إيجاد أبكر فتحة earliest[wc] = find_earliest_slot(wc, load[wc]).
  3. الموعد الموعود = MAX(earliest[wc]) (عنق الزجاجة يقرّر).
  4. الإرجاع: «في الموعد» إن كان promised ≤ D، وإلا أبكر موعد ممكن.

تقسيم الطلبات وتجميعها (Many-to-Many)

نموذج بيانات MPS وحساب ATP

الكيانالحقول الرئيسية
MPS_Headerid, plan_name, plant_id, time_bucket∈{Day,Week,Month}, start_date, end_date, frozen_fence, slushy_fence, status
MPS_Lineproduct_id, period_date, forecast_qty, confirmed_orders_qty, planned_production, projected_balance, safety_stock_target, available_to_promise

المتاح للوعد ATP له ثلاثة أنماط (إعداد): Discrete (الإنتاج ناقص الطلبات حتى الإنتاج التالي)، Cumulative (مجاميع تراكمية)، وLook-ahead (الأكثر أمانًا).

المكوّن الثاني: تخطيط احتياجات المواد (MRP)

يحوّل أوامر الإنتاج إلى احتياجات مواد: ماذا نشتري/نصنع، وكم، ومتى. هو عملية وليس جدولاً، وينتج «أوامر مخطّطة» مؤقّتة. إعدادات الصنف:

الحقلالقيم/المعنى
mrp_typePlanned | ReorderPoint | NoPlanning
procurement_typeBuy | Make
material_ownershipOwn | Customer
lot_sizing_ruleExact | Fixed | MinMax | EOQ | PeriodOrder
كميّاتlot_size, min_lot, max_lot, safety_stock, lead_time_days, reorder_point

خوارزمية MRP وتفجير شجرة المكوّنات

تُعالَج الأصناف مستوى بمستوى من الأعلى (التام = 0) إلى الأعمق (الخام):

  1. Gross[t] = طلب MPS (للتام) + الطلب المعتمد من الآباء (للمكوّن).
  2. Available[t] = on_hand + open_POs[t] + open_WOs[t] - reserved[t].
  3. Net[t] = MAX(0, Gross[t] - Available[t] + safety_stock).
  4. Order_Qty = apply_lot_sizing(Net[t], lot_rule).
  5. Release_Date = Required_Date - lead_time.
  6. إن كان procurement_type == Make: تفجير الـBOM لتوليد طلب معتمد للمكوّنات والتعشيق الأعمق تكراريًا.

تفجير الـBOM يطبّق الهدر لكل سطر: required = Q × line.quantity × (1 + line.scrap_pct)، ويتكرّر للمكوّنات من نوع Make.

قواعد تحجيم الدفعة (Lot Sizing)

القاعدةالناتج
Exactالصافي كما هو net
Fixedround_up(net, lot_size)
MinMaxclamp(net, min, max)
EOQكمية الطلب الاقتصادي
PeriodOrderمجموع الصافي عبر عدّة فترات ← تجميع لتقليل التجهيز/تبديل القوالب

الأصناف كثيفة العُدد تستخدم PeriodOrder/Fixed لتجميع الطلب وتقليل تركيب القوالب.

فرع التصنيع لدى الغير (Toll) ومخرجات MRP

المكوّن الثالث: تخطيط احتياجات الطاقة (CRP)

يفترض MRP طاقة لانهائية؛ يحقن CRP الواقع للتحقّق من توفّر طاقة مراكز العمل والعُدد والعمالة في الوقت المطلوب. في مصانع العُدد يكون CRP أهمّ من MRP (المواد سهلة؛ جدولة عدّة قوالب على عدّة مكابس هي المشكلة الحقيقية).

  1. حساب الحِمل لكل أمر مخطّط وعملية (نفس صيغة المكبس/غير المكبس في CTP).
  2. توزيع الأحمال على الفترات.
  3. تجميع لكل مورد: Total_Load[resource, period] = Σ loads.
  4. المقارنة: Util = Total_Load / effective_capacity × 100.
  5. حلّ التحميل الزائد: إعادة جدولة / عمل إضافي / وردية إضافية / تأجيل أمر / استخدام قالب متعدّد التجاويف.
الاستغلال Utilالحالة
> 100%OVERLOAD
70%–100%OK
< 70%UNDERLOAD

تقاطع الموارد: earliest_start = MAX(machine_free_time, tool_free_time, labor_free_time) — القيد المُلزِم هو المورد الأقل توفّرًا، والقالب مورد متنقّل يُتتبَّع عبر المكابس (resource_type ∈ {Machine, Tool, Labor}). يدعم النظام نمطين: RCCP (قطع خشن على MPS للموارد الحرجة، يستخدمه CTP لقبول الطلب) وCRP (تفصيلي على MRP لكل الموارد).

مثال الميلامين: مركز المكبس بطاقة 90 ساعة في الأسبوع 3، طلب 6000 طبق بقالب أحادي التجويف ودورة 80 ثانية = 133 ساعة، فالاستغلال 148% (تحميل زائد)؛ والحلّ المطروح استخدام قالب رباعي التجاويف = 33 ساعة فقط — ما يربط قرار جدولة (CRP) باختيار بيانات رئيسية (أيّ قالب).

الفجوة المعروفة: الجدولة التفصيلية (APS) والحلقة المغلقة

ماذا يعني هذا لـ Moon ERP

⚙️

التنفيذ: أوامر الإنتاج والصرف والتأكيد والاستلام (Execution)

طبقة التنفيذ هي «الواقع»: تحوّل الخطط إلى أحداث فعلية مُسجَّلة على أرض المصنع. الفارق بين المُخطَّط والفعلي يُنتج الانحرافات (تُعالَج في ملف التكاليف). تتكوّن من أربع وثائق متسلسلة — أمر الإنتاج، ثم صرف المواد، ثم تأكيد العمليات، ثم استلام المنتج التام — وكل حدث فعلي فيها يُولِّد قيداً محاسبياً فورياً في دفتر الأستاذ العام.

التسلسل العام للطبقة

  1. Production Order — أمر الإنتاج (العقد الداخلي المُصرِّح بالإنتاج)
  2. Material Issue — صرف المواد من المخزون الخام إلى تحت التشغيل
  3. Confirmation — تأكيد ما نُفِّذ فعلياً لكل عملية (كميات، عمالة، هالك)
  4. Goods Receipt — استلام المنتج التام إلى مخزون الأصناف الجاهزة

كل وثيقة لاحقة ترتبط بأمر إنتاج محدّد، وتورِث القواعد الحاكمة من ملف المبادئ: اللقطة المُجمَّدة، آلات الحالة، الربط متعدد-إلى-متعدد بين الطلب والإمداد، التكرار متعدد المستويات، التهيئة بدل الترميز، وقيد محاسبي لكل حدث فعلي.

3.1 أمر الإنتاج (Production Order)

العقد الداخلي الذي يُصرِّح بإنتاج كمية محددة من منتج محدد. الفكرة الجوهرية هي اللقطة المُجمَّدة: عند الانتقال من Planned إلى Released يأخذ الأمر نسخة مُجمَّدة من شجرة المكوّنات BOM ومسار التشغيل Routing النشطين؛ أي تعديل لاحق على البيانات الرئيسية لا يؤثر على هذا الأمر — حمايةً للتكلفة التاريخية ومسار التدقيق.

حقول رأس الأمر Production_Order_Header

الحقلالنوع / القيمالملاحظة
order_noمفتاح أساسيرقم الوثيقة
order_typeStandard, Rework, Repairنوع الأمر
product_id, quantityمرجع + رقمالمنتج والكمية المطلوبة
production_typeMakeToStock, MakeToOrder, TollManufacturingيقود منطق التفرّع (يضيف ملف 00 أيضاً AssembleToOrder)
material_ownershipOwn, Customer«Customer» = تصنيع لدى الغير / بضاعة أمانة
start_date, finish_dateتاريخالتواريخ المخطَّطة
statusPlanned, Released, InProcess, Completed, Closedآلة الحالة أدناه
bom_snapshot_id, routing_snapshot_idمرجعمرجعا اللقطة المُجمَّدة
tool_idمرجعالقالب / الإسطمبة المُخصَّصة
source_orders[]قائمةالربط Pegging — أوامر البيع التي يخدمها هذا الأمر
wip_accountمرجع محاسبيحساب «تحت التشغيل» الذي يُرحَّل إليه

بنود المكوّنات Order_Component (نسخة مُجمَّدة من سطور الـ BOM)

الحقلالملاحظة
component_idالمادة / المكوّن
required_quantityالكمية المطلوبة = bom_qty × order_qty × (1 + scrap%)
issued_quantityإجمالي المصروف حتى الآن
reserved_quantityالمحجوز عند الإطلاق
operation_seqالعملية التي تستهلك المكوّن

بنود العمليات Order_Operation (نسخة مُجمَّدة من مسار التشغيل)

الحقلالملاحظة
operation_no, work_center_id, tool_idتعريف العملية ومركز العمل والأداة
planned_setup_time, planned_run_timeالمعايير المخطَّطة
actual_setup_time, actual_run_timeالأزمنة الفعلية
statusWaiting, Ready, InProgress, Completed — تستهلكها مراقبة أرض المصنع SFC
actual_start_time, actual_end_timeطوابع زمنية
confirmed_quantity, scrap_quantityالكميات الفعلية لكل عملية

آلة الحالة لأمر الإنتاج (الانتقالات وآثارها)

  1. Planned → Released: أخذ لقطة الـ BOM والـ Routing؛ حجز المواد؛ حجز الأداة والطاقة
  2. Released → InProcess: بدء أول صرف أو تأكيد؛ يبدأ تتبّع الزمن
  3. InProcess → Completed: اكتمال كل العمليات؛ الكمية المؤكّدة ≈ كمية الأمر
  4. Completed → Closed: إقفال «تحت التشغيل»؛ حساب الانحرافات النهائية؛ منع أي ترحيلات لاحقة

3.2 صرف المواد (Material Issue)

أول حركة محاسبية حقيقية: تنتقل المادة من مخزون الخام RM إلى «تحت التشغيل» WIP. لكل وثيقة صرف نوع وتوقيت ومستوى تفصيل.

حقول الصرف Material_Issue_Header و Material_Issue_Line

الحقلالنوع / القيمالملاحظة
issue_no, issue_dateمفتاح + تاريخ
issue_typeManual, Backflush, AutoIssueيختلف التوقيت
issue_levelPerOrder, PerShift, PerOperationدرجة تفصيل الصرف
order_no, operation_no, issuer_id, warehouse_fromمراجعالأمر/العملية/الصارف/المخزن المصدر
statusDraft, Posted, Reversedحالة الوثيقة
material_code, quantityصنف + كميةبند الصرف
batch_no/lot_no, bin_locationقيمتتبّع اللوط والموقع
cost_price, total_costتكلفةحسب costing_method (FIFO/LIFO/Standard/Average)
ownershipOwn, Customerتتبّع بضاعة الأمانة

أنواع الصرف (يختلف التوقيت)

النوعالسلوك
Manualالعامل يصرف صراحةً عند الحاجة بالكمية الفعلية — الأدق والأبطأ
Backflushصرف تلقائي عند التأكيد؛ الكمية = المُنتَج × الـ BOM؛ الفارق → انحراف
AutoIssueكل المواد تُصرف دفعة واحدة عند الإطلاق — يناسب الأوامر الصغيرة

خوارزمية الصرف والقيد المحاسبي

  1. التحقق: الأمر Released/InProcess؛ المتاح ≥ الكمية؛ المادة ضمن لقطة الـ BOM
  2. جلب التكلفة cost_price = get_cost(material, costing_method)
  3. إنقاص المتاح والمحجوز؛ زيادة WIP[order] += qty × cost_price
  4. الترحيل: Debit WIP / Credit Raw Materials بمقدار qty × cost_price
  5. تحديث order_component[material].issued += qty

فرع الأمانة: إذا كانت ملكية المادة للعميل تُصرف من مخزون أمانة منفصل لا من مخزونك، والمحاسبة تختلف (لا يوجد «دائن مخزون خام» بتكلفتك لأنها ليست أصلاً لك)؛ تُسجَّل حركة «استهلاك مادة العميل» للتتبّع فقط.

3.3 التأكيد (Confirmation)

يسجّل ما نُفِّذ فعلياً من الأمر لكل عملية: كم أُنتِج، كم من العمالة/زمن الآلة استُهلك، وكم الهالك — وهو المصدر الحقيقي للأرقام الفعلية مقابل المعايير.

كيانات التأكيد

الكيان / الحقلالملاحظة
Confirmation_Headerconfirmation_no, order_no, operation_no, confirmation_type {Partial,Final,Reversal}, operator_id, work_center_id, shift, timestamp
Confirmation_Yield (مُعمَّم — توزيع لا رقم مفرد)grade_code (A/B/C... أو درجة واحدة للمصانع العادية)، quantity، unit_sale_price (لتوزيع تكلفة المنتجات المشتركة)
Confirmation_Detailscrap_quantity, rework_quantity, setup_time_actual, run_time_actual, labor_hours, machine_hours, reason_code (سبب الهالك/التأخير لتحليل باريتو)

القاعدة الجوهرية للمردود

المؤشرالمعادلة
متطابقة المدخلاتΣ(grade quantities) + scrap = total_input
نسبة المردود yield%Σgrades / input
نسبة المرور من أول مرة first_pass%grade_A / input (مؤشر جودة رئيسي)

خوارزمية التأكيد (مع الـ Backflush والقيود)

  1. التحقق: الأمر InProcess؛ العملية مفتوحة
  2. إن كانت العملية بها مواد Backflush: consumed = total_input × BOM_qty وصرف تلقائي
  3. تكلفة العمالة حسب labor_calc: Hourly → labor_hours × labor_rate أو PieceRate → produced × piece_rate
  4. machine_cost = machine_hours × machine_rate؛ overhead = (labor_hours + machine_hours) × overhead_rate
  5. الترحيل: Debit WIP / Credit Labor Applied + Machine Applied + Overhead Applied
  6. الهالك: Debit Scrap Expense / Credit WIP بمقدار scrap × unit_cost
  7. إن كان Final: إقفال العملية؛ وإن لم تكن الأخيرة: تحويل العملية التالية إلى Ready (← SFC)

توزيع تكلفة المنتجات المشتركة (طريقة صافي القيمة البيعية NRV)

الخطوةالمعادلة
إجمالي القيمة البيعيةtotal_sale_value = Σ(grade.qty × grade.price)
التكلفة المخصَّصة للدرجةgrade.allocated_cost = total_cost × (grade.qty × grade.price) / total_sale_value
تكلفة الوحدة للدرجةgrade.unit_cost = grade.allocated_cost / grade.qty

الدرجة الأعلى سعراً تمتصّ تكلفة أكبر؛ والمصانع العادية تستخدم درجة واحدة فيؤول الأمر إلى السلوك المعياري المفرد.

3.4 استلام المنتج التام (Goods Receipt)

الخطوة الأخيرة: يدخل المنتج التام المخزون، فيُقفَل «تحت التشغيل» ويُفتَح مخزون الأصناف الجاهزة FG، محوِّلاً التكلفة المتراكمة إلى تكلفة منتج جاهز للبيع.

كيانات الاستلام

الكيان / الحقلالملاحظة
Goods_Receipt_Headergr_no, gr_date, order_no, receipt_type {Full,Partial}, warehouse_to, receiver_id, status {Draft,Posted,Reversed}
Goods_Receipt_Line (سطر لكل درجة)item_id, received_quantity, grade_code, batch_no/lot_no, bin_location, cost_per_unit (= allocated WIP / qty), quality_status {Released,OnHold,Rejected}

خوارزمية الاستلام (التكلفة المعيارية)

  1. Total_WIP = Σ(material + labor + machine + overhead)
  2. متعدّد الدرجات: تقسيم إلى سطور، لكلٍّ تكلفته المخصَّصة (راجع 3.3)؛ زيادة FG_Inventory[item, grade]
  3. الترحيل: Debit FG Inventory (standard×qty) + Debit Variance Acct (الفارق) / Credit WIP (الفعلي)
  4. إن Full: الأمر → Completed
  5. إن مرتبطاً بأوامر بيع: توزيع الكميات على العملاء؛ ثم حساب الانحرافات النهائية والأمر → Closed

مثال الاستلام متعدّد الدرجات (ميلامين): أمر مكبس 100 طبق → 3 سطور + هالك: A: 70 @ 11.77، B: 18 @ 7.06، C: 7 @ 3.53، هالك 5؛ القيد: Debit FG-A 824 / FG-B 127 / FG-C 25 / Scrap 24 ; Credit WIP 1000.

فرع التصنيع لدى الغير: الناتج يذهب لملكية العميل لا لمخزونك؛ الإيراد = أجر التحويل فقط (Debit Customer / Credit Toll-service revenue)؛ ويُقفَل «تحت تشغيل التحويل» (عمالة+آلة+غير مباشر، بلا مواد).

بوابة الانحراف النهائي: عند الإقفال تُحسَب وتُحلَّل الانحرافات (سعر/استخدام/عمالة/غير مباشر) وهي مدخل طبقة التكاليف (ملف 04).

القيود المحاسبية التي تولّدها هذه الطبقة

5أنواع قيود (صرف، تحويل، هالك، استلام، Toll)
4وثائق متسلسلة بآلات حالة مستقلة
11+تعدادات (Enums) حاكمة للسلوك

ماذا يعني هذا لـ Moon ERP

🧮

التكاليف: العناصر والمراكز والانحرافات السبعة (Costing)

طبقة "المال" التي تترجم كل عمليات التصنيع إلى أرقام مالية وتكشف المشكلات قبل تفاقمها. تتكوّن من أربعة مكوّنات: طريقة التكلفة، عناصر التكلفة، مراكز التكلفة، وتحليل الانحرافات. وأثمن مخرجاتها هو Variance Analysis الذي يحوّل الفروق المالية إلى مشكلات محدّدة لها مالك مسؤول. تَرِث هذه الطبقة كل القواعد العامة من ملف المبادئ: كل حدث فعلي يُولّد قيداً محاسبياً، والتهيئة تسبق الكود (لا تخصيص مبرمَج لمصنع بعينه).

1. طريقة التكلفة (Costing Method)

قرار استراتيجي حول كيفية تقييم المخزون والإنتاج، يُحدَّد مرة واحدة ويصعب تغييره، وهو قابل للتهيئة لكل صنف على حدة عبر الحقل Item.costing_method. النظام مُلزَم بدعم طرق مختلطة: معيارية للمنتجات النهائية (لإتاحة الانحرافات وتقييم مخزون مستقر)، ومتوسط متحرك للمواد الخام متقلبة الأسعار.

الطريقة (Enum)الفلسفةتناسب
Standardتكلفة معيارية مُسبقة؛ الفرق بين الفعلي والمعياري = انحرافالإنتاج الكمّي المستقر
Actualتكلفة فعلية تُحسب لكل أمر إنتاجورش الأوامر الخاصة
Averageمتوسط تكلفة متحرّكالأسعار المتقلبة
FIFOصرف أقدم دفعة أولاًمنتجات لها صلاحية

المعادلات الأساسية:

كيان بناء التكلفة المعيارية Standard_Cost يحمل: std_material_cost، std_labor_cost، std_overhead_cost، std_total_cost، last_updated، update_frequency. مثال الميلامين: المسحوق (سعر متقلب) → Average، والأطباق → Standard

2. عناصر التكلفة (Cost Elements)

إجمالي تكلفة المنتج = ثلاثة عناصر، لكل منها مصدره وحسابه: Total Cost = Direct Material + Direct Labor + Manufacturing Overhead.

العنصرالمعادلة / المصدرالقيد المحاسبي (GL Post)
مواد مباشرة (Direct Material)Σ(BOM_qty × material_price) — من قائمة المواد + سعر المادة حسب طريقة التكلفةDebit WIP / Credit Raw Materials
عمالة مباشرة (Direct Labor)حسب labor_calc: ساعي labor_hours×labor_rate أو قطعة quantity×piece_rateDebit WIP / Credit Labor Applied
أعباء صناعية (Manufacturing Overhead)overhead_rate = total_annual_overhead / total_annual_cost_driverDebit WIP / Credit MOH Applied (عند التأكيد)

قاعدة حاسمة لتصنيف العمالة: العمالة المباشرة هي فقط من يتغيّر أجرها مع حجم الإنتاج. الموظف ذو الراتب الثابت (ولو كان على خط الإنتاج) يُحسب ضمن الأعباء. الاختبار: هل يتغيّر الأجر مع الإنتاج؟ نعم → مباشرة، لا → أعباء.

محرّك الأعباء cost_driver ∈ { LaborHours, MachineHours, DirectMaterialCost, UnitsProduced }. أنواع الأعباء: متغيّرة (كهرباء، مستهلكات)، ثابتة (إيجار، إهلاك، رواتب)، شبه متغيّرة (صيانة). في نهاية الشهر: مقارنة الأعباء المُحمّلة بالفعلية → فرق زائد/ناقص التحميل → قائمة الأرباح والخسائر.

3. مراكز التكلفة (Cost Center)

وحدة محاسبية تُراكم تكاليف جزء من المصنع، فتُمكّن من قول "تكلفة الكبس X وتكلفة التجميع Y". الكيان Cost_Center يحمل: cc_id، type، parent_cc، manager_id، budget_amount، actual_amount، status.

طريقة التوزيع (Allocation)الآلية: خدمي ← إنتاجي
Directالمراكز الخدمية تُوزَّع على الإنتاجية فقط
Step-Downالخدمي على بقية الخدمية + الإنتاجية بالتتابع
Reciprocalكل الخدمية تتبادل التوزيع فيما بينها + على الإنتاجية

نوع المركز type ∈ { Production, Service, Auxiliary }. قاعدة عامة: تُوزَّع التكاليف الخدمية بالسبب لا بالتساوي؛ صيانة المكابس تُحمَّل أساساً على مركز الكبس لا توزَّع بالتساوي. مثال الميلامين: صيانة 8000 بطريقة Direct → CC-PRESS 90%=7200، CC-FINISH 10%=800، CC-ASSEMBLY 0%

4. تحليل الانحرافات: الانحرافات السبعة (Variance Analysis)

المخرج الأهم. Variance = actual − standard. الإجمالي وحده عديم الفائدة؛ القيمة في التفكيك، إذ يشير كل نوع إلى مشكلة محددة ومالك مسؤول.

#الانحرافالمعادلةالمالك
1سعر المواد MPV(actual_price − std_price) × actual_qtyالمشتريات
2استخدام المواد MUV(actual_qty − std_qty) × std_priceالإنتاج (هدر)
3معدّل العمالة LRV(actual_rate − std_rate) × actual_hoursلا ينطبق على القطعة
4كفاءة العمالة LEV(actual_hours − std_hours) × std_rateالإنتاج
5إنفاق الأعباء المتغيرة VOSVactual_var_OH − (actual_hours × std_VOH_rate)الإدارة
6كفاءة الأعباء المتغيرة VOEV(actual_hours − std_hours) × std_VOH_rate
7حجم الأعباء الثابتة FOVV(actual_production − budgeted) × std_fixed_OH/unitالمبيعات/الإدارة

حدود التسامح (Tolerance): <2% طبيعي بلا تحقيق، 2–5% مراقبة، >5% يتطلّب تحقيقاً. المنطق الشهري: لكل أمر مُقفَل تُحسب الانحرافات السبعة، وكل انحراف يتجاوز الحد يُصنَّف ويُوجَّه لمالكه، ثم يُولَّد تقرير Pareto بأكبر الأسباب.

  1. شهرياً، لكل أمر إنتاج مُقفَل (Closed)
  2. احسب الانحرافات السبعة
  3. لكل انحراف يتجاوز حدّ التسامح: صنّفه (مواد/عمالة/أعباء) ووجّهه للمالك
  4. ولّد تقرير Pareto (أكبر الأسباب أولاً) — يُغذّي تصحيح التخطيط (حلقة مغلقة)

المنتجات المشتركة (Joint-products): التكلفة تتبع القيمة لا تُقسَّم بالتساوي. grade.cost = total_cost × (grade.qty × grade.price) / total_sale_value — فتمتص الدرجة A (الأغلى) أكبر تكلفة للوحدة.

محاسبة الإنتاج تحت التشغيل والإقفال الدوري (WIP & Settlement)

التكلفة منسوجة داخل التنفيذ لا مرحلة دفعية لاحقة: صرف المواد، تأكيد العمالة، وتحميل الأعباء عند التأكيد، كلٌّ يُولّد قيداً مديناً لحساب WIP؛ واستلام المنتج التام يُقفل WIP إلى المنتجات التامة. في نهاية الفترة تُسوّى فروق تحميل الأعباء إلى قائمة الأرباح والخسائر وتُحسب الانحرافات السبعة لكل أمر مُقفَل.

4مكوّنات للطبقة
4طرق تكلفة
3عناصر تكلفة
7انحرافات
3طرق توزيع المراكز

ماذا يعني هذا لـ Moon ERP

🏭

رقابة صالة الإنتاج اللحظية (Shop Floor Control)

طبقة تتبّع لحظية تجيب على سؤال واحد: «أين يقف كل أمر إنتاج الآن؟». توفّر شاشة طرفية لكل قسم (مركز عمل) يُغلق عبرها العامل المرحلة الحالية، فينتقل الأمر تلقائياً إلى المرحلة التالية، مع لوحة متابعة حيّة للمشرف. هي طبقة فوق محرّك التنفيذ القائم، لا إعادة بناء له.

الموقع داخل المعمارية

تقع رقابة الصالة بين التخطيط والتنفيذ وتربطهما لحظياً: تقرأ مسار التصنيع Routing (التسلسل المعرّف مسبقاً كبيانات أساسية ثابتة) لتعرف «ما العملية التالية»، وتكتب التأكيد Confirmation (الإنجاز الفعلي) عبر محرّك التنفيذ القائم. تنبيه جوهري: رقابة الصالة ليست هي المسار Routing — المسار هو التسلسل المعرّف الثابت، أما رقابة الصالة فهي التنفيذ اللحظي لذلك التسلسل.

80%من المنطق موجود مسبقاً
4حالات للعملية الواحدة
5آثار تشغيلية للطبقة
2زرّان فقط بالطرفية: Start / Done

الآلية الجوهرية

كل قسم يقابله شاشة طرفية لمركز عمل؛ وإغلاق العامل للمرحلة هو تأكيد عملية؛ وانتقال الأمر للمرحلة التالية هو تقدّم آلي في خطوة المسار؛ ورؤية الجميع للحالة لحظياً هي المتابعة الحيّة لصالة الإنتاج.

الكيان المحوري — حالة العملية اللحظية (Order_Operation)

هذا الكيان قائم مسبقاً على جدول Order_Operation (المعرّف في طبقة التنفيذ)؛ ودور رقابة الصالة هو تفعيل تتبّعه اللحظي فقط، لا إنشاء جدول جديد.

الحقلالوصف
order_noأمر الإنتاج الذي تتبع له العملية
operation_noرقم الخطوة داخل المسار (مثال: 10، 20، 30)
work_center_idمركز العمل / القسم المنفّذ
tool_idالأداة / القالب المرتبط بالعملية
statusالحالة ضمن { Waiting, Ready, InProgress, Completed }
actual_start_timeيُختم عند ضغط زر [Start]
actual_end_timeيُختم عند ضغط زر [Done]
confirmed_byالعامل الذي أغلق العملية
quantity_completedالكمية المسجّلة عند التأكيد

آلة الحالة للعملية (operation_status)

الحالةالدلالة
Waitingالعملية السابقة لم تكتمل بعد؛ العملية غير قابلة للتنفيذ على طرفيتها
Readyاكتملت السابقة؛ تظهر العملية في طابور الطرفية ويمكن بدؤها
InProgressضغط العامل [Start] وتم ختم actual_start_time
Completedضغط العامل [Done]؛ ختم actual_end_time وتسجيل التأكيد

منطق التقدّم الآلي عند الضغط على «Done»

  1. تعيين operation[N].status = Completed وختم end_time = now.
  2. تسجيل التأكيد (الكمية + توزيع الدرجات + الهالك) عبر استدعاء محرّك التنفيذ القائم.
  3. استدعاء routing.get_next(N) لقراءة المسار وتحديد العملية التالية.
  4. إن وُجدت عملية تالية: تعيين operation[next].status = Ready وإشعار مركز عملها فتظهر على طرفيته.
  5. إن لم توجد (آخر عملية): تعيين order.status = Completed فيصبح الأمر جاهزاً لاستلام البضاعة GR.

العلاقة الجسرية: routing.get_next(N) يجيب «ما التالي؟» (من المسار)، وحالة العملية تسجّل «أين نقف» (لحظياً).

مثال تطبيقي — مسار: كبس ← إزالة زوائد ← صنفرة ← تدريج

  1. طرفية الكبس: يصل WO-001؛ يضغط العامل [Start] فتصير العملية InProgress.
  2. يضغط [Done] فتُسجّل الكمية وتصير العملية Completed.
  3. يقرأ النظام المسار فيجد التالية «إزالة الزوائد»، فيجعلها Ready ويُشعر طرفيتها.
  4. يظهر WO-001 تلقائياً على طرفية إزالة الزوائد — وهذا هو «التقدّم».
  5. تستمر السلسلة حتى التدريج (آخر عملية) فيصبح الأمر Completed وجاهزاً للاستلام.

الطرفية لكل قسم (Terminal UI)

لوحة المتابعة الحيّة للمشرف (Real-time Dashboard)

لوحة حيّة تُظهر لكل أمر عمليته الحالية ونسبة إنجازها، مثل: WO-001: Sanding (Op 30) — 60%، WO-002: Pressing — just started، WO-003: Waiting for press (mold busy). ومنها كشف الاختناق اللحظي: تكدّس أوامر بحالة Waiting قبل مورد معيّن يكشف أنه القيد الحالي — ترتبط بتخطيط السعة CRP لكنها لحظية لا تقديرية.

الآثار التشغيلية الخمسة

#الأثر
1رؤية لحظية: تعرف الإدارة موقع كل أمر بلا سؤال العمّال.
2تغذية تلقائية للتأكيد: كل Done يُنشئ تأكيداً فورياً (كمية + وقت) فتصير بيانات التكلفة حيّة ودقيقة بلا إدخال يدوي آخر اليوم.
3كشف اختناق لحظي: تكدّس Waiting قبل مورد يفضح القيد الحالي.
4أزمنة تشغيل فعلية: البدء/الانتهاء لكل عملية يغذّي OEE وضبط أزمنة المسار وانحرافات الزمن (الفعلي مقابل المخطّط).
5فرض التسلسل: لا تظهر عملية قبل اكتمال سابقتها ⇐ سلامة الجودة والعملية.

نطاق البناء والتكاملات الاختيارية

ماذا يعني هذا لـ Moon ERP

🔗

التكاملات ونموذج البيانات الموحد وترتيب البناء (Integrations & Data Model)

يحدد هذا الجزء من المواصفة كيف يتصل تطبيق التصنيع بالوحدات القائمة في النظام (المبيعات، المشتريات، المخزون، دفتر الأستاذ العام، الموارد البشرية) دون إعادة بنائها، ويجمع كل كيانات الوحدة في نموذج علائقي واحد، ويفرض ترتيب بناء مُلزماً تعتمد كل خطوة فيه على ما قبلها. القاعدة الحاكمة من الملف 00: «العمومية» — كل سلوك خاص بمصنع معين يُعبَّر عنه كحقل/قائمة قيم (enum) مع تفريع منطقي، لا كمسار شيفرة منفصل.

5وحدات تكامل خارجية
26كياناً في النموذج الموحد
12خطوة بناء متسلسلة
6مراحل مستقبلية مُحددة

1. خريطة التكامل — «التصنيع ليس جزيرة»

تنص المواصفة صراحةً على أن وحدة التصنيع تتكامل مع وحدات موجودة بالفعل في النظام المضيف ويجب عدم إعادة بنائها. الوحدات الخارجة عن النطاق (تُدمج ولا تُبنى): دفتر الأستاذ العام، نواة المخزون/المستودعات، نواة المشتريات، طلبات المبيعات، الموارد البشرية/الرواتب.

الوحدة الخارجيةالاتجاهما الذي ينتقل
المبيعات Sales← إلى التصنيعطلبات العملاء تُطلق إنتاجاً حسب الطلب (MTO) أو تصنيعاً لدى الغير (Toll)؛ تُعاد تواريخ الوعد للمبيعات
المشتريات Procurement→ من التصنيعتخطيط الاحتياجات (MRP) يُصدر أوامر شراء مخططة؛ الاستلامات تُحدّث التوفر
المخزون Inventory↔ ثنائي الاتجاهحجوزات المواد، حركات المادة الخام ← تحت التشغيل ← المنتج التام، التتبع بالدفعة/اللوط، مخزون الأمانة (مملوك للعميل)
دفتر الأستاذ العام General Ledger→ من التصنيعكل صرف/تأكيد/استلام يُرحّل قيوداً محاسبية (تحت التشغيل، العمالة/الآلة/الأعباء المحمّلة، الانحرافات)
الموارد البشرية HR→ إلى التصنيعمعدلات أجور العمالة؛ كميات العمل بالقطعة تغذّي الرواتب عكسياً

2. قواعد التكامل الجوهرية

3. نموذج البيانات الموحد — البيانات الأساسية (Master Data)

الكيانالمفتاح / العلاقاتأهم الحقول والقواعد
Item مرجعي من النظام المضيفitem_id PKname, uom, procurement_type, material_ownership, costing_method, lead_time_days, safety_stock — يُشار إليه ولا يُملك داخل التصنيع
BOM_Headerbom_id PK، parent_item_id FK→Itembom_type, version, base_quantity, uom, status, effective_from, effective_to, created_by, approved_by
BOM_LineFK→BOM_Header (1—*)، component_id FK→Itemline_no, quantity, uom, scrap_percentage, issue_type, issue_level, operation_seq, substitute_items
Routing_Headerrouting_id PK، item_id FK→Itemrouting_type, version, lot_size_from, lot_size_to, status, effective_from, effective_to, total_lead_time
Routing_OperationFK→Routing_Header (1—*)، FK→Work_Center، FK→Tooloperation_no, description, setup_time, run_time_per_unit, cavity_count, cycle_time, queue_time, move_time, inspection_required, critical_operation, required_skill_code
Work_Centerwc_id PK، cost_center_id FK→Cost_Centercategory, plant_location, capacity_unit, daily_capacity, capacity_multiplier, efficiency_percent, utilization_percent, calendar_id, setup_cost_rate, labor_cost_rate, machine_cost_rate, overhead_rate, labor_calc, bottleneck_flag
Tool مورد resource_type=Tooltool_id PK، product_id FK→Itemdescription, cavity_count, setup_time, status, life_cycles, cycles_used, purchase_cost — الإهلاك بالاستخدام (الدورات) لا بالزمن

4. نموذج البيانات الموحد — التخطيط (Planning)

الكيانالمفتاح / العلاقاتأهم الحقول
MPS_Headerid PKplan_name, plant_id, time_bucket, start_date, end_date, frozen_fence, slushy_fence, status
MPS_LineFK→MPS_Header، product_id FK→Itemperiod_date, forecast_qty, confirmed_orders_qty, planned_production, projected_balance, safety_stock_target, available_to_promise
Item_MRP_Settingsitem_id FK→Itemmrp_type, procurement_type, material_ownership, lot_sizing_rule, lot_size, min_lot, max_lot, safety_stock, lead_time_days, reorder_point
MRP_Planned_Order عابر — يُعاد توليده كل تشغيلةitem_id FK→Itemorder_type, quantity, required_date, release_date, source_demand_id, mrp_run_id
CRP_Load مُخرَجresource_idresource_type, period, required_load, available_capacity, utilization_pct, status

5. نموذج البيانات الموحد — التنفيذ (Execution)

الكيانالمفتاح / العلاقاتأهم الحقول والقواعد
Production_Order_Headerorder_no PK، FK→Item، FK→Toolorder_type, quantity, production_type, material_ownership, start_date, finish_date, status, bom_snapshot_id, routing_snapshot_id, wip_account — لقطة مجمّدة للـBOM والمسار عند الإطلاق
Order_ComponentFK→PO_Header، FK→Itemrequired_quantity, issued_quantity, reserved_quantity, operation_seq
Order_OperationFK→PO_Header، FK→Work_Center، FK→Tooloperation_no, planned_setup_time, planned_run_time, actual_setup_time, actual_run_time, status, actual_start_time, actual_end_time, confirmed_by, confirmed_quantity, scrap_quantity — الحالة تُدار من طبقة SFC
Material_Issue_Headerissue_no PK، FK→PO_Headerissue_date, issue_type, issue_level, operation_no, issuer_id, warehouse_from, status
Material_Issue_LineFK→MI_Header، material_code FK→Itemquantity, batch_no, cost_price, total_cost, bin_location, ownership
Confirmation_Headerconfirmation_no PK، FK→PO_Headeroperation_no, confirmation_type, operator_id, work_center_id, shift, timestamp
Confirmation_Yield العائد توزيع لا قيمة مفردةFK→Conf_Headergrade_code, quantity, unit_sale_price — منتجات مشتركة بدرجات A/B/C بأسعار مختلفة
Confirmation_DetailFK→Conf_Headerscrap_quantity, rework_quantity, setup_time_actual, run_time_actual, labor_hours, machine_hours, reason_code
Goods_Receipt_Headergr_no PK، FK→PO_Headergr_date, receipt_type, warehouse_to, receiver_id, status
Goods_Receipt_Line سطر لكل درجةFK→GR_Header، FK→Itemreceived_quantity, grade_code, batch_no, bin_location, cost_per_unit, quality_status

6. نموذج البيانات الموحد — التكلفة والكيانات العابرة (Costing & Cross-cutting)

الكيانالمفتاح / العلاقاتأهم الحقول
Standard_Costitem_id FK→Itemstd_material_cost, std_labor_cost, std_overhead_cost, std_total_cost, last_updated, update_frequency
Cost_Centercc_id PK، parent_cc FK→Cost_Center (هرمي)type, manager_id, budget_amount, actual_amount, status
Variance_RecordFK→PO_Headervariance_type, amount, percentage, classification, owner, investigation_flag
Pegging طلب↔توريد متعدد لمتعددFK→PO_Header، FK→SalesOrderallocated_quantity — يربط طلب مبيعات بعدة أوامر إنتاج والعكس
Delivery_Schedule تجزئة الطلبschedule_id PK، FK→SalesOrder، FK→PO_Headerquantity, scheduled_date, status, linked_production_order

7. ملخص العلاقات والتعدديات الرئيسية

8. قوائم القيم الحاكمة (Enums — file 00 §0.5)

القائمةالقيم
production_typeMakeToStock, MakeToOrder, AssembleToOrder, TollManufacturing
material_ownershipOwn, Customer
procurement_typeBuy, Make
costing_methodStandard, Actual, Average, FIFO
labor_calcHourly, PieceRate
issue_typeManual, Backflush, AutoIssue
issue_levelPerOrder, PerShift, PerOperation
resource_typeMachine, Tool, Labor
lot_sizing_ruleExact, Fixed, MinMax, EOQ, PeriodOrder
order_statusPlanned, Released, InProcess, Completed, Closed
operation_statusWaiting, Ready, InProgress, Completed

9. ترتيب البناء المُلزَم — كل خطوة تعتمد على سابقتها

  1. البيانات الأساسية + CRUD (BOM تكراري، Routing، Work_Center، Tool)
  2. إعدادات MRP للصنف Item_MRP_Settings + التكلفة المعيارية Standard_Cost
  3. خطة الإنتاج الرئيسية MPS (استهلاك التنبؤ، أسوار الزمن، CTP)
  4. تخطيط الاحتياجات MRP (التفجير التكراري، تحجيم الدفعات، فرع التصنيع لدى الغير)
  5. تخطيط الطاقة CRP (تقاطع الموارد، كشف التحميل الزائد)
  6. أمر الإنتاج (اللقطة المجمّدة، آلة الحالة، شبكة الأوامر)
  7. صرف المواد (3 أنواع، 3 مستويات، الأمانة)
  8. التأكيد (توزيع الدرجات، الأجر بالقطعة، القيود)
  9. استلام البضاعة (متعدد الدرجات، بوابة الانحراف، فرع التصنيع لدى الغير)
  10. التكلفة (الطرق، العناصر، مراكز التكلفة، 7 انحرافات)
  11. مراقبة أرضية المصنع SFC (حالة العمليات لحظياً، واجهة الطرفيات، التقدم التلقائي، لوحة المعلومات)
  12. التكاملات (المبيعات، المشتريات، المخزون، دفتر الأستاذ، الموارد البشرية)

10. المراحل المستقبلية المُحددة (غير مفصّلة)

المكوّنواجهة الاتصال بالبناء الحالي
الجدولة التفصيلية APSيستهلك الأوامر المخططة + تقاويم الموارد ← جدول زمني مرحلي لـ SFC
إدارة الجودة QMSيربط درجات/أسباب التأكيد؛ بوابات فحص على العمليات
إدارة العدد/القوالبيوسّع كيان Tool: دورة الحياة، الصيانة، تتبع الدورات، تنبيهات الاستبدال
الصيانة الوقائية PMيخفّض طاقة Work_Center أثناء نوافذ التوقف
الكفاءة الكلية OEEيستهلك أزمنة Order_Operation الفعلية والهالك
إدارة دورة حياة المنتج PLM / ECOيحكم أوامر تغيير BOM/Routing (يُضفي رسمية على مفهوم اللقطة)

ماذا يعني هذا لـ Moon ERP

🤝

ملحق: متطلبات عميل مصنع الأدوية كما وردت (Pharma Client Requirements)

هذا ملحق للتحليل المنشور يُفرّغ مقابلة مالك مصنع أدوية يعمل تصنيعاً للغير بالأوردر (Toll / Make-to-Order) إلى مواصفة متطلبات مرقّمة وقابلة للاختبار. الملحق يضيف واجهة العميل في بداية دورة الحياة — التسعير الاستكشافي، قائمة التركيب المبدئية، الباتش التجريبي، بوابة الدفعة المقدمة، وشاشات المراحل — وهي أمور لم يغطّها التحليل الأصلي. الملحق لا يُعيد فتح القرارات المُعتمدة سابقاً (مواد العميل والأمانة D-15، الحجز A5، آلة حالات الأمر، عائلات القيود في القسم 22)، بل يركّب المتطلبات الجديدة فوق تلك القضبان الجاهزة. كل ما يلي يعيش داخل Modules/Production الموسَّعة ببادئة mfg_* للجداول الجديدة وبادئة الصلاحيات production.*.

ترجمة كلام العميل إلى المصطلح القياسي ثم إلى ركيزة النظام

كلام العميلالمصطلح القياسي للتصنيع للغيرالركيزة في Moon ERP (هذا الملحق)
دورة التكلفة الاستكشافية / تسعير مبدئيتسعير عرض الأسعار (RFQ / quotation costing)جدولان جديدان mfg_cost_estimates + mfg_cost_estimate_versions (التسمية القانونية من الملحق 34 — سُحبت الأسماء المؤقتة mfg_quotations/mfg_quotation_costings)؛ مستند العرض للعميل يُعاد استخدام SalesQuotation (D-29)
التركيبة، وR&D تعمل قائمة تركيب مبدئيةقائمة تركيب مبدئية/هندسية (Draft / Engineering BOM)bill_of_materials بنوع bom_type=Engineering وحالة status=Draft (امتداد مُعتمد في خريطة 20)
عينة / باتش تجريبي للعميلباتش تجريبي/نموذجي (Pilot / Sample batch)جدول جديد mfg_trial_batches + أمر إنتاج حقيقي بوسم order_type=Trial
دفعة تحت حساببوابة دفعة العميل المقدمة (Customer advance gate)جدول جديد mfg_customer_advances بمفتاح ملف الأمر case_id (الملحق 35) + شرط مانع للإصدار وللشراء بالنيابة معاً؛ القبض عبر سند القبض ReceiptVoucher/ApproveReceiptVoucher (التعديل المعتمد LA-1/D-33)
العميل يورّد خامته وتظل ملكهمواد العميل / الإصدار الحر (أمانة، ملكية العميل) (Free-issue / consignment)material_ownership=Customer + warehouses.is_consignment (قرار D-15 المُعتمد)
حجز الخامات لهذا الأوردرحجز مواد مربوط بالأمر (Order-pegged reservation)StockService::reserve()/release() (الفجوة A5)
واجهات لكل مرحلة إنتاجية تنقل الأوردرشاشات بوابات المراحل (Stage-gate workspaces)جدول جديد mfg_order_stage_gates بمفتاح ملف الأمر case_id يقود آلة مراحل الملف (الملحق 35) من الشاشات — وتفسير «مرحلة إنتاجية» (مراحل تجارية أم مراحل تصنيع فيزيائية) مُسجَّل سؤالاً مفتوحاً OQ-9
كل المستندات مربوطة بأوردر العميلنَسَب المستندات المربوط بالأمر (Order-pegged lineage)mfg_peggings + وسم sales_order_id على كل مستند تصنيعي
21متطلب مرقّم R-01..R-21
2دورتان موثّقتان خطوة بخطوة
6جداول mfg_ جديدة (مع ملف الأمر)
9أسئلة مفتوحة لم يحسمها العميل

الدورة الأولى — التكلفة الاستكشافية (تسعير عرض الأسعار)

دورة لا تُحدث أي أثر مخزني أو محاسبي؛ مخرجها عرض سعر مؤقت يبدأ دورة الإنتاج إذا قَبِله العميل.

الرقمالمتطلبالجهة الفاعلةالمُحفّزالمخرجاتالقاعدة الحاكمة
R-01استقبال طلب التسعير من العميلالمبيعات / الواجهة الأماميةالعميل يقدّم منتجاً بتركيبته ويطلب سعراًmfg_cost_estimates بحالة Draft ومرقّم عبر SequenceService بمفتاح 'cost_estimate'طلب التسعير ليس أمر بيع ولا يُحدث مخزوناً ولا قيداً؛ هو رأس نَسَب مربوط بأمر العميل
R-02R&D تبني قائمة تركيب مبدئيةقسم البحث والتطويرإسناد الطلب إلى R&D (توجيه عمل لا حالة — آلة الملحق 34 الرشيقة)قائمة تركيب bom_type=Engineering وstatus=Draft مرتبطة بالتقديرالقائمة المبدئية لا تُسحب إلى أمر إنتاج؛ فقط القائمة Active/Production قابلة للإصدار — مع استثناء واحد معتمد (D-32): أوامر Trial خلف الإعداد production.trial_allow_draft_bom؛ الأوامر العادية أبداً
R-03الحسابات تحتسب التكلفة المبدئيةالحسابات / مهندس التكلفةجاهزية القائمة المبدئية (DraftBomReady ← الحالة Estimated عند الحساب)mfg_cost_estimate_versions: خامات + عمالة + أعباء ← تكلفة الوحدة ← هامش ← سعر معروض + valid_untilيُعاد استخدام محرك التجميع نفسه (ComputeStandardCost) لكن على القائمة المبدئية وينتج تقديراً لا تكلفة معيارية؛ بلا قيد محاسبي
R-04إعادة التكلفة/العرض المبدئي للعميلالمبيعاتاعتماد التكلفة (Quoted)مستند عرض سعر مؤرّخ الصلاحية يُرسل للعميلالعرض يحمل نافذة صلاحية صريحة؛ بعد انتهائها يلزم إعادة تسعير قبل التحويل لأمر

تسلسل الدورة الأولى

  1. العميل يقدّم المنتج + التركيبة + الكمية المستهدفة ← المبيعات تفتح mfg_cost_estimates بحالة Draft. R-01
  2. الإسناد إلى R&D ← بناء قائمة تركيب مبدئية Engineering/Draft. R-02
  3. الإسناد إلى الحسابات ← تفجير القائمة وتطبيق معدلات مركز العمل وcost_driver ← نسخة في mfg_cost_estimate_versions (الحالة Estimated). R-03
  4. اعتماد التكلفة (Quoted) ← المبيعات تعيد التكلفة المبدئية للعميل كمستند مؤرّخ الصلاحية. R-04
  5. نهاية الدورة الأولى — بلا مخزون ولا قيد ولا التزام؛ المخرج عرض مُسعّر يُمهّد للدورة الثانية إن قُبِل.

الدورة الثانية — الإنتاج (تصنيع حسب الطلب): المرحلة (أ) التجربة

الرقمالمتطلبالجهة الفاعلةالمُحفّزالمخرجاتالقاعدة الحاكمة
R-05طلب باتش تجريبي/عينةالمبيعات ← R&Dالعميل يطلب عينة للتقييمmfg_trial_batches + أمر إنتاج بوسم order_type=Trial مربوط بالطلبالتجربة عملية حقيقية بتكلفة حقيقية تستهلك مواداً وتراكم تحت تشغيل وتُرحّل القيود كاملة؛ تنفّذها R&D وتُميَّز فقط بـTrial ليُفصل تقريرها وتُستبعد من المعايرة حتى تُعتمد
R-06تنفيذ وتكليف التجربةR&D / خط التجربةإصدار أمر التجربةتأكيدات وتكلفة وعائد/خردة التجربة؛ actual_unit_cost وresultتتبع التجربة نفس قضبان الإصدار→الصرف→التأكيد→الاستلام→الإقفال (بلا منطق ترحيل جديد). من يتحمل تكلفة التجربة وماذا يحدث عند فشلها غير محدَّدين — انظر OQ-1/OQ-3
R-07تقييم العميل للتجربةالعميل (تُسجِّله المبيعات)تسليم العينة للعميل بمستند تسليم العينة (R-20) — مخرَج التجربة يقيم في دلو التقييم لا في مخزون التام القابل للبيعresult = Passed | Failedتسجيل القرار مشروط بوجود مستند التسليم (sample_delivery_doc_id)؛ الفشل يمنع إنشاء الأمر الرسمي حتى تنجح تجربة جديدة أو يتخلى العميل؛ إعادة التجربة ترجع إلى R-05

الدورة الثانية — المرحلة (ب): أمر رسمي ← تثبيت ← تخطيط ← دفعة ← حجز ← تصنيع ← استلام

الرقمالمتطلبالجهة الفاعلةالمُحفّزالمخرجاتالقاعدة الحاكمة
R-08التحويل إلى أمر عميل رسميالمبيعاتموافقة العميل (بعد العرض و/أو نجاح التجربة)أمر بيع مؤكد SalesOrder؛ الطلب Convertedكل المستندات من هنا تُربط بأمر العميل؛ الأمر الرسمي هو مرتكز الطلب لخطة الإنتاج والربط
R-09R&D تثبّت قائمة التركيبالبحث والتطويرإنشاء الأمر الرسميترقية القائمة إلى bom_type=Production وstatus=Active (نسخة نشطة واحدة لكل نافذة سريان)القائمة النشطة فقط مؤهلة لتجميد لقطة الإصدار؛ الترقية انتقال حالة محكوم لا تعديل في المكان
R-10التخطيط يحدد الاحتياجات والجاهزيةالتخطيطتثبيت القائمةقائمة الاحتياج (إجمالي←صافي)، النواقص، حكم الجاهزية، ومسوّدات طلبات شراء تُجهَّز ولا تُرفعيجب فصل المواد المشتراة بمعرفة المصنع عن مواد العميل المورَّدة (إصدار حر، ملك العميل، في مخزن الأمانة — تُستلم بمستند R-19)؛ مواد العميل لا تُشترى ولا تُقيَّم. طلبات الشراء بالنيابة لا تُرفع إلا بعد بوابة الدفعة (R-11) — فهي علة الدفعة عند العميل (قاعدة U-6)
R-11بوابة الدفعة المقدمةالحسابات (تسجّل) — البوابة في ReleaseProductionOrderجاهزية التخطيط + الحاجة لشراء مواد بالنيابةmfg_customer_advances بمفتاح الملف (Received) عبر سند قبض reference_type='mfg_order_case' وسطره دائن لحساب الدفعات — قيد السند نفسه (مدين نقدية / دائن دفعات العملاء — التزام) هو الترحيل الوحيد (LA-1/D-33؛ يُسحب تصميم CreateJournalEntry المباشر السابق)البوابة تمنع الإصدار والشراء بالنيابة معاً (لا حجز ولا رفع طلبات شراء موسومة ولا تصنيع) حتى تُستوفى (مُستلمة أو مُعفاة بصلاحية)؛ تُسوَّى الدفعة لاحقاً على الفاتورة النهائية (production_advance_settlement). النسبة غير محددة — OQ-2/D-25
R-12حجز المواد لهذا الأمر (أثر جانبي للإصدار R-13)النظام (داخل ReleaseProductionOrder — وفق الصف 13 المعتمد: الحجز لا يسبق الإصدار أبداً)تنفيذ ReleaseProductionOrder (الذي تسبقه بوابة الدفعة R-11)كتابة reserved_quantity لكل مكوّن عبر StockService::reserve() وحجز الأداةالحجز مربوط بالأمر فلا يَعِد أمران بنفس الرصيد؛ مكوّنات العميل تُحجز من مخزن الأمانة والمكوّنات المملوكة من المخزون الذاتي
R-13إنشاء أمر التصنيع (الإصدار)التخطيط / مدير الإنتاجاستيفاء بوابة الدفعة (R-11) والوضع المالي سليمالأمر Planned → Released؛ تجميد لقطة القائمة والمسار + تنفيذ الحجز كأثر جانبي (R-12)؛ حدث ProductionOrderReleasedالإصدار هو النقطة الوحيدة التي تجمّد اللقطة وتُطلق الحجز وتجهيز الفحص ذرّياً (يُصحَّح الترتيب الدائري السابق بين R-12 وR-13)؛ بوابة الدفعة تسبق هذا الانتقال
R-14صرف الموادأمين المخزنإصدار الأمرmfg_material_issuesApproveIssue ← مدين تحت التشغيل / دائن خام (المملوكة)؛ مواد العميل حركة تتبّع فقطتفرّع الملكية لكل سطر؛ مواد العميل لا تُدين خاماً ذاتياً ولا تُحمّل تكلفة مادة على WIP (تكلفة تحويل فقط)؛ يُستهلك الحجز هنا
R-15التصنيع (تأكيدات العمليات)المشغّلون / الخطالأمر تحت التشغيلmfg_confirmations + قيود أجور وأعباء محمّلة؛ تقدّم آلي للعملية التاليةإعادة استخدام محرك التأكيد والتقدّم الآلي للمحطات دون تغيير
R-16الإنهاء والاستلام في مخزن التامأمين المخزن / النظامتأكيد العملية الأخيرةmfg_goods_receiptsApproveReceipt ← مدين تام / دائن WIP (المملوك) أو فرع التشغيل: تام بملكية العميل + إخلاء خامة النيابة (production_toll_material_cogs، R-21) + الفاتورة النهائيةفي أمر التشغيل يكون التام ملك العميل؛ الفاتورة النهائية — تُنشأ للأمام عبر الإجراء الرفيع الجديد Sales\CreateServiceInvoice (سدّ U-4؛ لا نداء متحكم ولا كتابة مباشرة) — تحمل أجر التحويل + سطر تمرير الخامة المشتراة بالنيابة (R-21) وتُسوَّى عليها الدفعة (production_advance_settlement)؛ وتمر للفوترة الإلكترونية

المتطلبات العابرة للمراحل

تسلسل الدورة الثانية الكامل

  1. طلب التجربة: العميل يطلب عينة ← mfg_trial_batches + أمر order_type=Trial تنفّذه R&D مربوطاً بالتقدير/الملف. R-05
  2. تشغيل التجربة: إصدار→صرف→تأكيد→استلام→إقفال حقيقي؛ التقاط تكلفة/عائد/خردة التجربة؛ المخرَج إلى دلو التقييم ثم تسليمه بمستند العينة. R-06 R-20
  3. تقييم التجربة: قرار العميل (مستند التسليم شرط) ← Passed أو Failed؛ الفشل ← إعادة تجربة أو تخلٍّ. R-07
  4. الأمر الرسمي: عند الموافقة تنشئ المبيعات أمر العميل المؤكد؛ كل ما بعده يُربط به. R-08
  5. تثبيت القائمة: R&D ترقّي المبدئية إلى Production/Active. R-09
  6. التخطيط والجاهزية: احتساب الاحتياجات (إجمالي←صافي)، فصل المشترى بالنيابة عن مواد العميل، مسوّدات طلبات شراء تُجهَّز ولا تُرفع. R-10
  7. بوابة الدفعة: لأن المصنع يشتري الخام بالنيابة، يجب أن يدفع العميل دفعة مقدمة ← Received عبر سند القبض (LA-1)؛ الإصدار والشراء بالنيابة محجوبان حتى الاستيفاء — وطلبات الشراء تُرفع الآن فقط. R-11
  8. إدخال خامة العميل (إن وُجدت): تُستلم في مخزن الأمانة بمستند الاستلام التتبّعي. R-19
  9. إنشاء أمر التصنيع (الإصدار): تجميد اللقطة وتنفيذ الحجز كأثر جانبي (مخزون ذاتي و/أو أمانة + الأداة) وإطلاق ProductionOrderReleased. R-13 R-12
  10. صرف المواد: إدانة WIP للمملوكة؛ مواد العميل حركة تتبّع فقط. R-14
  11. التصنيع: تأكيدات العمليات وقيود الأجور/الأعباء والتقدّم الآلي. R-15
  12. الإنهاء والاستلام في مخزن التام: مدين تام / دائن WIP (المملوك) أو فرع التشغيل (تام بملكية العميل + فاتورة نهائية = أجر تحويل + سطر تمرير الخامة R-21 تُسوَّى عليها الدفعة)؛ إرجاع/تسوية خامة العميل غير المستخدمة (R-19)؛ الأمر يكتمل ويُقفل. R-16
  13. شاشات المراحل (R-17) تنقل الأمر بين كل خطوة، والنَسَب (R-18) يبقيه مربوطاً بأمر العميل طوال الوقت.

الأشياء الجديدة/المعدّلة التي يُدخلها هذا الملحق

الكائنالحكمملاحظات
mfg_cost_estimatesجديدرأس التقدير/طلب التسعير (الاسم القانوني من الملحق 34): العميل، المنتج المرشَّح، الكمية، draft_bom_id، sales_quotation_id (إعادة استخدام)، حالة رشيقة {Draft, Estimated, Quoted, Won, Lost}، وsales_order_id عند الفوز
mfg_cost_estimate_versionsجديدتقدير مُؤرشَف بالإصدارات غير قابل للتعديل: خامات/عمالة/أعباء، تكلفة الوحدة، الهامش، السعر المعروض، valid_until، أساس التسعير
mfg_order_casesجديد (الملحق 35)مظلّة الدورة الثانية التجارية: آلة 14 مرحلة، حقول الدفعة، مخزن الأمانة، القائمة المعتمدة؛ ملف واحد ↔ N أوامر إنتاج — وآلة حالات أمر الإنتاج لا تُمسّ
mfg_trial_batchesجديدcase_id، cost_estimate_id، production_order_id (أمر Trial)، الكمية، التكلفة الفعلية، النتيجة {Pending, Passed, Failed}، ومستند تسليم العينة (R-20). أُبقي كياناً مستقلاً (خلافاً لميل الدليل 32 لعلمٍ على الأمر) لأن الملف يمتد عبر N أوامر إعادة تجربة لكلٍّ حكمه وتسليمه
mfg_customer_advancesجديدcase_id (دفعة واحدة للتعاقد — الملحق 35)، المبلغ، النسبة، الحالة {Due, Received, Waived}، receipt_voucher_id، journal_entry_id (قيد السند — LA-1)، applied_invoice_id
mfg_order_stage_gatesجديدجدول التدقيق والانتقال خلف الشاشات بمفتاح الملف (الملحق 35): الملف، من مرحلة، إلى مرحلة، الفاعل، لقطة البوابة، التوقيت
مستندا إدخال/إرجاع الأمانة + مستند تسليم العينةامتداد/جديد رفيعفرع تتبّعي لمستندي ApproveReceipt/ApproveIssue لخامة العميل (R-19) + مستند صرف تتبّعي من دلو التقييم للعينة (R-20) — لا مساس مباشراً بالأرصدة أبداً
bill_of_materials.bom_type/statusامتداد مُعتمدEngineering+Draft = القائمة المبدئية الاستكشافية؛ Production+Active = المثبّتة (لا عمود جديد)
production_orders.order_typeامتدادإضافة Trial للتعداد ليصبح التشغيل التجريبي أمراً مستقلاً منفصل التقرير
ReleaseProductionOrderامتدادإضافة شرط بوابة الدفعة المقدمة قبل اللقطة والحجز — ونفس البوابة تحجب رفع طلبات الشراء بالنيابة
حساب وأنواع القيودامتداد محاسبيproduction_customer_advance (قيد السند — LA-1/D-33)، production_advance_settlement (التسوية عند الفوترة — اسم واحد قانوني)، production_advance_refund (D-35)، عائلة سياسة التجربة production_trial_absorb/_defer/_apply/_writeoff (D-23)، وproduction_toll_material_cogs (R-21)؛ + مفتاح إعداد production.customer_advance_account_id يُزرع عبر AutoAccountService

ما لم يحدده العميل — أسئلة مفتوحة تتطلب اعتماداً قبل البناء

الرقمالسؤال المفتوحلماذا يهمالافتراض المقترح (بانتظار المجلس)
OQ-1من يدفع تكلفة الباتش التجريبي؟ العميل أم يتحملها المصنع؟يحدد هل تُفوتر التجربة للعميل أم تُرحّل كمصروف بحث وتطوير داخلي — يؤثر على قيد R-06سياسة لكل ملف trial_cost_policy ∈ {Bill, Absorb, CreditOnWin} بعائلة قيودها (الملحق 35 §1.1) — اعتُمدت D-23 وسُحب الاقتراح الثنائي السابق
OQ-2نسبة الدفعة المقدمة؟ ثابتة، لكل عميل، لكل أمر، أم على أساس تكلفة الخامات؟تحدد مبلغ بوابة R-11 وسياسة الائتمانإعداد production.default_advance_percent مع تجاوز لكل أمر؛ الإصدار الأول = نسبة من تكلفة المواد المشتراة بالنيابة
OQ-3ماذا لو فشلت التجربة؟ إعادة (من يدفع؟)، إعادة تفاوض، أم تخلٍّ؟يؤثر على حلقة R-07 وملكية التكلفة وإغلاق النَسَبإعادة التجربة مسموحة؛ ملكية التكلفة تتبع قرار OQ-1؛ تجارب فاشلة متكررة ← وسم تلقائي للمراجعة
OQ-4ملكية خردة مواد العميل المورَّدة (الإصدار الحر) — تُعاد، تُفوتر، أم تُشطب على العميل؟خردة الأمانة ملك العميل ولا يجوز تقييمها كمصروف خردة ذاتيتتبّع خردة الأمانة منفصلة (بلا قيد خردة ذاتي)، تسوية/إعادة للعميل حسب العقد، تظهر في تقرير حركة أمانة
OQ-5فترة صلاحية سعر العرض (valid_until)العروض المنتهية يجب إعادة تسعيرها قبل التحويل (R-04←R-08)إعداد production.quote_validity_days (افتراضي 30)؛ العرض المنتهي يحجب التحويل حتى إعادة التسعير
OQ-6سياسة استرداد/مصادرة الدفعة عند إلغاء العميل بعد استلامهامعالجة التزام حساب دفعات العملاءحسب العقد؛ الافتراضي = تُطبَّق على التكلفة المتكبَّدة والباقي قابل للرد
OQ-7هل شاشات المراحل حصرية بالدور (كل مرحلة لقسم) أم يمكن لمستخدم تغطية مراحل؟يحدد دقة الصلاحيات في R-17شريحة صلاحية لكل مرحلة تحت production.*؛ دور المشرف يغطي كل المراحل
OQ-8علاقة كمية التجربة الدنيا/المستهدفة بكمية الأمر الكاملتسوية تكلفة التجربة على الأمر الكاملكمية التجربة مستقلة؛ تكلفة الأمر الكامل يُعاد تقديرها من فعليات التجربة
OQ-9ما معنى «واجهات لكل مرحلة إنتاجية»؟ مراحل الملف التجارية (R&D/تخطيط/دفعة/حجز — قراءة الملحق 35) أم مراحل التصنيع الفيزيائية (خلط/تحبيب/كبس/تعبئة — مرجَّحة دوائياً)؟يحدد هل تكفي ورش الملف (المرحلتان 2–2.5) لإيفاء R-17 أم تلزم إضافةً ورش لكل عملية مسار (المرحلة 5)يُسأل العميل عند بوابة المرحلة 0؛ الافتراض: ورش الملف 2–2.5، وإن تأكدت قراءة مراحل التصنيع فورش العمليات مع المرحلة 5 + شاشة مراقبة قراءة-فقط مبكرة في 2.5

تعديلات خطة الطريق (على القسم 23)

🔍

ملحق: تدقيق التغطية — ما المغطى وما الجديد (Coverage Audit vs Published Analysis)

هذا القسم ملحقٌ للتحليل المنشور (التقارير 00–24)، يقيس مقابلته بمتطلبات عميل فعلي: مصنع أدوية يعمل تصنيعاً للغير بالأوردر (toll / contract manufacturing). اشتُقّت من مقابلة صاحب المصنع تسعة متطلبات IR-1..IR-9 (أُعيد ترقيمها من R-01..R-09 بعد المراجعة لإنهاء التصادم مع مخطط الملحق 30 المرجعي R-01..R-21)، ودُقّق كلٌّ منها مقابل خريطة البناء (20) وتحليل الفجوات (21) وعقود التكامل (22) وخطة المراحل (23) والمواصفة (00–06). الخلاصة: قلب التصنيع المرتبط بالأوردر والتصنيع بمواد العميل مغطّى بالكامل، لكن القمع التجاري والهندسي قبل الأوردر (التسعير الاستكشافي، دفعة التجربة، بوابة الدفعة المقدمة، وواجهات المراحل) خارج نطاق المواصفة ويحتاج بنوداً جديدة.

المتطلبات المشتقّة من المقابلة

تصف المقابلة دورتين ومطلباً واجهيّاً شاملاً:

9متطلبات مشتقّة IR-1..IR-9
2مغطّى بالكامل ✅
4مغطّى جزئياً 🟡
3غير مغطّى ❌

جدول الأحكام — متطلبٌ متطلبٌ مقابل التحليل المنشور

#المتطلب (العميل)الحكمأين يُغطّى / ما الناقص
IR-1طلب تسعير استكشافي (RFQ) ككيان استقبال أول❌ غير مغطىلا كيان RFQ/طلب تسعير في أي مكان. المواصفة (00–06) تبدأ من طلب بيع مؤكَّد فقط (md/02 سطور 19/89/282) ولا تذكر تسعيراً مسبقاً؛ و21-gaps لا تُدرج فجوة تسعير/عرض سعر. دورة ما قبل البيع بأكملها خارج النطاق المنشور.
IR-2R&D يضع قائمة مواد مبدئية قبل أي أوردر🟡 جزئياًدورة حياة القائمة موجودة: BomStatus {Draft, Active, Inactive, Obsolete} (20 صف 2؛ 01 سطر 255؛ تُفعَّل في المرحلة 0/1). الناقص: (أ) R&D كفاعل/مالك لحالة Draft (الصلاحيات مسطّحة production.* بلا فصل R&D)؛ (ب) قائمة مواد لمنتج عميل محتمل غير مُسجَّل — قائمة Moon تتطلب product_id؛ (ج) سير العمل من الطلب إلى القائمة.
IR-3المحاسبة تحسب تكلفة مبدئية ← عرض سعر للعميل🟡 جزئياًمحرك التكلفة موجود: ComputeStandardCost / RollUpStandardCost + mfg_standard_costs (20 صفوف 23–25؛ 23 المرحلة 3؛ 04 §4.1–4.2). الناقص: تشغيل اللفّ على قائمة Draft قبل وجود منتج/أوردر وحفظه كعرض سعر (لا كيان عرض سعر)؛ مناولة «المحاسبة تراجع ثم تُعيد السعر»؛ وتعارض توقيتي — اللفّ مجدول في المرحلة 3 بينما تسعير الدورة 1 مطلوب قبل المرحلة 1.
IR-4كل مستندات الدورة 2 مربوطة بأوردر العميل (تتبّع كامل)✅ مغطى بالكاملmfg_peggings (production_order_id, sales_order_id, sales_order_item_id, allocated_quantity) يربط كل أمر إنتاج بطلب البيع (20 صف 26؛ 22 §1 صف Sales و§2 الأحداث؛ source_demand_id يحمله عبر MRP). production_type=MakeToOrder يقود الفرع المرتبط بالأوردر؛ شبكة الأوامر أب/ابن تمشي طقم→قطعة→نصف مصنّع.
IR-5مرحلة تجربة/عيّنة حقيقية التكلفة يصنعها R&D ويقيّمها العميل❌ غير مغطىorder_type ∈ {Standard, Rework, Repair} فقط (03 سطر 24/291؛ 20 صف 13). لا نوع أمر Trial/Sample/Pilot، ولا تدفّق «اصنع للتقييم ← بوابة موافقة ← حوِّل لأمر إنتاج». التجربة عملية حقيقية بتكلفة حقيقية ← تحتاج مسار الصرف/التأكيد/الاستلام (موجود) لكن مُبوَّباً كتجربة بنتيجة تقييم تُرقّي الأمر أو توقفه — وهذا جديد كلياً. أقرب بند منشور B5/B13 وليس دورة التجربة.
IR-6بعد الموافقة ← أوردر رسمي ← اعتماد القائمة ← التخطيط يحدد الكميات والجاهزية🟡 جزئياًاعتماد القائمة (Draft→Active) مغطّى (20 صف 2)؛ كميات وجاهزية التخطيط مغطّاة بـ MRP/CRP (20 صفوف 11–12؛ 23 المرحلة 4). الناقص: أوركسترا العملية بين الأقسام «موافقة ← مناولة R&D ← مناولة التخطيط» كسير عمل مُتتبَّع بملكية قسم لكل مرحلة (يرتبط بـ IR-9). المحرّكات موجودة؛ خط المناولة المرحلي بملكية الأقسام غير موجود.
IR-7بوابة دفعة مقدمة قبل الحجز/الشراء (المصنع يشتري الخامات نيابةً عن العميل)❌ غير مغطىلا بوابة مالية بين التخطيط والحجز. ReleaseProductionOrder المنشور يحجز دون شرط (22 §2؛ 23 المرحلة 1 «أثر الإطلاق: احجز المخزون»؛ 03 سطر 63). المواصفة بلا أي مفهوم دفعة مقدمة. مطلوب: (أ) مستند دفعة/عربون (Sales/Accounting)؛ (ب) شرط قبل الإطلاق يفحص كفاية الدفعة؛ (ج) دلالات «شراء الخامات نيابةً عن العميل» (شراء يُعاد تحميله على العميل). B18 يخص فوترة مخرجات الأجرة وليس عربوناً مسبقاً.
IR-8خامات العميل تبقى ملكه وتُمزج مع خامات المصنع✅ مغطى بالكاملproduction_type=TollManufacturing + material_ownership {Own, Customer} على الأمر والمكوّن وسطر الصرف (03 سطور 27/107/128؛ 20 صفوف 13/17). الأمانة = مخازن warehouses.is_consignment — مُحتفظ بها، لا تُقيَّم، لا تُشترى (قرار D-15؛ 21 A15؛ 22 §1 Inventory). صرف الأجرة حركة تتبّع فقط بلا قيد خامة. مزج ملكية العميل والمصنع في أمر واحد هو عين نموذج ownership لكل سطر. (ملاحظة: مجدول في المرحلة 6 — إن كان هذا عميل الإطلاق فيُسحب للأمام، قرار D-07.)
IR-9شاشات مخصّصة لكل مرحلة لنقل الأوردر بينها🟡 جزئياًطرفيات عامل طابق المصنع مغطّاة (طرفية لمسية لكل مركز عمل، طابور Ready، Start/Done، لوحة مشرف — 20 §5؛ 23 المرحلة 5؛ 05). الناقص: طاولات عمل مرحلية للمكتب الخلفي لرحلة الأوردر كاملة — شاشة R&D، التخطيط، بوابة الدفعة المالية، الحجز/الصرف، التجربة — كلٌّ يملك مرحلته ويوفّر زر «انقل للمرحلة التالية» بمناولة محكومة بالدور. الواجهة المنشورة منظّمة حسب الوحدة الوظيفية لا كخط مراحل متمحور حول الأوردر.

السبب الجذري للفجوات

التحليل المنشور خريطةٌ تنفيذية للمواصفة، والمواصفة نفسها تبدأ من أوردر عميل مؤكَّد وتنتهي باستلام تام الصنع وحساب تكلفته — تنمذج المصنع ودفاتره ببراعة. لكن سير العميل يضيف قمعاً تجارياً وهندسياً قبل الأوردر لم تتصوّره المواصفة:

كل ما هو أسفل الأوردر الرسمي المؤكَّد (دورة حياة القائمة، MRP/CRP، الحجز، الصرف، التأكيد، الاستلام، التكلفة، أمانة الأجرة، الربط) مغطّى بالفعل — IR-4 وIR-8 إصابتان مباشرتان، وIR-2/IR-3/IR-6 تُعيد استخدام محرّكات قائمة ينقصها غراء سير العمل.

بنود العمل الجديدة (إضافة لخطة 23) — C-01..C-08

المعرّفالبنديغطّيالحجمالمرحلة المستهدفة
C-01كيان طلب تسعير/تكلفة استكشافية mfg_costing_requests (+سطور): العميل، وصف/تركيبة المنتج المُحضَر، حالة {Requested, BomDrafted, Priced, Quoted, Won, Lost}، ربط بالقائمة المبدئية (C-02) والعرض (C-03)؛ ترقيم عبر SequenceService.IR-1Mمرحلة 2.5 جديدة (ما قبل البيع — أُعيدت تسميتها من «1.5» لأنها تحتاج معدلات المرحلة 2)
C-02قائمة مواد Draft لمنتج عميل محتمل: إمّا product_id قابل للإفراغ مع اسم منتج مؤقت، أو منتج بحالة lifecycle=Prospect؛ + ملكية R&D بصلاحيات production.rnd.bom.{draft,finalize}.IR-2, IR-6Mمرحلة 1 (القائمة v2) + مرحلة 0 (الصلاحيات)
C-03وضع تكلفة استكشافي + مستند عرض سعر: تشغيل RollUpStandardCost على قائمة Draft بأسعار تقديرية، حفظه في mfg_cost_estimates، وإصدار عرض سعر (إعادة استخدام عرض سعر Sales إن وُجد وإلا mfg_quotes) مع خطوة مراجعة محاسبية؛ سحب جزء من لفّ التكلفة من المرحلة 3 للأمام.IR-3Mسحب جزء من المرحلة 3 إلى 2.5 (بعد وصول معدلات العمالة/الأعباء في المرحلة 2)
C-04نموذج فاعل/قسم R&D: تسجيله كدور/قسم بشريحة صلاحيات خاصة ومالكاً لمرحلتي القائمة المبدئية والتجربة؛ توسعة مساهم production في PermissionDependencyRegistry؛ تمييز ملكية R&D/التخطيط/المالية/الطابق لتوجيه المراحل (يغذّي C-08).IR-2, IR-5, IR-6Sمرحلة 0 (طبقة الصلاحيات)
C-05نوع أمر تجربة/عيّنة: إضافة Trial (أو علم is_trial)؛ يشغّل مسار الصرف→التأكيد→الاستلام+القيد الحقيقي لكن مُعلَّماً تجربة، مخرجه لمستودع تقييم (غير قابل للبيع)، وعند التقييم إمّا يُرقَّى لأمر إنتاج رسمي أو يُغلق خاسراً؛ أحداث TrialBatchProduced, TrialApproved/Rejected.IR-5Mجديدة بين المرحلتين 1 و2
C-06بوابة الدفعة المقدمة: مستند دفعة (إعادة استخدام دفعة مقدمة Sales/Accounting إن وُجدت — يُتحقَّق، وإلا mfg_order_deposits) بنسبة مطلوبة ومبلغ مستلم وحالة؛ + شرط في ReleaseProductionOrder يمنع الحجز/الشراء حتى المستلم ≥ المطلوب؛ ووسم أوامر الشراء المُثارة من MRP كقابلة لإعادة التحميل على العميل على ألّا تُرفع طلبات الشراء بالنيابة إلا بعد استيفاء البوابة — فهي تحكم الشراء كما تحكم الإصدار (علة الدفعة عند العميل؛ التخطيط يجهّز مسوّدات فقط).IR-7Mمرحلة 1 (شرط الإطلاق) + مرحلة 4 (وسم الشراء)
C-07سحب الأجرة/الأمانة للأمام (قرار D-07): نقل warehouses.is_consignment وملكية المادة لكل سطر وفرع قيد الأجرة من المرحلة 6 ← 1/2. مُصمَّم بالكامل (IR-8) — تغيير جدولة لا تصميم.IR-8 (توقيت)إعادة جدولة المرحلة 6 للأمام
C-08خط مراحل الأوردر + شاشات طاولات العمل المرحلية: نموذج حالة سير عمل واحد للأوردر (Request→DraftBom→Quoted→Trial→Agreed→BomFinal→Planned→DepositGate→Reserved→InProduction→Received) بمالك مرحلة لكل خطوة، وشاشات مكتب خلفي لكل مرحلة (R&D، التخطيط، بوابة المالية، الحجز/الصرف، مراجعة التجربة) بزر «انتقل للتالي» بمناولة محكومة بالدور، ولوحة خط متمحورة حول الأوردر. منفصلة عن طرفيات الطابق. تنبيه تفسيري (OQ-9): هذا يقرأ «مرحلة إنتاجية» كمراحل الملف التجارية؛ إن قصد العميل مراحل التصنيع الفيزيائية (خلط/تحبيب/كبس/تعبئة) فالجواب ورش لكل عملية مسار — يُحسم عند بوابة المرحلة 0.IR-6, IR-9Lلوحة MVP في المرحلة 2 + الورش الحرجة في 2.5؛ الإكمال في 5 (الملحق 36 ثالثاً)

جداول جديدة من هذا الملحق: mfg_costing_requests (+سطور)، mfg_cost_estimates، واختيارياً mfg_quotes (يُفضَّل إعادة استخدام عرض سعر Sales)، واختيارياً mfg_order_deposits (يُفضَّل إعادة استخدام دفعة مقدمة محاسبية/بيعية). صافٍ 2–4 جداول mfg_* جديدة فوق الـ24 المنشورة، رهن التحقق من إمكانية إعادة الاستخدام.

قرارات مطلوبة من الإدارة (تمتدّ من D-01..D-22)

الترقيم المرجعي = الملحق 36 رابعاً (D-23..D-36 + OQ-9). هذا الجدول اقترح القرارات؛ السجل المرجعي يحمل الأرقام والتوصيات النهائية ويتقدّم على أي تباين أدناه (مثلاً توصية D-24 هنا تجاوزها اعتماد order_type=Trial).

#القرارالتوصية
D-31 (كان «D-23» مؤقتاً هنا)نطاق دورة التسعير قبل البيعبناء C-01..C-03 — هو مدخل هذا العميل؛ بدونه الدورة 1 بلا خدمة
D-24نمذجة دفعة التجربةعلم is_trial + حالة فرعية على أمر الإنتاج (يعيد استخدام مسار المرحلة 1 كاملاً، الأخف)
D-25إنفاذ بوابة الدفعةمنع صارم بعتبة قابلة للضبط لكل أمر/عميل؛ إعادة استخدام الدفعة المقدمة في Moon إن وُجدت
D-26قائمة Draft لمنتج محتملحالة Product.lifecycle=Prospect (تحافظ على تكامل المفتاح وتُرقّى نظيفاً عند الفوز)
D-27توقيت الأجرة/الأمانة لهذا العميلسحب للأمام (هذا مصنع أجرة — مُشغِّل D-07 اشتعل)
D-28نطاق واجهة خط المراحللوحة خط MVP مبكراً؛ طاولات العمل الكاملة في المرحلة 5
D-29ملكية مستند العرض/الدفعةإعادة استخدام Sales/Accounting حيثما وُجدا (يُتحقَّق في moon-erp-bemfg_* كحلٍّ احتياطي فقط

الخلاصة

التحليل المنشور يغطّي بالكامل قلب التصنيع المرتبط بالأوردر والأجرة/الأمانة الذي يحتاجه هذا العميل (IR-4, IR-8) — الربط الشامل بالأوردر ومناولة مواد العميل إصابتان مباشرتان، يكفيهما سحب الأجرة/الأمانة للأمام زمنياً (C-07/D-27). ومحرّكات الهندسة والتخطيط لـ IR-2/IR-3/IR-6 موجودة (دورة حياة القائمة، لفّ التكلفة المعيارية، MRP/CRP) لكن ينقصها غراء سير العمل وفاعل R&D ووضع التكلفة الاستكشافي ومستند العرض. القدرات الثلاث الجديدة فعلاً كلها خارج عالم المواصفة: دورة التسعير الاستكشافي/RFQ (IR-1 ❌)، ودورة دفعة التجربة (IR-5 ❌)، وبوابة الدفعة المقدمة قبل الحجز (IR-7 ❌) — مع واجهات أوركسترا المراحل (IR-9 🟡). تصير بنوداً C-01..C-08 وقراراتٍ في السجل المرجعي الوحيد (الملحق 36 رابعاً — D-23..D-36 + OQ-9) مُلحقةً بخطة 23. لا شيء منها يبطل المعمار المنشور؛ كلّها إضافية وتعيد استخدام السكك القائمة.

🧾

ملحق: ما يقدمه Moon ERP جاهزاً لهذه الدورة (ERP Evidence for the Client Cycle)

هذا الملحق يربط دورة العميل الفعلية (مصنع أدوية يصنّع للغير بالأوردر — «تصنيع للغير») بما هو مبنيٌّ فعلاً في Moon ERP. لكل لبنة تحتاجها الدورتان — دورة التكلفة الاستكشافية ودورة الإنتاج بالأوردر — حُسم أحد ثلاثة أحكام: موجود يُعاد استخدامه كما هو، أو جزئي بنية أساسية حاضرة تحتاج توصيلاً أو توسعة، أو مفقود بناء جديد. كل حكم مسنود بملف وسطر في الشيفرة.

الدورتان كما وصفهما صاحب المصنع

الخلاصة التنفيذية: لبنات الدورة مقابل الموجود في النظام

اللبنة المطلوبةالحكمأين تقع / ما الناقص
عرض سعر وتحويله إلى أوردر (سعر الدورة 1 + الأوردر الرسمي للدورة 2)موجودModules/Sales دورة كاملة Draft→Sent→Accepted→Converted مع إجراء convertFromQuotation
دفعة العميل تحت الحساب بمعالجة محاسبية صحيحة (التزام مقدم لا تحصيل ذمم)جزئيسند القبض ReceiptVoucher وحساب 2104 إيرادات مقدمة موجودان، لكن بلا ربط بأوردر، وSalesPayment مقيّد بالفاتورة
خامات العميل المملوكة له (أمانة/عهدة لدى المصنع)مفقودلا نوع Consignment في المخازن ولا حقل ملكية على الرصيد
سير عمل البحث والتطوير ودفعة التجربةجزئيBomStatus::Draft جاهز للقائمة المبدئية؛ وحدة CMMS صيانة أصول لا بحث وتطوير؛ لا كيان لدفعة التجربة
سير موافقات لبوابات المراحل (اعتماد القائمة، بوابة الدفعة، إطلاق الأوردر)جزئيمحرك موافقات عام في Modules/Core لكن المسجَّل فيه Sales وPurchases فقط — لا Production
خط CRM لاستقبال طلبات التسعير (RFQ)مفقودModules/CRM دعم وتذاكر (Tickets/SLA) لا خط فرص بيعية
بدائية حجز الموادجزئيعمود StockBalance.reserved_quantity ودالة available موجودان لكن لا كود يكتب فيهما
انتقالات مراحل الإنتاج (أساس واجهات المراحل)جزئيProductionOrderController فيه confirm/start/complete/consume؛ لا مراحل عميل/تجربة/دفعة/حجز

1) عروض الأسعار وتحويلها إلى أوردر — موجود وجاهز

العمود الفقري للدورة 1 (عرض السعر) وللأوردر الرسمي في الدورة 2 مبنيٌّ بالكامل في Modules/Sales.

قيد التطبيق على الدورة: سعر الدورة 1 هو SalesQuotation مسعّر من قائمة المواد المبدئية؛ والأوردر الرسمي للدورة 2 هو ناتج convertFromQuotation. كل مستندات الدورة 2 يجب أن تتعلّق بمعرّف هذا الأوردر، أي أن أوامر الإنتاج الجديدة (mfg_*) تحتاج مفتاحاً أجنبياً sales_order_id.

2) دفعة العميل تحت الحساب ومعالجتها المحاسبية — جزئي (البنية حاضرة، غير موصولة)

هذه أدقّ نقطة مالياً: الدفعة تحت الحساب التزام مقدم على المصنع وليست تحصيلاً لذمة مدينة. تسجيلها كدفعة بيع عادية يشوّه الذمم والإيراد معاً.

الناقص: لا ربط بأوردر ولا دلالة «دفعة مطلوبة قبل الإطلاق» ولا بوابة «هل اكتملت الدفعة؟». وSalesPayment أداة خاطئة هنا لأنه مقيّد بـinvoice_id وPostSalesPayment مثبّت على «من ح/ النقدية إلى ح/ الذمم المدينة» مقابل فاتورة (أسطر 30–56) — لا مسار للالتزام المقدم. كما لا توجد سابقة مالية في LIS (كلمة advance هناك تعني تقدّم حالة لا دفعة).

التعديل المقترح: خطوة دفعة على مسار الأوردر تُصدر ReceiptVoucher بـreference_type=sales_order وبند دائن لحساب دفعات عملاء تحت الحساب (يصلح 2104 أو حساب فرعي جديد 2105). والبوابة المالية = مجموع سندات الدفعة المعتمدة ≥ الدفعة المطلوبة. عند الفوترة النهائية تُخصم الدفعة (من ح/ الإيرادات المقدمة إلى ح/ الذمم أو الإيراد).

3) خامات العميل المملوكة له (التصنيع بالأمانة) — مفقود

قال صاحب المصنع صراحةً إن العميل قد يورّد خاماته وتبقى ملكه. لا يعرف Moon ERP اليوم مفهوم ملكية المخزون إطلاقاً.

الأثر: خامات العميل ستُقيَّم وتُرحَّل لمخزون الشركة (تضخيم الأصول) وقد تُصرف لأوامر أخرى — والمصنع حائزٌ لها بالأمانة لا بالملكية.

خياران للتعديل: (1) علم المخزن — وفق القرار المعتمد سلفاً D-15 هو العلم warehouses.is_consignment لا نوع تعداد WarehouseType::Consignment جديد — مع owner_partner_id على المخازن، يكون تقييمها خارج الدفاتر (لا قيد أصل)، والصرف منها لا يولّد سطر تكلفة مواد. (تصحيح: الصياغة الأصلية اقترحت قيمة تعداد جديدة متجاهلةً اعتماد D-15 لصيغة العلم — الملحقان 33 و36 يتبعان D-15.) (2) إضافة owner_partner_id على stock_balances والحركات (فارغ = ملك الشركة) مع تصفية الرصيد والتقييم حسب المالك. كلاهما بناء جديد.

4) سير البحث والتطوير ودفعة التجربة — جزئي

الناقص: لا مفهوم «دفعة تجربة» (ProductionOrder بلا حقل kind/is_trial ولا ربط customer_id/sales_order_id). ووحدة CMMS صيانة أصول (CmmsAsset, CmmsWorkOrder, CmmsPmSchedule) لا تصلح للبحث والتطوير رغم اسم «أمر عمل». لا كيان مشاريع/مهام لاستقبال طلب R&D قبل وجود قائمة مواد.

التعديل: نمذجة التجربة كـProductionOrder بـkind=trial وsales_order_id لترث كل بنية التكلفة والمخزون وتبقى معلّقة على أوردر العميل.

5) سير الموافقات لبوابات المراحل — جزئي (محرك موجود، الإنتاج غير مسجّل)

يوجد محرك موافقات عام في Core يصلح تماماً للبوابات التي يريدها العميل (اعتماد القائمة، تأكيد الدفعة، إطلاق الأوردر، قبول التجربة).

التعديل: إضافة ApprovalModule::Production وأنواع مستندات (bom, production_order, trial_batch) لإعادة استخدام المحرك بدل بناء منطق موافقات خاص.

6) خط CRM لاستقبال طلبات التسعير — مفقود (شكل CRM غير مناسب)

Modules/CRM وحدة دعم وتذاكر لا خط مبيعات: نماذجها CrmTicket, CrmTicketComment, CrmSlaPolicy, CrmCustomerInteraction, CrmCustomerTag — لا Lead/Opportunity/Pipeline/Stage.

الأثر: لا خط فرص يستضيف استقبال «العميل يأتي بمنتج → طلب تسعير». والحل العملي: (1) إعادة استخدام SalesQuotation كسجل RFQ (حالة Draft = طلب مفتوح) — الأرخص، فيصير الطلب الاستكشافي والعرض سجلاً واحداً تحمل حالاته القمع. (2) أو تسجيل الاستفسار في CrmCustomerInteraction ثم توليد عرض. خط CRM كامل غير مطلوب لتلبية العميل.

7) انتقالات مراحل الإنتاج وطلب «واجهة لكل مرحلة» — جزئي

الناقص لمسار العميل: لا customer_id/sales_order_id على أمر الإنتاج، ولا مرحلة تجربة ولا بوابة دفعة مكتملة ولا مرحلة حجز ولا فحص جاهزية/تخطيط — الآلة الحالية تقفز Draft→Confirmed→InProgress.

التعديل: آلة مراحل تجارية موازية (لا توسعة ProductionOrderStatus — حُسمت كمظلّة mfg_order_cases في الملحق 35) لسلسلة العميل مثل: Requested → TrialInProgress → TrialAccepted → AwaitingDeposit → Released(+Reserved) → InProgress → Completed → ReceivedToFG، وتوصيل إجراء حجز يزيد reserved_quantity. تصحيح ترتيبي: وفق الصف 13 المعتمد في الخريطة، الحجز أثر جانبي لإجراء الإصدار — فمرحلة «محجوز» يدخلها الإصدار ولا تسبقه أبداً (السلسلة الأصلية هنا وضعت الحجز قبل الإصدار وكان ذلك ترتيباً دائرياً مخالفاً للتصميم المعتمد). كل مرحلة تقابل واجهة بنسبة 1:1.

3لبنات موجودة تُعاد كما هي
4لبنات جزئية تُوسَّع
2لبنات مفقودة تُبنى
2104حساب الإيرادات المقدمة الجاهز

جديد مقابل معاد استخدامه (لملحق خارطة الطريق)

💊

ملحق: خصوصية صناعة الدواء — ما لم يقله العميل (Pharma CMO Domain Considerations)

العميل (مصنع أدوية يعمل تصنيعاً للغير بالأوردر) وصف دورته التجارية: طلب → قائمة مواد مبدئية من البحث والتطوير → تسعير من الحسابات → دفعة تجريبية → دفعة تحت حساب → حجز → أمر تصنيع → صرف → تصنيع → استلام في مخزن التام. لكن أي مصنع دواء منظَّم (CMO) يحتاج أشياء إضافية لم يذكرها لأنها بديهية عنده لكنها مُلزِمة قانونياً وتدقيقياً (GMP). هذا الملحق يسرد فقط البنود عالية اليقين، كلٌّ موسوم اختياري أو لاحق مع المرحلة المقترحة، ومع تمييز ما هو مُدرَج بالفعل في تحليل الثغرات المنشور عمّا هو جديد فعلاً — حتى لا تُفاجأ الإدارة لاحقاً.

المبدأ الحاكم: الدواء لا يضيف محرّكات كثيرة — بل يرفع الخطورة ويقلب الافتراضات

المواصفة manufacturing_spec مصمَّمة عامّة لكل الصناعات (مثالها أطباق الميلامين)، وتؤجّل طبقة الجودة صراحةً، ولا تنصّ على قاعدة تتبُّع للتشغيلات. أرقام التشغيلة batch_no/lot_no فيها مجرد نصّ حر، وحالة الجودة مجرد قائمة quality_status ∈ {Released, OnHold, Rejected}. هذا مقبول لمصنع عام، لكنه غير كافٍ لمصنع دواء: بنود يعتبرها التحليل المنشور قابلة للتأجيل تصبح هنا متطلبات تنظيمية إلزامية. أبرز مثال: حالة جودة التام تُضبط افتراضياً على Released (القرار D-21) — وهذا غير مقبول دوائياً؛ يجب حجز التام للفحص قبل أن يصبح مخزوناً قابلاً للبيع.

8بنود دوائية عالية اليقين
2مُدرَجة بالفعل (إعادة ترتيب أولوية فقط)
3مُغطّاة جزئياً
4–5جديدة فعلاً بلا موطن في التحليل

الجدول المرجعي: البنود الثمانية وحالتها مقابل التحليل المنشور

#البندالحالة في التحليل المنشورالحُكمالخطورة دوائياًالوسم + المرحلة
P1سجل تصنيع التشغيلة (BMR) + ترقيم التشغيلاتجزئياً: الترقيم ووثائق الأحداث موجودة؛ السجل المُجمَّع غير موجودجديد (التجميع جديد)CRITICALلاحق Phase 2→6
P2حجز التام للفحص قبل تحويله لمخزون قابل للبيع (QC Release Hold)مُدرَج: حقل quality_status + ربط QMS موجود؛ الافتراض Released (D-21)مُدرَج — قلب الافتراضCRITICALلاحق Phase 6 (تهيئة مبكرة للعميل)
P3تتبُّع التشغيلة + الصلاحية إلزامياً + صرف الأقرب انتهاءً أولاً (FEFO)مُدرَج: ثغرة A4 + B2؛ المرحلة 6، القرار D-14مُدرَج — أصبح حرجاًCRITICALلاحق Phase 6 (مرشّح للتقديم)
P4مواصفة الفنّ المطبعي/التغليف لكل عميل (Artwork/Packaging)غير موجود في md/20/md/21جديدIMPORTANTاختياري Phase 6+
P5العيّنات المحفوظة/المرجعية (Retained Samples)غير موجودجديدIMPORTANTلاحق Phase 6
P6التنظيف/التحويل بين منتجات على خطّ مشترك (Cleaning/Changeover)جزئياً: setup_time موجود؛ التوقّف غير معرَّف (B15)؛ أثر الطاقة جديدجديد (خطوة التنظيف) / أثر طاقةIMPORTANTلاحق Phase 2 (تكلفة)/Phase 4 (طاقة)
P7ربط ملف التسجيل الدوائي (Regulatory Dossier)غير موجودجديدIMPORTANTاختياري Phase 6+
P8مطابقة العائد كبوابة إلزامية (Yield Reconciliation Gate)جزئياً: yield% محسوب؛ المطابقة كبوابة إلزامية جديدةجديد (البوابة)IMPORTANTلاحق Phase 2 (التقاط)/Phase 6 (بوابة)

P1 — سجل تصنيع التشغيلة وترقيمها (BMR & Batch Numbering) — لاحق، حرج

كل تشغيلة مُصنَّعة يجب أن تحمل سجلاً واحداً قابلاً للتدقيق يربط الأمر المُفرَج عنه بـ: لقطة قائمة المواد/المسار المجمَّدة، كل عمليات الصرف (بأرقام تشغيلات المواد الخام المستهلَكة)، الفحوصات البينية، المُشغِّل والمعدّة، الانحرافات، العائد، وتوقيع الإفراج. أرقام التشغيلات يجب أن تكون متسلسلة منضبطة بلا فجوات ومستقلّة عن رقم الأمر.

P2 — حجز التام للفحص قبل التحويل (QC Release Hold) — لاحق، حرج

هذا أهم انحراف دوائي عن الخطة العامة: التام لا يصير مخزوناً قابلاً للبيع عند الاستلام، بل يدخل حالة حجز/حجر صحي للفحص ولا يُفرَج عنه إلا بقرار جودة/شخص مؤهَّل.

P3 — تتبُّع التشغيلة والصلاحية و FEFO (Lot/Expiry/FEFO/Genealogy) — لاحق، حرج

رقم التشغيلة وتاريخ الصلاحية إلزاميان لا نصّ حرّ؛ الصرف بنظام الأقرب انتهاءً أولاً؛ والنسب الكامل (أي تشغيلات مواد خام دخلت أي تشغيلة تام) شرط قانوني للاستدعاء؛ والصلاحية تمنع صرف/بيع المنتهي.

P4 — مواصفة الفنّ المطبعي والتغليف لكل عميل (Artwork/Packaging Spec) — اختياري/لاحق، مهم

في التصنيع للغير يكون الفنّ المطبعي والتغليف خاصّاً بالعميل والسوق ومضبوط الإصدار؛ واستخدام نسخة خاطئة/قديمة خطأ من فئة الاستدعاء. مواد التغليف نفسها مكوّنات قائمة مواد مضبوطة بأرقام تشغيلات.

P5 — العيّنات المحفوظة/المرجعية (Retained Samples) — لاحق، مهم

تُلزِم GMP بحفظ عيّنات مرجعية من كل تشغيلة لمدة صلاحية المنتج + هامش، مُسجَّلة وقابلة للاسترجاع.

P6 — التنظيف/التحويل بين المنتجات على خطّ مشترك (Cleaning/Changeover) — لاحق، مهم

على المعدّات المشتركة يكون التنظيف/التحويل المُعتمَد بين منتجين إلزامياً (منع التلوّث المتبادل)، ويستهلك طاقة فعلية وتكلفة فعلية، ويحجز بدء المنتج التالي.

P7 — ربط ملف التسجيل الدوائي (Regulatory Dossier Linkage) — اختياري/لاحق، مهم

كل منتج مُصنَّع مرتبط بـملف تسجيل/إذن تسويق (مثل تسجيل هيئة الدواء). يجب أن تطابق قائمة المواد/المسار المعتمدة الملف المسجَّل، وأن يُرفَع علَم عند تصنيع منتج غير مسجَّل أو منتهي التسجيل.

P8 — مطابقة العائد كبوابة إلزامية للإفراج (Yield Reconciliation Gate) — لاحق، مهم

تُلزِم GMP بـميزان مواد/مطابقة عائد لكل تشغيلة — يجب أن تتطابق المدخلات مع (المخرجات + الهالك + العيّنات) ضمن حدود معتمدة، وأن يُفسَّر ويُعتمَد العائد خارج الحدود قبل الإفراج.

خلاصة المراجعة المتقاطعة: مُدرَج مقابل جديد

الفئةالبنودالمرجع
مُدرَج بالفعل (الدواء يعيد ترتيب الأولوية فقط)P2 حجز الإفراج · P3 التشغيلة/الصلاحية/FEFO/النسبmapping صف 22 + D-21 / ثغرة A4+B2+D-14
مُغطّى جزئياًP1 الترقيم+وثائق الأحداث · P6 setup_time · P8 yield%صفوف 14–15،5،19–20؛ B15
جديد فعلاً (بلا موطن)P1 تجميع/طباعة BMR · P4 الفنّ/التغليف · P5 العيّنات المحفوظة · P6 التنظيف كخطوة + أثر الطاقة · P7 ملف التسجيل · P8 بوابة مطابقة العائدلا مرجع منشور

التوصية النهائية للإدارة

الدواء لا يضيف محرّكاً كبيراً للخطة المنشورة؛ بل يرفع الخطورة ويغيّر الافتراضات لضبط الإفراج (P2) وتتبُّع التشغيلة/الصلاحية (P3 = ثغرة A4/B2 المُدرَجة، وقد صارت غير قابلة للتفاوض للتشغيل)، ويضيف حزمة صغيرة من مصنوعات GMP (سجل التشغيلة، العيّنات المحفوظة، إصدارات الفنّ/التغليف، ربط الملف، بوابة مطابقة العائد). نوصي بـتقديم ثغرة A4 (التشغيلة+الصلاحية+FEFO+النسب) لتُسلَّم مع أول إصدار تشغيلي لهذا العميل، وقلب افتراض حالة جودة التام إلى OnHold لشركة الدواء فوراً.

🧮

ملحق: تصميم دورة التكلفة الاستكشافية (Exploratory Costing Cycle Design)

تصميم تنفيذي كامل للدورة الأولى التي وصفها صاحب المصنع: العميل يأتي بمنتجه وتركيبته ويطلب تسعيراً استكشافياً ← البحث والتطوير يبني قائمة مواد مبدئية ← المحاسبة تحسب تكلفة مبدئية ← يعود السعر للعميل كعرض سعر بصلاحية محددة. التصميم يسكن داخل وحدة الإنتاج الموسّعة Modules/Production وفق القرارات المنشورة: جداول جديدة ببادئة mfg_*، صلاحيات production.*، إعادة الاستخدام أولاً، والقاعدة الذهبية هنا: الدورة الأولى لا تنشئ أي قيد محاسبي ولا أي حركة مخزون إطلاقاً — محرك التكلفة يعمل في وضع المحاكاة فقط.

2جدولان جديدان فقط
8إجراءات (Actions)
5أحداث (Events)
6شاشات مراحل
0قيود محاسبية في الدورة

توحيد التسمية (يحسم ما ورد في الملاحق السابقة)

الملحق 30 اقترح mfg_quotations + mfg_quotation_costings، والملحق 31 اقترح mfg_costing_requests + mfg_cost_estimates. هذا الملف يثبّت التسمية النهائية: رأس التقدير هو mfg_cost_estimates (طلب التسعير + حالة المسار التجاري في كيان واحد) وإصدارات الحساب المتعاقبة في mfg_cost_estimate_versions (سجل غير قابل للتعديل — كل إعادة حساب صفٌّ جديد). أما عرض السعر الموجَّه للعميل فليس جدولاً جديداً: هو SalesQuotation الموجود فعلاً في Modules/Sales بدورة حياته الكاملة وتحويله إلى أوردر (دليل الملحق 32 §1)، ويُربط بالتقدير عبر sales_quotation_id. هذه التسمية صادق عليها الملحق 36 (ورقة الدلتا الموحَّدة) — لا وجود لـmfg_quotations في أي وثيقة معتمدة؛ وإجمالي الملاحق الموحَّد +6 جداول (24 ← 30): هذا الزوج + mfg_order_cases وmfg_trial_batches وmfg_customer_advances وmfg_order_stage_gates.

1) الكيانات: ماذا نبني وماذا نعيد استخدامه

الكيانالحكمالدور في الدورة
mfg_cost_estimatesجديدرأس التقدير: العميل (customer_idBusinessPartner في Core)، المنتج المرشَّح (prospect_product_id)، مرفق التركيبة (Attachment)، الكمية المستهدفة، رابط القائمة المبدئية draft_bom_id، رابط عرض السعر والأوردر، الحالة {Draft, Estimated, Quoted, Won, Lost}، صلاحية السعر valid_until. ترقيم عبر SequenceService('production','cost_estimate')
mfg_cost_estimate_versionsجديدنتائج الحساب المتعاقبة (لا تُعدَّل أبداً): لقطة تفجير القائمة، مصدر سعر الخامة لكل بند {CurrentCost, LastPurchase, Manual}، تكلفة مواد + عمالة + غير مباشرة ← تكلفة الوحدة ← نسبة الربح ← السعر المقترح، مع مَن حسب ومَن اعتمد ومتى
bill_of_materialsتوسعة مُقرّةالقائمة المبدئية للبحث والتطوير = bom_type=Engineering + status=Draft وفق دورة الحياة المُقرّة سلفاً (الخريطة 20 سطر 2). قاعدة صارمة: قائمة Draft لا تُجمَّد في أمر إنتاج — باستثناء واحد معتمد خارج هذه الدورة (القرار D-32): أوامر order_type=Trial خلف الإعداد production.trial_allow_draft_bom (الملحقان 35 و36)؛ داخل الدورة الأولى نفسها لا تجميد إطلاقاً
products.lifecycleتوسعةإضافة حالة Prospect (القرار D-26): منتج العميل يُسجَّل كمنتج «مرشَّح» يحفظ سلامة مفتاح القائمة، ويُرقّى إلى Active عند الفوز فقط — ولا يظهر في البيع أو المخزون أو التخطيط قبل ذلك
ComputeStandardCostتوسعةنفس محرك تجميع التكلفة المعياري (الخريطة 20 سطر 23: تفجير القائمة × معدلات مراكز العمل × cost_driver) يُضاف له وضع محاكاة mode=Simulation: يكتب في mfg_cost_estimate_versions بدلاً من mfg_standard_costs، ولا يستدعي CreateJournalEntry إطلاقاً
SalesQuotation + convertFromQuotationإعادة استخدامعرض السعر للعميل ودورته Draft→Sent→Accepted→Converted والتحويل لأوردر — موجودان كما هما (الملحق 32 §1)
ApprovalWorkflow في Coreتوسعةإضافة ApprovalModule::Production ونوع مستند cost_estimate لبوابة اعتماد المحاسبة قبل إرسال العرض (الملحق 32 §5)
mfg_peggingsتوسعةإضافة cost_estimate_id لسلسلة الربط حتى يُعاد بناء النسب الكامل: طلب ← قائمة ← إصدارات ← عرض ← أوردر ← ما بعده (المتطلب R-18)

2) آلة الحالات مع الفاعلين (البيع، البحث والتطوير، المحاسبة)

#منالإجراءالفاعلالشرط الحاكمإلىالحدث
1CreateCostEstimateالبيععميل صحيح + مرفق التركيبة؛ يُنشأ المنتج المرشَّح Prospect تلقائياًDraftCostEstimateRequested
2DraftSubmitDraftBomالبحث والتطويرالقائمة Engineering+Draft وأبوها المنتج المرشَّح؛ يثبَّت draft_bom_id (حالة فرعية: «القائمة جاهزة»)DraftDraftBomReady
3DraftSimulateCostEstimateالمحاسبةالقائمة مرفقة + لكل بند سعرٌ قابل للحل (سعر حالي / آخر شراء / يدوي للخامات غير المخزّنة بعد)؛ لا قيد ولا مخزونEstimated— داخلي
4EstimatedRecostEstimateالمحاسبةإعادة الحساب = إصدار جديد غير قابل للتعديل؛ التاريخ كله محفوظEstimated
5EstimatedQuoteCostEstimateالبيع (بعد اعتماد المحاسبة)الإصدار الحالي معتمَد؛ تحديد نسبة الربح والسعر وvalid_until؛ إنشاء وإرسال SalesQuotation وطباعة PDF؛ العرض يصبح للقراءة فقطQuotedEstimateQuoted
6QuotedRecostEstimateالمحاسبة/البيعإلزامي عند انتهاء الصلاحية (Expired) أو عند إعادة التفاوض — يعود لخطوة 4 ثم يُعاد العرضEstimated
7QuotedMarkEstimateWonالبيع (بقبول العميل)عرض السعر المرتبط Accepted والتاريخ داخل الصلاحية — العرض المنتهي يمنع الفوز حتى يُعاد التسعير (السؤال المفتوح OQ-5)WonEstimateWon
8QuotedMarkEstimateLostالبيعسبب الخسارة إلزامي؛ المنتج المرشَّح يبقى Prospect مؤرشفاًLostEstimateLost

قواعد عابرة لكل الانتقالات: كل انتقال محكوم بصلاحية production.estimates.*؛ القائمة المبدئية تظل غير مؤهلة لأي أمر إنتاج طوال الدورة؛ ولا أثر مالي أو مخزني في أي خطوة — قناة القيود الوحيدة في النظام CreateJournalEntry لا تُستدعى في هذه الدورة أصلاً.

3) الأحداث ومن يستهلكها

كلها في Modules\Production\Events وتُطلق بعد نجاح المعاملة، ومستهلكوها مستمعون داخل وحدة الإنتاج يستدعون إجراءات الوحدات الأخرى للأمام (قانون العقود — الملحق 22 §2: لا وحدة تستورد الإنتاج أبداً).

الحدثالمُطلِقالمستهلكون
CostEstimateRequestedCreateCostEstimateمغذّي قائمة أعمال البحث والتطوير (طابور شاشة 3) + بث للوحة المسار
DraftBomReadySubmitDraftBomمغذّي طابور شاشة التكاليف بالمحاسبة + تشغيل المحاكاة تلقائياً (إعداد اختياري للشركة) + بث للوحة
EstimateQuotedQuoteCostEstimateمجدول متابعة البيع وراصد الصلاحية (يعلّم Expired عند الموعد ويمنع الفوز) + لوحة الإدارة + أرشفة PDF
EstimateWonMarkEstimateWonبوابة الدورة الثانية: ترقية المنتج، بذر الربط mfg_peggings، وعرض مسار التجربة (دفعة العيّنة R-05)
EstimateLostMarkEstimateLostتحليلات الربح/الخسارة وإغلاق النسب

4) شاشات المراحل (نمط واجهة-لكل-مرحلة الذي طلبه العميل — R-17)

كل شاشة تعرض بيانات مرحلتها وأزرار انتقالها فقط، والزر يستدعي نفس الإجراء الذي تكشفه الواجهة البرمجية — الشاشات لا تتجاوز آلة الحالات أبداً. شرائح الصلاحيات: production.estimates.create للبيع، production.estimates.rnd.draft_bom للبحث والتطوير، production.estimates.cost وapprove_costing للمحاسبة، quote وconvert للبيع، والمشرف يشمل الكل.

5) مسار التحويل: تقدير فائز ← مدخل دورة الإنتاج

  1. قبول العميل يمر عبر منطق التحويل الموجود مُستدعىً حصراً عبر الإجراء الأمامي Modules\Sales\Actions\ConvertQuotationToOrder (استخلاص الملحق 36 رقم 19 من المتحكم convertFromQuotation — نفس وصفة CreatePurchaseRequest؛ الإنتاج لا يستدعي متحكم وحدة أخرى أبداً، قانون العقود §0.1): SalesQuotation = Accepted ← أوردر بيع رسمي يُختم على التقدير — هذا الأوردر هو مرساة الدورة الثانية الذي تتعلق به كل المستندات اللاحقة.
  2. ترقية المنتج المرشَّح Prospect ← Active فيصبح مؤهلاً للمخزون والتخطيط والبيع.
  3. القائمة المبدئية لا تُرقَّى تلقائياً: تُسلَّم للدورة الثانية وهي Draft، ويثبّتها البحث والتطوير (Engineering/Draft ← Production/Active، نسخة نشطة واحدة لكل نافذة سريان) بعد نتيجة دفعة التجربة لأن دروس التجربة تدخل في التركيبة النهائية — وإن تخطى العميل التجربة جاز الترقية فوراً.
  4. بذر صف mfg_peggings يربط التقدير بالأوردر فيكتمل النسب من طلب التسعير حتى استلام التام.
  5. التفرع: (أ) تجربةmfg_trial_batches + أمر إنتاج order_type=Trial ينفذه البحث والتطوير على قضبان التنفيذ الحقيقية بتكلفة وقيود حقيقية (أول قيد محاسبي في حياة هذا العميل يقع هنا، في الدورة الثانية لا الأولى)؛ أو (ب) مباشرة — تثبيت القائمة ← التخطيط ← بوابة الدفعة تحت الحساب ← الحجز ← الإطلاق.
  6. استمرارية التكلفة: الإصدار الفائز من mfg_cost_estimate_versions هو خط الأساس الذي تُقارن به تكلفة التجربة الفعلية، ومرشَّح لبذر أول تكلفة معيارية في mfg_standard_costs بعد تفعيل القائمة.

6) موضعها في خارطة الطريق وقرارات التوقيع

تهبط الدورة في المرحلة 2.5 «واجهة العميل» (الملحق 36 ثالثاً — الموضع الذي سمّاه الملحق 30 §6 مؤقتاً «1.5»): بعد المرحلة 1 (دورة حياة القائمة) وبعد المرحلة 2 — لأن معدلات العمالة/الماكينات وcost_driver التي يسعّر بها التقدير تصل في المرحلة 2 لا المرحلة 1 (تصحيح للادعاء السابق بأن المرحلة 1 تكفي) — ومستقلة عن محرك التخطيط. وضع المحاكاة هو سحبٌ مبكر لرياضيات تجميع التكلفة من المرحلة 3 بنسخة تقديرية فقط (البند C-03) دون الحاجة لمحرك الانحرافات. القرارات المطلوب توقيعها قبل البناء (من السجل المرجعي — الملحق 36 رابعاً): D-31 بناء القمع التجاري (كان يُستشهد به سابقاً برقم «D-23» المؤقت)، D-26 حالة المنتج المرشَّح، D-29 إعادة استخدام عرض سعر البيع (الدليل مثبت)، وD-34/OQ-5 مدة صلاحية العرض (الافتراضي 30 يوماً، والعرض المنتهي يمنع التحويل حتى يُعاد تسعيره).

🏭

ملحق: تصميم دورة الإنتاج بالأوردر بالبوابات (Gated MTO Production Cycle Design)

هذا هو التصميم التنفيذي الكامل للدورة الثانية لدى العميل (التصنيع حسب الطلب للغير): حالة عميل واحدة تمشي عبر أربع عشرة محطة محكومة ببوابات — من أمر البيع، إلى التجربة المُكلّفة فعلياً، إلى تثبيت قائمة التركيب، إلى فحص التخطيط، إلى بوابة الدفعة المقدمة المانعة، إلى الحجز والتصنيع وفحص الجودة والاستلام في مخزن التام وحتى التسليم وتسوية الدفعة على الفاتورة النهائية. التصميم متّسق بالكامل مع الخرائط والعقود المنشورة (الأقسام 20–23 والملاحق 30–33): يعيش داخل Modules/Production الموسَّعة، جداوله بادئتها mfg_*، صلاحياته production.*، والترحيل حصرياً عبر CreateJournalEntry والمخزون حصرياً عبر مستندات الاعتماد — ولا يُعيد فتح أي قرار مُعتمد إلا بتعديلين مُصادق عليهما صراحةً بصفّي قرار في السجل المرجعي (الملحق 36 رابعاً): D-32 (استثناء تجميد القائمة المبدئية لأوامر التجربة — تعديل على صف 2 من الخريطة) وLA-1/D-33 (قبض الدفعة يركب سند القبض — تعديل على قانون الترحيل §5.4). تسمية الدورة الأولى تتبع الزوج القانوني من الملحق 34: mfg_cost_estimates/mfg_cost_estimate_versions (سُحبت أسماء mfg_quotations المؤقتة).

14محطة في آلة حالات القضية
1كيان مظلّة جديد mfg_order_cases
10شاشات مراحل + لوحة كانبان
14حدثاً جديداً (12 + حدثا الأمانة) + 5 مُعاد استخدامها
6أقسام لكل منها صلاحياته

قرار النمذجة: كيان مظلّة رفيع mfg_order_cases وليس أعمدة على أمر الإنتاج

كان الخياران: إضافة أعمدة القضية والدفعة على production_orders، أو كيان مظلّة رفيع يعلو أوامر الإنتاج. التوصية الحاسمة: كيان المظلّة — للأسباب التالية:

الامتداد على production_orders يقتصر على: case_id (يقبل الفراغ — أوامر التخزين العادية بلا قضية)، إضافة Trial إلى تعداد order_type، وعمود sales_order_id مباشر (مع بقاء mfg_peggings المرجع الكمي للتخطيط). لا أعمدة دفعة على الأوامر إطلاقاً. ويُعاد ربط جدول التدقيق mfg_order_stage_gates بمفتاح case_id (تعديل على الملحق 30)؛ فيصبح صافي الجداول الجديدة في الملاحق ستة والإجمالي الكلي ثلاثين (mfg_cost_estimates، mfg_cost_estimate_versions، mfg_trial_batches، mfg_customer_advances، mfg_order_stage_gates، mfg_order_cases) — صادق عليه الملحق 36. قاعدة الفصل عن محرك الاعتماد (Core ApprovalWorkflow): جدول البوابات سجل تدقيق لكل حركة؛ التوقيعات البشرية (تثبيت القائمة، حكم التجربة، الإعفاء من الدفعة، إفراج الجودة) تركب محرك الاعتماد القائم كشرط مسبق للانتقال — لا آليتي اعتماد متوازيتين.

آلة الحالات بالبوابات: كل انتقال = شرط + صلاحية + Action + حدث

كل انتقال يستدعي Action واحداً محكوماً بصلاحية: يتحقق من البوابة، يغيّر المحطة، يسجّل سطراً في mfg_order_stage_gates (من، متى، من أين إلى أين، ولقطة تقييم البوابة)، ثم يطلق الحدث بعد إتمام المعاملة. الإلغاء متاح من أي محطة قبل دخول التصنيع مع فك الحجوزات ومعالجة الدفعة (ردّ أو مصادرة حسب السياسة).

الانتقالالبوابة (الشرط المانع)الجهة والصلاحيةالـAction ← الحدث
— ← SalesOrderوجود أمر بيع مؤكد (عبر الإجراء الأمامي Sales\ConvertQuotationToOrder — استخلاص الملحق 36 رقم 19 من المتحكم)المبيعات · production.case.openOpenProductionCaseProductionCaseOpened
SalesOrderTrialRequestedتسجيل كمية التجربة وسياسة تكلفتها trial_cost_policyالمبيعات · production.case.trial_requestRequestCaseTrialCaseTrialRequested
مسار تخطّي التجربة ← BomFinalizedمنتج مكرر له قائمة Active + تنازل مكتوب من العميلالمشرف · production.case.trial_skipSkipCaseTrialCaseTrialSkipped
TrialRequestedTrialInProductionوجود قائمة تركيب؛ استثناء محكوم — مُصادق عليه قراراً D-32 (تعديل صريح على صف 2 من الخريطة): أوامر Trial فقط يجوز لها تجميد قائمة Engineering/Draft (إعداد production.trial_allow_draft_bom) — الأوامر العادية أبداًR&D · production.case.trial_createCreateTrialOrder: أمر إنتاج حقيقي بوسم order_type=Trial بكمية صغيرة، يمر بقضبان الإصدار→الصرف→التأكيد→الاستلام→الإقفال كاملة بتكلفة حقيقية، ومخرَجه يُستلم في دلو التقييم (مخزن-كحالة غير قابل للبيع) ← TrialOrderCreated
TrialInProductionTrialApprovedإقفال أمر التجربة + وجود مستند تسليم العينة (صرف تتبّعي من دلو التقييم يُختم على mfg_trial_batches — سدّ فجوة U-3: العينة لا تصل العميل بلا مستند) + توقيع اعتماد العميل (مرفق إلزامي) + result=Passed؛ الفشل يعيد إلى طلب التجربة أو الإلغاءالمبيعات · production.case.trial_decideRecordTrialDecisionCaseTrialDecided
TrialApprovedBomFinalizedترقية القائمة إلى Production/Active — نسخة نشطة واحدة لكل نافذة سريان، وتُختم active_bom_id على القضيةR&D · production.case.bom_finalizePromoteCaseBomCaseBomFinalized
BomFinalizedPlanningCheckedتشغيل MRP لأمر واحد: تفجير القائمة × الكمية، إجمالي←صافي، فصل المواد المملوكة عن مواد العميل، نواقص المملوكة ← مسوّدات طلبات شراء تُجهَّز ولا تُرفع (الدفعة هي ما يموّل هذا الشراء — تُرفع عند بوابة الدفعة)، وحفظ حكم الجاهزيةالتخطيط · production.case.planRunCasePlanningCasePlanningChecked
PlanningCheckedDepositGateآلي: احتساب المطلوب = نسبة الدفعة × الوعاء (OwnMaterialCost أو OrderValue)؛ إن لم يلزم شراء بالنيابة ← NotRequired وتمرّ تلقائياًالنظامانتقال آلي
DepositGateMaterialsReservedبوابة مانعة صلبة: مجموع سندات القبض المعتمدة المخصصة للقضية (reference_type='mfg_order_case') ≥ المطلوب (قيد السند نفسه هو ترحيل الدفعة — LA-1/D-33)، أو إعفاء بصلاحية مرتفعة؛ وعند استيفائها تُرفع الآن مسوّدات طلبات الشراء بالنيابة الموسومة «تُحمَّل على العميل» — الشراء بالنيابة لا يسبق الدفعة أبداً (قاعدة العميل السببية U-6؛ تصحيح لموضعها السابق عند فحص التخطيط)؛ ثم يعمل ReleaseProductionOrder — وقد أُضيفت البوابة شرطاً مسبقاً فيه — فيجمّد اللقطة ويحجز كأثره الجانبي المعتمد عبر StockService::reserve() مربوطاً بالأمر: المملوك من المخزون الذاتي ومواد العميل من مخزن الأمانةالحسابات تسجّل · production.case.deposit_record / الإعفاء .deposit_waive / الإصدار .releaseAllocateCaseAdvanceCaseDepositSatisfied ثم ReleaseProductionOrderProductionOrderReleased + CaseMaterialsReserved
MaterialsReservedInProductionآلي عند أول حدث MaterialIssued؛ مواد العميل تُستلم مسبقاً في مخزن الأمانة بمستند استلام مخزني حقيقي (ReceiveCustomerMaterial ← فرع تتبّعي بلا تقييم في ApproveReceipt — مستند الإدخال الذي سدّ فجوة U-2؛ لا مساس مباشراً بالأرصدة أبداً): حركة تتبّع فقط، لا تدخل تكلفتنا إطلاقاً، لكن أرقام لوطاتها تُكتب في نَسَب الباتش؛ والمتبقي غير المستخدم يعود عند الإقفال بمستند الصرف المرآتي (ReturnCustomerMaterial) + تسوية: المستلَم − المصروف − خردة الأمانة = المرتجعالمخازن تصرف والخط ينفّذالقضبان القائمة: صرف ← تأكيد ← استلام
InProductionQcReleaseآلي عند GoodsReceiptPosted بكامل الكمية؛ سطور الاستلام تهبط quality_status=OnHold (القلب الدوائي للافتراضي — الملحق 33) فيقبع التام في الحجر غير قابل للبيعالنظاممستمع ← CaseAwaitingQc
QcReleaseInFgWarehouseكل فحوصات qms_inspections للاستلام = Released؛ المرفوض يدخل حلقة عدم مطابقةالجودة · production.case.qc_releaseReleaseCaseQcCaseQcReleased
InFgWarehouseDeliveredإذن تسليم مؤكد + فاتورة نهائية تُنشأ للأمام عبر الإجراء الرفيع الجديد Sales\CreateServiceInvoice (سدّ فجوة U-4 — لا نداء متحكم ولا كتابة مباشرة في جداول المبيعات): فرع التشغيل = سطر أجر التحويل + سطر تمرير الخامة المشتراة بالنيابة بالتكلفة (+ نسبة مناولة تعاقدية) — سدّ فجوة U-1 والتام ملك العميل + تسوية الدفعة المقدمة عليهاالمبيعات/الحسابات · production.case.deliverInvoiceAndSettleCaseCaseDelivered
DeliveredClosedإقفال الأمر الرئيسي (ترحيل الانحرافات السبعة وتصفير WIP) واكتمال التسويةالنظام/الحساباتآلي ← CaseClosed

سياسة تكلفة التجربة (قابلة للضبط — تحسم OQ-1 وOQ-3)

المعالجة المحاسبية: من التزام الدفعة إلى تسويتها

القبض النقدي يركب ReceiptVoucher القائم (ترحيله محايد الحساب) — وهذا هو تعديل القانون المعتمد LA-1/D-33 على §5.4: قيد السند نفسه هو ترحيل الدفعة الوحيد (ترحيل واحد، لا نداء موازياً لـCreateJournalEntry) — والباقي عبر CreateJournalEntry حصراً؛ الحسابات تُحل من مفاتيح إعدادات production.* وتُزرع كحسابات تفصيلية — ومنها حساب جديد 2105 «دفعات عملاء تحت الحساب» تحت الإيرادات المقدمة.

الحدثentry_typeمديندائن
استلام الدفعة المقدمةproduction_customer_advanceالنقدية/البنكدفعات العملاء تحت الحساب (التزام 2105)
التجربة — فوترةفاتورة مبيعات خدمية عاديةالعملاءإيراد خدمة التجارب
التجربة — استيعاب / تأجيلproduction_trial_absorb / production_trial_deferمصروف بحث وتطوير / تكلفة تجارب مؤجلةتحت التشغيل
التجربة المؤجلة — فوز / خسارةproduction_trial_apply / production_trial_writeoffتكلفة الأمر / مصروف بحث وتطويرتكلفة التجارب المؤجلة
دورة التصنيع نفسهاعائلات القيود الخمس المنشورة كما هي دون أي تغيير (صرف، أجور، أعباء، خردة، استلام التام + الانحرافات)
مواد العميل (الإصدار الحر)لا قيد إطلاقاً — حركة أمانة تتبّعية فقط، واللوطات تُسجَّل في النَسَب
إخلاء خامة النيابة عند استلام التام (تشغيل — U-1)production_toll_material_cogsتكلفة خامات toll (مُعاد تحميلها)تحت التشغيل
الفاتورة النهائية (تشغيل — عبر CreateServiceInvoice)فاتورة مبيعات ← الفوترة الإلكترونيةالعملاءإيراد أجر التحويل + إيراد تمرير الخامة بالنيابة (بالتكلفة + مناولة) — الفاتورة تحتوي الخامة التي موّلتها الدفعة فيُقفل حساب النقدية
تسوية الدفعة على الفاتورةproduction_advance_settlement (الاسم القانوني الوحيد — سُحب البديل production_advance_application)دفعات العملاء تحت الحسابالعملاء
ردّ الدفعة عند الإلغاءproduction_advance_refundدفعات العملاء تحت الحسابالنقدية/البنك

شاشات المراحل: لوحة كانبان + ورشة عمل لكل محطة

لوحة واحدة مركزها القضية (production/cases/board): الأعمدة هي المحطات والبطاقات هي القضايا، والسحب معطّل عمداً — الحركة لا تتم إلا من زر المرحلة الذي يستدعي نفس الـAction الذي تعرضه الواجهة البرمجية، فلا تجاوز لآلة الحالات أبداً، وكل نقلة مسجّلة في mfg_order_stage_gates. ولكل محطة ورشة عمل مخصصة تعرض طابورها وقائمة تحقق حية لبوابتها وزر التقدّم الوحيد:

الشاشةالقسم المالكالطابورالإجراء الرئيسي
intake — مكتب القضاياالمبيعاتأوامر بيع مؤكدة بلا قضيةفتح قضية · طلب تجربة · تخطّي التجربة
trial-bench — منضدة التجاربR&Dطلبات التجارب + متابعة التجارب الجاريةإنشاء أمر التجربة
trial-review — مراجعة التجربةالمبيعاتتجارب بانتظار قرار العميلتسجيل تسليم العينة (مستند الصرف من دلو التقييم — شرط أول) · تسجيل القرار + مرفق التوقيع
bom-bench — منضدة القوائمR&Dقضايا معتمدة التجربةترقية القائمة إلى Active
planning-bench — منضدة التخطيطالتخطيطقضايا مثبّتة القائمةتشغيل تخطيط القضية وفصل المملوك عن مواد العميل وتجهيز مسوّدات طلبات الشراء (تُرفع بعد بوابة الدفعة)
deposit-desk — مكتب الدفعاتالحساباتقضايا على بوابة الدفعة (المطلوب/المستلم/المتبقي)تخصيص سند قبض · إعفاء (صلاحية مرتفعة)
reserve-desk — مكتب الحجزالمخازن + التخطيطقضايا مستوفاة الدفعةاستلام مواد العميل في الأمانة (بمستند ReceiveCustomerMaterial التتبّعي — لا زرّاً بلا قضيب) · إصدار الأمر (تجميد اللقطة + الحجز كأثر جانبي) · إرجاع المتبقي عند الإقفال (ReturnCustomerMaterial + التسوية)
production-monitor — مرقاب التصنيعالإنتاجقضايا تحت التشغيل بتقدّم العملياتمتابعة فقط — التقدّم آلي بالأحداث
qc-desk — مكتب الجودةالجودةاستلامات محتجزة OnHold ونتائج الفحصإفراج / رفض (عدم مطابقة)
delivery-desk — مكتب التسليمالمبيعات/الحساباتقضايا في مخزن التامإذن تسليم + فاتورة نهائية عبر CreateServiceInvoice (أجر التحويل + سطور تمرير الخامة) + تسوية الدفعة

علاقتها بطرفيات صالة الإنتاج: الطرفيات (المرحلة الخامسة من الخارطة) تبقى على مستوى العملية داخل محطة InProduction وحدها — المشغّل يبدأ وينهي العمليات ويرسل التأكيدات، ولا يحرّك القضية أبداً؛ القضية تتقدم تلقائياً من الأحداث التي تطلقها تلك التأكيدات نفسها. طبقتان لكل منهما آلة حالاتها، تربطهما الأحداث.

تنبيه تفسيري (السؤال المفتوح OQ-9 — يُحسم عند بوابة المرحلة 0): هذا القسم كله يقرأ «واجهات لكل مرحلة إنتاجية» على أنها مراحل الملف التجارية. إن قصد العميل مراحل التصنيع الفيزيائية (خلط/تحبيب/كبس/تعبئة — قراءة مرجَّحة دوائياً) فالجواب ورش لكل عملية مسار فوق عمليات التوجيه: تخدمها طرفيات المرحلة 5 مع شاشة مراقبة قراءة-فقط لكل عملية يمكن شحنها مبكراً في 2.5. والجدولة (قرار D-28 المعدَّل): لوحة المسار MVP في المرحلة 2، الورش الحرجة للبوابات في 2.5، والإكمال والصقل في 5.

الأحداث والصلاحيات

التسلسل الكامل للقضية

  1. أمر بيع مؤكد ← فتح قضية mfg_order_cases مرقمة عبر SequenceService.
  2. طلب تجربة بسياسة تكلفة محددة ← أمر إنتاج حقيقي order_type=Trial تنفّذه R&D بتكلفة كاملة.
  3. اعتماد العميل للتجربة بتوقيع موثّق (أو إعادة التجربة / الإلغاء).
  4. R&D تثبّت القائمة Production/Active وتُختم على القضية.
  5. التخطيط يفجّر القائمة ويفصل المملوك عن مواد العميل ويجهّز مسوّدات طلبات الشراء بالنيابة (لا تُرفع بعد).
  6. بوابة الدفعة المانعة: لا حجز ولا شراء ولا تصنيع قبل تخصيص سندات القبض الكافية (أو إعفاء موثَّق) — قيد السند: مدين النقدية / دائن التزام دفعات العملاء (LA-1)؛ وعند الاستيفاء تُرفع طلبات الشراء بالنيابة الآن فقط.
  7. الإصدار يجمّد اللقطة ويحجز المواد كأثره الجانبي مربوطةً بالأمر؛ مواد العميل تكون قد دخلت الأمانة بمستند الاستلام التتبّعي (U-2) بلا أي تكلفة علينا مع تتبّع لوطاتها في النَسَب.
  8. التصنيع على القضبان القائمة (صرف ← تأكيدات ← استلام) وطرفيات الصالة تعمل داخل هذه المحطة فقط.
  9. الاستلام محتجزاً OnHold ← إفراج الجودة ← مخزن التام.
  10. إذن التسليم + الفاتورة النهائية عبر CreateServiceInvoice (أجر التحويل + سطر تمرير الخامة بالنيابة في التشغيل) + تسوية الدفعة المقدمة على الفاتورة + إرجاع/تسوية خامة العميل المتبقية ← إقفال القضية بعد ترحيل الانحرافات.

موضع الملحق في الخارطة

يهبط هذا التصميم وفق جدولة الملحق 36 ثالثاً (التي تتقدّم على موضع «1.5» المؤقت في الملحق 30 — والصحيح بعد المرحلة 2 لأن معدلات العمالة/الأعباء وcost_driver تصل فيها): نواة الملف وبوابة الدفعة وجدول البوابات ولوحة المسار في المرحلة 2، والتقديرات والتجارب والورش الحرجة في المرحلة 2.5 «واجهة العميل» — وفحص التخطيط هنا تفجير محلي لأمر واحد يسبق MRP الكامل ويطيع نفس بوابة الدفعة. التعديلات على الوثائق المنشورة: إضافة Trial وcase_id وsales_order_id لخريطة 20 (الصف 13) + استثناء D-32 على الصف 2، إضافة شرط بوابة الدفعة على ReleaseProductionOrder (ويحجب رفع طلبات الشراء بالنيابة أيضاً) وتعديل LA-1/D-33 على §5.4 وأنواع القيود الجديدة وإجراءات CreateServiceInvoice/ReceiveCustomerMaterial/ReturnCustomerMaterial للقسم 22، وإعادة ربط mfg_order_stage_gates بالقضية في الملحق 30 — والأسئلة المفتوحة أصبحت إعدادات قابلة للضبط بانتظار تصديق المجلس عبر السجل المرجعي (الملحق 36 رابعاً: D-23..D-36 + OQ-9).

🗓️

ملحق: تعديلات الخريطة والعقود وخارطة الطريق (Plan Amendments)

هذه هي ورقة التعديلات الموحَّدة التي تفرضها متطلبات عميل مصنع الأدوية (التصنيع للغير بالأوردر — الملاحق 30 إلى 33) على وثائق القرار الثلاث المنشورة: الخريطة النهائية (20)، عقود التكامل (22)، وخارطة الطريق (23). كل ما يلي إضافي، مع استثناءين مُعتمَدين صراحةً فقط (لكلٍّ منهما صف قرار خاص — لا تعديل صامت): LA-1 / D-33 (قبض الدفعة المقدمة يركب قضيب سند القبض — تعديل على القسم 5.4 من الوثيقة 22) وD-32 (أوامر التجربة يجوز لها تجميد قائمة مبدئية Draft — تعديل على صف 2 من الوثيقة 20). كل ما عدا ذلك من القرارات المعتمدة (D-01 إلى D-22) وعائلات القيود وآلة حالات أمر الإنتاج وقانون الاعتمادية يبقى دون مساس. نموذج الكيانات والتسمية الموحَّد (يُنهي تشعّب الملاحق 34/35/36): تُعتمد تسمية الملحق 34 لدورة التسعير (mfg_cost_estimates + mfg_cost_estimate_versions — وتُسحب الأسماء المؤقتة mfg_quotations/mfg_quotation_costings)، ويُعتمد كيان الملحق 35 المظلّي mfg_order_cases — الآلة التجارية تعيش على الملف، وليس كحالات تمهيدية فوق آلة أمر الإنتاج.

6جداول mfg_ جديدة (24 ← 30)
5+14أحداث: 5 للتقدير (الملحق 34) + 14 للملف (الملحق 35)
1مرحلة جديدة 2.5 «الواجهة التجارية»
14+1السجل المرجعي للقرارات D-23..D-36 + OQ-9

أولاً — تعديلات الخريطة (على الوثيقة 20)

إجمالي الجداول الجديدة يرتفع من 24 إلى 30 جدول mfg_* (+6: التقديرات، نسخ التقديرات، ملفات الأوامر، التجارب، الدفعات، بوابات المراحل). كل بند: ما هو، هل هو جديد أم تعديل على موجود، أين يعيش، ولماذا.

البندجديد / تعديل علىالجدولالملاحظة
رأس التقدير الاستكشافي / استقبال طلب التسعيرجديدmfg_cost_estimatesرأس نَسَب دورة التسعير (الاسم القانوني من الملحق 34 — يسحب mfg_quotations): العميل، المنتج المرشَّح (lifecycle=Prospect، قرار D-26)، التركيبة كمرفقات، draft_bom_id، sales_quotation_id (إعادة استخدام مستند عرض السعر القائم في المبيعات SalesQuotation — دورة كاملة مُتحقَّق منها بالدليل 32، قرار D-29)، وsales_order_id عند الفوز. حالات رشيقة {Draft, Estimated, Quoted, Won, Lost} فقط — حالات القمع التجاري (إرسال/قبول/رفض/انتهاء/تحويل) تعيش على SalesQuotation وحده ولا تُكرَّر (يُجنّبنا آلتي حالات متزامنتين). مفتاح التسلسل 'cost_estimate'
نسخ التقدير الاستكشافيجديدmfg_cost_estimate_versionsنسخ تقدير غير قابلة للتعديل (إعادة الحساب = نسخة جديدة): خامات + عمالة + أعباء ← تكلفة وحدة ← هامش ← سعر معروض + valid_until + أساس التسعير. يشغّل نواة RollUpStandardCost بنمط محاكاة فقط على القائمة المبدئية — بلا قيد محاسبي وبلا مخزون. يسحب mfg_quotation_costings
ملف أمر العميل (المظلّة)جديدmfg_order_casesقرار الكيان للدورة الثانية (من الملحق 35 — يُعتمد هنا): ملف واحد لكل تعاقد، مرساة sales_order_id، نَسَب الدورة الأولى cost_estimate_id، آلة تجارية من 14 مرحلة (من أمر البيع حتى الإغلاق)، سياسة تكلفة التجربة، حقول الدفعة، مخزن الأمانة، القائمة المعتمدة، حكم التخطيط. السبب: ملف واحد ↔ N أوامر إنتاج (تجارب متكررة + أمر رئيسي)؛ 7 من 14 مرحلة تسبق وجود أي أمر إنتاج؛ الدفعة على مستوى الملف. آلة حالات أمر الإنتاج المعتمدة لا تتسع — لا حالات تمهيدية على production_orders.status
الباتش التجريبيجديدmfg_trial_batchescase_id، cost_estimate_id، production_order_id، كمية التجربة، actual_unit_cost (مصدر تصحيح السعر النهائي)، result ∈ {Pending, Passed, Failed}، ومستند تسليم العينة sample_delivery_doc_id + sample_delivered_at. الفشل يمنع تحويل الأمر الرسمي. أُبقي كياناً مستقلاً عمداً (خلافاً لتوصية الدليل 32 بعلمٍ على الأمر فقط): الملف الواحد يمتد عبر N أوامر إعادة تجربة، لكلٍّ حكم عميل وتوقيع وتسليم عينة خاص لا يصح أن يحمله أمر الإنتاج (حامل التكلفة)
نوع أمر التجربة + استثناء D-32تعديل علىproduction_ordersتوسيع صف 13 في الخريطة: order_type ∈ {Standard, Rework, Repair, Trial} (قرار D-24 — قيمة لا علم). أمر التجربة يركب قضبان الإصدار←الصرف←التأكيد←الاستلام والقيود كاملة دون أي منطق جديد؛ يُفصل تقريرياً ويُستبعد من معايرة التكلفة المعيارية. استثناء D-32 (تعديل صريح على صف 2): أوامر Trial وحدها يجوز لها تجميد قائمة Engineering/Draft خلف الإعداد production.trial_allow_draft_bom؛ الأوامر العادية أبداً — بدونه تستحيل التجربة قبل اعتماد القائمة
ربط أمر الإنتاج بأمر البيع والملفتعديل علىproduction_ordersعمودا sales_order_id وcase_id (الدليل 32: لا يوجد أي ربط اليوم؛ وفق مخطط الملحق 35) — مرساة الطلب المباشرة، تُكمّل mfg_peggings ولا تلغيه. لا أعمدة دفعة ولا حالات تجارية على الأمر
الدفعة المقدمة (دفعة تحت حساب)جديدmfg_customer_advancesمفتاحها case_id (دفعة واحدة تغطي التعاقد كله — تجربة + رئيسي؛ وفق الملحق 35، ويُنهي تشعّب المرساة الثلاثي): amount، percent، الأساس، status ∈ {Due, Received, Waived}، receipt_voucher_id، journal_entry_id (قيد السند نفسه)، applied_invoice_id — بيانات بوابة الإصدار. التنازل Waived بصلاحية production.case.deposit_waive ومُسجَّل
حساب دفعات العملاءتعديل علىدليل الحسابات + الإعداداتحساب تفصيلي «دفعات عملاء تحت الحساب» ابن 2104 Unearned Revenue (يُزرع عبر AutoAccountService) + مفتاح production.customer_advance_account_id. لا يُستخدم SalesPayment إطلاقاً (مربوط بالفاتورة — أداة خاطئة للدفعة المقدمة)
سند قبض الدفعة + تعديل القانون LA-1إعادة استخدام + D-33receipt_vouchersReceiptVoucher وترحيله محايد للحساب (السطر يحدد الدائن — مُتحقَّق). يُربط reference_type='mfg_order_case' وسطره يُرحّل دائناً لحساب الدفعات. LA-1 (تعديل صريح على القسم 5.4 من الوثيقة 22): قيد السند نفسه هو ترحيل الدفعة الوحيد — ترحيل واحد، ولا نداء موازياً لـCreateJournalEntry (يُسحب الازدواج السابق)؛ كل ترحيل إنتاجي آخر يبقى حصرياً عبر CreateJournalEntry. صفر تغيير مخطط في المحاسبة
بوابات المراحلجديدmfg_order_stage_gatesسجل الانتقالات خلف شاشات المراحل، مفتاحه case_id (وفق الملحق 35): من/إلى، مَن، متى، لقطة البوابة. مسار المراحل هو آلة mfg_order_cases نفسها؛ الشاشات تستدعي نفس الإجراءات التي تعرضها الواجهة البرمجية ولا تتجاوز أي آلة حالات. قاعدة الفصل عن محرك الاعتماد: هذا الجدول سجل تدقيق لكل حركة؛ التوقيعات البشرية (اعتماد القائمة، حكم التجربة، التنازل عن الدفعة، إفراج الجودة) تركب محرك ApprovalWorkflow القائم كشرط مسبق للانتقال — لا ازدواج
مخازن الأمانة (مواد العميل)تعديل علىwarehousesis_consignment (قرار D-15 المعتمد) + owner_partner_id (الدليل 32: لا مفهوم ملكية في المخزون اليوم). لا تُقيَّم ولا تُشترى. تُسحب من المرحلة 6 إلى المرحلتين 1/2 (D-27)
استلام/إرجاع خامة العميل (مستند الإدخال)تعديل (مستندات)مستندات استلام/صرف المخزونسدّ فجوة U-2: خامة العميل الحرة تدخل مخزن الأمانة عبر مستند استلام مخزني حقيقي يعتمده ApproveReceipt بفرع تتبّعي بلا تقييم وبلا قيد لمخازن الأمانة (الملكية للعميل في عُهدة)، مرجعه الملف؛ والمتبقي غير المستخدم يعود عند الإقفال بمستند الصرف المرآتي + تسوية ختامية (المستلَم − المصروف − خردة الأمانة = المرتجع). لا رصيد مخزني يُمسّ خارج مستندات الاعتماد أبداً. يستدعيهما الإنتاج للأمام عبر ReceiveCustomerMaterial / ReturnCustomerMaterial
تفعيل الحجزتعديل (منطق)inventory_stock_balancesStockService::reserve()/release() يبقى بنداً في المرحلة 1 كما نُشر (الفجوة A5). الجديد: (أ) بوابة الدفعة تسبق الإصدار — والحجز يبقى أثراً جانبياً لإجراء ReleaseProductionOrder كما اعتُمد (صف 13): مرحلة «محجوز» يدخلها الإصدار ولا تسبقه أبداً؛ (ب) فرع جديد: مكوّنات العميل تُحجز من رصيد الأمانة
سلسلة النَسَبتعديل علىmfg_peggingsإضافة cost_estimate_id وcase_id ليُعاد بناء النَسَب كاملاً: طلب تسعير ← قائمة مبدئية ← عرض ← تجربة ← ملف ← أمر ← مستندات
بوابات الاعتمادتعديل علىCore enumsApprovalModule::Production (مقرر في المرحلة 0) + أنواع مستندات جديدة: bom، production_order، trial_batch، customer_advance — إعادة استخدام محرك الاعتماد القائم للتوقيعات البشرية وفق قاعدة الفصل أعلاه
حالة جودة الاستلام (الدواء)تعديل علىالإعداداتإعداد لكل شركة production.gr_default_quality_status: لمصنع الدواء يُقلب الافتراضي Released ← OnHold + مخزن حجر صحي. D-21 يبقى الافتراضي العام؛ هذا هو التجاوز المتوافق (الملحق 33 — P2)
رقم التشغيلة + منتج مرشَّح + الصلاحياتتعديل علىproduction_orders / products / الصلاحياتbatch_no يُختم عند الإصدار بمفتاح تسلسل 'batch' (P1)؛ حالة lifecycle=Prospect على المنتج تحفظ سلامة مفتاح القائمة المبدئية (D-26)؛ تصنيف واحد للصلاحيات (يُنهي تشعّب الفضاءات الثلاثة): الدورة الأولى production.estimates.* (الملحق 34 §5، ومنها production.estimates.rnd.draft_bom) والدورة الثانية production.case.* (الملحق 35 §5، والتنازل = production.case.deposit_waive) — زارع المرحلة 0 يُكتب من الملفين حرفياً

ثانياً — تعديلات العقود (على الوثيقة 22)

كل الإضافات تحترم القاعدتين الحاكمتين وقانون الاعتمادية (بتعديله الوحيد المعتمد LA-1): إجراءات للأمام، أحداث للخلف، ولا موديول يقرأ جدول mfg_* أبداً. المبيعات تستقبل السعر دفعاً عبر إجراء؛ المحاسبة تستقبل سنداً ولا تعرف بوجود جدول الدفعات؛ فحوص الجودة تُنشأ دفعاً وتقرأ التصنيع نتيجتها قراءةً فقط. قاموس أحداث واحد (يُنهي تشعّب القواميس الثلاثة): أحداث الدورة الأولى الخمسة من الملحق 34 (CostEstimateRequested, DraftBomReady, EstimateQuoted, EstimateWon, EstimateLost) + أحداث الملف من الملحق 35 (ProductionCaseOpened … CaseCancelled + حدثا الأمانة) — ولا حدث StageAdvanced عام: كل إجراء انتقال يكتب سطر التدقيق بنفسه وأحداث Case* هي إخطارات التقدّم.

الحدث (من القاموس الموحَّد)المُصدِر (الإجراء)المستهلكون (مستمعون داخل التصنيع ← إجراء أمامي)
EstimateQuotedQuoteCostEstimate (بعد اعتماد نسخة المحاكاة)دفع السعر والصلاحية إلى عرض المبيعات عبر إجراء جديد Sales\UpsertQuotationPricing — المبيعات لا تقرأ mfg_cost_estimate_versions أبداً
CaseTrialDecidedRecordTrialDecision (تسجيل حكم العميل — بوابته وجود مستند تسليم العينة، U-3)بوابة النَسَب: Passed تفتح التحويل لأمر رسمي؛ Failed تمنعه (إعادة تجربة أو إغلاق)؛ ترحيل سياسة تكلفة التجربة (D-23)؛ إخطار المبيعات وR&D
CaseDepositSatisfiedAllocateCaseAdvance / WaiveCaseDeposit (بعد ApproveReceiptVoucher: مدين نقدية / دائن دفعات عملاء — LA-1)إعادة تقييم بوابة الإصدار (المُحصَّل ≥ المطلوب)؛ الآن فقط تُرفع طلبات شراء خامات العميل (CreatePurchaseRequest موسومة «تُفوتر على العميل») — لا طلب شراء بالنيابة قبل هذا الحدث أبداً (قاعدة U-6)؛ إخطار التخطيط
CaseConsignmentReceived / CaseConsignmentReturnedReceiveCustomerMaterial / ReturnCustomerMaterial (مستندا الأمانة)رصيد الأمانة وتقرير التسوية؛ تسجيل اللوطات في الأنساب؛ بوابة التسوية عند إقفال الملف
CaseQcReleasedReleaseCaseQc (يقرأ qms_inspections.result قراءةً فقط)نقل البضاعة من الحجر الصحي إلى مخزن الجاهز عبر المستندات المعتمدة حصراً: تحويل تتبّعي مزدوج (صرف معتمد من الحجر + استلام معتمد في الجاهز) — مُسجَّل كإضافة عقدية؛ لا «قضيب تحويل» غير معتمد؛ تحرير التسليم المربوط؛ تذكير بتسوية الدفعة
نقطة الدخول (إجراء أمامي)الموديولالحالةالاستخدام
Accounting\ApproveReceiptVoucherالمحاسبةموجودقبض الدفعة: مدين نقدية/بنك / دائن دفعات عملاء — المُستدعي يحدد حساب السطر وreference_type='mfg_order_case'. قيد السند هو ترحيل الدفعة الوحيد (LA-1/D-33) — لا قيد ثانٍ
Accounting\CreateJournalEntryالمحاسبةموجودقيد تسوية الدفعة عند الفوترة: production_advance_settlement (مدين دفعات عملاء / دائن المدينون — اسم واحد قانوني؛ سُحب الاسم البديل production_advance_application) + عائلة قيود سياسة التجربة (D-23) وقيد production_toll_material_cogs
Sales\UpsertQuotationPricingالمبيعاتجديد (رفيع)دفع سعر التقدير وvalid_until إلى SalesQuotation — صوناً لقانون «لا قراءة لجداول mfg_»
Sales\ConvertQuotationToOrderالمبيعاتجديد (استخلاص)استخلاص convertFromQuotation من المتحكم (نفس وصفة CreatePurchaseRequest) لتحويلٍ برمجي يختم النَسَب — والملحق 34 §6 صار يستدعي هذا الإجراء لا المتحكم
Sales\CreateServiceInvoiceالمبيعاتجديد (استخلاص)سدّ فجوة U-4 — قضيب إنشاء الفاتورة المتوافق: الإنتاج يُطلق فاتورة الملف النهائية للأمام: سطر أجر التشغيل + سطور تمرير الخامات (U-1) + سطر التجربة إن كانت تُفوتر — تتدفق للفوترة الإلكترونية (B18). لا نداء متحكم ولا كتابة مباشرة في جداول المبيعات
Production\ReceiveCustomerMaterial / ReturnCustomerMaterialالإنتاج ← المخزونجديدمستندا إدخال/إرجاع خامة العميل الحرة لمخزن الأمانة — فرع تتبّعي لمستندي الاستلام/الصرف المعتمدين (سدّ U-2)
QMS\CreateInspectionالجودةمُقرَّر سلفاًتغيير توقيت فقط: يُستدعى أيضاً عند الاستلام لفحص الإفراج النهائي للدواء؛ إعداد القلب الافتراضي يصل في المرحلة 1
شرط بوابة الدفعة في ReleaseProductionOrderالإنتاج (داخلي)تعديلمنع Planned ← Released حتى يكون المُحصَّل ≥ المطلوب أو الحالة Waived بصلاحية — قبل التجميد والحجز. ونفس البوابة تحكم الشراء بالنيابة: لا تُرفع طلبات الشراء الموسومة إلا بعد CaseDepositSatisfied. ليس نداءً عابراً للموديولات: البوابة تقرأ جداول التصنيع نفسها

إضافة على خريطة القيود (القسم 4 من الوثيقة 22): قيد استلام الدفعة production_customer_advance (يرحّله محرك السند مرة واحدة — LA-1)، قيد التسوية production_advance_settlement عند الفوترة، قيد الاسترداد production_advance_refund (D-35)، عائلة قيود سياسة التجربة الأربعة production_trial_absorb/_defer/_apply/_writeoff وحسابا «تكلفة تجارب مؤجلة» و«مصروف R&D» (وفق الملحق 35 §3 — وتُسحب عبارة «لا عائلة قيود جديدة» السابقة لأنها كانت خاطئة)، وقيد إخلاء خامة العميل المشتراة بالنيابة عند الاستلام production_toll_material_cogs (مدين تكلفة خامات toll / دائن الإنتاج التحت تشغيل). سدّ فجوة U-1: الخامة المشتراة بالنيابة ملك المصنع حتى الفوترة (مخزون ذاتي محجوز للملف، وأوامر شراؤها موسومة)، والفاتورة النهائية تحمل سطر تمرير الخامة بالتكلفة (+ نسبة مناولة تعاقدية) بجوار أجر التشغيل — فتتسوّى الدفعة (المحسوبة كنسبة من تكلفة الخامة الذاتية، D-25) على فاتورة تحتوي الخامة التي موّلتها: حساب النقدية يُقفل. أثناء التشغيل يرحّل أمر التجربة العائلات الخمس المعتادة دون تغيير.

ثالثاً — إعادة جدولة خارطة الطريق (على الوثيقة 23)

التسلسل المعدَّل: 0 ← 1 ← 2 ← 2.5 ← 3 ← 4 ← 5 ← 6 بأحجام (S · L · L · M · M · L · M · M–L).

المرحلةكانتتصبحسبب النقل
0 — التصليبSS (نطاق +)تُضاف المصادقة على السجل المرجعي D-23..D-36 + السؤال OQ-9 داخل مسار ملاحق المواصفة نفسه (نفس الأسبوع ونفس البوابة الصلبة) + دور R&D وفضاءا الصلاحيات (production.estimates.* / production.case.*) + أنواع مستندات الاعتماد + lifecycle=Prospect. قرارات وصلاحيات فقط — لا بناء
1 — البيانات الأساسية + التنفيذ الحقيقيLL (الحافة العليا)يُضاف: قيمة order_type=Trial + حارس استثناء D-32؛ عمودا sales_order_id/case_id؛ الأمانة مسحوبة من المرحلة 6 (is_consignment + owner_partner_id + فرع الصرف التتبّعي + مستندا استلام/إرجاع خامة العميل) — مصنع toll لا يشغّل أمراً واحداً حقيقياً بدونها؛ قلب افتراضي الجودة OnHold للدواء؛ ختم batch_no. ضبط المخاطرة: تقسيم 1أ/1ب المنشور يبقى سارياً، وشريحة الأمانة تنزلق إلى 1ب فقط — لا تعود للمرحلة 6 أبداً
2 — المسارات والتأكيدات وتكلفة التحويلLL (نطاق +)بوابة الدفعة تتقدّم إلى هنا (لم يكن لها موعد أصلاً): mfg_order_cases ونواة آلة الملف + mfg_customer_advances (بمفتاح الملف) + الحساب والمفتاح + ربط سند القبض وفق LA-1 + شرط الإصدار + نقل رفع طلبات الشراء خلف البوابة + حدث CaseDepositSatisfied؛ وفرع حجز رصيد الأمانة (نواة الحجز نفسها تبقى مرحلة 1 دون تغيير)؛ + mfg_order_stage_gates (بمفتاح الملف) ولوحة المسار MVP (قرار D-28). البوابة تحتاج قضبان الإصدار من المرحلة 1 — هذا أبكر موضع صحيح
2.5 — الواجهة التجارية (جديدة)Mmfg_cost_estimates + mfg_cost_estimate_versions + محرك التقدير بنمط المحاكاة فقط (يسحب نواة RollUpStandardCost مبكراً من المرحلة 3 — بلا معايير ولا انحرافات ولا قيود) + mfg_trial_batches وتدفق التقييم مع دلو التقييم ومستند تسليم العينة + إجراءات المبيعات الثلاثة + ورش المراحل الحرجة للبوابات تُسلَّم هنا لا في المرحلة 5 (تعديل D-28): ورشة التجربة ومراجعتها، ورشة القائمة، ورشة التخطيط، مكتب الدفعة، مكتب الحجز + شاشات الدورة الأولى — المرحلة 5 تُكمل وتصقل فقط. لماذا بعد المرحلة 2 لا قبلها: تسعير العمالة والأعباء يحتاج معدلات مراكز العمل وcost_driver اللذين يصلان في المرحلة 2 — وقبل التخطيط لأنها لا تحتاج MRP
3 — محرك التكاليفMM (أخف قليلاً)النطاق كما هو (معايير، 7 انحرافات، تسوية)؛ نواة التجميع تصل جاهزة من 2.5 فتُنتَج هنا صناعياً فقط. يُضاف: استبعاد أوامر Trial من معايرة التكلفة حتى نجاح التجربة + تفعيل قيود سياسة التجربة (D-23)
4 — التخطيطLLكما هي تقريباً. يُضاف: وسم أوامر شراء خامات العميل «تُفوتر على العميل» ولا تُرفع إلا بعد CaseDepositSatisfied (قاعدة U-6 — والتخطيط المحلي للملف في المرحلة 2 يطيع نفس البوابة)، وشاشة الجاهزية تنضم لمسار المراحل كورشة التخطيط. فرع toll (لا أمر شراء لمواد العميل) كان في النطاق أصلاً
5 — أرضية المصنعMMالمحرك كما هو. يُضاف: إكمال وصقل ورش المراحل التي بدأت في 2.5 + شاشات مراقبة لكل عملية. شاشات المشغّلين كما هي. اعتماد على OQ-9: إن قصد العميل بـ«واجهات لكل مرحلة إنتاجية» مراحل التصنيع الفيزيائية (خلط/تحبيب/كبس/تعبئة) فالجواب هنا: ورش لكل عملية مسار فوق عمليات التوجيه
6 — الخطافات العميقةLM–L (تنكمش)قلب toll/الأمانة خرج منها إلى المرحلتين 1–2. يبقى: التشغيلة أول-درجة + الأنساب + FEFO (الفجوة A4/قرار D-14 — مرشَّح سحب لإصدار إطلاق الدواء، الملحق 33)، بوابات الجودة الكاملة، تغذية أجر القطعة، تجميع سجل التشغيلة BMR، العينات المحتجزة، بوابة موازنة العائد

ما يبقى دون تغيير: القرارات D-01..D-22 كلها سارية؛ هوية الموديول (توسيع Modules/Production ببادئة mfg_*آلة حالات أمر الإنتاج وهجرتها دون أي مساس فعلاً — المراحل التجارية تعيش على mfg_order_cases؛ عائلات القيود الخمس وامتصاص نهاية الشهر؛ قانون الاعتمادية عدا التعديل الوحيد المعتمد LA-1/D-33؛ تصاميم محركات MRP/CRP/الانحرافات؛ شاشات أرضية المصنع؛ وانضباط البوابة الصلبة للمرحلة 0.

رابعاً — السجل المرجعي الوحيد للقرارات (D-23..D-36 + OQ-9)

ترقيم واحد يُنهي تصادم المخططات الثلاثة: هذا الجدول هو سجل القرارات المرجعي؛ الملحقان 30 §6 و31 §4 يشيران إليه (قرار «نطاق دورة ما قبل البيع» الذي كان «D-23» في الملحق 31 صار D-31 هنا)؛ ترقيم المتطلبات: R-01..R-21 = مخطط الملحق 30 حصراً، ومتطلبات الملحق 31 المشتقة أُعيد ترقيمها IR-1..IR-9.

الرقمالقرار / الخطرالتوصية
D-23سياسة تكلفة التجربة — مَن يدفع ثمن الباتش التجريبي وإعادته عند الفشل؟ (OQ-1/OQ-3)إعداد لكل ملف: trial_cost_policy ∈ {Bill, Absorb, CreditOnWin} (وفق الملحق 35 §1.1 — يُسحب الاقتراح الثنائي السابق {Customer, Absorbed}) بعائلة قيوده في البند ثانياً؛ تكلفة الفاشلة تتبع نفس السياسة؛ تكرار الفشل N مرات يرفع علامة مراجعة
D-24نمذجة التجربةاعتماد order_type=Trial كقيمة أولى-درجة (يحسم تردد الملحق 31 بين القيمة والعلم)
D-25نسبة الدفعة المقدمة (OQ-2)إعداد production.default_advance_percent + تجاوز لكل ملف؛ أساس النسخة الأولى = نسبة من تكلفة الخامات المشتراة لحساب العميل (وتحملها الفاتورة الآن كسطر تمرير — U-1)؛ منع صلب عند الإصدار وعند رفع طلبات الشراء معاً؛ التنازل بصلاحية production.case.deposit_waive فقط ومُسجَّل
D-26قائمة مبدئية لمنتج لم يُسجَّل بعدProduct.lifecycle=Prospect — تحفظ سلامة المفتاح وتترقّى نظيفاً عند الفوز
D-27توقيت toll/الأمانةالسحب المبكر مُعتمَد — شرط D-07 تحقق: عميل الإطلاق مصنع تصنيع للغير
D-28نطاق شاشات المراحل (يضم تفصيل صلاحيات OQ-7)لوحة مسار MVP في المرحلة 2؛ الورش الحرجة للبوابات في 2.5؛ الإكمال والصقل في 5؛ شرائح صلاحية لكل مرحلة والمشرف يمتد فوق الكل
D-29ملكية مستندي العرض والدفعةإعادة الاستخدام مُتحقَّقة: SalesQuotation للمستند التجاري وReceiptVoucher للنقدية؛ جداول mfg_* تحمل بيانات التقدير والملف والبوابة فقط
D-30ملكية خردة مواد العميل (OQ-4)لا قيد خردة ذاتي أبداً — ملك العميل في عُهدة: حركة تتبّع منفصلة، تسوية/إرجاع/فوترة حسب العقد، وتدخل في تسوية إقفال الملف (M-12)
D-31نطاق دورة التسعير ما قبل البيع (كان «D-23» مؤقتاً في الملحق 31)يُبنى كاملاً (تصميم الملحق 34) — هو مدخل هذا العميل؛ بدونه الدورة الأولى غير مخدومة
D-32استثناء تجميد القائمة المبدئية للتجربة (تعديل صريح على صف 2 من الوثيقة 20)يُعتمد الاستثناء الضيق: أوامر Trial وحدها خلف الإعداد production.trial_allow_draft_bom؛ الأوامر العادية أبداً — بدونه تدفق التجربة المعتمد نفسه مستحيل
D-33قضيب ترحيل الدفعة — تعديل القانون LA-1 (على القسم 5.4 من الوثيقة 22)يُعتمد قضيب السند: قبض الدفعة عبر ApproveReceiptVoucher وقيد السند نفسه هو الترحيل الوحيد (لا ازدواج)؛ كل ترحيل إنتاجي آخر يبقى حصرياً عبر CreateJournalEntry
D-34سياسة صلاحية العرض (OQ-5)production.quote_validity_days (افتراضي 30)؛ العرض المنتهي يمنع الفوز/التحويل حتى إعادة التسعير
D-35استرداد/مصادرة الدفعة عند الإلغاء (OQ-6)تعاقدياً؛ الافتراضي = تُطبَّق على التكلفة المتكبَّدة والباقي قابل للرد (production_advance_refund)
D-36علاقة كمية التجربة بالكمية الكاملة والتصحيح (OQ-8)كمية التجربة مستقلة؛ تصحيح إلزامي من actual_unit_cost قبل التحويل
OQ-9ما معنى «واجهات لكل مرحلة إنتاجية»؟ مراحل الملف التجارية (قراءة الملحق 35) أم مراحل التصنيع الفيزيائية (خلط/تحبيب/كبس/تعبئة — مرجَّحة دوائياً)؟يُسأل العميل عند بوابة المرحلة 0. القراءتان مخدومتان: ورش الملف في 2–2.5؛ وإن تأكدت قراءة مراحل التصنيع فورش لكل عملية مسار مع المرحلة 5 + شاشة مراقبة قراءة-فقط مبكرة في 2.5
خطرانزلاق المرحلة 1 بعد سحب الأمانة إليهاتقسيم 1أ/1ب المنشور يبقى خطة التراجع المتفق عليها؛ شريحة الأمانة تنزلق إلى 1ب فقط
خطرانحراف التقدير عن الفعلي (تسعير على قائمة مبدئية وأسعار تقديرية)تصحيح إلزامي من actual_unit_cost للتجربة قبل التحويل (D-36)؛ إنفاذ valid_until (D-34)
خطرمحاسبة الدفعة المقدمة (التزام لا إيراد ولا سداد مدينين)اعتماد المحاسب على حساب الدفعات وقيد التسوية وسطور تمرير الخامة (U-1) قبل خروج المرحلة 2؛ الاسترداد وفق D-35
خطرضغط تجاوز بوابة الدفعة لأسباب تجاريةWaived هو المسار الوحيد — بصلاحية، مُسجَّل، ومُتقرَّر عنه؛ لا مسار تجاوز صامت في الكود (وبوابة طلبات الشراء تطيع نفس التنازل)

الخلاصة