طبقة "المال" التي تترجم كل عمليات التصنيع إلى أرقام مالية وتكشف المشكلات قبل تفاقمها. تتكوّن من أربعة مكوّنات: طريقة التكلفة، عناصر التكلفة، مراكز التكلفة، وتحليل الانحرافات. وأثمن مخرجاتها هو Variance Analysis الذي يحوّل الفروق المالية إلى مشكلات محدّدة لها مالك مسؤول. تَرِث هذه الطبقة كل القواعد العامة من ملف المبادئ: كل حدث فعلي يُولّد قيداً محاسبياً، والتهيئة تسبق الكود (لا تخصيص مبرمَج لمصنع بعينه).
قرار استراتيجي حول كيفية تقييم المخزون والإنتاج، يُحدَّد مرة واحدة ويصعب تغييره، وهو قابل للتهيئة لكل صنف على حدة عبر الحقل Item.costing_method. النظام مُلزَم بدعم طرق مختلطة: معيارية للمنتجات النهائية (لإتاحة الانحرافات وتقييم مخزون مستقر)، ومتوسط متحرك للمواد الخام متقلبة الأسعار.
| الطريقة (Enum) | الفلسفة | تناسب |
|---|---|---|
Standard | تكلفة معيارية مُسبقة؛ الفرق بين الفعلي والمعياري = انحراف | الإنتاج الكمّي المستقر |
Actual | تكلفة فعلية تُحسب لكل أمر إنتاج | ورش الأوامر الخاصة |
Average | متوسط تكلفة متحرّك | الأسعار المتقلبة |
FIFO | صرف أقدم دفعة أولاً | منتجات لها صلاحية |
المعادلات الأساسية:
Average: new_avg = (existing_qty×old_cost + new_qty×new_cost) / total_qtyFIFO: issue at oldest batch prices, in orderكيان بناء التكلفة المعيارية Standard_Cost يحمل: std_material_cost، std_labor_cost، std_overhead_cost، std_total_cost، last_updated، update_frequency. مثال الميلامين: المسحوق (سعر متقلب) → Average، والأطباق → Standard
إجمالي تكلفة المنتج = ثلاثة عناصر، لكل منها مصدره وحسابه: 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_rate | Debit WIP / Credit Labor Applied |
| أعباء صناعية (Manufacturing Overhead) | overhead_rate = total_annual_overhead / total_annual_cost_driver | Debit WIP / Credit MOH Applied (عند التأكيد) |
قاعدة حاسمة لتصنيف العمالة: العمالة المباشرة هي فقط من يتغيّر أجرها مع حجم الإنتاج. الموظف ذو الراتب الثابت (ولو كان على خط الإنتاج) يُحسب ضمن الأعباء. الاختبار: هل يتغيّر الأجر مع الإنتاج؟ نعم → مباشرة، لا → أعباء.
محرّك الأعباء cost_driver ∈ { LaborHours, MachineHours, DirectMaterialCost, UnitsProduced }. أنواع الأعباء: متغيّرة (كهرباء، مستهلكات)، ثابتة (إيجار، إهلاك، رواتب)، شبه متغيّرة (صيانة). في نهاية الشهر: مقارنة الأعباء المُحمّلة بالفعلية → فرق زائد/ناقص التحميل → قائمة الأرباح والخسائر.
وحدة محاسبية تُراكم تكاليف جزء من المصنع، فتُمكّن من قول "تكلفة الكبس 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%
المخرج الأهم. 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 | إنفاق الأعباء المتغيرة VOSV | actual_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 | المبيعات/الإدارة |
PieceRate لا ينطبق LRV/LEV التقليديان (العامل البطيء يضر نفسه)؛ ينتقل الانحراف إلى الآلة/الأعباء.FOVV حرج عندما تكون التكاليف الثابتة كبيرة: انخفاض الإنتاج يوزّع الثابت على وحدات أقل → تكلفة وحدة أعلى. هذا يقود رؤية "شغّل بكامل الطاقة".حدود التسامح (Tolerance): <2% طبيعي بلا تحقيق، 2–5% مراقبة، >5% يتطلّب تحقيقاً. المنطق الشهري: لكل أمر مُقفَل تُحسب الانحرافات السبعة، وكل انحراف يتجاوز الحد يُصنَّف ويُوجَّه لمالكه، ثم يُولَّد تقرير Pareto بأكبر الأسباب.
(Closed)المنتجات المشتركة (Joint-products): التكلفة تتبع القيمة لا تُقسَّم بالتساوي. grade.cost = total_cost × (grade.qty × grade.price) / total_sale_value — فتمتص الدرجة A (الأغلى) أكبر تكلفة للوحدة.
التكلفة منسوجة داخل التنفيذ لا مرحلة دفعية لاحقة: صرف المواد، تأكيد العمالة، وتحميل الأعباء عند التأكيد، كلٌّ يُولّد قيداً مديناً لحساب WIP؛ واستلام المنتج التام يُقفل WIP إلى المنتجات التامة. في نهاية الفترة تُسوّى فروق تحميل الأعباء إلى قائمة الأرباح والخسائر وتُحسب الانحرافات السبعة لكل أمر مُقفَل.
Modules\Accounting\Actions\CreateJournalEntry: حسابات WIP، Raw Materials، Labor Applied، MOH Applied، Finished Goods، وحسابات الانحرافات وزائد/ناقص التحميل.Modules\Accounting\Models\CostCenter — يلزم التأكد من حمله للحقول type/parent_cc/budget/actual/status ومن إمكانية وسم سطور القيد JournalEntryLine بمركز التكلفة.Modules\Inventory\Models\InventoryCostLayer (يدعم Average/FIFO طبقياً) مع إضافة Standard/Actual واختيار الطريقة لكل صنف.FiscalYear/FiscalPeriod وحدثي PeriodClosed/FiscalYearClosed لتشغيل تسوية الأعباء وحساب الانحرافات شهرياً.Standard_Cost وبيانات الموازنة وحجم الإنتاج المُخطَّط لكل مركز مطلوبة لحساب FOVV وانحرافات المركز.