تتم تهيئة هذا المكوّن على خطوتين:
- تعريف مؤشر أداء (Performance Indicator) يحسب عدد أيام العمل الفعلية للموظف.
- تعريف معادلة احتساب مكوّن (Component Calc Formula) تستخدم نتيجة هذا المؤشر وتطبّق الشرائح المطلوبة.
ثم يتم ربط هذه المعادلة بمكوّن الراتب الخاص ببدل غلاء المعيشة في تعريف نوع مكوّن الراتب.
الخطوة الأولى: إنشاء مؤشر أداء يحسب أيام العمل
نُنشئ مؤشر أداء من نوع نظام (System) ومن نوع نظامي SQL يومي (DailySQL). الاستعلام يعمل على مستوى كل يوم في جدول النظام EmpAttendanceSysLine (سجل الحضور اليومي للموظف)، ويُرجع 1 لكل يوم اعتُبر يوم عمل فعلي و0 فيما عدا ذلك.
منطق الاستعلام: إذا كان مجموع وقت المأموريات الصافي + ساعات العمل الصافية أكبر من ساعة واحدة، يُحتسب اليوم يوم عمل (1)، وإلا يُهمل (0). وبجمع هذه القيم على مدار الشهر نحصل تلقائياً على إجمالي أيام العمل الفعلية.
JSON جاهز للاستيراد لمؤشر الأداء:
{
"code": "AD006001",
"name1": "أيام العمل لبدل اعاشة",
"indicatorType": "System",
"indicatorOrder": 1,
"systemIndicator": "DailySQL",
"sqlStatment": "select case when {netMissionTime} + {netWorkingHours} > 1 then 1 else 0 end"
}
ملاحظة: الحقول بين الأقواس المعقوفة {...} تُستبدل وقت التنفيذ بالأعمدة الفعلية من جدول EmpAttendanceSysLine.
الخطوة الثانية: إنشاء معادلة احتساب المكوّن بشرائح القيم
نُنشئ معادلة احتساب مكوّن من نوع مرتبطة بمؤشر أداء (RelatedToPerformanceIndecator)، ونربطها بالمؤشر AD006001 الذي أنشأناه في الخطوة السابقة. أسلوب الحساب هو نسبة واحدة (OnePercentage) مع تطبيق دوري، حيث يقرأ النظام نتيجة المؤشر (إجمالي أيام العمل) ثم يطابقها مع شرائح المعادلة.
كل سطر في calculationLines يمثّل شريحة من شرائح أيام العمل، ويُحدِّد فيها:
rangeFrom / rangeTo: حدود الشريحة (أيام العمل).
multiplyBy: قيمة بدل غلاء المعيشة لتلك الشريحة.
divideOn: ثابت = 1.
ملاحظة: الشريحة الأخيرة (20 يوماً فأكثر) تُترك بدون rangeTo لتعمل كحد مفتوح.
JSON جاهز للاستيراد لمعادلة الاحتساب:
{
"code": "AD006",
"name1": "معادلة بدل غلاء معيشة",
"formulaType": "RelatedToPerformanceIndecator",
"calcMethod": "OnePercentage",
"performanceIndicator": "AD006001",
"applicabilityMethod": "Periodic",
"performanceFactor": "FormulaResult",
"valueMethod": "FactorOnly",
"calculationLines": [
{
"rangeFrom": 5,
"rangeTo": 9,
"multiplyBy": 100,
"divideOn": 1,
"rate": 100
},
{
"rangeFrom": 10,
"rangeTo": 19,
"multiplyBy": 250,
"divideOn": 1,
"rate": 250
},
{
"rangeFrom": 20,
"multiplyBy": 500,
"divideOn": 1,
"rate": 500
}
]
}
الخطوة الثالثة: ربط المعادلة بمكوّن الراتب
بعد استيراد المؤشر والمعادلة، نفتح تعريف نوع مكوّن الراتب الخاص ببدل غلاء المعيشة ونربطه بالمعادلة AD006. عند إصدار مسير الرواتب الشهري، سيقوم النظام تلقائياً بما يلي:
- تنفيذ مؤشر الأداء
AD006001 على كل يوم في فترة الاحتساب → ينتج عدد أيام العمل الفعلية للموظف.
- تمرير هذه القيمة إلى معادلة
AD006 التي تطابقها مع الشرائح وتُرجع المبلغ المناسب (0 / 100 / 250 / 500).
- إضافة المبلغ الناتج كقيمة لمكوّن بدل غلاء المعيشة في كشف راتب الموظف.
لماذا هذا الأسلوب؟
- مرن: أيّ تعديل مستقبلي على الشرائح أو القيم يتم من شاشة معادلة الاحتساب دون أي تغيير برمجي.
- دقيق: يعتمد على بيانات الحضور الفعلية (
EmpAttendanceSysLine) وليس على افتراضات ثابتة.
- قابل لإعادة الاستخدام: يمكن استخدام نفس مؤشر أيام العمل (
AD006001) في معادلات أخرى تتطلب نفس المنطق (بدلات أخرى مرتبطة بأيام الحضور).