@feedmepos/mf-inventory-portal 1.0.8-dev.6 → 1.0.9-dev.1

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 (47) hide show
  1. package/dist/{App-BrxJVsjC.js → App-D7wD-V8-.js} +2 -2
  2. package/dist/{ApprovalView-C9mpOgIp.js → ApprovalView-alwUil03.js} +2 -2
  3. package/dist/{BindingsDialog-mmQqv9r1.js → BindingsDialog-Cuu3Qimk.js} +2 -2
  4. package/dist/{BindingsPicker-DRXKcXba.js → BindingsPicker-BdT8HtWB.js} +1 -1
  5. package/dist/{BindingsTable-vpMYbqHR.js → BindingsTable-UNOsZdB8.js} +1 -1
  6. package/dist/ClosingDraftView-DwfpevAQ.js +1415 -0
  7. package/dist/{ClosingTemplateView-CBw4KB7f.js → ClosingTemplateView-BhAVdyVt.js} +2 -2
  8. package/dist/{DeliveryOrderPrintPreview-BYD_KYld.js → DeliveryOrderPrintPreview-C4lGxHp_.js} +1 -1
  9. package/dist/{FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-B7Km8yJe.js → FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-B1eZLzgi.js} +3 -3
  10. package/dist/{FmUnitInput.vue_vue_type_script_setup_true_lang-BIwyHFnQ.js → FmUnitInput.vue_vue_type_script_setup_true_lang-JRK9V9_Z.js} +1 -1
  11. package/dist/{IngredientBindedItem.vue_vue_type_script_setup_true_lang-CBwk_Gjp.js → IngredientBindedItem.vue_vue_type_script_setup_true_lang-DaRO4II3.js} +1 -1
  12. package/dist/{IngredientGroupView-Ayi9ewEm.js → IngredientGroupView-IDSlcEJ_.js} +1 -1
  13. package/dist/{IngredientsView-B_D-PlQV.js → IngredientsView-DB5uDEqm.js} +4 -4
  14. package/dist/{IntegrationView-DhZBJwLU.js → IntegrationView-CAb6lowC.js} +4 -4
  15. package/dist/{InventoryBindingForm-BbFOOmPY.js → InventoryBindingForm-CuBsJvow.js} +1 -1
  16. package/dist/{InventoryBindingForm.vue_vue_type_script_setup_true_lang-BNbaILSC.js → InventoryBindingForm.vue_vue_type_script_setup_true_lang-X4bLttWb.js} +3 -3
  17. package/dist/{InventoryBindingSummary-Dda5VH5D.js → InventoryBindingSummary-BvgjvfH0.js} +1 -1
  18. package/dist/{NumberPrecisionInput.vue_vue_type_script_setup_true_lang-CinHoBNf.js → NumberPrecisionInput.vue_vue_type_script_setup_true_lang-D_HP-frB.js} +1 -1
  19. package/dist/{PremiumBadge.vue_vue_type_script_setup_true_lang-CmlOpYB1.js → PremiumBadge.vue_vue_type_script_setup_true_lang-CxK0CddP.js} +1 -1
  20. package/dist/{PublishView-DbuIy-1m.js → PublishView-C2DuJDr5.js} +2 -2
  21. package/dist/{PurchaseOrderPrintPreview-X15MV0Jq.js → PurchaseOrderPrintPreview-kb0wi-nL.js} +1 -1
  22. package/dist/{ReceiveRequestView-J0QQ4XTW.js → ReceiveRequestView-rXIkcqtW.js} +9 -9
  23. package/dist/{RecipeView-eHQsFBCk.js → RecipeView-BZwFupO_.js} +3 -3
  24. package/dist/{StockView-H76nQbOu.js → StockView-CxY1VLUp.js} +7 -7
  25. package/dist/{SupplierView-BNVHylmh.js → SupplierView-B20tZdaR.js} +4 -4
  26. package/dist/{TransferDetails.vue_vue_type_script_setup_true_lang-CHAgXaBs.js → TransferDetails.vue_vue_type_script_setup_true_lang-C8zWbDEN.js} +6 -6
  27. package/dist/{TransferTemplateView-h5ugzRdm.js → TransferTemplateView-CNXGljs3.js} +7 -7
  28. package/dist/{UnitView-BotLh-qx.js → UnitView-DAuK9Yj4.js} +3 -3
  29. package/dist/{WarehouseView-D-pvJEC-.js → WarehouseView-CVLDpirJ.js} +1 -1
  30. package/dist/api/stock.d.ts +1 -0
  31. package/dist/{app-D7Q9fF3u.js → app-CfdP0AV7.js} +1551 -1545
  32. package/dist/app.js +1 -1
  33. package/dist/{decimal-BXKCSmrI.js → decimal-BAzoSSnS.js} +1 -1
  34. package/dist/{feature-Lfz-lJKJ.js → feature-yQYP2cGO.js} +2 -2
  35. package/dist/{format-unit-display-rDnkAoLr.js → format-unit-display-D4Y4GNXV.js} +2 -2
  36. package/dist/{index-BZ75XGcQ.js → index-Si_9ehKN.js} +2 -2
  37. package/dist/{index-DbyRUhBa.js → index-nlCodjz6.js} +1 -1
  38. package/dist/{stock-D3Ix9wWH.js → stock-C2zw5tWM.js} +29 -25
  39. package/dist/{supplier-CBr_f66k.js → supplier-ChzLbn_G.js} +1 -1
  40. package/dist/tsconfig.app.tsbuildinfo +1 -1
  41. package/dist/{use-ingredient-select-dialog-D1PGvkFN.js → use-ingredient-select-dialog-CpTA4ybR.js} +1 -1
  42. package/dist/{use-inventory-binding-dialog-lBlksUY3.js → use-inventory-binding-dialog-BqnkY0iU.js} +1 -1
  43. package/dist/views/closing-draft/components/closing-draft-dialog/ClosingDraftDialog.vue.d.ts +709 -3
  44. package/dist/views/closing-draft/composables/use-closing-draft-table.d.ts +16 -1
  45. package/dist/{vue-i18n-CLnM_4oK.js → vue-i18n-CWzWMdoI.js} +2 -2
  46. package/package.json +2 -2
  47. package/dist/ClosingDraftView-CnysPa2u.js +0 -1395
@@ -1,1395 +0,0 @@
1
- import { defineComponent as Se, ref as O, resolveComponent as E, openBlock as b, createBlock as Z, withCtx as K, createElementVNode as o, createTextVNode as je, toDisplayString as N, unref as y, createVNode as _, h as w, reactive as qe, computed as H, onMounted as We, watch as Ze, isRef as Me, createElementBlock as $, Fragment as W, createCommentVNode as Q, normalizeClass as fe, renderList as ge, normalizeStyle as Ie, Teleport as Je, mergeProps as Xe } from "vue";
2
- import { X as Qe, u as Ce, af as J, l as et, J as Be, i as R, t as tt, K as be, q as at, r as nt, s as ot, ag as Ue, ah as Ee, a3 as He, ai as oe, a9 as st, ae as ne, V as Le, D as Re, h as _e, f as rt, e as lt, a as ct, z as it, _ as ut, B as dt, C as mt, E as De } from "./app-D7Q9fF3u.js";
3
- import { useCoreStore as ft, useI18n as ze } from "@feedmepos/mf-common";
4
- import { useSnackbar as Fe, useDialog as pt, useProxiedModel as vt, components as me, useBreakpoints as yt } from "@feedmepos/ui-library";
5
- import { defineStore as Ne, storeToRefs as gt } from "pinia";
6
- import { a as Oe, u as Ve } from "./stock-D3Ix9wWH.js";
7
- import { E as bt } from "./empty-placeholder-wf6-BWE8.js";
8
- const $e = Qe((n, r) => {
9
- function e() {
10
- return Ce().currentLocation.dbName;
11
- }
12
- return {
13
- async getDraft(m) {
14
- const c = e(), g = `${n.inventoryBackendUrl}/${c}/closing-draft/${m}`;
15
- return r.get(g);
16
- },
17
- async readDrafts() {
18
- const m = e(), c = `${n.inventoryBackendUrl}/${m}/closing-draft`;
19
- return r.get(c);
20
- },
21
- async runOperation(m) {
22
- const c = e(), g = `${n.inventoryBackendUrl}/${c}/closing-draft/run-operation`;
23
- return r.post(g, m);
24
- },
25
- async sync(m) {
26
- const c = e(), g = `${n.inventoryBackendUrl}/${c}/closing-draft/sync`;
27
- return r.post(g, m);
28
- }
29
- };
30
- }), ht = { class: "fm-typo-en-body-lg-400" }, xt = { class: "fm-typo-en-body-lg-600" }, At = { class: "flex gap-12 py-8 justify-end w-full" }, Pe = /* @__PURE__ */ Se({
31
- __name: "ClosingDraftAction",
32
- props: {
33
- draft: {},
34
- action: {},
35
- onCancel: { type: Function },
36
- onFinished: { type: Function }
37
- },
38
- setup(n) {
39
- const r = n, e = O(), m = $e(), c = Fe(), g = O(!1);
40
- async function x() {
41
- g.value = !0;
42
- try {
43
- await m.runOperation({
44
- _id: r.draft._id,
45
- _rev: r.draft._rev ?? "",
46
- action: r.action,
47
- data: {
48
- remark: e.value
49
- }
50
- }).delayed(500), c.open({
51
- title: "Success",
52
- message: "Action submitted",
53
- type: "success"
54
- }), r.onFinished();
55
- } catch (D) {
56
- c.open({
57
- title: "Something went wrong",
58
- message: "Unable to submit actino. Please try again",
59
- type: "error"
60
- }), console.error("error on submit closing draft aciont", D);
61
- } finally {
62
- g.value = !1;
63
- }
64
- }
65
- return (D, i) => {
66
- const C = E("FmTextField"), T = E("FmButton"), P = E("FmForm");
67
- return b(), Z(P, {
68
- onValidationSuccess: x,
69
- class: "flex flex-col gap-32",
70
- disabled: g.value
71
- }, {
72
- default: K(() => [
73
- o("div", ht, [
74
- i[2] || (i[2] = je(" You are about to ")),
75
- o("span", xt, N(D.action == y(J).enum.approveDraft ? "approve" : "reject"), 1),
76
- i[3] || (i[3] = je(" this draft. Please provider a remark to justify this action. "))
77
- ]),
78
- _(C, {
79
- modelValue: e.value,
80
- "onUpdate:modelValue": i[0] || (i[0] = (u) => e.value = u),
81
- label: "Remark",
82
- "label-mark": "required",
83
- rules: [y(et)()]
84
- }, null, 8, ["modelValue", "rules"]),
85
- o("div", At, [
86
- _(T, {
87
- label: "Cancel",
88
- variant: "tertiary",
89
- onClick: i[1] || (i[1] = (u) => D.onCancel())
90
- }),
91
- _(T, {
92
- label: D.action == y(J).enum.approveDraft ? "Approve" : "Reject",
93
- type: "submit",
94
- variant: D.action == y(J).enum.approveDraft ? "primary" : "destructive",
95
- loading: g.value
96
- }, null, 8, ["label", "variant", "loading"])
97
- ])
98
- ]),
99
- _: 1
100
- }, 8, ["disabled"]);
101
- };
102
- }
103
- }), _t = be(0);
104
- function Ye(n) {
105
- const r = n.measurementsAmounts.groupBy((m) => m.measurement.id), e = n.sku.unit.measurements.reduce((m, c) => {
106
- var D, i;
107
- const g = ((i = (D = r.get(c.id)) == null ? void 0 : D[0]) == null ? void 0 : i.amount) ?? _t, x = Be(c.conversion, g);
108
- return m + +R(x);
109
- }, +R(n.baseAmount));
110
- return tt(e, n.baseAmount.precision);
111
- }
112
- const Dt = be(0), kt = be(100);
113
- function wt(n, r, e) {
114
- const m = Ye(n), c = Ue(m, r), g = r.amount === 0 ? null : Ee(c, {
115
- ...r,
116
- amount: Math.abs(r.amount)
117
- }), x = g ? Be(g, kt) : null;
118
- return {
119
- code: n.sku.code,
120
- name: n.sku.name,
121
- baseUnit: n.sku.unit.abbrev,
122
- baseUnitAmount: +R(n.baseAmount),
123
- ...n.measurementsAmounts.filter(
124
- (i) => Ct(i.measurement) && e.includes(i.measurement.id)
125
- ).reduce(
126
- (i, C, T) => (i[`measurementAbbrev${T}`] = `(${C.measurement.abbrev}) × ${R(C.measurement.conversion)}`, i[`measurementAmount${T}`] = +R(C.amount), i),
127
- {}
128
- ),
129
- systemBalance: +R(r),
130
- physicalBalance: +R(m),
131
- adjustedAmount: +R(c),
132
- adjustedDiffPercentage: x ? +R(He(x, 2)) : null
133
- };
134
- }
135
- function Ct(n) {
136
- return !n.abbrev.toLocaleLowerCase().includes("inactive");
137
- }
138
- function jt(n) {
139
- const r = Ke(n);
140
- return n.reduce(
141
- (e, m) => {
142
- var c;
143
- return Math.max(e, ((c = r == null ? void 0 : r.get(m.sku._id)) == null ? void 0 : c[0].length) ?? 0);
144
- },
145
- 0
146
- );
147
- }
148
- function Ke(n) {
149
- return n.groupBy(
150
- (r) => r.sku._id,
151
- (r) => r.measurementsAmounts.filter((e) => !e.measurement.abbrev.toLocaleLowerCase().includes("inactive")).map((e) => e.measurement.id)
152
- );
153
- }
154
- function St(n) {
155
- return [
156
- {
157
- id: "code",
158
- name: "Code"
159
- },
160
- {
161
- id: "name",
162
- name: "Name"
163
- },
164
- {
165
- id: "systemBalance",
166
- name: "Balance"
167
- },
168
- {
169
- id: "physicalBalance",
170
- name: "Actual balance"
171
- },
172
- {
173
- id: "adjustedAmount",
174
- name: "Adjusted balance"
175
- },
176
- {
177
- id: "adjustedDiffPercentage",
178
- name: "Diff (%)"
179
- },
180
- {
181
- id: "baseUnitAmount",
182
- name: "Base unit amount"
183
- },
184
- {
185
- id: "baseUnit",
186
- name: "Base unit"
187
- },
188
- ...Array.from({ length: n }).flatMap((e, m) => [
189
- {
190
- id: `measurementAmount${m}`,
191
- name: `UOM amount ${m + 1}`
192
- },
193
- {
194
- id: `measurementAbbrev${m}`,
195
- name: `UOM ${m + 1}`
196
- }
197
- ])
198
- ];
199
- }
200
- function Bt(n, r) {
201
- var k, h, v, B, L, j, I;
202
- const e = r.groupBy(
203
- (S) => S.id,
204
- (S) => S.balance
205
- ), m = [...n.items, ...n.negativeStockItems ?? []], c = Ke(m), g = m.map((S) => {
206
- var X, se;
207
- const G = ((X = e.get(S.sku._id)) == null ? void 0 : X[0]) ?? Dt, le = ((se = c == null ? void 0 : c.get(S.sku._id)) == null ? void 0 : se[0]) ?? [];
208
- return wt(S, G, le);
209
- }), x = jt(m), i = ft().currentBusiness.value, C = St(x), T = [
210
- ["Business name:", i == null ? void 0 : i.name],
211
- ["Business ID:", i == null ? void 0 : i._id],
212
- ["Menu version", i == null ? void 0 : i.menuVersion],
213
- ["Created at", new Date(n.createdAt)],
214
- ["Created by", (k = n.createdBy) == null ? void 0 : k.name],
215
- ["Updated at", new Date(n.updatedAt)],
216
- ["Updated by", (h = n.updatedBy) == null ? void 0 : h.name],
217
- ["Recent action", n.approvedAt ? "Approve" : n.rejectionHistory ? "Reject" : ""],
218
- [
219
- "Action by",
220
- n.approvedAt ? (v = n.approvedBy) == null ? void 0 : v.name : n.rejectionHistory ? (L = (B = n.rejectionHistory[0]) == null ? void 0 : B.rejectedBy) == null ? void 0 : L.name : ""
221
- ],
222
- [
223
- "Action at",
224
- n.approvedAt ? new Date(n.approvedAt) : n.rejectionHistory ? new Date((j = n.rejectionHistory[0]) == null ? void 0 : j.rejectedAt) : ""
225
- ],
226
- [
227
- "Action remark",
228
- n.approvedAt ? n.approveRemark : n.rejectionHistory ? new Date((I = n.rejectionHistory[0]) == null ? void 0 : I.rejectRemark) : ""
229
- ],
230
- [],
231
- C.map((S) => S.name),
232
- ...g.map((S) => C.map((G) => S[G.id]))
233
- ], P = C.map((S) => `system:${S.id}`), u = at(T, P), p = `[${i == null ? void 0 : i.name}] closing draft (${nt(new Date(n.updatedAt))}).xlsx`;
234
- return ot(u, p), p;
235
- }
236
- const we = Ne(
237
- "closingDraftActions",
238
- function() {
239
- const r = pt(), e = Fe(), m = Oe(), c = $e(), g = Ve(), x = O(!1), D = O();
240
- function i(h) {
241
- const v = {
242
- draft: h
243
- };
244
- D.value = v, x.value = !0;
245
- }
246
- async function C(h) {
247
- var B;
248
- if (h.status === oe.enum.COMPLETED) {
249
- const L = h.closingAdjustmentId;
250
- if (!L)
251
- return e.open({
252
- title: "Something went wrong",
253
- message: "Closing draft is completed but closing document cannot be found.",
254
- type: "error"
255
- }), console.error("Closing draft is completed but closing document cannot be found.", {
256
- draftId: h._id
257
- }), [];
258
- const j = await m.readAdjustmentById(L);
259
- return ((j == null ? void 0 : j.skus) ?? []).map((S) => ({
260
- id: S.sku._id,
261
- balance: S.fromBalance,
262
- costs: S.fromCostBalances
263
- }));
264
- } else
265
- return await g.readStockBalance(), ((B = g.stockBalance) == null ? void 0 : B.skus) ?? [];
266
- }
267
- async function T(h, v) {
268
- v || (e.open({
269
- title: "Exporting",
270
- message: "Fetching data..."
271
- }), v = await C(h)), Bt(h, v);
272
- }
273
- function P(h, v) {
274
- r.open({
275
- title: "Approve draft",
276
- contentComponent: Pe,
277
- contentComponentProps: {
278
- draft: h,
279
- action: J.enum.approveDraft,
280
- onFinished: () => {
281
- r.close(), v == null || v();
282
- },
283
- onCancel: () => r.close()
284
- }
285
- });
286
- }
287
- function u(h, v) {
288
- r.open({
289
- title: "Reject draft",
290
- contentComponent: Pe,
291
- contentComponentProps: {
292
- draft: h,
293
- action: J.enum.rejectDraft,
294
- onFinished: () => {
295
- r.close(), v == null || v();
296
- },
297
- onCancel: () => r.close()
298
- }
299
- });
300
- }
301
- async function p(h, v) {
302
- await c.sync({
303
- _id: h._id,
304
- _rev: h._rev ?? "",
305
- action: J.enum.approveDraft,
306
- data: {
307
- remark: h.remark ?? ""
308
- }
309
- }).delayed(500), e.open({
310
- title: "Success",
311
- message: "Sync requested",
312
- type: "success"
313
- }), v == null || v();
314
- }
315
- function k() {
316
- x.value = !1;
317
- }
318
- return {
319
- viewDraft: i,
320
- closeDraftDialog: k,
321
- approveDraft: P,
322
- rejectDraft: u,
323
- syncDraft: p,
324
- exportDraft: T,
325
- viewClosingDraftShow: x,
326
- viewClosingDraftProps: D
327
- };
328
- }
329
- );
330
- function ke(n) {
331
- switch (n) {
332
- case "DRAFT":
333
- return "fm-status-badge-draft";
334
- case "PROCESSING":
335
- return "fm-status-badge-processing";
336
- case "FAILED":
337
- return "fm-status-badge-cancel";
338
- case "COMPLETED":
339
- return "fm-status-badge-complete";
340
- }
341
- }
342
- const Ft = Ne(
343
- "closingDraftTable",
344
- function() {
345
- const { t: r } = ze(), e = we(), m = O(new Array()), c = O(!1), g = Ce(), x = $e();
346
- async function D() {
347
- if (m.value = [], !!g._currentLocation) {
348
- c.value = !0;
349
- try {
350
- const [u] = await Promise.all([x.readDrafts()]).delayed(1e3);
351
- m.value = u.reverse();
352
- } catch (u) {
353
- console.log("Something went wrong when fetching drafts:", u);
354
- } finally {
355
- c.value = !1;
356
- }
357
- }
358
- }
359
- async function i(u) {
360
- if (!m.value.find((p) => p._id) && g._currentLocation) {
361
- c.value = !0;
362
- try {
363
- const [p] = await Promise.all([
364
- x.getDraft(u),
365
- new Promise((k) => setTimeout(k, 1e3))
366
- ]);
367
- m.value = [p];
368
- } catch (p) {
369
- console.log("Something went wrong when fetching drafts:", p);
370
- } finally {
371
- c.value = !1;
372
- }
373
- }
374
- }
375
- function C() {
376
- e.closeDraftDialog(), D();
377
- }
378
- function T(u, p) {
379
- switch (p = lt(p), u) {
380
- case _e.Details:
381
- return e.viewDraft(p);
382
- case _e.Export:
383
- return e.exportDraft(p);
384
- case J.enum.approveDraft:
385
- return e.approveDraft(p, C);
386
- case J.enum.rejectDraft:
387
- return e.rejectDraft(p, C);
388
- }
389
- }
390
- return {
391
- columnDefs: [
392
- {
393
- id: "_id",
394
- accessorKey: "_id",
395
- header: () => r("inventory.closing.table.createdAt"),
396
- cell(u) {
397
- return st(`${u.getValue()}`);
398
- },
399
- enableSorting: !0
400
- },
401
- {
402
- id: "updatedAt",
403
- accessorFn: (u) => ne(u.updatedAt),
404
- header: () => "Updated at",
405
- enableSorting: !0,
406
- size: 200
407
- },
408
- {
409
- id: "updatedBy",
410
- accessorKey: "updatedBy.name",
411
- header: () => "Last update by",
412
- enableSorting: !0,
413
- size: 200
414
- },
415
- {
416
- id: "noOfItems",
417
- accessorFn: (u) => {
418
- var p;
419
- return u.items.length + (((p = u.negativeStockItems) == null ? void 0 : p.length) ?? 0);
420
- },
421
- header: () => r("inventory.closing.table.noOfItems"),
422
- enableSorting: !1,
423
- meta: {
424
- width: "10rem",
425
- textAlign: "right"
426
- }
427
- },
428
- {
429
- id: "recentRemark",
430
- accessorFn: (u) => {
431
- var p;
432
- return (u == null ? void 0 : u.approveRemark) ?? ((p = u == null ? void 0 : u.rejectionHistory) == null ? void 0 : p.computeFirst((k) => k.rejectRemark)) ?? u.remark;
433
- },
434
- header: () => "Recent remark"
435
- },
436
- {
437
- id: "status",
438
- accessorFn: (u) => u.status,
439
- header: () => r("inventory.closing.table.status"),
440
- enableSorting: !1,
441
- cell(u) {
442
- var L;
443
- const p = u.row.original, k = p.status, h = new Date(p.updatedAt), v = (L = p == null ? void 0 : p.rejectionHistory) == null ? void 0 : L.computeFirst((j) => j.rejectedAt), B = v ? new Date(v) : null;
444
- return k === "DRAFT" && B ? B.getTime() > h.getTime() ? w(
445
- "div",
446
- {
447
- class: "flex"
448
- },
449
- w(
450
- "div",
451
- {
452
- class: ["fm-status-badge", ke("FAILED")]
453
- },
454
- "Rejected"
455
- )
456
- ) : w(
457
- "div",
458
- {
459
- class: "flex"
460
- },
461
- w(
462
- "div",
463
- {
464
- class: ["fm-status-badge", ke("PROCESSING")]
465
- },
466
- "Updated"
467
- )
468
- ) : w(
469
- "div",
470
- {
471
- class: "flex"
472
- },
473
- w(
474
- "div",
475
- {
476
- class: ["fm-status-badge", ke(k)]
477
- },
478
- Le(k)
479
- )
480
- );
481
- }
482
- },
483
- {
484
- id: "action",
485
- cell(u) {
486
- const p = u.row.original, k = [
487
- Re[_e.Details],
488
- Re[_e.Export]
489
- ], h = [
490
- {
491
- translationKey: "inventory.closing.draft.approveDraft",
492
- color: "text-fm-color-typo-primary",
493
- value: J.enum.approveDraft
494
- },
495
- {
496
- translationKey: "inventory.closing.draft.rejectDraft",
497
- color: "text-fm-color-typo-error",
498
- value: J.enum.rejectDraft
499
- }
500
- ];
501
- return rt(
502
- [
503
- ...k,
504
- ...p.status === oe.enum.DRAFT ? h : []
505
- ],
506
- (v) => T(v, p)
507
- );
508
- },
509
- enableSorting: !1,
510
- size: 40,
511
- meta: {
512
- cellClass: "",
513
- headerClass: ""
514
- }
515
- }
516
- ],
517
- drafts: m,
518
- loading: c,
519
- fetchDrafts: D,
520
- loadDraft: i
521
- };
522
- }
523
- ), $t = { class: "w-full flex flex-col gap-32" }, Tt = { class: "flex justify-between" }, Rt = { class: "flex" }, Pt = { class: "grid grid-cols-[repeat(4,1fr)] xs:flex xs:flex-col sm:flex sm:flex-col gap-8" }, Mt = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, It = { class: "flex gap-1" }, Ut = { class: "fm-typo-en-body-lg-600" }, Et = { class: "flex flex-col gap-16" }, Ht = { class: "flex items-center" }, Lt = {
524
- key: 0,
525
- class: "flex gap-8"
526
- }, zt = {
527
- key: 0,
528
- class: "w-full flex flex-col items-center"
529
- }, Nt = { class: "flex items-center gap-8" }, Ot = {
530
- key: 0,
531
- class: "flex gap-8"
532
- }, Vt = { class: "overflow-x-auto" }, Yt = {
533
- key: 1,
534
- class: "flex-1 xs:w-screen xs:max-w-full"
535
- }, Kt = {
536
- key: 0,
537
- class: "flex flex-col items-center gap-8 h-full"
538
- }, Gt = ["src"], qt = {
539
- key: 1,
540
- class: "px-4 flex flex-col"
541
- }, Wt = { class: "flex gap-12 content-stretch" }, Zt = {
542
- class: "flex flex-col w-24",
543
- name: "circles"
544
- }, Jt = { class: "flex-1 flex flex-col items-center" }, Xt = { class: "flex-1 flex flex-col items-center" }, Qt = {
545
- class: "py-12 flex flex-col gap-4",
546
- name: "received-at header"
547
- }, ea = { class: "fm-typo-en-body-lg-400" }, ta = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, aa = { class: "flex gap-12 content-stretch" }, na = {
548
- class: "flex flex-col w-24",
549
- name: "circles"
550
- }, oa = { class: "flex-1 flex flex-col items-center" }, sa = {
551
- class: "py-12 flex flex-col gap-4 flex-1",
552
- name: "delivery details"
553
- }, ra = { class: "flex flex-col gap-8" }, la = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, ca = { class: "flex flex-col gap-4" }, ia = { class: "flex gap-8" }, ua = /* @__PURE__ */ Se({
554
- __name: "ClosingDraftDialog",
555
- props: {
556
- show: { type: Boolean },
557
- draft: {}
558
- },
559
- emits: ["submitted"],
560
- setup(n, { emit: r }) {
561
- const e = n, m = Ve(), c = we(), g = vt(e, "show"), x = O(!1), D = O(!1), i = O(!1), C = O(new Array()), T = Oe(), P = Fe(), u = ct(), p = Ce(), k = qe({}), h = H(() => new Set(
562
- u.skus.filter((a) => {
563
- var t;
564
- return k[(t = a.customAttributes) == null ? void 0 : t.tag];
565
- }).map((a) => a._id)
566
- )), v = r, B = H(() => {
567
- var t, s;
568
- const a = [...((t = e.draft) == null ? void 0 : t.items) ?? [], ...((s = e.draft) == null ? void 0 : s.negativeStockItems) ?? []];
569
- return h.value.size ? a.filter((l) => h.value.has(l.sku._id)) : a;
570
- }), L = H(() => {
571
- const a = B.value.map((t) => t.sku);
572
- return a.sort((t, s) => t.code.localeCompare(s.code)), a;
573
- }), j = H(() => B.value.groupBy(
574
- (t) => t.sku._id,
575
- (t) => t.measurementsAmounts.filter((s) => !s.measurement.abbrev.toLocaleLowerCase().includes("inactive")).map((s) => s.measurement.id)
576
- ));
577
- We(G), Ze(
578
- () => e.show,
579
- (a) => {
580
- a && (te.value = ie[0], G());
581
- }
582
- );
583
- const I = be(0), S = be(100);
584
- async function G() {
585
- var t, s, l;
586
- if (!p._currentLocation) return;
587
- x.value = !0;
588
- const a = ((t = e.draft) == null ? void 0 : t.status) === oe.enum.COMPLETED;
589
- try {
590
- if (await u.init(), a) {
591
- const d = e.draft.closingAdjustmentId;
592
- if (!d) {
593
- P.open({
594
- title: "Something went wrong",
595
- message: "Closing draft is completed but closing document cannot be found.",
596
- type: "error"
597
- }), console.error("Closing draft is completed but closing document cannot be found.", {
598
- draftId: (s = e.draft) == null ? void 0 : s._id
599
- });
600
- return;
601
- }
602
- const f = await T.readAdjustmentById(d), M = (f == null ? void 0 : f.skus) ?? [];
603
- C.value = M.map((U) => ({
604
- id: U.sku._id,
605
- balance: U.fromBalance,
606
- costs: U.fromCostBalances
607
- }));
608
- } else
609
- C.value = ((l = e.draft) == null ? void 0 : l.stockSnapshot) ?? [];
610
- } catch (d) {
611
- P.open({
612
- title: "Something went wrong",
613
- message: "Something went wrong when fetching info. Please try again.",
614
- type: "error"
615
- }), console.error("error on fetch stock balances", d);
616
- } finally {
617
- x.value = !1;
618
- }
619
- }
620
- async function le() {
621
- var t, s;
622
- const a = ((t = e.draft) == null ? void 0 : t.effectiveAt) ?? ((s = e.draft) == null ? void 0 : s.updatedAt);
623
- if (!a) {
624
- P.open({
625
- title: "Cannot refresh",
626
- message: "Effective date is not available for this draft.",
627
- type: "error"
628
- });
629
- return;
630
- }
631
- D.value = !0;
632
- try {
633
- const l = await T.recalculation.calculateStockSnapshotAtDate(
634
- a,
635
- e.draft._id
636
- );
637
- C.value = l, P.open({
638
- title: "Balance refreshed",
639
- message: "Stock balance has been recalculated.",
640
- type: "success"
641
- });
642
- } catch (l) {
643
- P.open({
644
- title: "Refresh failed",
645
- message: "Failed to refresh stock balance. Please try again.",
646
- type: "error"
647
- }), console.error("error refreshing stock balances", l);
648
- } finally {
649
- D.value = !1;
650
- }
651
- }
652
- const X = H(
653
- () => C.value.groupBy(
654
- (a) => a.id,
655
- (a) => a.balance
656
- )
657
- ), se = H(() => B.value.groupBy((a) => a.sku._id));
658
- function ce(a) {
659
- return w(
660
- me.FmTooltip,
661
- { zIndex: 51, placement: "left", class: "w-full flex justify-end" },
662
- {
663
- default() {
664
- return a;
665
- },
666
- content() {
667
- return "Differences are calculated using this formula: (Adjusted / System) × 100%";
668
- }
669
- }
670
- );
671
- }
672
- const pe = H(() => {
673
- const a = L.value.reduce((s, l) => {
674
- var d, f;
675
- return Math.max(s, ((f = (d = j.value) == null ? void 0 : d.get(l._id)) == null ? void 0 : f[0].length) ?? 0);
676
- }, 0);
677
- return [
678
- {
679
- id: "sku",
680
- accessorFn: (s) => `${s.code} ${s.name}`,
681
- header: () => "Name",
682
- size: 350,
683
- cell(s) {
684
- const l = s.row.original, d = l.adjustedDiffPercentage, f = typeof d == "number" && Math.abs(d) > 10, M = w("div", { class: "flex flex-col gap-4" }, [
685
- w(
686
- "div",
687
- {
688
- class: [
689
- "line-clamp-1 fm-typo-en-body-lg-400",
690
- f ? " text-fm-color-system-error-300" : "text-fm-color-typo-primary"
691
- ]
692
- },
693
- l.name
694
- ),
695
- w(
696
- "div",
697
- {
698
- class: [
699
- "line-clamp-1 fm-typo-en-body-md-400",
700
- f ? " text-fm-color-system-error-300" : "text-fm-color-typo-secondary"
701
- ]
702
- },
703
- l.code
704
- )
705
- ]);
706
- return w(
707
- me.FmTooltip,
708
- {
709
- zIndex: 51
710
- },
711
- {
712
- content() {
713
- return f ? "Adjustment difference is more than 10%." : `${l.code} - ${l.name}`;
714
- },
715
- default() {
716
- return w("div", { class: "flex items-center gap-4 justify-start w-full" }, [
717
- M
718
- ]);
719
- }
720
- }
721
- );
722
- }
723
- },
724
- {
725
- id: "baseUnit",
726
- header: () => "Base unit",
727
- accessorKey: "baseUnit"
728
- },
729
- {
730
- id: "physicalBalance",
731
- accessorKey: "physicalBalance",
732
- header: () => ce("Actual balance"),
733
- size: 200,
734
- meta: {
735
- textAlign: "right"
736
- }
737
- },
738
- {
739
- id: "systemBalance",
740
- accessorKey: "systemBalance",
741
- header: () => ce("Balance"),
742
- size: 200,
743
- meta: {
744
- textAlign: "right"
745
- }
746
- },
747
- {
748
- id: "adjustedAmount",
749
- accessorKey: "adjustedAmount",
750
- header: () => ce("Adjusted balance"),
751
- size: 200,
752
- meta: {
753
- textAlign: "right"
754
- }
755
- },
756
- {
757
- id: "adjustedDiffPercentage",
758
- accessorKey: "adjustedDiffPercentage",
759
- header: () => w(
760
- me.FmTooltip,
761
- { zIndex: 51, placement: "left", class: "w-full flex justify-end" },
762
- {
763
- default() {
764
- return w("div", { class: "flex items-center gap-4" }, [
765
- "Diff (%)",
766
- w(me.FmIcon, { name: "info", color: "neutral-gray-400", size: "sm" })
767
- ]);
768
- },
769
- content() {
770
- return "Differences are calculated using this formula: (Adjusted / System) × 100%";
771
- }
772
- }
773
- ),
774
- size: 200,
775
- cell(s) {
776
- const l = s.row.original.adjustedDiffPercentage;
777
- if (!l) return "N/A";
778
- const d = l.toFixed(2);
779
- if (d === "0.00")
780
- return w("div", { class: "flex items-center gap-4 justify-end" }, ["0.00"]);
781
- const f = l > 0;
782
- return w("div", { class: "flex items-center gap-4 justify-end" }, [
783
- w(me.FmIcon, {
784
- name: f ? "arrow_drop_up" : "arrow_drop_down",
785
- color: f ? "system-success-300" : "system-error-300",
786
- size: "md"
787
- }),
788
- d
789
- ]);
790
- },
791
- meta: {
792
- textAlign: "right"
793
- }
794
- },
795
- {
796
- id: "physicalBalances",
797
- header: () => "Amounts",
798
- enableSorting: !1,
799
- cell(s) {
800
- const l = s.row.original, d = (M, U) => w(
801
- me.FmTooltip,
802
- { zIndex: 50 },
803
- {
804
- default() {
805
- return w(
806
- "div",
807
- {
808
- class: "fm-typo-en-body-md-400 py-4 px-8 border-1 border-fm-color-typo-secondary fm-corner-radius-md line-clamp-1"
809
- },
810
- [
811
- w("span", { class: "text-fm-color-typo-primary" }, `${M} `),
812
- w(
813
- "span",
814
- {
815
- class: "text-fm-color-typo-secondary",
816
- style: { maxWidth: "80px" }
817
- },
818
- U
819
- )
820
- ]
821
- );
822
- },
823
- content() {
824
- return `${M} ${U}`;
825
- }
826
- }
827
- );
828
- let f = Array.from({ length: a }).map((M, U) => {
829
- if (!l[`measurementAmount${U}`])
830
- return null;
831
- const F = l[`measurementAmount${U}`], ue = l[`measurementAbbrev${U}`];
832
- return d(F, ue);
833
- }).filter((M) => M);
834
- return (l.baseUnitAmount || !f.length) && (f = [d(l.baseUnitAmount, l.baseUnit), ...f]), w(
835
- "div",
836
- {
837
- class: "flex gap-8 flex-nowrap",
838
- style: {
839
- minWidth: `${120 * f.length}px`
840
- }
841
- },
842
- f
843
- );
844
- }
845
- }
846
- ];
847
- }), he = H(() => pe.value.map((a) => a.size ?? 0).reduce((a, t) => a + t)), ee = O(""), ve = H(() => L.value.map((a) => {
848
- var F, ue;
849
- const t = (F = se.value.get(a._id)) == null ? void 0 : F[0], s = ((ue = X.value.get(a._id)) == null ? void 0 : ue[0]) ?? I;
850
- if (!t)
851
- return {
852
- code: a.code,
853
- name: a.name,
854
- baseUnit: a.unit.abbrev,
855
- baseUnitAmount: 0,
856
- systemBalance: +R(s),
857
- physicalBalance: 0,
858
- adjustedAmount: -+R(s),
859
- adjustedDiffPercentage: -100
860
- };
861
- const l = Ye(t), d = Ue(l, s), f = s.amount === 0 ? null : Ee(d, {
862
- ...s,
863
- amount: Math.abs(s.amount)
864
- }), M = f ? Be(f, S) : null;
865
- return {
866
- code: a.code,
867
- name: a.name,
868
- baseUnit: a.unit.abbrev,
869
- baseUnitAmount: +R(t.baseAmount),
870
- ...t.measurementsAmounts.filter((ae) => {
871
- var q, re, Ae;
872
- return (Ae = (re = (q = j.value) == null ? void 0 : q.get(a._id)) == null ? void 0 : re[0]) == null ? void 0 : Ae.includes(ae.measurement.id);
873
- }).reduce((ae, q, re) => (ae[`measurementAbbrev${re}`] = `(${q.measurement.abbrev}) × ${R(q.measurement.conversion)}`, ae[`measurementAmount${re}`] = +R(q.amount), ae), {}),
874
- systemBalance: +R(s),
875
- physicalBalance: +R(l),
876
- adjustedAmount: +R(d),
877
- adjustedDiffPercentage: M ? +R(He(M, 2)) : null
878
- };
879
- })), xe = H(() => {
880
- var t, s, l;
881
- if (!e.draft) return [];
882
- const a = e.draft.approvedAt ? {
883
- action: `Approve at ${ne(e.draft.approvedAt)}`,
884
- // actionAt: props.draft.approvedAt,
885
- actionBy: e.draft.approvedBy,
886
- remark: e.draft.approveRemark
887
- } : (t = e.draft.rejectionHistory) == null ? void 0 : t.computeFirst((d) => ({
888
- action: `Reject at ${ne(d.rejectedAt)}`,
889
- // actionAt: e.rejectedAt,
890
- actionBy: d.rejectedBy,
891
- remark: d.rejectRemark
892
- }));
893
- return [
894
- {
895
- label: "Created at",
896
- value: ne(e.draft.createdAt)
897
- },
898
- {
899
- label: "Created by",
900
- value: e.draft.createdBy.name
901
- },
902
- {
903
- label: "Updated at",
904
- value: ne(e.draft.updatedAt)
905
- },
906
- {
907
- label: "Updated by",
908
- value: e.draft.updatedBy.name
909
- },
910
- {
911
- label: "Effective at",
912
- value: ne(e.draft.effectiveAt ?? e.draft.updatedAt)
913
- },
914
- {
915
- label: "Using template",
916
- value: ((s = e.draft.usingTemplates.find((d) => d)) == null ? void 0 : s.name) ?? "None"
917
- },
918
- e.draft.remark ? {
919
- label: "Remark",
920
- value: e.draft.remark
921
- } : null,
922
- a ? {
923
- label: "Last action",
924
- value: a.action
925
- } : null,
926
- a && a.actionBy ? {
927
- label: "Last action by",
928
- value: (l = a.actionBy) == null ? void 0 : l.name
929
- } : null,
930
- a && a.remark ? {
931
- label: "Action remark",
932
- value: a.remark
933
- } : null
934
- ].filter((d) => d).map((d) => d);
935
- }), ie = [
936
- {
937
- label: "Overview",
938
- value: "overview"
939
- },
940
- {
941
- label: "Action history",
942
- value: "history"
943
- }
944
- ], te = O(ie[0]), Y = H(() => {
945
- var t, s, l, d;
946
- return [
947
- ...(((t = e.draft) == null ? void 0 : t.rejectionHistory) ?? []).map(
948
- (f) => ({
949
- header: "Reject",
950
- date: ne(f.rejectedAt),
951
- info: [
952
- {
953
- label: "Rejected by",
954
- values: [f.rejectedBy.name]
955
- },
956
- {
957
- label: "Rejection remark",
958
- values: [f.rejectRemark]
959
- }
960
- ]
961
- })
962
- ),
963
- ...(s = e.draft) != null && s.approvedBy ? [
964
- {
965
- header: "Approve",
966
- date: e.draft.approvedAt ? ne(e.draft.approvedAt) : "",
967
- info: [
968
- {
969
- label: "Approved by",
970
- values: [(l = e.draft) == null ? void 0 : l.approvedBy.name]
971
- },
972
- {
973
- label: "Approval remark",
974
- values: [((d = e.draft) == null ? void 0 : d.approveRemark) ?? ""]
975
- }
976
- ]
977
- }
978
- ] : []
979
- ];
980
- }), ye = H(() => {
981
- var d, f, M, U;
982
- if ((d = e == null ? void 0 : e.draft) != null && d.approvedAt) return "Draft is already approved.";
983
- if (((f = e.draft) == null ? void 0 : f.status) !== oe.enum.DRAFT) return "Status is not draft.";
984
- const a = ve.value.some((F) => F.physicalBalance < 0), t = ((U = (M = m.stockBalance.skus) == null ? void 0 : M.filter((F) => F.balance.amount < 0)) == null ? void 0 : U.map((F) => F.id)) ?? [], s = new Set(L.value.map((F) => F._id)), l = t.filter((F) => !s.has(F)).length;
985
- return [
986
- a ? "Negative total exist." : null,
987
- l ? "Negative stock is not included in this draft. Reopen draft in POS and apply changes." : null
988
- ].filter((F) => F).join(" ");
989
- });
990
- return (a, t) => {
991
- const s = E("FmButtonGroup"), l = E("FmMenuDivider"), d = E("FmCard"), f = E("FmButton"), M = E("FmCircularProgress"), U = E("FmTextField"), F = E("FmIcon"), ue = E("FmChip"), ae = E("FmTable"), q = E("FmSpacer"), re = E("FmTooltip"), Ae = E("FmSideSheet");
992
- return b(), Z(Ae, {
993
- "dismiss-away": "",
994
- "max-width": 9999,
995
- "model-value": y(g),
996
- "onUpdate:modelValue": t[8] || (t[8] = (A) => Me(g) ? g.value = A : null),
997
- header: "Closing details"
998
- }, {
999
- "side-sheet-footer": K(() => {
1000
- var A, z, V, de;
1001
- return [
1002
- o("div", ia, [
1003
- ((A = e.draft) == null ? void 0 : A.status) === y(oe).enum.DRAFT ? (b(), $(W, { key: 0 }, [
1004
- ye.value ? (b(), Z(re, {
1005
- key: 0,
1006
- "z-index": 51
1007
- }, {
1008
- content: K(() => [
1009
- je(N(ye.value), 1)
1010
- ]),
1011
- default: K(() => [
1012
- _(f, {
1013
- disabled: "",
1014
- key: "approve key",
1015
- label: "Approve",
1016
- onClick: t[3] || (t[3] = () => e.draft && y(c).approveDraft(e.draft, () => v("submitted")))
1017
- })
1018
- ]),
1019
- _: 1
1020
- })) : (b(), Z(f, {
1021
- key: "approve key",
1022
- label: "Approve",
1023
- onClick: t[4] || (t[4] = () => e.draft && y(c).approveDraft(e.draft, () => v("submitted")))
1024
- }))
1025
- ], 64)) : Q("", !0),
1026
- ((z = e.draft) == null ? void 0 : z.status) === y(oe).enum.DRAFT ? (b(), Z(f, {
1027
- key: 1,
1028
- label: "Reject",
1029
- variant: "destructive",
1030
- onClick: t[5] || (t[5] = () => e.draft && y(c).rejectDraft(e.draft, () => v("submitted")))
1031
- })) : Q("", !0),
1032
- (V = e.draft) != null && V.approvedAt && ((de = e.draft) == null ? void 0 : de.status) !== y(oe).enum.COMPLETED ? (b(), Z(f, {
1033
- key: 2,
1034
- label: "Sync",
1035
- loading: i.value,
1036
- onClick: t[6] || (t[6] = () => {
1037
- e.draft && (i.value = !0, y(c).syncDraft(e.draft, () => {
1038
- i.value = !1, v("submitted");
1039
- }));
1040
- })
1041
- }, null, 8, ["loading"])) : Q("", !0),
1042
- _(f, {
1043
- label: "Close",
1044
- variant: "tertiary",
1045
- onClick: t[7] || (t[7] = (Te) => g.value = !1)
1046
- })
1047
- ])
1048
- ];
1049
- }),
1050
- default: K(() => [
1051
- o("div", $t, [
1052
- o("div", null, [
1053
- _(s, {
1054
- items: ie,
1055
- modelValue: te.value,
1056
- "onUpdate:modelValue": t[0] || (t[0] = (A) => te.value = A)
1057
- }, null, 8, ["modelValue"])
1058
- ]),
1059
- te.value.value === "overview" ? (b(), $(W, { key: 0 }, [
1060
- _(d, {
1061
- variant: "outlined",
1062
- class: "flex flex-col gap-8 px-12 py-16"
1063
- }, {
1064
- default: K(() => {
1065
- var A, z;
1066
- return [
1067
- o("div", Tt, [
1068
- t[9] || (t[9] = o("div", { class: "fm-typo-en-body-lg-600" }, "Closing summary", -1)),
1069
- o("div", Rt, [
1070
- o("div", {
1071
- class: fe(["fm-status-badge", y(ke)(((A = a.draft) == null ? void 0 : A.status) ?? "DRAFT")])
1072
- }, N(y(Le)(((z = a.draft) == null ? void 0 : z.status) ?? "")), 3)
1073
- ])
1074
- ]),
1075
- _(l),
1076
- o("div", Pt, [
1077
- (b(!0), $(W, null, ge(xe.value, (V, de) => (b(), $("div", {
1078
- class: "flex flex-col gap-4",
1079
- key: de
1080
- }, [
1081
- o("div", Mt, [
1082
- o("div", It, N(V.label), 1)
1083
- ]),
1084
- o("div", Ut, N(V.value), 1)
1085
- ]))), 128))
1086
- ])
1087
- ];
1088
- }),
1089
- _: 1
1090
- }),
1091
- o("div", Et, [
1092
- o("div", Ht, [
1093
- t[10] || (t[10] = o("div", { class: "flex-1 fm-typo-en-title-sm-600 text-fm-color-typo-primary" }, " Closing items ", -1)),
1094
- x.value ? Q("", !0) : (b(), $("div", Lt, [
1095
- a.draft && a.draft.status !== y(oe).enum.COMPLETED ? (b(), Z(f, {
1096
- key: 0,
1097
- label: "Refresh balance",
1098
- "prepend-icon": "refresh",
1099
- variant: "secondary",
1100
- "text-color": "primary",
1101
- "bg-color": "transparent",
1102
- "border-color": "primary",
1103
- loading: D.value,
1104
- onClick: le
1105
- }, null, 8, ["loading"])) : Q("", !0),
1106
- _(f, {
1107
- label: "Export data",
1108
- "prepend-icon": "download",
1109
- variant: "secondary",
1110
- "text-color": "primary",
1111
- "bg-color": "transparent",
1112
- "border-color": "primary",
1113
- onClick: t[1] || (t[1] = (A) => a.draft ? y(c).exportDraft(a.draft, C.value) : null)
1114
- })
1115
- ]))
1116
- ]),
1117
- x.value ? (b(), $("div", zt, [
1118
- t[12] || (t[12] = o("div", { class: "h-80" }, null, -1)),
1119
- o("div", Nt, [
1120
- o("div", null, [
1121
- _(M, { size: "md" })
1122
- ]),
1123
- t[11] || (t[11] = o("div", { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, " Fetching info... ", -1))
1124
- ]),
1125
- t[13] || (t[13] = o("div", { class: "h-80" }, null, -1))
1126
- ])) : (b(), $(W, { key: 1 }, [
1127
- o("div", null, [
1128
- _(U, {
1129
- modelValue: ee.value,
1130
- "onUpdate:modelValue": t[2] || (t[2] = (A) => ee.value = A),
1131
- placeholder: "Filter items"
1132
- }, null, 8, ["modelValue"])
1133
- ]),
1134
- y(u).skuTags.size ? (b(), $("div", Ot, [
1135
- (b(!0), $(W, null, ge(y(u).skuTags.keys(), (A) => (b(), Z(ue, {
1136
- key: `${A}`,
1137
- label: `${A}`,
1138
- selectable: "",
1139
- selected: k[`${A}`],
1140
- onClick: (z) => k[`${A}`] = !k[`${A}`]
1141
- }, {
1142
- default: K(() => [
1143
- k[`${A}`] ? (b(), Z(F, {
1144
- key: 0,
1145
- name: "check",
1146
- class: "text-white",
1147
- size: "sm"
1148
- })) : Q("", !0),
1149
- o("span", {
1150
- class: fe([
1151
- "",
1152
- {
1153
- "text-white fm-typo-en-body-md-600": k[`${A}`],
1154
- "text-fm-color-typo-primary fm-typo-en-body-md-400": !k[`${A}`]
1155
- }
1156
- ])
1157
- }, N(A), 3)
1158
- ]),
1159
- _: 2
1160
- }, 1032, ["label", "selected", "onClick"]))), 128))
1161
- ])) : Q("", !0),
1162
- o("div", Vt, [
1163
- o("div", {
1164
- style: Ie({ minWidth: `${he.value}px` })
1165
- }, [
1166
- _(ae, {
1167
- "column-defs": pe.value,
1168
- "row-data": ve.value,
1169
- "search-value": ee.value
1170
- }, null, 8, ["column-defs", "row-data", "search-value"])
1171
- ], 4)
1172
- ])
1173
- ], 64))
1174
- ])
1175
- ], 64)) : Q("", !0),
1176
- te.value.value === "history" ? (b(), $("div", Yt, [
1177
- Y.value.length ? (b(), $("div", qt, [
1178
- (b(!0), $(W, null, ge(Y.value, (A, z) => (b(), $(W, { key: z }, [
1179
- o("div", Wt, [
1180
- o("div", Zt, [
1181
- o("div", Jt, [
1182
- o("div", {
1183
- class: fe([
1184
- {
1185
- "bg-fm-color-primary": z !== 0,
1186
- "bg-white": z === 0
1187
- },
1188
- "w-[2px] h-full"
1189
- ])
1190
- }, null, 2)
1191
- ]),
1192
- t[16] || (t[16] = o("div", { class: "h-24 w-24 bg-fm-color-primary rounded-full" }, null, -1)),
1193
- o("div", Xt, [
1194
- o("div", {
1195
- class: fe([
1196
- {
1197
- "bg-fm-color-primary": z < Y.value.length - 1,
1198
- "bg-white": z >= Y.value.length - 1
1199
- },
1200
- "w-[2px] h-full"
1201
- ])
1202
- }, null, 2)
1203
- ])
1204
- ]),
1205
- o("div", Qt, [
1206
- o("div", ea, N(A.header), 1),
1207
- o("div", ta, N(A.date), 1)
1208
- ])
1209
- ]),
1210
- o("div", aa, [
1211
- o("div", na, [
1212
- o("div", oa, [
1213
- o("div", {
1214
- class: fe([
1215
- {
1216
- "bg-fm-color-primary": z < Y.value.length - 1,
1217
- "bg-white": z >= Y.value.length - 1
1218
- },
1219
- "w-[2px] h-full"
1220
- ])
1221
- }, null, 2)
1222
- ])
1223
- ]),
1224
- o("div", sa, [
1225
- _(d, {
1226
- variant: "outlined",
1227
- class: "py-12 px-16"
1228
- }, {
1229
- default: K(() => [
1230
- o("div", ra, [
1231
- (b(!0), $(W, null, ge(A.info, (V, de) => (b(), $("div", {
1232
- key: de,
1233
- class: "flex flex-col gap-4"
1234
- }, [
1235
- o("div", la, N(V == null ? void 0 : V.label), 1),
1236
- o("div", ca, [
1237
- (b(!0), $(W, null, ge(V == null ? void 0 : V.values, (Te, Ge) => (b(), $("div", {
1238
- key: Ge,
1239
- class: "fm-typo-en-body-lg-600"
1240
- }, N(Te), 1))), 128))
1241
- ])
1242
- ]))), 128))
1243
- ])
1244
- ]),
1245
- _: 2
1246
- }, 1024)
1247
- ])
1248
- ])
1249
- ], 64))), 128))
1250
- ])) : (b(), $("div", Kt, [
1251
- _(q),
1252
- o("div", null, [
1253
- o("img", {
1254
- src: y(bt),
1255
- alt: "List is empty"
1256
- }, null, 8, Gt)
1257
- ]),
1258
- t[14] || (t[14] = o("div", { class: "fm-typo-en-body-lg-600" }, N("No records found"), -1)),
1259
- t[15] || (t[15] = o("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary px-16" }, N("You can track approval and rejection history here"), -1)),
1260
- _(q),
1261
- _(q)
1262
- ]))
1263
- ])) : Q("", !0)
1264
- ])
1265
- ]),
1266
- _: 1
1267
- }, 8, ["model-value"]);
1268
- };
1269
- }
1270
- }), da = { class: "flex-1 flex flex-col gap-8" }, ma = { class: "flex flex-col" }, fa = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, pa = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, va = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary line-clamp-2" }, ya = { class: "fm-typo-en-body-lg-400 line-clamp-2" }, ka = /* @__PURE__ */ Se({
1271
- __name: "ClosingDraftView",
1272
- setup(n) {
1273
- const { t: r } = ze(), { viewDraft: e } = we(), { viewClosingDraftProps: m, viewClosingDraftShow: c } = gt(we()), g = Ce(), x = Ft(), D = it(), { breakpoints: i } = yt();
1274
- g.watchLocation(x.fetchDrafts);
1275
- const C = H(() => x.loading), T = O(""), P = H(() => i.value.xs || i.value.sm), u = H(() => P.value ? 10 : 20);
1276
- function p(v) {
1277
- switch (v) {
1278
- case "refresh":
1279
- return x.fetchDrafts();
1280
- }
1281
- }
1282
- function k(v) {
1283
- return v;
1284
- }
1285
- const h = H(() => P.value ? [
1286
- {
1287
- label: r("inventory.common.refresh"),
1288
- value: "refresh",
1289
- isPrimary: !1
1290
- }
1291
- ] : [
1292
- {
1293
- label: r("inventory.common.refresh"),
1294
- value: "refresh",
1295
- isPrimary: !1
1296
- }
1297
- ]);
1298
- return (v, B) => {
1299
- const L = E("FmTable");
1300
- return b(), $(W, null, [
1301
- _(ut, {
1302
- title: y(r)("inventory.closing.draft.title"),
1303
- actions: h.value,
1304
- "onClick:action": p
1305
- }, {
1306
- default: K(() => [
1307
- o("div", {
1308
- class: fe([
1309
- "flex flex-col gap-8 max-h-full",
1310
- {
1311
- "p-0": P.value,
1312
- "px-24 ": !P.value
1313
- }
1314
- ])
1315
- }, [
1316
- _(dt, {
1317
- "change-location": "",
1318
- searchable: "",
1319
- search: T.value,
1320
- "onUpdate:search": B[0] || (B[0] = (j) => T.value = j)
1321
- }, null, 8, ["search"]),
1322
- _(L, {
1323
- style: Ie(y(D).tableHeight),
1324
- "column-defs": y(x).columnDefs,
1325
- "row-data": y(x).drafts,
1326
- "search-value": T.value,
1327
- loading: C.value,
1328
- onRowClick: B[1] || (B[1] = (j) => y(e)(j.original)),
1329
- "page-size": u.value
1330
- }, {
1331
- "list-row": K((j) => [
1332
- _(mt, {
1333
- row: j,
1334
- onRowClick: (I) => y(e)(I)
1335
- }, {
1336
- default: K((I) => {
1337
- var S, G, le, X, se, ce, pe, he, ee, ve, xe, ie, te, Y, ye, a, t, s, l, d;
1338
- return [
1339
- o("div", da, [
1340
- o("div", ma, [
1341
- o("div", fa, [
1342
- _(y(De), {
1343
- render: (le = (G = (S = I._id) == null ? void 0 : S.column) == null ? void 0 : G.columnDef) == null ? void 0 : le.cell,
1344
- props: (se = (X = I._id) == null ? void 0 : X.getContext) == null ? void 0 : se.call(X)
1345
- }, null, 8, ["render", "props"])
1346
- ]),
1347
- o("div", pa, [
1348
- _(y(De), {
1349
- render: (he = (pe = (ce = I.name) == null ? void 0 : ce.column) == null ? void 0 : pe.columnDef) == null ? void 0 : he.cell,
1350
- props: (ve = (ee = I.name) == null ? void 0 : ee.getContext) == null ? void 0 : ve.call(ee)
1351
- }, null, 8, ["render", "props"])
1352
- ]),
1353
- o("div", va, N([
1354
- ...j.original.items.slice(0, 3).map((f) => f.sku.name),
1355
- ...j.original.items.length >= 3 ? [`and ${j.original.items.length - 3} more items`] : []
1356
- ].join(", ")), 1),
1357
- o("div", ya, [
1358
- _(y(De), {
1359
- render: (te = (ie = (xe = I.ref) == null ? void 0 : xe.column) == null ? void 0 : ie.columnDef) == null ? void 0 : te.cell,
1360
- props: (ye = (Y = I.ref) == null ? void 0 : Y.getContext) == null ? void 0 : ye.call(Y)
1361
- }, null, 8, ["render", "props"])
1362
- ])
1363
- ]),
1364
- o("div", null, [
1365
- _(y(De), {
1366
- render: (s = (t = (a = I.status) == null ? void 0 : a.column) == null ? void 0 : t.columnDef) == null ? void 0 : s.cell,
1367
- props: (d = (l = I.status) == null ? void 0 : l.getContext) == null ? void 0 : d.call(l)
1368
- }, null, 8, ["render", "props"])
1369
- ])
1370
- ])
1371
- ];
1372
- }),
1373
- _: 2
1374
- }, 1032, ["row", "onRowClick"])
1375
- ]),
1376
- _: 1
1377
- }, 8, ["style", "column-defs", "row-data", "search-value", "loading", "page-size"])
1378
- ], 2)
1379
- ]),
1380
- _: 1
1381
- }, 8, ["title", "actions"]),
1382
- (b(), Z(Je, { to: "body" }, [
1383
- _(ua, Xe(y(m), {
1384
- show: y(c),
1385
- "onUpdate:show": B[2] || (B[2] = (j) => Me(c) ? c.value = j : null),
1386
- onSubmitted: B[3] || (B[3] = () => (c.value = !1, y(x).fetchDrafts()))
1387
- }), null, 16, ["show"])
1388
- ]))
1389
- ], 64);
1390
- };
1391
- }
1392
- });
1393
- export {
1394
- ka as default
1395
- };