العودة إلى المدونة
الحلول المؤسسية

برنامج إدارة الإجازات: الرصيد ومسار الموافقة

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

İzin Takipİnsan KaynaklarıOnay AkışıKurumsal Yazılım

برنامج إدارة الإجازات يجمع طلبات الإجازة السنوية والعارضة وغير المدفوعة، ويمرّرها على موافقة المدير، ويعرض لكل موظف رصيده المتبقي في أي لحظة. باختصار: يستبدل عمود «الأيام المتبقية» في جدول البيانات بسجل إجازات تُدوَّن فيه كل حركة ولا يستطيع أحد تعديل المجموع يدويًا. وعند إعداده بشكل صحيح تتوقف أسئلة «كم يومًا بقي لي؟» الموجهة إلى الموارد البشرية، وتنتقل الإجازة المعتمدة تلقائيًا إلى الحضور والرواتب.

ما فائدة برنامج إدارة الإجازات؟

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

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

لماذا لا يكون رصيد الإجازة حقلًا واحدًا؟

أكثر الأخطاء شيوعًا هو حفظ رقم واحد مثل «المتبقي: 12» في بطاقة الموظف. هذا الرقم يختل بصمت عندما يعدّله أحد أو يُلغى طلب أو يُحسب الاستحقاق خطأً، ولا يعرف أحد السبب. النموذج الصحيح يحسب الرصيد كمجموع لسجل حركات: الاستحقاق موجب، والإجازة المعتمدة سالبة، والتصحيح سطر مستقل مع سببه. لا يُحذف أي سطر، ويُصحَّح الخطأ بقيد عكسي.

رصيد الإجازة يُحسب ولا يُخزَّن: الاستحقاق والاستخدام والتصحيح أسطر منفصلة ولا يُحذف أي منها. وجواب سؤال «لماذا هذا الرقم؟» موجود دائمًا في السجل.

في المثال التالي يُحسب الرصيد من السجل، وتحجز الطلبات المعلّقة أيامها، فلا يستطيع الموظف إنفاق الأيام نفسها في طلبين.

type LeaveEntry = {
  employeeId: string;
  days: number; // + accrual or correction, - approved leave
  reason: 'accrual' | 'leave' | 'correction' | 'carry_over';
  requestId: string | null;
  createdAt: Date;
};

// The balance is never stored as a single field; it is the sum of the ledger.
function balance(entries: LeaveEntry[], employeeId: string): number {
  return entries
    .filter((e) => e.employeeId === employeeId)
    .reduce((sum, e) => sum + e.days, 0);
}

// Pending requests reserve days so two requests cannot spend the same balance.
function canRequest(
  entries: LeaveEntry[],
  pendingDays: number,
  employeeId: string,
  requestedDays: number,
): boolean {
  return balance(entries, employeeId) - pendingDays >= requestedDays;
}

كيف يُبنى مسار الطلب والموافقة؟

يبدو مسار الموافقة بسيطًا على الورق، لكنه يمتلئ بالاستثناءات إذا بُرمج قبل كتابة قواعده. قبل البناء يجب الحصول على إجابات مكتوبة: كم مرحلة موافقة يمر بها الطلب؟ إلى من يذهب عند غياب المدير؟ هل يمكن إدخال إجازة بتاريخ سابق ومن يدخلها؟ وكيف يُعاد الرصيد عند إلغاء إجازة معتمدة؟

تُفصل الصلاحيات منذ البداية: يرى الموظف طلباته فقط، والمدير فريقه فقط، والموارد البشرية الجميع، وهي وحدها تُدخل التصحيحات. ويُبنى ذلك عبر أدوار المستخدمين والتفويض (RBAC). أما تذكيرات الطلبات المعلّقة وكتابة الاستحقاق السنوي فتعمل كمهام مجدولة (cron job)، ولا يجوز أن يُستحق الفترة نفسها مرتين.

كيف يُحسب استحقاق الإجازة السنوية؟

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

الربط مع الحضور والرواتب

يجب أن تظهر الإجازة المعتمدة في نظام الحضور على أنها «إجازة» لا «غياب»، وإلا عدّ نظام تتبع حضور الموظفين (PDKS) اليوم ناقصًا. ولا تنتقل إلى الرواتب إلا الإجازات المعتمدة في فترة مغلقة، عبر التكامل مع المحاسبة والرواتب. والتقارير الطبية قد تُعد بيانات شخصية حساسة، فلا يفتحها إلا قسم الموارد البشرية. للمبادئ العامة راجع مقالنا عن التوافق مع KVKK.

برنامج جاهز أم برمجيات خاصة؟

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

الخلاصة

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

Let's Build Your Project

Get a free consultation for your website, mobile app, or corporate software project.

Get a Free QuoteExplore our Corporate Solutions service