@feedmepos/mf-inventory-portal 0.0.19-dev.13 → 0.0.19-dev.14

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 (178) hide show
  1. package/dist/App.vue.d.ts +1 -1
  2. package/dist/{ApprovalView-9MdmwrUz.js → ApprovalView-BY13XuOu.js} +5 -5
  3. package/dist/{BindingsDialog-C-q6Y04n.js → BindingsDialog-B3PP-XkE.js} +22 -22
  4. package/dist/{BindingsPicker-syyx9h8v.js → BindingsPicker-DL17pRty.js} +17 -17
  5. package/dist/{BindingsTable-CQ0WyX2i.js → BindingsTable-CjKOv7Yw.js} +29 -29
  6. package/dist/Entry.vue.d.ts +1 -1
  7. package/dist/FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-DoF7wwNT.js +306 -0
  8. package/dist/{IngredientsView-Ofs2UG-9.js → IngredientsView-C-rsKAsF.js} +294 -294
  9. package/dist/{IntegrationView-BCruLSTA.js → IntegrationView-BkhfPSjM.js} +278 -278
  10. package/dist/{NumberPrecisionInput.vue_vue_type_script_setup_true_lang-Bvw_BkWY.js → NumberPrecisionInput.vue_vue_type_script_setup_true_lang-Buc21sEN.js} +1 -1
  11. package/dist/{PremiumBadge.vue_vue_type_script_setup_true_lang-BLVAIHDv.js → PremiumBadge.vue_vue_type_script_setup_true_lang-BRijSilS.js} +1 -1
  12. package/dist/PurchaseOrderPrintPreview-CGMMozPA.js +152 -0
  13. package/dist/{ReceiveRequestView-Dw-AC1Mw.js → ReceiveRequestView-Bk0pUeEm.js} +7 -7
  14. package/dist/{RecipeView-B5WkUzLO.js → RecipeView-kzA9kIg8.js} +181 -181
  15. package/dist/Standalone.vue.d.ts +1 -1
  16. package/dist/{StockView-CMTxj8Ly.js → StockView-DF-ucES_.js} +23 -23
  17. package/dist/SupplierView-XlzsU00G.js +813 -0
  18. package/dist/{TransferDetails.vue_vue_type_script_setup_true_lang-B8IGZmDZ.js → TransferDetails.vue_vue_type_script_setup_true_lang-Bp7AJiJ-.js} +106 -106
  19. package/dist/TransferDialog.vue_vue_type_script_setup_true_lang-D1NAkXMT.js +1690 -0
  20. package/dist/TransferTemplateView-CsA2SzQY.js +1279 -0
  21. package/dist/{UnitView-CExCsCFg.js → UnitView-9VMIlEZ_.js} +242 -242
  22. package/dist/{WarehouseView-DuPizg7w.js → WarehouseView-JTYLFBsu.js} +360 -362
  23. package/dist/api/bill.d.ts +238 -84
  24. package/dist/api/supplier.d.ts +4 -4
  25. package/dist/app-kYGuBDV8.js +68549 -0
  26. package/dist/app.d.ts +14 -0
  27. package/dist/app.js +3 -3
  28. package/dist/components/ChangeLocationComponent.vue.d.ts +11 -1
  29. package/dist/components/DeferableLoading.vue.d.ts +1 -1
  30. package/dist/components/DeleteDialog.vue.d.ts +1 -1
  31. package/dist/components/FmCoordinateInput.vue.d.ts +3 -3
  32. package/dist/components/FmDroppableField.vue.d.ts +6 -6
  33. package/dist/components/FmFilterableSelect.vue.d.ts +3 -3
  34. package/dist/components/FmInventoryTableToolbar.vue.d.ts +21 -10
  35. package/dist/components/FmMinMaxInput.vue.d.ts +20 -0
  36. package/dist/components/FmMinMaxInputProps.d.ts +16 -0
  37. package/dist/components/FmMinMaxInputRules.d.ts +4 -0
  38. package/dist/components/FmMultiselectDialog.vue.d.ts +5 -5
  39. package/dist/components/FmMultiselectDialogProps.d.ts +3 -0
  40. package/dist/components/FmUnitInputRules.d.ts +1 -0
  41. package/dist/components/MultiSelectDialog.vue.d.ts +1 -1
  42. package/dist/components/NavigationTab.vue.d.ts +1 -1
  43. package/dist/components/NumberPrecisionInput.vue.d.ts +3 -3
  44. package/dist/components/PremiumBadge.vue.d.ts +3 -3
  45. package/dist/components/PreviewBadge.vue.d.ts +3 -3
  46. package/dist/components/StockForecast.vue.d.ts +1 -1
  47. package/dist/components/TableActionableRow.vue.d.ts +4 -4
  48. package/dist/components/UnitDisplayControl.vue.d.ts +1 -1
  49. package/dist/components/icons/IconCommunity.vue.d.ts +1 -1
  50. package/dist/components/icons/IconDocumentation.vue.d.ts +1 -1
  51. package/dist/components/icons/IconEcosystem.vue.d.ts +1 -1
  52. package/dist/components/icons/IconSupport.vue.d.ts +1 -1
  53. package/dist/components/icons/IconTooling.vue.d.ts +1 -1
  54. package/dist/components/inventory-binding/InventoryBinding.vue.d.ts +5 -5
  55. package/dist/components/map/CoordinateDialog.vue.d.ts +4 -4
  56. package/dist/components/map/GoogleMap.vue.d.ts +6 -6
  57. package/dist/components/nested-multiselect/FmNestedMultiselectDialog.vue.d.ts +3 -3
  58. package/dist/components/shell/inventory/binding-dialog.vue.d.ts +3 -3
  59. package/dist/components/shell/inventory/binding-ui.vue.d.ts +5 -5
  60. package/dist/components/ui-library/FmDateRangePickerChip.vue.d.ts +5 -5
  61. package/dist/composable/useIframe.d.ts +1 -1
  62. package/dist/composable/useSearch.d.ts +1 -1
  63. package/dist/{decimal-GwZ2MmM_.js → decimal-E3w4eGHF.js} +1 -1
  64. package/dist/helper/number.d.ts +2 -0
  65. package/dist/{id-to-date-CMUZ2glF.js → id-to-date-gyR82hWy.js} +1 -1
  66. package/dist/is-linked-ingredient-error-fJ2TJb3z.js +37 -0
  67. package/dist/layout/InventoryLayout.vue.d.ts +1 -1
  68. package/dist/layout/SingleColumnLayout.vue.d.ts +5 -5
  69. package/dist/layout/components/NavigationButton.vue.d.ts +4 -4
  70. package/dist/{layout-C3IEOm7C.js → layout-BTYR4n3X.js} +1 -1
  71. package/dist/{purchase-order-transaction-type-DpZQe_jA.js → purchase-order-transaction-type-CUtdDhYo.js} +2 -2
  72. package/dist/stores/feature.d.ts +2 -1
  73. package/dist/stores/location.d.ts +108 -148
  74. package/dist/stores/supplier.d.ts +672 -18
  75. package/dist/stores/warehouse.d.ts +9 -5
  76. package/dist/supplier-Ed-Bva_-.js +60 -0
  77. package/dist/tsconfig.app.tsbuildinfo +1 -1
  78. package/dist/views/InventoryView.vue.d.ts +1 -1
  79. package/dist/views/SelectBussinessDialog.vue.d.ts +1 -1
  80. package/dist/views/approval/ApprovalView.vue.d.ts +1 -1
  81. package/dist/views/dev/ComponentPreview.vue.d.ts +1 -1
  82. package/dist/views/dev/components/CoordinateTest.vue.d.ts +1 -1
  83. package/dist/views/dev/components/DateRange.vue.d.ts +1 -1
  84. package/dist/views/dev/components/FmDecimalInputTest.vue.d.ts +1 -1
  85. package/dist/views/dev/components/FmMultiselectDialogGrouped.vue.d.ts +1 -1
  86. package/dist/views/dev/components/FmSelectTest.vue.d.ts +1 -1
  87. package/dist/views/dev/components/InventoryIframe.vue.d.ts +1 -1
  88. package/dist/views/dev/components/LayoutDev.vue.d.ts +1 -1
  89. package/dist/views/dev/components/MfCommontTest.vue.d.ts +1 -1
  90. package/dist/views/dev/components/NestedSelection.vue.d.ts +1 -1
  91. package/dist/views/dev/components/NumberStepper.vue.d.ts +1 -1
  92. package/dist/views/dev/components/TabStorageTest.vue.d.ts +1 -1
  93. package/dist/views/dev/components/UnitInput.vue.d.ts +1 -1
  94. package/dist/views/dev/helpers/pinia-test.d.ts +1 -1
  95. package/dist/views/home/HomeView.vue.d.ts +1 -1
  96. package/dist/views/iframe/inventory-bindings/bindings-dialog/BindingsDialog.vue.d.ts +1 -1
  97. package/dist/views/iframe/inventory-bindings/bindings-picker/BindingsPicker.vue.d.ts +1 -1
  98. package/dist/views/iframe/inventory-bindings/bindings-table/BindingsTable.vue.d.ts +1 -1
  99. package/dist/views/ingredients/IngredientsView.vue.d.ts +1 -1
  100. package/dist/views/ingredients/components/cannot-delete/CannotDelete.vue.d.ts +4 -4
  101. package/dist/views/ingredients/components/convert/ConvertForm.vue.d.ts +3 -3
  102. package/dist/views/ingredients/components/import-ingredients/ImportIngredientItem.vue.d.ts +1 -1
  103. package/dist/views/ingredients/components/import-ingredients/ImportIngredients.vue.d.ts +1 -1
  104. package/dist/views/ingredients/components/ingredient-binded-item/IngredientBindedItem.vue.d.ts +1 -1
  105. package/dist/views/ingredients/components/ingredient-dialog/IngredientDialog.vue.d.ts +5 -5
  106. package/dist/views/ingredients/components/ingredient-form/IngredientForm.vue.d.ts +4 -4
  107. package/dist/views/ingredients/components/inventory-binding/InventoryBindingForm.vue.d.ts +5 -5
  108. package/dist/views/ingredients/components/inventory-binding/InventoryBindingSummary.vue.d.ts +3 -3
  109. package/dist/views/ingredients/composables/use-ingredient-form.d.ts +8 -8
  110. package/dist/views/integration/IntegrationView.vue.d.ts +1 -1
  111. package/dist/views/integration/components/ApplyAddon.vue.d.ts +5 -5
  112. package/dist/views/integration/components/ApplyProduct.vue.d.ts +5 -5
  113. package/dist/views/integration/components/ApplyProductDialog.vue.d.ts +5 -5
  114. package/dist/views/integration/components/ApplyProductDialogV4.vue.d.ts +5 -5
  115. package/dist/views/receive-request/ReceiveRequestView.vue.d.ts +1 -1
  116. package/dist/views/receive-request/components/supplier-price-history/SupplierPriceHistory.vue.d.ts +1 -1
  117. package/dist/views/receive-request/components/transfer-details/TransferDetails.vue.d.ts +3 -3
  118. package/dist/views/receive-request/components/transfer-dialog/TransferDialog.vue.d.ts +4 -4
  119. package/dist/views/receive-request/components/transfer-form/SparkIcon.vue.d.ts +4 -4
  120. package/dist/views/receive-request/components/transfer-form/TransferForm.vue.d.ts +27 -27
  121. package/dist/views/receive-request/components/transfer-form/TransferForm2.vue.d.ts +4 -4
  122. package/dist/views/receive-request/components/transfer-form/components/ForecastStock.vue.d.ts +4 -4
  123. package/dist/views/receive-request/components/transfer-form/components/TransferItem.vue.d.ts +3 -3
  124. package/dist/views/receive-request/components/transfer-form/components/TransferItemTable.vue.d.ts +3 -3
  125. package/dist/views/receive-request/components/transfer-form/composables/use-backdate-po.d.ts +4 -4
  126. package/dist/views/receive-request/components/transfer-form/composables/use-compare-price.d.ts +3 -3
  127. package/dist/views/receive-request/components/transfer-form/composables/use-transfer-items.d.ts +0 -8
  128. package/dist/views/receive-request/composables/use-receive-request-form.d.ts +1012 -66
  129. package/dist/views/receive-request/composables/use-receive-request-table.d.ts +24 -24
  130. package/dist/views/receive-request/print-preview/PurchaseOrderPrintPreview.vue.d.ts +1 -1
  131. package/dist/views/recipe/RecipeView.vue.d.ts +1 -1
  132. package/dist/views/recipe/components/recipe-dialog/RecipeDialog.vue.d.ts +5 -5
  133. package/dist/views/recipe/components/recipe-form/RecipeForm.vue.d.ts +4 -4
  134. package/dist/views/recipe/composables/use-recipe-form.d.ts +8 -8
  135. package/dist/views/stock/StockView.vue.d.ts +1 -1
  136. package/dist/views/stock/components/StockHeaderPreview.vue.d.ts +1 -1
  137. package/dist/views/stock/components/StockHistory.vue.d.ts +3 -3
  138. package/dist/views/stock/components/StockRecalculateDialog.vue.d.ts +2 -2
  139. package/dist/views/stock/components/StockRecordCard.vue.d.ts +123 -46
  140. package/dist/views/stock/components/dialog/AdjustSkuDialog.vue.d.ts +4 -4
  141. package/dist/views/stock/components/dialog/AdjustedItemForm.vue.d.ts +3 -3
  142. package/dist/views/stock/components/dialog/ConvertSkuDialog.vue.d.ts +4 -4
  143. package/dist/views/stock/composables/use-stock-action.d.ts +11 -11
  144. package/dist/views/supplier/SupplierView.vue.d.ts +1 -1
  145. package/dist/views/supplier/components/SupplierDialog.vue.d.ts +4 -4
  146. package/dist/views/supplier/components/SupplierDialogProps.d.ts +1 -0
  147. package/dist/views/supplier/components/SupplierForm.vue.d.ts +10 -10
  148. package/dist/views/supplier/components/SupplierSupplyItemField.vue.d.ts +3 -3
  149. package/dist/views/supplier/composables/use-supplier-table.d.ts +3 -3
  150. package/dist/views/transfer-template/TransferTemplateView.vue.d.ts +1 -1
  151. package/dist/views/transfer-template/components/transfer-template-details/TransferTemplateDetails.vue.d.ts +3 -3
  152. package/dist/views/transfer-template/components/transfer-template-dialog/TransferTemplateDialog.vue.d.ts +4 -4
  153. package/dist/views/transfer-template/components/transfer-template-form/TransferTemplateForm.vue.d.ts +2 -2
  154. package/dist/views/transfer-template/components/transfer-template-form/components/TransferTemplateItem.vue.d.ts +3 -3
  155. package/dist/views/transfer-template/components/transfer-template-form/composables/use-transfer-locations.d.ts +7 -7
  156. package/dist/views/transfer-template/components/transfer-template-form/composables/use-transfer-template-items.d.ts +13 -8
  157. package/dist/views/transfer-template/composables/use-transfer-template-actions.d.ts +1020 -79
  158. package/dist/views/transfer-template/composables/use-transfer-template-table.d.ts +309 -11
  159. package/dist/views/unit/UnitView.vue.d.ts +1 -1
  160. package/dist/views/unit/components/unit-dialog/UnitDialog.vue.d.ts +5 -5
  161. package/dist/views/unit/components/unit-form/UnitForm.vue.d.ts +4 -4
  162. package/dist/views/unit/components/unit-summary/UnitSummary.vue.d.ts +3 -3
  163. package/dist/views/unit/components/unit-used-by/UnitUsedBy.vue.d.ts +1 -1
  164. package/dist/views/unit/composables/use-unit-form.d.ts +8 -8
  165. package/dist/views/warehouse/WarehouseView.vue.d.ts +1 -1
  166. package/dist/views/warehouse/components/WarehouseDialog.vue.d.ts +4 -4
  167. package/dist/views/warehouse/components/WarehouseForm.vue.d.ts +22 -14
  168. package/dist/{xlsx-CjErNF-B.js → xlsx-q6Ctgevr.js} +2759 -2759
  169. package/dist/{xlsx.util-CMXCCmUA.js → xlsx.util-Cvqg56mI.js} +2 -2
  170. package/package.json +2 -1
  171. package/dist/FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-DlIq3AyC.js +0 -272
  172. package/dist/PurchaseOrderPrintPreview-Do2KxBzF.js +0 -152
  173. package/dist/SupplierView-OmZ0X1E1.js +0 -801
  174. package/dist/TransferDialog.vue_vue_type_script_setup_true_lang-BJMBsA9j.js +0 -1672
  175. package/dist/TransferTemplateView-Da6ehaJF.js +0 -1101
  176. package/dist/app-Chj8x632.js +0 -67206
  177. package/dist/is-linked-ingredient-error-C6AghEwR.js +0 -37
  178. package/dist/supplier-dG_APcwB.js +0 -54
@@ -0,0 +1,1690 @@
1
+ import { reactive as Ke, onMounted as We, computed as P, h as O, getCurrentInstance as Le, watch as Ue, defineComponent as re, openBlock as x, createElementBlock as $, Fragment as ge, renderList as Ae, createElementVNode as f, toDisplayString as A, unref as e, resolveComponent as F, createVNode as k, withCtx as V, createCommentVNode as Y, ref as R, createBlock as q, normalizeClass as Re, normalizeStyle as st, isRef as de } from "vue";
2
+ import { useBreakpoints as ot, components as se, FmButtonVariant as Ve, useSnackbar as Te, useDialog as Ye, useProxiedModel as nt } from "@feedmepos/ui-library";
3
+ import { F as ne, D as Ne, R as ve } from "./row-action.enum-PMKMRrZR.js";
4
+ import { P as D, u as rt, f as at, b as Ze } from "./purchase-order-transaction-type-CUtdDhYo.js";
5
+ import { a as z, t as lt, a5 as Oe, D as it, b as Qe, R as qe, a2 as ut, a3 as ct, r as ze, a4 as dt, G as Ge, l as pt, A as we, M as mt, a6 as Je, c as Se, a9 as ft, O as Ee, P as Be, aa as yt, j as Z, ab as vt, u as Me, n as bt, ac as gt, ad as ht, ae as _t, E as Ct, af as kt, y as wt } from "./app-kYGuBDV8.js";
6
+ import { _ as Xe, u as St } from "./PremiumBadge.vue_vue_type_script_setup_true_lang-BRijSilS.js";
7
+ import { useI18n as ae } from "@feedmepos/mf-common";
8
+ import "vue-router";
9
+ import { u as xe } from "./supplier-Ed-Bva_-.js";
10
+ import { F as pe, c as Tt, _ as xt } from "./layout-BTYR4n3X.js";
11
+ import { _ as Pt } from "./PreviewBadge.vue_vue_type_script_setup_true_lang-CRZiQHjx.js";
12
+ import { defineStore as Ft } from "pinia";
13
+ function oe(t, y, o, l) {
14
+ var i, m, u;
15
+ if (l != null && l.manualTotalCost)
16
+ return l == null ? void 0 : l.manualTotalCost;
17
+ const d = (u = (m = (i = l == null ? void 0 : l.supplier) == null ? void 0 : i.supplyItems) == null ? void 0 : m.find(
18
+ (b) => b.skuId === t._id
19
+ )) == null ? void 0 : u.defaultCost, s = t.defaultCost, n = d ?? s, w = n == null ? void 0 : n.costPerUnit, p = w ? n != null && n.measurement ? +z(w) / +z(n == null ? void 0 : n.measurement.conversion) : +z(w) : void 0, a = p ? o ? p * +z(o.conversion) : p : void 0, c = a ? +z(y) * a : void 0;
20
+ return c ? {
21
+ ...lt(c ?? 0, 2),
22
+ currency: Oe()
23
+ } : {
24
+ amount: 0,
25
+ precision: 0,
26
+ currency: Oe()
27
+ };
28
+ }
29
+ var E = /* @__PURE__ */ ((t) => (t.Code = "Code", t.Name = "Name", t.Amount = "Amount", t.Cost = "Cost", t.Delete = "Delete", t))(E || {});
30
+ const Dt = () => {
31
+ const { t } = ae();
32
+ return O(
33
+ Xe,
34
+ {
35
+ zIndex: 50,
36
+ class: "whitespace-nowrap"
37
+ },
38
+ t("inventory.transfer.form.items.table.Cost", [Je()])
39
+ );
40
+ };
41
+ function It(t) {
42
+ const { t: y } = ae(), o = Ke({}), { breakpoints: l } = ot(), d = Qe();
43
+ We(() => {
44
+ for (const p of t.items) {
45
+ if (!p.totalCost)
46
+ continue;
47
+ const a = oe(p.sku, p.quantity, p.measurement, {
48
+ supplier: t.supplier
49
+ }), c = p.totalCost ?? it.reset();
50
+ a ? o[p.sku._id] = a.amount !== c.amount || a.precision !== c.precision : o[p.sku._id] = !0;
51
+ }
52
+ });
53
+ function s(p) {
54
+ var c, r, i, m, u, b, C;
55
+ return !!(((r = (c = p.defaultCost) == null ? void 0 : c.costPerUnit) == null ? void 0 : r.amount) ?? ((C = (b = (u = (m = (i = t.supplier) == null ? void 0 : i.supplyItems) == null ? void 0 : m.find((T) => T.skuId === p._id)) == null ? void 0 : u.defaultCost) == null ? void 0 : b.costPerUnit) == null ? void 0 : C.amount));
56
+ }
57
+ const n = [
58
+ {
59
+ id: "Code",
60
+ header: () => y("inventory.transfer.form.items.table.Code"),
61
+ accessorKey: "code",
62
+ size: 96,
63
+ cell(p) {
64
+ const a = p.row.original;
65
+ return O(se.FmTextField, {
66
+ modelValue: a.code,
67
+ "onUpdate:modelValue": (c) => {
68
+ t.updateItem({
69
+ ...a,
70
+ code: c
71
+ });
72
+ },
73
+ key: a.sku._id,
74
+ rules: [qe()],
75
+ labelMark: "required"
76
+ });
77
+ },
78
+ enableSorting: !1
79
+ },
80
+ {
81
+ id: "Name",
82
+ header: () => y("inventory.transfer.form.items.table.Name"),
83
+ minSize: 300,
84
+ cell(p) {
85
+ const a = p.row.original;
86
+ return O(se.FmTextField, {
87
+ modelValue: a.name,
88
+ "onUpdate:modelValue": (c) => {
89
+ t.updateItem({
90
+ ...a,
91
+ name: c
92
+ });
93
+ },
94
+ key: a.sku._id,
95
+ rules: [qe()],
96
+ labelMark: "required"
97
+ });
98
+ },
99
+ enableSorting: !1
100
+ },
101
+ {
102
+ id: "Amount",
103
+ header: () => y("inventory.transfer.form.items.table.Amount"),
104
+ minSize: 200,
105
+ cell(p) {
106
+ var r, i, m;
107
+ const a = p.row.original, c = (m = (i = (r = t.template) == null ? void 0 : r.purchaseOrder) == null ? void 0 : i.items) == null ? void 0 : m.find(
108
+ (u) => u.sku._id === a.sku._id
109
+ );
110
+ return O(ut, {
111
+ style: {
112
+ flex: "1 1 0%"
113
+ },
114
+ modelValue: {
115
+ amount: a.quantity ?? { amount: 1, precision: 0 },
116
+ measurement: a.measurement ?? null
117
+ },
118
+ key: a.sku._id,
119
+ unit: a.sku.unit,
120
+ "onUpdate:modelValue": (u) => {
121
+ const b = {
122
+ ...a,
123
+ quantity: u.amount,
124
+ measurement: u.measurement
125
+ };
126
+ d.enableTotalCost && (b.totalCost = oe(a.sku, a.quantity, a.measurement, {
127
+ supplier: t.supplier,
128
+ // NOTE: set undefined here if `manualTotalCost[row.sku._id] = false`, so that the function
129
+ // will return the auto calculated default cost instead of the manual total cost
130
+ manualTotalCost: o[a.sku._id] ? b.totalCost : void 0
131
+ })), t.updateItem(b);
132
+ },
133
+ stepper: c == null ? void 0 : c.quantityStep,
134
+ disableUnit: !!c,
135
+ disabled: t.disabled,
136
+ rules: [
137
+ ct(
138
+ +z(
139
+ (c == null ? void 0 : c.minimumQuantity) ?? {
140
+ amount: 1,
141
+ precision: ze(a.sku.unit, a.measurement)
142
+ }
143
+ )
144
+ ),
145
+ dt(
146
+ +z(
147
+ (c == null ? void 0 : c.maximumQuantity) ?? {
148
+ amount: 1,
149
+ precision: ze(a.sku.unit, a.measurement)
150
+ }
151
+ )
152
+ )
153
+ ],
154
+ applyDefaultRules: !0
155
+ });
156
+ },
157
+ enableSorting: !1
158
+ },
159
+ {
160
+ id: "Cost",
161
+ header: Dt,
162
+ size: 180,
163
+ cell(p) {
164
+ const a = p.row.original, c = s(a.sku), r = l.value.xs || l.value.sm;
165
+ return !o[a.sku._id] && c ? O(
166
+ "div",
167
+ {
168
+ class: [
169
+ "flex gap-4 fm-typo-en-body-md-400 items-center",
170
+ t.disabled ? "text-fm-color-typo-disabled" : ""
171
+ ],
172
+ key: a.sku._id
173
+ },
174
+ [
175
+ O(se.FmButton, {
176
+ prependIcon: "edit",
177
+ variant: Ve.Tertiary,
178
+ disabled: t.disabled,
179
+ onClick() {
180
+ t.updateItem({
181
+ ...a,
182
+ totalCost: oe(a.sku, a.quantity, a.measurement, {
183
+ supplier: t.supplier
184
+ })
185
+ }), o[a.sku._id] = !0;
186
+ }
187
+ }),
188
+ O(
189
+ "div",
190
+ {
191
+ class: "flex flex-col"
192
+ },
193
+ [
194
+ O(
195
+ "span",
196
+ r ? Ge(
197
+ oe(a.sku, a.quantity, a.measurement, {
198
+ supplier: t.supplier
199
+ })
200
+ ) : z(
201
+ oe(a.sku, a.quantity, a.measurement, {
202
+ supplier: t.supplier
203
+ })
204
+ )
205
+ ),
206
+ O(
207
+ "span",
208
+ {
209
+ class: [
210
+ "fm-typo-en-body-sm-400",
211
+ t.disabled ? "text-fm-color-typo-disabled" : "text-fm-color-neutral-gray-400"
212
+ ]
213
+ },
214
+ y("inventory.transfer.form.items.autoCalculated")
215
+ )
216
+ ]
217
+ )
218
+ ]
219
+ ) : O(
220
+ se.FmTextField,
221
+ {
222
+ modelValue: z(a.totalCost ?? { amount: 0, precision: 0 }),
223
+ key: a.sku._id,
224
+ "onUpdate:modelValue": (i) => {
225
+ t.updateItem({
226
+ ...a,
227
+ totalCost: {
228
+ ...pt(+i),
229
+ currency: Oe()
230
+ }
231
+ });
232
+ },
233
+ rules: [we(0), mt(2)]
234
+ },
235
+ {
236
+ prepend() {
237
+ return r ? O(
238
+ "div",
239
+ {
240
+ class: [
241
+ "text-fm-typo-en-body-lg-400",
242
+ t.disabled ? "text-fm-color-typo-disabled" : "text-fm-color-typo-primary"
243
+ ]
244
+ },
245
+ Je()
246
+ ) : null;
247
+ },
248
+ append() {
249
+ return c ? O(se.FmButton, {
250
+ prependIcon: "close",
251
+ variant: "tertiary",
252
+ disabled: t.disabled,
253
+ onClick() {
254
+ t.updateItem({
255
+ ...a,
256
+ // NOTE: different from PO template, if a default cost is reenabled,
257
+ // the total cost will automatically assigned
258
+ totalCost: oe(a.sku, a.quantity, a.measurement, {
259
+ supplier: t.supplier
260
+ })
261
+ }), o[a.sku._id] = !1;
262
+ }
263
+ }) : null;
264
+ }
265
+ }
266
+ );
267
+ },
268
+ enableSorting: !1
269
+ },
270
+ {
271
+ id: "Delete",
272
+ header: "",
273
+ cell(p) {
274
+ const a = p.row.original;
275
+ return O(se.FmButton, {
276
+ key: a.sku._id,
277
+ class: "delete-button",
278
+ type: "button",
279
+ icon: "delete",
280
+ variant: "tertiary",
281
+ size: "md",
282
+ disabled: t.disabled,
283
+ onClick: () => {
284
+ t.deleteItem(a);
285
+ }
286
+ });
287
+ },
288
+ enableSorting: !1,
289
+ size: 40,
290
+ meta: {
291
+ cellClass: "",
292
+ headerClass: ""
293
+ }
294
+ }
295
+ ];
296
+ return {
297
+ columnDefs: P(() => d.enableTotalCost && t.transferType === D.PURCHASE ? n : n.filter(
298
+ (p) => p.id !== "Cost"
299
+ /* Cost */
300
+ ))
301
+ };
302
+ }
303
+ function $t(t = "modelValue") {
304
+ var s, n;
305
+ const y = ((s = Le()) == null ? void 0 : s.props) ?? {}, o = ((n = Le()) == null ? void 0 : n.emit) ?? (() => {
306
+ }), l = Ke(Se(y[t] ?? {})), d = `update:${ft(t)}`;
307
+ return Ue(l, (w) => {
308
+ o(d, w);
309
+ }), l;
310
+ }
311
+ const At = { class: "flex flex-col gap-8 px-16 xs:px-4 sm:px-4 py-4 items-center" }, Rt = { class: "fm-typo-en-body-lg-600 xs:fm-typo-en-body-md-600 mr-auto xs:w-full" }, Vt = { class: "w-[450px] xs:w-full flex" }, Ot = { class: "fm-typo-en-body-md-400 whitespace-nowrap" }, Bt = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, et = /* @__PURE__ */ re({
312
+ __name: "SupplierPriceHistory",
313
+ props: {
314
+ prices: {}
315
+ },
316
+ setup(t) {
317
+ const y = xe();
318
+ function o(l) {
319
+ return y.suppliers.find((d) => d._id === l);
320
+ }
321
+ return (l, d) => (x(), $("div", At, [
322
+ (x(!0), $(ge, null, Ae(Object.keys(l.prices), (s) => {
323
+ var n;
324
+ return x(), $("div", {
325
+ key: s,
326
+ class: "flex items-center gap-12 xs:gap-4 xs:flex-wrap w-full"
327
+ }, [
328
+ f("div", Rt, A((n = o(s)) == null ? void 0 : n.name), 1),
329
+ f("div", Vt, [
330
+ (x(!0), $(ge, null, Ae(l.prices[s].slice(0, 3), (w) => {
331
+ var p;
332
+ return x(), $("div", {
333
+ key: w.date,
334
+ class: "flex flex-col w-[150px] xs:flex-1 text-ellipsis cursor-pointer"
335
+ }, [
336
+ f("div", Ot, [
337
+ f("span", null, A(w.totalCost ? e(Ge)(w.totalCost) : "No data"), 1),
338
+ d[0] || (d[0] = f("span", { class: "text-fm-color-typo-secondary" }, "/", -1)),
339
+ f("span", null, A(e(z)(w.totalUnit, !1)), 1),
340
+ f("span", null, A(((p = w.measurement) == null ? void 0 : p.abbrev) ?? w.unit.abbrev), 1)
341
+ ]),
342
+ f("div", Bt, [
343
+ f("span", null, "(#" + A(w.seqNumber) + ")", 1),
344
+ d[1] || (d[1] = f("span", null, A(" "), -1)),
345
+ f("span", null, A(e(Ee)(new Date(w.date))), 1)
346
+ ])
347
+ ]);
348
+ }), 128))
349
+ ])
350
+ ]);
351
+ }), 128))
352
+ ]));
353
+ }
354
+ }), Ut = { class: "flex flex-col gap-8 py-16" }, Et = { class: "flex items-center" }, Mt = { class: "flex-1 flex gap-1 items-center" }, Lt = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, Nt = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, qt = { class: "flex gap-8 w-full" }, zt = { class: "flex-1 flex flex-col gap-4" }, Ht = { class: "flex-1 flex flex-col gap-4" }, jt = { class: "flex gap-8 w-full" }, Kt = { class: "flex-1 flex flex-col gap-4" }, Wt = { class: "flex-1 flex flex-col gap-4" }, Yt = /* @__PURE__ */ re({
355
+ __name: "TransferItem",
356
+ props: {
357
+ cellByColId: {},
358
+ comparePriceBySku: {},
359
+ showComparePrice: { type: Boolean },
360
+ row: {}
361
+ },
362
+ setup(t) {
363
+ const { t: y } = ae();
364
+ return (o, l) => {
365
+ var n, w, p, a, c, r, i, m, u, b, C, T, Q, M, X, B, H, G, L, N, J, h, _, U, le, j, Pe;
366
+ const d = F("FmLabel"), s = F("FmSpacer");
367
+ return x(), $("div", Ut, [
368
+ f("div", Et, [
369
+ f("div", Mt, [
370
+ f("span", Lt, " (" + A(o.row.original.sku.code) + ") ", 1),
371
+ f("span", Nt, A(o.row.original.sku.name), 1)
372
+ ]),
373
+ f("div", null, [
374
+ k(e(pe), {
375
+ render: (p = (w = (n = o.cellByColId.Delete) == null ? void 0 : n.column) == null ? void 0 : w.columnDef) == null ? void 0 : p.cell,
376
+ props: (c = (a = o.cellByColId.Delete) == null ? void 0 : a.getContext) == null ? void 0 : c.call(a)
377
+ }, null, 8, ["render", "props"])
378
+ ])
379
+ ]),
380
+ f("div", qt, [
381
+ f("div", zt, [
382
+ k(d, {
383
+ label: e(y)(`inventory.transfer.form.items.table.${e(E).Code}`)
384
+ }, null, 8, ["label"]),
385
+ k(e(pe), {
386
+ render: (m = (i = (r = o.cellByColId[e(E).Code]) == null ? void 0 : r.column) == null ? void 0 : i.columnDef) == null ? void 0 : m.cell,
387
+ props: (b = (u = o.cellByColId[e(E).Code]) == null ? void 0 : u.getContext) == null ? void 0 : b.call(u)
388
+ }, null, 8, ["render", "props"]),
389
+ l[0] || (l[0] = f("div", { class: "fm-typo-en-body-md-600 text-fm-color-primary" }, null, -1))
390
+ ]),
391
+ f("div", Ht, [
392
+ k(d, {
393
+ label: e(y)(`inventory.transfer.form.items.table.${e(E).Name}`)
394
+ }, null, 8, ["label"]),
395
+ k(e(pe), {
396
+ render: (Q = (T = (C = o.cellByColId[e(E).Name]) == null ? void 0 : C.column) == null ? void 0 : T.columnDef) == null ? void 0 : Q.cell,
397
+ props: (X = (M = o.cellByColId[e(E).Name]) == null ? void 0 : M.getContext) == null ? void 0 : X.call(M)
398
+ }, null, 8, ["render", "props"]),
399
+ l[1] || (l[1] = f("div", { class: "fm-typo-en-body-md-600 text-fm-color-primary" }, null, -1))
400
+ ])
401
+ ]),
402
+ f("div", jt, [
403
+ f("div", Kt, [
404
+ k(d, {
405
+ label: e(y)(`inventory.transfer.form.items.table.${e(E).Amount}`)
406
+ }, null, 8, ["label"]),
407
+ k(e(pe), {
408
+ render: (G = (H = (B = o.cellByColId[e(E).Amount]) == null ? void 0 : B.column) == null ? void 0 : H.columnDef) == null ? void 0 : G.cell,
409
+ props: (N = (L = o.cellByColId[e(E).Amount]) == null ? void 0 : L.getContext) == null ? void 0 : N.call(L)
410
+ }, null, 8, ["render", "props"]),
411
+ l[2] || (l[2] = f("div", { class: "fm-typo-en-body-md-600 text-fm-color-primary" }, null, -1))
412
+ ]),
413
+ f("div", Wt, [
414
+ k(Xe, { "z-index": 50 }, {
415
+ default: V(() => [
416
+ k(d, {
417
+ label: e(y)(`inventory.transfer.form.items.table.${e(E).Cost}2`)
418
+ }, null, 8, ["label"])
419
+ ]),
420
+ _: 1
421
+ }),
422
+ k(e(pe), {
423
+ render: (_ = (h = (J = o.cellByColId[e(E).Cost]) == null ? void 0 : J.column) == null ? void 0 : h.columnDef) == null ? void 0 : _.cell,
424
+ props: (le = (U = o.cellByColId[e(E).Cost]) == null ? void 0 : U.getContext) == null ? void 0 : le.call(U)
425
+ }, null, 8, ["render", "props"]),
426
+ l[3] || (l[3] = f("div", { class: "fm-typo-en-body-md-600 text-fm-color-primary" }, null, -1))
427
+ ])
428
+ ]),
429
+ o.showComparePrice && Object.keys(o.comparePriceBySku[(j = o.row.original.sku) == null ? void 0 : j._id] ?? {}).length > 0 ? (x(), $(ge, { key: 0 }, [
430
+ k(s, { class: "h-8" }),
431
+ k(et, {
432
+ prices: o.comparePriceBySku[(Pe = o.row.original.sku) == null ? void 0 : Pe._id]
433
+ }, null, 8, ["prices"])
434
+ ], 64)) : Y("", !0)
435
+ ]);
436
+ };
437
+ }
438
+ });
439
+ function be(t) {
440
+ return yt.parse(t);
441
+ }
442
+ function ke(t) {
443
+ return {
444
+ _id: t.doc._id,
445
+ internal: t.type,
446
+ contactName: t.doc.profile.name,
447
+ name: t.doc.profile.name,
448
+ email: t.doc.profile.email,
449
+ phoneNumber: t.doc.profile.phoneNo,
450
+ registrationNumber: t.doc.profile.regNo,
451
+ address: t.doc.profile.address
452
+ };
453
+ }
454
+ function Zt(t, y) {
455
+ const o = xe(), l = Z();
456
+ l.watchLocation(async () => {
457
+ await o.readSuppliers();
458
+ const r = t();
459
+ if (r.supplier._id) return;
460
+ const i = o.suppliers[0], m = l.locations[0];
461
+ y({
462
+ ...r,
463
+ supplier: i ? be(i) : m ? ke(m) : r.supplier
464
+ });
465
+ });
466
+ const d = P(
467
+ () => {
468
+ var r, i;
469
+ return typeof ((i = (r = t()) == null ? void 0 : r.supplier) == null ? void 0 : i.internal) == "string" ? D.TRANSFER : D.PURCHASE;
470
+ }
471
+ ), s = P({
472
+ get() {
473
+ var r, i;
474
+ return (i = (r = t()) == null ? void 0 : r.supplier) == null ? void 0 : i._id;
475
+ },
476
+ set(r) {
477
+ const i = t() ?? {};
478
+ if (d.value === D.PURCHASE) {
479
+ const b = o.suppliers.find((C) => C._id === r);
480
+ y({
481
+ ...i,
482
+ supplier: b ? be(b) : i.supplier
483
+ });
484
+ return;
485
+ }
486
+ const u = l.locations.find((b) => b.doc._id === r);
487
+ y({
488
+ ...i,
489
+ supplier: u ? ke(u) : i.supplier
490
+ });
491
+ }
492
+ }), n = P(() => o.locationSuppliers.map(be)), w = P(() => o.businessSuppliers.map(be)), p = P(() => {
493
+ var i;
494
+ const r = ((i = l._currentLocation) == null ? void 0 : i.type) === Be.warehouse;
495
+ return l.locations.filter((m) => {
496
+ var b;
497
+ return !(m.dbName === ((b = l._currentLocation) == null ? void 0 : b.dbName)) && (!r || m.type === Be.warehouse) && m.acceptRequest;
498
+ }).map(ke);
499
+ }), a = P(() => {
500
+ if (d.value === D.PURCHASE) {
501
+ const i = n.value.map((u) => ({
502
+ label: u.name,
503
+ value: u._id
504
+ })), m = w.value.map((u) => ({
505
+ label: u.name,
506
+ sublabel: "Business supplier",
507
+ value: u._id
508
+ }));
509
+ return [...i, ...m];
510
+ }
511
+ return p.value.map((i) => ({
512
+ label: i.name,
513
+ sublabel: i.internal ? `${i.internal}` : void 0,
514
+ value: i._id
515
+ }));
516
+ }), c = P(() => {
517
+ var u, b;
518
+ const r = (b = (u = t()) == null ? void 0 : u.supplier) == null ? void 0 : b._id;
519
+ if (d.value === D.PURCHASE) {
520
+ const C = o.suppliers.find((T) => T._id === r);
521
+ return C ? be(C) : null;
522
+ }
523
+ const m = l.locations.find((C) => C.doc._id);
524
+ return m ? ke(m) : null;
525
+ });
526
+ return {
527
+ transferLocationModel: s,
528
+ transferLocationOptions: a,
529
+ locationOptionsTypePurchase: n,
530
+ locationOptionsTypeTransfer: p,
531
+ selectedLocation: c
532
+ };
533
+ }
534
+ function Qt(t) {
535
+ const y = P({
536
+ get() {
537
+ const s = t.getEffectiveAt();
538
+ return s ? new Date(s) : null;
539
+ },
540
+ set(s) {
541
+ t.setEffectiveAt((s == null ? void 0 : s.toISOString()) ?? null);
542
+ }
543
+ }), o = P({
544
+ get() {
545
+ return !!y.value;
546
+ },
547
+ set(s) {
548
+ s ? y.value = /* @__PURE__ */ new Date() : y.value = null;
549
+ }
550
+ }), l = P({
551
+ get() {
552
+ return y.value === null ? "" : Ee(y.value);
553
+ },
554
+ set(s) {
555
+ s ? y.value = /* @__PURE__ */ new Date(`${s} ${d.value}`) : y.value = null;
556
+ }
557
+ }), d = P({
558
+ get() {
559
+ return y.value === null ? "" : vt(y.value);
560
+ },
561
+ set(s) {
562
+ s ? y.value = /* @__PURE__ */ new Date(`${l.value} ${s}`) : y.value = null;
563
+ }
564
+ });
565
+ return {
566
+ backdatePo: y,
567
+ backdateSwitch: o,
568
+ backdateModel: l,
569
+ backdateTimeModel: d
570
+ };
571
+ }
572
+ const Gt = {
573
+ width: "24",
574
+ height: "24",
575
+ viewBox: "0 0 24 24",
576
+ fill: "none",
577
+ xmlns: "http://www.w3.org/2000/svg"
578
+ }, Jt = ["fill"], Xt = ["fill"], es = ["stroke"], ts = ["stroke"], ss = /* @__PURE__ */ re({
579
+ __name: "SparkIcon",
580
+ props: {
581
+ size: {
582
+ type: Number,
583
+ default: 24
584
+ },
585
+ color: {
586
+ type: String,
587
+ default: "#c7c7cc"
588
+ }
589
+ },
590
+ setup(t) {
591
+ return (y, o) => (x(), $("svg", Gt, [
592
+ f("path", {
593
+ 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",
594
+ fill: t.color
595
+ }, null, 8, Jt),
596
+ f("path", {
597
+ 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",
598
+ fill: t.color
599
+ }, null, 8, Xt),
600
+ f("path", {
601
+ 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",
602
+ stroke: t.color,
603
+ "stroke-width": "1.5",
604
+ "stroke-linecap": "round",
605
+ "stroke-linejoin": "round"
606
+ }, null, 8, es),
607
+ f("path", {
608
+ 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",
609
+ stroke: t.color,
610
+ "stroke-width": "1.5",
611
+ "stroke-linecap": "round",
612
+ "stroke-linejoin": "round"
613
+ }, null, 8, ts)
614
+ ]));
615
+ }
616
+ }), os = { class: "flex gap-8 items-center" }, ns = { class: "fm-typo-en-body-lg-600 line-clamp-1" }, rs = { class: "w-[343px] px-24 py-16 rounded-lg shadow-light-300 flex flex-col gap-[20px]" }, as = { class: "flex items-center w-full" }, ls = { class: "flex-1" }, is = { class: "fm-typo-en-title-sm-800" }, us = { class: "flex items-start gap-8" }, cs = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, ds = { class: "flex gap-1" }, He = /* @__PURE__ */ re({
617
+ __name: "ForecastStock",
618
+ props: {
619
+ disabled: { type: Boolean }
620
+ },
621
+ emits: ["update:poItems"],
622
+ setup(t, { emit: y }) {
623
+ const o = y, l = R(!1), d = R(7), s = St(), n = Te(), w = Me(), { t: p } = ae();
624
+ async function a() {
625
+ if (d.value < 1)
626
+ return;
627
+ l.value = !1, await s.readPurchaseOrder(d.value);
628
+ const c = [];
629
+ if (s.purchaseOrderForecast.skus.length <= 0) {
630
+ n.open({
631
+ message: p("inventory.transfer.form.items.forecastStock.notAvailable"),
632
+ type: "info"
633
+ });
634
+ return;
635
+ }
636
+ const r = s.purchaseOrderForecast.skus.reduce((i, m) => {
637
+ const u = w.skus.find((T) => T._id === m.id);
638
+ if (i.find((T) => T.sku._id === m.id) || !u)
639
+ return i;
640
+ const C = {
641
+ sku: u,
642
+ code: u.code,
643
+ name: u.name,
644
+ quantity: {
645
+ amount: m.amount,
646
+ precision: 0
647
+ }
648
+ };
649
+ return i.push(C), i;
650
+ }, c);
651
+ o("update:poItems", r);
652
+ }
653
+ return (c, r) => {
654
+ const i = F("FmButton"), m = F("FmIcon"), u = F("FmStepperField"), b = F("FmPopover");
655
+ return x(), q(b, {
656
+ disabled: c.disabled,
657
+ class: "flex",
658
+ "show-popover": l.value,
659
+ onPopoverChanged: r[3] || (r[3] = (C) => l.value = C)
660
+ }, {
661
+ "popover-button": V(() => [
662
+ k(i, {
663
+ label: "unused",
664
+ variant: "secondary",
665
+ "text-color": c.disabled ? "disabled" : "primary",
666
+ "bg-color": "transparent",
667
+ "border-color": c.disabled ? "disabled" : "primary",
668
+ disabled: c.disabled
669
+ }, {
670
+ default: V(() => [
671
+ f("div", os, [
672
+ k(ss, {
673
+ size: 24,
674
+ color: c.disabled ? "#c7c7cc" : "#ff7823"
675
+ }, null, 8, ["color"]),
676
+ f("div", ns, A(e(p)("inventory.transfer.form.items.forecastStock.title")), 1)
677
+ ])
678
+ ]),
679
+ _: 1
680
+ }, 8, ["text-color", "border-color", "disabled"])
681
+ ]),
682
+ default: V(() => [
683
+ f("div", rs, [
684
+ f("div", as, [
685
+ f("div", ls, [
686
+ k(Pt, { "z-index": 99 }, {
687
+ default: V(() => [
688
+ f("p", is, A(e(p)("inventory.transfer.form.items.forecastStock.title")), 1)
689
+ ]),
690
+ _: 1
691
+ })
692
+ ]),
693
+ k(i, {
694
+ icon: "close",
695
+ size: "md",
696
+ variant: "tertiary",
697
+ onClick: r[0] || (r[0] = (C) => l.value = !1)
698
+ })
699
+ ]),
700
+ k(u, {
701
+ modelValue: d.value,
702
+ "onUpdate:modelValue": r[1] || (r[1] = (C) => d.value = C),
703
+ label: e(p)("inventory.transfer.form.items.forecastStock.days"),
704
+ rules: [e(we)(1)]
705
+ }, {
706
+ "helper-text": V(() => [
707
+ f("div", us, [
708
+ k(m, {
709
+ name: "warning",
710
+ size: "sm",
711
+ class: "text-fm-color-system-warning-300"
712
+ }),
713
+ f("div", cs, A(e(p)("inventory.transfer.form.items.forecastStock.replace")), 1)
714
+ ])
715
+ ]),
716
+ _: 1
717
+ }, 8, ["modelValue", "label", "rules"]),
718
+ f("div", ds, [
719
+ r[4] || (r[4] = f("div", { class: "grow" }, null, -1)),
720
+ k(i, {
721
+ label: e(p)("common.cancel"),
722
+ variant: "tertiary",
723
+ onClick: r[2] || (r[2] = (C) => l.value = !1)
724
+ }, null, 8, ["label"]),
725
+ k(i, {
726
+ label: e(p)("inventory.transfer.form.items.forecastStock.generate"),
727
+ onClick: a
728
+ }, null, 8, ["label"])
729
+ ])
730
+ ])
731
+ ]),
732
+ _: 1
733
+ }, 8, ["disabled", "show-popover"]);
734
+ };
735
+ }
736
+ }), tt = bt((t, y) => ({
737
+ async getTemplate(o) {
738
+ const l = Z(), d = `${t.inventoryBackendUrl}/${l.currentLocationDBName}/purchase-order-template/${o}`;
739
+ return y.get(d);
740
+ },
741
+ async readTemplates() {
742
+ const o = Z(), l = `${t.inventoryBackendUrl}/${o.currentLocationDBName}/purchase-order-template`;
743
+ return y.get(l);
744
+ },
745
+ async createTemplate(o) {
746
+ const l = Z(), d = `${t.inventoryBackendUrl}/${l.currentLocationDBName}/purchase-order-template`;
747
+ return y.post(d, o);
748
+ },
749
+ async updateTemplate(o) {
750
+ const l = Z(), d = `${t.inventoryBackendUrl}/${l.currentLocationDBName}/purchase-order-template`;
751
+ return y.put(d, o);
752
+ },
753
+ async deleteTemplate(o) {
754
+ const l = Z(), d = `${t.inventoryBackendUrl}/${l.currentLocationDBName}/purchase-order-template`;
755
+ return y.delete(d, { _id: o._id, _rev: o._rev });
756
+ }
757
+ })), ps = Ft("transferTemplateActions", () => {
758
+ const t = rt("receive/request"), y = Ye(), o = Te(), l = tt(), d = R({});
759
+ function s() {
760
+ d.value = {
761
+ mode: ne.CREATE,
762
+ show: !0,
763
+ "onUpdate:show"(r) {
764
+ d.value.show = r;
765
+ }
766
+ };
767
+ }
768
+ function n(r) {
769
+ d.value = {
770
+ mode: ne.UPDATE,
771
+ modelValue: r,
772
+ show: !0,
773
+ "onUpdate:show"(i) {
774
+ d.value.show = i;
775
+ }
776
+ };
777
+ }
778
+ function w(r, i, m) {
779
+ y.open({
780
+ title: `Confirm deleting template ${r.name}?`,
781
+ message: "Deleted template can no longer be retrieved",
782
+ primaryActions: {
783
+ text: "Delete",
784
+ variant: Ve.Destructive,
785
+ close: !0
786
+ },
787
+ secondaryActions: {
788
+ text: "Cancel",
789
+ variant: Ve.Plain,
790
+ close: !0
791
+ }
792
+ }).onPrimary(async () => {
793
+ o.open({
794
+ title: `Deleting ${r.name}`,
795
+ type: "info"
796
+ });
797
+ try {
798
+ i.value = !0;
799
+ const [u] = await Promise.allSettled([
800
+ l.deleteTemplate(r),
801
+ new Promise((b) => setTimeout(b, 1e3))
802
+ ]);
803
+ if (u.status === "rejected") throw u.reason;
804
+ o.open({
805
+ title: `Deleted ${r.name}`,
806
+ type: "success"
807
+ });
808
+ } catch (u) {
809
+ o.open({
810
+ title: `Unable to delete ${r.name}`,
811
+ message: `See error from server: ${u}`,
812
+ type: "error"
813
+ }), console.error("error on deleting purchase order template", u);
814
+ } finally {
815
+ i.value = !1, m();
816
+ }
817
+ });
818
+ }
819
+ const p = R({});
820
+ function a(r) {
821
+ p.value = {
822
+ template: r,
823
+ show: !0,
824
+ "onUpdate:show"(i) {
825
+ p.value.show = i;
826
+ },
827
+ "onAction:edit"() {
828
+ p.value.show = !1, n(Se(r));
829
+ },
830
+ "onAction:use"() {
831
+ p.value.show = !1, c(Se(r));
832
+ }
833
+ };
834
+ }
835
+ function c(r) {
836
+ t.promptCreateTransferDialog({
837
+ ...r.purchaseOrder,
838
+ template: r._id
839
+ });
840
+ }
841
+ return {
842
+ createTemplate: s,
843
+ viewTemplate: a,
844
+ updateTemplate: n,
845
+ deleteTemplate: w,
846
+ useTemplate: c,
847
+ templateDialogProps: d,
848
+ templateDetailsProps: p,
849
+ transferFormDialogProps: t.transferDialogProps
850
+ };
851
+ });
852
+ function $e(t) {
853
+ var o;
854
+ return ((o = t == null ? void 0 : t.supplier) == null ? void 0 : o.internal) ? D.TRANSFER : D.PURCHASE;
855
+ }
856
+ const je = "use";
857
+ function ms() {
858
+ const { t } = ae(), { viewTemplate: y, updateTemplate: o, deleteTemplate: l, useTemplate: d } = ps(), s = R(new Array()), n = R(!1), w = Z(), p = tt();
859
+ async function a() {
860
+ if (s.value = [], !!w._currentLocation) {
861
+ n.value = !0;
862
+ try {
863
+ const [m] = await Promise.all([
864
+ p.readTemplates(),
865
+ new Promise((u) => setTimeout(u, 1e3))
866
+ ]);
867
+ s.value = m;
868
+ } catch (m) {
869
+ console.log("Something went wrong when fetching templates:", m);
870
+ } finally {
871
+ n.value = !1;
872
+ }
873
+ }
874
+ }
875
+ async function c(m) {
876
+ if (!s.value.find((u) => u._id) && w._currentLocation) {
877
+ n.value = !0;
878
+ try {
879
+ const [u] = await Promise.all([
880
+ p.getTemplate(m),
881
+ new Promise((b) => setTimeout(b, 1e3))
882
+ ]);
883
+ s.value = [u];
884
+ } catch (u) {
885
+ console.log("Something went wrong when fetching templates:", u);
886
+ } finally {
887
+ n.value = !1;
888
+ }
889
+ }
890
+ }
891
+ function r(m, u) {
892
+ switch (u = Se(u), m) {
893
+ case je:
894
+ return d(u);
895
+ case ve.Details:
896
+ return y(u);
897
+ case ve.Edit:
898
+ return o(u);
899
+ case ve.Delete:
900
+ return l(u, n, a);
901
+ }
902
+ }
903
+ return { columnDefs: [
904
+ {
905
+ id: "_id",
906
+ accessorKey: "_id",
907
+ header: () => t("inventory.transfer.table.createdAt"),
908
+ cell(m) {
909
+ return at(`${m.getValue()}`);
910
+ },
911
+ enableSorting: !0
912
+ },
913
+ {
914
+ id: "name",
915
+ accessorKey: "name",
916
+ header: () => t("inventory.transfer.table.name"),
917
+ enableSorting: !0,
918
+ size: 200
919
+ },
920
+ {
921
+ id: "supplier",
922
+ accessorKey: "purchaseOrder.supplier.name",
923
+ header: () => t("inventory.transfer.table.transferFrom"),
924
+ enableSorting: !0,
925
+ size: 200
926
+ },
927
+ {
928
+ id: "type",
929
+ header: () => t("inventory.transfer.receiveRequest.details.type.title"),
930
+ enableSorting: !0,
931
+ sortingFn(m, u) {
932
+ const b = $e(m.original.purchaseOrder), C = $e(u.original.purchaseOrder);
933
+ return b.localeCompare(C);
934
+ },
935
+ size: 200,
936
+ cell(m) {
937
+ const u = $e(m.row.original.purchaseOrder), b = t(
938
+ `inventory.transfer.receiveRequest.details.type.${u.toLocaleLowerCase()}`
939
+ );
940
+ return O(se.FmChip, {
941
+ label: b,
942
+ class: "fm-chip-transfer-info",
943
+ compact: !0
944
+ });
945
+ }
946
+ },
947
+ {
948
+ id: "noOfItems",
949
+ accessorKey: "purchaseOrder.items.length",
950
+ header: () => t("inventory.transfer.table.noOfItems"),
951
+ enableSorting: !1,
952
+ meta: {
953
+ width: "10rem",
954
+ textAlign: "right"
955
+ }
956
+ },
957
+ {
958
+ id: "ref",
959
+ accessorKey: "purchaseOrder.ref",
960
+ header: () => t("inventory.transfer.table.reference"),
961
+ enableSorting: !1,
962
+ size: "auto"
963
+ },
964
+ {
965
+ id: "action",
966
+ cell(m) {
967
+ const u = m.row.original, b = [
968
+ {
969
+ translationKey: "inventory.transfer.template.use",
970
+ value: je,
971
+ color: "text-fm-color-typo-primary"
972
+ },
973
+ Ne[ve.Edit],
974
+ Ne[ve.Delete]
975
+ ];
976
+ return Tt(b, (C) => r(C, u));
977
+ },
978
+ enableSorting: !1,
979
+ size: 40,
980
+ meta: {
981
+ cellClass: "",
982
+ headerClass: ""
983
+ }
984
+ }
985
+ ], templates: s, loading: n, fetchTemplates: a, loadTemplate: c };
986
+ }
987
+ function fs() {
988
+ const t = Te(), y = Ze(), o = R(!1);
989
+ Ue(o, (n) => {
990
+ n && (d.value = !0, l().finally(() => {
991
+ d.value = !1;
992
+ }));
993
+ });
994
+ async function l() {
995
+ try {
996
+ const { startDate: n, endDate: w } = gt(6), c = (await y.getPurchaseOrders({ start: n, end: w })).filter(
997
+ (r) => {
998
+ var i, m;
999
+ return r.status === ht.enum.COMPLETE && ((i = r.supplier) == null ? void 0 : i.internal) !== "warehouse" && ((m = r.supplier) == null ? void 0 : m.internal) !== "restaurant";
1000
+ }
1001
+ ).reduce((r, i) => {
1002
+ const m = new Date(_t(i._id)), u = i.supplier._id;
1003
+ for (const b of i.items) {
1004
+ if (!b.totalCost) continue;
1005
+ const C = r[b.sku._id] ?? {}, T = C[u] ?? [];
1006
+ T.push({
1007
+ date: m.toISOString(),
1008
+ totalUnit: b.quantity,
1009
+ totalCost: b.totalCost,
1010
+ unit: b.sku.unit,
1011
+ measurement: b.measurement,
1012
+ seqNumber: i.seqNumber
1013
+ }), C[u] = T, r[b.sku._id] = C;
1014
+ }
1015
+ return r;
1016
+ }, {});
1017
+ s.value = c;
1018
+ } catch {
1019
+ t.open({
1020
+ title: "Something went wrong",
1021
+ message: "Cannot retrieve supplier purchase history. Please try again."
1022
+ }), o.value = !1;
1023
+ }
1024
+ }
1025
+ const d = R(!1), s = R({});
1026
+ return {
1027
+ comparePricesToggle: o,
1028
+ comparePriceFetching: d,
1029
+ comparePriceBySku: s
1030
+ };
1031
+ }
1032
+ const ys = { class: "fm-typo-body-md-400 line-clamp-2 w-full" }, vs = { key: 0 }, bs = ["colspan"], gs = /* @__PURE__ */ re({
1033
+ __name: "TransferItemTable",
1034
+ props: {
1035
+ row: {},
1036
+ comparePriceBySku: {},
1037
+ showComparePrice: { type: Boolean }
1038
+ },
1039
+ setup(t) {
1040
+ function y(o) {
1041
+ return o.column.columnDef.meta;
1042
+ }
1043
+ return (o, l) => {
1044
+ var d, s;
1045
+ return x(), $(ge, null, [
1046
+ f("tr", {
1047
+ class: Re(["border-b border-fm-color-neutral-gray-100 hover:bg-fm-color-opacity-sm", {
1048
+ "bg-fm-color-neutral-gray-100": o.row.getIsSelected()
1049
+ }])
1050
+ }, [
1051
+ (x(!0), $(ge, null, Ae(o.row.getVisibleCells(), (n) => {
1052
+ var w, p, a, c;
1053
+ return x(), $("td", {
1054
+ key: n.id,
1055
+ class: Re([
1056
+ "h-[52px] px-16 text-fm-color-typo-primary",
1057
+ ((w = y(n)) == null ? void 0 : w.cellClass) ?? "px-16"
1058
+ ]),
1059
+ style: st({
1060
+ width: (p = y(n)) == null ? void 0 : p.width,
1061
+ maxWidth: (a = y(n)) == null ? void 0 : a.maxWidth,
1062
+ textAlign: ((c = y(n)) == null ? void 0 : c.textAlign) ?? "left"
1063
+ })
1064
+ }, [
1065
+ f("span", ys, [
1066
+ k(e(pe), {
1067
+ render: n.column.columnDef.cell,
1068
+ props: n.getContext()
1069
+ }, null, 8, ["render", "props"])
1070
+ ])
1071
+ ], 6);
1072
+ }), 128))
1073
+ ], 2),
1074
+ o.showComparePrice && Object.keys(o.comparePriceBySku[(d = o.row.original.sku) == null ? void 0 : d._id] ?? {}).length > 0 ? (x(), $("tr", vs, [
1075
+ f("td", {
1076
+ colspan: o.row.getVisibleCells().length
1077
+ }, [
1078
+ k(et, {
1079
+ prices: o.comparePriceBySku[(s = o.row.original.sku) == null ? void 0 : s._id]
1080
+ }, null, 8, ["prices"])
1081
+ ], 8, bs)
1082
+ ])) : Y("", !0)
1083
+ ], 64);
1084
+ };
1085
+ }
1086
+ }), hs = { class: "flex flex-col gap-4" }, _s = { class: "flex items-center gap-8 overflow-x-auto pb-12" }, Cs = { class: "flex flex-col gap-16" }, ks = { class: "flex flex-col gap-24" }, ws = {
1087
+ key: 0,
1088
+ class: "p-16 border border-fm-color-neutral-gray-300 fm-corner-radius-md flex flex-col"
1089
+ }, Ss = { class: "flex xs:flex-col sm:flex-col" }, Ts = {
1090
+ key: 0,
1091
+ class: "flex-1 flex gap-8 h-48 xs:flex-col xs:pt-16 sm:flex-col sm:pt-16"
1092
+ }, xs = { class: "flex-1" }, Ps = { class: "flex-1" }, Fs = {
1093
+ key: 1,
1094
+ class: "flex items-center gap-4"
1095
+ }, Ds = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary translate-y-[1px]" }, Is = { class: "flex flex-col gap-16" }, $s = { class: "flex sm:flex-col xs:flex-col gap-16 items-center xs:items-start sm:items-start" }, As = { class: "flex-1 gap-8 fm-typo-en-title-sm-800" }, Rs = { class: "flex gap-8" }, Vs = {
1096
+ key: 0,
1097
+ class: "xs:w-full"
1098
+ }, Os = /* @__PURE__ */ re({
1099
+ __name: "TransferForm2",
1100
+ props: {
1101
+ modelValue: {},
1102
+ disabled: { type: Boolean },
1103
+ suppliers: {},
1104
+ skus: {},
1105
+ lastClosingDate: {}
1106
+ },
1107
+ emits: ["validation-success", "form:ready"],
1108
+ setup(t, { expose: y, emit: o }) {
1109
+ const l = t, d = o, s = $t(), { t: n } = ae(), w = Z(), p = Me(), a = xe(), c = Qe(), r = ms(), i = P(
1110
+ () => r.templates.value.find((v) => v._id === s.template)
1111
+ ), m = P(() => s.status === "DRAFT" || !s._rev);
1112
+ We(async () => {
1113
+ try {
1114
+ if (!s.template) return;
1115
+ await r.loadTemplate(s.template);
1116
+ } finally {
1117
+ d("form:ready");
1118
+ }
1119
+ });
1120
+ const u = P(
1121
+ () => w.currentLocation.type === Be.restaurant
1122
+ );
1123
+ w.watchLocation(async () => {
1124
+ location && (s.supplier || (s.supplier = a.suppliers.find((v) => v) ?? s.supplier));
1125
+ });
1126
+ const b = Ye(), C = Zt(
1127
+ () => s,
1128
+ (v) => {
1129
+ Object.assign(s, v);
1130
+ }
1131
+ ), T = P({
1132
+ get() {
1133
+ var v;
1134
+ return typeof ((v = s == null ? void 0 : s.supplier) == null ? void 0 : v.internal) == "string" ? D.TRANSFER : D.PURCHASE;
1135
+ },
1136
+ set(v) {
1137
+ var K;
1138
+ const g = typeof ((K = s == null ? void 0 : s.supplier) == null ? void 0 : K.internal) == "string" ? D.TRANSFER : D.PURCHASE;
1139
+ v !== g && (s.supplier = v === D.PURCHASE ? C.locationOptionsTypePurchase.value[0] : C.locationOptionsTypeTransfer.value[0]);
1140
+ }
1141
+ }), Q = P(() => C.transferLocationOptions.value), M = P({
1142
+ get() {
1143
+ return s.supplier._id;
1144
+ },
1145
+ set(v) {
1146
+ C.transferLocationModel.value = v;
1147
+ }
1148
+ }), X = P({
1149
+ get() {
1150
+ return s.remark ?? void 0;
1151
+ },
1152
+ set(v) {
1153
+ s.remark = v;
1154
+ }
1155
+ }), { backdatePo: B, backdateSwitch: H, backdateModel: G, backdateTimeModel: L } = Qt({
1156
+ getEffectiveAt() {
1157
+ return s.effectiveAt;
1158
+ },
1159
+ setEffectiveAt(v) {
1160
+ s.effectiveAt = v;
1161
+ }
1162
+ }), { comparePricesToggle: N, comparePriceFetching: J, comparePriceBySku: h } = fs(), _ = R();
1163
+ y({
1164
+ validateInputs: () => {
1165
+ var v, g;
1166
+ (g = (v = _.value) == null ? void 0 : v.validateInputs) == null || g.call(v);
1167
+ },
1168
+ resetInputsValidation: () => {
1169
+ var v, g;
1170
+ (g = (v = _.value) == null ? void 0 : v.resetInputsValidation) == null || g.call(v);
1171
+ },
1172
+ resetInputs: () => {
1173
+ var v, g;
1174
+ (g = (v = _.value) == null ? void 0 : v.resetInputs) == null || g.call(v);
1175
+ }
1176
+ });
1177
+ const U = It({
1178
+ updateItem: (v) => {
1179
+ s.items = s.items.map((g) => g.sku._id !== v.sku._id ? g : v);
1180
+ },
1181
+ deleteItem: (v) => {
1182
+ s.items = s.items.filter((g) => g.sku._id !== v.sku._id);
1183
+ },
1184
+ get supplier() {
1185
+ return s.supplier;
1186
+ },
1187
+ get items() {
1188
+ return s.items;
1189
+ },
1190
+ get transferType() {
1191
+ return T.value;
1192
+ },
1193
+ get template() {
1194
+ return i.value;
1195
+ },
1196
+ get disabled() {
1197
+ return l.disabled;
1198
+ }
1199
+ }), le = P(() => U.columnDefs.value);
1200
+ function j() {
1201
+ var he, fe, _e;
1202
+ let v;
1203
+ ((I) => {
1204
+ I.IsInTemplate = "IsInTemplate", I.IsOutsideTemplate = "IsOutsideTemplate";
1205
+ })(v || (v = {}));
1206
+ const g = [
1207
+ {
1208
+ id: "IsInTemplate",
1209
+ label: n("inventory.transfer.form.items.fromTemplate.title"),
1210
+ sublabel: n("inventory.transfer.form.items.fromTemplate.sublabel")
1211
+ },
1212
+ {
1213
+ id: "IsOutsideTemplate",
1214
+ label: n("inventory.transfer.form.items.other.title"),
1215
+ collapse: !0
1216
+ }
1217
+ ], K = new Set((_e = (fe = (he = i.value) == null ? void 0 : he.purchaseOrder) == null ? void 0 : fe.items) == null ? void 0 : _e.map((I) => I.sku._id)), me = p.skus.map(
1218
+ (I) => ({
1219
+ label: I.name,
1220
+ sublabel: I.code,
1221
+ value: I,
1222
+ groupId: K.has(I._id) ? "IsInTemplate" : "IsOutsideTemplate"
1223
+ /* IsOutsideTemplate */
1224
+ })
1225
+ ), Fe = me.filter((I) => {
1226
+ var ee;
1227
+ return (ee = s.items) == null ? void 0 : ee.find((ie) => ie.sku._id === I.value._id);
1228
+ }).map((I) => I.value);
1229
+ b.open({
1230
+ title: n("inventory.transfer.form.items.selectItem"),
1231
+ closeButton: !0,
1232
+ contentComponent: wt,
1233
+ contentComponentProps: {
1234
+ modelValue: Fe,
1235
+ items: me,
1236
+ groups: K.size ? g : void 0
1237
+ },
1238
+ primaryActions: {
1239
+ text: n("common.confirm"),
1240
+ close: !0
1241
+ },
1242
+ secondaryActions: {
1243
+ text: n("common.close"),
1244
+ close: !0,
1245
+ variant: "tertiary"
1246
+ }
1247
+ }).onPrimary((I) => {
1248
+ const ee = s.items ?? [], ie = I.map((W) => {
1249
+ var Ce, ye;
1250
+ const ue = ee.find((ce) => ce.sku._id === W._id);
1251
+ if (ue)
1252
+ return ue;
1253
+ const te = ((ye = (Ce = i.value) == null ? void 0 : Ce.purchaseOrder.items) == null ? void 0 : ye.find(
1254
+ (ce) => ce.sku._id === W._id
1255
+ )) ?? {
1256
+ sku: W,
1257
+ code: W.code,
1258
+ name: W.name,
1259
+ quantity: {
1260
+ amount: 1,
1261
+ precision: 0
1262
+ }
1263
+ };
1264
+ return T.value == D.PURCHASE && (te.totalCost = oe(
1265
+ te.sku,
1266
+ te.quantity,
1267
+ te.measurement,
1268
+ {
1269
+ supplier: s.supplier
1270
+ }
1271
+ )), te;
1272
+ });
1273
+ ie.sort((W, ue) => W.sku.code.localeCompare(ue.sku.code)), s.items = ie;
1274
+ });
1275
+ }
1276
+ function Pe(v) {
1277
+ return v;
1278
+ }
1279
+ return (v, g) => {
1280
+ var ye, ce;
1281
+ const K = F("FmChip"), me = F("FmSelect"), Fe = F("FmTextField"), he = F("FmTextarea"), fe = F("FmSwitch"), _e = F("FmDatePicker"), I = F("FmTimePicker"), ee = F("FmFormGroup"), ie = F("FmIcon"), W = F("FmButton"), ue = F("FmTooltip"), te = F("FmTable"), Ce = F("FmForm");
1282
+ return x(), $("div", hs, [
1283
+ f("div", _s, [
1284
+ (ye = l.modelValue) != null && ye.template ? (x(), q(K, {
1285
+ key: 0,
1286
+ variant: v.disabled ? "warning" : void 0,
1287
+ label: `${e(n)("inventory.transfer.template.title")}: ${((ce = i.value) == null ? void 0 : ce.name) ?? e(n)("inventory.transfer.form.loading")}`,
1288
+ icon: "summarize",
1289
+ compact: ""
1290
+ }, null, 8, ["variant", "label"])) : Y("", !0),
1291
+ k(K, {
1292
+ label: e(w).currentLocation.name,
1293
+ icon: "storefront",
1294
+ compact: ""
1295
+ }, null, 8, ["label"]),
1296
+ v.lastClosingDate ? (x(), q(K, {
1297
+ key: 1,
1298
+ label: `${e(n)("inventory.transfer.form.lastClosing")}: ${e(Ee)(v.lastClosingDate)} ${e(Ct)(v.lastClosingDate)}`,
1299
+ icon: "calendar_month",
1300
+ compact: ""
1301
+ }, null, 8, ["label"])) : Y("", !0)
1302
+ ]),
1303
+ k(Ce, {
1304
+ ref_key: "formRef",
1305
+ ref: _,
1306
+ class: "flex flex-col gap-32",
1307
+ disabled: v.disabled,
1308
+ onValidationFailed: console.log,
1309
+ onValidationSuccess: g[12] || (g[12] = (De) => d("validation-success"))
1310
+ }, {
1311
+ default: V(() => {
1312
+ var De;
1313
+ return [
1314
+ f("div", Cs, [
1315
+ f("div", ks, [
1316
+ k(me, {
1317
+ label: e(n)("inventory.transfer.form.type.title"),
1318
+ "model-value": T.value,
1319
+ "onUpdate:modelValue": g[0] || (g[0] = (S) => T.value = S),
1320
+ items: [
1321
+ {
1322
+ label: e(n)("inventory.transfer.form.type.purchase"),
1323
+ value: e(D).PURCHASE,
1324
+ disabled: !e(C).locationOptionsTypePurchase.value.length,
1325
+ sublabel: e(C).locationOptionsTypePurchase.value.length ? void 0 : e(n)("inventory.transfer.form.noSupplierAvailable")
1326
+ },
1327
+ {
1328
+ label: e(n)("inventory.transfer.form.type.transfer"),
1329
+ value: e(D).TRANSFER,
1330
+ disabled: !e(C).locationOptionsTypeTransfer.value.length,
1331
+ sublabel: e(C).locationOptionsTypeTransfer.value.length ? void 0 : e(n)("inventory.transfer.form.noLocationAvailable")
1332
+ }
1333
+ ],
1334
+ rules: [e(we)(1)(Q.value)]
1335
+ }, null, 8, ["label", "model-value", "items", "rules"]),
1336
+ k(me, {
1337
+ label: T.value === e(D).PURCHASE ? e(n)("inventory.transfer.form.purchaseFrom") : e(n)("inventory.transfer.form.transferFrom"),
1338
+ modelValue: M.value,
1339
+ "onUpdate:modelValue": g[1] || (g[1] = (S) => M.value = S),
1340
+ items: Q.value
1341
+ }, null, 8, ["label", "modelValue", "items"]),
1342
+ k(Fe, {
1343
+ label: e(n)("inventory.transfer.form.reference"),
1344
+ "label-mark": "optional",
1345
+ modelValue: e(s).ref,
1346
+ "onUpdate:modelValue": g[2] || (g[2] = (S) => e(s).ref = S)
1347
+ }, null, 8, ["label", "modelValue"]),
1348
+ k(he, {
1349
+ label: e(n)("inventory.transfer.form.remark"),
1350
+ "label-mark": "optional",
1351
+ "max-length": 240,
1352
+ modelValue: X.value,
1353
+ "onUpdate:modelValue": g[3] || (g[3] = (S) => X.value = S),
1354
+ class: Re([v.disabled ? "text-fm-color-typo-disabled " : ""])
1355
+ }, null, 8, ["label", "modelValue", "class"]),
1356
+ e(c).enableBackdatePo ? (x(), $("div", ws, [
1357
+ f("div", Ss, [
1358
+ k(fe, {
1359
+ modelValue: e(H),
1360
+ "onUpdate:modelValue": g[4] || (g[4] = (S) => de(H) ? H.value = S : null),
1361
+ label: e(n)("inventory.transfer.form.backdate.title"),
1362
+ sublabel: e(n)("inventory.transfer.form.backdate.subtitle"),
1363
+ "label-placement": "right",
1364
+ disabled: u.value && !v.lastClosingDate || v.disabled
1365
+ }, null, 8, ["modelValue", "label", "sublabel", "disabled"]),
1366
+ g[13] || (g[13] = f("div", { class: "xs:hidden sm:hidden h-48 lg:w-16 md:w-16" }, null, -1)),
1367
+ e(H) ? (x(), $("div", Ts, [
1368
+ f("div", xs, [
1369
+ k(_e, {
1370
+ modelValue: e(G),
1371
+ "onUpdate:modelValue": g[5] || (g[5] = (S) => de(G) ? G.value = S : null)
1372
+ }, null, 8, ["modelValue"])
1373
+ ]),
1374
+ f("div", Ps, [
1375
+ k(I, {
1376
+ modelValue: e(L),
1377
+ "onUpdate:modelValue": g[6] || (g[6] = (S) => de(L) ? L.value = S : null)
1378
+ }, null, 8, ["modelValue"])
1379
+ ])
1380
+ ])) : Y("", !0)
1381
+ ]),
1382
+ e(B) ? (x(), q(ee, {
1383
+ key: 0,
1384
+ modelValue: e(B),
1385
+ "onUpdate:modelValue": g[7] || (g[7] = (S) => de(B) ? B.value = S : null),
1386
+ rules: [e(kt)(new Date(v.lastClosingDate), /* @__PURE__ */ new Date())]
1387
+ }, null, 8, ["modelValue", "rules"])) : Y("", !0),
1388
+ u.value && !v.lastClosingDate ? (x(), $("div", Fs, [
1389
+ k(ie, {
1390
+ name: "error",
1391
+ size: "sm",
1392
+ class: "text-fm-color-typo-warning"
1393
+ }),
1394
+ f("span", Ds, A(e(n)("inventory.transfer.form.backdate.error")), 1)
1395
+ ])) : Y("", !0)
1396
+ ])) : Y("", !0)
1397
+ ])
1398
+ ]),
1399
+ f("div", Is, [
1400
+ k(ee, {
1401
+ "model-value": e(s).items,
1402
+ rules: [e(we)(1)]
1403
+ }, null, 8, ["model-value", "rules"]),
1404
+ f("div", $s, [
1405
+ f("div", As, A(e(n)("inventory.transfer.form.items.title")), 1),
1406
+ f("div", Rs, [
1407
+ k(W, {
1408
+ disabled: v.disabled,
1409
+ label: e(n)("inventory.transfer.form.items.addItem"),
1410
+ "prepend-icon": "add",
1411
+ variant: "secondary",
1412
+ "text-color": "primary",
1413
+ "bg-color": "transparent",
1414
+ "border-color": "primary",
1415
+ onClick: g[8] || (g[8] = (S) => j()),
1416
+ size: "md"
1417
+ }, null, 8, ["disabled", "label"]),
1418
+ e(s).template ? (x(), q(ue, {
1419
+ key: 0,
1420
+ "z-index": 50
1421
+ }, {
1422
+ content: V(() => [
1423
+ f("div", null, A(e(n)("inventory.transfer.form.items.forecastStock.notAvailable")), 1)
1424
+ ]),
1425
+ default: V(() => [
1426
+ k(He, {
1427
+ "onUpdate:poItems": g[9] || (g[9] = (S) => e(s).items = S),
1428
+ disabled: ""
1429
+ })
1430
+ ]),
1431
+ _: 1
1432
+ })) : (x(), q(He, {
1433
+ key: 1,
1434
+ "onUpdate:poItems": g[10] || (g[10] = (S) => e(s).items = S),
1435
+ disabled: v.disabled || !!e(s).template
1436
+ }, null, 8, ["disabled"]))
1437
+ ])
1438
+ ]),
1439
+ T.value === e(D).PURCHASE && m.value && e(c).enableTotalCost && ((De = v.modelValue) != null && De.items.length) ? (x(), $("div", Vs, [
1440
+ k(fe, {
1441
+ label: e(J) ? e(n)("inventory.transfer.form.items.fetchingData") : e(n)("inventory.transfer.form.items.comparePriceHistory"),
1442
+ "prepend-icon": "compare_arrows",
1443
+ "label-placement": "right",
1444
+ "model-value": e(N),
1445
+ "onUpdate:modelValue": g[11] || (g[11] = (S) => de(N) ? N.value = S : null),
1446
+ disabled: e(J) || v.disabled
1447
+ }, null, 8, ["label", "model-value", "disabled"])
1448
+ ])) : Y("", !0),
1449
+ (x(), q(te, {
1450
+ "column-defs": le.value,
1451
+ "row-data": e(s).items,
1452
+ key: e(s).items.map((S) => S.sku._id).join("."),
1453
+ "hide-footer": ""
1454
+ }, {
1455
+ "table-row": V((S) => [
1456
+ k(gs, {
1457
+ "compare-price-by-sku": e(h),
1458
+ "show-compare-price": T.value === e(D).PURCHASE && e(N),
1459
+ row: S
1460
+ }, null, 8, ["compare-price-by-sku", "show-compare-price", "row"])
1461
+ ]),
1462
+ "list-row": V((S) => [
1463
+ (x(), q(xt, {
1464
+ row: S,
1465
+ key: e(s).items.map((Ie) => Ie.sku._id).join(".")
1466
+ }, {
1467
+ default: V((Ie) => [
1468
+ k(Yt, {
1469
+ "compare-price-by-sku": e(h),
1470
+ "show-compare-price": T.value === e(D).PURCHASE && e(N),
1471
+ row: S,
1472
+ "cell-by-col-id": Ie
1473
+ }, null, 8, ["compare-price-by-sku", "show-compare-price", "row", "cell-by-col-id"])
1474
+ ]),
1475
+ _: 2
1476
+ }, 1032, ["row"]))
1477
+ ]),
1478
+ _: 1
1479
+ }, 8, ["column-defs", "row-data"]))
1480
+ ])
1481
+ ];
1482
+ }),
1483
+ _: 1
1484
+ }, 8, ["disabled", "onValidationFailed"])
1485
+ ]);
1486
+ };
1487
+ }
1488
+ }), Bs = { class: "flex items-center" }, Us = { class: "fm-typo-en-title-md-800" }, Es = { class: "flex gap-4" }, Gs = /* @__PURE__ */ re({
1489
+ __name: "TransferDialog",
1490
+ props: {
1491
+ mode: {},
1492
+ modelValue: {},
1493
+ template: {},
1494
+ show: { type: Boolean },
1495
+ lastClosingDate: {}
1496
+ },
1497
+ emits: ["update:show", "submitted"],
1498
+ setup(t, { expose: y, emit: o }) {
1499
+ var J;
1500
+ const l = t, d = o, s = Ze(), n = Te(), w = xe(), p = Me(), a = Z(), { t: c } = ae(), r = R(!1), i = R(!1), m = R(!1);
1501
+ async function u(h) {
1502
+ if (h) {
1503
+ i.value = !1;
1504
+ try {
1505
+ await w.readSuppliers(), i.value = !0;
1506
+ } catch {
1507
+ n.open({
1508
+ title: c("inventory.transfer.form.unableToFetchListOfSuppliers.title"),
1509
+ message: c("inventory.transfer.form.unableToFetchListOfSuppliers.message"),
1510
+ type: "error"
1511
+ });
1512
+ }
1513
+ }
1514
+ }
1515
+ a.watchLocation(u);
1516
+ function b() {
1517
+ return {
1518
+ remark: void 0,
1519
+ ref: void 0,
1520
+ stockSnapshotId: void 0,
1521
+ effectiveAt: void 0,
1522
+ items: [],
1523
+ supplier: {
1524
+ _rev: void 0,
1525
+ email: void 0,
1526
+ internal: void 0,
1527
+ contactName: void 0,
1528
+ phoneNumber: void 0,
1529
+ registrationNumber: void 0,
1530
+ supplyItems: void 0,
1531
+ _id: "",
1532
+ name: "",
1533
+ address: {
1534
+ line2: void 0,
1535
+ line1: "",
1536
+ state: "",
1537
+ city: "",
1538
+ postcode: "",
1539
+ country: ""
1540
+ }
1541
+ },
1542
+ status: "DRAFT",
1543
+ _id: "",
1544
+ seqNumber: 0,
1545
+ deliveryOrder: []
1546
+ };
1547
+ }
1548
+ const C = nt(l, "show"), T = R(l.modelValue ?? b()), Q = R(((J = l.modelValue) == null ? void 0 : J._id) ?? `${Math.random()}`);
1549
+ Ue(
1550
+ () => l.show,
1551
+ (h) => {
1552
+ var _;
1553
+ h && (m.value = !1, T.value = l.modelValue ?? b(), Q.value = ((_ = l.modelValue) == null ? void 0 : _._id) ?? `${Math.random()}`);
1554
+ }
1555
+ );
1556
+ const M = P(() => !i.value || !m.value), X = P(() => {
1557
+ switch (l.mode) {
1558
+ case ne.READ:
1559
+ return "View transfer";
1560
+ case ne.CREATE:
1561
+ return c("inventory.transfer.receiveRequest.create.title");
1562
+ case ne.UPDATE:
1563
+ return c("inventory.transfer.receiveRequest.update.title");
1564
+ }
1565
+ return "";
1566
+ }), B = R();
1567
+ y({
1568
+ validateInputs: () => {
1569
+ var h, _;
1570
+ (_ = (h = B.value) == null ? void 0 : h.validateInputs) == null || _.call(h);
1571
+ },
1572
+ resetInputsValidation: () => {
1573
+ var h, _;
1574
+ (_ = (h = B.value) == null ? void 0 : h.resetInputsValidation) == null || _.call(h);
1575
+ },
1576
+ resetInputs: () => {
1577
+ var h, _;
1578
+ (_ = (h = B.value) == null ? void 0 : h.resetInputs) == null || _.call(h);
1579
+ }
1580
+ });
1581
+ async function H() {
1582
+ const h = T.value;
1583
+ r.value = !0, (h.supplier.internal === "warehouse" || h.supplier.internal === "restaurant") && (h.items = h.items.map(({ totalCost: _, ...U }) => U));
1584
+ try {
1585
+ await s.createPurchaseOrder(h), await new Promise((_) => setTimeout(_, 1e3)), n.open({
1586
+ title: c("inventory.transfer.receiveRequest.create.success"),
1587
+ message: c("inventory.transfer.receiveRequest.create.successMessage"),
1588
+ type: "success"
1589
+ }), d("update:show", !1), d("submitted");
1590
+ } catch (_) {
1591
+ n.open({
1592
+ title: c("inventory.transfer.receiveRequest.create.error.title"),
1593
+ message: c("inventory.transfer.receiveRequest.create.error.message"),
1594
+ type: "error"
1595
+ }), console.error("Error in creating purchase order", _);
1596
+ } finally {
1597
+ r.value = !1;
1598
+ }
1599
+ }
1600
+ async function G() {
1601
+ const h = T.value;
1602
+ r.value = !0, (h.supplier.internal === "warehouse" || h.supplier.internal === "restaurant") && (h.items = h.items.map(({ totalCost: _, ...U }) => U));
1603
+ try {
1604
+ await s.updatePurchaseOrder(h), await new Promise((_) => setTimeout(_, 1e3)), n.open({
1605
+ title: c("inventory.transfer.receiveRequest.update.success"),
1606
+ message: c("inventory.transfer.receiveRequest.update.successMessage"),
1607
+ type: "success"
1608
+ }), d("update:show", !1), d("submitted");
1609
+ } catch (_) {
1610
+ n.open({
1611
+ title: c("inventory.transfer.receiveRequest.update.error.title"),
1612
+ message: c("inventory.transfer.receiveRequest.update.error.message"),
1613
+ type: "error"
1614
+ }), console.error("Error in updating purchase order", _);
1615
+ } finally {
1616
+ r.value = !1;
1617
+ }
1618
+ }
1619
+ function L() {
1620
+ switch (l.mode) {
1621
+ case ne.CREATE:
1622
+ return H();
1623
+ case ne.UPDATE:
1624
+ return G();
1625
+ }
1626
+ }
1627
+ function N() {
1628
+ var h, _;
1629
+ (_ = (h = B.value) == null ? void 0 : h.validateInputs) == null || _.call(h);
1630
+ }
1631
+ return (h, _) => {
1632
+ const U = F("FmButton"), le = F("FmSideSheet");
1633
+ return x(), q(le, {
1634
+ modelValue: e(C),
1635
+ "onUpdate:modelValue": _[3] || (_[3] = (j) => de(C) ? C.value = j : null),
1636
+ "dismiss-away": "",
1637
+ "close-button": "",
1638
+ "max-width": 900
1639
+ }, {
1640
+ "side-sheet-header": V(() => [
1641
+ f("div", Bs, [
1642
+ f("div", Us, A(X.value), 1)
1643
+ ])
1644
+ ]),
1645
+ default: V(() => [
1646
+ (x(), q(Os, {
1647
+ class: "w-full",
1648
+ ref_key: "formRef",
1649
+ ref: B,
1650
+ "onForm:ready": _[0] || (_[0] = () => m.value = !0),
1651
+ onValidationSuccess: L,
1652
+ modelValue: T.value,
1653
+ "onUpdate:modelValue": _[1] || (_[1] = (j) => T.value = j),
1654
+ disabled: r.value || M.value,
1655
+ suppliers: e(w).suppliers,
1656
+ skus: e(p).skus,
1657
+ key: Q.value,
1658
+ "last-closing-date": h.lastClosingDate
1659
+ }, null, 8, ["modelValue", "disabled", "suppliers", "skus", "last-closing-date"]))
1660
+ ]),
1661
+ "side-sheet-footer": V(() => [
1662
+ f("div", Es, [
1663
+ k(U, {
1664
+ loading: r.value,
1665
+ disabled: M.value,
1666
+ label: e(c)("common.save"),
1667
+ onClick: N
1668
+ }, null, 8, ["loading", "disabled", "label"]),
1669
+ k(U, {
1670
+ disabled: M.value,
1671
+ variant: "tertiary",
1672
+ label: e(c)("common.close"),
1673
+ onClick: _[2] || (_[2] = (j) => d("update:show", !1))
1674
+ }, null, 8, ["disabled", "label"])
1675
+ ])
1676
+ ]),
1677
+ _: 1
1678
+ }, 8, ["modelValue"]);
1679
+ };
1680
+ }
1681
+ });
1682
+ export {
1683
+ Gs as _,
1684
+ tt as a,
1685
+ ps as b,
1686
+ oe as c,
1687
+ $t as d,
1688
+ ms as e,
1689
+ Zt as u
1690
+ };