@feedmepos/mf-order-setting 0.0.38 → 0.0.44

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 (51) hide show
  1. package/dist/{KioskDevicesView-DoTQRyXe.js → KioskDevicesView-KBpXQJmy.js} +1 -1
  2. package/dist/{KioskDevicesView.vue_vue_type_script_setup_true_lang-DB0dvpBG.js → KioskDevicesView.vue_vue_type_script_setup_true_lang-taf41a-7.js} +2 -2
  3. package/dist/KioskSettingView-DG12ZvfT.js +528 -0
  4. package/dist/{KioskView-4-s6RwC6.js → KioskView-KNiT-upH.js} +125 -119
  5. package/dist/{OrderSettingsView-BqgGXVhY.js → OrderSettingsView-CEh1QUZm.js} +11407 -12610
  6. package/dist/{app-BbOgWoeI.js → app-CKeIud_f.js} +14 -11
  7. package/dist/app.js +1 -1
  8. package/dist/{dayjs.min-COLd3dVw.js → dayjs.min-D9bsUd57.js} +232 -242
  9. package/dist/frontend/mf-order/src/app.d.ts +6 -3
  10. package/dist/frontend/mf-order/src/main.d.ts +6 -3
  11. package/dist/frontend/mf-order/src/stores/order-setting/index.d.ts +3 -3
  12. package/dist/frontend/mf-order/src/stores/restaurant/index.d.ts +1 -1
  13. package/dist/frontend/mf-order/src/views/order-settings/delivery/components/ManualIntegratedDeliverySetting.vue.d.ts +5 -0
  14. package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -1
  15. package/dist/{index-BewBuJGi.js → index-D_Tmm1qL.js} +2 -2
  16. package/dist/{menu.dto-Bf0Evx6J.js → menu.dto-BY9dVf93.js} +8216 -8201
  17. package/dist/package/entity/delivery/linked-delivery.do.d.ts +9 -0
  18. package/dist/package/entity/incoming-order/incoming-order-to-bill.dto.d.ts +17 -17
  19. package/dist/package/entity/incoming-order/incoming-order.do.d.ts +21 -21
  20. package/dist/package/entity/incoming-order/incoming-order.dto.d.ts +18 -18
  21. package/dist/package/entity/order/dine-in/dine-in.do.d.ts +11 -11
  22. package/dist/package/entity/order/dine-in/dine-in.dto.d.ts +4 -4
  23. package/dist/package/entity/order/menu/menu.dto.d.ts +4 -4
  24. package/dist/package/entity/order/order.do.d.ts +8 -8
  25. package/dist/package/entity/order/order.dto.d.ts +38 -38
  26. package/dist/package/entity/order/order.enum.d.ts +1 -1
  27. package/dist/package/entity/order-setting/order-setting.do.d.ts +5 -5
  28. package/dist/package/entity/order-setting/order-setting.dto.d.ts +10 -10
  29. package/dist/package/entity/order-setting/sms/sms.do.d.ts +3 -3
  30. package/dist/package/entity/order-setting/sms/sms.dto.d.ts +3 -3
  31. package/dist/package/entity/queue/queue.dto.d.ts +4 -4
  32. package/package.json +2 -2
  33. package/src/locales/en-US.json +2 -1
  34. package/src/locales/th-TH.json +2 -1
  35. package/src/locales/zh-CN.json +2 -1
  36. package/src/views/kiosk/KioskView.vue +16 -4
  37. package/src/views/kiosk/settings/KioskSettingView.vue +193 -122
  38. package/src/views/order-settings/OrderSettingsView.vue +10 -10
  39. package/src/views/order-settings/delivery/DeliverySetting.vue +22 -22
  40. package/src/views/order-settings/delivery/components/ManualIntegratedDeliverySetting.vue +28 -7
  41. package/src/views/order-settings/delivery/delivery.ts +9 -5
  42. package/src/views/order-settings/delivery/integrated-delivery/ExternalSetting.vue +3 -17
  43. package/dist/KioskSettingView-DRpVR7Ij.js +0 -843
  44. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskDineInSection.vue.d.ts +0 -10
  45. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskEnablePaxDialogSection.vue.d.ts +0 -9
  46. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskMenuItemSection.vue.d.ts +0 -9
  47. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskTakeawaySection.vue.d.ts +0 -10
  48. package/src/views/kiosk/settings/KioskDineInSection.vue +0 -68
  49. package/src/views/kiosk/settings/KioskEnablePaxDialogSection.vue +0 -33
  50. package/src/views/kiosk/settings/KioskMenuItemSection.vue +0 -27
  51. package/src/views/kiosk/settings/KioskTakeawaySection.vue +0 -66
@@ -142,7 +142,7 @@
142
142
  :model-value="localDoc"
143
143
  :company="selectedLocalRow.doc"
144
144
  :catalog-options="menuStore.catalogOptions"
145
- @update:model-value="(v: FdoLinkedDelivery | null) => (localDocUpdate = v)"
145
+ @update:model-value="handleLocalDocUpdate"
146
146
  />
147
147
  <template #side-sheet-footer>
148
148
  <div class="flex gap-8 items-center justify-start">
@@ -174,13 +174,7 @@ import type {
174
174
  FdoRestaurantFeedmeDelivery,
175
175
  FdoRestaurantInHouseDelivery
176
176
  } from '@feedmepos/core/entity'
177
- import {
178
- F_COUNTRY,
179
- F_DELIVERY_TYPE,
180
- F_FEATURE,
181
- F_ORDER_PLATFORM,
182
- F_RESTAURANT_FEATURE
183
- } from '@feedmepos/core/entity'
177
+ import { F_DELIVERY_TYPE, F_ORDER_PLATFORM, F_RESTAURANT_FEATURE } from '@feedmepos/core/entity'
184
178
  import { FdoGrabfoodSettings, FdoShopeeFoodSettings } from '@entity'
185
179
  import deliveryData from './delivery.data'
186
180
  import { useDelivery, type DeliveryCompany, type LinkedDeliveryDoc } from './delivery'
@@ -203,7 +197,6 @@ import { useSnackbarFunctions } from '@/components/snackbar'
203
197
  import useSearch from '@/composables/search'
204
198
  import DeliveryList from './DeliveryList.vue'
205
199
  import DeliverooSetting from './integrated-delivery/DeliverooSetting.vue'
206
- import { Pos } from '@feedmepos/core'
207
200
  import { useI18n, useCoreStore } from '@feedmepos/mf-common'
208
201
 
209
202
  const { t } = useI18n()
@@ -247,14 +240,13 @@ const sideSheet = ref<boolean>(false)
247
240
  const loading = computed(() => {
248
241
  return !currentRestaurant.value || loadingDpi.value
249
242
  })
250
- let localDoc: FdoLinkedDelivery | null
251
- let localDocUpdate: FdoLinkedDelivery | null
252
243
  const selectedIntegratedRow = ref<any>(null)
253
244
  const sideSheetIntegrated = ref<boolean>(false)
254
245
  const selectedLocalRow = ref<any>(null)
255
246
  async function toggleLocalSidesheet(rowData: any) {
256
247
  selectedLocalRow.value = rowData.original ?? rowData
257
- localDoc = getLinkedDeliveryDoc(linkedCompanies.value, selectedLocalRow.value.key) ?? null
248
+ localDoc.value = getLinkedDeliveryDoc(linkedCompanies.value, selectedLocalRow.value.key) ?? null
249
+ localDocUpdate.value = localDoc.value
258
250
  sideSheet.value = true
259
251
  }
260
252
 
@@ -465,6 +457,8 @@ const getClassForStatus = (enabled: StatusType): string => {
465
457
  }
466
458
 
467
459
  const model = ref()
460
+ const localDoc = ref<FdoLinkedDelivery | null>(null)
461
+ const localDocUpdate = ref<FdoLinkedDelivery | null>(null)
468
462
 
469
463
  const capitalizeFirstLetter = (str: string) => str.charAt(0).toUpperCase() + str.slice(1)
470
464
 
@@ -530,7 +524,7 @@ const localDeliveryCompanies = computed<DeliveryRow[]>(() => {
530
524
  key,
531
525
  name,
532
526
  paymentType: getPaymentType(payment),
533
- status: !!doc ? [`${t('order.active')}`] : [`${t('order.inactive')}`],
527
+ status: doc ? [`${t('order.active')}`] : [`${t('order.inactive')}`],
534
528
  doc: company,
535
529
  catalog: getCatalog(doc?.catalogId || null)
536
530
  }
@@ -774,7 +768,7 @@ async function updateLocalDeliveryCompany() {
774
768
  await updateManualDelivery({
775
769
  doc: linkedDoc,
776
770
  company: selectedLocalRow.value.doc,
777
- data: localDocUpdate
771
+ data: localDocUpdate.value
778
772
  })
779
773
  showSuccess(t('order.DeliverySettingUpdated'))
780
774
  }
@@ -788,11 +782,11 @@ async function updateManualDelivery({
788
782
  company: DeliveryCompany
789
783
  data: FdoLinkedDelivery | null
790
784
  }) {
791
- if (!!data) {
785
+ if (data) {
792
786
  const resp = await createOrUpdateManualDeliveryDoc({ doc, company, data })
793
787
 
794
788
  if (resp) updateCached(resp)
795
- } else if (!!doc) {
789
+ } else if (doc) {
796
790
  await remoteOrderApi.deleteDeliveryCompany(doc)
797
791
  deleteCached(doc)
798
792
  }
@@ -807,7 +801,7 @@ async function createOrUpdateManualDeliveryDoc({
807
801
  company: DeliveryCompany
808
802
  data: FdoLinkedDelivery
809
803
  }): Promise<LinkedDeliveryDoc | undefined> {
810
- const { paymentTypeKey, catalogId, rounding, useCustomOrderNumber } = data
804
+ const { paymentTypeKey, catalogId, rounding, useCustomOrderNumber, requiredRemark } = data
811
805
  let newDoc: LinkedDeliveryDoc
812
806
 
813
807
  if (doc) {
@@ -816,7 +810,8 @@ async function createOrUpdateManualDeliveryDoc({
816
810
  paymentTypeKey,
817
811
  catalogId,
818
812
  rounding,
819
- useCustomOrderNumber
813
+ useCustomOrderNumber,
814
+ requiredRemark
820
815
  })
821
816
  } else {
822
817
  newDoc = await remoteOrderApi.createDeliveryCompany({
@@ -824,7 +819,8 @@ async function createOrUpdateManualDeliveryDoc({
824
819
  paymentTypeKey,
825
820
  catalogId,
826
821
  rounding,
827
- useCustomOrderNumber
822
+ useCustomOrderNumber,
823
+ requiredRemark
828
824
  })
829
825
  }
830
826
 
@@ -839,6 +835,10 @@ function deleteCached(doc: LinkedDeliveryDoc) {
839
835
  linkedCompanies.value = remove(linkedCompanies.value, doc, 'key')
840
836
  }
841
837
 
838
+ function handleLocalDocUpdate(v: FdoLinkedDelivery | null) {
839
+ localDocUpdate.value = v
840
+ }
841
+
842
842
  function closeLocalDeliverySideSheet() {
843
843
  sideSheet.value = false
844
844
  }
@@ -875,7 +875,7 @@ async function updateFeedmeExpressSetting() {
875
875
  currentRestaurant.value?._id ?? '',
876
876
  feedMeDoc.value
877
877
  )
878
- if (!!currentRestaurant.value?.feedmeDelivery) {
878
+ if (currentRestaurant.value?.feedmeDelivery) {
879
879
  currentRestaurant.value.feedmeDelivery = restaurant.feedmeDelivery
880
880
  }
881
881
  })
@@ -886,7 +886,7 @@ async function updateInHouseSetting() {
886
886
  sideSheetIntegrated.value = false
887
887
  await restaurantStore.updateInhouseDelivery(currentRestaurant.value?._id ?? '', inHouseDoc.value)
888
888
  const res = (await readRestaurants())?.find((res) => res._id === currentRestaurant.value?._id)
889
- if (!!res) {
889
+ if (res) {
890
890
  await changeRestaurant(res)
891
891
  }
892
892
  showSuccess(t('order.DeliverySettingUpdated'))
@@ -899,7 +899,7 @@ async function updateExternalDeliverySetting() {
899
899
  externalDoc.value
900
900
  )
901
901
  const res = (await readRestaurants())?.find((res) => res._id === currentRestaurant.value?._id)
902
- if (!!res) {
902
+ if (res) {
903
903
  await changeRestaurant(res)
904
904
  }
905
905
  showSuccess(t('order.DeliverySettingUpdated'))
@@ -33,16 +33,18 @@ const emits = defineEmits<{
33
33
  const data = ref<LocalDeliverySettingData>(
34
34
  props.modelValue
35
35
  ? {
36
+ ...props.modelValue,
36
37
  active: !!props.modelValue,
37
- catalogId: null,
38
+ catalogId: props.modelValue.catalogId ?? null,
38
39
  rounding: props.modelValue.rounding ?? true,
39
- ...props.modelValue
40
+ requiredRemark: props.modelValue.requiredRemark ?? false
40
41
  }
41
42
  : {
42
43
  ...props.company,
43
44
  catalogId: null,
44
45
  active: false,
45
- rounding: true
46
+ rounding: true,
47
+ requiredRemark: false
46
48
  }
47
49
  )
48
50
 
@@ -50,18 +52,21 @@ watch(
50
52
  () => props.modelValue,
51
53
  (newVal) => {
52
54
  if (newVal) {
55
+ // Create a clean copy to prevent reference sharing
53
56
  data.value = {
57
+ ...newVal,
54
58
  active: !!newVal,
55
- catalogId: null,
59
+ catalogId: newVal.catalogId ?? null,
56
60
  rounding: newVal.rounding ?? true,
57
- ...newVal
61
+ requiredRemark: newVal.requiredRemark ?? false
58
62
  }
59
63
  } else {
60
64
  data.value = {
61
65
  ...props.company,
62
66
  catalogId: null,
63
67
  active: false,
64
- rounding: true
68
+ rounding: true,
69
+ requiredRemark: false
65
70
  }
66
71
  }
67
72
  }
@@ -83,7 +88,8 @@ const paymentTypeOptions = computed(() => {
83
88
  function emitChange(fn: (oldV: LocalDeliverySettingData) => LocalDeliverySettingData) {
84
89
  const newV = fn({ ...data.value })
85
90
  data.value = newV
86
- emits('update:model-value', newV.active ? newV : null)
91
+ // Emit a clean copy to prevent reference sharing between component instances
92
+ emits('update:model-value', newV.active ? { ...newV } : null)
87
93
  }
88
94
 
89
95
  function updateActive(active: boolean) {
@@ -120,6 +126,13 @@ function updateCatalog(catalogId: string | null) {
120
126
  catalogId
121
127
  }))
122
128
  }
129
+
130
+ function updateRequiredRemark(requiredRemark: boolean) {
131
+ emitChange((oldV) => ({
132
+ ...oldV,
133
+ requiredRemark
134
+ }))
135
+ }
123
136
  </script>
124
137
 
125
138
  <template>
@@ -170,6 +183,14 @@ function updateCatalog(catalogId: string | null) {
170
183
  @update:model-value="updateCustomOrderNumber"
171
184
  />
172
185
  </div>
186
+ <div>
187
+ <FmCheckbox
188
+ :model-value="data.requiredRemark ?? false"
189
+ value=""
190
+ :label="t('order.requiredRemark')"
191
+ @update:model-value="updateRequiredRemark"
192
+ />
193
+ </div>
173
194
  </FmCard>
174
195
  </div>
175
196
  </template>
@@ -1,4 +1,4 @@
1
- import { F_PAYMENT_NAME, FdoLinkedDelivery, F_COUNTRY} from "@feedmepos/core/entity";
1
+ import { F_PAYMENT_NAME, FdoLinkedDelivery, F_COUNTRY } from "@feedmepos/core/entity";
2
2
 
3
3
  export type LinkedDeliveryDoc = FdoLinkedDelivery & { _rev: string };
4
4
 
@@ -42,10 +42,11 @@ export function useDelivery() {
42
42
  function isIntegratedPlatformSupported(platform: AUTO_INTEGRATION_CLIENT, country?: F_COUNTRY | null): boolean {
43
43
  country = country || F_COUNTRY.enum.MY
44
44
  const mySupported = [AUTO_INTEGRATION_CLIENT.foodpanda, AUTO_INTEGRATION_CLIENT.grabfood, AUTO_INTEGRATION_CLIENT.shopeefood, AUTO_INTEGRATION_CLIENT.external];
45
- const sgSupported = [AUTO_INTEGRATION_CLIENT.foodpanda, AUTO_INTEGRATION_CLIENT.grabfood, AUTO_INTEGRATION_CLIENT.deliveroo];
46
- const thSupported = [AUTO_INTEGRATION_CLIENT.grabfood, AUTO_INTEGRATION_CLIENT.external ];
45
+ const sgSupported = [AUTO_INTEGRATION_CLIENT.foodpanda, AUTO_INTEGRATION_CLIENT.grabfood, AUTO_INTEGRATION_CLIENT.deliveroo];
46
+ const thSupported = [AUTO_INTEGRATION_CLIENT.grabfood, AUTO_INTEGRATION_CLIENT.external];
47
+ const pkSupported = [AUTO_INTEGRATION_CLIENT.foodpanda, AUTO_INTEGRATION_CLIENT.external];
47
48
 
48
- let supportedPlatforms:AUTO_INTEGRATION_CLIENT[] = [];
49
+ let supportedPlatforms: AUTO_INTEGRATION_CLIENT[] = [];
49
50
  switch (country) {
50
51
  case F_COUNTRY.enum.MY:
51
52
  supportedPlatforms = mySupported
@@ -55,7 +56,10 @@ export function useDelivery() {
55
56
  break;
56
57
  case F_COUNTRY.enum.TH:
57
58
  supportedPlatforms = thSupported
58
- break;
59
+ break;
60
+ case F_COUNTRY.enum.PK:
61
+ supportedPlatforms = pkSupported
62
+ break;
59
63
  default:
60
64
  break;
61
65
  }
@@ -5,7 +5,6 @@
5
5
  :label="t('order.activateIntegration', { integrationType: t('order.auto') })"
6
6
  label-placement="right"
7
7
  @update:model-value="updateEnable"
8
- :disabled="!canEdit"
9
8
  />
10
9
  <div class="mt-6">
11
10
  <div>
@@ -13,7 +12,6 @@
13
12
  :model-value="data.config.autoCloseBill"
14
13
  :label="t('order.allowedAutoCloseBill')"
15
14
  @update:model-value="updateAutoCloseBill"
16
- :disabled="!canEdit"
17
15
  value=""
18
16
  />
19
17
  </div>
@@ -23,7 +21,6 @@
23
21
  :label="t('order.printReceiptAfterClose')"
24
22
  @update:model-value="updatePrintReceiptAfterClose"
25
23
  value=""
26
- :disabled="!canEdit"
27
24
  />
28
25
  </div>
29
26
  </div>
@@ -37,7 +34,6 @@
37
34
  :label="t('order.platform')"
38
35
  :items="platformOptions"
39
36
  @update:model-value="updatePlatform"
40
- :disabled="!canEdit"
41
37
  />
42
38
 
43
39
  <FmSelect
@@ -47,7 +43,6 @@
47
43
  :label="t('order.deliveryCatalog')"
48
44
  :items="menuStore.catalogOptions"
49
45
  @update:model-value="updateDeliveryMenuCatalog"
50
- :disabled="!canEdit"
51
46
  />
52
47
 
53
48
  <FmSelect
@@ -57,17 +52,11 @@
57
52
  :label="t('order.pickupCatalog')"
58
53
  :items="menuStore.catalogOptions"
59
54
  @update:model-value="updatePickupMenuCatalog"
60
- :disabled="!canEdit"
61
55
  />
62
56
  </div>
63
57
 
64
58
  <div class="flex flex-row mt-5">
65
- <FmButton
66
- variant="primary"
67
- :label="t('order.syncMenu')"
68
- @click="syncMenu()"
69
- :disabled="!canEdit"
70
- />
59
+ <FmButton variant="primary" :label="t('order.syncMenu')" @click="syncMenu()" />
71
60
  </div>
72
61
  </FmCard>
73
62
  </div>
@@ -75,9 +64,9 @@
75
64
  </template>
76
65
 
77
66
  <script setup lang="ts">
78
- import { type PropType, computed, reactive, ref, watch } from 'vue'
67
+ import { type PropType, reactive, ref } from 'vue'
79
68
  import { F_ORDER_PLATFORM, type FdoExternalSetting } from '@entity'
80
- import { useI18n, useCoreStore } from '@feedmepos/mf-common'
69
+ import { useI18n } from '@feedmepos/mf-common'
81
70
  import { clone } from '@/helpers/object'
82
71
  import { useMenuStore } from '@/stores/menu/menu'
83
72
  import { useLoading } from '@/composables/loading'
@@ -87,9 +76,6 @@ import { useSnackbarFunctions } from '@/components/snackbar'
87
76
  const { showSuccess } = useSnackbarFunctions()
88
77
  const { t } = useI18n()
89
78
  const menuStore = useMenuStore()
90
- const CoreStore = useCoreStore()
91
-
92
- const canEdit = computed(() => CoreStore.sessionUser.value?.role.isAdmin ?? false)
93
79
 
94
80
  const props = defineProps({
95
81
  initialValue: {