@feedmepos/mf-order-setting 0.0.44 → 0.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/{KioskDevicesView-KBpXQJmy.js → KioskDevicesView-Dd3xcM5X.js} +1 -1
  2. package/dist/{KioskDevicesView.vue_vue_type_script_setup_true_lang-taf41a-7.js → KioskDevicesView.vue_vue_type_script_setup_true_lang-D-epeOIx.js} +101 -96
  3. package/dist/{KioskSettingView-DG12ZvfT.js → KioskSettingView-D50Gh7NR.js} +1 -1
  4. package/dist/KioskView-BGiHHSjd.js +448 -0
  5. package/dist/{OrderSettingsView-CEh1QUZm.js → OrderSettingsView-DNuKMNFe.js} +33723 -34786
  6. package/dist/{app-CKeIud_f.js → app-DGT9bC4M.js} +115 -43
  7. package/dist/app.js +1 -1
  8. package/dist/{dayjs.min-D9bsUd57.js → dayjs.min-D-vfvSns.js} +1 -1
  9. package/dist/frontend/mf-order/src/api/remoteOrder/index.d.ts +2 -2
  10. package/dist/frontend/mf-order/src/api/restaurant-setting/index.d.ts +2 -1
  11. package/dist/frontend/mf-order/src/app.d.ts +72 -0
  12. package/dist/frontend/mf-order/src/main.d.ts +72 -0
  13. package/dist/frontend/mf-order/src/modules/kiosk/interface.d.ts +1 -0
  14. package/dist/frontend/mf-order/src/stores/kiosk/index.d.ts +3 -0
  15. package/dist/frontend/mf-order/src/stores/menu/menu.d.ts +111 -1
  16. package/dist/frontend/mf-order/src/stores/order-setting/index.d.ts +291 -288
  17. package/dist/frontend/mf-order/src/stores/restaurant/index.d.ts +20 -173
  18. package/dist/frontend/mf-order/src/views/all-orders/ReflowOrder.vue.d.ts +12 -114
  19. package/dist/frontend/mf-order/src/views/order-settings/delivery/delivery.data.d.ts +2 -2
  20. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/InHouseDelivery.vue.d.ts +2 -2
  21. package/dist/frontend/mf-order/src/views/order-settings/pickup/PickUpSettingDialogContent.vue.d.ts +4 -4
  22. package/dist/frontend/mf-order/src/views/order-settings/queue/PresetRemarksSheet.vue.d.ts +19 -0
  23. package/dist/frontend/mf-order/src/views/order-settings/queue/QueueSetting.vue.d.ts +2 -0
  24. package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -1
  25. package/dist/{index-D_Tmm1qL.js → index-DAruvcri.js} +2 -2
  26. package/dist/{menu.dto-BY9dVf93.js → menu.dto-B82ITnH5.js} +54755 -57698
  27. package/dist/package/entity/booking/booking.do.d.ts +168 -2368
  28. package/dist/package/entity/delivery/delivery.dto.d.ts +33 -473
  29. package/dist/package/entity/food-court/food-court.dto.d.ts +44 -44
  30. package/dist/package/entity/incoming-order/incoming-order-to-bill.dto.d.ts +23 -0
  31. package/dist/package/entity/incoming-order/incoming-order.do.d.ts +450 -60
  32. package/dist/package/entity/incoming-order/incoming-order.dto.d.ts +680 -628
  33. package/dist/package/entity/incoming-order/incoming-order.enum.d.ts +2 -2
  34. package/dist/package/entity/index.d.ts +2 -0
  35. package/dist/package/entity/kiosk/kiosk.do.d.ts +16 -0
  36. package/dist/package/entity/kiosk/kiosk.dto.d.ts +19 -0
  37. package/dist/package/entity/kiosk/marketing/marketing.dto.d.ts +201 -2031
  38. package/dist/package/entity/order/order-item/order-item.dto.d.ts +129 -16
  39. package/dist/package/entity/order/order.do.d.ts +8 -0
  40. package/dist/package/entity/order/order.dto.d.ts +390 -974
  41. package/dist/package/entity/order/order.enum.d.ts +2 -0
  42. package/dist/package/entity/order-platform/external/menu/external-master-menu.do.d.ts +367 -18
  43. package/dist/package/entity/order-platform/external/menu/external-menu.do.d.ts +48 -8
  44. package/dist/package/entity/order-platform/external/order/external-order.do.d.ts +1 -0
  45. package/dist/package/entity/order-platform/foodpanda/foodpanda-order.dto.d.ts +33 -473
  46. package/dist/package/entity/order-platform/grabfood/grabfood-omni.do.d.ts +672 -0
  47. package/dist/package/entity/order-platform/grabfood/grabfood-omni.dto.d.ts +9 -0
  48. package/dist/package/entity/order-platform/grabfood/grabfood-order.do.d.ts +90 -508
  49. package/dist/package/entity/order-platform/grabfood/grabfood-settings.do.d.ts +3 -0
  50. package/dist/package/entity/order-platform/grabfood/grabfood-webhook.dto.d.ts +1130 -0
  51. package/dist/package/entity/order-platform/grabfood/grabfood.dto.d.ts +34 -47
  52. package/dist/package/entity/order-platform/grabfood/grabfood.enum.d.ts +8 -2
  53. package/dist/package/entity/order-platform/menu.dto.d.ts +46 -12
  54. package/dist/package/entity/order-platform/order-platform.dto.d.ts +8 -5
  55. package/dist/package/entity/order-platform/shopeefood/shopeefood-order.do.d.ts +33 -473
  56. package/dist/package/entity/order-platform/shopeefood/shopeefood-settings.do.d.ts +3 -0
  57. package/dist/package/entity/order-platform/shopeefood/shopeefood-settings.dto.d.ts +3 -0
  58. package/dist/package/entity/order-setting/customization/color.do.d.ts +3 -0
  59. package/dist/package/entity/order-setting/kiosk/kiosk.dto.d.ts +18 -18
  60. package/dist/package/entity/order-setting/order-setting.do.d.ts +77 -88
  61. package/dist/package/entity/order-setting/order-setting.dto.d.ts +724 -1036
  62. package/dist/package/entity/order-setting/queue/queue.do.d.ts +22 -0
  63. package/dist/package/entity/order-setting/queue/queue.dto.d.ts +12 -0
  64. package/dist/package/entity/order-setting/reservation/reservation.do.d.ts +4 -51
  65. package/dist/package/entity/order-setting/reservation/reservation.dto.d.ts +248 -585
  66. package/dist/package/entity/pubsub/ably/ably.enum.d.ts +10 -1
  67. package/dist/package/entity/queue/queue.dto.d.ts +76 -14
  68. package/dist/package/entity/restaurant/restaurant.dto.d.ts +41 -26
  69. package/dist/package/entity/websocket/websocket.dto.d.ts +22 -22
  70. package/package.json +3 -3
  71. package/src/api/remoteOrder/index.ts +13 -2
  72. package/src/api/restaurant-setting/index.ts +6 -0
  73. package/src/locales/en-US.json +24 -0
  74. package/src/locales/th-TH.json +24 -0
  75. package/src/locales/zh-CN.json +24 -0
  76. package/src/modules/kiosk/interface.ts +1 -0
  77. package/src/stores/kiosk/mapper.ts +1 -0
  78. package/src/stores/order-setting/mapper.ts +20 -33
  79. package/src/stores/restaurant/index.ts +7 -3
  80. package/src/views/all-orders/FilterStatus.vue +1 -1
  81. package/src/views/kiosk/devices/KioskDeviceCard.vue +6 -0
  82. package/src/views/order-settings/OrderSettingsView.vue +13 -5
  83. package/src/views/order-settings/delivery/delivery.data.ts +7 -4
  84. package/src/views/order-settings/delivery/integrated-delivery/FoodpandaSetting.vue +2 -2
  85. package/src/views/order-settings/dine-in/DineInSetting.vue +18 -2
  86. package/src/views/order-settings/general/GeneralSetting.vue +2 -2
  87. package/src/views/order-settings/queue/PresetRemarksSheet.vue +103 -0
  88. package/src/views/order-settings/queue/QueueSetting.vue +358 -0
  89. package/dist/KioskView-KNiT-upH.js +0 -453
@@ -1,8 +1,19 @@
1
1
  import type { AxiosInstance } from 'axios';
2
2
  import { baseClientInstance, getData, SvcConfig } from '..';
3
3
  import type { DeliveryCompany, LinkedDeliveryDoc } from '../../views/order-settings/delivery/delivery';
4
- import { FdoFoodpandaSettings, FdoLinkedDelivery, FdoRestaurant, FdoRestaurantFeedmeDelivery, FdoRestaurantInHouseDelivery, FdoShopeeFoodOrder } from '@feedmepos/core/entity';
5
- import type { FdoDeliverooSettings, FdoExternalSetting, FdoFoodpandaOrderOutput, FdoGrabfoodOrderOutput, FdoGrabfoodSettings, FdoShopeeFoodOrderOutput, FdoShopeeFoodSettings, FdtoGetOrderReq } from '@entity';
4
+ import { FdoLinkedDelivery, FdoRestaurant, FdoRestaurantFeedmeDelivery, FdoRestaurantInHouseDelivery } from '@feedmepos/core/entity';
5
+ import type {
6
+ FdoDeliverooSettings,
7
+ FdoExternalSetting,
8
+ FdoFoodpandaOrderOutput,
9
+ FdoFoodpandaSettings,
10
+ FdoGrabfoodOrderOutput,
11
+ FdoGrabfoodSettings,
12
+ FdoShopeeFoodOrder,
13
+ FdoShopeeFoodOrderOutput,
14
+ FdoShopeeFoodSettings,
15
+ FdtoGetOrderReq
16
+ } from '@entity';
6
17
 
7
18
  type DeliveryCompanyUrl = 'foodpanda' | 'grabfood' | 'shopeefood' | 'deliveroo' | 'external'
8
19
 
@@ -4,6 +4,7 @@ import {
4
4
  } from '@/api'
5
5
  import type { OrderSettingsDto } from '@entity'
6
6
  import {
7
+ FdoQueueQrSetting,
7
8
  FdoRestaurantDineIn,
8
9
  FdoRestaurantPickup,
9
10
  FdoRestaurantSetting,
@@ -40,5 +41,10 @@ export const restaurantApi = {
40
41
 
41
42
  async getMobileOrderSetting(): Promise<OrderSettingsDto> {
42
43
  return await getData(await restaurantClientInstance().get('/order-settings'))
44
+ },
45
+
46
+ async updateQueueSetting(restaurantId: string, setting: Partial<FdoQueueQrSetting>): Promise<RestaurantSettingDoc> {
47
+ const result = await restaurantClientInstance().put(`/queue`, setting)
48
+ return getData<RestaurantSettingDoc>(result)
43
49
  }
44
50
  }
@@ -39,6 +39,14 @@
39
39
  "autoIntegrationCountryNotSupport": "Platform not support auto integration in current country.",
40
40
  "autoSendKitchen": "Auto Send Kitchen",
41
41
  "autoSendKitchenSublabel": "Required POS version 7 or above",
42
+ "presetRemarks": "Preset Remarks",
43
+ "editPresetRemarks": "Edit Preset Remarks",
44
+ "addNewRemark": "Add New Remark",
45
+ "enterRemark": "Enter remark",
46
+ "existingRemarks": "Existing Remarks",
47
+ "noPresetRemarks": "No preset remarks configured",
48
+ "noPresetRemarksAdded": "No remarks added yet",
49
+ "presetRemarksSaved": "Preset remarks saved successfully",
42
50
  "balance": "Balance",
43
51
  "bankCard": "Card",
44
52
  "beforeBillDiscount": "Before bill discount",
@@ -72,6 +80,8 @@
72
80
  "daysTo": "days to",
73
81
  "deactivated": "Deactivated",
74
82
  "default": "Default",
83
+ "enabled": "Enabled",
84
+ "disabled": "Disabled",
75
85
  "delete": "delete",
76
86
  "delivery": "Delivery",
77
87
  "deliveryCompany": "Delivery Company",
@@ -115,6 +125,7 @@
115
125
  "feedmeExpressPosVersionIssue": "Min POS version {minVersion} required for FeedMe Express",
116
126
  "feedmeExpressTitle": "Update FeedMe express",
117
127
  "fieldCannotBeEmpty": "Field cannot be empty",
128
+ "followDineIn": "Follow Dine In",
118
129
  "fixedTime": "Fixed time",
119
130
  "friday": "Friday",
120
131
  "general": "General",
@@ -198,6 +209,19 @@
198
209
  "processing": "PROCESSING",
199
210
  "productSelected": "product(s) selected",
200
211
  "promptAnonymousLoginDialog": "Prompt Login Dialog For Anonymous Order",
212
+ "queue": "Queue",
213
+ "queueSettings": "Queue Settings",
214
+ "enableQueueOrder": "Enable Queue Order",
215
+ "autoCalledLimit": "Auto Called Limit",
216
+ "duration": "Duration",
217
+ "disableRemoteQueue": "Disable Remote Queue",
218
+ "disableSMS": "Disable SMS",
219
+ "printChecklist": "Print Checklist",
220
+ "codeSettings": "Queue Code Settings",
221
+ "addCodeSetting": "Add Queue Code Setting",
222
+ "current": "Current",
223
+ "paxMin": "Pax Min",
224
+ "paxMax": "Pax Max",
201
225
  "qrPay": "QR Pay",
202
226
  "terminalScanPay": "Terminal Scan Pay",
203
227
  "terminalQrPay": "Terminal QR Pay",
@@ -39,6 +39,14 @@
39
39
  "autoIntegrationCountryNotSupport": "แพลตฟอร์มไม่รองรับการเชื่อมต่อการจัดส่งแบบไดนามิกในประเทศ/ภูมิภาคปัจจุบัน",
40
40
  "autoSendKitchen": "ส่งอัตโนมัติครัว",
41
41
  "autoSendKitchenSublabel": "ต้องใช้ POS เวอร์ชัน 7 ขึ้นไป",
42
+ "presetRemarks": "หมายเหตุที่ตั้งไว้ล่วงหน้า",
43
+ "editPresetRemarks": "แก้ไขหมายเหตุที่ตั้งไว้ล่วงหน้า",
44
+ "addNewRemark": "เพิ่มหมายเหตุใหม่",
45
+ "enterRemark": "ป้อนหมายเหตุ",
46
+ "existingRemarks": "หมายเหตุที่มีอยู่",
47
+ "noPresetRemarks": "ไม่มีหมายเหตุที่ตั้งไว้ล่วงหน้า",
48
+ "noPresetRemarksAdded": "ยังไม่ได้เพิ่มหมายเหตุ",
49
+ "presetRemarksSaved": "บันทึกหมายเหตุที่ตั้งไว้ล่วงหน้าสำเร็จ",
42
50
  "balance": "ยอดคงเหลือ",
43
51
  "bankCard": "บัตร",
44
52
  "beforeBillDiscount": "ก่อนหักส่วนลดบิล",
@@ -73,6 +81,8 @@
73
81
  "deactivated": "ปิดใช้งาน",
74
82
  "default": "ค่าเริ่มต้น",
75
83
  "delete": "ลบ",
84
+ "disabled": "ปิดใช้งาน",
85
+ "enabled": "เปิดใช้งาน",
76
86
  "delivery": "การจัดส่ง",
77
87
  "deliveryCompany": "บริษัทจัดส่ง",
78
88
  "deliveryDescription": "เราบูรณาการการจัดส่งเหล่านี้กับระบบ POS ของคุณ คุณสามารถจัดส่งอาหารให้กับลูกค้าของคุณได้รวดเร็วและปลอดภัยยิ่งขึ้น",
@@ -113,6 +123,7 @@
113
123
  "feedmeExpressPosVersionIssue": "จำเป็นต้องมีเวอร์ชัน POS ขั้นต่ำ {minVersion} สำหรับ FeedMe Express",
114
124
  "feedmeExpressTitle": "อัปเดต FeedMe express",
115
125
  "fieldCannotBeEmpty": "ไม่สามารถเว้นช่องได้",
126
+ "followDineIn": "ทำตามการรับประทานอาหารที่ร้าน",
116
127
  "fixedTime": "เวลาที่กำหนด",
117
128
  "friday": "วันศุกร์",
118
129
  "general": "ข้อมูลทั่วไป",
@@ -188,6 +199,7 @@
188
199
  "pleaseCompleteProfile": "โปรดกรอกโปรไฟล์ร้านอาหารของคุณเพื่อเปิดใช้งาน FeedMe Express",
189
200
  "pleaseSelectRestaurant": "โปรดเลือกร้านอาหาร",
190
201
  "prefix": "คำนำหน้า",
202
+ "printChecklist": "พิมพ์รายการตรวจสอบ",
191
203
  "preOrder": "สั่งซื้อล่วงหน้า",
192
204
  "preOrderHint": "สั่งซื้อในวันที่ {today} ลูกค้าสามารถสั่งซื้อได้ระหว่าง {start} และ {end} สูงสุด 7 วัน",
193
205
  "pricePerMessage": "ราคาต่อข้อความ",
@@ -195,6 +207,18 @@
195
207
  "processing": "กำลังประมวลผล",
196
208
  "productSelected": "ผลิตภัณฑ์ที่เลือก",
197
209
  "promptAnonymousLoginDialog": "กล่องโต้ตอบพร้อมท์เข้าสู่ระบบสำหรับคำสั่งซื้อแบบไม่เปิดเผยตัวตน",
210
+ "queue": "คิว",
211
+ "queueSettings": "การตั้งค่าคิว",
212
+ "enableQueueOrder": "เปิดใช้งานคำสั่งซื้อคิว",
213
+ "autoCalledLimit": "ขีดจำกัดการเรียกอัตโนมัติ",
214
+ "duration": "ระยะเวลา",
215
+ "disableRemoteQueue": "ปิดใช้งานคิวระยะไกล",
216
+ "disableSMS": "ปิดใช้งาน SMS",
217
+ "codeSettings": "การตั้งค่ารหัส",
218
+ "addCodeSetting": "เพิ่มการตั้งค่ารหัส",
219
+ "current": "ปัจจุบัน",
220
+ "paxMin": "จำนวนผู้โดยสารขั้นต่ำ",
221
+ "paxMax": "จำนวนผู้โดยสารสูงสุด",
198
222
  "qrPay": "ชำระเงินด้วย QR",
199
223
  "terminalScanPay": "ชำระเงินด้วยการสแกนเทอร์มินัล",
200
224
  "terminalQrPay": "ชำระเงินด้วย QR เทอร์มินัล",
@@ -39,6 +39,14 @@
39
39
  "autoIntegrationCountryNotSupport": "平台不支持当前国家/地区的自动配送对接。",
40
40
  "autoSendKitchen": "自动发送至厨房",
41
41
  "autoSendKitchenSublabel": "需要POS版本7或以上",
42
+ "presetRemarks": "预设备注",
43
+ "editPresetRemarks": "编辑预设备注",
44
+ "addNewRemark": "添加新备注",
45
+ "enterRemark": "输入备注",
46
+ "existingRemarks": "现有备注",
47
+ "noPresetRemarks": "未配置预设备注",
48
+ "noPresetRemarksAdded": "尚未添加备注",
49
+ "presetRemarksSaved": "预设备注保存成功",
42
50
  "balance": "余额",
43
51
  "bankCard": "银行卡",
44
52
  "beforeBillDiscount": "账单折扣前",
@@ -74,6 +82,8 @@
74
82
  "deactivated": "已停用",
75
83
  "default": "默认",
76
84
  "delete": "删除",
85
+ "disabled": "禁用",
86
+ "enabled": "启用",
77
87
  "delivery": "配送",
78
88
  "deliveryCompany": "配送公司",
79
89
  "deliveryDescription": "我们将以下配送服务与您的POS系统进行结合,让您能够更加快速且安全地将餐点送到客户手中。",
@@ -117,6 +127,7 @@
117
127
  "feedmeExpressPosVersionIssue": "需要最低{minVersion}版本的POS系统才能使用FeedMe外卖快递",
118
128
  "feedmeExpressTitle": "更新 Feedme 外卖快递",
119
129
  "fieldCannotBeEmpty": "字段不可为空",
130
+ "followDineIn": "跟随堂食",
120
131
  "fixedTime": "固定时间",
121
132
  "friday": "星期五",
122
133
  "general": "通用",
@@ -192,6 +203,7 @@
192
203
  "pleaseCompleteProfile": "请完善您的餐厅资料以启用FeedMe外卖快递",
193
204
  "pleaseSelectRestaurant": "请选择一个餐厅",
194
205
  "prefix": "前缀",
206
+ "printChecklist": "打印清单",
195
207
  "preOrder": "预订",
196
208
  "preOrderHint": "于今日 {today} 下单,客户可以在 {start} 和 {end} 之间预订。最多 7 天。",
197
209
  "printReceiptAfterClose": "自动关闭账单后打印收据",
@@ -199,6 +211,18 @@
199
211
  "processing": "处理中",
200
212
  "productSelected": "已选择商品",
201
213
  "promptAnonymousLoginDialog": "为匿名用户弹出登入对话框",
214
+ "queue": "排队",
215
+ "queueSettings": "排队设置",
216
+ "enableQueueOrder": "启用排队订单",
217
+ "autoCalledLimit": "自动呼叫限制",
218
+ "duration": "持续时间",
219
+ "disableRemoteQueue": "禁用远程排队",
220
+ "disableSMS": "禁用短信",
221
+ "codeSettings": "代码设置",
222
+ "addCodeSetting": "添加代码设置",
223
+ "current": "当前",
224
+ "paxMin": "最少人数",
225
+ "paxMax": "最多人数",
202
226
  "qrPay": "二维码支付",
203
227
  "terminalScanPay": "终端扫描支付",
204
228
  "terminalQrPay": "终端二维码支付",
@@ -14,6 +14,7 @@ export interface MfKioskDevice {
14
14
  slotInfo?: string,
15
15
  pinInfo?: string,
16
16
  deviceAppVersion?: string,
17
+ deviceAppOTAVersion?: string,
17
18
  }
18
19
 
19
20
 
@@ -15,6 +15,7 @@ const toMfKioskDevice = (dto: KioskDeviceDto): MfKioskDevice => {
15
15
  slotInfo: dto.slotInfo ?? undefined,
16
16
  pinInfo: dto.pinInfo ?? undefined,
17
17
  deviceAppVersion: dto.deviceAppVersion ?? undefined,
18
+ deviceAppOTAVersion: dto.deviceAppOTAVersion ?? undefined,
18
19
  };
19
20
  };
20
21
 
@@ -90,48 +90,35 @@ const convertOrderSettingDto = (dto: OrderSettingsDto): MfOrderSetting => {
90
90
  }
91
91
  }
92
92
 
93
- const toKiosk = (
94
- kioskOrderSettings: OrderKioskSettings,
95
- kioskDineInSeq?: OrderKioskDineInSequenceDto
96
- ): MfKioskOrderSetting => {
93
+ const toKiosk = (kioskOrderSettings: OrderKioskSettings | null | undefined, kioskDineInSeq?: OrderKioskDineInSequenceDto): MfKioskOrderSetting => {
97
94
  return {
98
- dineIn: toKioskDineInSetting(
99
- kioskDineInSeq ?? {
100
- current: 0,
101
- prefix: '#K'
102
- },
103
- kioskOrderSettings.dineIn ?? undefined
104
- ),
95
+ dineIn: toKioskDineInSetting(kioskDineInSeq ?? {
96
+ current: 0,
97
+ prefix: '#K',
98
+ }, kioskOrderSettings?.dineIn ?? undefined),
105
99
  takeaway: {
106
100
  enabled: kioskOrderSettings?.canTakeaway ?? false,
107
- submitOrderInstruction: kioskOrderSettings?.takeaway?.submitOrderInstruction
108
- ? {
109
- payAtCounter:
110
- kioskOrderSettings.takeaway.submitOrderInstruction?.payAtCounter?.['en'] ?? null,
111
- paid: kioskOrderSettings.takeaway.submitOrderInstruction?.paid?.['en'] ?? null
112
- }
113
- : defaultSubmitOrderInstruction
101
+ submitOrderInstruction: kioskOrderSettings?.takeaway?.submitOrderInstruction ? {
102
+ payAtCounter: kioskOrderSettings?.takeaway?.submitOrderInstruction?.payAtCounter?.['en'] ?? null,
103
+ paid: kioskOrderSettings?.takeaway?.submitOrderInstruction?.paid?.['en'] ?? null,
104
+ } : defaultSubmitOrderInstruction,
114
105
  },
115
106
  paymentSetting: {
116
107
  paymentTypes: kioskOrderSettings?.paymentSetting?.paymentTypes ?? [],
117
108
  offlinePaymentTypes: kioskOrderSettings?.paymentSetting?.offlinePaymentTypes ?? [],
118
- ePaymentTypes:
119
- kioskOrderSettings?.paymentSetting?.ePaymentTypes ??
120
- FdoEPaymentMethod.parse({
121
- card: {
122
- terminal: false,
123
- nfc: false
124
- },
125
- eWallet: {
126
- qrPay: false,
127
- scanPay: false,
128
- terminalScanPay: false,
129
- terminalQrPay: false
130
- }
131
- })
109
+ ePaymentTypes: kioskOrderSettings?.paymentSetting?.ePaymentTypes ?? FdoEPaymentMethod.parse({
110
+ card: {
111
+ terminal: false,
112
+ nfc: false
113
+ },
114
+ eWallet: {
115
+ qrPay: false,
116
+ scanPay: false
117
+ }
118
+ }),
132
119
  },
133
120
  menuItem: {
134
- showAllOnly: kioskOrderSettings.menuItem?.showAllOnly ?? false
121
+ showAllOnly: kioskOrderSettings?.menuItem?.showAllOnly ?? false,
135
122
  }
136
123
  }
137
124
  }
@@ -3,20 +3,24 @@ import { restaurantApi, type RestaurantSettingDoc } from '@/api/restaurant-setti
3
3
  import {
4
4
  F_FEATURE,
5
5
  F_PAYOUT_ACCOUNT_STATUS,
6
- FdoFoodpandaSettings,
7
6
  FdoRestaurantDineIn,
8
7
  FdoRestaurantFeedmeDelivery,
9
8
  FdoRestaurantInHouseDelivery,
10
9
  FdoRestaurantPickup,
11
10
  FdoServiceChargeSetting,
12
- FdoShopeeFoodSettings,
13
11
  type FdoAddress,
14
12
  type FdoProfile,
15
13
  FdoRestaurant,
16
14
  FdoRestaurantSetting,
17
15
  type FdoEffectGroup
18
16
  } from '@feedmepos/core/entity'
19
- import { FdoDeliverooSettings, FdoGrabfoodSettings, FdoExternalSetting } from '@entity'
17
+ import {
18
+ FdoDeliverooSettings,
19
+ FdoGrabfoodSettings,
20
+ FdoExternalSetting,
21
+ FdoFoodpandaSettings,
22
+ FdoShopeeFoodSettings
23
+ } from '@entity'
20
24
  import { FeatureFlag, Pos } from '@feedmepos/core'
21
25
  import { SvcConfig } from '@/api'
22
26
  import { remoteOrderApi } from '@/api/remoteOrder'
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { ref, computed, watch } from 'vue'
3
- import { F_SHOPEEFOOD_ORDER_STATUS, GF_ORDER_STATUS, FP_ORDER_STATUS } from '@feedmepos/core/entity'
3
+ import { F_SHOPEEFOOD_ORDER_STATUS, GF_ORDER_STATUS, FP_ORDER_STATUS } from '@entity'
4
4
  import { F_ORDER_STATUS } from '@feedmepos/ordering/package/entity'
5
5
  import { sentenceCase } from 'change-case'
6
6
  import FilterStatusMenu from './FilterStatusMenu.vue'
@@ -29,6 +29,12 @@
29
29
  device.deviceAppVersion ?? 'Below 0.0.42'
30
30
  }}</span>
31
31
  </div>
32
+ <div class="flex flex-col gap-1 mb-2">
33
+ <span class="fm-typo-en-body-lg-400 text-fm-color-typo-secondary">OTA Version</span>
34
+ <span class="fm-typo-en-body-lg-600 block">{{
35
+ device.deviceAppOTAVersion ?? 'Not available'
36
+ }}</span>
37
+ </div>
32
38
  <div class="flex flex-col gap-1 mb-2">
33
39
  <span class="fm-typo-en-body-lg-400 text-fm-color-typo-secondary">PIN Code</span>
34
40
  <span class="fm-typo-en-body-lg-600 block">{{ isPinUpdate ? 'Yes' : 'No' }}</span>
@@ -25,6 +25,7 @@ import SmsSetting from './sms/SmsSetting.vue'
25
25
  // import DiscountRuleSetting from './discount-rule/DiscountRuleSetting.vue'
26
26
 
27
27
  import GeneralSetting from './general/GeneralSetting.vue'
28
+ import QueueSetting from './queue/QueueSetting.vue'
28
29
  import { useI18n, useCoreStore } from '@feedmepos/mf-common'
29
30
  import { useMenuStore } from '@/stores/menu/menu'
30
31
  import { useSnackbarFunctions } from '@/components/snackbar'
@@ -41,6 +42,7 @@ type OrderSettingMenuItemValue =
41
42
  | 'sms'
42
43
  // | 'discountRule'
43
44
  | 'general'
45
+ | 'queue'
44
46
  const selectedOrderSetting = ref<OrderSettingMenuItemValue>('delivery')
45
47
 
46
48
  const settingItem = computed<FmTabProps[]>(() => [
@@ -50,7 +52,8 @@ const settingItem = computed<FmTabProps[]>(() => [
50
52
  // { label: t('order.serviceCharge'), value: 'servicecharge' },
51
53
  // { label: t('order.discountRule.title'), value: 'discountRule' },
52
54
  { label: t('order.sms'), value: 'sms' },
53
- { label: t('order.general'), value: 'general' }
55
+ { label: t('order.general'), value: 'general' },
56
+ { label: t('order.queue'), value: 'queue' }
54
57
  ])
55
58
 
56
59
  const currentComponent = computed(() => {
@@ -69,6 +72,8 @@ const currentComponent = computed(() => {
69
72
  // return DiscountRuleSetting
70
73
  case 'general':
71
74
  return GeneralSetting
75
+ case 'queue':
76
+ return QueueSetting
72
77
  }
73
78
  })
74
79
 
@@ -84,9 +89,12 @@ watch(currentRestaurant, async (newRestaurant) => {
84
89
  }
85
90
  })
86
91
 
87
- watch(() => menuStore.catalogOptionsError, (errorKey) => {
88
- if (errorKey) {
89
- showError(t(errorKey))
92
+ watch(
93
+ () => menuStore.catalogOptionsError,
94
+ (errorKey) => {
95
+ if (errorKey) {
96
+ showError(t(errorKey))
97
+ }
90
98
  }
91
- })
99
+ )
92
100
  </script>
@@ -1,9 +1,12 @@
1
- import type { FdoDeliverooSettings, FdoExternalSetting } from '@entity';
2
- import {
3
- FdoRestaurantFeedmeDelivery,
1
+ import type {
2
+ FdoDeliverooSettings,
3
+ FdoExternalSetting,
4
4
  FdoGrabfoodSettings,
5
5
  FdoShopeeFoodSettings,
6
- FdoFoodpandaSettings,
6
+ FdoFoodpandaSettings
7
+ } from '@entity';
8
+ import {
9
+ FdoRestaurantFeedmeDelivery,
7
10
  FdoRestaurantInHouseDelivery
8
11
  } from '@feedmepos/core/entity'
9
12
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
- import { FdoFoodpandaReportCalculationConfig, FdoLinkedDelivery } from '@feedmepos/core/entity'
3
- import { FdoFoodpandaSettings } from '@entity'
2
+ import { FdoLinkedDelivery } from '@feedmepos/core/entity'
3
+ import { FdoFoodpandaReportCalculationConfig, FdoFoodpandaSettings } from '@entity'
4
4
  import { type PropType, reactive, computed } from 'vue'
5
5
  import IntegratedDelivery from './IntegratedDelivery.vue'
6
6
  import { useCoreStore } from '@feedmepos/mf-common'
@@ -65,11 +65,18 @@
65
65
  </div>
66
66
 
67
67
  <FmSwitch
68
- :model-value="orderSetting?.v3Settings.dineInCanTakeaway ?? false"
68
+ :model-value="orderSetting?.v3Settings?.dineInCanTakeaway ?? false"
69
69
  :label="t('order.dineInCanTakeaway')"
70
70
  label-placement="right"
71
71
  @update:model-value="updateDineInCanTakeaway"
72
72
  ></FmSwitch>
73
+
74
+ <FmSwitch
75
+ :model-value="orderSetting?.dineInSettings?.printChecklist ?? false"
76
+ :label="t('order.printChecklist')"
77
+ label-placement="right"
78
+ @update:model-value="updatePrintChecklist"
79
+ ></FmSwitch>
73
80
  </div>
74
81
  <div class="p-[1.5rem] flex flex-col gap-2 m-5 w-2/3">
75
82
  <PaymentType
@@ -161,7 +168,7 @@ function enableLastOrder(v: boolean) {
161
168
  }
162
169
 
163
170
  function updateDineInCanTakeaway(v: boolean) {
164
- if (orderSetting.value) {
171
+ if (orderSetting.value?.v3Settings) {
165
172
  orderSetting.value.v3Settings.dineInCanTakeaway = v
166
173
  }
167
174
  }
@@ -172,6 +179,15 @@ function updateLastOrderMinutesBeforeClose(minutes: number) {
172
179
  }
173
180
  }
174
181
 
182
+ function updatePrintChecklist(v: boolean) {
183
+ if (orderSetting.value) {
184
+ if (!orderSetting.value.dineInSettings) {
185
+ orderSetting.value.dineInSettings = {}
186
+ }
187
+ orderSetting.value.dineInSettings.printChecklist = v
188
+ }
189
+ }
190
+
175
191
  function initDineInSetting(): FdoRestaurantDineIn {
176
192
  return {
177
193
  ignoreStock: false,
@@ -151,7 +151,7 @@ async function init(): Promise<void> {
151
151
  }
152
152
 
153
153
  function updateAnonymousLoginDialog(v: boolean) {
154
- if (orderSetting.value) {
154
+ if (orderSetting.value?.v3Settings) {
155
155
  orderSetting.value.v3Settings.anonymousLoginDialog = v
156
156
  }
157
157
  }
@@ -188,7 +188,7 @@ function updateSeq(key: SequenceKey, dtoKey: string, dto?: number) {
188
188
  }
189
189
 
190
190
  function updateSubItemDisplayMode(v: boolean) {
191
- if (orderSetting.value) {
191
+ if (orderSetting.value?.v3Settings) {
192
192
  if (v) {
193
193
  orderSetting.value.v3Settings.subItemDisplayMode = F_ORDER_SUBITEM_DISPLAY_MODE.enum.LIST
194
194
  } else {
@@ -0,0 +1,103 @@
1
+ <script setup lang="ts">
2
+ import { ref, watch, type PropType } from 'vue'
3
+ import { useI18n } from '@feedmepos/mf-common'
4
+
5
+ const { t } = useI18n()
6
+
7
+ const props = defineProps({
8
+ initialValue: {
9
+ type: Array as PropType<string[]>,
10
+ default: () => []
11
+ }
12
+ })
13
+
14
+ const emit = defineEmits<{
15
+ (event: 'update:modelValue', remarks: string[]): void
16
+ }>()
17
+
18
+ const remarks = ref<string[]>([...props.initialValue])
19
+ const newRemark = ref('')
20
+
21
+ watch(
22
+ () => props.initialValue,
23
+ (newValue) => {
24
+ remarks.value = [...newValue]
25
+ }
26
+ )
27
+
28
+ watch(
29
+ remarks,
30
+ (newValue) => {
31
+ const filtered = newValue.filter(remark => remark && remark.trim())
32
+ emit('update:modelValue', filtered)
33
+ },
34
+ { deep: true }
35
+ )
36
+
37
+ function addRemark() {
38
+ if (newRemark.value.trim()) {
39
+ remarks.value.push(newRemark.value.trim())
40
+ newRemark.value = ''
41
+ }
42
+ }
43
+
44
+ function removeRemark(index: number) {
45
+ remarks.value.splice(index, 1)
46
+ }
47
+
48
+ function updateRemark(index: number, value: string) {
49
+ remarks.value[index] = value
50
+ }
51
+ </script>
52
+
53
+ <template>
54
+ <div class="flex flex-col gap-6 p-6">
55
+ <!-- Add New Remark Section -->
56
+ <div class="flex flex-col gap-3">
57
+ <span class="fm-typo-en-body-md-600">{{ t('order.addNewRemark') }}</span>
58
+ <div class="flex gap-3">
59
+ <FmTextField
60
+ v-model="newRemark"
61
+ :placeholder="t('order.enterRemark')"
62
+ @keydown.enter="addRemark"
63
+ class="flex-1"
64
+ />
65
+ <FmButton
66
+ variant="secondary"
67
+ :label="t('order.add')"
68
+ icon="add"
69
+ @click="addRemark"
70
+ :disabled="!newRemark.trim()"
71
+ />
72
+ </div>
73
+ </div>
74
+
75
+ <!-- Existing Remarks Section -->
76
+ <div v-if="remarks.length > 0" class="flex flex-col gap-3">
77
+ <span class="fm-typo-en-body-md-600">{{ t('order.existingRemarks') }}</span>
78
+ <div class="flex flex-col gap-3 items-start">
79
+ <div
80
+ v-for="(remark, index) in remarks"
81
+ :key="index"
82
+ class="flex items-center gap-3 bg-gray-50 p-4 rounded-lg"
83
+ >
84
+ <FmTextField
85
+ :model-value="remark"
86
+ @update:model-value="(v: string) => updateRemark(index, v)"
87
+ class="min-w-[400px]"
88
+ />
89
+ <FmButton
90
+ color="error"
91
+ icon="delete"
92
+ @click="removeRemark(index)"
93
+ />
94
+ </div>
95
+ </div>
96
+ </div>
97
+
98
+ <!-- Empty State -->
99
+ <div v-else class="text-gray-400 text-sm text-center py-8">
100
+ {{ t('order.noPresetRemarksAdded') }}
101
+ </div>
102
+ </div>
103
+ </template>