@feedmepos/mf-order-setting 0.0.70-prod → 0.0.71-dev

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 (27) hide show
  1. package/dist/{KioskDevicesView-6ADPwAez.js → KioskDevicesView-CP_cGMXE.js} +1 -1
  2. package/dist/{KioskDevicesView.vue_vue_type_script_setup_true_lang-BBoONzyB.js → KioskDevicesView.vue_vue_type_script_setup_true_lang-CiNLqFw6.js} +3 -3
  3. package/dist/{KioskSettingView-BhqV4Y53.js → KioskSettingView-BiKYEjfe.js} +4 -4
  4. package/dist/{KioskView-D7BdhS6J.js → KioskView-BYxPrI7N.js} +4 -4
  5. package/dist/{OrderSettingsView-DVWn3z4D.js → OrderSettingsView-C7Y-_y5U.js} +10985 -10866
  6. package/dist/{app-CMmf-Znb.js → app-BN02cB5o.js} +213 -213
  7. package/dist/app.js +1 -1
  8. package/dist/{dayjs.min-C7u6rs7Y.js → dayjs.min-Bml-FvS7.js} +1 -1
  9. package/dist/frontend/mf-order/src/api/remoteOrder/index.d.ts +5 -2
  10. package/dist/frontend/mf-order/src/stores/restaurant/index.d.ts +5 -2
  11. package/dist/frontend/mf-order/src/views/order-settings/delivery/DeliverySetting.vue.d.ts +2 -2
  12. package/dist/frontend/mf-order/src/views/order-settings/delivery/delivery.d.ts +1 -0
  13. package/dist/frontend/mf-order/src/views/order-settings/delivery/delivery.data.d.ts +3 -1
  14. package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/GoFoodSetting.vue.d.ts +46 -0
  15. package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -1
  16. package/dist/{index-BXju8gUv.js → index-BlKeAWPk.js} +1 -1
  17. package/dist/index-DZA8A0m4.js +630 -0
  18. package/dist/{queue-transfer.dto-DTfr17-h.js → queue-transfer.dto-C7nRZOZH.js} +1 -1
  19. package/package.json +1 -1
  20. package/src/api/remoteOrder/index.ts +14 -1
  21. package/src/stores/restaurant/index.ts +5 -0
  22. package/src/views/order-settings/delivery/DeliverySetting.vue +60 -2
  23. package/src/views/order-settings/delivery/delivery.data.ts +12 -1
  24. package/src/views/order-settings/delivery/delivery.ts +2 -1
  25. package/src/views/order-settings/delivery/integrated-delivery/GoFoodSetting.vue +101 -0
  26. package/vite.config.ts +1 -0
  27. package/dist/index-DJHJUdYS.js +0 -614
@@ -20,6 +20,7 @@ import {
20
20
  FdoGrabfoodSettings,
21
21
  FdoExternalSetting,
22
22
  FdoFoodpandaSettings,
23
+ FdoGoFoodSettings,
23
24
  FdoShopeeFoodSettings
24
25
  } from '@entity'
25
26
  import { FeatureFlag, Pos } from '@feedmepos/core'
@@ -112,6 +113,9 @@ export const useRestaurantStore = defineStore('restaurant', () => {
112
113
  async function updateIntegratedShopeefoodDelivery(restaurantId: string, dto: FdoShopeeFoodSettings) {
113
114
  await remoteOrderApi.integratedDelivery.updateShopeefood(restaurantId, dto)
114
115
  }
116
+ async function updateIntegratedGofoodDelivery(restaurantId: string, dto: FdoGoFoodSettings) {
117
+ await remoteOrderApi.integratedDelivery.updateGofood(restaurantId, dto)
118
+ }
115
119
 
116
120
  async function updateIntegratedDeliverooDelivery(restaurantId: string, dto: FdoDeliverooSettings) {
117
121
  await remoteOrderApi.integratedDelivery.updateDeliveroo(restaurantId, dto)
@@ -160,6 +164,7 @@ export const useRestaurantStore = defineStore('restaurant', () => {
160
164
  updateIntegratedFoodpandaDelivery,
161
165
  updateIntegratedGrabfoodDelivery,
162
166
  updateIntegratedShopeefoodDelivery,
167
+ updateIntegratedGofoodDelivery,
163
168
  updateIntegratedDeliverooDelivery,
164
169
  updateExternalDelivery,
165
170
  getRestaurantEPayment,
@@ -62,6 +62,13 @@
62
62
  :can-use-auto-delivery-integration="componentProps.canUseAuto"
63
63
  @update:model-value="handleModelValueUpdate"
64
64
  />
65
+ <GoFoodSetting
66
+ v-if="componentProps.key === AUTO_INTEGRATION_CLIENT.gofood"
67
+ :initial-value="componentProps.initialValue"
68
+ :company="componentProps.company"
69
+ :can-use-auto-delivery-integration="componentProps.canUseAuto"
70
+ @update:model-value="handleModelValueUpdate"
71
+ />
65
72
  <DeliverooSetting
66
73
  v-if="componentProps.key === AUTO_INTEGRATION_CLIENT.deliveroo"
67
74
  :initial-value="componentProps.initialValue"
@@ -175,7 +182,7 @@ import type {
175
182
  FdoRestaurantInHouseDelivery
176
183
  } from '@feedmepos/core/entity'
177
184
  import { F_DELIVERY_TYPE, F_ORDER_PLATFORM, F_RESTAURANT_FEATURE } from '@feedmepos/core/entity'
178
- import { FdoGrabfoodSettings, FdoShopeeFoodSettings } from '@entity'
185
+ import { FdoGoFoodSettings, FdoGrabfoodSettings, FdoShopeeFoodSettings } from '@entity'
179
186
  import deliveryData from './delivery.data'
180
187
  import { useDelivery, type DeliveryCompany, type LinkedDeliveryDoc } from './delivery'
181
188
  import { useLoading } from '@/composables/loading'
@@ -188,6 +195,7 @@ import type { FdoRestaurantFeedme } from '../delivery/integrated-delivery/Feedme
188
195
  import FoodpandaSetting from './integrated-delivery/FoodpandaSetting.vue'
189
196
  import GrabfoodSetting from './integrated-delivery/GrabfoodSetting.vue'
190
197
  import ShopeefoodSetting from './integrated-delivery/ShopeefoodSetting.vue'
198
+ import GoFoodSetting from './integrated-delivery/GoFoodSetting.vue'
191
199
  import ExternalSetting from './integrated-delivery/ExternalSetting.vue'
192
200
  import { useRestaurantStore } from '@/stores/restaurant'
193
201
  import FeedmeDelivery from './integrated-delivery/FeedmeDelivery.vue'
@@ -264,6 +272,7 @@ type IntegratedDeliveryCompany =
264
272
  | FdoFoodpandaSettings
265
273
  | FdoGrabfoodSettings
266
274
  | FdoShopeeFoodSettings
275
+ | FdoGoFoodSettings
267
276
  | FdoExternalSetting
268
277
  export interface IntegratedDeliveryRow extends DeliveryRow {
269
278
  setting: IntegratedDeliveryCompany
@@ -310,6 +319,10 @@ async function toggleIntegratedSidesheet(data: any) {
310
319
  title.value = `${t('order.manageDelivery', { company: 'shopeefood' })}`
311
320
  updateIntegratedDeliveryType(rowData)
312
321
  break
322
+ case AUTO_INTEGRATION_CLIENT.gofood:
323
+ title.value = `${t('order.manageDelivery', { company: 'gofood' })}`
324
+ updateIntegratedDeliveryType(rowData)
325
+ break
313
326
  case AUTO_INTEGRATION_CLIENT.deliveroo:
314
327
  title.value = 'Manage deliveroo deivery'
315
328
  updateIntegratedDeliveryType(rowData)
@@ -536,6 +549,13 @@ const shopee = computed<FdoShopeeFoodSettings>(() => {
536
549
  }
537
550
  })
538
551
 
552
+ const gofood = computed<FdoGoFoodSettings>(() => {
553
+ return {
554
+ ...deliveryData.initGoFoodDelivery(),
555
+ ...gofoodSetting.value
556
+ }
557
+ })
558
+
539
559
  const deliveroo = computed<FdoDeliverooSettings>(() => {
540
560
  return {
541
561
  ...deliveryData.initDeliverooDelivery(),
@@ -594,6 +614,7 @@ const integratedCompanies = computed<IntegratedDeliveryRow[]>(() => {
594
614
  const fpIntegrate = getIntegrateDoc(AUTO_INTEGRATION_CLIENT.foodpanda)
595
615
  const grabIntegrate = getIntegrateDoc(AUTO_INTEGRATION_CLIENT.grabfood)
596
616
  const sfIntegrate = getIntegrateDoc(AUTO_INTEGRATION_CLIENT.shopeefood)
617
+ const gofoodIntegrate = getIntegrateDoc(AUTO_INTEGRATION_CLIENT.gofood)
597
618
  const drIntegrate = getIntegrateDoc(AUTO_INTEGRATION_CLIENT.deliveroo)
598
619
 
599
620
  const generateStatus = (integrateActive: boolean) => {
@@ -661,6 +682,19 @@ const integratedCompanies = computed<IntegratedDeliveryRow[]>(() => {
661
682
  AUTO_INTEGRATION_CLIENT.shopeefood
662
683
  )
663
684
  },
685
+ {
686
+ id: loadingKey.value.gofood,
687
+ name: 'GoFood delivery',
688
+ key: AUTO_INTEGRATION_CLIENT.gofood,
689
+ company: gofoodIntegrate,
690
+ paymentType: 'Default',
691
+ status: [generateStatus(gofood.value.enable)],
692
+ setting: gofood.value,
693
+ catalog: getCatalog(gofood.value.catalogId || null),
694
+ canUseAutoDeliveryIntegration: canUseAutoDeliveryIntegration(
695
+ AUTO_INTEGRATION_CLIENT.gofood
696
+ )
697
+ },
664
698
  {
665
699
  id: loadingKey.value.dr,
666
700
  name: 'Deliveroo delivery',
@@ -700,6 +734,7 @@ const loadingKey = computed(() => {
700
734
  fp: `${id}_fp`,
701
735
  gf: `${id}_gf`,
702
736
  sf: `${id}_sf`,
737
+ gofood: `${id}_gofood`,
703
738
  fm: `${id}_fm`,
704
739
  dr: `${id}_dr`,
705
740
  external: `${id}_external`,
@@ -718,6 +753,9 @@ async function updateIntegratedDeliveryCompany() {
718
753
  case AUTO_INTEGRATION_CLIENT.shopeefood:
719
754
  await updateIntegratedDeliverySetting()
720
755
  break
756
+ case AUTO_INTEGRATION_CLIENT.gofood:
757
+ await updateIntegratedDeliverySetting()
758
+ break
721
759
  case AUTO_INTEGRATION_CLIENT.deliveroo:
722
760
  await updateIntegratedDeliverySetting()
723
761
  break
@@ -751,6 +789,7 @@ const filteredCompanies = computed(() => {
751
789
  const grabfoodSetting = ref<FdoGrabfoodSettings | null>(null)
752
790
  const foodpandaSetting = ref<FdoFoodpandaSettings | null>(null)
753
791
  const shopeefoodSetting = ref<FdoShopeeFoodSettings | null>(null)
792
+ const gofoodSetting = ref<FdoGoFoodSettings | null>(null)
754
793
  const deliverooSetting = ref<FdoDeliverooSettings | null>(null)
755
794
  const externalSetting = ref<FdoExternalSetting | null>(null)
756
795
  const loadingDpi = ref<boolean>(false)
@@ -782,6 +821,12 @@ async function readData() {
782
821
  )
783
822
  ? await remoteOrderApi.integratedDelivery.readShopeefood(currentRestaurant.value?._id || '')
784
823
  : null
824
+ gofoodSetting.value = isIntegratedPlatformSupported(
825
+ AUTO_INTEGRATION_CLIENT.gofood,
826
+ currentCountry.value
827
+ )
828
+ ? await remoteOrderApi.integratedDelivery.readGofood(currentRestaurant.value?._id || '')
829
+ : null
785
830
  deliverooSetting.value = isIntegratedPlatformSupported(
786
831
  AUTO_INTEGRATION_CLIENT.deliveroo,
787
832
  currentCountry.value
@@ -952,7 +997,11 @@ async function updateDelivery(
952
997
  company: DeliveryCompany
953
998
  data: FdoLinkedDelivery | null
954
999
  },
955
- integrated: FdoFoodpandaSettings | FdoGrabfoodSettings | FdoShopeeFoodSettings,
1000
+ integrated:
1001
+ | FdoFoodpandaSettings
1002
+ | FdoGrabfoodSettings
1003
+ | FdoShopeeFoodSettings
1004
+ | FdoGoFoodSettings,
956
1005
  hasOriDeliverySetting: boolean,
957
1006
  canUseAutoDeliveryIntegration?: string | boolean
958
1007
  ) {
@@ -979,6 +1028,12 @@ async function updateDelivery(
979
1028
  integrated as FdoShopeeFoodSettings
980
1029
  )
981
1030
  break
1031
+ case AUTO_INTEGRATION_CLIENT.gofood:
1032
+ await restaurantStore.updateIntegratedGofoodDelivery(
1033
+ currentRestaurant.value?._id ?? '',
1034
+ integrated as FdoGoFoodSettings
1035
+ )
1036
+ break
982
1037
  case AUTO_INTEGRATION_CLIENT.deliveroo:
983
1038
  await restaurantStore.updateIntegratedDeliverooDelivery(
984
1039
  currentRestaurant.value?._id ?? '',
@@ -1052,6 +1107,7 @@ type companyName =
1052
1107
  | 'Food Panda delivery'
1053
1108
  | 'Grab Food delivery'
1054
1109
  | 'ShopeeFood delivery'
1110
+ | 'GoFood delivery'
1055
1111
  | 'Deliveroo delivery'
1056
1112
  | 'External delivery'
1057
1113
 
@@ -1067,6 +1123,8 @@ function convertIntegratedCompanyName(name: companyName): string {
1067
1123
  return `${t('order.deliveryTitle', { company: 'Grab Food' })}`
1068
1124
  case 'ShopeeFood delivery':
1069
1125
  return `${t('order.deliveryTitle', { company: 'ShopeeFood' })}`
1126
+ case 'GoFood delivery':
1127
+ return `${t('order.deliveryTitle', { company: 'GoFood' })}`
1070
1128
  case 'Deliveroo delivery':
1071
1129
  return `${t('order.deliveryTitle', { company: 'Deliveroo' })}`
1072
1130
  case 'External delivery':
@@ -3,7 +3,8 @@ import type {
3
3
  FdoExternalSetting,
4
4
  FdoGrabfoodSettings,
5
5
  FdoShopeeFoodSettings,
6
- FdoFoodpandaSettings
6
+ FdoFoodpandaSettings,
7
+ FdoGoFoodSettings
7
8
  } from '@entity';
8
9
  import {
9
10
  FdoRestaurantFeedmeDelivery,
@@ -78,6 +79,15 @@ function initDeliverooDelivery(): FdoDeliverooSettings {
78
79
  autoCloseBill: false
79
80
  }
80
81
  }
82
+
83
+ function initGoFoodDelivery(): FdoGoFoodSettings {
84
+ return {
85
+ enable: false,
86
+ outletId: '',
87
+ catalogId: null,
88
+ autoCloseBill: false
89
+ }
90
+ }
81
91
  function initExternalDelivery(): FdoExternalSetting {
82
92
  return {
83
93
  _id: '',
@@ -99,5 +109,6 @@ export default {
99
109
  initGrabfoodDelivery,
100
110
  initShopeefoodDelivery,
101
111
  initDeliverooDelivery,
112
+ initGoFoodDelivery,
102
113
  initExternalDelivery
103
114
  }
@@ -8,6 +8,7 @@ export enum AUTO_INTEGRATION_CLIENT {
8
8
  grabfood = 'grabfood',
9
9
  shopeefood = 'shopeefood',
10
10
  deliveroo = 'deliveroo',
11
+ gofood = 'gofood',
11
12
  external = 'external'
12
13
  }
13
14
 
@@ -46,7 +47,7 @@ export function useDelivery() {
46
47
  const sgSupported = [AUTO_INTEGRATION_CLIENT.foodpanda, AUTO_INTEGRATION_CLIENT.grabfood, AUTO_INTEGRATION_CLIENT.deliveroo];
47
48
  const thSupported = [AUTO_INTEGRATION_CLIENT.grabfood, AUTO_INTEGRATION_CLIENT.external];
48
49
  const pkSupported = [AUTO_INTEGRATION_CLIENT.foodpanda, AUTO_INTEGRATION_CLIENT.external];
49
- const idSupported = [AUTO_INTEGRATION_CLIENT.grabfood, AUTO_INTEGRATION_CLIENT.external];
50
+ const idSupported = [AUTO_INTEGRATION_CLIENT.grabfood, AUTO_INTEGRATION_CLIENT.gofood, AUTO_INTEGRATION_CLIENT.external];
50
51
 
51
52
  let supportedPlatforms: AUTO_INTEGRATION_CLIENT[] = [];
52
53
  switch (country) {
@@ -0,0 +1,101 @@
1
+ <script setup lang="ts">
2
+ import { FdoLinkedDelivery } from '@feedmepos/core/entity'
3
+ import { FdoGoFoodSettings } from '@entity'
4
+ import { computed, type PropType, reactive } from 'vue'
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 } from '@feedmepos/mf-common'
12
+ import { useSnackbarFunctions } from '@/components/snackbar'
13
+
14
+ export interface GoFoodDeliveryData {
15
+ manual: FdoLinkedDelivery | null
16
+ integrated: FdoGoFoodSettings
17
+ }
18
+
19
+ const { t } = useI18n()
20
+ const { showSuccess } = useSnackbarFunctions()
21
+
22
+ const props = defineProps({
23
+ initialValue: {
24
+ type: Object as PropType<GoFoodDeliveryData>,
25
+ required: true
26
+ },
27
+ company: {
28
+ type: Object as PropType<DeliveryCompany>,
29
+ required: true
30
+ },
31
+ canUseAutoDeliveryIntegration: {
32
+ type: [String, Boolean],
33
+ required: true
34
+ }
35
+ })
36
+
37
+ const data = reactive(clone(props.initialValue))
38
+
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.outletId,
46
+ autoCloseBill: auto.autoCloseBill || false,
47
+ catalogId: auto?.catalogId || null,
48
+ printReceiptAfterClose: auto.printReceiptAfterClose ?? true,
49
+ commissionRate: 0,
50
+ lastSynchronize: auto.lastSynchronize,
51
+ status: auto.status,
52
+ updatedAt: auto.updatedAt,
53
+ menuSyncError: auto.menuSyncError
54
+ }
55
+ }
56
+ })
57
+
58
+ function updateData({ manual, auto }: IntegratedDeliverySettingData) {
59
+ data.manual = manual
60
+ data.integrated = {
61
+ ...auto,
62
+ outletId: 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
+ await startAsyncCallWithErr(async () => {
79
+ const res = await remoteOrderApi.integratedDelivery.syncGofoodMenu(data.integrated._id || '')
80
+ const temp = {
81
+ ...modelValue.value.auto,
82
+ lastSynchronize: res?.lastSynchronize || modelValue.value.auto.lastSynchronize
83
+ }
84
+ updateData({ auto: temp, manual: data.manual })
85
+ showSuccess(t('order.syncMenuSuccess'))
86
+ })
87
+ }
88
+ </script>
89
+
90
+ <template>
91
+ <div class="px-4 pt-2 pb-3 mb-3 bg-fm-color-system-info-100 fm-corner-radius-md fm-typo-en-body-md-400 text-fm-color-typo-info">
92
+ Restart POS after saving for changes to take effect.
93
+ </div>
94
+ <IntegratedDelivery
95
+ :model-value="modelValue"
96
+ :company="company"
97
+ :can-use-auto-delivery-integration="canUseAutoDeliveryIntegration"
98
+ @update:model-value="updateDataPass"
99
+ @sync-menu="syncMenu"
100
+ />
101
+ </template>
package/vite.config.ts CHANGED
@@ -11,6 +11,7 @@ export default defineConfig((env) => {
11
11
  plugins: [vue()],
12
12
  resolve: {
13
13
  preserveSymlinks: true,
14
+ dedupe: ['vue', 'pinia', 'vue-i18n'],
14
15
  alias: {
15
16
  '@': fileURLToPath(new URL('./src', import.meta.url)),
16
17
  '@entity': fileURLToPath(new URL('./../../package/entity', import.meta.url)),