@feedmepos/mf-inventory-portal 1.2.51-dev.1 → 1.2.51

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 (96) hide show
  1. package/dist/{App-bY_YcLwH.js → App-BJ_vKOR1.js} +70 -75
  2. package/dist/{ApprovalView-vzIiBqt2.js → ApprovalView-B_prTTtl.js} +34 -34
  3. package/dist/{BindingsDialog-DCh2ORem.js → BindingsDialog-BPuKgJIk.js} +2 -2
  4. package/dist/{BindingsPicker-DcNG03p-.js → BindingsPicker-Dv_cmEil.js} +2 -2
  5. package/dist/{BindingsTable-B_Yaq-z3.js → BindingsTable-BNSfYRfq.js} +4 -4
  6. package/dist/{ClosingDraftView-C0T8cWEB.js → ClosingDraftView-C78tcaJ3.js} +399 -413
  7. package/dist/{ClosingHistoryView-DkKAjh7T.js → ClosingHistoryView-DY8liEk3.js} +27 -27
  8. package/dist/{ClosingTemplateView-DpH1EyW5.js → ClosingTemplateView-pJXEcrjO.js} +17 -18
  9. package/dist/{DeliveryOrderPrintPreview-B2ecLaLu.js → DeliveryOrderPrintPreview-Bu_l-kxu.js} +1 -1
  10. package/dist/FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-Dgibb-Fh.js +231 -0
  11. package/dist/{FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-kVpsL4cx.js → FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-DHe5G3kX.js} +12 -12
  12. package/dist/{FmMultiselectDialog-DGUwruxs.js → FmMultiselectDialog-C3iCMK5I.js} +1 -1
  13. package/dist/FmMultiselectDialog-CDONDKxE.js +598 -0
  14. package/dist/{FmUnitInput.vue_vue_type_script_setup_true_lang-CRTG3VFo.js → FmUnitInput.vue_vue_type_script_setup_true_lang-CefvebOx.js} +3 -3
  15. package/dist/{ImportView-Bk4Z7nGh.js → ImportView-JrenRgiI.js} +7 -7
  16. package/dist/{IngredientBindedItem.vue_vue_type_script_setup_true_lang-BEJ19Uej.js → IngredientBindedItem.vue_vue_type_script_setup_true_lang-CSdxodp6.js} +1 -1
  17. package/dist/{IngredientGroupView-8GHMMOux.js → IngredientGroupView-aDFq_ZDh.js} +107 -108
  18. package/dist/{IngredientsView-DbmODx-v.js → IngredientsView-DSh3UqDg.js} +125 -126
  19. package/dist/{IntegrationView-DC0O_Lk4.js → IntegrationView-KhZ78uxM.js} +80 -80
  20. package/dist/{InventoryBindingForm-ln0q25n_.js → InventoryBindingForm-DZu0CZYh.js} +1 -1
  21. package/dist/{InventoryBindingForm.vue_vue_type_script_setup_true_lang-CFgk9rSe.js → InventoryBindingForm.vue_vue_type_script_setup_true_lang-YuCn0irA.js} +21 -21
  22. package/dist/{InventoryBindingSummary-BlNXhS4v.js → InventoryBindingSummary-DZxLhZ_-.js} +1 -1
  23. package/dist/{NumberPrecisionInput.vue_vue_type_script_setup_true_lang-BY_mXqPr.js → NumberPrecisionInput.vue_vue_type_script_setup_true_lang-DAwpZY3n.js} +1 -1
  24. package/dist/{PremiumBadge.vue_vue_type_script_setup_true_lang-BhNjwE3X.js → PremiumBadge.vue_vue_type_script_setup_true_lang-CPDxwz-V.js} +2 -2
  25. package/dist/{PublishView-5GkTzxbi.js → PublishView-CLnQ7NBN.js} +3 -3
  26. package/dist/{PurchaseOrderPrintPreview-Dj5lJ5Ou.js → PurchaseOrderPrintPreview-DiBztBma.js} +1 -1
  27. package/dist/ReceiveRequestView-_TOSnDGJ.js +2913 -0
  28. package/dist/{RecipeView-OLPRwnVx.js → RecipeView-BPIMvoTw.js} +82 -83
  29. package/dist/{StockView-TcA5zJqr.js → StockView-CI8MUJay.js} +112 -113
  30. package/dist/{SubsidiaryTreeDialog.vue_vue_type_script_setup_true_lang-DZ6TDkKR.js → SubsidiaryTreeDialog.vue_vue_type_script_setup_true_lang-DEBHEMkh.js} +1 -1
  31. package/dist/{SupplierView-77qI9YCg.js → SupplierView-COihDMNY.js} +27 -28
  32. package/dist/{SystemTrailDialog.vue_vue_type_script_setup_true_lang-_8YeihNH.js → SystemTrailDialog.vue_vue_type_script_setup_true_lang-D-c0Ayis.js} +2 -2
  33. package/dist/TableActionableRow.vue_vue_type_script_setup_true_lang-cfFHDIwQ.js +162 -0
  34. package/dist/{TemplatePublishDialog.vue_vue_type_script_setup_true_lang-ByPIjcED.js → TemplatePublishDialog.vue_vue_type_script_setup_true_lang-D8vbPlie.js} +13 -13
  35. package/dist/{TransferDetails.vue_vue_type_script_setup_true_lang-7BoFD5wV.js → TransferDetails.vue_vue_type_script_setup_true_lang-BVuuw11z.js} +659 -658
  36. package/dist/{TransferTemplateView-CI0U36Tr.js → TransferTemplateView-B2NNfrEq.js} +81 -82
  37. package/dist/{UnitView-fNFFUNlb.js → UnitView-ZsbM07hw.js} +19 -20
  38. package/dist/{WarehouseView-BAXgnZnO.js → WarehouseView-Cd5RFu5v.js} +20 -21
  39. package/dist/{WastageTemplateView-C5qCXWqZ.js → WastageTemplateView-DpikyyZW.js} +164 -165
  40. package/dist/api/netsuite.d.ts +0 -8
  41. package/dist/{app-CddcvygU.js → app-CySQTQxj.js} +4410 -4513
  42. package/dist/app-uBuHtW8m.js +8127 -0
  43. package/dist/app.d.ts +0 -52
  44. package/dist/app.js +1 -1
  45. package/dist/{closing-template-DxdLqlb1.js → closing-template-DXGjC5AG.js} +1 -1
  46. package/dist/components/FmInventoryTableToolbar.vue.d.ts +0 -8
  47. package/dist/components/FmMultiselectDialogProps.d.ts +0 -5
  48. package/dist/cypress/component/receive-request/KDI-15-total-price-currency.cy.d.ts +2 -0
  49. package/dist/{date2-CVZy20Q_.js → date2-BWoUn1K_.js} +1 -1
  50. package/dist/{dayjs.min-NrRtjg32.js → dayjs.min-cMW8olEu.js} +26 -26
  51. package/dist/{decimal-Du3Grkk9.js → decimal-8BRzZQU6.js} +2 -2
  52. package/dist/{defineDeepModel-DgRoiQBp.js → defineDeepModel-AsUZ-DyW.js} +1 -1
  53. package/dist/{duplicate-template-DvnZ4BW6.js → duplicate-template-CyHfZR3S.js} +1 -1
  54. package/dist/{feature-CTA18HlL.js → feature-Dm0FnWf9.js} +6178 -8906
  55. package/dist/{format-time-from-id-6kt1RMWs.js → format-time-from-id-C9lmv5BP.js} +1 -1
  56. package/dist/{format-unit-display-mVJ-nuJe.js → format-unit-display-BV8pJisO.js} +11 -11
  57. package/dist/{import-export.helper-DWwlJy7N.js → import-export.helper-Djxw_H5S.js} +5 -5
  58. package/dist/{index-By-jyWOP.js → index-8hCa5_Gb.js} +1 -1
  59. package/dist/{index-BfcdagSF.js → index-D6u3kywf.js} +1 -1
  60. package/dist/{index-BEcj1jGd.js → index-DidYtgNc.js} +3 -3
  61. package/dist/{lodash-D0COOw3m.js → lodash-CW_Ea6mA.js} +1 -1
  62. package/dist/netsuite-BEto-z0v.js +5131 -0
  63. package/dist/{purchase-order-template-CJCmABzP.js → purchase-order-template-BTzjcgrO.js} +1 -1
  64. package/dist/router/name.d.ts +0 -1
  65. package/dist/{rules-hQBVd1Mn.js → rules-DkVWS5mF.js} +9 -9
  66. package/dist/{stock-4xGaezEy.js → stock-CHw8pI8V.js} +3 -3
  67. package/dist/{stock-B6QW-S14.js → stock-D8hLHgeN.js} +1 -1
  68. package/dist/stores/feature.d.ts +2 -4
  69. package/dist/stores/integration/netsuite.d.ts +0 -5
  70. package/dist/style.css +1 -1
  71. package/dist/{supplier-C-dmFnqw.js → supplier-Dv83IfQr.js} +2 -2
  72. package/dist/tsconfig.app.tsbuildinfo +1 -1
  73. package/dist/{use-ingredient-select-dialog-DgYSZDN8.js → use-ingredient-select-dialog-CJjd4g-6.js} +2 -2
  74. package/dist/{use-inventory-binding-dialog-CnYcA_Fo.js → use-inventory-binding-dialog-D4g79p5S.js} +2 -2
  75. package/dist/{use-template-enabled-locations-2-B_aZrMUU.js → use-template-enabled-locations-2-Cg2iqQdq.js} +2 -2
  76. package/dist/views/ingredients/helper/calculate-default-cost.d.ts +9 -0
  77. package/dist/views/receive-request/components/transfer-form/TransferForm2.vue.d.ts +22 -0
  78. package/dist/views/receive-request/components/transfer-form/TransferFormWithController.vue.d.ts +0 -714
  79. package/dist/views/receive-request/components/transfer-form/composables/use-transfer-items.d.ts +1 -8
  80. package/dist/views/stock/components/StockRecordCard.vue.d.ts +1 -1
  81. package/dist/{vue-i18n-BCEDBY4T.js → vue-i18n-kUcLfpvT.js} +563 -563
  82. package/dist/{xlsx-CJsXiiEq.js → xlsx-BjeMbhDF.js} +398 -398
  83. package/dist/{xlsx.util-CSudzOii.js → xlsx.util-9eMlJfd9.js} +1 -1
  84. package/package.json +5 -5
  85. package/dist/FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-CI4z5XYQ.js +0 -188
  86. package/dist/FmMultiselectDialog-BviFuAM5.js +0 -618
  87. package/dist/ReceiveRequestView-BAYczSpW.js +0 -2913
  88. package/dist/SurchargeView-CxW2ZZ8a.js +0 -460
  89. package/dist/TableActionableRow.vue_vue_type_script_setup_true_lang-Ca_eYa8-.js +0 -84
  90. package/dist/api/surcharge.d.ts +0 -31
  91. package/dist/app-DiX-EfV6.js +0 -8167
  92. package/dist/component-DpCUABT3.js +0 -82
  93. package/dist/netsuite-3LgQ5ztL.js +0 -5402
  94. package/dist/stores/surcharge.d.ts +0 -18
  95. package/dist/surcharge-Db4IiSEQ.js +0 -71
  96. package/dist/views/surcharge/SurchargeView.vue.d.ts +0 -2
@@ -1,2913 +0,0 @@
1
- import { computed as M, h as Y, defineComponent as ne, openBlock as x, createElementBlock as T, Fragment as re, renderList as fe, createElementVNode as o, toDisplayString as I, unref as e, resolveComponent as R, createVNode as m, withCtx as A, createCommentVNode as K, ref as N, createBlock as oe, watch as ye, normalizeClass as W, normalizeStyle as xt, onMounted as Ze, createTextVNode as Ce, toRaw as Mt, shallowRef as pt, onUnmounted as qt, triggerRef as Ut, reactive as Nt, mergeProps as Ke, isRef as _e, createSlots as Bt, Teleport as zt, normalizeProps as Lt, guardReactiveProps as jt } from "vue";
2
- import { t as de, s as pe, f as kt, M as Ht, B as Qt, u as Ue, a as Ne, O as ft, P as Yt, Q as Kt, T as Xt, U as Zt, v as Wt, w as Ct, m as Ee } from "./app-CddcvygU.js";
3
- import { i as vt, _ as Jt } from "./FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-kVpsL4cx.js";
4
- import { u as Gt, P as Qe, a as es, _ as ts, g as ss } from "./TransferDetails.vue_vue_type_script_setup_true_lang-7BoFD5wV.js";
5
- import { R as De, a as he, e as we, d as os, A as qe, M as as, B as Xe } from "./rules-hQBVd1Mn.js";
6
- import { _ as wt, u as rs, i as ns, e as ls } from "./PremiumBadge.vue_vue_type_script_setup_true_lang-BhNjwE3X.js";
7
- import { d as yt } from "./dayjs.min-NrRtjg32.js";
8
- import { u as is } from "./useTabStorage-BkIVScW_.js";
9
- import { u as us, _ as ds } from "./SingleColumnLayout.vue_vue_type_script_setup_true_lang-CWZkVCAj.js";
10
- import { useBreakpoints as We, components as me, FmButtonVariant as cs, useSnackbar as Se, useDialog as ms, useProxiedModel as St } from "@feedmepos/ui-library";
11
- import { F as Ie } from "./form-mode.enum-BKiNVH6A.js";
12
- import { _ as ps, a as fs, b as vs, F as ys } from "./FmUnitInput.vue_vue_type_script_setup_true_lang-CRTG3VFo.js";
13
- import { F as Me, u as Be, c as bs, P as gs } from "./feature-CTA18HlL.js";
14
- import { u as Te } from "./netsuite-3LgQ5ztL.js";
15
- import { useI18n as be } from "@feedmepos/mf-common";
16
- import { u as Ft } from "./surcharge-Db4IiSEQ.js";
17
- import { a as _s } from "./FmMultiselectDialog-BviFuAM5.js";
18
- import { F as ce, _ as $t } from "./TableActionableRow.vue_vue_type_script_setup_true_lang-Ca_eYa8-.js";
19
- import { u as Je } from "./supplier-C-dmFnqw.js";
20
- import { d as Ge, e as hs, g as xs, b as ks } from "./date2-CVZy20Q_.js";
21
- import { u as Cs, _ as ws } from "./FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-CI4z5XYQ.js";
22
- import { _ as Ss } from "./PreviewBadge.vue_vue_type_script_setup_true_lang-CRZiQHjx.js";
23
- import { a as It } from "./format-unit-display-mVJ-nuJe.js";
24
- import { u as et } from "./SystemTrailDialog.vue_vue_type_script_setup_true_lang-_8YeihNH.js";
25
- import { u as Fs } from "./vue-i18n-BCEDBY4T.js";
26
- import { s as $s, r as Is } from "./xlsx.util-CSudzOii.js";
27
- import { F as Ds } from "./FmDroppableField-J0xUsOTV.js";
28
- import { d as Ts } from "./defineDeepModel-DgRoiQBp.js";
29
- import { P as Ps, J as Vs } from "./app-DiX-EfV6.js";
30
- var se = /* @__PURE__ */ ((p) => (p.Code = "Code", p.Name = "Name", p.TemplateName = "TemplateName", p.Amount = "Amount", p.Cost = "Cost", p.TotalCost = "TotalCost", p.Delete = "Delete", p))(se || {});
31
- const Rs = () => Y(
32
- wt,
33
- {
34
- zIndex: 50,
35
- class: "whitespace-nowrap"
36
- },
37
- `Total (${kt()})`
38
- );
39
- function Os(p) {
40
- const { t: b } = be(), { breakpoints: u } = We(), d = Be(), _ = Te();
41
- function n(i) {
42
- const t = p.formController.getAllPurchaseOrderItems().find((s) => s.item.sku._id === i);
43
- return (t == null ? void 0 : t.isCustomCost) ?? !1;
44
- }
45
- function g(i) {
46
- var s, a, r, C, $, c, v;
47
- return !!(((a = (s = i.defaultCost) == null ? void 0 : s.costPerUnit) == null ? void 0 : a.amount) ?? ((v = (c = ($ = (C = (r = p.supplier) == null ? void 0 : r.supplyItems) == null ? void 0 : C.find((D) => D.skuId === i._id)) == null ? void 0 : $.defaultCost) == null ? void 0 : c.costPerUnit) == null ? void 0 : v.amount));
48
- }
49
- function h(i) {
50
- if (!n(i.sku._id) && g(i.sku)) {
51
- const { cost: t, supplierOverrideCost: s } = Me.calculateDefaultCost({
52
- item: i.sku,
53
- amount: i.quantity,
54
- measurement: i.measurement,
55
- overrides: {
56
- supplier: p.supplier
57
- },
58
- defaultCurrency: pe()
59
- });
60
- return { cost: t, supplierOverrideCost: s };
61
- } else
62
- return {
63
- cost: i.totalCost ?? { amount: 0, precision: 0, currency: pe() }
64
- };
65
- }
66
- const F = [
67
- {
68
- id: "Code",
69
- header: () => b("inventory.transfer.form.items.table.Code"),
70
- accessorKey: "code",
71
- size: 200,
72
- cell(i) {
73
- const t = i.row.original;
74
- return _.isEnabled ? Y(
75
- me.FmTooltip,
76
- {
77
- content: t.code,
78
- placement: "top",
79
- variant: "plain",
80
- zIndex: 50
81
- },
82
- Y(
83
- "span",
84
- {
85
- class: "flex-auto line-clamp-2 text-ellipsis break-all"
86
- },
87
- t.code
88
- )
89
- ) : Y(me.FmTextField, {
90
- modelValue: t.code,
91
- "onUpdate:modelValue": (s) => {
92
- p.updateItem({
93
- ...t,
94
- code: s
95
- });
96
- },
97
- key: t.sku._id,
98
- rules: [De()],
99
- labelMark: "required"
100
- });
101
- },
102
- enableSorting: !1
103
- },
104
- {
105
- id: "Name",
106
- header: () => b("inventory.transfer.form.items.table.Name"),
107
- minSize: 300,
108
- cell(i) {
109
- const t = i.row.original;
110
- return _.isEnabled ? Y(
111
- me.FmTooltip,
112
- {
113
- content: t.name,
114
- placement: "top",
115
- variant: "plain",
116
- zIndex: 50
117
- },
118
- Y(
119
- "span",
120
- {
121
- class: "flex-auto line-clamp-2 text-ellipsis break-all"
122
- },
123
- t.name
124
- )
125
- ) : Y(me.FmTextField, {
126
- modelValue: t.name,
127
- "onUpdate:modelValue": (s) => {
128
- p.updateItem({
129
- ...t,
130
- name: s
131
- });
132
- },
133
- key: t.sku._id,
134
- rules: [De()],
135
- labelMark: "required"
136
- });
137
- },
138
- enableSorting: !1
139
- },
140
- {
141
- id: "TemplateName",
142
- header: () => b("inventory.transfer.form.items.table.Name"),
143
- minSize: 300,
144
- enableSorting: !1,
145
- cell(i) {
146
- const t = i.row.original, s = t.code, a = t.name;
147
- return Y(
148
- me.FmTooltip,
149
- { zIndex: 50 },
150
- {
151
- default() {
152
- return Y("div", { class: "flex flex-col w-full" }, [
153
- Y(
154
- "div",
155
- { class: "line-clamp-1 fm-typo-en-body-lg-400 text-fm-color-typo-primary" },
156
- a
157
- ),
158
- Y(
159
- "div",
160
- {
161
- class: "line-clamp-1 fm-typo-en-body-md-400 text-fm-color-typo-secondary"
162
- },
163
- s
164
- )
165
- ]);
166
- },
167
- content() {
168
- return a;
169
- }
170
- }
171
- );
172
- }
173
- },
174
- {
175
- id: "Amount",
176
- header: () => b("inventory.transfer.form.items.table.Amount"),
177
- minSize: 200,
178
- cell(i) {
179
- var C, $, c, v, D;
180
- const t = i.row.original, s = (C = p.forecastAmounts) == null ? void 0 : C.find((q) => q.skuId === t.sku._id), a = s ? s.helperState === "error" ? `Predicted: ${s.amount} (out of range)` : `Predicted: ${s.amount}` : void 0, r = (v = (c = ($ = p.template) == null ? void 0 : $.purchaseOrder) == null ? void 0 : c.items) == null ? void 0 : v.find(
181
- (q) => q.sku._id === t.sku._id
182
- );
183
- return Y(ps, {
184
- style: {
185
- flex: "1 1 0%"
186
- },
187
- modelValue: {
188
- amount: t.quantity ?? { amount: 1, precision: 0 },
189
- measurement: t.measurement ?? null
190
- },
191
- key: t.sku._id,
192
- unit: t.sku.unit,
193
- helperText: a,
194
- helperState: s == null ? void 0 : s.helperState,
195
- "onUpdate:modelValue": (q) => {
196
- if (!q) return;
197
- const z = {
198
- ...t,
199
- quantity: q.amount,
200
- measurement: q.measurement
201
- };
202
- p.updateItem(z);
203
- },
204
- stepper: r == null ? void 0 : r.quantityStep,
205
- disableUnit: !!r,
206
- disabled: p.disabled,
207
- rules: [
208
- fs(
209
- +he(
210
- ((D = t.quantity) == null ? void 0 : D.amount) === 0 ? { amount: 0, precision: 0 } : (r == null ? void 0 : r.minimumQuantity) ?? { amount: 0, precision: 0 }
211
- )
212
- ),
213
- vs(
214
- r != null && r.maximumQuantity ? +he(r == null ? void 0 : r.maximumQuantity) : 1 / 0
215
- ),
216
- ...r != null && r.quantityStep ? [ys(r.quantityStep)] : []
217
- ],
218
- applyDefaultRules: !0
219
- });
220
- },
221
- enableSorting: !1
222
- },
223
- {
224
- id: "Cost",
225
- header: Rs,
226
- size: 180,
227
- cell(i) {
228
- const t = i.row.original, s = g(t.sku), a = u.value.xs || u.value.sm;
229
- if (!n(t.sku._id) && s) {
230
- const { cost: r, supplierOverrideCost: C } = h(t);
231
- return Y(
232
- "div",
233
- {
234
- class: [
235
- "flex gap-4 fm-typo-en-body-md-400 items-center",
236
- p.disabled ? "text-fm-color-typo-disabled" : ""
237
- ],
238
- key: t.sku._id
239
- },
240
- [
241
- Y(me.FmButton, {
242
- prependIcon: "edit",
243
- variant: cs.Tertiary,
244
- disabled: p.disabled,
245
- onClick() {
246
- p.updateItem(
247
- {
248
- ...t,
249
- totalCost: r
250
- },
251
- !0
252
- );
253
- }
254
- }),
255
- Y(
256
- "div",
257
- {
258
- class: "flex flex-col"
259
- },
260
- [
261
- Y(
262
- "span",
263
- a ? we(r) : he(r)
264
- ),
265
- Y(
266
- "span",
267
- {
268
- class: [
269
- "fm-typo-en-body-sm-400",
270
- p.disabled ? "text-fm-color-typo-disabled" : "text-fm-color-neutral-gray-400"
271
- ]
272
- },
273
- b("inventory.transfer.form.items.autoCalculated")
274
- ),
275
- C ? Y(
276
- "span",
277
- {
278
- class: [
279
- "fm-typo-en-body-sm-400",
280
- p.disabled ? "text-fm-color-typo-disabled" : "text-fm-color-neutral-gray-400"
281
- ]
282
- },
283
- [
284
- we(C.costPerUnit),
285
- "/",
286
- C.measurement ? Y(
287
- "span",
288
- { class: "text-blue-500 font-semibold" },
289
- C.measurement.abbrev
290
- ) : Y("span", { class: "text-green-500 font-bold" }, t.sku.unit.abbrev)
291
- // base unit style
292
- ]
293
- ) : null
294
- ]
295
- )
296
- ]
297
- );
298
- }
299
- return Y(
300
- me.FmTextField,
301
- {
302
- disabled: p.disabled || !d.enablePurchaseOrderCostEdit,
303
- modelValue: he(t.totalCost ?? { amount: 0, precision: 0 }),
304
- key: t.sku._id,
305
- "onUpdate:modelValue": (r) => {
306
- d.enablePurchaseOrderCostEdit && p.updateItem(
307
- {
308
- ...t,
309
- totalCost: {
310
- ...os(+r),
311
- currency: pe()
312
- }
313
- },
314
- !0
315
- );
316
- },
317
- rules: [qe(0), as(2)]
318
- },
319
- {
320
- prepend() {
321
- return a ? Y(
322
- "div",
323
- {
324
- class: [
325
- "text-fm-typo-en-body-lg-400",
326
- p.disabled ? "text-fm-color-typo-disabled" : "text-fm-color-typo-primary"
327
- ]
328
- },
329
- kt()
330
- ) : null;
331
- },
332
- append() {
333
- return !s || !d.enablePurchaseOrderCostEdit ? null : Y(me.FmButton, {
334
- prependIcon: "close",
335
- variant: "tertiary",
336
- disabled: p.disabled,
337
- onClick() {
338
- const { cost: r } = Me.calculateDefaultCost({
339
- item: t.sku,
340
- amount: t.quantity,
341
- measurement: t.measurement,
342
- overrides: {
343
- supplier: p.supplier
344
- },
345
- defaultCurrency: pe()
346
- });
347
- p.updateItem(
348
- {
349
- ...t,
350
- // NOTE: different from PO template, if a default cost is reenabled,
351
- // the total cost will automatically assigned
352
- totalCost: r
353
- },
354
- !1
355
- );
356
- }
357
- });
358
- }
359
- }
360
- );
361
- },
362
- enableSorting: !1
363
- },
364
- {
365
- id: "Delete",
366
- header: "",
367
- cell(i) {
368
- const t = i.row.original;
369
- return Y("div", { class: "flex justify-end" }, [
370
- Y(me.FmButton, {
371
- key: t.sku._id,
372
- class: "delete-button",
373
- type: "button",
374
- icon: "delete",
375
- variant: "tertiary",
376
- size: "md",
377
- disabled: p.disabled,
378
- onClick: () => {
379
- p.deleteItem(t);
380
- }
381
- })
382
- ]);
383
- },
384
- enableSorting: !1,
385
- size: 40,
386
- meta: {
387
- cellClass: "",
388
- headerClass: ""
389
- }
390
- }
391
- ], k = M(() => d.enableTotalCost && p.transferType === de.enum.purchase ? F : F.filter(
392
- (i) => i.id !== "Cost"
393
- /* Cost */
394
- )), y = M(() => ({
395
- ...p.items.reduce((t, s) => {
396
- const { cost: a } = h(s);
397
- return Me.add([t, a]);
398
- }, Me.reset()),
399
- currency: p.items[0] ? h(p.items[0]).cost.currency : pe()
400
- }));
401
- return {
402
- columnDefs: k,
403
- totalCost: y
404
- };
405
- }
406
- const As = { class: "flex flex-col gap-8 px-16 xs:px-4 sm:px-4 py-4 items-center" }, Es = { class: "fm-typo-en-body-lg-600 xs:fm-typo-en-body-md-600 mr-auto xs:w-full" }, Ms = { class: "w-[450px] xs:w-full flex" }, qs = { class: "fm-typo-en-body-md-400 whitespace-nowrap" }, Us = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Dt = /* @__PURE__ */ ne({
407
- __name: "SupplierPriceHistory",
408
- props: {
409
- prices: {}
410
- },
411
- setup(p) {
412
- const b = Je();
413
- function u(d) {
414
- return b.suppliers.find((_) => _._id === d);
415
- }
416
- return (d, _) => (x(), T("div", As, [
417
- (x(!0), T(re, null, fe(Object.keys(d.prices), (n) => {
418
- var g;
419
- return x(), T("div", {
420
- key: n,
421
- class: "flex items-center gap-12 xs:gap-4 xs:flex-wrap w-full"
422
- }, [
423
- o("div", Es, I((g = u(n)) == null ? void 0 : g.name), 1),
424
- o("div", Ms, [
425
- (x(!0), T(re, null, fe(d.prices[n].slice(0, 3), (h) => {
426
- var F;
427
- return x(), T("div", {
428
- key: h.date,
429
- class: "flex flex-col w-[150px] xs:flex-1 text-ellipsis cursor-pointer"
430
- }, [
431
- o("div", qs, [
432
- o("span", null, I(h.totalCost ? e(we)(h.totalCost) : "No data"), 1),
433
- _[0] || (_[0] = o("span", { class: "text-fm-color-typo-secondary" }, "/", -1)),
434
- o("span", null, I(e(he)(h.totalUnit, !1)), 1),
435
- o("span", null, I(((F = h.measurement) == null ? void 0 : F.abbrev) ?? h.unit.abbrev), 1)
436
- ]),
437
- o("div", Us, [
438
- o("span", null, "(#" + I(h.seqNumber) + ")", 1),
439
- _[1] || (_[1] = o("span", null, I(" "), -1)),
440
- o("span", null, I(e(Ge)(new Date(h.date))), 1)
441
- ])
442
- ]);
443
- }), 128))
444
- ])
445
- ]);
446
- }), 128))
447
- ]));
448
- }
449
- }), Ns = { class: "flex flex-col gap-8 py-16" }, Bs = { class: "flex items-center" }, zs = { class: "flex-1 flex gap-1 items-center" }, Ls = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, js = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, Hs = { class: "flex gap-8 w-full" }, Qs = { class: "flex-1 flex flex-col gap-4" }, Ys = { class: "flex-1 flex flex-col gap-4" }, Ks = { class: "flex gap-8 w-full" }, Xs = { class: "flex-1 flex flex-col gap-4" }, Zs = {
450
- key: 0,
451
- class: "flex-1 flex flex-col gap-4"
452
- }, Ws = /* @__PURE__ */ ne({
453
- __name: "TransferItem",
454
- props: {
455
- cellByColId: {},
456
- comparePriceBySku: {},
457
- showComparePrice: { type: Boolean },
458
- row: {}
459
- },
460
- setup(p) {
461
- const { t: b } = be();
462
- return (u, d) => {
463
- var g, h, F, k, y, i, t, s, a, r, C, $, c, v, D, q, z, Z, X, B, E, O, P, U, j, J, ae;
464
- const _ = R("FmLabel"), n = R("FmSpacer");
465
- return x(), T("div", Ns, [
466
- o("div", Bs, [
467
- o("div", zs, [
468
- o("span", Ls, " (" + I(u.row.original.sku.code) + ") ", 1),
469
- o("span", js, I(u.row.original.sku.name), 1)
470
- ]),
471
- o("div", null, [
472
- m(e(ce), {
473
- render: (F = (h = (g = u.cellByColId.Delete) == null ? void 0 : g.column) == null ? void 0 : h.columnDef) == null ? void 0 : F.cell,
474
- props: (y = (k = u.cellByColId.Delete) == null ? void 0 : k.getContext) == null ? void 0 : y.call(k)
475
- }, null, 8, ["render", "props"])
476
- ])
477
- ]),
478
- o("div", Hs, [
479
- o("div", Qs, [
480
- m(_, {
481
- label: e(b)(`inventory.transfer.form.items.table.${e(se).Code}`)
482
- }, null, 8, ["label"]),
483
- m(e(ce), {
484
- render: (s = (t = (i = u.cellByColId[e(se).Code]) == null ? void 0 : i.column) == null ? void 0 : t.columnDef) == null ? void 0 : s.cell,
485
- props: (r = (a = u.cellByColId[e(se).Code]) == null ? void 0 : a.getContext) == null ? void 0 : r.call(a)
486
- }, null, 8, ["render", "props"]),
487
- d[0] || (d[0] = o("div", { class: "fm-typo-en-body-md-600 text-fm-color-primary" }, null, -1))
488
- ]),
489
- o("div", Ys, [
490
- m(_, {
491
- label: e(b)(`inventory.transfer.form.items.table.${e(se).Name}`)
492
- }, null, 8, ["label"]),
493
- m(e(ce), {
494
- render: (c = ($ = (C = u.cellByColId[e(se).Name]) == null ? void 0 : C.column) == null ? void 0 : $.columnDef) == null ? void 0 : c.cell,
495
- props: (D = (v = u.cellByColId[e(se).Name]) == null ? void 0 : v.getContext) == null ? void 0 : D.call(v)
496
- }, null, 8, ["render", "props"]),
497
- d[1] || (d[1] = o("div", { class: "fm-typo-en-body-md-600 text-fm-color-primary" }, null, -1))
498
- ])
499
- ]),
500
- o("div", Ks, [
501
- o("div", Xs, [
502
- m(_, {
503
- label: e(b)(`inventory.transfer.form.items.table.${e(se).Amount}`)
504
- }, null, 8, ["label"]),
505
- m(e(ce), {
506
- render: (Z = (z = (q = u.cellByColId[e(se).Amount]) == null ? void 0 : q.column) == null ? void 0 : z.columnDef) == null ? void 0 : Z.cell,
507
- props: (B = (X = u.cellByColId[e(se).Amount]) == null ? void 0 : X.getContext) == null ? void 0 : B.call(X)
508
- }, null, 8, ["render", "props"]),
509
- d[2] || (d[2] = o("div", { class: "fm-typo-en-body-md-600 text-fm-color-primary" }, null, -1))
510
- ]),
511
- u.cellByColId[e(se).Cost] ? (x(), T("div", Zs, [
512
- m(wt, { "z-index": 50 }, {
513
- default: A(() => [
514
- m(_, {
515
- label: e(b)(`inventory.transfer.form.items.table.${e(se).Cost}2`)
516
- }, null, 8, ["label"])
517
- ]),
518
- _: 1
519
- }),
520
- m(e(ce), {
521
- render: (P = (O = (E = u.cellByColId[e(se).Cost]) == null ? void 0 : E.column) == null ? void 0 : O.columnDef) == null ? void 0 : P.cell,
522
- props: (j = (U = u.cellByColId[e(se).Cost]) == null ? void 0 : U.getContext) == null ? void 0 : j.call(U)
523
- }, null, 8, ["render", "props"]),
524
- d[3] || (d[3] = o("div", { class: "fm-typo-en-body-md-600 text-fm-color-primary" }, null, -1))
525
- ])) : K("", !0)
526
- ]),
527
- u.showComparePrice && Object.keys(u.comparePriceBySku[(J = u.row.original.sku) == null ? void 0 : J._id] ?? {}).length > 0 ? (x(), T(re, { key: 0 }, [
528
- m(n, { class: "h-8" }),
529
- m(Dt, {
530
- prices: u.comparePriceBySku[(ae = u.row.original.sku) == null ? void 0 : ae._id]
531
- }, null, 8, ["prices"])
532
- ], 64)) : K("", !0)
533
- ]);
534
- };
535
- }
536
- });
537
- function Js(p) {
538
- const b = M({
539
- get() {
540
- const n = p.getEffectiveAt();
541
- return n ? new Date(n) : null;
542
- },
543
- set(n) {
544
- p.setEffectiveAt((n == null ? void 0 : n.toISOString()) ?? null);
545
- }
546
- }), u = M({
547
- get() {
548
- return !!b.value;
549
- },
550
- set(n) {
551
- n ? b.value = /* @__PURE__ */ new Date() : b.value = null;
552
- }
553
- }), d = M({
554
- get() {
555
- return b.value === null ? "" : Ge(b.value);
556
- },
557
- set(n) {
558
- n ? b.value = /* @__PURE__ */ new Date(`${n} ${_.value}`) : b.value = null;
559
- }
560
- }), _ = M({
561
- get() {
562
- return b.value === null ? "" : hs(b.value);
563
- },
564
- set(n) {
565
- n ? b.value = /* @__PURE__ */ new Date(`${d.value} ${n}`) : b.value = null;
566
- }
567
- });
568
- return {
569
- backdatePo: b,
570
- backdateSwitch: u,
571
- backdateModel: d,
572
- backdateTimeModel: _
573
- };
574
- }
575
- const Gs = {
576
- width: "24",
577
- height: "24",
578
- viewBox: "0 0 24 24",
579
- fill: "none",
580
- xmlns: "http://www.w3.org/2000/svg"
581
- }, eo = ["fill"], to = ["fill"], so = ["stroke"], oo = ["stroke"], ao = /* @__PURE__ */ ne({
582
- __name: "SparkIcon",
583
- props: {
584
- size: {
585
- type: Number,
586
- default: 24
587
- },
588
- color: {
589
- type: String,
590
- default: "#c7c7cc"
591
- }
592
- },
593
- setup(p) {
594
- return (b, u) => (x(), T("svg", Gs, [
595
- o("path", {
596
- d: "M7.6 7.6C8.17076 6.94229 8.5 5.5 8.5 5.5C8.5 5.5 8.81356 6.87361 9.35714 7.5C9.92948 8.15953 11.5 8.5 11.5 8.5C11.5 8.5 9.92948 8.69761 9.35714 9.35714C8.81356 9.98354 8.5 11.5 8.5 11.5C8.5 11.5 8.32076 10.1888 7.75 9.59091C7.14905 8.96136 5.5 8.5 5.5 8.5C5.5 8.5 6.99905 8.29251 7.6 7.6Z",
597
- fill: p.color
598
- }, null, 8, eo),
599
- o("path", {
600
- d: "M12.2 12.2C13.3415 10.8846 14 8 14 8C14 8 14.6271 10.7472 15.7143 12C16.859 13.3191 20 14 20 14C20 14 16.859 14.3952 15.7143 15.7143C14.6271 16.9671 14 20 14 20C14 20 13.6415 17.3777 12.5 16.1818C11.2981 14.9227 8 14 8 14C8 14 10.9981 13.585 12.2 12.2Z",
601
- fill: p.color
602
- }, null, 8, to),
603
- o("path", {
604
- d: "M7.6 7.6C8.17076 6.94229 8.5 5.5 8.5 5.5C8.5 5.5 8.81356 6.87361 9.35714 7.5C9.92948 8.15953 11.5 8.5 11.5 8.5C11.5 8.5 9.92948 8.69761 9.35714 9.35714C8.81356 9.98354 8.5 11.5 8.5 11.5C8.5 11.5 8.32076 10.1888 7.75 9.59091C7.14905 8.96136 5.5 8.5 5.5 8.5C5.5 8.5 6.99905 8.29251 7.6 7.6Z",
605
- stroke: p.color,
606
- "stroke-width": "1.5",
607
- "stroke-linecap": "round",
608
- "stroke-linejoin": "round"
609
- }, null, 8, so),
610
- o("path", {
611
- d: "M12.2 12.2C13.3415 10.8846 14 8 14 8C14 8 14.6271 10.7472 15.7143 12C16.859 13.3191 20 14 20 14C20 14 16.859 14.3952 15.7143 15.7143C14.6271 16.9671 14 20 14 20C14 20 13.6415 17.3777 12.5 16.1818C11.2981 14.9227 8 14 8 14C8 14 10.9981 13.585 12.2 12.2Z",
612
- stroke: p.color,
613
- "stroke-width": "1.5",
614
- "stroke-linecap": "round",
615
- "stroke-linejoin": "round"
616
- }, null, 8, oo)
617
- ]));
618
- }
619
- }), ro = { class: "flex gap-8 items-center" }, no = { class: "fm-typo-en-body-lg-600 line-clamp-1" }, lo = { class: "w-[343px] px-24 py-16 rounded-lg shadow-light-300 flex flex-col gap-[20px]" }, io = { class: "flex items-center w-full" }, uo = { class: "flex-1" }, co = { class: "fm-typo-en-title-sm-800" }, mo = { class: "flex items-start gap-8" }, po = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, fo = { class: "flex gap-1" }, vo = /* @__PURE__ */ ne({
620
- __name: "ForecastStock",
621
- props: {
622
- templateId: {},
623
- disabled: { type: Boolean },
624
- poItems: {},
625
- templateItems: {}
626
- },
627
- emits: ["update:poItems", "update:forecastAmounts"],
628
- setup(p, { emit: b }) {
629
- const u = p, d = b, _ = N(!1), n = N(7), g = rs(), h = Se(), { t: F } = be();
630
- function k(s, a, r) {
631
- return a != null && s < a && (s = a), r != null && s > r && (s = r), s;
632
- }
633
- function y(s) {
634
- if (!((s == null ? void 0 : s.amount) == null || (s == null ? void 0 : s.precision) == null))
635
- return s.amount / Math.pow(10, s.precision);
636
- }
637
- function i({
638
- sku: s,
639
- code: a,
640
- name: r,
641
- baseAmount: C,
642
- measurement: $,
643
- min: c,
644
- max: v
645
- }) {
646
- if ($) {
647
- const D = $.conversion.amount;
648
- let q = Math.ceil(C / D);
649
- return q = k(q, c, v), {
650
- sku: s,
651
- code: a,
652
- name: r,
653
- quantity: { amount: q, precision: 0 },
654
- measurement: $
655
- };
656
- } else {
657
- const D = Math.ceil(k(C, c, v));
658
- return {
659
- sku: s,
660
- code: a,
661
- name: r,
662
- quantity: { amount: D, precision: 0 },
663
- measurement: null
664
- };
665
- }
666
- }
667
- async function t() {
668
- const s = Xe(1, 8)(String(n.value));
669
- if (typeof s == "string") {
670
- h.open({
671
- message: s,
672
- type: "error"
673
- });
674
- return;
675
- }
676
- _.value = !1, await g.readPurchaseOrder(n.value, u.templateId);
677
- const a = g.purchaseOrderForecast.skus;
678
- if (a.length === 0) {
679
- h.open({
680
- message: F("inventory.transfer.form.items.forecastStock.notAvailable"),
681
- type: "info"
682
- });
683
- return;
684
- }
685
- const r = u.templateItems.reduce(($, c) => {
686
- var z;
687
- const v = (z = u.poItems) == null ? void 0 : z.find((Z) => Z.sku._id === c.sku._id), D = a.find((Z) => Z.id === c.sku._id);
688
- if (!D)
689
- return v && $.push(v), $;
690
- if (!u.templateId && D.amount <= 0) return $;
691
- const q = D.amount ?? y(v == null ? void 0 : v.quantity) ?? 0;
692
- return $.push(
693
- i({
694
- sku: c.sku,
695
- code: c.code,
696
- name: c.name,
697
- baseAmount: q,
698
- measurement: c.measurement || null,
699
- min: y(c.minimumQuantity),
700
- max: y(c.maximumQuantity)
701
- })
702
- ), $;
703
- }, []), C = a.map(($) => {
704
- const c = u.templateItems.find((X) => X.sku._id === $.id);
705
- let v = $.amount, D = 0;
706
- if (c != null && c.measurement) {
707
- const X = y(c.measurement.conversion) ?? 1;
708
- v = Math.ceil($.amount / X);
709
- } else
710
- v = Math.ceil($.amount);
711
- const q = y(c == null ? void 0 : c.minimumQuantity) ?? 0, z = y(c == null ? void 0 : c.maximumQuantity) ?? 1 / 0, Z = v < q || v > z ? "error" : "success";
712
- return { skuId: $.id, amount: v, precision: D, helperState: Z };
713
- });
714
- d("update:poItems", r), d("update:forecastAmounts", C);
715
- }
716
- return (s, a) => {
717
- const r = R("FmButton"), C = R("FmIcon"), $ = R("FmStepperField"), c = R("FmPopover");
718
- return x(), oe(c, {
719
- disabled: s.disabled,
720
- class: "flex",
721
- "show-popover": _.value,
722
- onPopoverChanged: a[3] || (a[3] = (v) => _.value = v)
723
- }, {
724
- "popover-button": A(() => [
725
- m(r, {
726
- label: "unused",
727
- variant: "secondary",
728
- "text-color": s.disabled ? "disabled" : "primary",
729
- "bg-color": "transparent",
730
- "border-color": s.disabled ? "disabled" : "primary",
731
- disabled: s.disabled
732
- }, {
733
- default: A(() => [
734
- o("div", ro, [
735
- m(ao, {
736
- size: 24,
737
- color: s.disabled ? "#c7c7cc" : "#ff7823"
738
- }, null, 8, ["color"]),
739
- o("div", no, I(e(F)("inventory.transfer.form.items.forecastStock.title")), 1)
740
- ])
741
- ]),
742
- _: 1
743
- }, 8, ["text-color", "border-color", "disabled"])
744
- ]),
745
- default: A(() => [
746
- o("div", lo, [
747
- o("div", io, [
748
- o("div", uo, [
749
- m(Ss, { "z-index": 99 }, {
750
- default: A(() => [
751
- o("p", co, I(e(F)("inventory.transfer.form.items.forecastStock.title")), 1)
752
- ]),
753
- _: 1
754
- })
755
- ]),
756
- m(r, {
757
- icon: "close",
758
- size: "md",
759
- variant: "tertiary",
760
- onClick: a[0] || (a[0] = (v) => _.value = !1)
761
- })
762
- ]),
763
- m($, {
764
- modelValue: n.value,
765
- "onUpdate:modelValue": a[1] || (a[1] = (v) => n.value = v),
766
- label: e(F)("inventory.transfer.form.items.forecastStock.days"),
767
- rules: [e(Xe)(1, 8)]
768
- }, {
769
- "helper-text": A(() => [
770
- o("div", mo, [
771
- m(C, {
772
- name: "warning",
773
- size: "sm",
774
- class: "text-fm-color-system-warning-300"
775
- }),
776
- o("div", po, I(e(F)("inventory.transfer.form.items.forecastStock.replace")), 1)
777
- ])
778
- ]),
779
- _: 1
780
- }, 8, ["modelValue", "label", "rules"]),
781
- o("div", fo, [
782
- a[4] || (a[4] = o("div", { class: "grow" }, null, -1)),
783
- m(r, {
784
- label: e(F)("common.cancel"),
785
- variant: "tertiary",
786
- onClick: a[2] || (a[2] = (v) => _.value = !1)
787
- }, null, 8, ["label"]),
788
- m(r, {
789
- label: e(F)("inventory.transfer.form.items.forecastStock.generate"),
790
- onClick: t
791
- }, null, 8, ["label"])
792
- ])
793
- ])
794
- ]),
795
- _: 1
796
- }, 8, ["disabled", "show-popover"]);
797
- };
798
- }
799
- });
800
- function yo() {
801
- const p = Se(), b = et(), u = N(!1);
802
- ye(u, (g) => {
803
- g && (_.value = !0, d().finally(() => {
804
- _.value = !1;
805
- }));
806
- });
807
- async function d() {
808
- try {
809
- const { startDate: g, endDate: h } = xs(6), y = (await b.getPurchaseOrders({ start: g, end: h })).filter(
810
- (i) => {
811
- var t, s;
812
- return i.status === Ht.enum.COMPLETE && ((t = i.supplier) == null ? void 0 : t.internal) !== "warehouse" && ((s = i.supplier) == null ? void 0 : s.internal) !== "restaurant";
813
- }
814
- ).reduce((i, t) => {
815
- const s = new Date(Qt(t._id)), a = t.supplier._id;
816
- for (const r of t.items) {
817
- if (!r.totalCost) continue;
818
- const C = i[r.sku._id] ?? {}, $ = C[a] ?? [];
819
- $.push({
820
- date: s.toISOString(),
821
- totalUnit: r.quantity,
822
- totalCost: r.totalCost,
823
- unit: r.sku.unit,
824
- measurement: r.measurement,
825
- seqNumber: t.seqNumber
826
- }), C[a] = $, i[r.sku._id] = C;
827
- }
828
- return i;
829
- }, {});
830
- n.value = y;
831
- } catch {
832
- p.open({
833
- title: "Something went wrong",
834
- message: "Cannot retrieve supplier purchase history. Please try again."
835
- }), u.value = !1;
836
- }
837
- }
838
- const _ = N(!1), n = N({});
839
- return {
840
- comparePricesToggle: u,
841
- comparePriceFetching: _,
842
- comparePriceBySku: n
843
- };
844
- }
845
- const bo = { class: "fm-typo-body-md-400 line-clamp-2 w-full" }, go = { key: 0 }, _o = ["colspan"], ho = /* @__PURE__ */ ne({
846
- __name: "TransferItemTable",
847
- props: {
848
- templateItem: {},
849
- row: {},
850
- comparePriceBySku: {},
851
- showComparePrice: { type: Boolean },
852
- disabled: { type: Boolean }
853
- },
854
- emits: ["update:item"],
855
- setup(p) {
856
- function b(u) {
857
- return u.column.columnDef.meta;
858
- }
859
- return (u, d) => {
860
- var _, n;
861
- return x(), T(re, null, [
862
- o("tr", {
863
- class: W(["border-b border-fm-color-neutral-gray-100 hover:bg-fm-color-opacity-sm", {
864
- "bg-fm-color-neutral-gray-100": u.row.getIsSelected()
865
- }])
866
- }, [
867
- (x(!0), T(re, null, fe(u.row.getVisibleCells(), (g) => {
868
- var h, F, k, y;
869
- return x(), T("td", {
870
- key: g.id,
871
- class: W(["h-[56px] text-fm-color-typo-primary", ((h = b(g)) == null ? void 0 : h.cellClass) ?? "px-16"]),
872
- style: xt({
873
- width: (F = b(g)) == null ? void 0 : F.width,
874
- maxWidth: (k = b(g)) == null ? void 0 : k.maxWidth,
875
- textAlign: ((y = b(g)) == null ? void 0 : y.textAlign) ?? "left"
876
- })
877
- }, [
878
- o("span", bo, [
879
- m(e(ce), {
880
- render: g.column.columnDef.cell,
881
- props: g.getContext()
882
- }, null, 8, ["render", "props"])
883
- ])
884
- ], 6);
885
- }), 128))
886
- ], 2),
887
- u.showComparePrice && Object.keys(u.comparePriceBySku[(_ = u.row.original.sku) == null ? void 0 : _._id] ?? {}).length > 0 ? (x(), T("tr", go, [
888
- o("td", {
889
- colspan: u.row.getVisibleCells().length
890
- }, [
891
- m(Dt, {
892
- prices: u.comparePriceBySku[(n = u.row.original.sku) == null ? void 0 : n._id]
893
- }, null, 8, ["prices"])
894
- ], 8, _o)
895
- ])) : K("", !0)
896
- ], 64);
897
- };
898
- }
899
- }), xo = {
900
- key: 0,
901
- class: "flex flex-col gap-8"
902
- }, ko = { class: "flex flex-col gap-4" }, Co = { class: "flex items-center gap-4" }, wo = {
903
- key: 0,
904
- class: "fm-typo-en-body-sm-400 text-fm-color-typo-error"
905
- }, So = /* @__PURE__ */ ne({
906
- __name: "NetSuiteField",
907
- props: {
908
- required: { type: Boolean },
909
- disabled: { type: Boolean },
910
- subsidiaryOptional: { type: Boolean },
911
- supplier: {},
912
- setting: {},
913
- items: {},
914
- onChange: { type: Function }
915
- },
916
- emits: ["netsuite:ready"],
917
- setup(p, { emit: b }) {
918
- const u = Te(), d = p, _ = b, { t: n } = Fs(), g = N(!1), h = N();
919
- function F() {
920
- var s, a, r, C;
921
- if (!d.supplier) return;
922
- d.supplier.internal ? h.value = u.getNetSuiteLocation(
923
- `${d.supplier.internal}_${d.supplier._id}`
924
- ) : h.value = u.getNetSuiteVendor(d.supplier._id);
925
- const i = d.supplier.internal ? u.getLocationSubsidiary((s = h.value) == null ? void 0 : s.netSuiteId).id : (a = h.value) == null ? void 0 : a.subsidiaryId, t = d.supplier.internal ? (r = u.currentLocationSubsidiary()) == null ? void 0 : r.id : (C = u.currentVendorSubsidiary(d.supplier._id)) == null ? void 0 : C.id;
926
- g.value = !(!u.isEnabled || i && u.isEnabled && i == t);
927
- }
928
- ye(
929
- () => d.supplier,
930
- () => {
931
- d.subsidiaryOptional && F();
932
- },
933
- { deep: !0 }
934
- ), Ze(() => {
935
- let i = {
936
- id: "",
937
- subsidiary: { id: "", name: "" },
938
- errors: []
939
- };
940
- if (u.isReady) {
941
- if (!u.isEnabled || !d.required) {
942
- _("netsuite:ready", i);
943
- return;
944
- }
945
- try {
946
- const t = u.currentLocationSubsidiary();
947
- d.setting ? i = {
948
- ...d.setting,
949
- subsidiary: {
950
- id: t.id || "",
951
- name: t.name
952
- }
953
- } : i = {
954
- ...i,
955
- subsidiary: {
956
- id: t.id || "",
957
- name: t.name
958
- }
959
- };
960
- const s = u.getAvailableItems(t.id), a = d.items.filter((r) => {
961
- if (r.measurement != null) {
962
- const C = u.getAvailableMeasurements(
963
- r.sku._id,
964
- t.id
965
- );
966
- return s.includes(r.sku._id) && C.includes(r.measurement.id);
967
- }
968
- return s.includes(r.sku._id);
969
- }).map((r) => r.sku._id);
970
- d.onChange(
971
- d.items.filter((r) => a.includes(r.sku._id)),
972
- i
973
- );
974
- } finally {
975
- F(), g.value ? d.subsidiaryOptional && _("netsuite:ready", i) : _("netsuite:ready", i);
976
- }
977
- }
978
- });
979
- const k = M(
980
- () => d.supplier.internal ? u.currentLocationSubsidiary() : u.currentVendorSubsidiary(d.supplier._id)
981
- ), y = M(() => {
982
- var i, t;
983
- return h.value == null ? `Cannot find the NetSuite location for "${d.supplier.name}"` : `The subsidiary of the request
984
- location is ${(t = u.getLocationSubsidiary((i = h.value) == null ? void 0 : i.netSuiteId)) == null ? void 0 : t.fullName}`;
985
- });
986
- return (i, t) => {
987
- const s = R("FmLabel"), a = R("FmIcon"), r = R("FmField"), C = R("FmTooltip");
988
- return e(u).isEnabled && d.required ? (x(), T("div", xo, [
989
- m(s, {
990
- label: `NetSuite ${e(n)("inventory.transfer.form.netsuite.subsidiary")}`
991
- }, null, 8, ["label"]),
992
- o("div", ko, [
993
- m(C, {
994
- "z-index": 51,
995
- placement: "left",
996
- disabled: i.disabled
997
- }, {
998
- content: A(() => t[0] || (t[0] = [
999
- Ce("This field is locked and based on the location of the request.")
1000
- ])),
1001
- default: A(() => [
1002
- m(r, null, {
1003
- default: A(() => {
1004
- var $;
1005
- return [
1006
- o("div", Co, [
1007
- m(a, {
1008
- name: "lock_outline",
1009
- size: "sm",
1010
- color: i.disabled ? "neutral-gray-200" : "neutral-gray-400"
1011
- }, null, 8, ["color"]),
1012
- o("div", {
1013
- class: W([i.disabled ? "text-fm-color-typo-disabled" : ""])
1014
- }, I(($ = k.value) == null ? void 0 : $.fullName), 3)
1015
- ])
1016
- ];
1017
- }),
1018
- _: 1
1019
- })
1020
- ]),
1021
- _: 1
1022
- }, 8, ["disabled"]),
1023
- g.value ? (x(), T("div", wo, I(y.value), 1)) : K("", !0)
1024
- ])
1025
- ])) : K("", !0);
1026
- };
1027
- }
1028
- });
1029
- function ve(p) {
1030
- const b = Mt(p);
1031
- if (Array.isArray(b))
1032
- return b.map(ve);
1033
- if (b !== null && typeof b == "object") {
1034
- const u = {};
1035
- for (const d in b)
1036
- Object.prototype.hasOwnProperty.call(b, d) && (u[d] = ve(b[d]));
1037
- return u;
1038
- }
1039
- return b;
1040
- }
1041
- const Ye = {
1042
- set: "set",
1043
- add: "add",
1044
- delete: "delete"
1045
- };
1046
- function bt(p) {
1047
- return {
1048
- dbName: p.dbName,
1049
- type: p.type,
1050
- name: p.name,
1051
- acceptRequest: p.acceptRequest ?? !1,
1052
- doc: p.doc
1053
- };
1054
- }
1055
- function gt(p, b, u, d, _) {
1056
- const n = ve(p.suppliers ?? []), g = ve(b.allLocations ?? []).map(bt), h = b._currentLocation ? bt(ve(b._currentLocation)) : null, F = u.inventory ? [ve(u.inventory)] : [], k = d.state.setting ? ve(d.state.setting) : null, y = ve(_.surcharges ?? []);
1057
- return {
1058
- suppliers: n,
1059
- locations: g,
1060
- currentLocation: h,
1061
- inventoryDoc: F,
1062
- netSuiteSetting: k,
1063
- surcharges: y
1064
- };
1065
- }
1066
- function Fo() {
1067
- const p = Je(), b = Ue(), u = Ne(), d = Te(), _ = Ft(), n = gt(
1068
- p,
1069
- b,
1070
- u,
1071
- d,
1072
- _
1073
- ), g = pt(bs({ env: n }));
1074
- g.value.setUsePartialUpdates(!0);
1075
- const h = pt(g.value.state()), F = (t) => {
1076
- h.value = t;
1077
- };
1078
- g.value.addListener(F);
1079
- const k = (t, s, a) => {
1080
- switch (t) {
1081
- case Ye.set:
1082
- ft(h.value, s, a);
1083
- break;
1084
- case Ye.add:
1085
- Kt(h.value, s, a);
1086
- break;
1087
- case Ye.delete:
1088
- Yt(h.value, s);
1089
- break;
1090
- default:
1091
- console.warn(`Unknown partial update operation: ${t}, falling back to 'set'`), ft(h.value, s, a);
1092
- }
1093
- s !== "remark" && s !== "ref" && Ut(h);
1094
- };
1095
- g.value.addPartialListener(k);
1096
- function y() {
1097
- const t = gt(
1098
- p,
1099
- b,
1100
- u,
1101
- d,
1102
- _
1103
- );
1104
- g.value.updateFullEnv(t), h.value = g.value.state();
1105
- }
1106
- ye(
1107
- [
1108
- () => p.suppliers,
1109
- () => b.allLocations,
1110
- () => b._currentLocation,
1111
- () => u.inventory,
1112
- () => d.state.setting,
1113
- () => _.surcharges
1114
- ],
1115
- () => {
1116
- y();
1117
- },
1118
- { deep: !0 }
1119
- ), qt(() => {
1120
- g.value.removeListener(F), g.value.removePartialListener(k);
1121
- });
1122
- function i(t) {
1123
- var s;
1124
- if (t != null && t._id) {
1125
- g.value.loadPurchaseOrder(t);
1126
- return;
1127
- }
1128
- if (!Be().mustUsePoTemplate) {
1129
- g.value.init();
1130
- return;
1131
- }
1132
- t != null && t.template && ((s = t.templateDoc) != null && s.purchaseOrder) ? (t.items = t.templateDoc.purchaseOrder.items, g.value.initFromTemplate(t)) : g.value.initOutletToOutlet();
1133
- }
1134
- return {
1135
- controller: g,
1136
- state: h,
1137
- init: i
1138
- };
1139
- }
1140
- const $o = { class: "flex flex-col gap-4" }, Io = { class: "flex items-center gap-8 overflow-x-auto pb-12" }, Do = { class: "flex flex-col gap-16" }, To = { class: "flex flex-col gap-24" }, Po = { class: "flex flex-col gap-8" }, Vo = { class: "flex flex-col gap-4" }, Ro = { class: "flex items-center gap-4" }, Oo = { class: "flex flex-col gap-8" }, Ao = { class: "flex flex-col gap-4" }, Eo = { class: "flex items-center gap-4" }, Mo = {
1141
- key: 3,
1142
- class: "p-16 border border-fm-color-neutral-gray-300 fm-corner-radius-md flex flex-col"
1143
- }, qo = {
1144
- key: 0,
1145
- class: "flex-1 flex gap-8 h-48 xs:flex-col xs:pt-16 sm:flex-col sm:pt-16"
1146
- }, Uo = { class: "flex-1" }, No = { class: "flex-1" }, Bo = {
1147
- key: 1,
1148
- class: "flex items-center gap-4"
1149
- }, zo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary translate-y-[1px]" }, Lo = { class: "flex flex-col gap-16" }, jo = { class: "flex-1 gap-8 fm-typo-en-title-sm-600" }, Ho = { class: "flex gap-8" }, Qo = { key: 0 }, Yo = {
1150
- key: 0,
1151
- class: "flex justify-end p-16 border-t border-fm-color-neutral-gray-300"
1152
- }, Ko = { class: "flex items-center gap-16" }, Xo = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-secondary" }, Zo = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, Wo = {
1153
- key: 1,
1154
- class: "flex flex-col gap-16"
1155
- }, Jo = { class: "flex items-center gap-8" }, Go = { class: "flex-1 gap-8 fm-typo-en-title-sm-600" }, ea = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mb-8" }, ta = { class: "flex flex-col gap-8 border border-fm-color-neutral-gray-300 fm-corner-radius-md overflow-hidden" }, sa = { class: "flex flex-col gap-4 flex-1" }, oa = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, aa = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, ra = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary whitespace-nowrap ml-16" }, na = /* @__PURE__ */ ne({
1156
- __name: "TransferFormWithController",
1157
- props: {
1158
- modelValue: {},
1159
- request: {},
1160
- disabled: { type: Boolean },
1161
- suppliers: {},
1162
- skus: {},
1163
- lastClosingDate: {}
1164
- },
1165
- emits: ["validation-success", "form:ready"],
1166
- setup(p, { expose: b, emit: u }) {
1167
- const d = p, _ = u, { t: n } = be(), g = Ue(), h = Ne(), F = Ft(), k = Be(), y = It(), { breakpoints: i } = We(), t = M(() => i.value.xs || i.value.sm), s = Fo();
1168
- s.init(d.modelValue);
1169
- const { controller: a, state: r } = s, C = Nt({
1170
- value: !1
1171
- }), $ = N(!1), c = N(0), v = N([]), D = M(
1172
- () => {
1173
- var l;
1174
- return ((l = d.modelValue) == null ? void 0 : l.templateDoc) ?? y.templates.find((f) => {
1175
- var L;
1176
- return f._id === ((L = d.modelValue) == null ? void 0 : L.template);
1177
- });
1178
- }
1179
- ), q = M(() => r.value.status === "DRAFT" || !r.value.rev), z = M(
1180
- () => {
1181
- var l;
1182
- return ((l = r.value.items) == null ? void 0 : l.map((f) => f.item)) || [];
1183
- }
1184
- );
1185
- Ze(async () => {
1186
- await F.browse(), $.value = !0;
1187
- }), ye([$, C], ([l, f], [L, Q]) => {
1188
- f.value && Q.value && _("form:ready");
1189
- });
1190
- const Z = M(
1191
- () => g.currentLocation.type === Xt.restaurant
1192
- ), X = ms(), B = Cs(
1193
- () => r.value,
1194
- (l) => {
1195
- a.value.selectSupplier(l.supplier._id);
1196
- },
1197
- !0,
1198
- !k.businessSupplierOnly
1199
- ), E = M({
1200
- get() {
1201
- var l;
1202
- return typeof ((l = r.value.supplier) == null ? void 0 : l.internal) == "string" ? de.enum.transfer : de.enum.purchase;
1203
- },
1204
- set(l) {
1205
- a.value.selectType(l);
1206
- }
1207
- }), O = M(() => {
1208
- let l = B.transferLocationOptions.value;
1209
- return k.mustUsePoTemplate && !r.value.template && (l = l.filter((f) => {
1210
- var L;
1211
- return (L = f.sublabel) == null ? void 0 : L.startsWith("restaurant");
1212
- })), l;
1213
- }), P = M({
1214
- get() {
1215
- var l;
1216
- return (l = r.value.supplier) == null ? void 0 : l._id;
1217
- },
1218
- set(l) {
1219
- B.transferLocationModel.value = l;
1220
- }
1221
- }), U = M({
1222
- get() {
1223
- return r.value.remark ?? "";
1224
- },
1225
- set(l) {
1226
- a.value.addRemark(l ?? "");
1227
- }
1228
- }), j = M({
1229
- get() {
1230
- return r.value.ref ?? "";
1231
- },
1232
- set(l) {
1233
- a.value.addReference(l ?? "");
1234
- }
1235
- }), { backdatePo: J, backdateSwitch: ae, backdateModel: S, backdateTimeModel: w } = Js({
1236
- getEffectiveAt() {
1237
- return r.value.effectiveAt;
1238
- },
1239
- setEffectiveAt(l) {
1240
- a.value.setEffectiveAt(l);
1241
- }
1242
- }), { comparePricesToggle: H, comparePriceFetching: ue, comparePriceBySku: le } = yo(), G = N();
1243
- b({
1244
- validateInputs: () => {
1245
- var l, f;
1246
- (f = (l = G.value) == null ? void 0 : l.validateInputs) == null || f.call(l);
1247
- },
1248
- resetInputsValidation: () => {
1249
- var l, f;
1250
- (f = (l = G.value) == null ? void 0 : l.resetInputsValidation) == null || f.call(l);
1251
- },
1252
- resetInputs: () => {
1253
- var l, f;
1254
- (f = (l = G.value) == null ? void 0 : l.resetInputs) == null || f.call(l);
1255
- },
1256
- getFormData: () => {
1257
- a.value.prepareForSubmit();
1258
- const l = !!(r.value.id && r.value.rev);
1259
- let f;
1260
- return l ? f = a.value.toUpdateData() : f = a.value.toCreateData(), f;
1261
- }
1262
- });
1263
- const xe = M(() => ({
1264
- updateItem: (l, f) => {
1265
- const L = Zt.parse(l), Q = a.value.toFdtoPOItem(L), te = a.value.getSkuInfo(l.sku), ie = {
1266
- ...Q,
1267
- isCustomCost: f ?? te.isCustomCost
1268
- };
1269
- a.value.updateSkuInfo(ie);
1270
- },
1271
- deleteItem: (l) => {
1272
- a.value.removeSku(l.sku);
1273
- }
1274
- })), ke = Os({
1275
- formController: a.value,
1276
- updateItem: (l, f) => xe.value.updateItem(l, f),
1277
- deleteItem: (l) => xe.value.deleteItem(l),
1278
- get supplier() {
1279
- return r.value.supplier;
1280
- },
1281
- get items() {
1282
- return z.value;
1283
- },
1284
- get transferType() {
1285
- return E.value;
1286
- },
1287
- get template() {
1288
- return D.value;
1289
- },
1290
- get disabled() {
1291
- return d.disabled;
1292
- },
1293
- get forecastAmounts() {
1294
- return v.value;
1295
- }
1296
- }), Pe = M(() => ke.columnDefs.value);
1297
- function Ve() {
1298
- const l = a.value.getSkuOptions(), f = z.value.map((Q) => Q.sku._id), L = [
1299
- {
1300
- type: "string",
1301
- key: "tags",
1302
- entity: "item",
1303
- values: ["Inactive", "Active"]
1304
- }
1305
- ];
1306
- X.open({
1307
- title: n("inventory.transfer.form.items.selectItem"),
1308
- closeButton: !0,
1309
- contentComponent: _s,
1310
- contentComponentProps: {
1311
- modelValue: f,
1312
- items: l,
1313
- virtualScroll: !0,
1314
- filterAttributes: L
1315
- },
1316
- primaryActions: {
1317
- text: n("common.confirm"),
1318
- close: !0
1319
- },
1320
- secondaryActions: {
1321
- text: n("common.close"),
1322
- close: !0,
1323
- variant: "tertiary"
1324
- }
1325
- }).onPrimary((Q) => {
1326
- a.value.applySelectedSku(new Set(Q));
1327
- });
1328
- }
1329
- function ze(l) {
1330
- return l;
1331
- }
1332
- const Re = M(() => {
1333
- var l;
1334
- return D.value ? ((l = D.value) == null ? void 0 : l.purchaseOrder.items) || [] : h.skus.map((f) => ({
1335
- quantity: {
1336
- amount: 0,
1337
- precision: 0
1338
- },
1339
- name: f.name,
1340
- code: f.code,
1341
- sku: f,
1342
- quantityStep: {
1343
- amount: 0,
1344
- precision: 0
1345
- },
1346
- measurement: f.trackingMeasurement ? f.unit.measurements.find((L) => L.id === f.trackingMeasurement) : null
1347
- }));
1348
- }), ge = M(() => {
1349
- const l = [];
1350
- return (!k.mustUsePoTemplate || k.mustUsePoTemplate && r.value.template) && l.push({
1351
- label: n("inventory.transfer.form.type.purchase"),
1352
- value: de.enum.purchase
1353
- }), l.push({
1354
- label: n("inventory.transfer.form.type.transfer"),
1355
- value: de.enum.transfer
1356
- }), l;
1357
- }), Fe = M(
1358
- () => {
1359
- var l;
1360
- return ((l = r.value.items) == null ? void 0 : l.every((f) => f.item.quantity.amount <= 0)) ?? !0;
1361
- }
1362
- );
1363
- function Oe(l) {
1364
- if (!l) return "";
1365
- const f = [];
1366
- if (l.$and && Array.isArray(l.$and))
1367
- for (const L of l.$and) {
1368
- if (L.supplierId && L.supplierId.$eq) {
1369
- const Q = O.value.find((te) => te.value === L.supplierId.$eq);
1370
- Q && f.push(`Supplier: ${Q.label}`);
1371
- }
1372
- if (L.totalCost) {
1373
- const Q = L.totalCost;
1374
- let te = "", ie = 0;
1375
- if (Q.$lt !== void 0 ? (te = "<", ie = Q.$lt) : Q.$lte !== void 0 ? (te = "≤", ie = Q.$lte) : Q.$gt !== void 0 ? (te = ">", ie = Q.$gt) : Q.$gte !== void 0 ? (te = "≥", ie = Q.$gte) : Q.$eq !== void 0 && (te = "=", ie = Q.$eq), te) {
1376
- const Ae = pe();
1377
- f.push(`Total cost ${te} ${Ae} ${ie.toFixed(2)}`);
1378
- }
1379
- }
1380
- }
1381
- return f.length > 0 ? f.join(" and ") : "Always applied";
1382
- }
1383
- return (l, f) => {
1384
- var ot, at;
1385
- const L = R("FmChip"), Q = R("FmLabel"), te = R("FmIcon"), ie = R("FmField"), Ae = R("FmTooltip"), tt = R("FmSelect"), Tt = R("FmTextField"), Pt = R("FmTextarea"), st = R("FmSwitch"), Vt = R("FmDatePicker"), Rt = R("FmTimePicker"), Le = R("FmFormGroup"), Ot = R("FmButton"), At = R("FmTable"), Et = R("FmForm");
1386
- return x(), T("div", $o, [
1387
- o("div", Io, [
1388
- (ot = d.modelValue) != null && ot.template ? (x(), oe(L, {
1389
- key: 0,
1390
- variant: l.disabled ? "warning" : void 0,
1391
- label: `${e(n)("inventory.transfer.template.title")}: ${((at = D.value) == null ? void 0 : at.name) ?? e(n)("inventory.transfer.form.loading")}`,
1392
- icon: "summarize",
1393
- compact: ""
1394
- }, null, 8, ["variant", "label"])) : K("", !0),
1395
- m(L, {
1396
- label: e(g).currentLocation.name,
1397
- icon: "storefront",
1398
- compact: ""
1399
- }, null, 8, ["label"]),
1400
- l.lastClosingDate ? (x(), oe(L, {
1401
- key: 1,
1402
- label: `${e(n)("inventory.transfer.form.lastClosing")}: ${e(Ge)(l.lastClosingDate)} ${e(ks)(l.lastClosingDate)}`,
1403
- icon: "calendar_month",
1404
- compact: ""
1405
- }, null, 8, ["label"])) : K("", !0)
1406
- ]),
1407
- m(Et, {
1408
- ref_key: "formRef",
1409
- ref: G,
1410
- class: "flex flex-col gap-32",
1411
- disabled: l.disabled,
1412
- onValidationFailed: console.log,
1413
- onValidationSuccess: f[14] || (f[14] = (je) => _("validation-success"))
1414
- }, {
1415
- default: A(() => {
1416
- var je, rt, nt, lt, it, ut, dt;
1417
- return [
1418
- o("div", Do, [
1419
- o("div", To, [
1420
- (je = d.modelValue) != null && je.template ? (x(), T(re, { key: 0 }, [
1421
- o("div", Po, [
1422
- m(Q, {
1423
- label: e(n)("inventory.transfer.form.type.title")
1424
- }, null, 8, ["label"]),
1425
- o("div", Vo, [
1426
- m(Ae, {
1427
- "z-index": 51,
1428
- placement: "left",
1429
- disabled: l.disabled
1430
- }, {
1431
- content: A(() => f[15] || (f[15] = [
1432
- Ce("This field is locked from template.")
1433
- ])),
1434
- default: A(() => [
1435
- m(ie, null, {
1436
- default: A(() => [
1437
- o("div", Ro, [
1438
- m(te, {
1439
- name: "lock_outline",
1440
- size: "sm",
1441
- color: l.disabled ? "neutral-gray-200" : "neutral-gray-400"
1442
- }, null, 8, ["color"]),
1443
- o("div", {
1444
- class: W({ "text-fm-color-typo-disabled": l.disabled })
1445
- }, I(e(n)(`inventory.transfer.form.type.${E.value.toLocaleLowerCase("en-us")}`)), 3)
1446
- ])
1447
- ]),
1448
- _: 1
1449
- })
1450
- ]),
1451
- _: 1
1452
- }, 8, ["disabled"]),
1453
- o("div", {
1454
- class: W([
1455
- "fm-typo-en-body-sm-400",
1456
- l.disabled ? "text-fm-color-typo-disabled" : "text-fm-color-typo-secondary"
1457
- ])
1458
- }, null, 2)
1459
- ])
1460
- ]),
1461
- o("div", Oo, [
1462
- m(Q, {
1463
- label: E.value === e(de).enum.purchase ? e(n)("inventory.transfer.form.purchaseFrom") : e(n)("inventory.transfer.form.transferFrom")
1464
- }, null, 8, ["label"]),
1465
- o("div", Ao, [
1466
- m(Ae, {
1467
- "z-index": 51,
1468
- placement: "left",
1469
- disabled: l.disabled
1470
- }, {
1471
- content: A(() => f[16] || (f[16] = [
1472
- Ce("This field is locked from template.")
1473
- ])),
1474
- default: A(() => [
1475
- m(ie, null, {
1476
- default: A(() => {
1477
- var V;
1478
- return [
1479
- o("div", Eo, [
1480
- m(te, {
1481
- name: "lock_outline",
1482
- size: "sm",
1483
- color: l.disabled ? "neutral-gray-200" : "neutral-gray-400"
1484
- }, null, 8, ["color"]),
1485
- o("div", {
1486
- class: W({ "text-fm-color-typo-disabled": l.disabled })
1487
- }, I((V = O.value.find((ee) => ee.value === P.value)) == null ? void 0 : V.label), 3)
1488
- ])
1489
- ];
1490
- }),
1491
- _: 1
1492
- })
1493
- ]),
1494
- _: 1
1495
- }, 8, ["disabled"])
1496
- ])
1497
- ])
1498
- ], 64)) : (x(), T(re, { key: 1 }, [
1499
- m(tt, {
1500
- label: e(n)("inventory.transfer.form.type.title"),
1501
- "label-mark": "required",
1502
- modelValue: E.value,
1503
- "onUpdate:modelValue": f[0] || (f[0] = (V) => E.value = V),
1504
- items: ge.value,
1505
- rules: [e(qe)(1)(ge.value)]
1506
- }, {
1507
- default: A(() => [
1508
- o("span", {
1509
- class: W([
1510
- "line-clamp-1 fm-typo-en-body-lg-400",
1511
- l.disabled ? "text-fm-color-typo-disabled" : "text-fm-color-typo-primary"
1512
- ])
1513
- }, I(e(Wt)(E.value)), 3)
1514
- ]),
1515
- _: 1
1516
- }, 8, ["label", "modelValue", "items", "rules"]),
1517
- m(tt, {
1518
- label: E.value === e(de).enum.purchase ? e(n)("inventory.transfer.form.purchaseFrom") : e(n)("inventory.transfer.form.transferFrom"),
1519
- "label-mark": "required",
1520
- modelValue: P.value,
1521
- "onUpdate:modelValue": f[1] || (f[1] = (V) => P.value = V),
1522
- items: O.value,
1523
- rules: [e(qe)(1)(O.value)]
1524
- }, {
1525
- "menu-wrapper": A((V) => {
1526
- var ee, $e;
1527
- return [
1528
- m(ws, Ke(V, {
1529
- items: O.value,
1530
- "model-value": ($e = (ee = l.modelValue) == null ? void 0 : ee.supplier) == null ? void 0 : $e._id
1531
- }), null, 16, ["items", "model-value"])
1532
- ];
1533
- }),
1534
- default: A(() => {
1535
- var V;
1536
- return [
1537
- o("span", {
1538
- class: W([
1539
- "line-clamp-1 fm-typo-en-body-lg-400",
1540
- l.disabled ? "text-fm-color-typo-disabled" : "text-fm-color-typo-primary"
1541
- ])
1542
- }, I((V = O.value.find((ee) => ee.value === P.value)) == null ? void 0 : V.label), 3)
1543
- ];
1544
- }),
1545
- _: 1
1546
- }, 8, ["label", "modelValue", "items", "rules"])
1547
- ], 64)),
1548
- m(Tt, {
1549
- label: e(n)("inventory.transfer.form.reference"),
1550
- "label-mark": "optional",
1551
- modelValue: j.value,
1552
- "onUpdate:modelValue": f[2] || (f[2] = (V) => j.value = V)
1553
- }, null, 8, ["label", "modelValue"]),
1554
- m(Pt, {
1555
- label: e(n)("inventory.transfer.form.remark"),
1556
- "label-mark": "optional",
1557
- "max-length": 240,
1558
- modelValue: U.value,
1559
- "onUpdate:modelValue": f[3] || (f[3] = (V) => U.value = V),
1560
- class: W([l.disabled ? "text-fm-color-typo-disabled " : ""])
1561
- }, null, 8, ["label", "modelValue", "class"]),
1562
- $.value ? (x(), oe(So, {
1563
- key: 2,
1564
- required: e(r).template != null || e(r).netSuite != null,
1565
- subsidiaryOptional: e(r).template == null,
1566
- disabled: l.disabled,
1567
- supplier: e(r).supplier,
1568
- setting: e(r).netSuite,
1569
- items: z.value,
1570
- onChange: (V, ee) => {
1571
- e(a).setNetSuiteSetting(ee);
1572
- },
1573
- "onNetsuite:ready": f[4] || (f[4] = (V) => {
1574
- C.value = !0;
1575
- })
1576
- }, null, 8, ["required", "subsidiaryOptional", "disabled", "supplier", "setting", "items", "onChange"])) : K("", !0),
1577
- e(k).enableBackdatePo ? (x(), T("div", Mo, [
1578
- o("div", {
1579
- class: W([
1580
- "flex",
1581
- {
1582
- "flex-col": t.value
1583
- }
1584
- ])
1585
- }, [
1586
- m(st, {
1587
- modelValue: e(ae),
1588
- "onUpdate:modelValue": f[5] || (f[5] = (V) => _e(ae) ? ae.value = V : null),
1589
- label: e(n)("inventory.transfer.form.backdate.title"),
1590
- sublabel: e(n)("inventory.transfer.form.backdate.subtitle"),
1591
- "label-placement": "right",
1592
- disabled: Z.value && !l.lastClosingDate || l.disabled
1593
- }, null, 8, ["modelValue", "label", "sublabel", "disabled"]),
1594
- o("div", {
1595
- class: W({ hidden: t.value, "w-16": !t.value })
1596
- }, null, 2),
1597
- e(ae) ? (x(), T("div", qo, [
1598
- o("div", Uo, [
1599
- m(Vt, {
1600
- modelValue: e(S),
1601
- "onUpdate:modelValue": f[6] || (f[6] = (V) => _e(S) ? S.value = V : null)
1602
- }, null, 8, ["modelValue"])
1603
- ]),
1604
- o("div", No, [
1605
- m(Rt, {
1606
- modelValue: e(w),
1607
- "onUpdate:modelValue": f[7] || (f[7] = (V) => _e(w) ? w.value = V : null)
1608
- }, null, 8, ["modelValue"])
1609
- ])
1610
- ])) : K("", !0)
1611
- ], 2),
1612
- e(J) ? (x(), oe(Le, {
1613
- key: 0,
1614
- modelValue: e(J),
1615
- "onUpdate:modelValue": f[8] || (f[8] = (V) => _e(J) ? J.value = V : null),
1616
- rules: [e(Xe)(new Date(l.lastClosingDate), /* @__PURE__ */ new Date())]
1617
- }, null, 8, ["modelValue", "rules"])) : K("", !0),
1618
- Z.value && !l.lastClosingDate ? (x(), T("div", Bo, [
1619
- m(te, {
1620
- name: "error",
1621
- size: "sm",
1622
- class: "text-fm-color-typo-warning"
1623
- }),
1624
- o("span", zo, I(e(n)("inventory.transfer.form.backdate.error")), 1)
1625
- ])) : K("", !0)
1626
- ])) : K("", !0)
1627
- ])
1628
- ]),
1629
- o("div", Lo, [
1630
- m(Le, {
1631
- "model-value": z.value,
1632
- rules: [e(qe)(1)]
1633
- }, null, 8, ["model-value", "rules"]),
1634
- o("div", {
1635
- class: W([
1636
- "flex gap-16",
1637
- {
1638
- "flex-col items-start": t.value,
1639
- "items-center": !t.value
1640
- }
1641
- ])
1642
- }, [
1643
- o("div", jo, I(e(n)("inventory.transfer.form.items.title")), 1),
1644
- o("div", Ho, [
1645
- m(Ot, {
1646
- disabled: l.disabled,
1647
- label: e(n)("inventory.transfer.form.items.addItem"),
1648
- "prepend-icon": "add",
1649
- variant: "secondary",
1650
- "text-color": "primary",
1651
- "bg-color": "transparent",
1652
- "border-color": "primary",
1653
- onClick: f[9] || (f[9] = (V) => Ve()),
1654
- size: "md"
1655
- }, null, 8, ["disabled", "label"]),
1656
- m(vo, {
1657
- "template-id": e(r).template || void 0,
1658
- "template-items": Re.value,
1659
- "po-items": z.value,
1660
- "onUpdate:forecastAmounts": f[10] || (f[10] = (V) => {
1661
- v.value = V;
1662
- }),
1663
- "onUpdate:poItems": f[11] || (f[11] = (V) => {
1664
- e(a).updateItems(V), c.value++;
1665
- })
1666
- }, null, 8, ["template-id", "template-items", "po-items"])
1667
- ])
1668
- ], 2),
1669
- E.value === e(de).enum.purchase && q.value && e(k).enableTotalCost && z.value.length ? (x(), T("div", Qo, [
1670
- m(st, {
1671
- label: e(ue) ? e(n)("inventory.transfer.form.items.fetchingData") : e(n)("inventory.transfer.form.items.comparePriceHistory"),
1672
- "prepend-icon": "compare_arrows",
1673
- "label-placement": "right",
1674
- "model-value": e(H),
1675
- "onUpdate:modelValue": f[12] || (f[12] = (V) => _e(H) ? H.value = V : null),
1676
- disabled: e(ue) || l.disabled
1677
- }, null, 8, ["label", "model-value", "disabled"])
1678
- ])) : K("", !0),
1679
- m(Le, {
1680
- "model-value": Fe.value,
1681
- rules: [() => Fe.value ? "Must have at least one non-zero item" : !0]
1682
- }, null, 8, ["model-value", "rules"]),
1683
- (x(), oe(At, {
1684
- "column-defs": Pe.value,
1685
- "column-visibility": {
1686
- [e(se).Code]: !(((rt = l.modelValue) == null ? void 0 : rt.template) ?? ((nt = l.modelValue) == null ? void 0 : nt.templateDoc)),
1687
- [e(se).Name]: !(((lt = l.modelValue) == null ? void 0 : lt.template) ?? ((it = l.modelValue) == null ? void 0 : it.templateDoc)),
1688
- [e(se).TemplateName]: !!(((ut = l.modelValue) == null ? void 0 : ut.template) ?? ((dt = l.modelValue) == null ? void 0 : dt.templateDoc))
1689
- },
1690
- "row-data": z.value,
1691
- key: c.value,
1692
- "hide-footer": "",
1693
- "page-size": z.value.length
1694
- }, {
1695
- "table-row": A((V) => {
1696
- var ee, $e, ct, mt;
1697
- return [
1698
- m(ho, {
1699
- "compare-price-by-sku": e(le),
1700
- "show-compare-price": E.value === e(de).enum.purchase && e(H),
1701
- row: V,
1702
- "template-item": (mt = (ct = ($e = (ee = l.modelValue) == null ? void 0 : ee.templateDoc) == null ? void 0 : $e.purchaseOrder) == null ? void 0 : ct.items) == null ? void 0 : mt.find(
1703
- (He) => He.sku._id === V.original.sku._id
1704
- ),
1705
- "onUpdate:item": f[13] || (f[13] = (He) => xe.value.updateItem(He)),
1706
- disabled: l.disabled
1707
- }, null, 8, ["compare-price-by-sku", "show-compare-price", "row", "template-item", "disabled"])
1708
- ];
1709
- }),
1710
- "list-row": A((V) => [
1711
- (x(), oe($t, {
1712
- row: V,
1713
- key: z.value.map((ee) => ee.sku._id).join(".")
1714
- }, {
1715
- default: A((ee) => [
1716
- m(Ws, {
1717
- "compare-price-by-sku": e(le),
1718
- "show-compare-price": E.value === e(de).enum.purchase && e(H),
1719
- row: V,
1720
- "cell-by-col-id": ee
1721
- }, null, 8, ["compare-price-by-sku", "show-compare-price", "row", "cell-by-col-id"])
1722
- ]),
1723
- _: 2
1724
- }, 1032, ["row"]))
1725
- ]),
1726
- _: 1
1727
- }, 8, ["column-defs", "column-visibility", "row-data", "page-size"]))
1728
- ]),
1729
- e(k).enableTotalCost ? (x(), T("div", Yo, [
1730
- o("div", Ko, [
1731
- o("div", Xo, I(e(n)("inventory.transfer.form.surcharges.totalCost")), 1),
1732
- o("div", Zo, I(e(pe)()) + " " + I(e(we)({
1733
- ...e(a).getTotalCosts(),
1734
- currency: e(pe)()
1735
- }).replace(/[^0-9.,]/g, "")), 1)
1736
- ])
1737
- ])) : K("", !0),
1738
- e(a).getMatchedSurcharges().length > 0 ? (x(), T("div", Wo, [
1739
- o("div", Jo, [
1740
- o("div", Go, I(e(n)("inventory.transfer.form.surcharges.title")), 1),
1741
- m(L, {
1742
- label: e(n)("inventory.transfer.form.surcharges.autoApplied"),
1743
- icon: "auto_awesome",
1744
- variant: "info",
1745
- compact: ""
1746
- }, null, 8, ["label"])
1747
- ]),
1748
- o("div", ea, I(e(n)("inventory.transfer.form.surcharges.appliedBased")), 1),
1749
- o("div", ta, [
1750
- (x(!0), T(re, null, fe(e(a).getMatchedSurcharges(), (V, ee) => (x(), T("div", {
1751
- key: ee,
1752
- class: W([
1753
- "p-16 flex items-center justify-between",
1754
- ee !== e(a).getMatchedSurcharges().length - 1 ? "border-b border-fm-color-neutral-gray-300" : ""
1755
- ])
1756
- }, [
1757
- o("div", sa, [
1758
- o("div", oa, I(V.item.name), 1),
1759
- o("div", aa, I(e(n)("inventory.transfer.form.surcharges.appliedBased")) + ": " + I(Oe(V.surcharge.rule)), 1)
1760
- ]),
1761
- o("div", ra, I(e(pe)()) + " " + I(e(we)(V.item.totalCost).replace(/[^0-9.,]/g, "")), 1)
1762
- ], 2))), 128))
1763
- ])
1764
- ])) : K("", !0)
1765
- ];
1766
- }),
1767
- _: 1
1768
- }, 8, ["disabled", "onValidationFailed"])
1769
- ]);
1770
- };
1771
- }
1772
- }), la = { class: "flex items-center" }, ia = { class: "fm-typo-en-title-md-800" }, ua = { class: "flex gap-4" }, da = { class: "fm-typo-en-title-md-600" }, ca = { class: "flex flex-col gap-16" }, ma = { class: "fm-typo-en-body-md-400" }, pa = { class: "max-h-[300px] overflow-y-auto" }, fa = { class: "list-disc pl-16" }, va = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, ya = { class: "flex w-full gap-8 justify-end" }, ba = /* @__PURE__ */ ne({
1773
- __name: "TransferDialog",
1774
- props: {
1775
- mode: {},
1776
- modelValue: {},
1777
- templateId: {},
1778
- show: { type: Boolean },
1779
- lastClosingDate: {}
1780
- },
1781
- emits: ["update:show", "submitted"],
1782
- setup(p, { expose: b, emit: u }) {
1783
- var ae;
1784
- const d = p, _ = u, n = et(), g = It(), h = Se(), F = Je(), k = Ne(), y = Ue(), { t: i } = be(), t = N(!1), s = N(!1), a = N(!1), r = N(!1), C = M(() => {
1785
- var S;
1786
- return ((S = D.value.items) == null ? void 0 : S.filter((w) => w.quantity.amount === 0)) ?? [];
1787
- });
1788
- async function $(S) {
1789
- if (S) {
1790
- s.value = !1;
1791
- try {
1792
- await F.readSuppliers(), s.value = !0;
1793
- } catch {
1794
- h.open({
1795
- title: i("inventory.transfer.form.unableToFetchListOfSuppliers.title"),
1796
- message: i("inventory.transfer.form.unableToFetchListOfSuppliers.message"),
1797
- type: "error"
1798
- });
1799
- }
1800
- }
1801
- }
1802
- y.watchLocation($);
1803
- function c() {
1804
- return {
1805
- remark: void 0,
1806
- ref: void 0,
1807
- stockSnapshotId: void 0,
1808
- effectiveAt: void 0,
1809
- items: [],
1810
- supplier: {
1811
- _rev: void 0,
1812
- email: void 0,
1813
- internal: void 0,
1814
- contactName: void 0,
1815
- phoneNumber: void 0,
1816
- registrationNumber: void 0,
1817
- supplyItems: void 0,
1818
- _id: "",
1819
- name: "",
1820
- address: {
1821
- line2: void 0,
1822
- line1: "",
1823
- state: "",
1824
- city: "",
1825
- postcode: "",
1826
- country: ""
1827
- }
1828
- },
1829
- status: "DRAFT",
1830
- _id: "",
1831
- seqNumber: 0,
1832
- deliveryOrder: [],
1833
- template: d.templateId,
1834
- templateDoc: g.templates.find((w) => w._id === d.templateId)
1835
- };
1836
- }
1837
- const v = St(d, "show"), D = N(d.modelValue ?? c()), q = N(((ae = d.modelValue) == null ? void 0 : ae._id) ?? `${Math.random()}`);
1838
- ye(
1839
- () => d.show,
1840
- (S) => {
1841
- var w;
1842
- S && (a.value = !1, D.value = d.modelValue ?? c(), q.value = ((w = d.modelValue) == null ? void 0 : w._id) ?? `${Math.random()}`);
1843
- }
1844
- );
1845
- const z = M(() => !s.value || !a.value), Z = M(() => {
1846
- switch (d.mode) {
1847
- case Ie.READ:
1848
- return "View transfer";
1849
- case Ie.CREATE:
1850
- return i("inventory.transfer.receiveRequest.create.title");
1851
- case Ie.UPDATE:
1852
- return i("inventory.transfer.receiveRequest.update.title");
1853
- }
1854
- return "";
1855
- }), X = N();
1856
- b({
1857
- validateInputs: () => {
1858
- var S, w;
1859
- (w = (S = X.value) == null ? void 0 : S.validateInputs) == null || w.call(S);
1860
- },
1861
- resetInputsValidation: () => {
1862
- var S, w;
1863
- (w = (S = X.value) == null ? void 0 : S.resetInputsValidation) == null || w.call(S);
1864
- },
1865
- resetInputs: () => {
1866
- var S, w;
1867
- (w = (S = X.value) == null ? void 0 : S.resetInputs) == null || w.call(S);
1868
- }
1869
- });
1870
- async function B() {
1871
- const S = D.value;
1872
- if (t.value = !0, S.items = S.items.filter((w) => w.quantity.amount > 0), !S.items.length) {
1873
- h.open({
1874
- title: "Cannot create order",
1875
- message: "There are no items with non-zero amount in your request.",
1876
- type: "error"
1877
- });
1878
- return;
1879
- }
1880
- (S.supplier.internal === "warehouse" || S.supplier.internal === "restaurant") && (S.items = S.items.map(({ totalCost: w, ...H }) => H));
1881
- try {
1882
- await n.createPurchaseOrder(S), await new Promise((w) => setTimeout(w, 1e3)), h.open({
1883
- title: i("inventory.transfer.receiveRequest.create.success"),
1884
- message: i("inventory.transfer.receiveRequest.create.successMessage"),
1885
- type: "success"
1886
- }), _("update:show", !1), _("submitted");
1887
- } catch (w) {
1888
- h.open({
1889
- title: i("inventory.transfer.receiveRequest.create.error.title"),
1890
- message: i("inventory.transfer.receiveRequest.create.error.message"),
1891
- type: "error"
1892
- }), console.error("Error in creating purchase order", w);
1893
- } finally {
1894
- t.value = !1;
1895
- }
1896
- }
1897
- async function E() {
1898
- const S = D.value;
1899
- if (t.value = !0, S.items = S.items.filter((w) => w.quantity.amount > 0), !S.items.length) {
1900
- h.open({
1901
- title: "Cannot create order",
1902
- message: "There are no items with non-zero amount in your request.",
1903
- type: "error"
1904
- });
1905
- return;
1906
- }
1907
- (S.supplier.internal === "warehouse" || S.supplier.internal === "restaurant") && (S.items = S.items.map(({ totalCost: w, ...H }) => H));
1908
- try {
1909
- await n.updatePurchaseOrder(S), await new Promise((w) => setTimeout(w, 1e3)), h.open({
1910
- title: i("inventory.transfer.receiveRequest.update.success"),
1911
- message: i("inventory.transfer.receiveRequest.update.successMessage"),
1912
- type: "success"
1913
- }), _("update:show", !1), _("submitted");
1914
- } catch (w) {
1915
- h.open({
1916
- title: i("inventory.transfer.receiveRequest.update.error.title"),
1917
- message: i("inventory.transfer.receiveRequest.update.error.message"),
1918
- type: "error"
1919
- }), console.error("Error in updating purchase order", w);
1920
- } finally {
1921
- t.value = !1;
1922
- }
1923
- }
1924
- function O() {
1925
- switch (d.mode) {
1926
- case Ie.CREATE:
1927
- return B();
1928
- case Ie.UPDATE:
1929
- return E();
1930
- }
1931
- }
1932
- function P() {
1933
- var S;
1934
- D.value.items = ((S = D.value.items) == null ? void 0 : S.filter((w) => w.quantity.amount > 0)) ?? [], r.value = !1, j();
1935
- }
1936
- function U() {
1937
- X.value.getFormData && (D.value = {
1938
- ...D.value,
1939
- ...X.value.getFormData()
1940
- });
1941
- }
1942
- function j() {
1943
- var H, ue;
1944
- const S = gs.validatePurchaseOrderItems({
1945
- skusById: k.skuById ?? {},
1946
- items: D.value.items ?? []
1947
- }), w = Object.values(S).flat();
1948
- if (w.length > 0) {
1949
- const le = w[0];
1950
- h.open({
1951
- title: `[Row ${le.index + 1}] "${le.poItem.sku.name}"`,
1952
- message: `${le.message}`,
1953
- type: "error"
1954
- });
1955
- return;
1956
- }
1957
- (ue = (H = X.value) == null ? void 0 : H.validateInputs) == null || ue.call(H);
1958
- }
1959
- function J() {
1960
- if (U(), C.value.length > 0) {
1961
- r.value = !0;
1962
- return;
1963
- }
1964
- j();
1965
- }
1966
- return (S, w) => {
1967
- const H = R("FmButton"), ue = R("FmSideSheet"), le = R("FmDialog");
1968
- return x(), T(re, null, [
1969
- m(ue, {
1970
- modelValue: e(v),
1971
- "onUpdate:modelValue": w[3] || (w[3] = (G) => _e(v) ? v.value = G : null),
1972
- "dismiss-away": "",
1973
- "close-button": "",
1974
- "max-width": 900
1975
- }, {
1976
- "side-sheet-header": A(() => [
1977
- o("div", la, [
1978
- o("div", ia, I(Z.value), 1)
1979
- ])
1980
- ]),
1981
- default: A(() => [
1982
- (x(), oe(na, {
1983
- class: "w-full",
1984
- ref_key: "formRef",
1985
- ref: X,
1986
- "onForm:ready": w[0] || (w[0] = () => a.value = !0),
1987
- onValidationSuccess: O,
1988
- modelValue: D.value,
1989
- "onUpdate:modelValue": w[1] || (w[1] = (G) => D.value = G),
1990
- disabled: t.value || z.value,
1991
- suppliers: e(F).suppliers,
1992
- skus: e(k).skus,
1993
- key: q.value,
1994
- "last-closing-date": S.lastClosingDate
1995
- }, null, 8, ["modelValue", "disabled", "suppliers", "skus", "last-closing-date"]))
1996
- ]),
1997
- "side-sheet-footer": A(() => [
1998
- o("div", ua, [
1999
- m(H, {
2000
- loading: t.value,
2001
- disabled: z.value,
2002
- label: e(i)("common.save"),
2003
- onClick: J
2004
- }, null, 8, ["loading", "disabled", "label"]),
2005
- m(H, {
2006
- disabled: z.value,
2007
- variant: "tertiary",
2008
- label: e(i)("common.close"),
2009
- onClick: w[2] || (w[2] = (G) => _("update:show", !1))
2010
- }, null, 8, ["disabled", "label"])
2011
- ])
2012
- ]),
2013
- _: 1
2014
- }, 8, ["modelValue"]),
2015
- m(le, {
2016
- modelValue: r.value,
2017
- "onUpdate:modelValue": w[5] || (w[5] = (G) => r.value = G),
2018
- overlay: !0
2019
- }, {
2020
- "dialog-header": A(() => [
2021
- o("div", da, I(e(i)("inventory.transfer.template.zeroQuantity.title")), 1)
2022
- ]),
2023
- "dialog-footer": A(() => [
2024
- o("div", ya, [
2025
- m(H, {
2026
- label: e(i)("common.cancel"),
2027
- variant: "tertiary",
2028
- onClick: w[4] || (w[4] = (G) => r.value = !1)
2029
- }, null, 8, ["label"]),
2030
- m(H, {
2031
- label: e(i)("inventory.transfer.template.zeroQuantity.removeAll"),
2032
- variant: "primary",
2033
- "prepend-icon": "delete",
2034
- onClick: P
2035
- }, null, 8, ["label"])
2036
- ])
2037
- ]),
2038
- default: A(() => [
2039
- o("div", ca, [
2040
- o("div", ma, I(e(i)("inventory.transfer.template.zeroQuantity.message", { count: C.value.length })), 1),
2041
- o("div", pa, [
2042
- o("ul", fa, [
2043
- (x(!0), T(re, null, fe(C.value, (G) => (x(), T("li", {
2044
- key: G.sku._id,
2045
- class: "fm-typo-en-body-md-400"
2046
- }, I(G.sku.name) + " (" + I(G.sku.code) + ") ", 1))), 128))
2047
- ])
2048
- ]),
2049
- o("div", va, I(e(i)("inventory.transfer.template.zeroQuantity.prompt")), 1)
2050
- ])
2051
- ]),
2052
- _: 1
2053
- }, 8, ["modelValue"])
2054
- ], 64);
2055
- };
2056
- }
2057
- });
2058
- function ga(p) {
2059
- const [b, u, d, ..._] = $s(p), n = d.map((k) => k.toLowerCase().trim().replace(/ /g, "_")), h = ["item_name", "transfer_quantity(uom)", "uom", "scanned_code"].filter((k) => !n.includes(k));
2060
- if (h.length)
2061
- throw new Error(
2062
- `Missing headers (${h.join()}). Excel file does not come from the template.`
2063
- );
2064
- return _.map((k, y) => {
2065
- const i = {};
2066
- for (const t in n) {
2067
- const s = n[t];
2068
- Object.assign(i, { [s]: k[t] });
2069
- }
2070
- return {
2071
- index: y,
2072
- data: i
2073
- };
2074
- });
2075
- }
2076
- function _a(p) {
2077
- const b = p.SheetNames;
2078
- try {
2079
- return b.reduce(
2080
- (d, _) => {
2081
- const n = new Array(), g = p.Sheets[_], h = Ne(), F = ga(g), k = [];
2082
- for (const { index: i, data: t } of F) {
2083
- t.scanned_code === "" && n.push(`Row ${i + 1}: Scanned code is empty`), t.item_name === "" && n.push(`Row ${i + 1}: Item name is empty`), t.uom === "" && n.push(`Row ${i + 1}: UOM is empty`), t["transfer_quantity(uom)"] === "" && n.push(`Row ${i + 1}: Transfer quantity is empty`);
2084
- const s = h.skus.find((C) => C.code === t.scanned_code);
2085
- if (!s) {
2086
- n.push(`Row ${i + 1}: SKU not found`);
2087
- continue;
2088
- }
2089
- const a = s.unit.abbrev === t.uom;
2090
- let r = null;
2091
- if (!a) {
2092
- const C = s.unit.measurements.find(($) => $.abbrev === t.uom);
2093
- if (!C) {
2094
- n.push(`Row ${i + 1}: Measurement not found`);
2095
- continue;
2096
- }
2097
- r = C;
2098
- }
2099
- k.push({
2100
- sku: s,
2101
- code: t.scanned_code,
2102
- name: t.item_name,
2103
- quantity: Ct.fromNumber(Number(t["transfer_quantity(uom)"])),
2104
- measurement: r
2105
- });
2106
- }
2107
- const y = {
2108
- type: "create",
2109
- poItems: k,
2110
- excelSheetName: _,
2111
- errors: n
2112
- };
2113
- return d.importCreateResult.push(y), d;
2114
- },
2115
- {
2116
- invalidExcel: !1,
2117
- importCreateResult: new Array()
2118
- }
2119
- );
2120
- } catch (u) {
2121
- return {
2122
- invalidExcel: !0,
2123
- invalidExcelMessage: (u == null ? void 0 : u.message) ?? "Invalid excel",
2124
- importCreateResult: []
2125
- };
2126
- }
2127
- }
2128
- const ha = { class: "flex flex-col flex-1" }, xa = { class: "flex flex-col" }, ka = { class: "fm-typo-en-body-md-400 text-fm-color-typo-primary flex items-center gap-4" }, Ca = {
2129
- key: 0,
2130
- class: "text-fm-color-typo-secondary fm-typo-en-body-sm-400"
2131
- }, wa = { key: 0 }, Sa = {
2132
- class: /* @__PURE__ */ W(["fm-typo-en-body-lg-600"])
2133
- }, Fa = { class: "flex-1" }, $a = { class: "flex-auto line-clamp-2 text-ellipsis break-all fm-typo-en-body-sm-400" }, Ia = { class: "flex-auto line-clamp-2 text-ellipsis break-all" }, Da = { class: "text-fm-color-typo-primary" }, Ta = { class: "ml-auto" }, Pa = { key: 0 }, Va = /* @__PURE__ */ ne({
2134
- __name: "XilnexResult",
2135
- props: {
2136
- type: {},
2137
- name: {},
2138
- items: {},
2139
- errors: {}
2140
- },
2141
- setup(p) {
2142
- const b = p, { t: u } = be(), d = N(!1), _ = () => {
2143
- b.errors.length && (d.value = !d.value);
2144
- };
2145
- return (n, g) => {
2146
- var k;
2147
- const h = R("FmIcon"), F = R("FmTooltip");
2148
- return x(), T("div", ha, [
2149
- o("div", {
2150
- onClick: _,
2151
- class: W({
2152
- "cursor-pointer": n.errors.length
2153
- })
2154
- }, [
2155
- o("div", xa, [
2156
- o("div", ka, [
2157
- o("div", {
2158
- class: W({
2159
- "text-fm-color-system-error-300": n.errors.length
2160
- })
2161
- }, [
2162
- Ce(I(n.name) + " ", 1),
2163
- n.type === "create" ? (x(), T("span", Ca, "(" + I(e(u)("inventory.closing.template.import.new")) + ")", 1)) : K("", !0)
2164
- ], 2),
2165
- n.errors.length ? (x(), T("div", wa, [
2166
- m(h, {
2167
- name: "error",
2168
- size: "sm",
2169
- color: "system-error-300"
2170
- })
2171
- ])) : K("", !0)
2172
- ]),
2173
- g[0] || (g[0] = o("hr", { class: "my-2" }, null, -1)),
2174
- o("div", Sa, [
2175
- (k = n.items) != null && k.length ? (x(!0), T(re, { key: 0 }, fe(n.items, (y, i) => (x(), T("div", {
2176
- key: i,
2177
- class: "flex gap-4 mt-2 items-center"
2178
- }, [
2179
- o("div", Fa, [
2180
- m(F, {
2181
- content: y.code,
2182
- placement: "top",
2183
- "z-index": 51
2184
- }, {
2185
- default: A(() => [
2186
- o("span", $a, I(y.code), 1)
2187
- ]),
2188
- _: 2
2189
- }, 1032, ["content"]),
2190
- m(F, {
2191
- content: y.name,
2192
- placement: "top",
2193
- "z-index": 51
2194
- }, {
2195
- default: A(() => [
2196
- o("span", Ia, I(y.name), 1)
2197
- ]),
2198
- _: 2
2199
- }, 1032, ["content"])
2200
- ]),
2201
- o("div", null, [
2202
- o("span", Da, I(e(Ct).toFormatString({
2203
- value: y.quantity
2204
- })), 1),
2205
- Ce(" " + I(y.measurement ? y.measurement.abbrev : y.sku.unit.abbrev), 1)
2206
- ])
2207
- ]))), 128)) : K("", !0)
2208
- ])
2209
- ]),
2210
- o("div", Ta, [
2211
- n.errors.length ? (x(), oe(h, {
2212
- key: 0,
2213
- name: d.value ? "keyboard_arrow_up" : "keyboard_arrow_down",
2214
- size: "md"
2215
- }, null, 8, ["name"])) : K("", !0)
2216
- ])
2217
- ], 2),
2218
- d.value ? (x(), T("div", {
2219
- key: 0,
2220
- class: W(["flex flex-col gap-4 pl-8 fm-typo-en-body-sm-400", {
2221
- "text-fm-color-typo-secondary": !n.errors.length,
2222
- "text-fm-color-system-error-300": n.errors.length
2223
- }])
2224
- }, [
2225
- n.errors.length ? (x(), T("div", Pa, [
2226
- o("ol", null, [
2227
- (x(!0), T(re, null, fe(n.errors, (y, i) => (x(), T("li", { key: i }, I(y), 1))), 128))
2228
- ])
2229
- ])) : K("", !0)
2230
- ], 2)) : K("", !0)
2231
- ]);
2232
- };
2233
- }
2234
- }), Ra = { class: "flex flex-col gap-24" }, Oa = {
2235
- key: 0,
2236
- class: "flex items-center gap-8"
2237
- }, Aa = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Ea = { class: "flex flex-col gap-8" }, Ma = { class: "line-clamp-2 text-ellipsis break-all" }, qa = {
2238
- key: 2,
2239
- class: "shrink-0"
2240
- }, Ua = {
2241
- key: 0,
2242
- class: "flex flex-col"
2243
- }, Na = { class: "text-fm-color-system-error-300 fm-typo-en-body-sm-400" }, Ba = {
2244
- key: 0,
2245
- class: "max-h-[200px] overflow-y-auto flex flex-col gap-8"
2246
- }, za = { class: "fm-typo-en-body-lg-600" }, _t = "Transfer note", La = /* @__PURE__ */ ne({
2247
- __name: "XilnexImportForm",
2248
- setup(p, { expose: b }) {
2249
- const u = N(null), d = Se(), _ = N(!1), n = N(!1), g = Ts(), h = N(!1), F = Te();
2250
- N([]);
2251
- const k = M({
2252
- get() {
2253
- var c;
2254
- return ((c = g.supplier) == null ? void 0 : c.name) ?? "";
2255
- },
2256
- set(c) {
2257
- c && (g.supplier = {
2258
- name: c,
2259
- registrationNumber: "",
2260
- _id: "xilnex",
2261
- internal: "restaurant",
2262
- address: {
2263
- line1: "",
2264
- line2: "",
2265
- city: "",
2266
- state: "",
2267
- country: "",
2268
- postcode: ""
2269
- }
2270
- });
2271
- }
2272
- });
2273
- Ze(async () => {
2274
- const c = await F.getNetSuiteLocations();
2275
- console.log(c), h.value = !0;
2276
- });
2277
- const y = M({
2278
- get() {
2279
- return "";
2280
- },
2281
- set(c) {
2282
- if (c) {
2283
- const v = g.effectiveAt ? new Date(g.effectiveAt) : /* @__PURE__ */ new Date(), [D, q, z] = c.split("-");
2284
- v.setFullYear(parseInt(D)), v.setMonth(parseInt(q) - 1), v.setDate(parseInt(z)), g.effectiveAt = v.toISOString();
2285
- }
2286
- }
2287
- }), i = M({
2288
- get() {
2289
- return null;
2290
- },
2291
- set(c) {
2292
- if (c) {
2293
- const v = g.effectiveAt ? new Date(g.effectiveAt) : /* @__PURE__ */ new Date(), [D, q] = c.split(":");
2294
- v.setMinutes(parseInt(D)), v.setSeconds(parseInt(q)), g.effectiveAt = v.toISOString();
2295
- }
2296
- }
2297
- }), t = N(new Array()), s = N([]), a = M(
2298
- () => !!t.value.length || s.value.some((c) => c.errors.length)
2299
- ), r = N();
2300
- b({
2301
- validateInputs: () => {
2302
- var c, v;
2303
- (v = (c = r.value) == null ? void 0 : c.validateInputs) == null || v.call(c);
2304
- },
2305
- resetInputsValidation: () => {
2306
- var c, v;
2307
- (v = (c = r.value) == null ? void 0 : c.resetInputsValidation) == null || v.call(c);
2308
- },
2309
- resetInputs: () => {
2310
- var c, v;
2311
- (v = (c = r.value) == null ? void 0 : c.resetInputs) == null || v.call(c);
2312
- }
2313
- });
2314
- const { t: C } = be();
2315
- async function $(c) {
2316
- t.value = [], s.value = [];
2317
- try {
2318
- _.value = !0;
2319
- const [v] = await Promise.all([
2320
- Is(c),
2321
- // fake buffer
2322
- new Promise((q) => setTimeout(q, 1e3))
2323
- ]), D = _a(v);
2324
- if (D.invalidExcel) {
2325
- t.value.push(
2326
- D.invalidExcelMessage ?? C("inventory.ingredient.import.fileError.invalidExcel")
2327
- );
2328
- return;
2329
- }
2330
- if (s.value = D.importCreateResult, !s.value.length) {
2331
- t.value.push(C("inventory.ingredient.import.fileError.noData"));
2332
- return;
2333
- }
2334
- g.items = s.value.map((q) => q.poItems).flat();
2335
- } catch (v) {
2336
- d.open({
2337
- title: C("inventory.ingredient.import.fileError.unableToRead"),
2338
- message: v == null ? void 0 : v.message,
2339
- type: "error"
2340
- }), console.error("Error in reading file", v);
2341
- } finally {
2342
- t.value.length && d.open({
2343
- title: C("inventory.ingredient.import.fileError.invalidExcel"),
2344
- type: "error"
2345
- }), _.value = !1;
2346
- }
2347
- }
2348
- return ye(u, (c) => {
2349
- c && $(c);
2350
- }), (c, v) => {
2351
- const D = R("FmSelect"), q = R("FmDatePicker"), z = R("FmTimePicker"), Z = R("FmCircularProgress"), X = R("FmLabel"), B = R("FmIcon"), E = R("FmButton"), O = R("FmForm");
2352
- return x(), oe(O, {
2353
- ref_key: "formRef",
2354
- ref: r
2355
- }, {
2356
- default: A(() => [
2357
- o("div", Ra, [
2358
- m(D, {
2359
- modelValue: k.value,
2360
- "onUpdate:modelValue": v[0] || (v[0] = (P) => k.value = P),
2361
- label: "Transfer from",
2362
- searchable: "",
2363
- searchTarget: "label",
2364
- items: [
2365
- { label: "Object", value: null },
2366
- { label: "Array", value: ["array", "1"] },
2367
- { label: "Number", value: 3 },
2368
- { label: "String", value: "4" },
2369
- { label: "1", value: "5" },
2370
- { label: "2", value: "6" }
2371
- ],
2372
- "helper-text": "Helper",
2373
- rules: [e(De)()]
2374
- }, null, 8, ["modelValue", "rules"]),
2375
- m(q, {
2376
- modelValue: y.value,
2377
- "onUpdate:modelValue": v[1] || (v[1] = (P) => y.value = P),
2378
- label: "Transfer date",
2379
- rules: [e(De)()]
2380
- }, null, 8, ["modelValue", "rules"]),
2381
- m(z, {
2382
- modelValue: i.value,
2383
- "onUpdate:modelValue": v[2] || (v[2] = (P) => i.value = P),
2384
- label: "Transfer time",
2385
- rules: [e(De)()]
2386
- }, null, 8, ["modelValue", "rules"]),
2387
- n.value ? (x(), T("div", Oa, [
2388
- o("div", null, [
2389
- m(Z, {
2390
- size: "md",
2391
- color: "neutral-gray-200"
2392
- })
2393
- ]),
2394
- o("div", Aa, I(e(C)("inventory.formField.loading")), 1)
2395
- ])) : (x(), T(re, { key: 1 }, [
2396
- m(Ds, {
2397
- "max-file-size": 5,
2398
- class: W({
2399
- "w-full": !0,
2400
- "h-[200px]": !u.value
2401
- }),
2402
- accept: ".xlsx,.xls",
2403
- label: _t,
2404
- onFileUpload: v[3] || (v[3] = (P) => u.value = P),
2405
- "button-label": e(C)("inventory.ingredient.import.selectFile")
2406
- }, Bt({ _: 2 }, [
2407
- u.value ? {
2408
- name: "default",
2409
- fn: A(({ openFileDialog: P }) => [
2410
- m(X, null, {
2411
- default: A(() => [
2412
- Ce(I(_t))
2413
- ]),
2414
- _: 1
2415
- }),
2416
- o("div", Ea, [
2417
- o("div", {
2418
- class: W([
2419
- "fm-corner-radius-md p-16 flex items-center gap-16",
2420
- {
2421
- "border border-fm-color-neutral-gray-100": _.value,
2422
- "border border-fm-color-neutral-gray-200": !_.value && !a.value,
2423
- "border border-fm-color-system-error-200": a.value
2424
- }
2425
- ])
2426
- }, [
2427
- _.value ? (x(), oe(Z, {
2428
- key: 0,
2429
- size: "md",
2430
- color: "neutral-gray-200"
2431
- })) : (x(), oe(B, {
2432
- key: 1,
2433
- name: a.value ? "error" : "attach_file",
2434
- outline: "",
2435
- color: a.value ? "system-error-300" : void 0
2436
- }, null, 8, ["name", "color"])),
2437
- o("div", {
2438
- class: W([
2439
- "fm-typo-en-body-md-400 flex-1 h-[36px] flex items-center",
2440
- {
2441
- "text-fm-color-typo-disabled": _.value,
2442
- "text-fm-color-typo-primary": !_.value
2443
- }
2444
- ])
2445
- }, [
2446
- o("div", Ma, I(u.value.name), 1)
2447
- ], 2),
2448
- _.value ? K("", !0) : (x(), T("div", qa, [
2449
- m(E, {
2450
- label: e(C)("inventory.ingredient.import.replaceFile"),
2451
- variant: a.value ? "destructive" : "secondary",
2452
- "prepend-icon": a.value ? void 0 : "autorenew",
2453
- onClick: P
2454
- }, null, 8, ["label", "variant", "prepend-icon", "onClick"])
2455
- ]))
2456
- ], 2),
2457
- t.value.length ? (x(), T("div", Ua, [
2458
- (x(!0), T(re, null, fe(t.value, (U, j) => (x(), T("div", {
2459
- key: j,
2460
- class: "flex gap-8 items-center"
2461
- }, [
2462
- m(B, {
2463
- name: "error",
2464
- size: "sm",
2465
- color: "system-error-300"
2466
- }),
2467
- o("div", Na, I(U), 1)
2468
- ]))), 128))
2469
- ])) : K("", !0)
2470
- ])
2471
- ]),
2472
- key: "0"
2473
- } : void 0
2474
- ]), 1032, ["class", "button-label"]),
2475
- u.value ? (x(), T("div", Ba, [
2476
- o("div", za, I(e(C)("inventory.ingredient.import.summary")), 1),
2477
- (x(!0), T(re, null, fe(s.value, (P, U) => (x(), oe(Va, {
2478
- key: U,
2479
- name: `Transfer Note ${U + 1}`,
2480
- items: P.poItems,
2481
- errors: P.errors,
2482
- type: "create"
2483
- }, null, 8, ["name", "items", "errors"]))), 128))
2484
- ])) : K("", !0)
2485
- ], 64))
2486
- ])
2487
- ]),
2488
- _: 1
2489
- }, 512);
2490
- };
2491
- }
2492
- }), ja = { class: "w-[480px]" }, Ha = /* @__PURE__ */ ne({
2493
- __name: "XilnexImportDialog",
2494
- props: {
2495
- show: { type: Boolean }
2496
- },
2497
- emits: ["update:show", "submitted"],
2498
- setup(p, { expose: b, emit: u }) {
2499
- const d = u, n = St(p, "show"), g = Se(), h = et(), F = N(!1), k = N(), y = N();
2500
- b({
2501
- validateInputs: () => {
2502
- var s, a;
2503
- (a = (s = k.value) == null ? void 0 : s.validateInputs) == null || a.call(s);
2504
- },
2505
- resetInputsValidation: () => {
2506
- var s, a;
2507
- (a = (s = k.value) == null ? void 0 : s.resetInputsValidation) == null || a.call(s);
2508
- },
2509
- resetInputs: () => {
2510
- var s, a;
2511
- (a = (s = k.value) == null ? void 0 : s.resetInputs) == null || a.call(s);
2512
- }
2513
- });
2514
- function i() {
2515
- var s, a;
2516
- (a = (s = k.value) == null ? void 0 : s.validateInputs) == null || a.call(s);
2517
- }
2518
- async function t() {
2519
- var a, r, C, $, c;
2520
- if (!((r = (a = y.value) == null ? void 0 : a.supplier) != null && r.name)) {
2521
- g.open({
2522
- title: "Upload failed",
2523
- message: "Location is required",
2524
- type: "error"
2525
- });
2526
- return;
2527
- }
2528
- if (!((C = y.value) != null && C.items) || ((c = ($ = y.value) == null ? void 0 : $.items) == null ? void 0 : c.length) === 0) {
2529
- g.open({
2530
- title: "Upload failed",
2531
- message: "No data to upload",
2532
- type: "error"
2533
- });
2534
- return;
2535
- }
2536
- const s = y.value.effectiveAt ? new Date(y.value.effectiveAt) : null;
2537
- if (!s) {
2538
- g.open({
2539
- title: "Invalid date",
2540
- message: "Transfer date is required",
2541
- type: "error"
2542
- });
2543
- return;
2544
- }
2545
- if (s.getTime() > (/* @__PURE__ */ new Date()).getTime()) {
2546
- g.open({
2547
- title: "Invalid date",
2548
- message: "Transfer date cannot be in the future",
2549
- type: "error"
2550
- });
2551
- return;
2552
- }
2553
- F.value = !0;
2554
- try {
2555
- await h.importFromXilnex(y.value), d("update:show", !1);
2556
- } catch (v) {
2557
- await new Promise((D) => setTimeout(D, 1e3)), g.open({
2558
- title: "Upload failed",
2559
- message: v == null ? void 0 : v.message,
2560
- type: "error"
2561
- });
2562
- } finally {
2563
- F.value = !1;
2564
- }
2565
- }
2566
- return (s, a) => {
2567
- const r = R("FmSpacer"), C = R("FmButton"), $ = R("FmDialog");
2568
- return x(), oe($, {
2569
- modelValue: e(n),
2570
- "onUpdate:modelValue": a[2] || (a[2] = (c) => _e(n) ? n.value = c : null),
2571
- overlay: !0,
2572
- "close-button": !1
2573
- }, {
2574
- "dialog-header": A(() => a[3] || (a[3] = [
2575
- o("div", null, "Xilnex transfer order", -1)
2576
- ])),
2577
- "dialog-footer": A(() => [
2578
- m(r, { class: "sm:hidden xs:hidden" }),
2579
- m(C, {
2580
- disabled: F.value,
2581
- class: "sm:w-full xs:w-full",
2582
- label: "Cancel",
2583
- size: "md",
2584
- variant: "tertiary",
2585
- onClick: a[1] || (a[1] = (c) => d("update:show", !1))
2586
- }, null, 8, ["disabled"]),
2587
- m(C, {
2588
- disabled: F.value,
2589
- loading: F.value,
2590
- class: "sm:w-full xs:w-full",
2591
- label: "Upload",
2592
- size: "md",
2593
- variant: "primary",
2594
- onClick: i
2595
- }, null, 8, ["disabled", "loading"])
2596
- ]),
2597
- default: A(() => [
2598
- o("div", ja, [
2599
- m(La, {
2600
- ref_key: "formRef",
2601
- ref: k,
2602
- onValidationSuccess: t,
2603
- modelValue: y.value,
2604
- "onUpdate:modelValue": a[0] || (a[0] = (c) => y.value = c)
2605
- }, null, 8, ["modelValue"])
2606
- ])
2607
- ]),
2608
- _: 1
2609
- }, 8, ["modelValue"]);
2610
- };
2611
- }
2612
- }), Qa = { class: "flex flex-col py-8" }, Ya = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, Ka = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary line-clamp-1" }, Xa = { class: "fm-typo-en-body-md-400 text-fm-color-typo-primary line-clamp-1" }, Za = {
2613
- key: 0,
2614
- class: "fm-typo-en-body-md-400 text-fm-color-typo-primary line-clamp-1"
2615
- }, Wa = { class: "pt-8" }, ht = "ReceiveRequestViewSearchCriteria", $r = /* @__PURE__ */ ne({
2616
- __name: "ReceiveRequestView",
2617
- setup(p) {
2618
- const { t: b } = be(), u = Se();
2619
- Ee.object({
2620
- name: Ee.string().optional().nullable(),
2621
- startDate: Ee.string().optional().nullable(),
2622
- endDate: Ee.string().optional().nullable()
2623
- });
2624
- const d = M(
2625
- () => !t._currentLocation || y.loading.value
2626
- ), _ = is(), n = Be(), g = Te();
2627
- function h() {
2628
- const B = {
2629
- name: "",
2630
- ...vt()
2631
- }, E = _.getItem(ht);
2632
- if (!E)
2633
- return B;
2634
- try {
2635
- return JSON.parse(E);
2636
- } catch {
2637
- return B;
2638
- }
2639
- }
2640
- function F() {
2641
- _.setItem(ht, JSON.stringify(k.value));
2642
- }
2643
- const k = N(h()), y = Gt(
2644
- Qe.RECEIVE_REQUEST,
2645
- k.value
2646
- ), { columnDefs: i } = es(
2647
- Qe.RECEIVE_REQUEST,
2648
- y,
2649
- y.shipments
2650
- ), t = Ue();
2651
- async function s() {
2652
- const B = `inventory-record_${yt(k.value.startDate).format("DD-MM-YYYY_HH-mm")}-${yt(k.value.endDate).format("DD-MM-YYYY_HH-mm")}.xlsx`, E = y.purchaseOrders.value.flatMap(
2653
- (P) => P.items.map((U) => {
2654
- var H;
2655
- const j = new Date(ns(P._id) ?? ""), J = P.effectiveAt ? new Date(P.effectiveAt) : void 0, ae = he(
2656
- ss(U.sku, P.deliveryOrder || [])
2657
- ), S = he(U.quantity), w = ((H = U == null ? void 0 : U.measurement) == null ? void 0 : H.abbrev) || U.sku.unit.abbrev;
2658
- return {
2659
- "SKU code": U.code,
2660
- "SKU name": U.name,
2661
- "PO #": P.seqNumber,
2662
- "Effective at": J,
2663
- Date: j,
2664
- Status: P.status,
2665
- Reference: P.ref ?? "",
2666
- "Received quantity": ae,
2667
- "Ordered quantity": S,
2668
- Unit: w,
2669
- "Total cost": U.totalCost ? we(U.totalCost) : null
2670
- };
2671
- })
2672
- ), O = [
2673
- "SKU code",
2674
- "SKU name",
2675
- "PO #",
2676
- "Date",
2677
- "Status",
2678
- "Reference",
2679
- "Received quantity",
2680
- "Ordered quantity",
2681
- "Unit"
2682
- ];
2683
- n.enableBackdatePo && O.insert("Effective at", 4), n.enableTotalCost && O.push("Total cost"), await ls(
2684
- [
2685
- {
2686
- name: "purchases",
2687
- data: E,
2688
- columns: O
2689
- }
2690
- ],
2691
- B
2692
- ), u.open({
2693
- title: b("inventory.transfer.receiveRequest.export.success"),
2694
- message: b("inventory.transfer.receiveRequest.export.message", [B]),
2695
- type: "success"
2696
- });
2697
- }
2698
- const a = N(vt()), r = N("");
2699
- ye([() => a.value], ([B]) => {
2700
- !B.startDate || !B.endDate || (k.value.startDate = B.startDate, k.value.endDate = B.endDate, y.updateDateRange(
2701
- k.value.startDate,
2702
- k.value.endDate
2703
- ), F());
2704
- }), ye([() => r.value], () => {
2705
- F();
2706
- });
2707
- function C(B) {
2708
- if (B === "create") {
2709
- if (d.value) {
2710
- u.open({
2711
- title: "Loading data...",
2712
- message: "Please wait.",
2713
- type: "info"
2714
- });
2715
- return;
2716
- }
2717
- return y.promptCreateTransferDialog();
2718
- }
2719
- if (B === "upload" && n.enableXilnexTransferNote)
2720
- return y.promptUploadTransferDialog();
2721
- if (B === "refresh")
2722
- return y.fetchData();
2723
- if (B === "export")
2724
- return s();
2725
- }
2726
- const { breakpoints: $ } = We(), c = M(() => $.value.xs || $.value.sm), v = M(() => c.value ? 10 : 20), D = us(), q = M(() => [
2727
- {
2728
- label: b("inventory.transfer.receiveRequest.actions.create"),
2729
- value: "create",
2730
- isPrimary: !0,
2731
- prependIcon: "add"
2732
- },
2733
- ...n.enableXilnexTransferNote ? [
2734
- {
2735
- label: b("inventory.common.upload"),
2736
- value: "upload"
2737
- }
2738
- ] : [],
2739
- {
2740
- label: b("inventory.common.refresh"),
2741
- value: "refresh"
2742
- },
2743
- {
2744
- label: b("inventory.common.export"),
2745
- value: "export"
2746
- }
2747
- ]), z = M(() => {
2748
- const B = [
2749
- {
2750
- type: "string",
2751
- key: "status",
2752
- entity: "purchaseOrder",
2753
- values: Array.from(
2754
- new Set(y.purchaseOrders.value.map((O) => O.status))
2755
- )
2756
- }
2757
- ], E = [
2758
- {
2759
- type: "string",
2760
- key: "netsuiteTransactionNumber",
2761
- entity: "purchaseOrder",
2762
- values: y.purchaseOrders.value.map((O) => {
2763
- var P, U;
2764
- return (U = (P = O.netSuite) == null ? void 0 : P.additionalInfo) == null ? void 0 : U.transactionnumber;
2765
- }).filter((O) => O != null)
2766
- },
2767
- {
2768
- type: "string",
2769
- key: "netsuiteOrderNo",
2770
- entity: "purchaseOrder",
2771
- values: y.purchaseOrders.value.map((O) => {
2772
- var P;
2773
- return (P = O.netSuite) == null ? void 0 : P.refNo;
2774
- }).filter((O) => O != null)
2775
- },
2776
- {
2777
- type: "string",
2778
- key: "netsuiteOrderId",
2779
- entity: "purchaseOrder",
2780
- values: y.purchaseOrders.value.map((O) => {
2781
- var P;
2782
- return (P = O.netSuite) == null ? void 0 : P.id;
2783
- }).filter((O) => O != null)
2784
- }
2785
- ];
2786
- return [...B, ...g.isEnabled ? E : []];
2787
- }), Z = N(null), X = M(() => {
2788
- if (!Z.value)
2789
- return y.purchaseOrders.value;
2790
- const B = Ps.build(Z.value);
2791
- return y.purchaseOrders.value.filter((E) => {
2792
- var O, P, U, j;
2793
- return Vs(
2794
- {
2795
- netsuiteTransactionNumber: (P = (O = E.netSuite) == null ? void 0 : O.additionalInfo) == null ? void 0 : P.transactionnumber,
2796
- netsuiteOrderNo: (U = E.netSuite) == null ? void 0 : U.refNo,
2797
- netsuiteOrderId: (j = E.netSuite) == null ? void 0 : j.id,
2798
- status: E.status
2799
- },
2800
- B
2801
- );
2802
- });
2803
- });
2804
- return (B, E) => {
2805
- const O = R("FmTable");
2806
- return x(), oe(ds, {
2807
- title: e(b)("inventory.transfer.receiveRequest.title2"),
2808
- actions: q.value,
2809
- "onClick:action": C
2810
- }, {
2811
- default: A(() => {
2812
- var P, U;
2813
- return [
2814
- o("div", {
2815
- class: W([
2816
- "flex flex-col gap-8 max-h-full",
2817
- {
2818
- "p-0": c.value,
2819
- "px-24 ": !c.value
2820
- }
2821
- ])
2822
- }, [
2823
- m(Jt, {
2824
- "date-range-query": "",
2825
- "date-range": a.value,
2826
- "onUpdate:dateRange": E[0] || (E[0] = (j) => a.value = j),
2827
- searchable: "",
2828
- "change-location": "",
2829
- search: r.value,
2830
- "onUpdate:search": E[1] || (E[1] = (j) => r.value = j),
2831
- filterable: "",
2832
- "filter-attributes": z.value,
2833
- filter: Z.value,
2834
- "onUpdate:filter": E[2] || (E[2] = (j) => Z.value = j)
2835
- }, null, 8, ["date-range", "search", "filter-attributes", "filter"]),
2836
- (x(), oe(O, {
2837
- style: xt(e(D).tableHeight),
2838
- "column-defs": e(i),
2839
- "row-data": X.value,
2840
- "search-value": r.value,
2841
- loading: d.value,
2842
- onRowClick: E[3] || (E[3] = (j) => e(y).promptShowTransferDetails(j.original)),
2843
- key: (P = e(t)._currentLocation) == null ? void 0 : P.dbName,
2844
- "page-size": v.value
2845
- }, {
2846
- "list-row": A((j) => [
2847
- m($t, {
2848
- row: j,
2849
- onRowClick: e(y).promptShowTransferDetails
2850
- }, {
2851
- default: A((J) => {
2852
- var ae, S, w, H, ue, le, G, xe, ke, Pe, Ve, ze, Re, ge, Fe, Oe, l, f, L, Q;
2853
- return [
2854
- o("div", Qa, [
2855
- o("div", Ya, [
2856
- m(e(ce), {
2857
- render: (w = (S = (ae = J._id) == null ? void 0 : ae.column) == null ? void 0 : S.columnDef) == null ? void 0 : w.cell,
2858
- props: (ue = (H = J._id) == null ? void 0 : H.getContext) == null ? void 0 : ue.call(H)
2859
- }, null, 8, ["render", "props"])
2860
- ]),
2861
- o("div", Ka, [
2862
- m(e(ce), {
2863
- render: (xe = (G = (le = J.supplier_name) == null ? void 0 : le.column) == null ? void 0 : G.columnDef) == null ? void 0 : xe.cell,
2864
- props: (Pe = (ke = J.supplier_name) == null ? void 0 : ke.getContext) == null ? void 0 : Pe.call(ke)
2865
- }, null, 8, ["render", "props"])
2866
- ]),
2867
- o("div", Xa, I(j.original.items.map((te) => `${te.name}`).join(", ")), 1),
2868
- j.original.ref ? (x(), T("div", Za, [
2869
- m(e(ce), {
2870
- render: (Re = (ze = (Ve = J.ref) == null ? void 0 : Ve.column) == null ? void 0 : ze.columnDef) == null ? void 0 : Re.cell,
2871
- props: (Fe = (ge = J.ref) == null ? void 0 : ge.getContext) == null ? void 0 : Fe.call(ge)
2872
- }, null, 8, ["render", "props"])
2873
- ])) : K("", !0),
2874
- o("div", Wa, [
2875
- m(e(ce), {
2876
- render: (f = (l = (Oe = J.status) == null ? void 0 : Oe.column) == null ? void 0 : l.columnDef) == null ? void 0 : f.cell,
2877
- props: (Q = (L = J.status) == null ? void 0 : L.getContext) == null ? void 0 : Q.call(L)
2878
- }, null, 8, ["render", "props"])
2879
- ])
2880
- ])
2881
- ];
2882
- }),
2883
- _: 2
2884
- }, 1032, ["row", "onRowClick"])
2885
- ]),
2886
- _: 1
2887
- }, 8, ["style", "column-defs", "row-data", "search-value", "loading", "page-size"]))
2888
- ], 2),
2889
- (x(), oe(zt, { to: "body" }, [
2890
- m(ba, Ke(e(y).transferDialogProps.value, {
2891
- onSubmitted: e(y).fetchData
2892
- }), null, 16, ["onSubmitted"]),
2893
- m(ts, Ke({
2894
- scope: e(Qe).RECEIVE_REQUEST
2895
- }, {
2896
- ...e(y).transferDetailsProps.value,
2897
- receivedMap: ((U = e(y).transferDetailsProps.value) == null ? void 0 : U.receivedMap) ?? {},
2898
- shipments: e(y).shipments.value ?? []
2899
- }, {
2900
- onSubmitted: e(y).fetchData
2901
- }), null, 16, ["scope", "onSubmitted"]),
2902
- m(Ha, Lt(jt(e(y).xilnexImportDialogProps.value)), null, 16)
2903
- ]))
2904
- ];
2905
- }),
2906
- _: 1
2907
- }, 8, ["title", "actions"]);
2908
- };
2909
- }
2910
- });
2911
- export {
2912
- $r as default
2913
- };