من تعريف أنواع الإجازات لحد خصم الرصيد — شرح كامل للوجيك
المكان: /hr/leave-types — أول حاجة لازم تتعمل
كل نوع إجازة ليه قواعد مختلفة. مثال:
| النوع | الكود | أيام/سنة | مدفوعة | ترحيل | حد الترحيل | جنس | حد خدمة |
|---|---|---|---|---|---|---|---|
| إجازة سنوية | AL | 30 | نعم ✅ | نعم ✅ | 5 أيام | الكل | 0 شهر |
| إجازة مرضية | SL | 15 | نعم ✅ | لا ❌ | 0 | الكل | 0 شهر |
| إجازة أمومة | ML | 70 | نعم ✅ | لا ❌ | 0 | أنثى فقط | 0 شهر |
| إجازة أبوة | PL | 10 | نعم ✅ | لا ❌ | 0 | ذكر فقط | 0 شهر |
| إجازة بدون راتب | UL | 30 | لا ❌ | لا ❌ | 0 | الكل | 3 شهور |
المكان: /hr/leave-balances ← زر "تهيئة السنة"
في بداية كل سنة مالية، لازم تهيئ الأرصدة لكل الموظفين.
عملت تهيئة لسنة 2026 وعندك 20 موظف نشط و 2 نوع إجازة:
20 موظف × 2 نوع = 40 رصيد تم إنشاؤه Response: "Initialized 40 leave balances for fiscal year 2026."
المكان: /hr/leave-requests ← زر "طلب جديد"
hrm.leave-requests.approve)| المرحلة | مين بيوافق | إيه اللي بيحصل |
|---|---|---|
| معلق | المدير المباشر | المدير يضغط ✅ موافقة ← الحالة تتغير لـ "موافقة المدير" ← تروح للمستوى التاني |
| موافقة المدير | HR (أي شخص بالصلاحية) | HR يضغط ✅ موافقة ← الحالة تتغير لـ "معتمد" ← الرصيد يتخصم تلقائي |
| أو في أي مرحلة: | ||
| مرفوض | المدير أو HR | يضغط ❌ رفض + يكتب السبب ← الطلب يترفض ← مفيش خصم من الرصيد |
used_days بعدد أيام الطلبالمكان: /hr/leave-balances ← زر "تعديل" على كل صف
+3 أو -2ملاحظة: الترحيل حالياً يدوي — النظام مش بيعمله تلقائي.
is_carry_over_allowed = true)min(remaining_days, max_carry_over_days)| نوع الإجازة | التأثير على الراتب |
|---|---|
| إجازة مدفوعة (is_paid = true) | الموظف ياخد راتبه كامل — مفيش خصم |
| إجازة بدون راتب (is_paid = false) | بيتخصم من الراتب حسب عدد الأيام — خصم = (راتب يومي × أيام الإجازة) |
| إجازة بدون رصيد (تجاوز الحد) | حسب سياسة الشركة — ممكن يتحول لإجازة بدون راتب |
لما تعمل حساب الرواتب لشهر معين، النظام بيحسب:
لما موظف يستقيل أو يُنهى خدمته:
رصيد الأيام المتبقية × الراتب اليومي