اليوم الأول: إضافة واجهة إقفال الأوفرهيد (Overhead Settle UI)
إضافة تبويب فرعي أو زر في واجهة التكاليف المعيارية (Standard Costs) يسمى "إقفال الأوفرهيد الشهري"، يسمح باختيار الفترة واستدعاء Endpoint overhead/settle بالباك إند.
تحليل دقيق ومباشر لملفات الأكواد الفعلية في المستودعات الحالية للباك إند والفرونت إند، وتحديث التحليلات السابقة بناءً على التعديلات الأخيرة المنفذة على أرض الواقع.
تم فحص الكود البرمجي للمشروع في الفرونت إند والباك إند، وهذا هو الهيكل الحقيقي للملفات المنظمة لموديول التصنيع:
| المكون / الموديل الفرعي | موقعه في الكود (Source Code Files) | وظيفتها التشغيلية الحقيقية | الحالة |
|---|---|---|---|
| قمرة تحكم الأمر (Order Cockpit) |
moon-erp/src/app/features/production/order-cockpitOrderCockpitController.php
|
صفحة تفاصيل متكاملة لأمر الإنتاج تحتوي على تبويبات (Overview, Readiness, Operations, Costing, Journal, Batches, Pegging) وتعمل تحت المسار /factory/orders/:id. |
مكتملة ومترابطة ✓ |
| إعداد وتأكيد أمر الإنتاج |
moon-erp/src/app/features/production/ordersProductionOrderController.php
|
إدارة قائمة الأوامر، الحالات، الحذف والتعديل، الحجز المسبق للمواد، وتوزيع القيود المحاسبية. | مكتملة ✓ |
| منتقي الدفعات التفاعلي |
production-orders.component.html (سطر 632-638)IssueMaterials.php (الباك إند)
|
استدعاء الدفعات المتاحة للمنتج تحت مخزن الإنتاج وعرض الكميات والتواريخ مع آلية التخصيص التلقائي FEFO. | مكتملة ✓ |
| تصفية الـ BOM الذكي |
production-orders.component.ts (سطر 1476-1490)onProductSelected()
|
تصفية البومات المتاحة بالواجهة تلقائياً بمجرد اختيار صنف المنتج، وتعيين البوم الافتراضي. | مكتملة ✓ |
| شاشة تابلت صالة الإنتاج |
moon-erp/src/app/features/production/terminalShopFloorController.php
|
لوحة تشغيل مخصصة للمصنع تمكن العمال من بدء العمليات، تتبع تقدم المراحل، والـ Backflushing. | مكتملة ✓ |
| التشغيل لدى الغير (Toll) |
ProductionOrder.php (isToll s. 131)ProductionTollTest.php
|
معاملة المواد المملوكة للعملاء (Customer-owned materials) وتخطي القيود المالية المعتادة لتقليل WIP. | مكتملة ومختبرة ✓ |
أظهر فحص الكود المباشر أن التحليلات السابقة اعتمدت على ملفات قديمة غير مواكبة لأحدث التعديلات. هذه الميزات كانت توصف بمشاكل ولكنها مفعّلة حالياً وتعمل بنجاح تام:
كان يُزعم سابقاً أنها تُحسب فقط من المعروض في الصفحة (25 صفاً)، ولكن الكود يثبت تواصل الواجهة المباشر مع API الباك إند عبر orderService.statusCounts() (سطر 419 في production-orders.component.ts)، مما يعني استرجاع الأرقام الحقيقية لكامل الشركة من قاعدة البيانات.
تأكدنا من وجود مسار مخصص مفعّل بالكامل /factory/orders/:id، والواجهة الأمامية تم إعادة ترقيتها لتوفر تنقلاً سلساً بتبويبات وتفاصيل كاملة وليس مجرد نافذة منبثقة معطلة الروابط.
الواجهة تفلتر البومات بناءً على اختيار الصنف تلقائياً وتملأ الحقل بالـ Default BOM دون أي احتمالية لربط صنف ببوم خاطئ.
تم استبدال الإدخال اليدوي القديم بمعرف الدفعة (Batch ID) بقائمة منسدلة تفاعلية <p-select> تعرض البيانات المخزنية المتاحة وتاريخ الصلاحية آلياً مع الحفظ التلقائي بنظام FEFO.
هذه هي العيوب والفرص الفعلية المتواجدة في المجلد الحالي والتي تحتاج إلى ضبط ومعالجة:
| مستوى الخطورة | العيب البرمجي الفعلي | أثره على عمل النظام | الملفات المتأثرة (كود) | التوصية / الحل المطلوب |
|---|---|---|---|---|
| حرجة تشغيلياً | غياب واجهة تسوية الأوفرهيد (No Overhead Settle UI) | الباك إند يوفر أكشن متكامل SettleAppliedOverhead.php لتسوية فروق الأوفرهيد المعياري والفعلي وEndpoint overhead/settle، ولكن لا توجد أي واجهة مستخدم (UI Button/Panel) في الفرونت إند لاستدعائه، مما يعطل دورة التكاليف الشهرية. |
standard-costs.component.htmlOverheadController.php
|
إضافة زر وخيار اختيار الفترة (Period YYYY-MM) في شاشة تكاليف الإنتاج بالواجهة لإتاحة إغلاق الشهر وتوليد القيود المحاسبية للتسوية. |
| مخالفة معايير Clean Code | أعمدة معطلة في قاعدة البيانات (Dead DB Columns) | الأعمدة order_type و production_type مدعومة كـ fillable في موديل ProductionOrder.php ولكنها غير خاضعة للـ validation في الـ Requests ولا توجد لها أي واجهات لتعديلها أو استخدام حقيقي بالمنطق المحاسبي. |
StoreProductionOrderRequest.phpUpdateProductionOrderRequest.php
|
إزالة هذه الحقول تماماً من الجداول للتنظيف، أو تفعيلها كأعمدة تدعم أنواع الطلبات الفرعية (أمر معياري، أمر تجريبي، إلخ) مع التحقق من صحتها بالـ Validation. |
| فجوة محاسبية | منطق غير مكتمل لأوامر إعادة التشغيل (Rework) | يسجل الموديل rework_quantity في جدول التفاصيل لتأكيد العمليات mfg_confirmation_details، ولكن لا يوجد أي معالجة تكلفية أو مسار توجيهي (Rework Routing) لفصل الأصناف المعادة عن الصالحة في شجرة التكلفة. |
MfgConfirmationDetail.phpConfirmOperation.php
|
تأسيس منطق لفصل كميات إعادة التشغيل في أمر إنتاج مستقل تلقائياً وحساب تكلفته كـ "تلف طبيعي أو غير طبيعي" بدلاً من دمجه في نفس الحساب التكلفي للأمر الأب. |
| ميزة مفقودة | غياب أداة تسوية جرد WIP | المخزون تحت التشغيل (WIP) في صالة الإنتاج قد يتعرض للتلف أو الفقد الفعلي، ولا توجد آلية لجرد WIP المادي وتسويته حسابياً لمطابقة الدفتري. |
Production Modules app/Actions
|
بناء أكشن ReconcileWipInventory.php يقارن رصيد WIP الدفتري بالجرد الفعلي المدخل، ويرحل قيد الفروقات لحساب الخسائر مباشرة. |
تقييم واقعي لكيفية معالجة Moon ERP الحالي للمراحل مقارنة بالمعايير العالمية:
| الخاصية / المرحلة | أفضل الممارسات العالمية (SAP / Odoo) | الوضع الفعلي في Moon ERP | التقييم الفني |
|---|---|---|---|
| تخطيط MRP الهرمي | تحويل مقترحات MRP بترتيب مستويات الـ BOM الهرمية لمنع الصرف بالسالب وضمان توفر المكونات نصف المصنعة (Low-Level Coding). | مطبق بالكامل محاسبياً! الباك إند يقوم بتحويل الأوامر بترتيب هرمي آلي بناءً على عمق الـ BOM COALESCE(bom_level, -1) DESC في دالة convertAll(). |
ممتاز ✓ مطبق بالكامل |
| تتبع الدفعات وصرف الخامات | التحقق التفاعلي من الدفعة، وإعطاء الأولوية تلقائياً للدفعة الأقرب لانتهاء الصلاحية بنظام FEFO. | مطبق بنجاح! يتم تقديم قائمة بالدفعات الصالحة، وفي حال عدم التخصيص اليدوي، يطبق الباك إند في أكشن IssueMaterials استراتيجية FEFO آلية. |
ممتاز ✓ مطبق بالكامل |
| التشغيل لدى الغير (Toll) | تخصيص ملكية المواد لتفادي تحميل حسابات WIP بتكلفة المخزون المملوك للعميل، واقتصار الحساب على تكلفة التشغيل كقيد دائن للعميل. | مطبق بالكامل ومختبر في ProductionTollTest.php، حيث يعامل كود الباك إند المادة المملوكة للزبون عبر تجاوز القيود المحاسبية. |
ممتاز ✓ مطبق بالكامل |
| تسوية الأوفرهيد (Overhead) | شاشة دورية لإقفال التكاليف غير المباشرة المطبقة (Applied Overhead) ومقارنتها بالفعلي وخط الانحرافات. | المنطق جاهز كودياً في الباك إند بالكامل عبر SettleAppliedOverhead، ولكن ينقصه محفز التشغيل (Trigger UI) بالفرونت إند. |
ناقص شاشة الفرونت إند |
مراجعة سريعة لمدى مطابقة كود موديول التصنيع الحالي لمتطلبات المحاسبة الصناعية:
مكتمل بنسبة 95%؛ حيث تتوفر جداول mfg_variance_records ويقوم أكشن ComputeOrderVariances.php باحتساب الانحراف المادي، العمالي، والأوفرهيد وترحيل قيود الفروقات بدقة متناهية.
مطبق بالكامل؛ حيث يمكن للمحاسب تنفيذ عملية Roll-up وتحديث تكلفة الصنف بناءً على مكوناته من خلال ملف الباك إند RollUpStandardCost.php.
مكتمل ومحكم محاسبياً لتفادي خلط تكاليف خامات المنشأة بخامات العملاء في عقود التشغيل لدى الغير.
معد محاسبياً في أكشن إغلاق أوامر الإنتاج، لكن الفجوة الحقيقية المتبقية هي عدم إمكانية تعديل الجرد الفعلي للمواد تحت التشغيل بالورش.
بناءً على هذا التدقيق الفعلي للأكواد، يمكن سد كافة الفجوات بنجاح خلال **3 أيام عمل فقط** باتباع الخطة التالية:
إضافة تبويب فرعي أو زر في واجهة التكاليف المعيارية (Standard Costs) يسمى "إقفال الأوفرهيد الشهري"، يسمح باختيار الفترة واستدعاء Endpoint overhead/settle بالباك إند.
إجراء Migration لإزالة أو تفعيل حقول order_type و production_type مع إضافة Validation Rules لها في ملفات طلبات الأوامر لتجنب وجود أكواد ميتة.
إنشاء واجهة بسيطة في صالة التشغيل تمكن محاسب التكاليف من إدخال الجرد الفعلي لـ WIP، ومقارنته بالرصيد الدفتري لتوليد قيد تسوية خسائر التبديد أو التلف.