feat(orders): per-item kitchen/bar notes (POS + QR app + KDS)
CI/CD / CI · API (dotnet build + test) (push) Successful in 57s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 57s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m6s
CI/CD / CI · Admin Web (tsc) (push) Successful in 35s
CI/CD / CI · Website (tsc) (push) Successful in 44s
CI/CD / CI · Koja (tsc) (push) Successful in 49s
CI/CD / Deploy · all services (push) Successful in 2m43s
CI/CD / CI · API (dotnet build + test) (push) Successful in 57s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 57s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m6s
CI/CD / CI · Admin Web (tsc) (push) Successful in 35s
CI/CD / CI · Website (tsc) (push) Successful in 44s
CI/CD / CI · Koja (tsc) (push) Successful in 49s
CI/CD / Deploy · all services (push) Successful in 2m43s
Lets the POS agent and the QR/app customer attach a free-text note to each order line (e.g. "no tomato", "extra hot") that reaches the kitchen/bar. - Backend already supported it (OrderItem.Notes persists; CreateOrderItemRequest and OrderItemDto carry Notes; LiveOrderDto items include it) — this wires the UI. - cart.store: add setNotes(menuItemId, notes); notes already travel in getPendingLines and round-trip via hydrateFromOrder. - POS pos-screen: a note input under each cart line. - QR guest menu: a note input under each cart line (QrCartLine.note). - KDS: render the note prominently under each item so kitchen/bar sees it. - i18n: pos.itemNotePlaceholder + qrMenu.itemNote (fa/ar/en). Note: notes are captured on items being added; editing a note on an already-submitted line is out of scope (no pending delta to re-send). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -270,6 +270,7 @@
|
||||
"void": "إلغاء",
|
||||
"voidItem": "إلغاء الصنف",
|
||||
"voided": "ملغى",
|
||||
"itemNotePlaceholder": "ملاحظة للمطبخ/البار (اختياري)",
|
||||
"confirmVoid": "هل أنت متأكد أنك تريد إلغاء هذا الصنف؟",
|
||||
"voidError": "تعذر إلغاء الصنف",
|
||||
"transferTable": "نقل الطاولة",
|
||||
@@ -883,6 +884,7 @@
|
||||
"orderHint": "سيقوم الموظفون بتحضير طلبك قريباً",
|
||||
"guestName": "اسمك (اختياري)",
|
||||
"guestPhone": "الجوال (اختياري)",
|
||||
"itemNote": "ملاحظة (مثلاً بدون طماطم، سكر أقل)",
|
||||
"addMoreItems": "إضافة المزيد",
|
||||
"orderError": "تعذر تسجيل الطلب. حاول مرة أخرى.",
|
||||
"rateLimited": "طلبات كثيرة — انتظر بضع دقائق",
|
||||
|
||||
@@ -289,6 +289,7 @@
|
||||
"void": "Void",
|
||||
"voidItem": "Void item",
|
||||
"voided": "Voided",
|
||||
"itemNotePlaceholder": "Note for kitchen/bar (optional)",
|
||||
"confirmVoid": "Are you sure you want to void this item?",
|
||||
"voidError": "Could not void item",
|
||||
"transferTable": "Transfer table",
|
||||
@@ -952,6 +953,7 @@
|
||||
"orderHint": "Staff will prepare your order shortly",
|
||||
"guestName": "Your name (optional)",
|
||||
"guestPhone": "Mobile (optional)",
|
||||
"itemNote": "Note (e.g. no tomato, less sugar)",
|
||||
"addMoreItems": "Add more items",
|
||||
"orderError": "Could not place order. Try again.",
|
||||
"rateLimited": "Too many requests — please wait a few minutes",
|
||||
|
||||
@@ -289,6 +289,7 @@
|
||||
"void": "ابطال",
|
||||
"voidItem": "ابطال آیتم",
|
||||
"voided": "ابطال شده",
|
||||
"itemNotePlaceholder": "یادداشت برای آشپزخانه/بار (اختیاری)",
|
||||
"confirmVoid": "آیا مطمئن هستید که میخواهید این آیتم را ابطال کنید؟",
|
||||
"voidError": "خطا در ابطال آیتم",
|
||||
"transferTable": "انتقال میز",
|
||||
@@ -952,6 +953,7 @@
|
||||
"orderHint": "کارکنان به زودی سفارش شما را آماده میکنند",
|
||||
"guestName": "نام شما (اختیاری)",
|
||||
"guestPhone": "شماره موبایل (اختیاری)",
|
||||
"itemNote": "یادداشت (مثلاً بدون گوجه، کمشکر)",
|
||||
"addMoreItems": "افزودن آیتم دیگر",
|
||||
"orderError": "خطا در ثبت سفارش. دوباره امتحان کنید",
|
||||
"orderSaveError": "سفارش ثبت شد اما ذخیره محلی ناموفق بود. صفحه را رفرش نکنید.",
|
||||
|
||||
Reference in New Issue
Block a user