توثيق مستورد الحضور من Excel بالجملة لأودو 19
دليل استيراد الحضور من Excel أو CSV: تجهيز الملف وربط الأعمدة وقراءة الفحص والاستيراد والتراجع والمناطق الزمنية واستكشاف الأخطاء.
يشرح الإصدار 1.0.0حُدّث في 23 أكتوبر 2026
ابدأ من هنا
ببساطة: أجهزة البصمة وساعات الدوام وجداول البيانات كلها تنتج الشيء نفسه: قائمة بمن دخل ومتى خرج. كتابتها في أودو سطرًا بسطر تستغرق ساعات وتمتلئ بالأخطاء. تحوّل هذه الوحدة الملف إلى سجلات حضور في أربع خطوات، وتفحص كل سطر قبل أن يُنشأ أي شيء.
| الخطوة | ما تفعله |
|---|---|
| 1. الملف | اختر ملف Excel أو CSV. |
| 2. الأعمدة | حدّد أي عمود هو الموظف وتسجيل الدخول وتسجيل الخروج. تخمّن الوحدة من العناوين. |
| 3. الفحص | شاهد كل سطر بحالته: جاهز أو موجود في أودو أو مشكلة مع السبب. |
| 4. الاستيراد | تصبح الأسطر الجاهزة سجلات حضور. وتُترك البقية ويمكن تنزيلها كملف Excel لإصلاحها. |
نصيحة: يُحفظ كل استيراد كدفعة. إن كان فيه خطأ فنقرة واحدة على التراجع عن هذا الاستيراد تزيل بالضبط سجلات الحضور التي أنشأها.
جهّز ملفك
ببساطة: يحتاج الملف إلى سطر لكل حضور وسطر عناوين. ويمكن أن يكون .xlsx أو .xls أو .csv (وتُفهم ملفات CSV العربية التي يحفظها Excel).
| Employee ID | Check In | Check Out |
|---|---|---|
| E1001 | 2026-10-12 08:10 | 2026-10-12 17:09 |
| E1002 | 2026-10-12 08:12 | 2026-10-12 17:03 |
| E1001 | 2026-10-13 08:02 | 2026-10-13 17:15 |
| القاعدة | السبب |
|---|---|
| سطر لكل حضور | ورديتان في اليوم هما سطران. |
| سطر عناوين | السطر الأول افتراضيًا. وإن كان أدنى فعيّن صف العناوين. |
| تواريخ وأوقات حقيقية | تواريخ Excel أفضل. والنص مثل 2026-10-12 08:10 أو 12/10/2026 8:10 PM يعمل أيضًا. |
| قيم لا معادلات | المعادلة التي لم يحسبها Excel بلا قيمة. افتح الملف واحفظه في Excel مرة. |
| موظفون بمفتاح ثابت | رقم البطاقة أو البريد أأمن من الاسم (انظر الفصل 5). |
ببساطة: ويمكنك أيضًا فصل التاريخ والوقت في أعمدة منفصلة: Date وTime In وTime Out. تقبل الوحدة التخطيطين.
المتطلبات
| البند | التفاصيل |
|---|---|
| أودو | 19.0 (Community أو Enterprise) |
| التطبيقات المطلوبة | الحضور (hr_attendance) |
| من يستطيع الاستيراد | المستخدمون بصلاحية الحضور / مدير |
| الرخصة | OPL-1 (رخصة أودو الخاصة v1.0) |
التثبيت
- فُكّ ضغط الحزمة. بداخلها
taqnix_attendance_import.zip؛ فُكّه لتحصل على المجلدtaqnix_attendance_import. - انسخ المجلد إلى أحد مجلدات
addons_pathفي خادم أودو وأعد تشغيل أودو. - سجّل الدخول كمدير وفعّل وضع المطوّر ثم افتح التطبيقات واضغط تحديث قائمة التطبيقات.
- أزل مرشح «التطبيقات» وابحث عن Attendance Importer واضغط تثبيت.
# أو من سطر الأوامر ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_attendance_import --stop-after-init
نصيحة: تظهر قائمة جديدة: الحضور ← استيراد ← استيراد من Excel / CSV، وعمليات الاستيراد السابقة بجانبها.
كيف يُعثر على الموظفين
ببساطة: يحدد الملف من برمز أو اسم أو بريد. اختر في الخطوة الأولى كيف تبحث الوحدة عن الموظف:
| ابحث عن الموظف بواسطة | يطابق الحقل | أين تضبطه |
|---|---|---|
| رقم البطاقة | رقم البطاقة (Badge ID) | نموذج الموظف ← تبويب إعدادات الموارد البشرية |
| رقم الهوية | رقم الهوية | نموذج الموظف ← تبويب المعلومات الخاصة |
| البريد الإلكتروني للعمل | البريد الإلكتروني للعمل | نموذج الموظف ← معلومات العمل |
| الاسم | اسم الموظف | نموذج الموظف (لا تهم المسافات وحالة الأحرف) |
| معرّف أودو | المعرّف في قاعدة بيانات الموظف | يظهر في شريط العنوان عند فتح الموظف |
ببساطة: لا تهم حالة الأحرف ولا المسافات الزائدة. والأرقام التي يخزّنها Excel كأرقام (1001) تطابق النص «1001». وإن كان لموظفين القيمة نفسها يُرفض السطر برسالة واضحة بدل التخمين.
مهم: الاسم أضعف مفتاح: قد يشترك فيه شخصان. استخدم رقم بطاقة إن أمكن.
الخطوة 1: الملف
ببساطة: افتح الحضور ← استيراد ← استيراد من Excel / CSV.
| الحقل | ما هو |
|---|---|
| الملف | ملفك .xlsx أو .xls أو .csv. |
| ابحث عن الموظف بواسطة | انظر الفصل 5. |
| رقم الورقة | أي ورقة في المصنف (1 هي الأولى). |
| صف العناوين | الصف الذي يحمل عناوين الأعمدة. |
ببساطة: ليس لديك ملف بعد؟ تنزيل ملف نموذجي يعطيك مصنفًا بالتخطيط الصحيح.
الخطوة 2: الأعمدة
| الاختيار | المعنى |
|---|---|
| عمود الموظف | العمود الذي فيه الرمز أو الاسم أو البريد. |
| عمود التاريخ (اختياري) | استخدمه عندما يكون التاريخ في عمود خاص وتحمل أعمدة الدخول/الخروج أوقاتًا فقط. |
| عمود تسجيل الدخول / الخروج | تواريخ مع أوقات، أو أوقات فقط عند وجود عمود تاريخ. |
| الأوقات في الملف بتوقيت | المنطقة الزمنية التي سُجّل بها الملف. يخزّن أودو UTC ويحوّل عنك. الافتراضي: منطقتك. |
| اليوم قبل الشهر | اقرأ 03/04/2026 على أنه 3 أبريل. لا تتأثر تواريخ Excel الحقيقية. |
| الورديات الليلية | تسجيل خروج أبكر من الدخول يعني اليوم التالي (مفعّل افتراضيًا). |
| قبول الأسطر بلا تسجيل خروج | تنشئ سجل حضور مفتوحًا. متوقف افتراضيًا. |
ببساطة: تعرض القائمة تحت الاختيارات عنوان كل عمود مع أولى قيمه لتعرف ما فيه. وتُتعرَّف العناوين Employee وBadge وID وCheck In وTime In وCheck Out وTime Out وDate والعربية موظف، دخول، خروج، التاريخ.
الخطوة 3: فحص كل سطر
ببساطة: لم يُنشأ شيء بعد. يحصل كل سطر على حالة:
| الحالة | المعنى |
|---|---|
| جاهز | سيُستورد. |
| موجود بالفعل | يوجد حضور مطابق في أودو. يُتخطى، فاستيراد الملف نفسه مرتين لا يضر. |
| خطأ | لن يُستورد، مع السبب. |
| الرسالة | ما العمل |
|---|---|
| لا يوجد موظف بهذه القيمة | الرمز أو الاسم أو البريد ليس في أودو، أو اخترت «ابحث عن الموظف بواسطة» الخاطئ. |
| N موظفين لهم هذه القيمة | يشترك فيها موظفان. استخدم مفتاحًا أدق. |
| التاريخ أو الوقت مفقود أو غير مقروء | أصلح الخلية (تاريخ حقيقي أو نص مثل 2026-10-12 08:10). |
| لا يوجد تسجيل خروج | أضفه أو اقبل الأسطر بلا تسجيل خروج. |
| تسجيل الخروج ليس بعد تسجيل الدخول | افحص الملف. ونادرًا ما يحدث هذا مع تفعيل الورديات الليلية. |
| أكثر من 24 ساعة بين تسجيل الدخول والخروج | غالبًا تاريخ خاطئ. |
| يتداخل مع سجل حضور موجود في أودو / يتداخل مع السطر N | لا يسمح أودو بحضور متداخل للشخص الواحد. |
ببساطة: تأتي الأخطاء أولًا في القائمة. ويمكنك الرجوع لتغيير الأعمدة والفحص من جديد كلما شئت. ولا يمكن الاستيراد إلا إذا كان سطر واحد على الأقل جاهزًا.
الخطوة 4: استيراد وفتح وتراجع
ببساطة: اضغط استيراد الأسطر الجاهزة. تصبح الأسطر الجاهزة سجلات حضور؛ وتُترك الأسطر ذات الأخطاء.
ببساطة: تنزيل الأسطر الفاشلة يعطي ملف Excel برقم السطر وما كان في الملف وسبب الفشل، فتصحح تلك الأسطر فقط وتستوردها من جديد.
| في الدفعة | ما يفعله |
|---|---|
| عرض سجلات الحضور | يفتح سجلات الحضور التي أنشأها هذا الاستيراد. |
| التراجع عن هذا الاستيراد | يحذف تلك السجلات بالضبط (بعد سؤال). وتبقى الدفعة في القائمة بحالة «تم التراجع». |
| تنزيل الأسطر الفاشلة | ملف Excel بالأسطر التي لم تُستورد. |
ببساطة: الحضور ← استيراد ← عمليات الاستيراد السابقة تسرد كل استيراد: من ومتى وكم سطرًا وكم أُنشئ وكم فشل.
نصيحة: ثم يحسب أودو ساعات العمل والوقت الإضافي من سجلات الحضور بالطريقة المعتادة، كما لسجلات الحضور المنشأة يدويًا.
التواريخ والأوقات التي تفهمها
| في الملف | تُقرأ على أنها |
|---|---|
| تاريخ ووقت Excel حقيقيان | كما هما |
| 2026-10-12 08:10 | 12 أكتوبر 2026، 08:10 |
| 12/10/2026 8:10 PM مع «اليوم قبل الشهر» | 12 أكتوبر 2026، 20:10 |
| 12/10/2026 8:10 PM بدونه | 10 ديسمبر 2026، 20:10 |
| 8:05 أو 08.05 أو 8:05 PM | وقت من اليوم (مع عمود تاريخ) |
| ٢٠٢٦-١٠-١٢ ٠٨:١٠ و٨:٣٠ م | تُفهم الأرقام العربية وص/م العربيتان |
| 46307.34 (رقم) | رقم تسلسلي لتاريخ Excel |
| وقت فقط في خلية الخروج | يُستخدم تاريخ الدخول |
المناطق الزمنية وتغيير الساعة
ببساطة: تكتب ساعات الدوام الوقت المحلي. ويخزّن أودو UTC. في الخطوة 2 اختر المنطقة الزمنية التي سُجّل بها الملف (تبدأ منطقتك) فتحوّل الوحدة كل سطر. والوقت غير الموجود أو الموجود مرتين بسبب تغيير التوقيت الصيفي يُقرأ كتوقيت قياسي بدل أن يفشل.
مهم: يعرض أودو الأوقات بالمنطقة الزمنية للمتصفح. وإن عملت من بلد آخر فقد تختلف الأوقات التي تراها عن الملف بفارق المنطقتين.
الحدود
| الحد | التفصيل |
|---|---|
| الأسطر | حتى 20,000 سطر بيانات في الاستيراد الواحد. قسّم الملفات الأكبر. |
| الأوراق | ورقة واحدة في الاستيراد: اختر رقمها في الخطوة 1. |
| الملفات المحمية | لا يمكن قراءة المصنفات المحمية بكلمة مرور: أزلها أولًا. |
| المعادلات | تُستخدم قيمها المحسوبة، فيجب أن يكون الملف محفوظًا من Excel. |
| سجلات الحضور الموجودة | لا تتغير أبدًا. المطابقة تُتخطى والمتداخلة يُبلَّغ عنها. |
| حضور مفتوح واحد | يسمح أودو بسجل حضور مفتوح (بلا خروج) واحد للموظف في الوقت الواحد. |
للمطورين
ببساطة: تجاوز هذا الفصل إن كنت تستخدم الوحدة فقط.
| البند | التفاصيل |
|---|---|
| النماذج | taqnix.attendance.import (المعالج) وtaqnix.attendance.import.header وtaqnix.attendance.import.line وtaqnix.attendance.batch الدائم. |
| الربط | hr.attendance.taqnix_batch_id يشير إلى الدفعة التي أنشأت سجل الحضور. |
| التحليل | models/parsing.py فيه دوال بسيطة بلا قاعدة بيانات: read_table وparse_datetime وparse_time وparse_date وlocal_to_utc وguess_columns. |
from odoo.addons.taqnix_attendance_import.models import parsing
sheet, headers, rows = parsing.read_table(content, 'march.xlsx')
parsing.parse_time('٨:٣٠ م') # datetime.time(20, 30)
parsing.local_to_utc(naive_dt, 'Asia/Riyadh')استكشاف الأخطاء
| المشكلة | ما العمل |
|---|---|
| لا توجد قائمة استيراد | تحتاج صلاحية الحضور / مدير. |
| «تعذّرت قراءة الملف» | افتحه في Excel واحفظه من جديد بصيغة .xlsx، أو احفظه CSV. وأزل أي كلمة مرور. |
| كل الأسطر تقول «لا يوجد موظف» | «ابحث عن الموظف بواسطة» خاطئ، أو أرقام البطاقات غير مضبوطة على الموظفين بعد. |
| الأوقات منزاحة | افحص «الأوقات في الملف بتوقيت» (الخطوة 2). |
| اليوم والشهر مقلوبان | فعّل أو ألغِ «اليوم قبل الشهر» (للتواريخ النصية فقط). |
| الأسطر تقول «يتداخل مع سجل حضور موجود في أودو» | لدى الشخص حضور في تلك الفترة. افحصه في الحضور، أو تراجع عن الاستيراد السابق. |
| استوردت الملف الخطأ | افتح عمليات الاستيراد السابقة وافتح الدفعة واضغط التراجع عن هذا الاستيراد. |
التحديث والإزالة
استبدل المجلد بالإصدار الجديد وأعد تشغيل أودو ونفّذ -u taqnix_attendance_import. للإزالة ألغِ التثبيت من التطبيقات. تبقى سجلات الحضور المستوردة بالفعل في أودو كسجلات عادية؛ وتُزال قائمة عمليات الاستيراد السابقة.
الدعم
المساعدة في التثبيت وإصلاح الأخطاء مشمولان لمدة 6 أشهر مع تحديثات مدى الحياة. تواصل معنا عبر صفحة السوق التي اشتريت منها الوحدة أو راسل support@taqnix.com مع إصدار أودو ولقطة شاشة.