انتقل إلى المحتوى
TAQNIX
وحدات Odooإضافات ووردبريسقوالب ووردبريسقوالب Shopifyقوالب التطبيقاتالسكربتات والأدواتالمدونةبِع على TAQNIX

توثيق إدارة الخدمات الميدانية لأودو

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

يشرح الإصدار 1.0.0حُدّث في 29 أكتوبر 2026

ابدأ من هنا

ببساطة: تمنحك هذه الحزمة نظام خدمة ميدانية كاملًا لـ أودو Community: وحدة أودو (taqnix_fsm) للمكتب، والشيفرة المصدرية بـ Flutter لـتطبيق الآيفون والأندرويد الذي يستخدمه فنيّوك على الطريق، حتى دون شبكة. يخطط المكتب المهام ويوزّعها ويتابع الفنيين على الخريطة ويفوتر العمل؛ ويقبل الفني المهمة ويقود إلى العميل ويعمل بمؤقت ويمسح القطع المستخدمة ويلتقط الصور ويأخذ التوقيع ويرسل الفاتورة من الهاتف.
خريطة التوزيع: الفنيون والمهام والمهام المنتظرة للإسناد.
خريطة التوزيع: الفنيون والمهام والمهام المنتظرة للإسناد.
نصيحة: لا تحتاج إلى أودو Enterprise: تستخدم الوحدة التطبيقات المجانية المشروع والجداول الزمنية والمخزون والفوترة فقط، وOpenStreetMap للخرائط (دون مفتاح خرائط مدفوع).

محتويات الحزمة

البندما هو
taqnix_fsm.zipوحدة أودو 19: أوامر الخدمة والتوزيع والعروض والخريطة الحية والسياج الجغرافي والمؤقت والجداول الزمنية ومخزون السيارة والتوقيع والصور والفوترة والإشعارات الفورية وواجهة برمجة التطبيق وترجمة عربية واختبارات آلية.
flutter-app-source.zipمشروع Flutter لتطبيق الفني (أندرويد وiOS): قاعدة بيانات دون اتصال ومحرك مزامنة وموقع في الخلفية وماسح باركود ولوحة توقيع وصور وفاتورة. مع سكربت إعداد وملف README خاص به واختبارات.
documentation/هذا الدليل بالإنجليزية (index.html) والعربية (index-ar.html) مع ملفات PDF، والملف API.md للمطورين.
licensing/الرخصة (OPL-1: شراء واحد = شركة واحدة وعلامة تطبيق واحدة مع التحديثات).
preview-images/لقطات من التطبيق ومن شاشات أودو.
changelog.txtسجل الإصدارات.

كيف يعمل

الجزءأين يعملماذا يفعل
وحدة أودوخادم أودو لديكتحفظ أوامر الخدمة والفنيين والوقت والقطع والصور والتواقيع والفواتير؛ وتقرر من تُعرض عليه المهمة؛ وتجيب التطبيق على /api/fsm/v1/....
خريطة التوزيعمتصفح المُوزِّعتعرض الفنيين والمهام على OpenStreetMap وتتحدث تلقائيًا وترسم مسار اليوم.
تطبيق الفنيهواتف فنيّيكيعمل من قاعدة بيانات محلية (SQLite). كل ما يفعله الفني يُحفظ على الهاتف أولًا ثم يُرسل عند توفر الشبكة.
Firebase (اختياري)Googleيوصل الإشعارات الفورية: مهمة جديدة، مهمة معروضة، مهمة تغيّرت أو أُلغيت.
ببساطة: تمر المهمة بهذه الخطوات: جديد ← مُسنَد ← في الطريق ← (وصل) ← قيد التنفيذ ← (موقوف) ← منجز. تُختم كل خطوة بموقع GPS ووقت الهاتف، ولا يمكن تعديل هذه الأختام بعد ذلك. وفي النهاية يسجّل أودو الجدول الزمني ويُخرج القطع من مخزون السيارة ويجهّز الفاتورة.

ما تحتاج إليه

البندالتفاصيل
أودوالإصدار 19.0 Community أو Enterprise. تُثبَّت تلقائيًا مع الوحدة تطبيقات المشروع والجداول الزمنية والمخزون والفوترة والتموضع الجغرافي لجهات الاتصال.
مكتبات بايثونPyJWT وrequests (للإشعارات الفورية). نفّذ pip install PyJWT requests إن لم تكن موجودة في أودو لديك.
محرك PDFwkhtmltopdf كأي أودو (ملف PDF لتقرير الخدمة والفاتورة).
العنوانعنوان https عام لأودو: يجب أن تصل الهواتف إليه. الشهادة الموقّعة ذاتيًا لا تعمل على الهواتف.
البريد الصادرخادم بريد صادر في أودو (الإعدادات ← التقنية ← خوادم البريد الصادر) لإرسال الفواتير والتقارير بالبريد.
حاسوب لبناء التطبيقجهاز Mac للآيفون والأندرويد (ويندوز أو لينكس يبنيان الأندرويد فقط) بمساحة حرة نحو 30 غيغابايت.
أدوات المطوّرFlutter 3.41 أو أحدث وAndroid Studio وXcode (الإصدارات الحالية) مع CocoaPods.
حسابات المتاجرGoogle Play Console (رسم لمرة واحدة) وبرنامج Apple Developer (رسم سنوي). ويمكنك أيضًا التوزيع على موظفيك دون المتاجر العامة (الاختبار الداخلي وTestFlight وApple Business Manager).
اختياريمشروع Firebase مجاني للإشعارات الفورية.

ثبّت وحدة أودو

  1. فُكّ ضغط الحزمة. بداخلها taqnix_fsm.zip؛ فُكّه لتحصل على المجلد taqnix_fsm.
  2. انسخ المجلد إلى أحد مجلدات addons_path في خادم أودو وأعد تشغيل أودو.
  3. سجّل الدخول كمدير وفعّل وضع المطوّر ثم افتح التطبيقات واضغط تحديث قائمة التطبيقات.
  4. أزل مرشح «التطبيقات» وابحث عن Field Service Management واضغط تثبيت.
# or from the command line
./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_fsm --stop-after-init
ببساطة: بعد التثبيت يظهر تطبيق جديد باسم الخدمة الميدانية في القائمة الرئيسية. ينشئ التثبيت أيضًا مشروع الخدمة الميدانية (للجداول الزمنية) والمنتجات عمالة الخدمة الميدانية ورسوم الاستدعاء والتنقل، وستة أنواع خدمة ومهارات وقوائم تحقق وأسباب إيقاف وقوالب البريد. ويمكنك تغيير كل ذلك أو حذفه.
مهم: خذ نسخة احتياطية قبل التثبيت على قاعدة بيانات الإنتاج كما تفعل مع أي وحدة.

الإعداد الأول في 10 دقائق

  1. افتح الخدمة الميدانية ← الإعداد ← الإعدادات وراجع الأقسام (الفصل 8). القيم الافتراضية تناسب معظم الشركات.
  2. تحقق من منتج العمالة وسعره في الفوترة (الإعدادات، الفصل 8) ومن منتجي الاستدعاء والتنقل.
  3. أنشئ الفنيين (الفصل 7): مستخدم أودو، وموظفًا للجداول الزمنية، ومهارات، وموقع مخزون للسيارة.
  4. ضع القطع في السيارات: تسوية مخزون عادية أو نقل في المخزون إلى موقع كل سيارة.
  5. عدّل أنواع الخدمة لتطابق خدماتك: المدة والسعر وقائمة التحقق والإثبات المطلوب (الفصل 9).
  6. أنشئ أول أمر خدمة (الفصل 10) ووزّعه وجرّبه في التطبيق (الفصلان 13 و14).
نصيحة: القيم الافتراضية محايدة بما يكفي للتكييف والسباكة والكهرباء وتقنية المعلومات وإصلاح الأجهزة والأمن والخدمات العقارية. ينتهي الفصل 8 بجدول وصفات حسب المجال.

الفنيون والمُوزِّعون والمديرون

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

الإعدادات قسمًا قسمًا

ببساطة: تضم الخدمة الميدانية ← الإعداد ← الإعدادات كل قواعد الشركة. تبيّن كل كتلة أدناه ما تفعله ومتى تغيّرها. الإعدادات خاصة بكل شركة.
التوزيع: من يحصل على المهام.
التوزيع: من يحصل على المهام.
الإعدادماذا يفعل
التوزيع الافتراضيمُسنَد إلى فني: يختار المُوزِّع فنيًا. مفتوح للفريق: يرى كل فني في الفريق (بالمهارات المطلوبة) المهمة ويحصل عليها أول من يقبلها. معروضة على الفنيين القريبين: الفنيون ضمن نطاق المهمة فقط، من آخر موقع لهم، بدءًا بالأقرب. يمكن تغييره لكل أمر خدمة.
نطاق العرض (كم)، أقصى عدد من الفنيين تُعرض عليهم المهمة، ينتهي العرض بعد (دقائق)، جولات العرض قبل تنبيه المُوزِّعإلى أي مدى، وعلى كم فني، وكم تدوم صلاحية العرض (بالدقائق)، وكم جولة تُجرَّب. إن لم يقبل أحد يتضاعف النطاق (اختياريًا) وتُعرض المهمة من جديد؛ وبعد الجولة الأخيرة يتلقى المُوزِّع مهمة متابعة.
يمكن للفنيين رفض مهمة / يمكن للفنيين إعادة مهمةيستطيع الفني رفض مهمة مُسنَدة إليه، أو إعادتها قبل بدء العمل. فتعود إلى المُوزِّع (أو إلى العرض).
يمكن للفنيين إنشاء الأوامر في التطبيقللعملاء الذين يحضرون مباشرة وللأعمال الإضافية المكتشفة في الموقع: ينشئ الفني أمر خدمة من الهاتف ويُسنَد إليه.
إثبات العمل.
إثبات العمل.
الإعدادماذا يفعل
توقيع العميل مطلوبلا يمكن إنجاز الأمر دون التوقيع (يمكن تجاوزه لكل نوع خدمة).
صورة قبل العمل مطلوبة / صورة بعد العمل مطلوبةتُشترط صورة واحدة على الأقل من كل نوع.
قائمة التحققيجب تحديد البنود المعلَّمة مطلوبة في قائمة التحقق.
مهلة تصحيح أمر منجزيستطيع الفني إضافة ملاحظات وقطع وصور خلال هذا العدد من الساعات بعد الإنجاز.
الموقع والتتبع والوصول.
الموقع والتتبع والوصول.
الإعدادماذا يفعل
تتبع الموقعمتوقف؛ فقط أثناء تنفيذ المهمة (من «في الطريق» حتى «منجز»)؛ خلال ساعات العمل (حتى في وقت الخمول، فتتمكن من عرض المهام على أقرب فني).
أخذ عينات موفّر للبطاريةالفاصل أثناء الحركة (30 ث افتراضيًا) وأثناء السكون (300 ث) وأدنى مسافة بين النقاط (25 م) ومستوى البطارية الذي يقلل التطبيق دونه أخذ العينات.
اكتشاف الوصول (السياج الجغرافي)نطاق حول المهمة (150 م افتراضيًا) والمدة التي يجب أن يبقى فيها الفني داخله (بالثواني). ثم: اسأل الفني (إشعار فوري مع سؤال في التطبيق) أو تعليم كوصول أو تعليم كوصول وبدء العمل (يشغّل المؤقت).
الخصوصيةالنص الظاهر في التطبيق قبل طلب إذن الموقع، وعدد الأيام التي تُحفظ فيها نقاط الموقع (30 افتراضيًا).
الوقت والجداول الزمنية.
الوقت والجداول الزمنية.
الإعدادماذا يفعل
الجداول الزمنيةعند الإنجاز يُسجَّل وقت العمل (دون فترات الإيقاف التي توقف المؤقت) على موظف الفني، في مهمة الأمر. سطر لكل أمر أو سطر لكل فترة عمل؛ وتقريب للأعلى اختياري (مثلًا 15 دقيقة).
مهمة مشروع لكل أمريحصل كل أمر على مهمة في مشروع الخدمة الميدانية، لتقارير الجداول الزمنية ولتطبيق المشروع.
تنبيه عندما لا يكون للفني موظفيتلقى المُوزِّع مهمة متابعة عند تعذّر تسجيل جدول زمني.
القطع ومخزون السيارة.
القطع ومخزون السيارة.
الإعدادماذا يفعل
عند استخدام القطعاعتماد حركات المخزون: عند إنجاز الأمر يُنشأ نقل من السيارة إلى العميل ويُعتمد. إنشاء النقل لاعتماده لاحقًا: ينتظر النقل أمين المخزن. عدم تحريك المخزون: للفوترة فقط.
الموقع الأب لمواقع السياراتتُنشأ مواقع السيارات الجديدة تحت هذا الموقع.
السماح بقطع ليست في السيارة / يمكن للفنيين إضافة أي منتجالوضع الصارم: لا يستطيع الفني استخدام إلا ما في السيارة.
الأسعار في التطبيقإظهار الأسعار للفني، والسماح له بتغييرها كخيار منفصل.
الفوترة.
الفوترة.
الإعدادماذا يفعل
الفوترة الافتراضيةالوقت والمواد أو سعر ثابت أو المواد فقط؛ ومنتج العمالة، وهل يُستخدم سعر الفني بالساعة (الفصل 15).
فوترة حسب المدةفوترة الوقت بكتل (15 دقيقة افتراضيًا)، وأدنى وقت قابل للفوترة (60 دقيقة افتراضيًا)، والدقائق التي يغطيها رسم الاستدعاء.
الاستدعاء والتنقلرسم لكل زيارة ورسم عن كل كيلومتر يتجاوز مسافة مجانية، يُقاس من المواقع المسجَّلة بين «في الطريق» و«وصل».
إنشاء الفاتورةيدويًا، أو تلقائيًا عند إنجاز الأمر، مع التأكيد والإرسال بالبريد اختياريًا.
الفوترة من التطبيقما يستطيع الفني فعله على الهاتف: إنشاء مسودة الفاتورة وتأكيدها وإرسالها إلى العميل بالبريد.
الإشعارات.
الإشعارات.
الإعدادماذا يفعل
إشعارات فورية للفنيينإلى الفني: إسناد مهمة أو تغييرها، عرض مهمة، إلغاء مهمة.
رسائل البريد إلى العميلرسالة عندما يكون الفني في الطريق؛ وتقرير الخدمة (PDF) عند إنجاز العمل.
Firebase (التطبيق والخادم)معرّفات مشروع Firebase وملف JSON لحساب الخدمة (الفصل 17).
خريطة التوزيع.
خريطة التوزيع.
المجالالإعدادات المقترحة
التكييف والتبريدأنواع الخدمة: إصلاح (الوقت والمواد) وصيانة وقائية (سعر ثابت مع دقائق مشمولة). مخزون السيارة صارم، وصورة بعد العمل مطلوبة، وقائمة التحقق مطلوبة، والسياج الجغرافي بسؤال الفني.
السباكة والإصلاح الطارئالتوزيع الافتراضي القريبون، نطاق العرض 15-25 كم، التتبع خلال ساعات العمل، رسم استدعاء ورسم تنقل، تعليم الوصول تلقائيًا عبر السياج الجغرافي، دون صور مطلوبة.
الكهرباءقائمة تحقق ببند سلامة (مطلوب)، وسبب الإيقاف مشكلة تتعلق بالسلامة، والتوقيع مطلوب، وصور قبل العمل وبعده.
تقنية المعلومات والشبكاتبلا قطع أو بقطع قليلة؛ فوترة الوقت بكتل 15 دقيقة وحد أدنى 30؛ التتبع أثناء المهمة فقط؛ التوقيع مطلوب.
إصلاح الأجهزة المنزليةالوقت والمواد، ومخزون السيارة، ونوع الخدمة زيارة ضمان بالمواد فقط؛ وصور قبل العمل وبعده.
الأمن وتركيب كاميرات المراقبةسعر ثابت لكل تركيب، وصور بعد العمل مطلوبة، وقائمة تحقق تُدوَّن فيها الأرقام التسلسلية.
الخدمات العقارية والتنظيفسعر ثابت، وقائمة التحقق مطلوبة، وتوقيع مدير الموقع، والتتبع أثناء المهمة فقط.
المعدات الطبية والمخبريةالتوقيع مطلوب دائمًا، وقائمة التحقق مطلوبة، وإنجاز بدون إثبات للمديرين فقط.

أنواع الخدمة والمهارات وقوائم التحقق وأسباب الإيقاف

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

أنشئ أوامر الخدمة ووزّعها

ببساطة: تعرض الخدمة الميدانية ← التوزيع ← أوامر الخدمة الأوامر كلوحة حسب الحالة وكقائمة وكتقويم حسب الفني وكتقارير محوري ورسم بياني.
لوحة أوامر الخدمة.
لوحة أوامر الخدمة.
التقويم: المهام حسب الفني واليوم.
التقويم: المهام حسب الفني واليوم.
  1. اضغط جديد واختر العميل. يؤخذ عنوان الخدمة والهاتف والإحداثيات من العميل؛ اضغط بحث لتحديد موقع عنوان عبر OpenStreetMap، أو افتح تبويب الخريطة وانقر على المكان الدقيق.
  2. اختر نوع الخدمة (يملأ المدة والمهارات وقائمة التحقق) وبداية الموعد والأولوية، واكتب الوصف وتعليمات للفني (رمز البوابة، عمّن يُسأل، المخاطر).
  3. اختر طريقة التوزيع: حدّد فنيًا، أو اتركه مفتوحًا للفريق أو للفنيين القريبين.
  4. اضغط التوزيع. يصبح الأمر المباشر مُسنَد ويتلقى الفني إشعارًا فوريًا؛ ويصبح الأمر المفتوح معروضة على الفنيين المؤهلين.
أمر خدمة قيد التنفيذ: العميل والعمل والتوزيع والتبويبات.
أمر خدمة قيد التنفيذ: العميل والعمل والتوزيع والتبويبات.
ببساطة: يفتح الزر إسناد... معالج الإسناد: يسرد الفنيين أصحاب المهارات أولًا ثم حسب المسافة إلى المهمة، مع عدد أوامرهم المفتوحة، ويتيح لك الإسناد مباشرة أو تحويل الأمر إلى عرض.
معالج الإسناد.
معالج الإسناد.
ما تريدهافعل هذا
إعطاء المهمة لشخص آخرغيّر حقل الفني أو استخدم إسناد...؛ يُخبَر الفني الأول بإزالة المهمة، ويُنبَّه الجديد.
الإلغاءاضغط إلغاء؛ يُخبَر الفني. وإعادة إلى جديد تعيده.
معرفة من فعل ماذا وأينيسرد تبويب السجل كل خطوة بوقت الهاتف وموقع GPS والمسافة من المهمة والمصدر (التطبيق أو أودو أو اكتشاف الوصول).
تكرار مهمة متكررةاستخدم إجراء تكرار القياسي في أودو؛ عقود الصيانة المتكررة غير مشمولة (الفصل 20).

العروض: يستطيع أي فني قبول مهمة

ببساطة: عندما يكون التوزيع مفتوح للفريق أو معروضة على الفنيين القريبين تُرسل المهمة كـعرض إلى الفنيين المؤهلين (الفريق والمهارات، وللقريبين: ضمن نطاق آخر موقع معروف لهم). يتلقون إشعارًا فوريًا ويرونها في قائمة العروض في التطبيق مع المسافة. أول من يضغط قبول يحصل على المهمة؛ ويُخبَر الآخرون بأنها أُخذت، وتُرفض أي إجابة متأخرة.
مهمة معروضة على ثلاثة فنيين تظهر بشارة معروضة.
مهمة معروضة على ثلاثة فنيين تظهر بشارة معروضة.
الخطوةماذا يحدث
العرضيُتخطى الفنيون المنشغلون بمهمة إلا إذا لم يتأهل غيرهم. يُختار حتى أقصى عدد من الفنيين تُعرض عليهم المهمة، بدءًا بالأقرب.
الانتهاءبعد ينتهي العرض بعد دقائق يُجدَّد العرض بنطاق أكبر (إذا كان توسيع النطاق مفعّلًا).
التصعيدبعد الجولة الأخيرة لا تُعرض المهمة بعد الآن ويتلقى قائد الفريق (أو المُوزِّعون) مهمة متابعة: لم يقبل أحد المهمة.
الرفضيستطيع الفني رفض عرض (فيختفي من قائمته) أو مهمة مُسنَدة (فتعود إلى المُوزِّع).

خريطة التوزيع والموقع الحي

ببساطة: تعرض الخدمة الميدانية ← التوزيع ← الخريطة الفنيين والأوامر على OpenStreetMap. الفنيون شارات دائرية بأحرفهم الأولى ونقطة حالة (أخضر متصل، برتقالي لم يظهر منذ فترة، رمادي غير متصل)، والأوامر دبابيس ملوّنة حسب الحالة وبحلقة حمراء للمهام العاجلة. تتحدث الخريطة تلقائيًا كل 30 ثانية.
اختر فنيًا لرؤية مسار اليوم.
اختر فنيًا لرؤية مسار اليوم.
افعلكيف
التصفيةحسب الفريق، أو الأوامر المفتوحة فقط، وإظهار الأوامر والفنيين أو إخفاؤهم.
متابعة فنيانقر على الاسم، ثم اضغط مسار اليوم (يُبنى الخط من نقاط الموقع في آخر 8 ساعات).
الإسناد من الخريطةتعرض القائمة للتوزيع الأوامر المنتظرة؛ انقر على أحدها واضغط إسناد.
سجل المواقعيسرد التقارير ← سجل المواقع النقاط (الوقت والدقة والسرعة والبطارية والشبكة).
نقاط الموقع الخام.
نقاط الموقع الخام.
ببساطة: ما يرسله التطبيق: خط العرض وخط الطول والدقة والسرعة والاتجاه والارتفاع ومستوى البطارية وحالة الشحن ونوع الشبكة ووقت الهاتف. تُخزَّن النقاط على الهاتف عند غياب الشبكة وتُرسل دفعات (حتى 500) عند عودتها؛ وتُتجاهل النسخ المكررة. ويستخدم الخادم كل نقطة أيضًا لاكتشاف الوصول.
نصيحة: تأتي بلاطات الخريطة من خوادم OpenStreetMap العامة التي لها سياسة استخدام عادل. إن كان لديك عدد كبير من المُوزِّعين فأدخل عنوان مزوّد بلاطات خاص بك أو مدفوع في الإعدادات ← خريطة التوزيع.

ماذا يفعل الفني

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

القطع والباركود والصور والتوقيع

ببساطة: تأتي القطع من مخزون السيارة: موقع الفني في المخزون. في التطبيق يفتح إضافة قطعة بحثًا بالاسم أو الرمز أو الباركود، أو الماسح (الباركود ورموز QR). يُخزَّن الكتالوج وكميات السيارة على الهاتف، فيعمل البحث والمسح دون اتصال.
القطع المستخدمة مع أسعارها.
القطع المستخدمة مع أسعارها.
امسح باركودًا لإضافة قطعة.
امسح باركودًا لإضافة قطعة.
القاعدةالتفصيل
المخزونعند الإنجاز يُنشأ نقل استهلاك الخدمة الميدانية من السيارة إلى موقع العميل ويُعتمد (أو يُترك للاعتماد لاحقًا، انظر الإعدادات). وتُحرَّك الإضافات المتأخرة بعد الإنجاز فورًا.
نفاد المخزونافتراضيًا يستطيع الفني إضافة قطعة ليست في السيارة (فيصبح المخزون سالبًا)؛ أوقف ذلك في الإعدادات لرقابة صارمة.
القابلية للفوترةلكل سطر قابل للفوترة؛ والقطعة غير القابلة للفوترة تُخرَج من المخزون مع ذلك.
الأسطر المقفلةبعد تحريك المخزون لا يمكن تغيير السطر أو حذفه؛ أضف سطرًا آخر للتصحيح.
صور قبل العمل وبعده.
صور قبل العمل وبعده.
يوقّع العميل على الهاتف.
يوقّع العميل على الهاتف.
صور الأمر في أودو.
صور الأمر في أودو.
التوقيع والملاحظات وقواعد الإثبات.
التوقيع والملاحظات وقواعد الإثبات.

الوقت والجداول الزمنية والفواتير

ببساطة: يعمل المؤقت ما دام الأمر قيد التنفيذ. توقفه فترة الإيقاف ما لم يقل سببها غير ذلك (مثل انتظار في الموقع (وقت مدفوع)). يسرد تبويب الوقت كل فترة.
فترات العمل والإيقاف في أمر خدمة.
فترات العمل والإيقاف في أمر خدمة.
ببساطة: الفاتورة فاتورة عميل عادية (account.move) تُنشأ من الأمر كمسودة. ويعتمد محتواها على طريقة الفوترة:
الطريقةسطر العمالةأسطر أخرى
الوقت والموادوقت العمل (مطروحًا منه الدقائق التي يغطيها رسم الاستدعاء)، مقرّبًا للأعلى إلى الكتلة (15 د) وبما لا يقل عن الحد الأدنى (60 د)، بالسعر بالساعة.القطع القابلة للفوترة؛ رسم الاستدعاء؛ التنقل بعد الكيلومترات المجانية.
سعر ثابتسطر واحد بسعر الأمر أو نوع الخدمة؛ ويُضاف الوقت الذي يتجاوز الدقائق المشمولة كـوقت إضافي بالسعر بالساعة.كما سبق.
المواد فقطلا شيء.القطع القابلة للفوترة (والرسوم إن حُددت).
ببساطة: السعر بالساعة هو أول سعر موجود: سعر نوع الخدمة، ثم سعر الفني (إذا كان الإعداد مفعّلًا)، ثم سعر منتج العمالة. مثال: 79 دقيقة عمل، كتل 15، حد أدنى 60، السعر 85 ← 90 دقيقة ← 127.50؛ وفلتران بسعر 18 ← 36؛ واستدعاء 45 ← 208.50 قبل الضريبة.
تبويب الفوترة مع التقدير والفاتورة.
تبويب الفوترة مع التقدير والفاتورة.
  1. في أودو اضغط إنشاء فاتورة على أمر منجز (أو جده في الفوترة ← للفوترة)، وراجع المسودة وأكّدها كالمعتاد.
  2. يؤكد إرسال الفاتورة الفاتورة عند الحاجة ويرسلها بالبريد مع ملف PDF إلى جهة اتصال الفاتورة لدى العميل؛ ويمكنك فعل ذلك من التطبيق أيضًا.
  3. يطبع تقرير الخدمة ملف PDF بقائمة التحقق والقطع والصور والتوقيع؛ ويُرسل إلى العميل تلقائيًا إذا كان الإعداد مفعّلًا.
أوامر منجزة تنتظر الفوترة.
أوامر منجزة تنتظر الفوترة.
إنشاء الفاتورة وتأكيدها وإرسالها من الهاتف.
إنشاء الفاتورة وتأكيدها وإرسالها من الهاتف.
مهم: يمر البريد عبر خادم البريد الصادر في أودو. فإن لم يكن مهيّأً، أو رفض الخادم الرسالة، يعرض أودو الخطأ ولا يعلّم الفاتورة كمُرسلة.

تطبيق الجوال باختصار

ببساطة: كُتب التطبيق بـ Flutter: قاعدة شيفرة واحدة للأندرويد وiOS، بالإنجليزية والعربية (من اليمين إلى اليسار). ويواصل العمل دون شبكة.
المجالماذا يفعل
تسجيل الدخولعنوان الخادم واسم المستخدم وكلمة المرور في أودو. يُحفظ الرمز في التخزين الآمن للهاتف.
المهاممهام اليوم والقادمة والعروض والمهام المنجزة؛ والتفاصيل والملاحة والاتصال بالعميل.
المهمة النشطةالمؤقت وأزرار الحالة وأسباب الإيقاف والقطع والماسح والصور والتوقيع والملاحظات وقائمة التحقق والفاتورة.
الخريطةالمهام وموقع الفني على OpenStreetMap.
التتبعموقع في الخلفية يُخزَّن مؤقتًا دون اتصال، مع أخذ عينات موفّر للبطارية؛ ونص الخصوصية وخطوات الإذن.
المزامنةصندوق الصادر للإجراءات وإعادة المحاولة ورسائل التعارض وشاشة بالمشكلات التي يجب حلها.
الإعداداتاللغة والمظهر والمزامنة الآن ومشكلات المزامنة وتشخيص التتبع ومسح البيانات المحلية وتسجيل الخروج (وفي نسخ التطوير فقط مفتاح لمحاكاة العمل دون اتصال).
المهام على الخريطة.
المهام على الخريطة.
تتبع الموقع ونص الخصوصية.
تتبع الموقع ونص الخصوصية.
الإعدادات.
الإعدادات.
ببساطة: دون اتصال أولًا. كل ما يفعله الفني يُكتب في قاعدة البيانات المحلية وفي صندوق الصادر؛ وتقرأ الشاشات من قاعدة البيانات المحلية فقط، فيكون التطبيق سريعًا وقابلًا للاستخدام دون اتصال كما مع الاتصال. وعند توفر الشبكة يرسل التطبيق صندوق الصادر بالترتيب، كل إجراء بمعرّف فريد (فلا يمكن لإعادة المحاولة أن تطبّقه مرتين)، ثم ينزّل ما تغيّر. القواعد: الخادم يقرر الإسناد والإلغاء؛ والهاتف يقرر ما حدث في الميدان (الأوقات والقطع والصور والتوقيع والملاحظات وقائمة التحقق)؛ ولا يُستبدل إجراء معلّق في الهاتف ببيانات أقدم من الخادم أبدًا.
العمل دون اتصال: الإجراءات تنتظر في صندوق الصادر.
العمل دون اتصال: الإجراءات تنتظر في صندوق الصادر.
الإجراءات التي رفضها الخادم أو المتعارضة تُسرد مع السبب.
الإجراءات التي رفضها الخادم أو المتعارضة تُسرد مع السبب.
الحالةالنتيجة
ألغى المُوزِّع المهمة بينما كان الفني دون اتصالتعود الإجراءات بـتعارض: الأمر مغلق وتُسرد في مشكلات المزامنة؛ وتظهر المهمة ملغاة.
فنيّان يقبلان العرض نفسهيفوز الطلب الأول؛ ويحصل الآخر على أُخذت بالفعل.
فني يبدأ مهمة أُعيد إسنادهاغير مُسنَدة: تُرفض وتُسرد.
ساعة الهاتف خاطئةيُحفظ وقت الهاتف، لكن ليس قبل الخطوة السابقة في الأمر نفسه.
لا مخزون في السيارة (الوضع الصارم)تُرفض القطعة بـمخزون غير كاف.

ابنِ التطبيق وانشره

ببساطة: تخطَّ هذا الفصل إن أردت الاختبار فقط: flutter run يعمل على محاكٍ أو على هاتف موصول.
  1. ثبّت Flutter (3.41 أو أحدث) وAndroid Studio، وعلى Mac ثبّت Xcode مع CocoaPods؛ ونفّذ flutter doctor وأصلح ما يبلغ عنه.
  2. فُكّ ضغط flutter-app-source.zip في مجلد بلا مسافات.
  3. شغّل سكربت الإعداد بعنوان أودو لديك واسم الحزمة الخاص بك: dart run tools/setup.dart --url https://odoo.example.com --package com.yourcompany.fieldservice. يكتب العنوان والمعرّفات في المشروع؛ وأضف --name "Your Company Service" و--color "#0f766e" و--icon your-icon-1024.png لضبط اسم التطبيق ولون العلامة والأيقونة (تشغيل السكربت مجددًا آمن).
  4. نفّذ flutter pub get ثم flutter run لتجربته، مسجّلًا الدخول بفني من أودو لديك.
cd flutter-app
dart run tools/setup.dart --url https://odoo.example.com --package com.yourcompany.fieldservice
flutter pub get
flutter run --dart-define=SITE_URL=https://odoo.example.com
الهدفالأمرثم
أندرويد (Google Play)flutter build appbundle --releaseارفع ملف .aab في Play Console. أنشئ مفتاح التوقيع مرة واحدة واحتفظ به بأمان.
أندرويد (داخلي، دون متجر)flutter build apk --releaseأرسل ملف .apk إلى فنيّيك (اسمح بالتثبيت من هذا المصدر).
آيفون (App Store وTestFlight)flutter build ipa --releaseارفع بـ Xcode أو Transporter؛ وأنشئ App ID بالإمكانيتين Push Notifications وBackground Modes (location updates).
مهم: يطلب المتجران تبرير الموقع في الخلفية: استخدم الجملة يسجّل التطبيق موقع الفني خلال ساعات العمل وأثناء تنفيذ المهمة لتوزيع المهام والملاحة وإثبات الوصول، وانشر سياسة خصوصية. ويعرض التطبيق شرحه الخاص قبل أن يطلب الإذن.
ببساطة: الإشعارات الفورية (Firebase): 1) أنشئ مشروع Firebase؛ 2) أضف تطبيق أندرويد وتطبيق iOS باسمي حزمتيك؛ 3) في Project settings ← Cloud Messaging ارفع مفتاح APNs لنظام iOS؛ 4) في أودو (الإعدادات ← الإشعارات) أدخل معرّف المشروع ومفتاح API ومعرّفات التطبيقين، والصق محتوى ملف JSON لحساب الخدمة (Project settings ← Service accounts ← Generate new private key). يقرأ التطبيق المعرّفات من خادمك عند تسجيل الدخول، فلا تحتوي الشيفرة المصدرية أي مفتاح.

العمل اليومي للمُوزِّع

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

الأمان والخصوصية

الموضوعكيف يُعالج
الوصوليسجّل التطبيق الدخول ببيانات أودو؛ ولمستخدمي أودو الداخليين في مجموعة الفني فقط. قواعد السجلات: يرى الفني أوامره والأوامر المعروضة عليه فقط. ولا تستطيع الحسابات ذات المصادقة الثنائية تسجيل الدخول إلى التطبيق.
الرموزرمز عشوائي لكل جهاز، ولا يُخزَّن في أودو إلا بصمته؛ وتُنسى الأجهزة غير المستخدمة منذ 180 يومًا. تسردها الأجهزة؛ ويمكن إخراج الفني من كل مكان. وتبطّئ حماية أودو نفسها كلمات المرور الخاطئة المتكررة (مهلة بعد خمس محاولات فاشلة).
حماية الأوامريُتحقق من كل إجراء في التطبيق على الخادم: يجب أن يكون الأمر مُسنَدًا إلى المستخدم، وأن تسمح آلة الحالات بالانتقال، وأن تُطبَّق قواعد الإثبات.
السجل لا يتغيرالأحداث (الحالة والوقت وGPS) لا يمكن تعديلها أو حذفها، حتى من مدير.
الموقعيُجمع فقط حسب الإعداد، مع نص خصوصية وإذن النظام؛ وتُحذف النقاط الأقدم من مدة الاحتفاظ (30 يومًا افتراضيًا) كل يوم. ولا يرى العملاء موقع الفني.
الأسرارحساب خدمة Firebase يقرؤه مديرو أودو فقط. ولا يحتوي التطبيق إلا معرّفات عامة.
نصيحة: أخبر فنيّيك بما يُجمع ومتى. في بعض البلدان يتطلب تتبع موقع الموظفين إشعارًا كتابيًا أو موافقة: استخدم نص الخصوصية في الإعدادات وسياستك الخاصة.

أمور يجب معرفتها

الحدالتفصيل
عقود الصيانة المتكررةغير مشمولة. كرّر الأوامر أو استخدم الإجراءات المجدولة في أودو.
تحسين المساراتغير مشمول. تساعد الخريطة ومعالج الإسناد على الاختيار حسب المسافة؛ وتفتح الملاحة تطبيق الخرائط في الهاتف.
أرقام الدفعات والأرقام التسلسليةيضيف التطبيق القطع بالكمية؛ ويمكن تدوين الأرقام التسلسلية في قائمة التحقق أو الملاحظات.
بوابة العميلغير مشمولة. يتلقى العميل رسائل بريد (في الطريق، تقرير الخدمة، الفاتورة).
الموقع في الخلفية على الهواتفقد يوقف أندرويد وiOS التطبيقات لتوفير البطارية. اطلب من الفنيين السماح بالموقع دائمًا وتعطيل تحسين البطارية للتطبيق؛ ويحتفظ المخزن المؤقت بالنقاط حتى يعود الهاتف إلى الاتصال.
إصدار أودومبني ومختبر على أودو 19.0. تحتاج الإصدارات الأخرى إلى تكييف الواجهات وبعض الدوال.
الخرائطبلاطات OpenStreetMap العامة للاستخدام المعتدل؛ اضبط خادم بلاطات آخر للاستخدام الكثيف.

للمطورين

ببساطة: تخطَّ هذا الفصل إن كنت تستخدم المنتج فقط. العقد الكامل لواجهة برمجة التطبيق في documentation/API.md.
# is the server reachable?
curl https://odoo.example.com/api/fsm/v1/ping
# {"ok": true, "api_version": 1, "server_time": "2026-10-26T08:00:00Z"}

# sign in (returns a token and the configuration)
curl -X POST https://odoo.example.com/api/fsm/v1/auth/login -H 'Content-Type: application/json' \
  -d '{"login": "sara@example.com", "password": "...", "device": {"id": "abc", "platform": "android"}}'

# send buffered location points
curl -X POST https://odoo.example.com/api/fsm/v1/tracking/batch -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"points": [{"uuid": "1", "lat": 25.2, "lng": 55.27, "speed": 8.3, "heading": 90, "battery": 80, "network": "cellular", "recorded_at": "2026-10-26T08:00:00Z"}]}'

# push the queued actions and pull the changes
curl -X POST https://odoo.example.com/api/fsm/v1/sync -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"cursor": null, "ops": [{"uuid": "9d1c...", "type": "transition", "order_id": 12, "device_time": "2026-10-26T08:01:00Z", "payload": {"to": "en_route", "lat": 25.2, "lng": 55.27}}]}'
المجالنقاط النهاية تحت /api/fsm/v1
الجلسةGET /ping و/config و/auth/me؛ POST /auth/login و/auth/logout و/auth/push-token
المزامنةPOST /sync (العمليات: transition وclaim وdecline وmaterial_set وphoto_add وsignature_set وnotes_set وchecklist_set وorder_create وinvoice)
التتبعPOST /tracking/batch (وأيضًا /api/fsm/tracking/batch)
البياناتGET /jobs/available و/orders/<id> و/catalog/products و/catalog/lookup?barcode= و/van-stock و/customers
الملفاتGET /photos/<id> و/orders/<id>/signature و/orders/<id>/invoice.pdf و/orders/<id>/report.pdf
ببساطة: ترسل الطلبات Authorization: Bearer <token> واختياريًا Accept-Language. لكل عملية في /sync معرّف فريد uuid وتُجاب بـ applied أو duplicate أو rejected أو conflict مع رمز. للوحدة أكثر من 130 اختبارًا آليًا (--test-tags /taqnix_fsm) وللتطبيق اختبارات وحدة (flutter test).

استكشاف الأخطاء

المشكلةما العمل
لا يستطيع التطبيق الاتصالافتح https://your-odoo/api/fsm/v1/ping على الهاتف: يجب أن يجيب {"ok": true}. افحص https والشهادة والعنوان بلا شرطة مائلة في النهاية وأن الوحدة مثبتة في قاعدة البيانات تلك (الصحيحة إن كان لديك عدة قواعد: أضف --db-filter أو إعداد dbfilter).
يقول تسجيل الدخول إن الحساب ليس لفنيأضف المستخدم في الفنيون (يحصل على المجموعة تلقائيًا).
لا يرى الفني أي مهاميجب أن يكون الأمر مُسنَد إلى ذلك المستخدم (وليس جديد). افتح الأمر واضغط التوزيع.
لا تظهر عروضافحص الفريق والمهارات والنطاق، وأن للفني موقعًا حديثًا (التتبع مفعّل) للعروض القريبة.
الخريطة فارغة أو بيضاءيجب أن يصل المتصفح إلى خادم البلاطات؛ اضبط عنوان البلاطات في الإعدادات.
لا جدول زمنييحتاج الفني إلى موظف ومشروع الإعدادات؛ راجع مهمة المتابعة المنشأة للمُوزِّع.
لا تتحرك القطع في المخزونافحص إعداد عند استخدام القطع وأن المنتجات قابلة للتخزين؛ وانظر الفوترة ← القطع المستخدمة.
لا تُرسل الفاتورة بالبريدهيّئ خادم البريد الصادر في أودو وافحص بريد العميل.
لا إشعارات فوريةافحص معرّفات Firebase وحساب الخدمة في الإعدادات، ومفتاح APNs للآيفون، وأن الفني سمح بالإشعارات. تخبرك الفنيون ← إرسال إشعار عندما يتعذّر الوصول إلى أي شخص.
يتوقف الموقع في الخلفيةاسمح بالموقع دائمًا وأزل تحسين البطارية للتطبيق على الهاتف.

الدعم

المساعدة في التثبيت وإصلاح الأخطاء مشمولان لمدة 6 أشهر مع تحديثات مدى الحياة. تواصل معنا عبر صفحة السوق التي اشتريت منها الوحدة أو راسل support@taqnix.com مع إصدار أودو ولقطة شاشة.