هذا القسم يشرح بالعربي كيف يعمل النظام في كل جزء، بدون معادلات — فقط وصف واضح لما يحدث وما يحتويه كل موضوع.
1. تقريب الساعات الأساسية
النظام يعتبر إنو أي يوم شغل، إذا الموظف كمل سبع ساعات ونص (7:30) أو أكثر، يُحسب اليوم كامل يعادل ثمان ساعات. يعني لو دخل الساعة سبع وربع وطلع بعد سبع ساعات ونص، اليوم يُعدّ ثمان ساعات أساسية. لو أقل من سبع ونص، تُحسب الساعات والدقائق كما هي بدون تقريب. هذا التقريب يطبّق على أيام الأسبوع العادية فقط، ما عدا يوم الجمعة. موجود في: لوحة التقارير، تصدير الإكسل، تقرير الإضافي، تصفية العطل، التقرير العام، والإحصائيات.
2. أجر اليوم وأجر الساعة
النظام ياخذ الراتب الشهري للموظف ويقسمه على 30 عشان يطلع أجر اليوم. بعدين أجر اليوم يقسم على 8 عشان يطلع أجر الساعة. هذول الاثنين يهمون في كل شي: صافي الراتب، مبلغ الإضافي، وتحويل المكافآت والخصومات اللي بالمبلغ إلى ساعات. إذا ما كان للموظف راتب مسجل، الأجر يكون صفر وما يصير حساب. صفحة "التقرير النهائي" القديمة ما تستخدم هالطريقة؛ فيها صافي الراتب يساوي الراتب زائد التعديلات فقط.
3. حد الساعات الأساسية — ثمان ساعات باليوم
لكل يوم حضور، النظام ياخذ أول مرة دخل وآخر مرة طلع (من سجلات البصمة) ويحسب الفرق. إذا الفرق أكثر من ثمان ساعات، يُحسب للراتب الأساسي ثمان ساعات فقط والباقي يروح إضافي. إذا الفرق ثمان ساعات أو أقل، يطبّق تقريب السبع ونص (انظر فوق). يوم الجمعة للموظفين الثابتين (اللي اسمهم أو وظيفتهم تنتهي بـ "ث"): كل ساعات الجمعة تُحسب إضافي وما تدخل في الأساسي أصلاً.
4. ساعات الجمعة كإضافي (موظفون ثابتون)
الموظف اللي اسمه أو وظيفته تنتهي بـ "ث" يعدّ موظف ثابت. إذا يوم الحضور جمعة، كل ساعات ذلك اليوم تُحسب ساعات إضافية فقط ولا تُضاف للساعات الأساسية. يعني الجمعة ما تزيد له أيام عادية، تزيد له إضافي. هالساعات تجمع مع بعض (ساعات ودقائق) وبعدين تحويل كل 60 دقيقة إلى ساعة. موجود في لوحة التقارير، تصدير الإكسل، تقرير الإضافي، والتقرير الفردي.
5. تحويل المكافآت والخصومات إلى ساعات
التعديلات نوعين: بالساعات أو بالمبلغ. اللي بالساعات تُجمع مباشرة (مكافأة تزيد، خصم تنقص). اللي بالمبلغ تُجمع كل المبالغ أولاً، بعدين النظام يحولها إلى ساعات بقسمة المجموع على أجر الساعة. الناتج النهائي هو "صافي التعديلات بالساعات" ويُضاف مع الساعات الأساسية ومكافأة الجمعة والتعويض عشان يطلع صافي الساعات الكلي. موجود في لوحة التقارير، تصدير الإكسل، التقرير الفردي، والتقرير العام.
6. مكافأة الجمعة (ساعات إضافية للصافي)
للموظفين الثابتين (اللي اسمهم أو وظيفتهم تنتهي بـ "ث") النظام يحسب كم يوم شغل فعلي (بناءً على الساعات الأساسية مع التعديلات وساعات الجمعة مقسومة على 8). حسب عدد الأيام يحدد مكافأة: من 3 إلى 7 أيام يعطي 8 ساعات مكافأة (جمعة واحدة)، من 8 إلى 14 يوم يعطي 16 ساعة (جمعتين)، من 15 إلى 19 يوم يعطي 24 ساعة (ثلاث جمع)، من 20 إلى 30 يوم يعطي 32 ساعة (أربع جمع). هالساعات تُضاف لصافي الساعات فقط ولا تدخل في حساب الإضافي. موجود في لوحة التقارير، تصدير الإكسل، التقرير الفردي، وصفحة تصفية العطل.
7. صافي الساعات النهائية وصافي الأيام
النظام يجمع: الساعات الأساسية، وتعديلات الساعات (المكافآت والخصومات المحوّلة إلى ساعات)، ومكافأة الجمعة، والتعويض إن وُجد. الجمع يكون ساعات ودقائق منفصلة؛ كل ما تصل الدقائق لستين يتحولون إلى ساعة. من المجموع النهائي يطلع "صافي الأيام" بقسمة صافي الساعات على 8. إذا بعد التعويض صافي الأيام يزيد عن 30 يوم، النظام يحد الصافي بـ 30 يوم (240 ساعة) والزائد يتحول إلى ساعات إضافية. موجود في لوحة التقارير، تصدير الإكسل، تقرير الإضافي، والتقرير الفردي.
8. صافي الراتب
بعد ما يطلع صافي الساعات (بعد كل التعديلات والتعويض وحد الثلاثين يوم)، النظام يضرب صافي الساعات في أجر الساعة ويقرب الناتج لخانتين عشريتين — هذا هو صافي الراتب. ما يسمح يكون الراتب سالب. إذا الموظف عنده ساعات لكن ما مسجل له راتب أساسي، صافي الراتب يبقى صفر. صفحة "التقرير النهائي" القديمة مختلفة: فيها صافي الراتب يساوي الراتب الشهري زائد إجمالي التعديلات فقط بدون استخدام الساعات.
9. الساعات الإضافية من الأيام العادية
في الأيام العادية (غير الجمعة)، إذا الموظف شغل أكثر من ثمان ساعات في يوم واحد، الزيادة تُحسب إضافي. إذا شغل بالضبط ثمان ساعات ودقائق زيادة، الدقائق الزيادة تُحسب إضافي. هالساعات تجمع مع بعض. في لوحة التقارير وتقرير الإضافي، ما كل الإضافي يُدفع؛ يطبّق تقسيم "إضافي مستحق" و"غير مستحق" (انظر التالي). في تصدير الإكسل الرئيسي كل ما فوق ثمان ساعات يُحسب إضافي بدون تقسيم.
10. الإضافي المستحق والإضافي غير المستحق
النظام يفرق بين وقتين: الإضافي اللي من الساعة 1:30 ظهراً إلى 2:24 ظهراً يُعتبر "غير مستحق" وما يُدفع. الإضافي من بعد 2:30 ظهراً إلى 12 منتصف الليل، ومن 12 ليلاً إلى 5 الصبح، يُعتبر "مستحق" ويُدفع. فقط الساعات المستحقة تدخل في إجمالي الإضافي ومبلغ الإضافي. صفحة تصدير الإكسل الرئيسي ما تطبق هالتقسيم؛ فيها كل ما فوق ثمان ساعات إضافي مدفوع.
11. التعويض (ساعات الجمعة كأيام)
للموظف الثابت (اسمه أو وظيفته تنتهي بـ "ث"): إذا صافي الأيام قبل ما يضيف التعويض أقل من 30 يوم وعنده ساعات شغل في الجمعة، كل ساعات الجمعة تُحسب "تعويض". التعويض يزيد صافي الساعات (يعني يزيد الأيام) ويُخصم من الساعات الإضافية — يعني ما يدفع له إضافي على ساعات الجمعة اللي تحوّلت لأيام. الخصم من الإضافي يكون لحد أقصى ما هو متاح فقط. بعد إضافة التعويض يُعاد حساب صافي الأيام. موجود في لوحة التقارير، تصدير الإكسل، تقرير الإضافي، والتقرير الفردي.
12. تحويل الأيام الزائدة عن 30 إلى إضافي
إذا بعد التعويض صافي الأيام صار أكثر من 30، النظام ياخذ الزيادة (مثلاً يومين أو ثلاثة) ويحولها إلى ساعات (كل يوم يساوي 8 ساعات) ويضيفها للساعات الإضافية ويدفع عليها. صافي الأيام يُحدّ بـ 30 يوم بالضبط (240 ساعة). هالمنطق يطبّق على الموظفين الثابتين وعلى موظفي الأجر اليومي (اللي اسمهم أو وظيفتهم فيها "اجر" بدون "ث").
13. صافي الإضافي النهائي
صافي ساعات الإضافي هو: إجمالي الساعات الإضافية ناقص ما تم خصمه تعويض، زائد (إن وُجد) ساعات الأيام الزائدة عن 30. من صافي الساعات هذي يطلع مبلغ صافي الإضافي بضربها في أجر الساعة. قاعدة: إذا صافي الإضافي أقل من ساعة واحدة، يُعتبر صفر وما يدفع. النظام يتأكد من عدم وجود قيم سالبة أو قريبة من الصفر. موجود في لوحة التقارير، تصدير الإكسل، وتقرير الإضافي.
14. تحويل الأيام إلى ساعات عند إدخال الخصم أو المكافأة
في صفحة إضافة خصم أو مكافأة، إذا المستخدم يختار إن التعديل "بالأيام"، النظام يضرب العدد في 8 ويخزن الناتج كساعات. يعني لو أدخل "يومين" يُخزن 16 ساعة. التقارير تقرأ الرقم المخزن (ساعات) وتتعامل معاه مباشرة.
15. حساب الساعات في معالجة الرفع القديمة
في مسار قديم (process.php) إذا كان مستخدم: عند رفع الحضور يحسب ساعات العمل من وقت البداية للنهاية، والساعات الزيادة عن 8 تُحسب إضافي، والنقصان عن 8 يُحسب خصم. التقارير الحالية ما تعتمد هالطريقة؛ تعتمد على أول وآخر حركة حضور في اليوم (دخول وخرج) وتطبق كل القواعد الجديدة (تقريب، جمعة، مستحق وغير مستحق).