دليل سير العمل الكامل — Moon HR
شرح تفصيلي لـ 5 وحدات: من البداية للنهاية — الحقول، الحالات، الـ API، القيود المحاسبية
1. التوظيف
2. الأداء
3. التدريب
4. نهاية الخدمة
5. السلف والقروض
1. التوظيف (Recruitment)
من فتح الوظيفة الشاغرة لحد تعيين الموظف الجديد
1
المسار الكامل للتوظيف
1. إنشاء وظيفة شاغرة (Job Opening)
↓
2. إضافة مرشحين (Candidates)
↓
3. التقديم على الوظيفة (Applications)
↓
4. عرض التوظيف (Offer)
↓
5. التعيين — إنشاء سجل موظف
1.1
الوظائف الشاغرة (Job Openings)
أول خطوة — تعريف الوظيفة المطلوبة مع تفاصيلها.
الحقول:
| الحقل | النوع | الشرح |
title | نص | المسمى الوظيفي (مثلاً: مهندس برمجيات) |
department_id | FK | القسم (المبيعات، تقنية المعلومات، إلخ) |
position_id | FK | المنصب الوظيفي |
vacancies | رقم | عدد الشواغر المطلوبة |
salary_min / salary_max | رقم | نطاق الراتب (من — إلى) |
employment_type | اختيار | نوع العقد: full_time / part_time / contract / internship |
closing_date | تاريخ | تاريخ إغلاق الإعلان |
description | نص طويل | وصف الوظيفة والمتطلبات |
دورة الحالات:
مسودة
draft
←
مفتوحة
open
←
مغلقة
closed
←
معلّقة
on_hold
النشر: لما الوظيفة جاهزة، استخدم POST /job-openings/{id}/publish عشان تتحول من draft لـ open.
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/job-openings | قائمة الوظائف الشاغرة |
| POST | /hrm/job-openings | إنشاء وظيفة جديدة |
| PUT | /hrm/job-openings/{id} | تعديل وظيفة |
| DELETE | /hrm/job-openings/{id} | حذف (soft delete) |
| POST | /hrm/job-openings/{id}/publish | نشر الوظيفة (draft → open) |
💡 الوظيفة لازم تكون open عشان المرشحين يقدروا يتقدموا عليها. لو الشواغر اكتملت، حوّلها لـ closed.
1.2
المرشحون (Candidates)
قاعدة بيانات المرشحين — مستقلة عن الوظائف. مرشح واحد ممكن يتقدم على أكتر من وظيفة.
الحقول:
| الحقل | النوع | الشرح |
first_name / last_name | نص | اسم المرشح |
email | نص | البريد الإلكتروني (فريد) |
phone | نص | رقم الهاتف |
experience_years | رقم | سنوات الخبرة |
source | اختيار | مصدر الوصول: linkedin / referral / website / job_board / other |
resume_path | ملف | مسار السيرة الذاتية (PDF) |
notes | نص طويل | ملاحظات إضافية |
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/candidates | قائمة المرشحين |
| POST | /hrm/candidates | إضافة مرشح جديد |
| PUT | /hrm/candidates/{id} | تعديل بيانات مرشح |
| DELETE | /hrm/candidates/{id} | حذف مرشح |
1.3
التقديمات (Applications)
ربط المرشح بالوظيفة. كل تقديم يمر بـ 6 مراحل.
دورة المراحل:
تقديم
applied
←
فرز
screening
←
مقابلة
interview
←
تقييم
assessment
←
مراجعة نهائية
final_review
←
قرار
decision
تحديث الحالة: PUT /hrm/applications/{id}/status مع إرسال {"status": "interview"}
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/applications | قائمة التقديمات (مع فلتر حسب الوظيفة) |
| POST | /hrm/applications | إنشاء تقديم (ربط مرشح بوظيفة) |
| PUT | /hrm/applications/{id}/status | تحديث مرحلة التقديم |
| DELETE | /hrm/applications/{id} | حذف تقديم |
💡 كل مرحلة ممكن تضيف عليها ملاحظات — مثلاً بعد المقابلة تسجل ملاحظات اللجنة وتقييمها.
1.4
عروض التوظيف (Offers)
بعد قرار القبول، يتعمل عرض رسمي للمرشح.
الحقول:
| الحقل | النوع | الشرح |
application_id | FK | التقديم المرتبط |
salary | رقم | الراتب المعروض |
start_date | تاريخ | تاريخ بدء العمل |
benefits | نص | المزايا (تأمين، بدلات، إلخ) |
valid_until | تاريخ | صلاحية العرض (لو انتهت = expired) |
دورة الحالات:
مسودة
draft
←
مرسل
sent
←
مقبول
accepted
مرفوض
rejected
|
منتهي
expired
الإجراءات:
| الإجراء | المسار | الشرح |
| send | POST /hrm/offers/{id}/send | إرسال العرض للمرشح (draft → sent) |
| accept | POST /hrm/offers/{id}/accept | قبول العرض (sent → accepted) |
| reject | POST /hrm/offers/{id}/reject | رفض العرض (sent → rejected) |
1.5
التعيين
بعد قبول العرض accepted، الخطوة الأخيرة هي إنشاء سجل موظف جديد في نظام الموارد البشرية.
- يتنقل تلقائي من بيانات المرشح: الاسم، الإيميل، الهاتف
- يتعين في القسم والمنصب المحددين في الوظيفة الشاغرة
- الراتب الأساسي = الراتب المحدد في العرض
- تاريخ التعيين = تاريخ البدء في العرض
✅ بعد التعيين، الوظيفة الشاغرة تنقص شاغر واحد. لو اكتمل العدد ← تتحول لـ closed تلقائي.
2. الأداء (Performance Management)
من تعريف مؤشرات الأداء لحد إقرار الموظف بالتقييم
2
المسار الكامل لإدارة الأداء
1. تعريف مؤشرات الأداء (KPIs)
↓
2. إنشاء قوالب التقييم (Review Templates)
↓
3. إجراء التقييم (Performance Review)
↓
4. النتائج والإقرار (Results & Acknowledge)
2.1
مؤشرات الأداء (KPIs)
مؤشرات الأداء = المعايير اللي الموظف يتقاس عليها. كل مؤشر ليه وزن وهدف.
الحقول:
| الحقل | النوع | الشرح |
name | نص | اسم المؤشر (مثلاً: نسبة المبيعات) |
category | نص | التصنيف (مبيعات، خدمة عملاء، كفاءة، إلخ) |
weight | رقم | الوزن النسبي (مثلاً: 30%) |
target_value | رقم | القيمة المستهدفة (100,000 ريال) |
unit | نص | وحدة القياس (نسبة %, عدد, مبلغ) |
description | نص | وصف المؤشر وكيفية قياسه |
مثال — مؤشرات قسم المبيعات:
| المؤشر | الفئة | الوزن | الهدف | الوحدة |
| نسبة تحقيق المبيعات | مبيعات | 30% | 100,000 | ريال |
| رضا العملاء | خدمة عملاء | 20% | 90 | % |
| عدد العملاء الجدد | مبيعات | 20% | 15 | عميل |
| سرعة الرد | كفاءة | 15% | 24 | ساعة |
| الحضور والانضباط | سلوك | 15% | 95 | % |
| المجموع | 100% | — |
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/kpis | قائمة المؤشرات |
| POST | /hrm/kpis | إنشاء مؤشر |
| PUT | /hrm/kpis/{id} | تعديل مؤشر |
| DELETE | /hrm/kpis/{id} | حذف مؤشر |
⚠ مجموع الأوزان لازم يساوي 100% في كل قالب. لو مختلف = خطأ في الحساب.
2.2
قوالب التقييم (Review Templates)
القالب = تجميعة من مؤشرات الأداء مع أوزانها. قالب واحد يُستخدم لتقييم مجموعة من الموظفين بنفس المعايير.
الحقول:
| الحقل | الشرح |
name | اسم القالب (مثلاً: تقييم المبيعات) |
description | وصف القالب |
kpis | قائمة المؤشرات مع أوزانها |
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/review-templates | قائمة القوالب |
| POST | /hrm/review-templates | إنشاء قالب مع مؤشراته |
| PUT | /hrm/review-templates/{id} | تعديل قالب |
| DELETE | /hrm/review-templates/{id} | حذف قالب |
💡 القالب بيتعدّل قبل ما يُستخدم في تقييم. بعد ما يتم تقييم عليه، يفضل تنشئ نسخة جديدة بدل ما تعدل القديم — عشان تحافظ على سجل التقييمات.
2.3
إجراء التقييم (Performance Review)
التقييم = ربط موظف بقالب ومقيّم في فترة زمنية محددة.
الحقول:
| الحقل | النوع | الشرح |
employee_id | FK | الموظف المقيّم |
reviewer_id | FK | المقيّم (المدير المباشر عادةً) |
review_template_id | FK | القالب المستخدم |
period_type | اختيار | ربع سنوي / نصف سنوي / سنوي |
review_date | تاريخ | تاريخ التقييم |
overall_score | رقم | الدرجة الكلية (يُحسب تلقائي) |
strengths | نص | نقاط القوة |
weaknesses | نص | نقاط الضعف |
goals | نص | الأهداف المستقبلية |
دورة الحالات:
مسودة
draft
←
مرسل
submitted
←
معتمد
approved
←
إقرار الموظف
acknowledged
حساب الدرجة:
الدرجة الكلية = مجموع (درجة كل مؤشر × وزن المؤشر / 100)
مثال: مبيعات (85 × 30%) + رضا العملاء (90 × 20%) + عملاء جدد (70 × 20%) + سرعة رد (80 × 15%) + انضباط (95 × 15%)
= 25.5 + 18 + 14 + 12 + 14.25 = 83.75 من 100
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/performance-reviews | قائمة التقييمات |
| POST | /hrm/performance-reviews | إنشاء تقييم جديد |
| PUT | /hrm/performance-reviews/{id} | تعديل درجات ومراجعات |
| POST | /hrm/performance-reviews/{id}/submit | تقديم التقييم (draft → submitted) |
| POST | /hrm/performance-reviews/{id}/approve | اعتماد (submitted → approved) |
| POST | /hrm/performance-reviews/{id}/acknowledge | إقرار الموظف (approved → acknowledged) |
3. التدريب (Training)
من تعريف البرنامج التدريبي لحد تسجيل الموظف وإتمام التدريب
3
المسار الكامل للتدريب
1. البرنامج التدريبي (Training Program)
↓
2. الجلسة التدريبية (Training Session)
↓
3. تسجيل الموظفين (Enrollment) + الدرجة والتغذية الراجعة
3.1
البرامج التدريبية (Training Programs)
البرنامج = خطة تدريب عامة. ممكن يكون فيه أكتر من جلسة تحت نفس البرنامج.
الحقول:
| الحقل | النوع | الشرح |
name | نص | اسم البرنامج (مثلاً: إدارة المشاريع الاحترافية PMP) |
category | نص | التصنيف (تقني، إداري، مهارات ناعمة، سلامة) |
objectives | نص طويل | أهداف البرنامج |
duration | نص | المدة (5 أيام، 40 ساعة، إلخ) |
cost | رقم | تكلفة البرنامج |
provider | نص | مزود التدريب (شركة، مدرب مستقل) |
is_active | boolean | فعّال أم متوقف |
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/training-programs | قائمة البرامج |
| POST | /hrm/training-programs | إنشاء برنامج |
| PUT | /hrm/training-programs/{id} | تعديل برنامج |
| DELETE | /hrm/training-programs/{id} | حذف برنامج |
3.2
الجلسات التدريبية (Training Sessions)
الجلسة = حدث تدريبي فعلي بتاريخ ومكان ومدرب محدد. كل جلسة مرتبطة ببرنامج.
الحقول:
| الحقل | النوع | الشرح |
training_program_id | FK | البرنامج الأب |
title | نص | عنوان الجلسة |
date | تاريخ | تاريخ الجلسة |
location | نص | المكان (قاعة 3، أونلاين، إلخ) |
trainer | نص | اسم المدرب |
max_participants | رقم | الحد الأقصى للمشاركين |
دورة الحالات:
مجدولة
scheduled
←
جارية
in_progress
←
مكتملة
completed
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/training-sessions | قائمة الجلسات |
| POST | /hrm/training-sessions | إنشاء جلسة |
| PUT | /hrm/training-sessions/{id} | تعديل جلسة |
| DELETE | /hrm/training-sessions/{id} | حذف جلسة |
💡 لما الجلسة تكتمل completed، لازم تحدّث حالة كل مسجّل (حضر / لم يحضر).
3.3
التسجيل (Enrollments)
تسجيل الموظفين في الجلسات التدريبية ومتابعة حضورهم ونتائجهم.
دورة الحالات:
مسجّل
enrolled
←
حضر
attended
←
مكتمل
completed
ملغي
cancelled
|
لم يحضر
no_show
الحقول بعد الإتمام:
| الحقل | الشرح |
score | الدرجة / التقييم (0-100) |
feedback | التغذية الراجعة من الموظف عن الجلسة |
certificate | شهادة الإتمام (لو متاحة) |
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/training-enrollments | قائمة التسجيلات |
| POST | /hrm/training-enrollments | تسجيل موظف في جلسة |
| PUT | /hrm/training-enrollments/{id} | تحديث الحالة / الدرجة / التغذية |
| DELETE | /hrm/training-enrollments/{id} | إلغاء تسجيل |
⚠ لا يمكن تسجيل أكثر من max_participants في جلسة واحدة. النظام يرفض التسجيل لو العدد اكتمل.
4. مكافأة نهاية الخدمة (End of Service)
حساب المكافأة حسب نظام العمل السعودي — الإنهاء، الحساب، الاعتماد، الصرف
4
المسار الكامل لنهاية الخدمة
1. إنشاء تسوية (EOS Settlement)
↓
2. حساب المكافأة (Calculate)
↓
3. اعتماد المدير (Approve)
↓
4. الصرف + القيد المحاسبي (Pay)
4.1
إنشاء التسوية
الحقول:
| الحقل | النوع | الشرح |
employee_id | FK | الموظف |
termination_type | اختيار | نوع الإنهاء (انظر الجدول) |
last_working_day | تاريخ | آخر يوم عمل |
reason | نص | سبب الإنهاء |
أنواع الإنهاء:
| النوع | بالإنجليزي | تأثير على المكافأة |
| استقالة | resignation | حسب سنوات الخدمة (جدول مفصّل) |
| فصل | termination | مكافأة كاملة |
| تقاعد | retirement | مكافأة كاملة |
| انتهاء عقد | contract_end | مكافأة كاملة |
| وفاة | death | مكافأة كاملة (تُصرف للورثة) |
دورة الحالات:
مسودة
draft
←
محسوب
calculated
←
معتمد
approved
←
مصروف
paid
4.2
طريقة حساب المكافأة — نظام العمل السعودي
القاعدة الأساسية:
أول 5 سنوات: نصف راتب شهري × عدد السنوات
بعد 5 سنوات: راتب شهري كامل × عدد السنوات الزائدة
المكافأة = (الراتب / 2 × min(سنوات, 5)) + (الراتب × max(سنوات - 5, 0))
حالة الاستقالة (تأثير خاص):
| سنوات الخدمة | النسبة المستحقة | الشرح |
| أقل من سنتين | 0% | لا يستحق شيء |
| 2 — 5 سنوات | ثلث (33.3%) | ثلث المكافأة المحسوبة |
| 5 — 10 سنوات | ثلثين (66.7%) | ثلثي المكافأة المحسوبة |
| أكثر من 10 سنوات | 100% | المكافأة كاملة |
الإضافات والخصومات:
| البند | النوع | الشرح |
| رصيد الإجازات المتبقي | إضافة | أيام × الأجر اليومي |
| قروض معلّقة | خصم | الرصيد المتبقي من القرض |
| سلف غير مسددة | خصم | أي سلف تحت حساب لم تُسدد |
مثال — موظف راتبه 10,000 ريال، 8 سنوات، استقالة:
سنوات الخدمة = 8
الراتب = 10,000 ريال
// المكافأة الكاملة:
أول 5 سنوات = (10,000 / 2) × 5 = 25,000
بعد 5 سنوات = 10,000 × 3 = 30,000
المجموع = 55,000
// نسبة الاستقالة (5-10 سنوات = ثلثين):
المستحق = 55,000 × 2/3 = 36,667 ريال
// الإضافات:
رصيد إجازات = 12 يوم × (10,000/30) = 4,000 ريال
// الخصومات:
قرض متبقي = 5,000 ريال
// الصافي:
36,667 + 4,000 - 5,000 = 35,667 ريال
4.3
الاعتماد والصرف
الخطوات:
- approve: المدير يراجع الحساب ويعتمده (calculated → approved)
- pay: المالية تصرف المبلغ وتعمل القيد المحاسبي (approved → paid)
القيد المحاسبي:
عند الصرف (pay):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
من حـ/ مخصص نهاية الخدمة 35,667
إلى حـ/ البنك (أو الخزنة) 35,667
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
الشرح: صرف مكافأة نهاية خدمة — الموظف: أحمد محمد
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/eos | قائمة التسويات |
| POST | /hrm/eos | إنشاء تسوية جديدة |
| POST | /hrm/eos/{id}/calculate | حساب المكافأة (draft → calculated) |
| POST | /hrm/eos/{id}/approve | اعتماد (calculated → approved) |
| POST | /hrm/eos/{id}/pay | صرف + قيد محاسبي (approved → paid) |
💡 إعداد مهم: تأكد إن حساب "مخصص نهاية الخدمة" معرّف في شجرة الحسابات — وإلا القيد مش هيتعمل.
5. السلف والقروض (Loans & Advances)
من تقديم الطلب لحد السداد التلقائي من الراتب
5
المسار الكامل للسلف والقروض
1. تقديم الطلب (Pending)
↓
2. الموافقة (Approved) + قيد الصرف
↓
3. نشط (Active) — أقساط تُخصم شهرياً
↓
4. مسدد بالكامل (Paid)
5.1
أنواع القروض
| النوع | بالإنجليزي | الشرح | السداد |
| سلفة | advance | مبلغ صغير للحالات الطارئة | يُسدد خلال 1-2 شهر (قسط أو قسطين) |
| قرض | loan | مبلغ كبير لغرض محدد (زواج، علاج، سيارة) | يُسدد على أقساط شهرية (3-24 شهر) |
5.2
إنشاء القرض / السلفة
الحقول:
| الحقل | النوع | الشرح |
employee_id | FK | الموظف |
type | اختيار | advance (سلفة) / loan (قرض) |
amount | رقم | المبلغ المطلوب |
monthly_installment | رقم | القسط الشهري |
number_of_installments | رقم | عدد الأقساط |
start_date | تاريخ | تاريخ بدء الخصم |
reason | نص | سبب القرض |
remaining_amount | رقم | المتبقي (يتحدث تلقائي مع كل قسط) |
دورة الحالات:
معلّق
pending
←
موافق
approved
←
نشط
active
←
مسدد
paid
مرفوض
rejected
|
ملغي
cancelled
5.3
الموافقة والرفض
- approve: المدير يوافق → الحالة تتحول لـ approved ثم active بعد الصرف
- reject: المدير يرفض مع كتابة السبب → rejected
API:
| الطريقة | المسار | الشرح |
| GET | /hrm/loans | قائمة القروض والسلف |
| POST | /hrm/loans | إنشاء قرض / سلفة |
| PUT | /hrm/loans/{id} | تعديل قرض (لو لسه pending) |
| POST | /hrm/loans/{id}/approve | موافقة |
| POST | /hrm/loans/{id}/reject | رفض |
| DELETE | /hrm/loans/{id} | حذف (لو pending فقط) |
5.4
القيود المحاسبية
1. عند صرف القرض (الموافقة والصرف):
عند صرف القرض:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
من حـ/ سلف موظفين (1109) 5,000
إلى حـ/ الخزنة (1100) 5,000
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
الشرح: صرف سلفة — الموظف: أحمد محمد
2. عند خصم القسط من الراتب (كل شهر):
عند خصم القسط من المسير:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
من حـ/ رواتب مستحقة (2101) 1,000
إلى حـ/ سلف موظفين (1109) 1,000
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
الشرح: خصم قسط سلفة شهر مارس — الموظف: أحمد محمد
مثال كامل — سلفة 5,000 ريال على 5 أقساط:
| الشهر | القسط | المتبقي | القيد |
| يناير (صرف) | — | 5,000 | مدين: سلف موظفين / دائن: الخزنة |
| فبراير | 1,000 | 4,000 | مدين: رواتب مستحقة / دائن: سلف موظفين |
| مارس | 1,000 | 3,000 | مدين: رواتب مستحقة / دائن: سلف موظفين |
| أبريل | 1,000 | 2,000 | مدين: رواتب مستحقة / دائن: سلف موظفين |
| مايو | 1,000 | 1,000 | مدين: رواتب مستحقة / دائن: سلف موظفين |
| يونيو | 1,000 | 0 — مسدد | مدين: رواتب مستحقة / دائن: سلف موظفين |
5.5
الربط بالمسير (Payroll Integration)
لما المسير يتحسب → النظام يتحقق من كل القروض النشطة active للموظف → يخصم القسط تلقائي.
آلية الخصم التلقائي:
- عند حساب المسير، النظام يفحص: هل الموظف عنده قروض نشطة؟
- لو نعم → يضيف القسط كـ خصم في تفاصيل المسير (يظهر كسطر "قسط سلفة")
- القسط يتسجل في
loan_installments كقسط مدفوع
remaining_amount ينقص بقيمة القسط
- لو
remaining_amount = 0 → القرض يتحول لـ paid تلقائي
💡 إعداد مهم: الخصم التلقائي يعتمد على إعداد hrm.auto_deduct_loans = true في الإعدادات. لو الإعداد false → الخصم يدوي.
⚠ لو الموظف انتهت خدمته والقرض لسه نشط → المتبقي يتخصم من مكافأة نهاية الخدمة (EOS) تلقائي.
مرجع سريع — الإعدادات المؤثرة على هذه الوحدات
| الإعداد | القيمة | التأثير |
hrm.auto_deduct_loans | true / false | خصم أقساط القروض تلقائي من المسير |
hrm.salary_calculation_days | 30 | عدد أيام الشهر لحساب الأجر اليومي |
hrm.eos_account_id | حساب محاسبي | حساب مخصص نهاية الخدمة للقيد |
hrm.loan_account_id | 1109 | حساب سلف الموظفين |
hrm.default_bank_account | حساب بنك | الحساب الافتراضي لصرف المكافآت والقروض |
Moon ERP — HR Workflows Guide • 5 Modules • 2026