feat(orders): recent orders view with receipt / kitchen / bar reprint
CI/CD / CI · API (dotnet build + test) (push) Successful in 41s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 30s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m10s
CI/CD / CI · Admin Web (tsc) (push) Successful in 38s
CI/CD / CI · Website (tsc) (push) Successful in 46s
CI/CD / CI · Koja (tsc) (push) Successful in 50s
CI/CD / Deploy · all services (push) Successful in 3m34s

Adds a "سفارش‌ها" (Orders) nav page listing closed orders by day (date +
branch filter, paged), each with reprint actions:
- چاپ فاکتور  → customer receipt
- فیش آشپزخانه → kitchen ticket (all stations)
- one button per print station (e.g. Bar) → reprints only that station's items

Backend: the kitchen print endpoint gains an optional ?stationId= to reprint a
single station; PrintKitchenTicketAsync filters its station groups accordingly
(NO_STATION_ITEMS when that station has nothing on the order). Nav gated by
ViewOrders (visible to branch staff too). fa/en/ar strings added.

Note: local backend build couldn't run (NU1301 — NuGet restore network timeout);
dashboard typecheck is clean and the C# changes are minimal — CI builds via the
Nexus mirror.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-21 23:15:34 +03:30
parent 1264606410
commit c360fbb068
10 changed files with 321 additions and 6 deletions
+21
View File
@@ -118,6 +118,7 @@
"menu": "القائمة",
"crm": "العملاء",
"coupons": "القسائم",
"orders": "الطلبات",
"inventory": "المخزون",
"hr": "الموارد البشرية",
"reports": "التقارير",
@@ -333,6 +334,9 @@
"posDeviceHint": "عند الدفع بالبطاقة، يُرسل المبلغ عبر HTTP (POST /pay) إلى الجهاز على الشبكة المحلية.",
"posDeviceIp": "عنوان IP لجهاز نقطة البيع",
"testSent": "تم إرسال الاختبار إلى الطابعة.",
"sent": "تم الإرسال إلى الطابعة.",
"noStationItems": "لا توجد أصناف لهذه المحطة في هذا الطلب.",
"printFailed": "فشلت الطباعة.",
"stations": {
"title": "محطات طباعة المطبخ والبار",
"subtitle": "امنح كل قسم تحضير طابعته الخاصة ووجّه فئات القائمة إليها.",
@@ -1086,6 +1090,23 @@
}
}
},
"recentOrders": {
"title": "الطلبات الأخيرة",
"subtitle": "تصفّح الطلبات المغلقة وأعد طباعة فاتورة العميل وتذاكر المطبخ/البار.",
"date": "التاريخ",
"branch": "الفرع",
"allBranches": "كل الفروع",
"empty": "لا توجد طلبات لهذا اليوم.",
"loadFailed": "تعذّر تحميل الطلبات.",
"retry": "إعادة المحاولة",
"prevPage": "السابق",
"nextPage": "التالي",
"table": "الطاولة",
"statusPaid": "مدفوع",
"statusCancelled": "ملغى",
"receipt": "الفاتورة",
"kitchen": "تذكرة المطبخ"
},
"notifications": {
"title": "الإشعارات",
"pageTitle": "الإشعارات",