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

توثيق تطبيق النادل وشاشة عرض المطبخ (KDS) لأودو 19 Community

دليل تطبيق النادل وشاشة المطبخ لأودو: تثبيت الوحدة والصالات والقائمة والخيارات والمحطات والوصفات والفوترة وتطبيق النادل وشاشة المطبخ والزمن الحقيقي على الشبكة المحلية والطباعة والتقارير وبناء التطبيق.

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

ابدأ من هنا

ببساطة: تمنحك هذه الحزمة نظامًا متكاملًا لـأخذ الطلبات عند الطاولة وشاشة المطبخ لـأودو Community: وحدة أودو (taqnix_restaurant_kds) توسّع نقطة بيع المطاعم، والشيفرة المصدرية بـ Flutter لـتطبيق واحد بوضعين: النادل (الهواتف والأجهزة اللوحية الصغيرة) وشاشة المطبخ / KDS (أجهزة المطبخ اللوحية من 10 إلى 15 بوصة). يأخذ النوادل الطلبات عند الطاولة، فيرى المطبخ تذكرة لكل محطة بعد جزء من الثانية، وعندما يدفع الضيوف يسجّل أودو البيع في جلسة نقطة البيع المفتوحة ويخصم المكوّنات من المخزون.
خريطة الصالة في أودو وتطبيق النادل وشاشة المطبخ.
خريطة الصالة في أودو وتطبيق النادل وشاشة المطبخ.
نصيحة: لا شيء هنا يحتاج إلى أودو Enterprise. تستخدم الوحدة تطبيقات Community فقط: نقطة البيع مع امتداد المطاعم، والتصنيع (للوصفات)، والمخزون، والفوترة. أما الرابط المباشر بين الأجهزة فهو websocket الموجود أصلًا في كل أودو.

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

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

كيف تسير الخدمة

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

ما تحتاج إليه

البندالتفاصيل
أودوالإصدار 19.0 Community أو Enterprise. تُثبَّت تلقائيًا مع الوحدة تطبيقات نقطة البيع مع المطاعم، والتصنيع، والمخزون، والفوترة.
دليل الحساباتدليل حسابات (أي توطين) يضم يومية نقدية ويومية بنكية. الضرائب من نوع نسبة مئوية مدعومة، والأسعار الشاملة للضريبة تعمل.
الخادملمطعم واحد: أي حاسوب صغير (ذاكرة 4 غيغابايت وقرص SSD) داخل المطعم، أو خادم سحابي إذا قبلت أن يكون الإنترنت جزءًا من الخدمة. راجع الفصل 21.
الشبكةواي فاي جيد تتصل به جميع الأجهزة على الشبكة نفسها التي فيها الخادم، وعنوان IP ثابت للخادم.
الأجهزةالنوادل: هواتف أندرويد 8 أو أحدث أو آيفون (iOS 15 أو أحدث). المطبخ: أجهزة لوحية من 10 إلى 15 بوصة، مثبّتة على الحائط أو على حامل، ومتصلة بالكهرباء دائمًا.
الطابعاتاختيارية: طابعات حرارية ESC/POS بعرض 58 أو 80 mm، عبر البلوتوث أو الشبكة (منفذ TCP رقم 9100).
حاسوب لبناء التطبيقجهاز Mac للآيفون والأندرويد (ويندوز أو لينكس يبنيان الأندرويد فقط)، بمساحة حرة نحو 30 غيغابايت، وFlutter 3.41 أو أحدث، وAndroid Studio وXcode.
حسابات المتاجرGoogle Play Console وبرنامج Apple Developer، أو توزيع داخلي على أجهزتك.

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

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

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

  1. افتح المطعم ← الإعدادات ← المطاعم وافتح مطعمك (نقطة بيع من نوع مطعم). فعّل تطبيق النادل وشاشة المطبخ وأضف طرق الدفع والصالات.
  2. أنشئ الصالات والطاولات (الفصل 7) ورتّبها في محرر خريطة الصالة.
  3. ضع أطباقك في نقطة البيع (متاح في نقطة البيع) مع فئة القائمة الخاصة بها؛ وأنشئ المحطات وحدّد لكل محطة الفئات التي تحضّرها (الفصلان 8 و10).
  4. أضف مجموعات الخيارات إلى الأطباق التي تحتاج إليها (الفصل 9).
  5. أنشئ قائمة المواد للأطباق واختر مواقع المخزون للمطبخ والبار (الفصل 11).
  6. أنشئ المستخدمين: النوادل، ومستخدمي المطبخ مع محطتهم، ومديرًا (الفصل 13).
  7. افتح جلسة نقطة بيع للمطعم (يفعل ذلك أمين الصندوق أو المدير من نقطة البيع ← لوحة المعلومات) ليتمكن النظام من تسجيل المدفوعات.
  8. ابنِ التطبيق بسكربت الإعداد (الفصل 24) وثبّته على الأجهزة وسجّل الدخول وجرّب طلبًا تجريبيًا.
نصيحة: البيانات التجريبية في اللقطات (The Copper Grill) ينشئها الملف tests/seed.py في الحزمة المصدرية: وهو مثال كامل لكل إعداد.

الصالات والطاولات وخريطة الصالة

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

خيارات الطبق: الإلزامية والإضافات والملاحظات

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

المحطات والتوجيه الذكي

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

الوصفات واستهلاك المخزون

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

الفواتير والمدفوعات والبقشيش والفواتير الضريبية

ببساطة: يجري الدفع على الفواتير. طلب الفاتورة ينشئ فاتورة واحدة بكل ما عليها، ويستطيع النادل تقسيمها. تُجمع كل دفعة في التطبيقات؛ وعند دفع آخر فاتورة تسجّل الوحدة البيع في جلسة نقطة البيع المفتوحة للمطعم (أمر نقطة بيع عادي بمدفوعاته، فتعمل تقارير نقطة البيع والإغلاق كالمعتاد).
التقسيمكيف يعمليُسجَّل في نقطة البيع كـ
فاتورة واحدةفاتورة واحدة للطاولة.أمر واحد.
حصص متساويةالقسمة على عدد الضيوف؛ ويتحمل آخر ضيف فرق التقريب.أمر واحد بدفعة لكل ضيف.
حسب الصنف أو المقعديُعطى كل صنف (أو حصة منه، للطبق الذي تتقاسمه الطاولة) لضيف.أمر لكل ضيف.
حسب المبلغأي مبالغ يساوي مجموعها الإجمالي.أمر واحد بالمدفوعات.
فاتورة مدفوعة في أودو مع مدفوعاتها وأمر نقطة البيع والفاتورة الضريبية.
فاتورة مدفوعة في أودو مع مدفوعاتها وأمر نقطة البيع والفاتورة الضريبية.
الموضوعالتفاصيل
طرق الدفعطرق نقطة البيع. يقبل النقد مبلغًا أكبر من المطلوب ويعرض الباقي. علّم الطريقة بـ عرض رمز QR في تطبيق النادل لعرض رمز QR الفاتورة.
الدفع بـ QRفي نموذج المطعم، نص الدفع عبر QR هو نص الرمز مع {amount} و{currency} و{reference} و{company}، مثل رابط UPI. لا يستطيع أودو معرفة أن الضيف دفع عبر QR: يؤكد النادل ذلك.
البقشيشفعّل البقشيش في نموذج المطعم (واختر منتج البقشيش). يختار النادل نسبة مئوية أو يكتب مبلغًا؛ ويصبح البقشيش بندًا في أمر نقطة البيع.
الفاتورة الضريبيةعند الدفع يفعّل النادل فاتورة ضريبية لعميل ويكتب اسم العميل ورقمه الضريبي. ينشئ أودو العميل أو يجده ويرحّل الفاتورة.
لا توجد جلسة مفتوحةيعرض التطبيق «لا توجد جلسة صندوق مفتوحة». افتح الجلسة واضغط الزر مرة أخرى.
مهم: يجب ألا تكون الأطباق منتجات مخزنية: فنقطة البيع تخرج المنتجات المباعة من المخزون مرة أخرى عند إغلاق الجلسة. وهذه الوحدة هي التي تستهلك المكوّنات.

المستخدمون والأدوار والأجهزة

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

مرجع إعدادات المطعم

نموذج المطعم: قواعد الخدمة.
نموذج المطعم: قواعد الخدمة.
المطبخ والمؤقتات ومخزون الوصفات.
المطبخ والمؤقتات ومخزون الوصفات.
الإعدادالمعنى
الضيوف افتراضيًا / الحد الأقصى للضيوفيبدأ عدّاد الضيوف في التطبيق من القيمة الافتراضية ويتوقف عند الحد الأقصى.
تعليق وإرسالعطّله إن كنت لا تعلّق الأطباق أبدًا: فيُرسل كل شيء دفعة واحدة.
دمج الطاولات / تقسيم الفواتيرعطّل الميزتين في المطاعم التي لا تحتاج إليهما.
يحصّل النوادل المدفوعاتمعطّل: لا يستطيع تحصيل المدفوعات في التطبيقات إلا المديرون.
يمكن للنوادل تحديد نفاد الكمية (86)معطّل: لا يستطيع ذلك إلا المطبخ والمديرون.
إلغاء بعد الجاهزيةمن يستطيع إلغاء صنف صار جاهزًا أو مقدَّمًا: المديرون فقط، أو النوادل أيضًا، أو لا أحد.
المحطات / المحطة الافتراضيةشاشات المطعم، والشاشة التي تتلقى الأطباق التي لا قاعدة لها.
التنبيه بعد / التأخر بعد (دقيقة)ألوان المؤقت.
استهلاك المكوّنات، مستويات الوصفة، موقع مخزون المطبخالفصل 11.
البقشيش، خيارات البقشيشالفصل 12.
ورق الإيصال، وضع طباعة الإيصال، نسخ الإيصال، أسطر الترويسة والتذييل58 أو 80 mm؛ وضع الصورة يطبع أي لغة والشعار ورمز QR؛ ووضع النص هو الأسرع للنص اللاتيني.

تطبيق النادل

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

الأطباق: التعليق والإطلاق

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

النقل والدمج والإلغاء والاستعجال و86

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

تقسيم الفاتورة ودفعها

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

شاشة المطبخ (وضع KDS)

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

العدّ اليومي والاسترجاع وعرض الإكسبو

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

الوقت الفعلي على شبكتك

ببساطة: كل تغيير (تذكرة جديدة، إنجاز، إلغاء، لون طاولة) يُكتب في سجل أحداث في أودو ويُدفع عبر websocket الخاص بأودو على قناة سرية للمطعم. وتشترك فيها كل الأجهزة. في القياس على حاسوب محمول للتطوير ظهرت التذكرة على websocket بعد 2 إلى 4 ms من رد أودو على النادل، ونحو 80 ms من الضغطة إلى الشاشة شاملةً طلب HTTP؛ وعلى شبكة محلية حقيقية توقّع أقل بكثير من 300 ms. وتعتمد الأرقام على الواي فاي والخادم لديك.
الحالةماذا يحدث
انقطاع websocketتحتفظ لوحة المطبخ بآخر التذاكر وتستمر المؤقتات وتظهر لافتة تقول إعادة الاتصال. وعند العودة يطلب التطبيق الأحداث التي فاتته (/events?since=)؛ وإذا لم يعد السجل يحتويها أعاد تحميل كل شيء.
تعذّر وصول النادل إلى الخادمتُحفظ الطلبات في صندوق الصادر على الهاتف (برقم تسلسلي ثابت ومعرّف فريد) وتُرسل بالترتيب عند عودة الاتصال؛ وتعرض الطاولة لم يُرسل بعد.
انقطاع الإنترنتلا يتغير شيء إذا كان أودو يعمل داخل المطعم: تحتاج الأجهزة إلى الشبكة المحلية فقط. وإذا كان أودو في السحابة تتوقف الخدمة، لذا استخدم خادمًا محليًا للخدمة المباشرة.
websocket محجوب بوسيطيعود التطبيق إلى الاستطلاع الدوري لسجل الأحداث كل 15 ثانية.
نادلان يرسلان إلى طاولة واحدةيُضاف الطلبان إلى الطلب المفتوح نفسه.
ببساطة: تثبيت الخادم على الشبكة المحلية. شغّل أودو وPostgreSQL على حاسوب صغير داخل المطعم، وأعطه عنوان IP ثابتًا (مثل 192.168.1.10)، واستخدم عنوان أودو http://192.168.1.10:8069 في التطبيق، واحتفظ بالسحابة للنسخ الاحتياطية الليلية. مع workers = 0 (الافتراضي للتثبيتات الصغيرة) يكون websocket على المنفذ نفسه. ومع العمال (workers) شغّل منفذ gevent (gevent_port = 8072) ووجّه /websocket إليه:
location /websocket {
    proxy_pass http://127.0.0.1:8072;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_read_timeout 3600s;
}
مهم: لا تسمح نسخ التطبيق ببروتوكول http العادي على الشبكة المحلية إلا إذا فعّلت ذلك (في سكربت الإعداد خيار لهذا؛ ويُشرح المقابل في README التطبيق). استخدم https متى كان الخادم على الإنترنت.
ببساطة: تُطبع الإيصالات بواسطة التطبيق: لا حاجة إلى توصيل أي طابعة بأودو. ينشئ التطبيق أوامر ESC/POS بنفسه ويرسلها عبر البلوتوث (أندرويد: طابعات Bluetooth Classic؛ الآيفون: الطابعات التي تدعم Bluetooth Low Energy فقط) أو عبر الشبكة (TCP، عادةً المنفذ 9100). اقرن الطابعة من الإعدادات ← الطابعة؛ وتفحص الطباعة التجريبية العرض (58 أو 80 mm).
اختر الطابعة وعرض الورق.
اختر الطابعة وعرض الورق.
الإيصال كما يُطبع على 80 mm: الأصناف مع الخيارات والضرائب والمدفوعات والبقشيش ورمز QR.
الإيصال كما يُطبع على 80 mm: الأصناف مع الخيارات والضرائب والمدفوعات والبقشيش ورمز QR.
ببساطة: وضع الطباعة. وضع الصورة (الافتراضي) يرسم الإيصال صورةً بعرض الطابعة فتُطبع العربية والشعار ورمز QR بشكل صحيح؛ ووضع النص يرسل نص ESC/POS العادي، وهو الأسرع للنص اللاتيني. ويمكن طباعة فاتورة مبدئية قبل الدفع، ومشاركة الإيصال بصيغة PDF أو صورة. والإيصال نفسه موجود في أودو كتقرير 80 mm على كل فاتورة.
تقرير الإيصال 80 mm في أودو.
تقرير الإيصال 80 mm في أودو.

التقارير

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

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

ببساطة: فُكّ ضغط flutter-app-source.zip. ملف README في المجلد هو الدليل الكامل؛ وهذا ملخصه:
  1. ثبّت Flutter 3.41 أو أحدث (يجب أن يكون flutter doctor أخضر لمنصاتك).
  2. شغّل سكربت الإعداد بعنوان خادمك واسم الحزمة، واختياريًا الوضع الذي يُقفل عليه الجهاز:
    dart run tools/setup.dart --url http://192.168.1.10:8069 --package com.yourrestaurant.tableservice
  3. استبدل الأيقونة المؤقتة (assets/branding)، ونفّذ flutter pub get.
  4. أندرويد: flutter build apk --release (أو appbundle لـ Google Play). آيفون وآيباد: flutter build ios --release ثم أرشِف في Xcode.
  5. ثبّت نسخة النادل على الهواتف والتطبيق نفسه على أجهزة المطبخ اللوحية: يتبع الوضع دور المستخدم، أو اقفل الجهاز على KDS بسكربت الإعداد.
  6. أجهزة المطبخ اللوحية: استخدم وضع الوصول الموجَّه / الكشك (kiosk) في الجهاز كي لا يمكن إغلاق التطبيق، وأبقِها موصولة بالكهرباء.
مهم: يمكن بناء التطبيق لأجهزتك الخاصة دون أي حساب متجر (نسخة تطوير أو ad-hoc). والمتاجر ضرورية فقط لتوزيعه بسهولة على أجهزة كثيرة.

واجهة برمجة التطبيق للمطورين

ببساطة: كل ما تفعله التطبيقات متاح عبر واجهة REST صغيرة (/api/kds/v1) إضافة إلى websocket المباشر. العقد موجود في documentation/API.md. العمليات متكررة الأمان (idempotent): فالإنجاز أو الدفع المرسل مرتين يكون أثره كأثر مرة واحدة.
# is the server reachable?
curl http://192.168.1.10:8069/api/kds/v1/ping
# {"ok": true, "api_version": 1, "server_time": "2026-10-27T18:30:00Z"}

# sign in (returns a token and the restaurants of the account)
curl -X POST http://192.168.1.10:8069/api/kds/v1/auth/login -H 'Content-Type: application/json' \
  -d '{"login": "maya@coppergrill.example", "password": "...", "device": {"id": "tablet-1", "platform": "ios", "mode": "waiter"}}'

# send an order (idempotent: the same operation uuid is applied once)
curl -X POST http://192.168.1.10:8069/api/kds/v1/op/order_push -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"uuid": "4c1f...", "order_uuid": "a9d2...", "table_id": 12, "guests": 4, "fire": true,
       "lines": [{"uuid": "7b0e...", "product_id": 82, "qty": 2, "option_ids": [31], "note": "Severe peanut allergy"}]}'

# watch the kitchen events live (Odoo websocket; send an Origin header)
#   ws://192.168.1.10:8069/websocket   then   {"event_name":"subscribe","data":{"channels":["kds.1.9f3a..."],"last":0}}
الاستدعاءالاستخدام
POST /auth/loginالرمز المميز وأدوار المستخدم والمطاعم.
GET /bootstrapالقائمة وخيارات الطبق والأطباق والمحطات والصالات والطلبات المفتوحة وإعدادات الوقت الفعلي.
POST /op/<type>, POST /syncعملية واحدة أو دفعة مرتبة حتى 100 عملية (order_push وcourse_fire وticket_bump وbill_pay، ...).
GET /tickets, /summary, /tickets/historyلوحة المحطة، والعدّ اليومي، ودرج الاسترجاع.
GET /events?since=تعويض ما فات بعد الانقطاع.
GET /bills/<id>/receiptكل ما يلزم لطباعة الإيصال.

التحديث والنسخ الاحتياطي وإلغاء التثبيت

ببساطة: استبدل مجلد الوحدة بالإصدار الجديد، وأعد تشغيل أودو ونفّذ -u taqnix_restaurant_kds. تبقى طلباتك وفواتيرك وتذاكرك وإعداداتك. حدّث التطبيقات بالمصدر الجديد وأعد بناءها؛ فواجهة البرمجة مُرقَّمة الإصدار (/v1)، وتستمر التطبيقات الأقدم في العمل مع الوحدات الأحدث ضمن الإصدار نفسه.
ببساطة: خذ نسخة احتياطية من قاعدة البيانات ومن filestore كالمعتاد. يحتفظ سجل الأحداث المباشر بـ 48 ساعة فقط ويُنظَّف تلقائيًا. ولإلغاء التثبيت استخدم التطبيقات ← Restaurant Waiter App ← إلغاء التثبيت؛ وتبقى أوامر نقطة البيع والفواتير الضريبية التي أُنشئت للفواتير المدفوعة في أودو.

حل المشكلات

المشكلةالسبب والحل
يقول التطبيق لم يتم إعداد أي مطعم لهذا الحسابفعّل تطبيق النادل وشاشة المطبخ في المطعم وتأكد من أن المستخدم ينتمي إلى الشركة نفسها.
لا تظهر التذاكر على KDSتحقق من محطة الطبق (الفصل 10) ومن أن الشاشة تعرض المحطة الصحيحة أو الإكسبو؛ وانظر إلى شارة الاتصال.
كل شيء يعمل لكن لا شيء مباشرwebsocket محجوب: وجّه /websocket إلى منفذ gevent في الوسيط (الفصل 21) أو اضبط proxy_mode بشكل صحيح؛ ويعتمد التطبيق على الاستطلاع الدوري في هذه الأثناء.
«لا توجد جلسة صندوق مفتوحة» عند الدفعافتح جلسة للمطعم في نقطة البيع.
لا تُستهلك المكوّناتيحتاج الطبق إلى قائمة مواد، ويجب ألا يكون استهلاك المكوّنات على أبدًا؛ وتحقق من موقع المخزون.
مخزون الطبق ينقص مرتينالطبق منتج مخزني: اجعله غير مُتتبَّع في المخزون.
الإيصال العربي يُطبع مربعاتاضبط وضع الطباعة على الصورة.
لا تتصل الطابعة على الآيفونيدعم iOS طابعات Bluetooth Low Energy فقط؛ استخدم طابعة شبكة أو جهاز أندرويد.
لا يصل التطبيق إلى خادم http على iOS أو أندرويدفعّل الوصول إلى الشبكة المحلية بخيار سكربت الإعداد أو استخدم https.
تبقى الطاولة حمراء أو زرقاءما زال هناك طلب مفتوح: افتح المطعم ← الطاولات المفتوحة وراجعه، أو ألغِه بصفتك مديرًا.

الدعم

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

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