@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.
- package/dist/{KioskDevicesView-D2w5MMCg.js → KioskDevicesView-CxZI99me.js} +1 -1
- package/dist/{KioskDevicesView.vue_vue_type_script_setup_true_lang-BwxGSbuI.js → KioskDevicesView.vue_vue_type_script_setup_true_lang-EGj4fxeN.js} +2 -2
- package/dist/{KioskSettingView-CUMAS8OG.js → KioskSettingView-CTDY8__s.js} +1 -1
- package/dist/{KioskView-NetckXQx.js → KioskView-IUQTvUF8.js} +4 -4
- package/dist/{OrderSettingsView-CL0o1fHq.js → OrderSettingsView-VLE9yxNt.js} +5446 -5282
- package/dist/{app-DnvFFLBj.js → app-cd45Ryph.js} +12 -8
- package/dist/app.js +1 -1
- package/dist/{dayjs.min-BAx2Uba9.js → dayjs.min-CRAlrjJy.js} +1 -1
- package/dist/frontend/mf-order/src/api/remoteOrder/index.d.ts +5 -2
- package/dist/frontend/mf-order/src/app.d.ts +4 -0
- package/dist/frontend/mf-order/src/main.d.ts +4 -0
- package/dist/frontend/mf-order/src/stores/restaurant/index.d.ts +5 -2
- package/dist/frontend/mf-order/src/views/order-settings/delivery/DeliverySetting.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/order-settings/delivery/delivery.d.ts +3 -1
- package/dist/frontend/mf-order/src/views/order-settings/delivery/delivery.data.d.ts +3 -1
- package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/DeliverooSetting.vue.d.ts +46 -0
- package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/ExternalSetting.vue.d.ts +4 -4
- package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{index-DuneL3VN.js → index-DLWAy-3K.js} +2 -2
- package/dist/{queue.do-B1npBXsB.js → menu.dto-DGDI6XwH.js} +15195 -14809
- package/dist/package/entity/index.d.ts +22 -1
- package/dist/package/entity/order/order-item/order-item.dto.d.ts +2 -2
- package/dist/package/entity/order-platform/deliveroo/deliveroo-dto.d.ts +523 -0
- package/dist/package/entity/order-platform/deliveroo/deliveroo-order.do.d.ts +7814 -0
- package/dist/package/entity/order-platform/deliveroo/deliveroo-order.dto.d.ts +15 -0
- package/dist/package/entity/order-platform/deliveroo/deliveroo-setting.do.d.ts +37 -0
- package/dist/package/entity/order-platform/deliveroo/deliveroo.enum.d.ts +31 -0
- package/dist/package/entity/order-platform/deliveroo/deliveroo.menu.dto.d.ts +2341 -0
- package/dist/package/entity/order-platform/external/setting/external-setting.do.d.ts +3 -3
- package/dist/package/entity/order-platform/external/setting/external-setting.dto.d.ts +3 -3
- package/dist/package/entity/order-platform/order-platform.enum.d.ts +6 -1
- package/package.json +1 -1
- package/src/api/remoteOrder/index.ts +20 -2
- package/src/locales/en-US.json +1 -0
- package/src/locales/th-TH.json +1 -0
- package/src/locales/zh-CN.json +2 -0
- package/src/stores/restaurant/index.ts +12 -7
- package/src/views/order-settings/delivery/DeliverySetting.vue +141 -57
- package/src/views/order-settings/delivery/delivery.data.ts +10 -1
- package/src/views/order-settings/delivery/delivery.ts +34 -9
- package/src/views/order-settings/delivery/integrated-delivery/DeliverooSetting.vue +109 -0
- 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 & {
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
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
|