إنتقل إلى المحتوى الرئيسي

طلبات الإجازة

طلبات الإجازة هي جوهر سير عمل إدارة الإجازات. يقدم الموظفون طلبات للحصول على إجازة، والتي تمر بعد ذلك بعملية اعتماد. يتتبع النظام دورة الحياة الكاملة من التقديم حتى الاعتماد أو الرفض، مع تحديثات تلقائية للرصيد في كل خطوة.


تقديم طلب إجازة

كموظف (البوابة)

  1. انتقل إلى طلبات الإجازة من الشريط الجانبي.
  2. انقر على إنشاء.
  3. حدد نوع الإجازة.
  4. أدخل تاريخ البداية وتاريخ النهاية.
  5. أدخل عدد الأيام (يدعم أنصاف الأيام، مثل 0.5، 1.5).
  6. أضف السبب اختيارياً.
  7. انقر على حفظ.

يتم تعيين حقل الموظف تلقائياً للموظف المسجّل دخوله — ولا يظهر في النموذج.

كمسؤول

يرى المسؤولون نفس النموذج، ولكن مع حقل موظف إضافي لاختيار الموظف المعني بالطلب. يمكنهم أيضاً ملء حقل ملاحظات المسؤول (مخفي عن الموظفين).

من صفحة تفاصيل الموظف

يمكن للمسؤولين إنشاء طلبات إجازة مباشرة من صفحة تفاصيل الموظف باستخدام إجراء إنشاء طلب إجازة. يتم ملء الموظف مسبقاً، ويتوفر زر نصف يوم إضافي للراحة.


قواعد التحقق

يطبق النظام عدة قواعد تحقق عند تقديم أو تعديل طلب إجازة:

التحقق من الأيام

يجب أن يتطابق عدد الأيام مع نطاق التواريخ:

  • أيام كاملة: يجب أن تساوي الأيام end_date - start_date + 1
  • أنصاف أيام: يجب أن تساوي الأيام (end_date - start_date + 1) * 0.5

يتم رفض أي قيمة أخرى مع رسالة خطأ.

كشف التداخل

يتحقق النظام من طلبات الإجازة المتداخلة لنفس الموظف. يتم حظر الطلب إذا تداخل نطاق تواريخه مع أي طلب موجود معتمد أو قيد الانتظار.

يتداخل نطاقان من التواريخ إذا: start_date_1 <= end_date_2 AND start_date_2 <= end_date_1

عند تعديل طلب موجود، يستثني فحص التداخل السجل الحالي.


حالات الطلبات

الحالةالشارةالوصف
قيد الانتظارأصفرفي انتظار الاعتماد. الرصيد محجوز في pending_days.
معتمدأخضرتمت الموافقة من قبل المدير. انتقلت الأيام من pending_days إلى used_days.
مرفوضأحمرتم الرفض من قبل المدير. تمت إزالة الأيام من pending_days.
ملغىرماديتم الإلغاء من قبل الموظف أو المسؤول. تمت استعادة الأيام.

سير عمل الاعتماد

التدفق القياسي

الموظف يقدم الطلب
|
الحالة: قيد الانتظار
(pending_days زاد)
|
المدير يراجع الطلب
|
+--- اعتماد ---> الحالة: معتمد
| (pending_days -> used_days)
| الموظف يُخطر
|
+--- رفض ------> الحالة: مرفوض
| (pending_days أُزيل)
| سبب الرفض مسجل
| الموظف يُخطر
|
+--- (الموظف) إلغاء --> الحالة: ملغى
(pending_days أُزيل)

تدفق الاعتماد التلقائي

لأنواع الإجازات المُعدة للاعتماد التلقائي (في الإعدادات > إدارة الإجازات):

الموظف يقدم الطلب
|
المراقب يكتشف إعداد الاعتماد التلقائي
|
الحالة: معتمد فوراً
(used_days زاد)
لا يتم إرسال إشعار للمدير

إعدادات سير عمل الاعتماد

انتقل إلى الإعدادات > تكوين الموارد البشرية > إدارة الإجازات لتكوين سير العمل:

الإعدادالخياراتالافتراضي
سير عمل الاعتمادمستوى واحد / متعدد المستويات / اعتماد تلقائيمستوى واحد
أنواع الإجازات المعتمدة تلقائياًتحديد أنواع إجازات محددةلا شيء

اعتماد طلب إجازة

يتطلب صلاحية approve leave requests.

  1. انتقل إلى طلبات الإجازة أو افتح من بطاقة لوحة المعلومات للطلبات المعلقة.
  2. حدد طلباً واحداً أو أكثر من الطلبات المعلقة.
  3. انقر على إجراء اعتماد.
  4. أضف ملاحظات المسؤول اختيارياً.
  5. أكد.

ما يحدث:

  • تتغير الحالة إلى معتمد
  • يتم تعيين approved_by للمستخدم الحالي
  • يتم تعيين approved_at للطابع الزمني الحالي
  • رصيد الإجازة: pending_days ينقص، used_days يزيد
  • يتلقى الموظف إشعاراً

رفض طلب إجازة

يتطلب صلاحية approve leave requests.

  1. حدد طلباً واحداً أو أكثر من الطلبات المعلقة.
  2. انقر على إجراء رفض.
  3. أدخل سبب الرفض (مطلوب).
  4. أضف ملاحظات المسؤول اختيارياً.
  5. أكد.

ما يحدث:

  • تتغير الحالة إلى مرفوض
  • يتم تسجيل rejection_reason ويكون مرئياً للموظف
  • رصيد الإجازة: pending_days ينقص
  • يتلقى الموظف إشعاراً

إلغاء طلب إجازة

يتطلب صلاحية cancel leave requests. يمكن لكل من الموظفين والمسؤولين إلغاء الطلبات.

  1. حدد طلباً معلقاً أو معتمداً.
  2. انقر على إجراء إلغاء.
  3. أكد.

ما يحدث:

  • تتغير الحالة إلى ملغى
  • إذا كان الطلب قيد الانتظار: pending_days ينقص
  • إذا كان الطلب معتمداً: used_days ينقص (تُعاد الأيام)
معلومات

يمكن إلغاء الطلبات المعلقة والمعتمدة فقط. لا يمكن إلغاء الطلبات المرفوضة والملغاة بالفعل.


عروض الجداول

تتضمن قائمة طلبات الإجازة أربعة عروض مُعدة مسبقاً:

العرضالفلتر
جميع طلبات الإجازةبدون فلتر
الطلبات المعلقةالحالة = قيد الانتظار
الطلبات المعتمدةالحالة = معتمد
الطلبات المرفوضةالحالة = مرفوض

الفلاتر المتاحة

  • الحالة — قيد الانتظار، معتمد، مرفوض، ملغى
  • تاريخ البداية — نطاق تواريخ
  • تاريخ النهاية — نطاق تواريخ
  • الأيام — نطاق رقمي

الإشعارات

يرسل النظام إشعارات بالبريد الإلكتروني في النقاط الرئيسية من دورة حياة طلب الإجازة:

عند تقديم طلب

يتم إرسال إشعار لجميع المستخدمين الذين لديهم صلاحية approve leave requests. يتضمن البريد الإلكتروني:

  • اسم الموظف وبريده الإلكتروني
  • نوع الإجازة، تواريخ البداية/النهاية، إجمالي الأيام
  • السبب (إن وُجد)
  • رابط لعرض الطلب

عند تغيير حالة الطلب

يتلقى الموظف إشعاراً عند اعتماد طلبه أو رفضه أو إلغائه. يتضمن البريد الإلكتروني:

  • نوع الإجازة، التواريخ، وإجمالي الأيام
  • الحالة الجديدة
  • سبب الرفض (إذا رُفض)
  • اسم المعتمد
  • رابط لعرض الطلب

يمكن تخصيص قوالب البريد الإلكتروني من الإعدادات > حسابات البريد الإلكتروني > القوالب.


بطاقات لوحة المعلومات

يوفر نظام إدارة الإجازات ثلاث بطاقات للوحة المعلومات:

البطاقةالنوعالوصف
طلبات الإجازة حسب الحالةرسم دائريتوزيع الطلبات عبر الحالات
طلبات الإجازة حسب النوعرسم شريطيعدد الطلبات مجمعة حسب نوع الإجازة
طلبات الإجازة المعلقةجدولأحدث 15 طلباً معلقاً يتطلب إجراءً

سير عمل الاعتماد والرفض

يتحكم سير عمل اعتماد الإجازات في كيفية انتقال طلبات الإجازة من التقديم إلى الحل. يدعم وحدة الموارد البشرية ثلاثة أوضاع لسير العمل، قابلة للتكوين من صفحة الإعدادات.


أوضاع سير العمل

قم بتكوين وضع سير العمل في الإعدادات > تكوين الموارد البشرية > إدارة الإجازات.

مستوى واحد (الافتراضي)

أبسط سير عمل. مستخدم مُعتمد واحد يراجع ويوافق أو يرفض الطلب.

الموظف -> تقديم -> المدير/الموارد البشرية يوافق أو يرفض -> منتهٍ

أي مستخدم لديه صلاحية approve leave requests يمكنه اعتماد أو رفض الطلبات.

متعدد المستويات

تمر الطلبات عبر مراحل اعتماد متعددة. مناسب للمؤسسات التي تتطلب موافقة كل من المدير المباشر والموارد البشرية.

الموظف -> تقديم -> المدير يوافق -> الموارد البشرية توافق -> منتهٍ

الاعتماد التلقائي

تتم الموافقة على جميع طلبات الإجازة تلقائياً عند التقديم. لا حاجة لمراجعة بشرية.

الموظف -> تقديم -> معتمد تلقائياً -> منتهٍ

تلميح

يمكنك الجمع بين أوضاع سير العمل وإعداد أنواع الإجازات المعتمدة تلقائياً لاعتماد أنواع محددة تلقائياً (مثل العمل من المنزل) مع طلب الاعتماد لأنواع أخرى (مثل الإجازة السنوية).


الاعتماد التلقائي لأنواع إجازات محددة

بدلاً من الاعتماد التلقائي لجميع الطلبات، يمكنك تحديد أنواع إجازات محددة تتخطى الاعتماد:

  1. اذهب إلى الإعدادات > تكوين الموارد البشرية > إدارة الإجازات.
  2. في أنواع الإجازات المعتمدة تلقائياً، حدد الأنواع (مثل العمل من المنزل، الإجازة التعويضية).
  3. احفظ.

عندما يقدم موظف طلباً لنوع إجازة معتمد تلقائياً:

  • يتم تعيين الحالة فوراً على معتمد.
  • يتم تحديث رصيد الإجازة (used_days يزيد مباشرة، بدون خطوة pending_days).
  • لا يتم إرسال إشعار للمديرين.
  • لا يتلقى الموظف إشعار اعتماد (لأنه فوري).

تتبع طلبات أنواع الإجازات غير المعتمدة تلقائياً سير عمل الاعتماد القياسي بغض النظر عن هذا الإعداد.


تحديثات الرصيد حسب الإجراء

الإجراءأيام الانتظارأيام مستخدمةأيام متاحة
تقديم طلب+أيامينقص
اعتماد طلب-أيام+أيامبدون تغيير
رفض طلب-أياميزيد
إلغاء (كان معلقاً)-أياميزيد
إلغاء (كان معتمداً)-أياميزيد

من يمكنه الاعتماد

يتم التحكم في إجراءات الاعتماد بواسطة صلاحية approve leave requests. يجب منح هذه الصلاحية صراحة لدور — وهي غير مضمنة في دور الموظف الافتراضي.

الأدوار النموذجية التي يجب أن تمتلك هذه الصلاحية:

  • مدير الموارد البشرية
  • رئيس القسم
  • قائد الفريق
  • أي دور إداري

يمكن للمسؤولين الفائقين دائماً اعتماد الطلبات (يتم التجاوز عبر Gate::before).


أسباب الرفض

عند رفض طلب إجازة، يكون سبب الرفض مطلوباً. هذا السبب:

  • يُخزَّن في سجل طلب الإجازة
  • مرئي للموظف في عرض تفاصيل طلب الإجازة الخاص به
  • مُضمَّن في إشعار تغيير الحالة بالبريد الإلكتروني

يمكن للمسؤولين أيضاً إضافة ملاحظات المسؤول أثناء الاعتماد أو الرفض. ملاحظات المسؤول مرئية فقط للمسؤولين الآخرين، وليس للموظف أبداً.


إلغاء طلب إجازة

يمكن للموظفين والمسؤولين إلغاء طلبات الإجازة التي في حالة قيد الانتظار أو معتمد. يستعيد الإلغاء أيام الإجازة المستهلكة أو المحجوزة إلى رصيد الموظف.


من يمكنه الإلغاء

يتطلب الإلغاء صلاحية cancel leave requests. افتراضياً، يمتلك الموظفون هذه الصلاحية ويمكنهم إلغاء طلباتهم الخاصة.

المستخدميمكنه إلغاء طلباتهيمكنه إلغاء طلبات الآخرين
الموظفنعم (مع الصلاحية)لا (نطاق البيانات يمنع رؤية الآخرين)
المسؤولنعمنعم (إذا كان لديه الصلاحية)
المسؤول الفائقنعمنعم (يتجاوز جميع الفحوصات)

كيفية الإلغاء

  1. انتقل إلى طلبات الإجازة.
  2. ابحث عن الطلب المراد إلغاؤه (يجب أن يكون قيد الانتظار أو معتمداً).
  3. انقر على إجراء إلغاء الإجازة (يظهر مضمناً في عمود الإجراءات).
  4. أكد الإلغاء.

ماذا يحدث عند الإلغاء

إلغاء طلب معلق

قبل: pending_days = 5, used_days = 10, available_days = 3 إلغاء طلب معلق لمدة يومين بعد: pending_days = 3, used_days = 10, available_days = 5

  • pending_days ينقص بعدد أيام الطلب
  • available_days يزيد وفقاً لذلك
  • تتغير حالة الطلب إلى ملغى

إلغاء طلب معتمد

قبل: pending_days = 3, used_days = 12, available_days = 3 إلغاء طلب معتمد لمدة يومين بعد: pending_days = 3, used_days = 10, available_days = 5

  • used_days ينقص بعدد أيام الطلب
  • available_days يزيد وفقاً لذلك
  • تتغير حالة الطلب إلى ملغى

القيود

  • الطلبات المرفوضة لا يمكن إلغاؤها (تم حلها بالفعل).
  • الطلبات الملغاة بالفعل لا يمكن إلغاؤها مرة أخرى.
  • يظهر زر الإلغاء فقط للطلبات في حالة قيد الانتظار أو معتمد.

التحقق من التداخل

يمنع وحدة الموارد البشرية الموظفين من تقديم طلبات إجازة تتداخل مع طلباتهم المعتمدة أو المعلقة الحالية. يضمن هذا تتبعاً دقيقاً للإجازات ويمنع الحجز المزدوج للإجازات.


كيف يعمل

عند إنشاء أو تحديث طلب إجازة، يتحقق النظام من تداخل نطاقات التواريخ:

  1. يستعلم عن جميع طلبات الإجازة لنفس الموظف.
  2. يقوم بالتصفية للطلبات المعتمدة والمعلقة فقط (يتم تجاهل المرفوضة والملغاة).
  3. عند التعديل، يستثني الطلب الحالي من الفحص.
  4. يختبر التداخل باستخدام الصيغة: existing_start <= new_end AND new_start <= existing_end.

إذا تم العثور على تداخل، يتم رفض الطلب مع خطأ تحقق.


أمثلة

محظور (تداخل)

الطلب الموجودالطلب الجديدالنتيجة
10-12 يناير (معتمد)11-14 ينايرمحظور — تداخل في 11-12 يناير
15-15 يناير (معلق)15-15 ينايرمحظور — نفس التاريخ بالضبط
1-31 يناير (معتمد)10-10 ينايرمحظور — مُحتوى ضمن النطاق الموجود

مسموح (بدون تداخل)

الطلب الموجودالطلب الجديدالنتيجة
10-12 يناير (معتمد)13-15 ينايرمسموح — متجاور ولكن بدون تداخل
10-12 يناير (مرفوض)10-12 ينايرمسموح — الطلبات المرفوضة يتم تجاهلها
10-12 يناير (ملغى)10-12 ينايرمسموح — الطلبات الملغاة يتم تجاهلها

التداخل عبر الأنواع

ينطبق التحقق من التداخل على جميع أنواع الإجازات. لا يمكن للموظف أن يكون لديه طلبات إجازة سنوية وإجازة مرضية متداخلة — يجب ألا تتعارض التواريخ بغض النظر عن نوع الإجازة.


ترحيل الإجازات

يسمح ترحيل الإجازات بنقل أيام الإجازة غير المستخدمة من سنة مالية إلى التالية. هذه الميزة قابلة للتكوين على المستوى العام (الإعدادات) وعلى مستوى كل نوع إجازة.


كيف يعمل الترحيل

في نهاية كل سنة مالية، يعالج النظام الترحيل لجميع الموظفين:

  1. لرصيد إجازة كل موظف من السنة المنتهية:
    • يتحقق مما إذا كان نوع الإجازة قد تم تفعيل الترحيل له.
    • يحسب الأيام غير المستخدمة: total_days - used_days - pending_days.
    • يطبق سقف الترحيل (الأقل بين الحد الأقصى لأيام الترحيل لنوع الإجازة والإعداد العام الحد الأقصى لأيام الترحيل).
    • ينشئ أو يحدث رصيد إجازة العام التالي بـ الأيام المُرحَّلة.
  2. الأيام المُرحَّلة لها تاريخ انتهاء بناءً على إعداد انتهاء صلاحية الترحيل.

التكوين

الإعدادات العامة

انتقل إلى الإعدادات > تكوين الموارد البشرية > إدارة الإجازات:

الإعدادالافتراضيالوصف
الترحيل مُفعَّلنعمالمفتاح الرئيسي لميزة الترحيل
الحد الأقصى لأيام الترحيل10السقف العام للأيام المُرحَّلة عبر جميع أنواع الإجازات
انتهاء صلاحية الترحيل (أشهر)3تنتهي صلاحية الأيام المُرحَّلة بعد هذا العدد من الأشهر في السنة المالية الجديدة

إعدادات كل نوع إجازة

لكل نوع إجازة تكوين ترحيل خاص به:

الحقلالوصف
الترحيلتفعيل/إلغاء تفعيل الترحيل لهذا النوع المحدد من الإجازة
الحد الأقصى لأيام الترحيلالحد الأقصى للأيام التي يمكن ترحيلها لهذا النوع

سقف الترحيل الفعلي هو الأقل بين حد نوع الإجازة والحد العام.

مثال: نوع الإجازة يسمح بترحيل 10 أيام، لكن الحد الأقصى العام هو 5. سيتم ترحيل 5 أيام فقط.


معالجة الترحيل

يتم معالجة الترحيل تلقائياً عبر أمر مُجدول يعمل في اليوم الأول من شهر بداية السنة المالية:

php artisan hrm:process-leave-carryover

انتهاء صلاحية الترحيل

الأيام المُرحَّلة ليست دائمة — تنتهي صلاحيتها بعد فترة قابلة للتكوين. بمجرد انتهاء صلاحيتها، لا يتم احتسابها في الرصيد المتاح.