توثيق تطبيق النادل وشاشة عرض المطبخ (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، أو توزيع داخلي على أجهزتك. |
ثبّت وحدة أودو
- فُكّ ضغط الحزمة. بداخلها
taqnix_restaurant_kds.zip؛ فُكّه لتحصل على المجلدtaqnix_restaurant_kds. - انسخ المجلد إلى أحد مجلدات
addons_pathفي خادم أودو وأعد تشغيل أودو. - سجّل الدخول كمدير وفعّل وضع المطوّر ثم افتح التطبيقات واضغط تحديث قائمة التطبيقات.
- أزل مرشح «التطبيقات» وابحث عن Restaurant Waiter App واضغط تثبيت.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_restaurant_kds --stop-after-init
ببساطة: بعد التثبيت يظهر تطبيق جديد باسم المطعم في القائمة الرئيسية. ينشئ التثبيت أيضًا الأطباق الأربعة (المشروبات والمقبلات والطبق الرئيسي والحلويات؛ والأخيران معلّقان افتراضيًا) وقائمة بأسباب الإلغاء. ويمكنك تغيير كل ذلك.
مهم: خذ نسخة احتياطية قبل التثبيت على قاعدة بيانات الإنتاج كما تفعل مع أي وحدة. ويجب ألا تكون منتجات الأطباق مُتتبَّعة في المخزون (المكوّنات هي المتتبَّعة)؛ وإلا أخرجت نقطة البيع الطبق من المخزون أيضًا عند إغلاق الجلسة.
الإعداد الأول في 20 دقيقة
- افتح المطعم ← الإعدادات ← المطاعم وافتح مطعمك (نقطة بيع من نوع مطعم). فعّل تطبيق النادل وشاشة المطبخ وأضف طرق الدفع والصالات.
- أنشئ الصالات والطاولات (الفصل 7) ورتّبها في محرر خريطة الصالة.
- ضع أطباقك في نقطة البيع (متاح في نقطة البيع) مع فئة القائمة الخاصة بها؛ وأنشئ المحطات وحدّد لكل محطة الفئات التي تحضّرها (الفصلان 8 و10).
- أضف مجموعات الخيارات إلى الأطباق التي تحتاج إليها (الفصل 9).
- أنشئ قائمة المواد للأطباق واختر مواقع المخزون للمطبخ والبار (الفصل 11).
- أنشئ المستخدمين: النوادل، ومستخدمي المطبخ مع محطتهم، ومديرًا (الفصل 13).
- افتح جلسة نقطة بيع للمطعم (يفعل ذلك أمين الصندوق أو المدير من نقطة البيع ← لوحة المعلومات) ليتمكن النظام من تسجيل المدفوعات.
- ابنِ التطبيق بسكربت الإعداد (الفصل 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؛ ووضع النص هو الأسرع للنص اللاتيني. |
تطبيق النادل
ببساطة: سجّل الدخول بعنوان الخادم واسم الدخول وكلمة المرور. يفتح التطبيق على خريطة الصالة: الصالات كتبويبات، وكل طاولة بلونها المباشر مع عدد الضيوف والإجمالي الجاري والوقت منذ الإجلاس؛ وتنبض الطاولة عندما يكون الطعام جاهزًا.
- اضغط على طاولة رمادية، وحدّد عدد الضيوف، ثم اضغط أجلس الضيوف.
- اختر فئة واضغط على طبق؛ واستخدم البحث للوصول السريع. الأطباق التي نفدت تظهر بالرمادي.
- في الورقة التي تفتح اختر الخيارات الإلزامية والإضافات والمقعد والطبق، واكتب ملاحظة للمطبخ، ثم إضافة.
- راجع الأصناف في السلة ثم اضغط أرسل إلى المطبخ. تبقى الأصناف المعلّقة معلّقة؛ ويذهب كل ما عداها إلى المحطات فورًا.
الأطباق: التعليق والإطلاق
ببساطة: أصناف الطبق المعلّق (الأطباق الرئيسية والحلويات افتراضيًا) تُحفظ ولا تُرسل. وعندما تُرفع المقبلات اضغط أطلق على الطبق: تذهب الأصناف إلى محطاتها وتظهر التذاكر. أطلق الكل يرسل كل الأطباق المعلّقة، وتعليق يعيد الأصناف التي لم يبدأ بها أحد.
نصيحة: غيّر طبق صنف واحد قبل إرساله، أو فعّل تعليق أو عطّله له في ورقة الإضافة. لا يمكن طلب الفاتورة وفي الطلب أصناف معلّقة: أطلقها أو ألغها أولًا.
النقل والدمج والإلغاء والاستعجال و86
| الإجراء | كيف | النتيجة |
|---|---|---|
| النقل | ورقة الطاولة ← نقل الطاولة ← اختر طاولة شاغرة. | تنتقل المجموعة والطلب؛ وتعرض التذاكر الطاولة الجديدة. |
| الدمج | ورقة الطاولة ← دمج الطاولات ← اختر الطاولة الأخرى (مشغولة أو لا). | تتشارك الطاولتان طلبًا واحدًا؛ وتظهر الطاولتان باللون نفسه. فكّ الدمج عندما تغادر المجموعة. |
| الإلغاء | اضغط مطولًا على صنف ← إلغاء الصنف ← اختر سببًا. | يسمع المطبخ تنبيهًا ويرى الصنف مشطوبًا. الأصناف التي صارت جاهزة لا يلغيها إلا المديرون (بحسب الإعداد). |
| الاستعجال | ورقة الطلب ← عاجل. | تحمل تذاكر الطلب وسمًا أحمر «عاجل» وتتصدر الترتيب. |
| نفدت الكمية (86) | القائمة ← اضغط مطولًا على طبق ← علّم كنافد (86). | تُظهر كل الأجهزة الطبق بالرمادي. |
تقسيم الفاتورة ودفعها
ببساطة: اطلب الفاتورة: تتحول الطاولة إلى الأحمر ويُنبَّه أمناء الصندوق. توفّر ورقة التقسيم ثلاث طرق: بالتساوي بين الضيوف، وحسب الصنف أو المقعد (يبدأ التطبيق من أرقام مقاعد الأصناف، ويمكنك إعطاء حصة من طبق مشترك لعدة ضيوف)، ومخصص بمبالغ تحددها. تعرض الورقة إجمالي كل ضيف وتحذّر إذا لم يُوزَّع صنف بالكامل.
ببساطة: لكل ضيف اختر طريقة الدفع: نقدًا (لوحة الأرقام والمبالغ السريعة تعرض الباقي)، أو بطاقة أو طرقًا أخرى، أو رمز QR يعرض المبلغ لمسحه. أضف البقشيش، واختياريًا العميل للفاتورة الضريبية، ثم اضغط إتمام الدفع. بعد ذلك اطبع الإيصال أو شاركه.
شاشة المطبخ (وضع KDS)
ببساطة: وضع KDS مصمم لجهاز لوحي معلّق على الحائط: بالعرض، ودائم التشغيل، بخط كبير ومظهر داكن. اختر المحطة في الأعلى (الشواء، التحضير البارد، البار أو الإكسبو / الكل)؛ ويتذكر الجهاز اختيارك.
| على البطاقة | ماذا يعرض |
|---|---|
| الترويسة | رقم التذكرة، والطاولة والصالة، والنادل، والضيوف، ووسم «عاجل»، ووسم الدفعة (مثل الدفعة 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).
ببساطة: وضع الطباعة. وضع الصورة (الافتراضي) يرسم الإيصال صورةً بعرض الطابعة فتُطبع العربية والشعار ورمز QR بشكل صحيح؛ ووضع النص يرسل نص ESC/POS العادي، وهو الأسرع للنص اللاتيني. ويمكن طباعة فاتورة مبدئية قبل الدفع، ومشاركة الإيصال بصيغة PDF أو صورة. والإيصال نفسه موجود في أودو كتقرير 80 mm على كل فاتورة.
التقارير
ببساطة: في المطعم ← التقارير ثلاثة تحليلات، لكل منها عروض المحور (pivot) والرسم البياني والقائمة مع المرشحات والتجميعات المعتادة:
ببساطة: الطاولات المفتوحة لوحة كانبان لصالة الطعام المباشرة حسب حالة الطاولة، وتذاكر المطبخ تسرد كل تذكرة بوقت تحضيرها وحالة SLA، والفواتير تسرد كل فاتورة بمدفوعاتها والبقشيش والفاتورة الضريبية.
ابنِ التطبيقات وانشرها
ببساطة: فُكّ ضغط
flutter-app-source.zip. ملف README في المجلد هو الدليل الكامل؛ وهذا ملخصه:- ثبّت Flutter 3.41 أو أحدث (يجب أن يكون
flutter doctorأخضر لمنصاتك). - شغّل سكربت الإعداد بعنوان خادمك واسم الحزمة، واختياريًا الوضع الذي يُقفل عليه الجهاز:
dart run tools/setup.dart --url http://192.168.1.10:8069 --package com.yourrestaurant.tableservice
- استبدل الأيقونة المؤقتة (
assets/branding)، ونفّذflutter pub get. - أندرويد:
flutter build apk --release(أوappbundleلـ Google Play). آيفون وآيباد:flutter build ios --releaseثم أرشِف في Xcode. - ثبّت نسخة النادل على الهواتف والتطبيق نفسه على أجهزة المطبخ اللوحية: يتبع الوضع دور المستخدم، أو اقفل الجهاز على KDS بسكربت الإعداد.
- أجهزة المطبخ اللوحية: استخدم وضع الوصول الموجَّه / الكشك (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 مع إصدار أودو ولقطة شاشة.