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

توثيق مبيعات السيارات والتوزيع المباشر لأودو

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

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

ابدأ من هنا

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

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

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

كيف يمضي اليوم

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

ما تحتاج إليه

البندالتفاصيل
أودوالإصدار 19.0 Community أو Enterprise. تُثبَّت تلقائيًا مع الوحدة تطبيقات المبيعات والمخزون والفوترة والتموضع الجغرافي لجهات الاتصال؛ ويُفعَّل خيار قوائم الأسعار.
دليل الحساباتدليل حسابات (أي توطين) يضم يومية نقدية واحدة ويومية بنكية واحدة على الأقل. الضرائب من نوع نسبة مئوية مدعومة.
مكتبات بايثونPyJWT وrequests (للإشعارات الفورية). نفّذ pip install PyJWT requests إن لم تكن موجودة في أودو لديك.
محرك PDFwkhtmltopdf كأي أودو (ملف PDF للفاتورة والإيصال وتقرير التسوية).
العنوانعنوان https عام لأودو: يجب أن تصل الهواتف إليه. الشهادة الموقّعة ذاتيًا لا تعمل على الهواتف.
الهواتفأندرويد 8 أو أحدث، أو آيفون بنظام iOS 15 أو أحدث، مع GPS وكاميرا. يُفضَّل أن يستخدم المندوبون هاتفًا ببطارية سليمة.
الطابعاتأي طابعة حرارية محمولة ESC/POS بعرض 58 mm (2 بوصة) أو 80 mm (3 بوصة) مع بلوتوث. يعمل أندرويد مع الطرازات الشائعة من Bluetooth Classic؛ أما الآيفون فيعمل فقط مع الطابعات التي تدعم Bluetooth Low Energy (الفصل 14).
حاسوب لبناء التطبيقجهاز Mac للآيفون والأندرويد (ويندوز أو لينكس يبنيان الأندرويد فقط) بمساحة حرة نحو 30 غيغابايت، وFlutter 3.41 أو أحدث، وAndroid Studio وXcode.
حسابات المتاجرGoogle Play Console وبرنامج Apple Developer، أو توزيع داخلي على موظفيك.
اختياريمشروع Firebase مجاني للإشعارات الفورية؛ وخادم بريد صادر في أودو لإرسال الفواتير بالبريد.

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

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

الإعداد الأول في 15 دقيقة

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

السيارات والمندوبون والمشرفون

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

المنتجات والوحدات والأسعار والضرائب

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

العملاء والائتمان والمسارات

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

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

ببساطة: تضم مبيعات السيارات ← الإعداد ← الإعدادات كل قواعد الشركة. تبيّن كل كتلة ما تفعله ومتى تغيّرها.
الزيارات والمسارات والعملاء؛ السياج الجغرافي.
الزيارات والمسارات والعملاء؛ السياج الجغرافي.
الإعدادماذا يفعل
الزيارات غير المخططة، والعملاء الجدد، والطلبات للتسليم لاحقًاأي إجراءات إضافية يستطيع المندوب القيام بها. يمكن أيضًا إيقاف الزيارات غير المخططة والعملاء الجدد لكل سيارة.
أيام الخطةكم يومًا من الخطة يتلقاها الهاتف (7 افتراضيًا).
السياج الجغرافيلا تبدأ الزيارة إلا ضمن المسافة المسموحة (100 m افتراضيًا) ومع دقة GPS أفضل من الحد (50 m افتراضيًا). مع التجاوز يستطيع المندوب البدء رغم ذلك بكتابة سبب؛ فتُعلَّم الزيارة ويصل المشرف مهمة للمتابعة.
الأسعار والخصومات.
الأسعار والخصومات.
الإعدادماذا يفعل
يمكن للمندوبين تغيير الأسعارمتوقف افتراضيًا: السعر هو سعر قائمة الأسعار.
أقصى خصميمكن منح خصم حتى هذه النسبة على البند.
حد تسامح السعرالبيع الذي يختلف سعر وحدته عن قائمة الأسعار بأكثر من هذه النسبة يُعلَّم price_mismatch.
رقابة الائتمان.
رقابة الائتمان.
الإعدادماذا يفعل
المبيعات الآجلة مسموحةإذا أُوقف، يجب دفع كل بيع في الحال.
رقابة الائتمان وحده الافتراضيانيستخدمهما العملاء الذين ليس لديهم رقابة أو حد خاص.
أيام التأخرمنع الائتمان عند تأخر فاتورة أكثر من هذا العدد من الأيام (0 = بدون تحقق).
مراقب الائتمانتصله المهمة عندما يتجاوز البيع الحد.
المخزون والتحميل والمرتجعات.
المخزون والتحميل والمرتجعات.
الإعدادماذا يفعل
الموقع الأب لمواقع السيارات / موقع الحجرأين توجد السيارات وإلى أين تذهب المرتجعات التالفة والمنتهية.
التوقيع على التحميل / على كل بيعيُطلب من المندوب توقيع التحميل ومن العميل توقيع كل عملية بيع.
المرتجعاتالسماح بالمرتجعات؛ واشتراط صورة للبضاعة التالفة.
تسوية نهاية اليوم.
تسوية نهاية اليوم.
الإعدادماذا يفعل
الجرد المطلوب وحدود التسامحيجب على المندوب جرد المخزون؛ وتُبرز فروقات النقد والمخزون التي تتجاوز حد التسامح.
فروقات المخزونتعديل مخزون السيارة حسب الجرد عند اعتماد التسوية، أو تسجيل الفرق فقط.
يومية الصندوق وحساب الفرقيُسجَّل تسليم النقد من اليومية النقدية للسيارة إلى يومية الصندوق؛ وتذهب العجوزات والزيادات إلى حساب الفرق.
سيارة فارغةإرجاع المخزون غير المباع إلى المستودع عند الاعتماد.
الإيصالات والطباعة.
الإيصالات والطباعة.
الإعدادماذا يفعل
عرض الورق58 mm (2 بوصة) أو 80 mm (3 بوصة)؛ ويستطيع المندوب الاختيار أيضًا على الهاتف.
وضع الطباعةصورة: يُرسم الإيصال كصورة (أي لغة بما فيها العربية، وشعارك، ورمز QR). نص: نص ESC/POS، الأسرع، للحروف اللاتينية فقط.
الترويسة والتذييل وتسمية الضريبةأسطر تُطبع على كل إيصال؛ ويؤخذ الرقم الضريبي للشركة من سجل الشركة، وتسميته (TRN، رقم ضريبة القيمة المضافة...) من هنا.
إظهار عمود الضريبة والرصيد ورمز QRما يعرضه الإيصال. يفتح رمز QR صفحة التحقق العامة من الفاتورة.
تتبع الموقع.
تتبع الموقع.
الإعدادماذا يفعل
التتبعمتوقف، أو خلال ساعات العمل، أو دائمًا أثناء فتح التطبيق. الفواصل أثناء الحركة وأثناء السكون وأدنى مسافة وحد البطارية تجعله موفّرًا للبطارية. تُحفظ النقاط 30 يومًا افتراضيًا.
نص الخصوصيةيظهر في التطبيق قبل طلب إذن الموقع.
الإشعارات والمزامنة.
الإشعارات والمزامنة.
الإعدادماذا يفعل
الإشعارات الفوريةتم تحميل السيارة، تغيّرت الخطة، صدر قرار التسوية. يُدخَل هنا مشروع Firebase وحساب الخدمة (الفصل 21).
فاصل المزامنةكم مرة يزامن التطبيق في الخلفية (120 ثانية افتراضيًا).
خريطة المشرف.
خريطة المشرف.
النشاطالإعدادات المقترحة
موزّع المشروبات والمياهكراتين ووحدات، وقوائم أسعار بشرائح كميات، وحدود ائتمان صارمة للمتاجر الصغيرة، ومدفوعات رقمية، والحجر للزجاجات المكسورة، وخيار السيارة الفارغة كل مساء متوقف.
الوجبات الخفيفة والسلع الاستهلاكية والحلوياتبنود كثيرة في الزيارة: مسح الباركود، وحد خصم 5 %، وائتمان مرن، وحد تسامح للسعر 1 %، وإيصالات بوضع الصورة.
الألبان والمخابز والأغذية الطازجةمرتجعات انتهاء الصلاحية (السبب منتهٍ يذهب إلى الحجر)، والسيارة الفارغة كل مساء مفعّلة، وتسوية بجرد مطلوب، وحد تسامح للمخزون 0 %.
الآيس كريم والمجمّداتالسيارة الفارغة مفعّلة، وجرد صارم، ونقد ومدفوعات رقمية فقط (المبيعات الآجلة متوقفة)، وإيصالات 80 mm.
الصيدليات وجملة الرعاية الصحيةتوقيع على كل بيع، ورقابة ائتمان صارمة، وشيكات آجلة، دون زيارات غير مخططة، ودون تعديل الأسعار.
سيارات النقد (بدون ائتمان)المبيعات الآجلة مسموحة متوقفة: يُدفع كل إيصال كاملًا؛ وتقتصر التسوية على النقد والمخزون.

تحميل السيارة وتوقيع الصباح

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

يوم في التطبيق

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

البيع: المنتجات والباركود والوحدات والدفع

الكتالوج مع البحث والفئات ومخزون السيارة لكل منتج.
الكتالوج مع البحث والفئات ومخزون السيارة لكل منتج.
ببساطة: مسح الباركود يستخدم الكاميرا. امسح باركود الوحدة لإضافة وحدة، وامسح باركود الكرتون لإضافة كرتون؛ ومسح الرمز نفسه مرة أخرى يضيف واحدًا آخر. يُغلق الماسح تلقائيًا عند الانتهاء وتحتفظ السلة بالبنود.
امسح باركودًا لإضافة منتج بالوحدة الصحيحة.
امسح باركودًا لإضافة منتج بالوحدة الصحيحة.
السلة: الوحدات والكراتين وسعر الشريحة والضريبة والإجماليات.
السلة: الوحدات والكراتين وسعر الشريحة والضريبة والإجماليات.
إتمام البيع بدفعة نقدية والباقي آجل.
إتمام البيع بدفعة نقدية والباقي آجل.
شيك آجل: الرقم والبنك والتاريخ وصورة الشيك.
شيك آجل: الرقم والبنك والتاريخ وصورة الشيك.
القاعدةالتفاصيل
المخزونلا يمكن أن تتجاوز كمية المنتج في السلة ما في السيارة الآن (مخزون الخادم ناقص المبيعات التي لم تُزامَن بعد). ويُطبَّق البيع على مخزون الجهاز فورًا.
الوحداتللبند وحدة؛ وتغييرها يعيد تسعير البند (سعر شريحة وحدة أساسية واحدة × معامل الوحدة). وتُحسب حركات المخزون دائمًا بوحدة البند.
الأسعار والخصوماتيأتي السعر من قائمة أسعار العميل؛ ويحدّ الخصمَ الإعدادات؛ ولا يمكن تعديل السعر إلا إذا سمحت الشركة.
الضرائبضرائب نسبية شاملة أو غير شاملة، تُطابَق حسب المركز المالي للعميل؛ وتُقرَّب لكل بند. تُرسل معرّفات الضرائب المستخدمة إلى أودو لتعرض الفاتورة بالضبط ما يعرضه الإيصال.
الطلبات للتسليم لاحقًاإن سُمح بذلك، يؤكد حجز طلب طلبًا دون سحب مخزون من السيارة ودون فاتورة؛ ويتولى المستودع تسليمه.
ببساطة: يطبع التطبيق على طابعات حرارية ESC/POS بعرض 58 mm (2 بوصة، 384 نقطة) و80 mm (3 بوصة، 576 نقطة). يولّد التطبيق نفسه أوامر ESC/POS.
ما تطبعه طابعة 58 mm (معاينة في التطبيق).
ما تطبعه طابعة 58 mm (معاينة في التطبيق).
الإيصال نفسه على ورق 80 mm.
الإيصال نفسه على ورق 80 mm.
الكتلةالمحتوى
الترويسةالشعار واسم الموزّع والعنوان والهاتف والرقم الضريبي (TRN) وأسطر الترويسة من الإعدادات.
المستندرقم الإيصال، ورقم الفاتورة (عند إعادة الطباعة بعد المزامنة)، والتاريخ والوقت، والمندوب.
العميلالاسم والرمز والعنوان والرقم الضريبي.
البنودالمنتج والكمية والوحدة وسعر الوحدة والضريبة وإجمالي البند.
الإجمالياتغير شامل الضريبة، والضريبة، والإجمالي.
الدفعكل سطر دفع (نقد، رقمي مع المرجع، شيك مع الرقم والتاريخ، آجل)، والمدفوع، والرصيد المستحق على العميل.
التحققرمز QR. بعد مزامنة البيع يفتح صفحة التحقق العامة من الفاتورة (مستند أصلي، الرقم، التاريخ، الإجمالي، اسم العميل مُخفىً جزئيًا)؛ وقبل المزامنة يحمل رقم الإيصال والرقم الضريبي والإجمالي والوقت.
التذييلأسطر التذييل وعدد النسخ.
  1. شغّل الطابعة واقرنها في إعدادات البلوتوث بالهاتف إن احتاجت طابعتك ذلك (أندرويد). في التطبيق افتح الإعدادات ← الطابعة.
  2. اضغط بحث واختر طابعتك واختر عرض الورق (58 أو 80 mm) واضغط طباعة تجريبية.
  3. يتذكر التطبيق الطابعة ويعيد الاتصال بها تلقائيًا. بعد البيع يُطبع الإيصال تلقائيًا؛ والإيصالات في القائمة تتيح لك إعادة طباعة أو مشاركة أي إيصال.
شاشة الطابعة: الاتصال وعرض الورق والطباعة التجريبية.
شاشة الطابعة: الاتصال وعرض الورق والطباعة التجريبية.
الوضعمتى تستخدمه
صورة (نقطية)الافتراضي. يطبع العربية واللغات الأخرى وشعارك ورمز QR تمامًا كما في المعاينة. أبطأ قليلًا (بضع ثوانٍ للإيصال الطويل).
نصالأسرع ويستخدم الخط المدمج في الطابعة: الإنجليزية والأرقام فقط.
مهم: الآيفون وطابعات البلوتوث. يتحدث iOS فقط مع أجهزة Bluetooth Low Energy، ومعظم الطابعات المحمولة الرخيصة من نوع Bluetooth Classic (SPP) الذي لا يستطيع iOS استخدامه. على الآيفون اختر طابعة تدعم BLE، أو اطبع إلى PDF/AirPrint. على أندرويد تعمل الطابعات المحمولة الشائعة. لا يضم التطبيق تعريفات: الطابعة التي تفهم ESC/POS وأمر الصور النقطية تعمل؛ جرّب طباعة تجريبية قبل شراء أسطول كامل.

المرتجعات والتالف والانتهاء

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

التحصيلات والشيكات الآجلة

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

نهاية اليوم: الجرد والنقد والاعتماد

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

رقابة الائتمان موضحة

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

خريطة المشرف والزيارات والتقارير

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

دون اتصال والمزامنة وما تعنيه التنبيهات

ببساطة: صندوق الصادر. يُكتب كل إجراء في قاعدة بيانات الهاتف مع عملية: معرّف فريد (UUID)، ونوع، ووقت الهاتف، ورقم تسلسلي لا يتغير (يرتفع فقط، ويبقى بعد إعادة التشغيل، ويتابع من أعلى رقم رآه أودو إذا أُعيد تثبيت التطبيق). ترسل المزامنة العمليات بالترتيب (100 في كل استدعاء)، ويطبّق أودو كل عملية مرة واحدة ويرد: applied أو duplicate (سبق رؤيتها: تُعاد النتيجة المخزنة) أو rejected (مع رمز) أو conflict؛ ثم ينزّل الهاتف ما تغيّر. وإذا ضاع الرد فإعادة المحاولة غير ضارة.
العمل دون اتصال: المبيعات والمدفوعات تنتظر في صندوق الصادر.
العمل دون اتصال: المبيعات والمدفوعات تنتظر في صندوق الصادر.
العمليات التي رفضها أودو تُسرد مع السبب ويمكن إعادة محاولتها.
العمليات التي رفضها أودو تُسرد مع السبب ويمكن إعادة محاولتها.
التنبيه في أودوالمعنىماذا تفعل
price_mismatchيختلف سعر الوحدة عن قائمة الأسعار بأكثر من حد التسامح.راجع البيع؛ صحّح قائمة الأسعار أو درّب المندوب.
discount_exceededخصم يتجاوز الحد الأقصى في الإعدادات.راجع البيع.
tax_mismatchاستخدم الهاتف ضرائب غير ضرائب أودو؛ وتستخدم الفاتورة ضرائب أودو.حدّث بيانات التطبيق (زامن) وراجع المركز المالي للعميل.
total_mismatchيختلف إجمالي الفاتورة عن الإجمالي الذي طبعه الهاتف.قارن إعدادات الضرائب والتقريب.
credit_exceededالعميل فوق حد الائتمان أو لديه فواتير متأخرة.يقرر مراقب الائتمان؛ والفاتورة معتمدة فعلًا.
outside_geofenceبدأت الزيارة خارج النطاق (سبب التجاوز في الزيارة).راجع السبب؛ وصحّح موقع GPS للعميل إن كان خاطئًا.
negative_stockباع أكثر مما في السيارة (أصبح المخزون سالبًا).لم يُسجَّل تحميل أو أن الجرد خاطئ؛ وستكشفه التسوية.
late_syncوصلت العملية إلى أودو بعد أكثر من 12 ساعة من حدوثها.للعلم فقط.
blocked_customerبيع لعميل محظور.تحقق من السبب.
return_exceeds_invoice, return_price_mismatch, invoice_mismatch, return_without_invoiceمرتجع أكبر أو أغلى من الفاتورة التي يشير إليها، أو فاتورة لعميل آخر، أو مرتجع بلا فاتورة.راجع المرتجع قبل دفع الاسترداد؛ والاسترداد النقدي بلا فاتورة يُعلَّم.
نصيحة: العمليات المرفوضة لا تنشئ مستندًا ناقصًا أبدًا: إذا فشلت عملية فلا يبقى منها شيء في أودو، ويحتفظ بها الهاتف مع السبب إلى أن تصحّح البيانات وتعيد المحاولة، أو تتجاهلها عمدًا.

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

ببساطة: تخطَّ هذا الفصل إن أردت الاختبار فقط: يعمل 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.vansales. أضف --name "Your Company Vans" و--color "#166534" و--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.vansales
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).
مهم: يطلب المتجران تبرير الموقع في الخلفية: استخدم الجملة The app records the position of the salesman during working hours to prove customer visits and plan routes، وانشر سياسة خصوصية. على أندرويد 12 وما بعده يطلب التطبيق إذن البلوتوث للعثور على الطابعة؛ وعلى الآيفون يطلب الوصول إلى البلوتوث. يعرض التطبيق شرحه الخاص قبل كل إذن.
ببساطة: الإشعارات الفورية (Firebase): أنشئ مشروع Firebase، وأضف تطبيق أندرويد وتطبيق iOS باسمَي حزمتيك، وارفع مفتاح APNs لـ iOS في إعدادات المشروع ← Cloud Messaging، وأدخل معرّف المشروع ومفتاح API ومعرّفات التطبيقات في أودو (الإعدادات ← الإشعارات والمزامنة) والصق ملف JSON لحساب الخدمة. يقرأ التطبيق المعرّفات من خادمك عند تسجيل الدخول، فلا تحتوي الشيفرة المصدرية على أي مفتاح.
تسجيل الدخول بحساب أودو الخاص بالمندوب.
تسجيل الدخول بحساب أودو الخاص بالمندوب.
إعدادات التطبيق: اللغة والطابعة والتتبع والمزامنة.
إعدادات التطبيق: اللغة والطابعة والتتبع والمزامنة.

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

الموضوعكيف يُعالَج
الوصوليسجّل التطبيق الدخول بحساب أودو؛ ولا يدخل إلا مستخدمو مجموعة المندوب الذين لهم سيارة مسندة. يرى المندوب فقط عملاء مسارات سيارته (وكل العملاء إذا سُمح بالزيارات غير المخططة). وفي أودو لا يرى المندوب إلا مستندات سيارته ولا يستطيع تغيير أي شيء.
الرموزرمز عشوائي لكل جهاز، ولا يُخزَّن في أودو إلا تجزئته، وتُنسى الأجهزة غير المستخدمة منذ 180 يومًا. تسردها الأجهزة؛ وتسجيل الخروج من كل الأجهزة في السيارة يلغيها. يبطّئ أودو المحاولات المتكررة بكلمة مرور خاطئة. الحسابات ذات المصادقة الثنائية لا تستطيع تسجيل الدخول إلى التطبيق.
العملياتتُفحص كل عملية على الخادم: يجب أن يكون العميل والمنتجات والوحدات والضرائب وطرق الدفع والمستندات موجودة في الشركة وتخص سيارة المستخدم؛ ويجب أن تكون الأرقام منتهية وضمن النطاق؛ والصور محدودة بـ 6 MB.
عدم التكراريُنشأ المستند مرة واحدة لكل معرّف فريد حتى لو أعاد الهاتف المحاولة؛ وتُنشأ تسوية اليوم مرة واحدة.
صفحة التحققيفتح رمز QR في الإيصال /vs/verify/<token>: ولا تعرض إلا الشركة ورقم الفاتورة والتاريخ والإجمالي واسم العميل مُخفىً جزئيًا، وتظهر «غير موجود» فيما عدا ذلك. الرمز عشوائي وطويل.
الموقعلا يُجمع إلا حسب الإعداد، مع نص الخصوصية وإذن النظام؛ وتُحذف يوميًا النقاط الأقدم من مدة الاحتفاظ (30 يومًا افتراضيًا). لا يرى العملاء موقع المندوب أبدًا.
الأسرارحساب خدمة Firebase مقروء فقط لمديري أودو. ولا يحتوي التطبيق إلا على معرّفات عامة.
نصيحة: تتطلب بعض الدول إشعارًا مكتوبًا أو موافقة لتتبع موقع الموظفين: استخدم نص الخصوصية في الإعدادات وسياستك الخاصة.

من الجيد أن تعرف

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

للمطورين

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

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

# push the queued operations and pull the changes (every operation has a uuid and an immutable local_seq)
curl -X POST https://odoo.example.com/api/vs/v1/sync -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"cursor": null, "include_master": true, "ops": [{"uuid": "9d1c...", "type": "visit_start", "local_seq": 41, "device_time": "2026-10-26T08:01:00Z",
        "payload": {"visit_uuid": "5f0e...", "partner_id": 7, "planned": true, "lat": 25.2, "lng": 55.27, "accuracy": 8}}]}'
المجالنقاط النهاية تحت /api/vs/v1
الجلسةGET /ping, /config, /auth/me; POST /auth/login, /auth/logout, /auth/push-token
المزامنةPOST /sync (operations: visit_start, visit_end, van_sale, order_booking, return, payment, load_accept, settlement_submit, customer_create)
التتبعPOST /tracking/batch (also /api/vs/tracking/batch)
البياناتGET /partners/<id>/credit, /products/<id>/image, /company/logo
المستنداتGET /orders/<id>/receipt, /orders/<id>/invoice.pdf, /orders/<id>/receipt.pdf; public: GET /vs/verify/<token>
ببساطة: ترسل الاستدعاءات Authorization: Bearer <token> واختياريًا Accept-Language. لكل عملية في /sync قيمة uuid فريدة وlocal_seq لا يتغير، ويكون الرد applied أو duplicate أو rejected أو conflict. للوحدة أكثر من 110 اختبارات آلية (--test-tags /taqnix_van_sales) وللتطبيق اختبارات وحدات (flutter test).

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

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

الدعم

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