هذا هو التصميم التنفيذي الكامل للدورة الثانية لدى العميل (التصنيع حسب الطلب للغير): حالة عميل واحدة تمشي عبر أربع عشرة محطة محكومة ببوابات — من أمر البيع، إلى التجربة المُكلّفة فعلياً، إلى تثبيت قائمة التركيب، إلى فحص التخطيط، إلى بوابة الدفعة المقدمة المانعة، إلى الحجز والتصنيع وفحص الجودة والاستلام في مخزن التام وحتى التسليم وتسوية الدفعة على الفاتورة النهائية. التصميم متّسق بالكامل مع الخرائط والعقود المنشورة (الأقسام 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 المؤقتة).
mfg_order_casesmfg_order_cases وليس أعمدة على أمر الإنتاجكان الخياران: إضافة أعمدة القضية والدفعة على production_orders، أو كيان مظلّة رفيع يعلو أوامر الإنتاج. التوصية الحاسمة: كيان المظلّة — للأسباب التالية:
order_type=Trial مع حلقات إعادة التجربة، والأمر الرئيسي، وربما دفعات مجزّأة — صفّ أمر واحد لا يتسع لدورة حياة تمتد على أوامر متعددة.Planned → Released → InProcess → Completed → Closed) تبقى كما اعتُمدت في المرحلة الأولى دون أي توسيع؛ آلة القضية طبقة تنسيق تجارية فوقها.mfg_customer_advances بالقضية طبيعياً.الامتداد على 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.open | OpenProductionCase ← ProductionCaseOpened |
SalesOrder ← TrialRequested | تسجيل كمية التجربة وسياسة تكلفتها trial_cost_policy | المبيعات · production.case.trial_request | RequestCaseTrial ← CaseTrialRequested |
مسار تخطّي التجربة ← BomFinalized | منتج مكرر له قائمة Active + تنازل مكتوب من العميل | المشرف · production.case.trial_skip | SkipCaseTrial ← CaseTrialSkipped |
TrialRequested ← TrialInProduction | وجود قائمة تركيب؛ استثناء محكوم — مُصادق عليه قراراً D-32 (تعديل صريح على صف 2 من الخريطة): أوامر Trial فقط يجوز لها تجميد قائمة Engineering/Draft (إعداد production.trial_allow_draft_bom) — الأوامر العادية أبداً | R&D · production.case.trial_create | CreateTrialOrder: أمر إنتاج حقيقي بوسم order_type=Trial بكمية صغيرة، يمر بقضبان الإصدار→الصرف→التأكيد→الاستلام→الإقفال كاملة بتكلفة حقيقية، ومخرَجه يُستلم في دلو التقييم (مخزن-كحالة غير قابل للبيع) ← TrialOrderCreated |
TrialInProduction ← TrialApproved | إقفال أمر التجربة + وجود مستند تسليم العينة (صرف تتبّعي من دلو التقييم يُختم على mfg_trial_batches — سدّ فجوة U-3: العينة لا تصل العميل بلا مستند) + توقيع اعتماد العميل (مرفق إلزامي) + result=Passed؛ الفشل يعيد إلى طلب التجربة أو الإلغاء | المبيعات · production.case.trial_decide | RecordTrialDecision ← CaseTrialDecided |
TrialApproved ← BomFinalized | ترقية القائمة إلى Production/Active — نسخة نشطة واحدة لكل نافذة سريان، وتُختم active_bom_id على القضية | R&D · production.case.bom_finalize | PromoteCaseBom ← CaseBomFinalized |
BomFinalized ← PlanningChecked | تشغيل MRP لأمر واحد: تفجير القائمة × الكمية، إجمالي←صافي، فصل المواد المملوكة عن مواد العميل، نواقص المملوكة ← مسوّدات طلبات شراء تُجهَّز ولا تُرفع (الدفعة هي ما يموّل هذا الشراء — تُرفع عند بوابة الدفعة)، وحفظ حكم الجاهزية | التخطيط · production.case.plan | RunCasePlanning ← CasePlanningChecked |
PlanningChecked ← DepositGate | آلي: احتساب المطلوب = نسبة الدفعة × الوعاء (OwnMaterialCost أو OrderValue)؛ إن لم يلزم شراء بالنيابة ← NotRequired وتمرّ تلقائياً | النظام | انتقال آلي |
DepositGate ← MaterialsReserved | بوابة مانعة صلبة: مجموع سندات القبض المعتمدة المخصصة للقضية (reference_type='mfg_order_case') ≥ المطلوب (قيد السند نفسه هو ترحيل الدفعة — LA-1/D-33)، أو إعفاء بصلاحية مرتفعة؛ وعند استيفائها تُرفع الآن مسوّدات طلبات الشراء بالنيابة الموسومة «تُحمَّل على العميل» — الشراء بالنيابة لا يسبق الدفعة أبداً (قاعدة العميل السببية U-6؛ تصحيح لموضعها السابق عند فحص التخطيط)؛ ثم يعمل ReleaseProductionOrder — وقد أُضيفت البوابة شرطاً مسبقاً فيه — فيجمّد اللقطة ويحجز كأثره الجانبي المعتمد عبر StockService::reserve() مربوطاً بالأمر: المملوك من المخزون الذاتي ومواد العميل من مخزن الأمانة | الحسابات تسجّل · production.case.deposit_record / الإعفاء .deposit_waive / الإصدار .release | AllocateCaseAdvance ← CaseDepositSatisfied ثم ReleaseProductionOrder ← ProductionOrderReleased + CaseMaterialsReserved |
MaterialsReserved ← InProduction | آلي عند أول حدث MaterialIssued؛ مواد العميل تُستلم مسبقاً في مخزن الأمانة بمستند استلام مخزني حقيقي (ReceiveCustomerMaterial ← فرع تتبّعي بلا تقييم في ApproveReceipt — مستند الإدخال الذي سدّ فجوة U-2؛ لا مساس مباشراً بالأرصدة أبداً): حركة تتبّع فقط، لا تدخل تكلفتنا إطلاقاً، لكن أرقام لوطاتها تُكتب في نَسَب الباتش؛ والمتبقي غير المستخدم يعود عند الإقفال بمستند الصرف المرآتي (ReturnCustomerMaterial) + تسوية: المستلَم − المصروف − خردة الأمانة = المرتجع | المخازن تصرف والخط ينفّذ | القضبان القائمة: صرف ← تأكيد ← استلام |
InProduction ← QcRelease | آلي عند GoodsReceiptPosted بكامل الكمية؛ سطور الاستلام تهبط quality_status=OnHold (القلب الدوائي للافتراضي — الملحق 33) فيقبع التام في الحجر غير قابل للبيع | النظام | مستمع ← CaseAwaitingQc |
QcRelease ← InFgWarehouse | كل فحوصات qms_inspections للاستلام = Released؛ المرفوض يدخل حلقة عدم مطابقة | الجودة · production.case.qc_release | ReleaseCaseQc ← CaseQcReleased |
InFgWarehouse ← Delivered | إذن تسليم مؤكد + فاتورة نهائية تُنشأ للأمام عبر الإجراء الرفيع الجديد Sales\CreateServiceInvoice (سدّ فجوة U-4 — لا نداء متحكم ولا كتابة مباشرة في جداول المبيعات): فرع التشغيل = سطر أجر التحويل + سطر تمرير الخامة المشتراة بالنيابة بالتكلفة (+ نسبة مناولة تعاقدية) — سدّ فجوة U-1 والتام ملك العميل + تسوية الدفعة المقدمة عليها | المبيعات/الحسابات · production.case.deliver | InvoiceAndSettleCase ← CaseDelivered |
Delivered ← Closed | إقفال الأمر الرئيسي (ترحيل الانحرافات السبعة وتصفير WIP) واكتمال التسوية | النظام/الحسابات | آلي ← CaseClosed |
production_trial_absorb).production_trial_defer)؛ عند الفوز تُطبَّق كخصم على الفاتورة النهائية، وعند الخسارة تُشطب لمصروف البحث والتطوير.production.trial_cost_policy مع تجاوز لكل قضية؛ وأوامر Trial تُستبعد من معايرة التكلفة المعيارية وتُقرَّر منفصلة.القبض النقدي يركب 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.
Modules\Production\Events (من ProductionCaseOpened حتى CaseClosed وCaseCancelled) + حدثا الأمانة CaseConsignmentReceived/CaseConsignmentReturned تُطلق بعد إتمام المعاملة بمستمعين معصومين من التكرار — وخمسة أحداث قائمة يُعاد استخدامها (ProductionOrderReleased، MaterialIssued، ConfirmationPosted، GoodsReceiptPosted، ProductionOrderClosed) تقود التقدّم الآلي للقضية. هذا القاموس — مع أحداث التقدير الخمسة في الملحق 34 — هو قاموس الأحداث القانوني الوحيد (صادق عليه الملحق 36). قانون الاتجاه محفوظ: لا وحدة خارجية تستورد الإنتاج.production القائم: المبيعات (فتح/تجربة/قرار/تسليم)، R&D (إنشاء التجربة/تثبيت القائمة)، التخطيط (الفحص والإصدار)، الحسابات (تسجيل الدفعة، والإعفاء production.case.deposit_waive بصلاحية مرتفعة)، المخازن (استلام الأمانة والصرف)، الجودة (الإفراج)، والمشرف يعبر الكل (الافتراضي المقترح لـOQ-7). فضاء production.case.* هذا — مع production.estimates.* للدورة الأولى — هو التصنيف القانوني الوحيد للصلاحيات (صادق عليه الملحق 36).production.default_advance_percent، production.advance_basis، production.trial_cost_policy، production.trial_allow_draft_bom، production.customer_advance_account_id، production.gr_default_quality_status (للدواء: OnHold).mfg_order_cases مرقمة عبر SequenceService.order_type=Trial تنفّذه R&D بتكلفة كاملة.Production/Active وتُختم على القضية.OnHold ← إفراج الجودة ← مخزن التام.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).