@feedmepos/mf-connect 0.1.24-prod → 0.1.26-prod

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 (93) hide show
  1. package/dist/{Analytic-DH3odpBh.js → Analytic-WXmpLkLU.js} +18 -17
  2. package/dist/{App-DT9d3Bm2.js → App-jBGNDeCb.js} +6 -6
  3. package/dist/{Bin-CEFG1nRH.js → Bin-COj4GqKe.js} +19 -18
  4. package/dist/{Broadcast-B_rv159-.js → Broadcast-vIqSNTJh.js} +13 -12
  5. package/dist/{CampaignTypeDialog.vue_vue_type_script_setup_true_lang-DzD9-r4-.js → CampaignTypeDialog.vue_vue_type_script_setup_true_lang-BVtfunGL.js} +14 -8
  6. package/dist/{Card-Dyya8J2U.js → Card-CGyBry4S.js} +57 -55
  7. package/dist/{Collections-Dl2FDFOD.js → Collections-BeQ_uFRE.js} +23 -21
  8. package/dist/{Credit-B9mz3eUI.js → Credit-DWsgc_P1.js} +35 -34
  9. package/dist/{EditCampaignSheet.vue_vue_type_script_setup_true_lang-TrKmONi5.js → EditCampaignSheet.vue_vue_type_script_setup_true_lang-DxPsGM7d.js} +28 -27
  10. package/dist/{EffectSheet.vue_vue_type_style_index_0_lang-CVCgGHg4.js → EffectSheet.vue_vue_type_style_index_0_lang-DlCdWAqB.js} +6 -6
  11. package/dist/{Experience-CGwG9JGa.js → Experience-DQ5ofpRU.js} +13 -12
  12. package/dist/FilterChip.vue_vue_type_script_setup_true_lang-BrPLkFX8.js +118 -0
  13. package/dist/Game-dl01-cxh.js +278 -0
  14. package/dist/{Index-D0IkkcBH.js → Index-B33SYml2.js} +14 -13
  15. package/dist/{Marketing-HmC8ZXqz.js → Marketing-CqWuI9r1.js} +8 -7
  16. package/dist/Member-PuWzURyR.js +348 -0
  17. package/dist/{MemberList-_MFrJqht.js → MemberList-dQljjKIC.js} +275 -269
  18. package/dist/{MemberTransactions-kUyU9Qn6.js → MemberTransactions-BH1U_v3f.js} +1 -1
  19. package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-DypmZY2G.js → MessageInput.vue_vue_type_script_setup_true_lang-ZSNwpN6m.js} +7 -7
  20. package/dist/{Mission-OUjm7KRr.js → Mission-PjsS8VTH.js} +118 -96
  21. package/dist/{Overview-F2AvMo-g.js → Overview-B6zXdxIf.js} +63 -62
  22. package/dist/{Point-K9poYQjB.js → Point-DhYeSbYo.js} +11 -10
  23. package/dist/{Promotion-DpS6PQFU.js → Promotion-4yBcCEQA.js} +12 -11
  24. package/dist/Queue-BCOe370v.js +249 -0
  25. package/dist/{Record-CZMB7xKL.js → Record-FxeE4KZe.js} +21 -19
  26. package/dist/{Reward-zMCEkbO5.js → Reward-B4licTuW.js} +19 -18
  27. package/dist/{RewardGroup.vue_vue_type_script_setup_true_lang-Dj73NYhp.js → RewardGroup.vue_vue_type_script_setup_true_lang-CKWOhSQh.js} +13 -12
  28. package/dist/{RuleGroup.vue_vue_type_script_setup_true_lang-FyuAHi5K.js → RuleGroup.vue_vue_type_script_setup_true_lang-BbOzaj63.js} +12 -12
  29. package/dist/{Segment-LthACAfl.js → Segment-DONb4N1l.js} +19 -17
  30. package/dist/{SelectItems.vue_vue_type_script_setup_true_lang-DRe6Gyov.js → SelectItems.vue_vue_type_script_setup_true_lang-CvHYZpGm.js} +2 -2
  31. package/dist/SendCollectionSheet.vue_vue_type_script_setup_true_lang-NDwwOZSM.js +188 -0
  32. package/dist/{SendVoucherSheet.vue_vue_type_script_setup_true_lang-Z9Nb9b6-.js → SendVoucherSheet.vue_vue_type_script_setup_true_lang-D2ixqrV7.js} +3 -3
  33. package/dist/{Setting-8ASd681E.js → Setting-BQOcVtGa.js} +20 -19
  34. package/dist/{Store-C-bmQP0K.js → Store-BlaFXTeO.js} +24 -23
  35. package/dist/{StoreRewards-Bu3DWaCn.js → StoreRewards-Lqc34UoD.js} +15 -14
  36. package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-C5dViJNi.js +994 -0
  37. package/dist/{TargetLocationInput.vue_vue_type_script_setup_true_lang-Bn7aoYqw.js → TargetLocationInput.vue_vue_type_script_setup_true_lang-e_31o0i7.js} +1 -1
  38. package/dist/{Tier-DDKUGBRg.js → Tier-B26lO0SB.js} +25 -24
  39. package/dist/{Title-Cup_EWfZ.js → Title-BASSyfhP.js} +28 -27
  40. package/dist/{Transaction-BqvgfyiW.js → Transaction-BbzBRylw.js} +2 -2
  41. package/dist/{UserRuleGroup.vue_vue_type_script_setup_true_lang-BCkXievQ.js → UserRuleGroup.vue_vue_type_script_setup_true_lang-BFyl96zy.js} +6 -6
  42. package/dist/{Voucher-Dxk6zfcN.js → Voucher-A_GG0E5t.js} +38 -37
  43. package/dist/{VoucherEditor.vue_vue_type_script_setup_true_lang-DmswMNi5.js → VoucherEditor.vue_vue_type_script_setup_true_lang-CCGtKQTW.js} +10 -10
  44. package/dist/{ZodTextField.vue_vue_type_script_setup_true_lang-D-UPL1Rc.js → ZodTextField.vue_vue_type_script_setup_true_lang-DGNqvOl5.js} +1 -1
  45. package/dist/{app-bidojB9R.js → app-C7FQYfsn.js} +1 -1
  46. package/dist/{app-BDUrJlXZ.js → app-DV-5XPYF.js} +235 -166
  47. package/dist/app.js +1 -1
  48. package/dist/{business-CFOn3-Hz.js → business-C8PXQSRE.js} +1 -1
  49. package/dist/{campaign-DyzzIbnA.js → campaign-B4eKVpps.js} +9 -9
  50. package/dist/{campaign-BVIiGyq9.js → campaign-CuZ6u4yy.js} +2 -2
  51. package/dist/{campaign.enum-aFjayQfJ.js → campaign.enum-xbqqPDwY.js} +1 -1
  52. package/dist/{campaign.fn-BKADpFTx.js → campaign.fn-GFFtrWsz.js} +133 -133
  53. package/dist/{collectible.enum-vEUgo0YF.js → collectible.enum-DB4oBcfv.js} +1 -1
  54. package/dist/{collection.fn-D2Kbz9yq.js → collection.fn-BwpscyTl.js} +2 -2
  55. package/dist/{dto-CKxtFHko.js → dto-Cr20KGr0.js} +4 -4
  56. package/dist/{effect-BEWKDhDB.js → effect-D9-UiBiK.js} +1 -1
  57. package/dist/{email-addresses-BWDg5Wvf.js → email-addresses-F3hoXmRI.js} +1 -1
  58. package/dist/{export-DO-WeD6l.js → export-BIPF1ilY.js} +3 -3
  59. package/dist/{helper-CSGr0Zgt.js → helper-Tf1bFEee.js} +1 -1
  60. package/dist/{index-UVHHFXyh.js → index-B2jAIO5k.js} +1162 -1129
  61. package/dist/{index-Dw_jc7Et.js → index-BYzdfZKb.js} +3 -3
  62. package/dist/{index-BgJVKNYg.js → index-BhlEaLpy.js} +24 -21
  63. package/dist/{index-BV4M35iK.js → index-Bkw-11Tg.js} +2 -2
  64. package/dist/{index-CFXFhGs9.js → index-BvqdtS9H.js} +1 -1
  65. package/dist/{index-DVsh-nBE.js → index-CpUyyTF6.js} +1 -1
  66. package/dist/{index-CUlYeKKH.js → index-D4XX55M5.js} +1 -1
  67. package/dist/{index-CEjeBL2U.js → index-Dow2N7x1.js} +1 -1
  68. package/dist/{index--Mrx1FRI.js → index-IOTB7rGH.js} +1 -1
  69. package/dist/{index-CoMMyOsj.js → index-bb6Kd8k_.js} +10 -10
  70. package/dist/{index-DSBnWOie.js → index-gTmOLzQU.js} +1 -1
  71. package/dist/{index-Bg3caQS6.js → index-mjBmZtX2.js} +1273 -1273
  72. package/dist/{index.esm2017-CDzvT_fP.js → index.esm2017-Y_0J3nbR.js} +137 -137
  73. package/dist/loading-BbC_ZIPE.js +71 -0
  74. package/dist/{membership-DK9FNo2Y.js → membership-BM_2_hUW.js} +3 -3
  75. package/dist/{money-DJYiw0es.js → money-BsBmwalY.js} +1 -1
  76. package/dist/{number-BjhqQBza.js → number-QqpGrk9q.js} +1 -1
  77. package/dist/objectid-DQj-P2cH.js +145 -0
  78. package/dist/{loading-CWihCJvJ.js → plugins-DKPF0eaB.js} +1535 -1601
  79. package/dist/{reward-DlE5Zt3d.js → reward-Yl3EdHrH.js} +1 -1
  80. package/dist/{rule-a2_WCjR8.js → rule-DW_bLKtu.js} +3 -3
  81. package/dist/{rule-builder-Q8iGSpDV.js → rule-builder-BoITzEtm.js} +1 -1
  82. package/dist/{template-3faxO3XM.js → template-BSQzNJs5.js} +4 -4
  83. package/dist/{trigger-Cnvhgqkj.js → trigger-Bel1H8iR.js} +11 -11
  84. package/dist/usePagination-JoYaROkV.js +223 -0
  85. package/dist/{user-CoiXBmet.js → user-Dg2HfZlK.js} +1 -1
  86. package/dist/vue-i18n-CvvsV6dR.js +2365 -0
  87. package/dist/{usePagination-dNrSGtRV.js → xlsx-1oIZztwO.js} +2979 -3200
  88. package/package.json +3 -1
  89. package/dist/Game-DbhOlio1.js +0 -256
  90. package/dist/Member-NSQ2nHzW.js +0 -69
  91. package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-CDRpkUaP.js +0 -1105
  92. package/dist/objectid-Cep7PkzN.js +0 -145
  93. package/dist/vue-i18n-B2XH0K8P.js +0 -2365
@@ -0,0 +1,994 @@
1
+ import { defineComponent as H, mergeModels as ee, useModel as fe, computed as U, onMounted as ae, watch as Q, resolveComponent as A, openBlock as F, createBlock as q, withCtx as W, createVNode as D, unref as l, ref as O, h as n, isRef as ge, createElementVNode as x, createElementBlock as V, Fragment as X, renderList as te, toDisplayString as L, createTextVNode as he, resolveDynamicComponent as ye, onBeforeMount as ve } from "vue";
2
+ import { components as S, useDialog as _e } from "@feedmepos/ui-library";
3
+ import { q as oe } from "./index-B2jAIO5k.js";
4
+ import { a as Z, c as be, p as Se } from "./plugins-DKPF0eaB.js";
5
+ import { s as xe } from "./index-Dbd4WA4r.js";
6
+ import { h } from "./moment-BWErdI6_.js";
7
+ import { _ as j } from "./FilterChip.vue_vue_type_script_setup_true_lang-BrPLkFX8.js";
8
+ import { s as K } from "./index-CuvNtC_M.js";
9
+ import { f as J } from "./number-QqpGrk9q.js";
10
+ import { u as ne } from "./business-C8PXQSRE.js";
11
+ import { u as re, _ as le } from "./usePagination-JoYaROkV.js";
12
+ import { g as se } from "./user-Dg2HfZlK.js";
13
+ import { B as ie, e as ce } from "./export-BIPF1ilY.js";
14
+ import { u as ue } from "./campaign-CuZ6u4yy.js";
15
+ import "./index-IOTB7rGH.js";
16
+ import "./index-Bkw-11Tg.js";
17
+ import "./index-bb6Kd8k_.js";
18
+ import "./index-D4XX55M5.js";
19
+ import "./index-BYzdfZKb.js";
20
+ import { u as we } from "./vue-i18n-CvvsV6dR.js";
21
+ import { o as P } from "./objectId-dwaoBfJX.js";
22
+ import { useRouter as De } from "vue-router";
23
+ import { t as G } from "./index-BvqdtS9H.js";
24
+ import { R as z } from "./app-DV-5XPYF.js";
25
+ import { u as Re } from "./loading-BbC_ZIPE.js";
26
+ import { useCoreStore as Te } from "@feedmepos/mf-common";
27
+ import { m as Ce } from "./index-Dow2N7x1.js";
28
+ function Ie(u) {
29
+ let f = "";
30
+ switch (u) {
31
+ case "PORTAL":
32
+ f = "ADMIN";
33
+ break;
34
+ case "BENEFIT":
35
+ f = "MEMBERSHIP";
36
+ break;
37
+ case "ORDER":
38
+ f = "ORDER";
39
+ break;
40
+ case "BILL":
41
+ f = "SPENDING";
42
+ break;
43
+ case "CASHBACK":
44
+ f = "CASHBACK";
45
+ break;
46
+ case "CYCLE":
47
+ f = "EXPIRED";
48
+ break;
49
+ case "COUNTER_CONSUME":
50
+ f = "COUNTER REDEEM";
51
+ break;
52
+ default:
53
+ f = u;
54
+ break;
55
+ }
56
+ return f;
57
+ }
58
+ function Fe(u) {
59
+ var f, _, c, m, b, T;
60
+ switch ((f = u == null ? void 0 : u.pf_collectible) == null ? void 0 : f.type) {
61
+ case "VOUCHER":
62
+ return `${(_ = u.pf_collectible) == null ? void 0 : _.type} (${(c = u.pf_collectible) == null ? void 0 : c.name})`;
63
+ case "TITLE":
64
+ return `${(m = u.pf_collectible) == null ? void 0 : m.type} (${(b = u.pf_collectible) == null ? void 0 : b.name})`;
65
+ case "POINT":
66
+ return "Experience";
67
+ case "COIN":
68
+ return "Point";
69
+ default:
70
+ return xe((T = u == null ? void 0 : u.pf_collectible) == null ? void 0 : T.type);
71
+ }
72
+ }
73
+ function Ee(u) {
74
+ switch (u) {
75
+ case "ONLINE":
76
+ return "Online";
77
+ case "COIN":
78
+ return "Point";
79
+ default:
80
+ return u;
81
+ }
82
+ }
83
+ const E = {
84
+ getReason: Ie,
85
+ formattedType: Fe,
86
+ formattedPaymentType: Ee
87
+ }, k = "YYYY-MM-DD", de = /* @__PURE__ */ H({
88
+ __name: "DateRangeChip",
89
+ props: /* @__PURE__ */ ee({
90
+ modelValue: {
91
+ type: Object,
92
+ required: !0
93
+ }
94
+ }, {
95
+ dateRange: {
96
+ type: Object,
97
+ default: () => ({
98
+ startDate: h().subtract(7, "day").format(k),
99
+ endDate: h().endOf("day").format(k)
100
+ })
101
+ },
102
+ dateRangeModifiers: {}
103
+ }),
104
+ emits: /* @__PURE__ */ ee(["update:model-value"], ["update:dateRange"]),
105
+ setup(u, { emit: f }) {
106
+ const _ = u, c = f, m = fe(u, "dateRange"), b = U(() => m.value ? `${T.value.startDate ?? "Start"} - ${T.value.endDate ?? "End"}` : "No dates selected."), T = U(() => ({
107
+ startDate: m.value.startDate ? h(m.value.startDate).format(k) : void 0,
108
+ endDate: m.value.endDate ? h(m.value.endDate).format(k) : void 0
109
+ }));
110
+ return ae(() => {
111
+ m.value = {
112
+ startDate: _.modelValue.startDate ? h(_.modelValue.startDate).format(k) : void 0,
113
+ endDate: _.modelValue.endDate ? h(_.modelValue.endDate).format(k) : void 0
114
+ };
115
+ }), Q(
116
+ () => m.value,
117
+ () => {
118
+ c("update:model-value", T.value);
119
+ }
120
+ ), (d, R) => {
121
+ const N = A("FmChip"), p = A("FmDateRangePicker");
122
+ return F(), q(p, {
123
+ modelValue: m.value,
124
+ "onUpdate:modelValue": R[0] || (R[0] = (o) => m.value = o),
125
+ "show-predefined-range": ""
126
+ }, {
127
+ "trigger-button": W(() => [
128
+ D(N, {
129
+ label: l(b),
130
+ icon: "calendar_month",
131
+ "right-icon": "keyboard_arrow_down",
132
+ class: "text-fm-color-neutral-gray-400 cursor-pointer"
133
+ }, null, 8, ["label"])
134
+ ]),
135
+ _: 1
136
+ }, 8, ["modelValue"]);
137
+ };
138
+ }
139
+ });
140
+ class Ae extends ie {
141
+ }
142
+ const Ne = { class: "space-y-24 pr-12" }, Oe = { class: "w-full space-y-16" }, Me = { class: "fm-typo-en-body-lg-600" }, ke = ["onClick"], Ve = /* @__PURE__ */ x("hr", { class: "mt-3" }, null, -1), Pe = { class: "fm-typo-en-body-lg-600" }, Ye = ["onClick"], Ue = /* @__PURE__ */ x("hr", { class: "mt-3" }, null, -1), $e = { class: "flex items-center gap-8" }, Be = /* @__PURE__ */ H({
143
+ __name: "TransactionDetailSheet",
144
+ setup(u, { expose: f }) {
145
+ we();
146
+ const _ = O(!1), c = O(), m = ue(), b = ne();
147
+ function T(p, o) {
148
+ _.value = p, c.value = o ?? null;
149
+ }
150
+ const d = U(() => {
151
+ var p, o;
152
+ return J(
153
+ ((o = c.value) == null ? void 0 : o.expiryAmount.reduce(
154
+ (e, s) => e + s.amount,
155
+ ((p = c.value) == null ? void 0 : p.amount) ?? 0
156
+ )) ?? 0,
157
+ 2
158
+ );
159
+ }), R = U(() => {
160
+ var p, o, e, s, r;
161
+ return c.value ? [
162
+ {
163
+ label: "Transaction ID",
164
+ value: (p = c.value) == null ? void 0 : p._id
165
+ },
166
+ {
167
+ label: "Date/Time",
168
+ value: h(P(c.value._id.toString())).format(
169
+ "D MMM YYYY, hh:mmA"
170
+ )
171
+ },
172
+ {
173
+ label: "Amount",
174
+ component: () => n(
175
+ "span",
176
+ {
177
+ class: [
178
+ "pr-2",
179
+ +d.value > 0 ? "text-fm-color-system-success-300" : "text-fm-color-system-error-300"
180
+ ]
181
+ },
182
+ d.value
183
+ )
184
+ },
185
+ {
186
+ label: "Type",
187
+ value: E.formattedType(c.value)
188
+ },
189
+ {
190
+ label: "Source",
191
+ value: K(E.getReason(c.value.source))
192
+ },
193
+ {
194
+ label: "User",
195
+ value: (e = (o = c.value) == null ? void 0 : o.pf_user) == null ? void 0 : e.name
196
+ },
197
+ {
198
+ label: "Phone Number",
199
+ value: (r = (s = c.value) == null ? void 0 : s.pf_user) == null ? void 0 : r.phoneNumber
200
+ }
201
+ ] : [];
202
+ }), N = U(() => {
203
+ var s, r, w, g;
204
+ if (!c.value) return [];
205
+ const p = [], o = (s = c.value) == null ? void 0 : s.metadata, e = c.value;
206
+ if (o != null && o.campaign) {
207
+ const C = m.campaigns.all.find(
208
+ (M) => M._id === (o == null ? void 0 : o.campaign)
209
+ );
210
+ if (!C) return;
211
+ p.push({
212
+ label: "Campaign",
213
+ value: C.name
214
+ });
215
+ }
216
+ return o != null && o.remark && p.push({
217
+ label: "Remark",
218
+ value: o.remark
219
+ }), (r = c.value) != null && r.ref.startsWith("bill_") && p.push({
220
+ label: "Bill Number",
221
+ value: (w = c.value) == null ? void 0 : w.ref,
222
+ copy: () => {
223
+ var C;
224
+ return Z((C = c.value) == null ? void 0 : C.ref);
225
+ }
226
+ }), o != null && o.location && p.push({
227
+ label: "Location",
228
+ value: (g = b.locations.find(
229
+ (C) => C._id.toString() === (o == null ? void 0 : o.location)
230
+ )) == null ? void 0 : g.name
231
+ }), e.source === oe.enum.STORE && p.push({
232
+ label: "Store Transaction",
233
+ value: e.ref
234
+ }), o != null && o.originTransaction && p.push({
235
+ label: "Parent Transaction",
236
+ value: o.originTransaction
237
+ }), o != null && o.referral_count && p.push({
238
+ label: "Referral Count",
239
+ value: o.referral_count
240
+ }), e.refunded && p.push({
241
+ label: "Refunded From",
242
+ value: e.refundedFrom
243
+ }), p;
244
+ });
245
+ return f({
246
+ showSheet: T
247
+ }), (p, o) => {
248
+ const e = A("FmButton"), s = A("FmSideSheet");
249
+ return F(), q(s, {
250
+ "max-width": 560,
251
+ modelValue: l(_),
252
+ "onUpdate:modelValue": o[1] || (o[1] = (r) => ge(_) ? _.value = r : null),
253
+ header: "Transaction Details"
254
+ }, {
255
+ "side-sheet-footer": W(() => [
256
+ x("div", $e, [
257
+ D(e, {
258
+ label: "Close",
259
+ onClick: o[0] || (o[0] = (r) => T(!1)),
260
+ variant: "tertiary"
261
+ })
262
+ ])
263
+ ]),
264
+ default: W(() => [
265
+ x("div", Ne, [
266
+ x("div", Oe, [
267
+ (F(!0), V(X, null, te(l(R), (r) => (F(), V("div", {
268
+ key: r.label,
269
+ class: "flex flex-col gap-4"
270
+ }, [
271
+ x("div", Me, L(r.label), 1),
272
+ x("div", {
273
+ class: "text-fm-color-typo-secondary fm-typo-en-body-md-400 hover:underline",
274
+ onClick: r.copy
275
+ }, [
276
+ he(L(r.accessorFn ? r.accessorFn() : r.value) + " ", 1),
277
+ (F(), q(ye(r.component)))
278
+ ], 8, ke),
279
+ Ve
280
+ ]))), 128)),
281
+ (F(!0), V(X, null, te(l(N), (r) => (F(), V("div", {
282
+ key: r.label,
283
+ class: "flex flex-col gap-4"
284
+ }, [
285
+ x("div", Pe, L(r.label), 1),
286
+ x("div", {
287
+ class: "text-fm-color-typo-secondary fm-typo-en-body-md-400 hover:underline",
288
+ onClick: r.copy
289
+ }, L(r.accessorFn ? r.accessorFn() : r.value), 9, Ye),
290
+ Ue
291
+ ]))), 128))
292
+ ])
293
+ ])
294
+ ]),
295
+ _: 1
296
+ }, 8, ["modelValue"]);
297
+ };
298
+ }
299
+ }), Le = { class: "hidden xs:flex items-center justify-end" }, ze = { class: "flex items-center justify-between" }, Ke = { class: "flex gap-8 items-center w-full overflow-x-scroll" }, Ge = { class: "xs:hidden" }, wt = /* @__PURE__ */ H({
300
+ __name: "CollectionTransactions",
301
+ props: {
302
+ user: {
303
+ type: String
304
+ }
305
+ },
306
+ setup(u) {
307
+ const f = ne(), _ = ue(), c = De(), m = u, b = O(!1), T = [
308
+ {
309
+ header: "Transaction ID",
310
+ accessorKey: "_id",
311
+ meta: {
312
+ maxWidth: "100px"
313
+ },
314
+ cell(a) {
315
+ return n("div", { class: "flex items-center" }, [
316
+ n(S.FmIcon, {
317
+ name: "content_copy",
318
+ outline: !0,
319
+ size: "sm",
320
+ class: "cursor-pointer mr-4",
321
+ onClick: (t) => {
322
+ t.preventDefault(), t.stopPropagation(), Z(a.row.original._id.toString());
323
+ }
324
+ }),
325
+ n(
326
+ "div",
327
+ { class: "pr-2 text-ellipsis overflow-hidden" },
328
+ a.row.original._id.toString()
329
+ )
330
+ ]);
331
+ },
332
+ enableSorting: !1
333
+ },
334
+ {
335
+ header: "Created at",
336
+ accessorKey: "_id",
337
+ accessorFn: (a) => h(P(a._id.toString())),
338
+ cell: (a) => h(P(a.row.original._id.toString())).format(
339
+ "D MMM YYYY, hh:mmA"
340
+ ),
341
+ enableSorting: !0
342
+ },
343
+ {
344
+ header: "Amount",
345
+ // accessorKey: 'totalAmount',
346
+ enableSorting: !1,
347
+ cell(a) {
348
+ var v, i, I, Y;
349
+ const t = J(
350
+ a.row.original.expiryAmount.reduce(
351
+ ($, B) => $ + B.amount,
352
+ a.row.original.amount ?? 0
353
+ ),
354
+ 2
355
+ ), y = (i = (v = a.row.original.expiryAmount) == null ? void 0 : v[0]) != null && i.expiredAt ? h((Y = (I = a.row.original.expiryAmount) == null ? void 0 : I[0]) == null ? void 0 : Y.expiredAt).format(
356
+ "D MMM YYYY"
357
+ ) : "";
358
+ return n("div", { class: "flex items-center" }, [
359
+ n(
360
+ "div",
361
+ {
362
+ class: [
363
+ "pr-2",
364
+ +t > 0 ? "text-fm-color-system-success-300" : "text-fm-color-system-error-300"
365
+ ]
366
+ },
367
+ t
368
+ ),
369
+ n("div", { class: "flex items-center" }, [
370
+ a.row.original.expiryAmount.length > 0 ? n(
371
+ S.FmTooltip,
372
+ {
373
+ content: `Expired on ${y}`
374
+ },
375
+ [
376
+ n(S.FmIcon, {
377
+ name: "info",
378
+ outline: !0,
379
+ size: "sm"
380
+ })
381
+ ]
382
+ ) : n("div")
383
+ ])
384
+ ]);
385
+ }
386
+ },
387
+ {
388
+ header: "Type",
389
+ accessorKey: "pf_collectible.type",
390
+ accessorFn: (a) => E.formattedType(a),
391
+ meta: {
392
+ maxWidth: "200px"
393
+ },
394
+ cell(a) {
395
+ const t = E.formattedType(a.row.original);
396
+ return n("div", { class: "flex items-center" }, [
397
+ n("div", { class: "truncate text-ellipsis" }, t),
398
+ t.length > 20 ? n(
399
+ S.FmTooltip,
400
+ {
401
+ content: t
402
+ },
403
+ [
404
+ n(S.FmIcon, {
405
+ name: "info",
406
+ color: "primary",
407
+ outline: !0,
408
+ size: "sm"
409
+ })
410
+ ]
411
+ ) : null
412
+ ]);
413
+ }
414
+ },
415
+ {
416
+ header: "Source",
417
+ accessorKey: "source",
418
+ cell(a) {
419
+ var t;
420
+ return n("div", { class: "flex items-center gap-4" }, [
421
+ n(
422
+ "div",
423
+ { class: "truncate text-ellipsis" },
424
+ K(E.getReason(a.row.original.source))
425
+ ),
426
+ ...(t = a.row.original.metadata) != null && t.campaign ? [
427
+ n(
428
+ S.FmTooltip,
429
+ {
430
+ get content() {
431
+ var y;
432
+ return (y = _.campaigns.all.find(
433
+ (v) => {
434
+ var i;
435
+ return v._id === ((i = a.row.original.metadata) == null ? void 0 : i.campaign);
436
+ }
437
+ )) == null ? void 0 : y.name;
438
+ }
439
+ },
440
+ [
441
+ n(S.FmIcon, {
442
+ name: "info",
443
+ color: "primary",
444
+ size: "sm",
445
+ onClick: async (y) => {
446
+ y.preventDefault(), y.stopPropagation();
447
+ const v = _.campaigns.all.find(
448
+ (i) => {
449
+ var I;
450
+ return i._id === ((I = a.row.original.metadata) == null ? void 0 : I.campaign);
451
+ }
452
+ );
453
+ if (v)
454
+ switch (v.type) {
455
+ case "VOUCHER":
456
+ case "PROMOTION":
457
+ case "BROADCAST":
458
+ await c.push({
459
+ name: z[`$connect-CAMPAIGN_${v.type}`]
460
+ });
461
+ break;
462
+ case "GAME":
463
+ case "CREDIT":
464
+ case "MISSION":
465
+ await c.push({
466
+ name: z[`$connect-PROGRAM_${v.type}`]
467
+ });
468
+ break;
469
+ case "POINT":
470
+ await c.push({
471
+ name: z["$connect-PROGRAM_EXPERIENCE"]
472
+ });
473
+ break;
474
+ case "COIN":
475
+ await c.push({
476
+ name: z["$connect-PROGRAM_POINT"]
477
+ });
478
+ break;
479
+ }
480
+ }
481
+ })
482
+ ]
483
+ )
484
+ ] : []
485
+ ]);
486
+ }
487
+ },
488
+ {
489
+ header: "User",
490
+ accessorKey: "pf_user.name",
491
+ cell(a) {
492
+ return se(a.row.original.pf_user);
493
+ }
494
+ },
495
+ {
496
+ header: "Phone No.",
497
+ accessorKey: "pf_user.phoneNumber",
498
+ accessorFn: (a) => {
499
+ var t;
500
+ return ((t = a == null ? void 0 : a.pf_user) == null ? void 0 : t.phoneNumber) || "";
501
+ }
502
+ },
503
+ {
504
+ accessorFn: (a) => a.ref,
505
+ header: "References",
506
+ accessorKey: "ref",
507
+ cell(a) {
508
+ var t, y;
509
+ return n("div", { class: "flex items-center justify-between gap-4" }, [
510
+ n("div", { class: "flex items-center" }, [
511
+ (t = a.row.original.metadata) != null && t.remark ? n(
512
+ S.FmTooltip,
513
+ {
514
+ content: (y = a.row.original.metadata) == null ? void 0 : y.remark
515
+ },
516
+ [
517
+ n(S.FmIcon, {
518
+ name: "info",
519
+ class: "pl-2",
520
+ outline: !0,
521
+ size: "sm"
522
+ })
523
+ ]
524
+ ) : n("div")
525
+ ]),
526
+ n("div", { class: "flex-1" }, a.row.original.ref)
527
+ ]);
528
+ }
529
+ }
530
+ ], d = O({
531
+ search: "",
532
+ "pf_collectible.type": [],
533
+ "metadata.location": [],
534
+ dateRange: {
535
+ startDate: h().subtract(7, "day").toISOString(),
536
+ endDate: h().endOf("day").toISOString()
537
+ },
538
+ source: []
539
+ }), { tableMeta: R, rowData: N, onSort: p, debouncedFetchData: o, onSearch: e } = re(async (a) => {
540
+ const t = {
541
+ ...d.value,
542
+ user: m.user,
543
+ dateRange: {
544
+ start: new Date(d.value.dateRange.startDate).toISOString(),
545
+ end: new Date(d.value.dateRange.endDate).toISOString()
546
+ }
547
+ }, y = await G.readAll(a, t);
548
+ return {
549
+ resources: y.resources.map((v) => {
550
+ const i = s.value.find((I) => I._id === v.ref);
551
+ return { ...v, ref: (i == null ? void 0 : i.seqNumber) || v.ref };
552
+ }),
553
+ meta: y.meta
554
+ };
555
+ }), s = O([]), r = oe.options.map((a) => ({ label: K(E.getReason(a)), value: a })), w = f.locations.map((a) => ({ label: a.name, value: a._id }));
556
+ Q(
557
+ d,
558
+ () => {
559
+ o();
560
+ },
561
+ { deep: !0 }
562
+ );
563
+ async function g() {
564
+ try {
565
+ b.value = !0;
566
+ const a = {
567
+ ...d.value,
568
+ user: m.user,
569
+ dateRange: {
570
+ start: new Date(d.value.dateRange.startDate).toISOString(),
571
+ end: new Date(d.value.dateRange.endDate).toISOString()
572
+ }
573
+ };
574
+ await ce({
575
+ exporter: new Ae(),
576
+ readFunction: (t) => G.readAll(t, a),
577
+ transformRecord: (t) => {
578
+ var y, v, i, I, Y, $, B;
579
+ return {
580
+ TransactionID: t._id,
581
+ CreatedAt: h(P(t._id.toString())).format(
582
+ "D MMM YYYY, hh:mmA"
583
+ ),
584
+ Amount: J(
585
+ t.expiryAmount.reduce(
586
+ (me, pe) => me + pe.amount,
587
+ t.amount ?? 0
588
+ ),
589
+ 2
590
+ ),
591
+ ExpiredAt: (v = (y = t.expiryAmount) == null ? void 0 : y[0]) != null && v.expiredAt ? h((I = (i = t.expiryAmount) == null ? void 0 : i[0]) == null ? void 0 : I.expiredAt).format("D MMM YYYY") : "",
592
+ Type: E.formattedType(t),
593
+ Source: K(E.getReason(t.source)),
594
+ User: ((Y = t.pf_user) == null ? void 0 : Y.name) || "",
595
+ "Phone No.": (($ = t.pf_user) == null ? void 0 : $.phoneNumber) || "",
596
+ References: t.ref,
597
+ Remark: ((B = t.metadata) == null ? void 0 : B.remark) || ""
598
+ };
599
+ },
600
+ filename: "transactions"
601
+ });
602
+ } catch (a) {
603
+ console.error(a);
604
+ } finally {
605
+ b.value = !1;
606
+ }
607
+ }
608
+ const C = O(null);
609
+ function M(a) {
610
+ var t;
611
+ console.log(a), (t = C.value) == null || t.showSheet(!0, a.original);
612
+ }
613
+ return ve(async () => {
614
+ await f.readLocations(), await _.read(), await o();
615
+ }), (a, t) => {
616
+ const y = A("FmSearch"), v = A("FmButton");
617
+ return F(), V(X, null, [
618
+ x("div", null, [
619
+ x("div", Le, [
620
+ D(y, {
621
+ class: "hidden xs:flex border-b border-fm-color-neutral-gray-100",
622
+ modelValue: l(d).search,
623
+ "onUpdate:modelValue": t[0] || (t[0] = (i) => l(d).search = i),
624
+ placeholder: "Search",
625
+ collapsible: ""
626
+ }, null, 8, ["modelValue"]),
627
+ D(v, {
628
+ icon: "ios_share",
629
+ variant: "tertiary",
630
+ onClick: g
631
+ })
632
+ ]),
633
+ x("div", ze, [
634
+ x("div", Ke, [
635
+ D(j, {
636
+ class: "cursor-pointer text-fm-color-neutral-gray-400",
637
+ "right-icon": "keyboard_arrow_down",
638
+ modelValue: l(d)["metadata.location"],
639
+ "onUpdate:modelValue": t[1] || (t[1] = (i) => l(d)["metadata.location"] = i),
640
+ icon: "storefront",
641
+ "show-item-label": !0,
642
+ items: l(w)
643
+ }, null, 8, ["modelValue", "items"]),
644
+ D(j, {
645
+ class: "cursor-pointer text-fm-color-neutral-gray-400",
646
+ "right-icon": "keyboard_arrow_down",
647
+ modelValue: l(d)["pf_collectible.type"],
648
+ "onUpdate:modelValue": t[2] || (t[2] = (i) => l(d)["pf_collectible.type"] = i),
649
+ label: "Type: ",
650
+ "show-item-label": !0,
651
+ items: [
652
+ { label: "Point", value: "COIN" },
653
+ { label: "Credit", value: "CREDIT" },
654
+ { label: "Voucher", value: "VOUCHER" },
655
+ { label: "Experience", value: "POINT" },
656
+ { label: "Tier", value: "TIER" },
657
+ { label: "Title", value: "TITLE" },
658
+ { label: "Game", value: "GAME" },
659
+ { label: "Stamp", value: "STAMP" }
660
+ ]
661
+ }, null, 8, ["modelValue"]),
662
+ D(j, {
663
+ class: "cursor-pointer text-fm-color-neutral-gray-400",
664
+ "right-icon": "keyboard_arrow_down",
665
+ modelValue: l(d).source,
666
+ "onUpdate:modelValue": t[3] || (t[3] = (i) => l(d).source = i),
667
+ label: "Source: ",
668
+ "show-item-label": !0,
669
+ items: l(r)
670
+ }, null, 8, ["modelValue", "items"]),
671
+ D(de, {
672
+ "model-value": {
673
+ startDate: l(d).dateRange.startDate,
674
+ endDate: l(d).dateRange.endDate
675
+ },
676
+ "onUpdate:modelValue": t[4] || (t[4] = (i) => l(d).dateRange = {
677
+ startDate: l(h)(i.startDate).startOf("d").toISOString(),
678
+ endDate: l(h)(i.endDate).endOf("d").toISOString()
679
+ })
680
+ }, null, 8, ["model-value"])
681
+ ]),
682
+ D(y, {
683
+ class: "xs:hidden",
684
+ modelValue: l(d).search,
685
+ "onUpdate:modelValue": t[5] || (t[5] = (i) => l(d).search = i),
686
+ placeholder: "Search",
687
+ collapsible: ""
688
+ }, null, 8, ["modelValue"]),
689
+ x("div", Ge, [
690
+ D(v, {
691
+ icon: "ios_share",
692
+ variant: "tertiary",
693
+ onClick: g
694
+ })
695
+ ])
696
+ ]),
697
+ D(le, {
698
+ loading: l(R).isLoading,
699
+ "row-data": l(N),
700
+ "row-count": l(R).totalRows,
701
+ "column-defs": T.filter(
702
+ (i) => !m.user || i.header !== "User" && i.header !== "Phone No."
703
+ ),
704
+ "page-count": l(R).pageCount,
705
+ "page-index": l(R).pageIndex,
706
+ "page-size": l(R).pageSize,
707
+ "shrink-at": !1,
708
+ onSortChange: l(p),
709
+ onPageChange: t[6] || (t[6] = (i) => l(o)({
710
+ pageSize: i.pageSize,
711
+ pageIndex: i.pageIndex
712
+ })),
713
+ onRowClick: M
714
+ }, null, 8, ["loading", "row-data", "row-count", "column-defs", "page-count", "page-index", "page-size", "onSortChange"])
715
+ ]),
716
+ D(Be, {
717
+ ref_key: "transactionDetailSheet",
718
+ ref: C
719
+ }, null, 512)
720
+ ], 64);
721
+ };
722
+ }
723
+ });
724
+ class He extends ie {
725
+ }
726
+ const je = { class: "flex items-center justify-between" }, qe = { class: "flex gap-8 items-center" }, We = { class: "flex gap-8 items-center xs:hidden" }, Dt = /* @__PURE__ */ H({
727
+ __name: "StoreTransactions",
728
+ props: {
729
+ user: {
730
+ type: String
731
+ }
732
+ },
733
+ setup(u) {
734
+ const f = u, { minor: _ } = Re;
735
+ _e();
736
+ const c = [
737
+ {
738
+ header: "Transaction ID",
739
+ meta: {
740
+ maxWidth: "150px"
741
+ },
742
+ cell(e) {
743
+ return n("div", { class: "flex items-center" }, [
744
+ n(S.FmIcon, {
745
+ name: "content_copy",
746
+ outline: !0,
747
+ size: "sm",
748
+ class: "cursor-pointer mr-4 shrink-0",
749
+ onClick: (s) => {
750
+ s.preventDefault(), s.stopPropagation(), Z(e.row.original._id.toString());
751
+ }
752
+ }),
753
+ n("div", { class: "truncate" }, e.row.original._id.toString())
754
+ ]);
755
+ }
756
+ },
757
+ {
758
+ header: "Created at",
759
+ accessorFn: (e) => h(P(e._id.toString())).format("D MMM YYYY, hh:mmA"),
760
+ enableSorting: !0
761
+ },
762
+ {
763
+ header: "Bundle",
764
+ accessorFn: (e) => e.bundle.name
765
+ },
766
+ {
767
+ header: "Location",
768
+ accessorFn: (e) => e.location ? e.pf_location.name : "Online Store"
769
+ },
770
+ {
771
+ header: "Payment Type",
772
+ accessorFn: (e) => {
773
+ var s;
774
+ return ((s = e.paymentType) == null ? void 0 : s.type) ?? "N/A";
775
+ },
776
+ cell(e) {
777
+ var s, r;
778
+ return n("div", { class: "flex items-center gap-4" }, [
779
+ n("div", { class: "flex items-center" }, [
780
+ ((s = e.row.original.paymentType) == null ? void 0 : s.type) == "ONLINE" && e.row.original.paymentType.extra ? n(
781
+ S.FmTooltip,
782
+ {
783
+ content: e.row.original.paymentType.extra
784
+ },
785
+ [
786
+ n(S.FmIcon, {
787
+ name: "info",
788
+ outline: !0,
789
+ size: "sm"
790
+ })
791
+ ]
792
+ ) : n("div")
793
+ ]),
794
+ n(
795
+ "div",
796
+ { class: "flex-1" },
797
+ ((r = e.row.original.paymentType) == null ? void 0 : r.type) ?? "N/A"
798
+ )
799
+ ]);
800
+ }
801
+ },
802
+ {
803
+ header: "User",
804
+ cell: (e) => se(e.row.original.pf_member)
805
+ },
806
+ {
807
+ header: "Phone No.",
808
+ accessorFn: (e) => e.pf_member.phoneNumber
809
+ },
810
+ {
811
+ header: "Status",
812
+ // accessorFn: (u) => u.status,
813
+ cell(e) {
814
+ var s, r, w, g;
815
+ return n("div", { class: "flex items-center" }, [
816
+ n("div", be.title(e.row.original.status)),
817
+ n("div", { class: "flex items-center" }, [
818
+ (r = (s = e.row.original) == null ? void 0 : s.refund) != null && r.reason ? n(
819
+ S.FmTooltip,
820
+ {
821
+ content: (g = (w = e.row.original) == null ? void 0 : w.refund) == null ? void 0 : g.reason
822
+ },
823
+ [
824
+ n(S.FmIcon, {
825
+ name: "info",
826
+ color: "primary",
827
+ outline: !0,
828
+ size: "sm",
829
+ class: "pl-2"
830
+ })
831
+ ]
832
+ ) : n("div")
833
+ ])
834
+ ]);
835
+ }
836
+ },
837
+ {
838
+ header: "Source",
839
+ accessorFn: (e) => e.source
840
+ },
841
+ {
842
+ header: "Ref",
843
+ accessorFn: (e) => e.ref
844
+ },
845
+ {
846
+ id: "action",
847
+ cell(e) {
848
+ const s = e.row.original, r = s.status === "COMPLETED" && !s.refund && s.source == "ADMIN";
849
+ return r ? n(
850
+ S.FmMenu,
851
+ {
852
+ placement: "bottom-end",
853
+ onClick: (w) => {
854
+ w.stopPropagation();
855
+ }
856
+ },
857
+ {
858
+ "menu-button": () => n(S.FmButton, {
859
+ icon: "settings",
860
+ variant: "tertiary",
861
+ if: r
862
+ }),
863
+ default: () => [
864
+ n(S.FmMenuItem, {
865
+ label: "Refund",
866
+ sublabel: "Refund this transaction",
867
+ onClick: async (w) => {
868
+ w.stopPropagation(), await p(s);
869
+ }
870
+ })
871
+ ]
872
+ }
873
+ ) : n("div");
874
+ }
875
+ }
876
+ ], m = O({
877
+ searchValue: "",
878
+ dateRange: {
879
+ startDate: h().subtract(7, "day").toISOString(),
880
+ endDate: h().toISOString()
881
+ }
882
+ }), { tableMeta: b, rowData: T, onSort: d, debouncedFetchData: R, onSearch: N } = re(async (e) => {
883
+ const s = {
884
+ ...m.value.dateRange,
885
+ user: f.user
886
+ };
887
+ return await G.readStoreTransactions(e, s);
888
+ });
889
+ async function p(e) {
890
+ await Se.confirm(
891
+ "Are you sure you want to refund this transaction?",
892
+ "Refund Store Transaction",
893
+ "Confirm",
894
+ "Cancel"
895
+ ) && await _(
896
+ async () => {
897
+ var r;
898
+ await Ce.refundStoreTransaction({
899
+ id: e._id,
900
+ reason: `ADMIN:${(r = Te().sessionUser) == null ? void 0 : r.name}`
901
+ }), await R();
902
+ },
903
+ {
904
+ message: "Refunding transaction...",
905
+ successMessage: "Transaction refunded successfully"
906
+ }
907
+ );
908
+ }
909
+ Q(
910
+ m,
911
+ () => {
912
+ R();
913
+ },
914
+ { deep: !0 }
915
+ ), ae(async () => {
916
+ await R();
917
+ });
918
+ const o = async () => ce({
919
+ exporter: new He(),
920
+ readFunction: (e) => G.readStoreTransactions(e, {
921
+ ...m.value.dateRange,
922
+ user: f.user
923
+ }),
924
+ transformRecord: (e) => {
925
+ var s, r, w, g, C, M;
926
+ return {
927
+ TransactionId: ((s = e._id) == null ? void 0 : s.toString()) || "",
928
+ CreatedAt: h(P(e._id.toString())).format(
929
+ "DD/MM/YYYY HH:mm:ss"
930
+ ),
931
+ Bundle: e.bundle.name || "",
932
+ Location: e.location ? e.pf_location.name : "Online Store",
933
+ PaymentType: ((r = e.paymentType) == null ? void 0 : r.type) || "N/A",
934
+ PaymentExtra: ((w = e.paymentType) == null ? void 0 : w.extra) || "",
935
+ User: ((g = e.pf_member) == null ? void 0 : g.name) || "",
936
+ PhoneNumber: ((C = e.pf_member) == null ? void 0 : C.phoneNumber) || "",
937
+ Status: e.status || "",
938
+ RefundReason: ((M = e == null ? void 0 : e.refund) == null ? void 0 : M.reason) || ""
939
+ };
940
+ },
941
+ filename: "store-transactions"
942
+ });
943
+ return (e, s) => {
944
+ const r = A("FmSearch"), w = A("FmButton");
945
+ return F(), V("div", null, [
946
+ x("div", je, [
947
+ x("div", qe, [
948
+ D(de, {
949
+ modelValue: l(m).dateRange,
950
+ "onUpdate:modelValue": s[0] || (s[0] = (g) => l(m).dateRange = g)
951
+ }, null, 8, ["modelValue"])
952
+ ]),
953
+ x("div", We, [
954
+ D(r, {
955
+ modelValue: l(b).searchValue,
956
+ "onUpdate:modelValue": [
957
+ s[1] || (s[1] = (g) => l(b).searchValue = g),
958
+ l(N)
959
+ ],
960
+ placeholder: "Search",
961
+ collapsible: ""
962
+ }, null, 8, ["modelValue", "onUpdate:modelValue"]),
963
+ D(w, {
964
+ icon: "ios_share",
965
+ variant: "tertiary",
966
+ onClick: o
967
+ })
968
+ ])
969
+ ]),
970
+ D(le, {
971
+ loading: l(b).isLoading,
972
+ "row-data": l(T),
973
+ "row-count": l(b).totalRows,
974
+ "column-defs": c.filter(
975
+ (g) => !f.user || g.header !== "User" && g.header !== "Phone No."
976
+ ),
977
+ "page-count": l(b).pageCount,
978
+ "page-index": l(b).pageIndex,
979
+ "page-size": l(b).pageSize,
980
+ "shrink-at": !1,
981
+ onSortChange: l(d),
982
+ onPageChange: s[2] || (s[2] = (g) => l(R)({
983
+ pageSize: g.pageSize,
984
+ pageIndex: g.pageIndex
985
+ }))
986
+ }, null, 8, ["loading", "row-data", "row-count", "column-defs", "page-count", "page-index", "page-size", "onSortChange"])
987
+ ]);
988
+ };
989
+ }
990
+ });
991
+ export {
992
+ wt as _,
993
+ Dt as a
994
+ };