@feedmepos/mf-order-setting 0.0.32 → 0.0.33

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 (42) hide show
  1. package/dist/{KioskDevicesView-D2w5MMCg.js → KioskDevicesView-CxZI99me.js} +1 -1
  2. package/dist/{KioskDevicesView.vue_vue_type_script_setup_true_lang-BwxGSbuI.js → KioskDevicesView.vue_vue_type_script_setup_true_lang-EGj4fxeN.js} +2 -2
  3. package/dist/{KioskSettingView-CUMAS8OG.js → KioskSettingView-CTDY8__s.js} +1 -1
  4. package/dist/{KioskView-NetckXQx.js → KioskView-IUQTvUF8.js} +4 -4
  5. package/dist/{OrderSettingsView-CL0o1fHq.js → OrderSettingsView-VLE9yxNt.js} +5446 -5282
  6. package/dist/{app-DnvFFLBj.js → app-cd45Ryph.js} +12 -8
  7. package/dist/app.js +1 -1
  8. package/dist/{dayjs.min-BAx2Uba9.js → dayjs.min-CRAlrjJy.js} +1 -1
  9. package/dist/frontend/mf-order/src/api/remoteOrder/index.d.ts +5 -2
  10. package/dist/frontend/mf-order/src/app.d.ts +4 -0
  11. package/dist/frontend/mf-order/src/main.d.ts +4 -0
  12. package/dist/frontend/mf-order/src/stores/restaurant/index.d.ts +5 -2
  13. package/dist/frontend/mf-order/src/views/order-settings/delivery/DeliverySetting.vue.d.ts +1 -1
  14. package/dist/frontend/mf-order/src/views/order-settings/delivery/delivery.d.ts +3 -1
  15. package/dist/frontend/mf-order/src/views/order-settings/delivery/delivery.data.d.ts +3 -1
  16. package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/DeliverooSetting.vue.d.ts +46 -0
  17. package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/ExternalSetting.vue.d.ts +4 -4
  18. package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -1
  19. package/dist/{index-DuneL3VN.js → index-DLWAy-3K.js} +2 -2
  20. package/dist/{queue.do-B1npBXsB.js → menu.dto-DGDI6XwH.js} +15195 -14809
  21. package/dist/package/entity/index.d.ts +22 -1
  22. package/dist/package/entity/order/order-item/order-item.dto.d.ts +2 -2
  23. package/dist/package/entity/order-platform/deliveroo/deliveroo-dto.d.ts +523 -0
  24. package/dist/package/entity/order-platform/deliveroo/deliveroo-order.do.d.ts +7814 -0
  25. package/dist/package/entity/order-platform/deliveroo/deliveroo-order.dto.d.ts +15 -0
  26. package/dist/package/entity/order-platform/deliveroo/deliveroo-setting.do.d.ts +37 -0
  27. package/dist/package/entity/order-platform/deliveroo/deliveroo.enum.d.ts +31 -0
  28. package/dist/package/entity/order-platform/deliveroo/deliveroo.menu.dto.d.ts +2341 -0
  29. package/dist/package/entity/order-platform/external/setting/external-setting.do.d.ts +3 -3
  30. package/dist/package/entity/order-platform/external/setting/external-setting.dto.d.ts +3 -3
  31. package/dist/package/entity/order-platform/order-platform.enum.d.ts +6 -1
  32. package/package.json +1 -1
  33. package/src/api/remoteOrder/index.ts +20 -2
  34. package/src/locales/en-US.json +1 -0
  35. package/src/locales/th-TH.json +1 -0
  36. package/src/locales/zh-CN.json +2 -0
  37. package/src/stores/restaurant/index.ts +12 -7
  38. package/src/views/order-settings/delivery/DeliverySetting.vue +141 -57
  39. package/src/views/order-settings/delivery/delivery.data.ts +10 -1
  40. package/src/views/order-settings/delivery/delivery.ts +34 -9
  41. package/src/views/order-settings/delivery/integrated-delivery/DeliverooSetting.vue +109 -0
  42. package/src/views/order-settings/delivery/integrated-delivery/IntegratedDelivery.vue +11 -10
@@ -1,21 +1,22 @@
1
- import { F_PAYMENT_NAME, FdoLinkedDelivery } from "@feedmepos/core/entity";
1
+ import { F_PAYMENT_NAME, FdoLinkedDelivery, F_COUNTRY} from "@feedmepos/core/entity";
2
2
 
3
- export type LinkedDeliveryDoc = FdoLinkedDelivery & { _rev: string };
3
+ export type LinkedDeliveryDoc = FdoLinkedDelivery & { _rev: string };
4
4
 
5
5
  export enum AUTO_INTEGRATION_CLIENT {
6
6
  foodpanda = 'foodpanda',
7
7
  grabfood = 'grabfood',
8
8
  shopeefood = 'shopeefood',
9
+ deliveroo = 'deliveroo',
9
10
  external = 'external'
10
11
  }
11
12
 
12
13
  export interface DeliveryCompany {
13
- id: string;
14
- name: string;
15
- slotPrefix: string;
16
- paymentTypeKey: string;
17
- key: string;
18
- }
14
+ id: string;
15
+ name: string;
16
+ slotPrefix: string;
17
+ paymentTypeKey: string;
18
+ key: string;
19
+ }
19
20
 
20
21
  function formatDeliveryCompanyKey(key: string) {
21
22
  return key.toLowerCase().replace('_', '').toLowerCase();
@@ -38,5 +39,29 @@ export function useDelivery() {
38
39
  return formatDeliveryCompanyKey(key) === formatDeliveryCompanyKey(targetKey);
39
40
  }
40
41
 
41
- return { getLinkedDeliveryDoc, filterLocalDeliveryCompanies, getPaymentType, equalKey };
42
+ function isIntegratedPlatformSupported(platform: AUTO_INTEGRATION_CLIENT, country?: F_COUNTRY | null): boolean {
43
+ country = country || F_COUNTRY.enum.MY
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 ];
47
+
48
+ let supportedPlatforms:AUTO_INTEGRATION_CLIENT[] = [];
49
+ switch (country) {
50
+ case F_COUNTRY.enum.MY:
51
+ supportedPlatforms = mySupported
52
+ break;
53
+ case F_COUNTRY.enum.SG:
54
+ supportedPlatforms = sgSupported
55
+ break;
56
+ case F_COUNTRY.enum.TH:
57
+ supportedPlatforms = thSupported
58
+ break;
59
+ default:
60
+ break;
61
+ }
62
+
63
+ return supportedPlatforms.includes(platform)
64
+ }
65
+
66
+ return { getLinkedDeliveryDoc, filterLocalDeliveryCompanies, getPaymentType, equalKey, isIntegratedPlatformSupported };
42
67
  }
@@ -0,0 +1,109 @@
1
+ <script setup lang="ts">
2
+ import { computed, type PropType, reactive } from 'vue'
3
+ import type { FdoLinkedDelivery } from '@feedmepos/core/entity'
4
+ import { FdoDeliverooSettings } from '@entity'
5
+ import type { DeliveryCompany } from '../delivery'
6
+ import type { IntegratedDeliverySettingData } from './IntegratedDelivery.vue'
7
+ import { useLoading } from '@/composables/loading'
8
+ import { remoteOrderApi } from '@/api/remoteOrder'
9
+ import IntegratedDelivery from './IntegratedDelivery.vue'
10
+ import { clone } from '@/helpers/object'
11
+ import { useI18n, useCoreStore } from '@feedmepos/mf-common'
12
+ import { useSnackbarFunctions } from '@/components/snackbar'
13
+
14
+ const { t } = useI18n()
15
+ const { currentRestaurant } = useCoreStore()
16
+ const { showError } = useSnackbarFunctions()
17
+
18
+ export interface DeliverooDeliveryData {
19
+ manual: FdoLinkedDelivery | null
20
+ integrated: FdoDeliverooSettings
21
+ }
22
+
23
+ const props = defineProps({
24
+ initialValue: {
25
+ type: Object as PropType<DeliverooDeliveryData>,
26
+ required: true
27
+ },
28
+ company: {
29
+ type: Object as PropType<DeliveryCompany>,
30
+ required: true
31
+ },
32
+ canUseAutoDeliveryIntegration: {
33
+ type: [String, Boolean],
34
+ required: true
35
+ }
36
+ })
37
+
38
+ const data = reactive(clone(props.initialValue))
39
+ const modelValue = computed<IntegratedDeliverySettingData>(() => {
40
+ const auto = data.integrated
41
+ return {
42
+ manual: data.manual,
43
+ auto: {
44
+ enable: auto.enable,
45
+ integrationId: auto.merchantID,
46
+ autoCloseBill: auto.autoCloseBill || false,
47
+ catalogId: auto?.catalogId || null,
48
+ lastSynchronize: auto.lastSynchronize,
49
+ status: auto.status,
50
+ updatedAt: auto.updatedAt,
51
+ printReceiptAfterClose: auto.printReceiptAfterClose ?? true,
52
+ menuSyncError: auto.menuSyncError,
53
+ commissionRate: 0 // always 0
54
+ }
55
+ }
56
+ })
57
+
58
+ function updateData({ manual, auto }: IntegratedDeliverySettingData) {
59
+ data.manual = manual
60
+ data.integrated = {
61
+ ...auto,
62
+ merchantID: auto.integrationId
63
+ }
64
+ return { manual: data.manual, integrated: data.integrated }
65
+ }
66
+
67
+ const emits = defineEmits<{
68
+ (e: 'update:model-value', payload: { manual: any; auto: any }): void
69
+ }>()
70
+
71
+ function updateDataPass({ manual, auto }: IntegratedDeliverySettingData) {
72
+ const updatedData = updateData({ manual, auto })
73
+ emits('update:model-value', { manual: updatedData.manual, auto: updatedData.integrated })
74
+ }
75
+
76
+ const { startAsyncCallWithErr } = useLoading()
77
+ async function syncMenu() {
78
+ const restaurantId = currentRestaurant.value?._id ?? ''
79
+ await startAsyncCallWithErr(async () => {
80
+ try {
81
+ const res = await remoteOrderApi.integratedDelivery.syncDeliverooMernu(restaurantId)
82
+ const temp = {
83
+ ...modelValue.value.auto,
84
+ lastSynchronize: res?.lastSynchronize || modelValue.value.auto.lastSynchronize
85
+ }
86
+ updateData({ auto: temp, manual: data.manual })
87
+ } catch (error) {
88
+ console.log(error)
89
+ showError(`${t('order.rateLimitWarning')}`)
90
+ }
91
+ })
92
+ }
93
+
94
+ async function flowTestOrder() {}
95
+
96
+ async function cancelTestOrder() {}
97
+ </script>
98
+
99
+ <template>
100
+ <IntegratedDelivery
101
+ :model-value="modelValue"
102
+ :company="company"
103
+ :can-use-auto-delivery-integration="canUseAutoDeliveryIntegration"
104
+ @update:model-value="updateDataPass"
105
+ @sync-menu="syncMenu"
106
+ @flow-test-order="flowTestOrder"
107
+ @cancel-test-order="cancelTestOrder"
108
+ />
109
+ </template>
@@ -102,12 +102,12 @@ function updateIntegrateId(integrationId: InputModel) {
102
102
  }))
103
103
  }
104
104
 
105
- function updateCommission(commission: InputModel) {
106
- updateAuto((oldV) => ({
107
- ...oldV,
108
- commissionRate: getValue<number>(commission, 'number')
109
- }))
110
- }
105
+ // function updateCommission(commission: InputModel) {
106
+ // updateAuto((oldV) => ({
107
+ // ...oldV,
108
+ // commissionRate: getValue<number>(commission, 'number')
109
+ // }))
110
+ // }
111
111
 
112
112
  function updateMenuCatalog(catalogId: string | null) {
113
113
  updateAuto((oldV) => ({
@@ -191,12 +191,12 @@ function convertStatusI18n(status: string) {
191
191
  </script>
192
192
 
193
193
  <template>
194
- <ManualIntegratedDeliverySetting
194
+ <!-- <ManualIntegratedDeliverySetting
195
195
  :model-value="modelValue.manual"
196
196
  :company="company"
197
197
  :catalog-options="menuStore.catalogOptions"
198
198
  @update:model-value="updateManual"
199
- />
199
+ /> -->
200
200
  <div v-if="canUseAutoDeliveryIntegration === true" class="mt-10">
201
201
  <FmSwitch
202
202
  :disabled="!canEdit"
@@ -230,7 +230,8 @@ function convertStatusI18n(status: string) {
230
230
  </div>
231
231
  </div>
232
232
 
233
- <div class="mb-5">
233
+ <!-- Commision rate not used yet -->
234
+ <!-- <div class="mb-5">
234
235
  <FmTextField
235
236
  :model-value="modelValue.auto.commissionRate"
236
237
  :label="t('order.commission')"
@@ -239,7 +240,7 @@ function convertStatusI18n(status: string) {
239
240
  >
240
241
  <template #append>%</template>
241
242
  </FmTextField>
242
- </div>
243
+ </div> -->
243
244
  <div class="mb-3">
244
245
  <div class="flex-grow fm-typo-en-title-sm-600 mb-3 mt-7">{{ t('order.syncMenu') }}</div>
245
246
  <FmSelect