🏭

ملحق: تصميم دورة الإنتاج بالأوردر بالبوابات (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).