@feedmepos/mf-inventory-portal 1.2.2-dev.1 → 1.2.2-dev.2
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.
- package/dist/{App-C9XQOsrP.js → App-C9TQqCtE.js} +1 -1
- package/dist/{ApprovalView-1GBi8VK8.js → ApprovalView-OL-N9Lyf.js} +2 -2
- package/dist/{BindingsDialog-D1jgrgHp.js → BindingsDialog-DlvRHQ4W.js} +2 -2
- package/dist/{BindingsPicker-BWpkVmRH.js → BindingsPicker-ZEHzsYDE.js} +1 -1
- package/dist/{BindingsTable-C3a5rQsU.js → BindingsTable-eY65pcGW.js} +1 -1
- package/dist/{ClosingDraftView-M1VZ7Ubp.js → ClosingDraftView-BV-SKPZK.js} +2 -2
- package/dist/{ClosingTemplateView-ubVOShkx.js → ClosingTemplateView-CxYHau8j.js} +2 -2
- package/dist/{DeliveryOrderPrintPreview-D8k7olwU.js → DeliveryOrderPrintPreview-DO_JtmNp.js} +1 -1
- package/dist/FmAdminBadge-D_pFyjwZ.js +44 -0
- package/dist/{FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-BzWLBxUC.js → FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-DQwdMQMt.js} +3 -3
- package/dist/{FmMultiselectDialog-DZlmvlH-.js → FmMultiselectDialog-DDgUnxWD.js} +1 -1
- package/dist/{FmUnitInput.vue_vue_type_script_setup_true_lang-qJ57T17v.js → FmUnitInput.vue_vue_type_script_setup_true_lang-BhVX95vU.js} +1 -1
- package/dist/{IngredientBindedItem.vue_vue_type_script_setup_true_lang-BmWJSWWs.js → IngredientBindedItem.vue_vue_type_script_setup_true_lang-MPczEiEk.js} +1 -1
- package/dist/{IngredientGroupView-Lc4juIpn.js → IngredientGroupView-DDAcRJv1.js} +2 -2
- package/dist/{IngredientsView-B7ilCUo1.js → IngredientsView-DRYfq7TU.js} +4 -4
- package/dist/{IntegrationView-CBbQi9eX.js → IntegrationView-CKWn92hD.js} +1282 -1267
- package/dist/{InventoryBindingForm-BYDnLY-B.js → InventoryBindingForm-B1bg6NVe.js} +1 -1
- package/dist/{InventoryBindingForm.vue_vue_type_script_setup_true_lang-DB_91rQK.js → InventoryBindingForm.vue_vue_type_script_setup_true_lang-DTLYIrAV.js} +3 -3
- package/dist/{InventoryBindingSummary-CLk6_myJ.js → InventoryBindingSummary-CuaThApt.js} +1 -1
- package/dist/{NumberPrecisionInput.vue_vue_type_script_setup_true_lang-TERMQx9m.js → NumberPrecisionInput.vue_vue_type_script_setup_true_lang-akYkxlTE.js} +1 -1
- package/dist/{PremiumBadge.vue_vue_type_script_setup_true_lang-DMS_1RZd.js → PremiumBadge.vue_vue_type_script_setup_true_lang-DOuAb0-X.js} +1 -1
- package/dist/{PublishView-BzYVIzVH.js → PublishView-BgVkOnNK.js} +8 -8
- package/dist/{PurchaseOrderPrintPreview-DkhYCWlU.js → PurchaseOrderPrintPreview-BILM7Pv3.js} +1 -1
- package/dist/{ReceiveRequestView-DYfMcV1P.js → ReceiveRequestView-C2G7xiIh.js} +8 -8
- package/dist/{RecipeView-0v-PiaZL.js → RecipeView-PdFQpnGR.js} +3 -3
- package/dist/{StockView-DmVv6yZd.js → StockView-CjAukNPs.js} +837 -838
- package/dist/{SupplierView-EFvZjuXh.js → SupplierView-BmFoSql1.js} +3 -3
- package/dist/TransferDetails.vue_vue_type_script_setup_true_lang-DRODPm3S.js +2494 -0
- package/dist/{TransferTemplateView-B6dh3lAb.js → TransferTemplateView-Iei3Az_r.js} +6 -6
- package/dist/{UnitView-Dwg-DzVw.js → UnitView-BOI2un-8.js} +3 -3
- package/dist/{WarehouseView-DL0AMn3R.js → WarehouseView-DuD7XGOl.js} +1 -1
- package/dist/api/food-market-hub.d.ts +1 -1
- package/dist/api/inventory.d.ts +18 -18
- package/dist/api/netsuite.d.ts +19 -18
- package/dist/app-BbMejD6B.js +153770 -0
- package/dist/app.d.ts +8 -8
- package/dist/app.js +1 -1
- package/dist/components/FmAdminBadge.vue.d.ts +1 -4
- package/dist/components/inventory-binding/InventoryBinding.vue.d.ts +7 -7
- package/dist/components/shell/inventory/binding-dialog.vue.d.ts +2 -2
- package/dist/components/shell/inventory/binding-ui.vue.d.ts +4 -4
- package/dist/{decimal-eRlOd74V.js → decimal-DNKR1AZD.js} +1 -1
- package/dist/{format-unit-display-CYusbGmI.js → format-unit-display-4IRjiRIx.js} +2 -2
- package/dist/{index-BxmvJ-ui.js → index-CgrUsU7I.js} +1 -1
- package/dist/{index-khYeCDt1.js → index-DMPT96NZ.js} +1 -1
- package/dist/{stock-B0suhBSW.js → stock-BUOpCvC9.js} +1 -1
- package/dist/stores/integration/foodmarkethub.d.ts +1 -1
- package/dist/stores/integration/netsuite.d.ts +9 -9
- package/dist/stores/inventory.d.ts +37 -37
- package/dist/stores/supplier.d.ts +24 -24
- package/dist/stores/warehouse.d.ts +1 -2
- package/dist/style.css +1 -1
- package/dist/{supplier-JDcv1lRx.js → supplier-BRRCoi_n.js} +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{use-ingredient-select-dialog-w6dHX9B4.js → use-ingredient-select-dialog-BhwfrMyK.js} +1 -1
- package/dist/{use-inventory-binding-dialog--7QT5_-Q.js → use-inventory-binding-dialog-BK_VNgfc.js} +1 -1
- package/dist/views/adjustment-template/wastage-template/actions.d.ts +12 -12
- package/dist/views/adjustment-template/wastage-template/form/WastageTemplateItemTable.vue.d.ts +2 -2
- package/dist/views/adjustment-template/wastage-template/form/useAdjustmentTemplateItems.d.ts +1 -1
- package/dist/views/adjustment-template/wastage-template/table.d.ts +12 -12
- package/dist/views/closing-draft/components/closing-draft-dialog/ClosingDraftDialog.vue.d.ts +32 -32
- package/dist/views/closing-draft/composables/use-closing-draft-table.d.ts +96 -96
- package/dist/views/closing-template/components/closing-template-form/composables/use-closing-template-items.d.ts +3 -3
- package/dist/views/closing-template/composables/use-closing-template-actions.d.ts +36 -36
- package/dist/views/closing-template/composables/use-closing-template-table.d.ts +36 -36
- package/dist/views/ingredients/components/convert/ConvertForm.vue.d.ts +2 -2
- package/dist/views/ingredients/components/ingredient-form/IngredientForm.vue.d.ts +6 -6
- package/dist/views/ingredients/components/inventory-binding/InventoryBindingForm.vue.d.ts +4 -4
- package/dist/views/ingredients/composables/use-ingredient-table.d.ts +3 -3
- package/dist/views/integration/components/ApplyProductDialog.vue.d.ts +2 -2
- package/dist/views/integration/components/ApplyProductDialogV4.vue.d.ts +2 -2
- package/dist/views/integration/components/netsuite/InventoryTransfer.vue.d.ts +2 -2
- package/dist/views/integration/components/netsuite/InventoryTransferIngredientTable.vue.d.ts +10 -10
- package/dist/views/integration/components/netsuite/PurchaseOrder.vue.d.ts +2 -2
- package/dist/views/integration/components/netsuite/TransferOrder.vue.d.ts +2 -2
- package/dist/views/integration/components/netsuite/business/BusinessNetSuiteSideSheet.vue.d.ts +6 -6
- package/dist/views/receive-request/components/transfer-form/NetSuiteField.vue.d.ts +2 -2
- package/dist/views/receive-request/components/transfer-form/TransferForm.vue.d.ts +450 -94
- package/dist/views/receive-request/components/transfer-form/components/ForecastStock.vue.d.ts +10 -10
- package/dist/views/receive-request/components/transfer-form/components/TransferItemTable.vue.d.ts +20 -20
- package/dist/views/receive-request/components/transfer-form/composables/use-transfer-items.d.ts +5 -5
- package/dist/views/receive-request/composables/use-process-purchase-order.d.ts +111 -22
- package/dist/views/receive-request/composables/use-receive-request-form.d.ts +669 -135
- package/dist/views/receive-request/composables/use-receive-request-table.d.ts +780 -157
- package/dist/views/recipe/components/recipe-form/RecipeForm.vue.d.ts +2 -2
- package/dist/views/stock/components/dialog/AdjustedItemForm.vue.d.ts +10 -10
- package/dist/views/stock/components/dialog/AmendAdjustmentForm.vue.d.ts +4 -4
- package/dist/views/supplier/components/SupplierForm.vue.d.ts +2 -2
- package/dist/views/supplier/components/SupplierSupplyItemField.vue.d.ts +2 -2
- package/dist/views/supplier/composables/use-supplier-table.d.ts +1 -1
- package/dist/views/transfer-template/components/transfer-template-dialog/TransferTemplateDialog.vue.d.ts +12 -12
- package/dist/views/transfer-template/components/transfer-template-form/components/NetSuiteCustomCodeSelection.vue.d.ts +8 -8
- package/dist/views/transfer-template/components/transfer-template-form/components/TransferTemplateItemTable.vue.d.ts +10 -10
- package/dist/views/transfer-template/components/transfer-template-form/composables/use-transfer-locations.d.ts +4 -4
- package/dist/views/transfer-template/components/transfer-template-form/composables/use-transfer-template-items.d.ts +5 -5
- package/dist/views/transfer-template/composables/use-netsuite-custom-field.d.ts +15 -15
- package/dist/views/transfer-template/composables/use-transfer-template-actions.d.ts +72 -72
- package/dist/views/transfer-template/composables/use-transfer-template-table.d.ts +72 -72
- package/dist/views/unit/components/unit-form/UnitForm.vue.d.ts +2 -2
- package/dist/views/unit/components/unit-summary/UnitSummary.vue.d.ts +2 -2
- package/dist/views/unit/composables/use-unit-table.d.ts +1 -1
- package/dist/views/warehouse/components/WarehouseForm.vue.d.ts +2 -4
- package/package.json +1 -1
- package/dist/FmAdminBadge-BFDkedmh.js +0 -34
- package/dist/TransferDetails.vue_vue_type_script_setup_true_lang-B7Y2vAlL.js +0 -2336
- package/dist/app-D6kqZa_9.js +0 -130114
|
@@ -1,53 +1,54 @@
|
|
|
1
|
-
import { defineComponent as Y, mergeModels as
|
|
2
|
-
import { E as
|
|
3
|
-
import {
|
|
4
|
-
import { useDialogChild as
|
|
1
|
+
import { defineComponent as Y, mergeModels as je, useModel as Se, onMounted as pe, ref as M, computed as _, resolveComponent as F, openBlock as I, createElementBlock as V, createElementVNode as l, toDisplayString as j, unref as S, createVNode as h, createBlock as U, withCtx as O, Fragment as J, renderList as W, normalizeClass as q, normalizeStyle as Te, createSlots as se, createCommentVNode as z, withModifiers as _e, reactive as ve, watch as ge, isRef as ae, Teleport as ce, h as D, createTextVNode as P, watchEffect as ze } from "vue";
|
|
2
|
+
import { E as He } from "./empty-placeholder-wf6-BWE8.js";
|
|
3
|
+
import { b1 as Ue, aQ as Xe, f as te, u as $, b2 as Qe, b as ie, aB as de, j as Ye, aY as me, a4 as ye, a5 as Ae, a as be, a2 as Je, Q as G, $ as we, b3 as ke, aH as Be, aU as Ce, s as Ee, y as Fe, a0 as ue, c as Le, _ as Ke, C as Pe } from "./app-BbMejD6B.js";
|
|
4
|
+
import { useDialogChild as qe, useDialog as re, useProxiedModel as le, useSnackbar as ee, useBreakpoints as Ve, components as ne } from "@feedmepos/ui-library";
|
|
5
5
|
import { useI18n as Z, useCoreStore as oe } from "@feedmepos/mf-common";
|
|
6
|
-
import { a as
|
|
7
|
-
import { _ as
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
import { a as Ze, b as Ge, c as We, u as $e } from "./index-CgrUsU7I.js";
|
|
7
|
+
import { _ as et, F as tt } from "./FmUnitInput.vue_vue_type_script_setup_true_lang-BhVX95vU.js";
|
|
8
|
+
import { F as Ne } from "./FmAdminBadge-D_pFyjwZ.js";
|
|
9
|
+
const nt = "data:image/svg+xml,%3csvg%20width='200'%20height='101'%20viewBox='0%200%20200%20101'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M98.9161%2038.4456V24.1772H108.527V27.1988H102.12V30.2202H107.347V32.7382H102.12V38.4456H98.9161Z'%20fill='%235D5359'/%3e%3cpath%20d='M110.382%2031.2276C110.382%2027.5345%20113.249%2024.1772%20117.127%2024.1772C121.174%2024.1772%20123.872%2027.7024%20123.872%2031.3953C123.872%2035.0884%20121.005%2038.6133%20117.127%2038.6133C113.08%2038.4456%20110.382%2034.9204%20110.382%2031.2276ZM117.127%2035.5919C119.487%2035.5919%20120.499%2033.4096%20120.499%2031.2276C120.499%2029.0452%20119.319%2027.0309%20117.127%2027.0309C114.935%2027.0309%20113.754%2029.213%20113.754%2031.2276C113.754%2033.5776%20114.935%2035.5919%20117.127%2035.5919Z'%20fill='%235D5359'/%3e%3cpath%20d='M126.232%2031.2276C126.232%2027.5345%20129.099%2024.1772%20132.977%2024.1772C137.024%2024.1772%20139.722%2027.7024%20139.722%2031.3953C139.722%2035.0884%20136.855%2038.6133%20132.977%2038.6133C128.93%2038.4456%20126.232%2034.9204%20126.232%2031.2276ZM132.977%2035.5919C135.337%2035.5919%20136.349%2033.4096%20136.349%2031.2276C136.349%2029.0452%20135.169%2027.0309%20132.977%2027.0309C130.785%2027.0309%20129.604%2029.213%20129.604%2031.2276C129.604%2033.5776%20130.785%2035.5919%20132.977%2035.5919Z'%20fill='%235D5359'/%3e%3cpath%20d='M142.926%2038.4455V24.345H148.153C152.874%2024.345%20155.235%2027.5343%20155.235%2031.3952C155.235%2035.5918%20152.368%2038.4455%20148.153%2038.4455H142.926ZM148.153%2027.0308H146.129V35.4238H148.153C150.513%2035.4238%20151.862%2033.5775%20151.862%2031.2272C151.862%2028.8773%20150.513%2027.0308%20148.153%2027.0308Z'%20fill='%235D5359'/%3e%3cpath%20d='M110.045%2057.5607V49.1676L107.009%2055.2107H105.324L102.12%2049.1676V57.5607H98.9161V43.4604H102.457L106.167%2050.8465L109.876%2043.4604H113.417V57.5607H110.045Z'%20fill='%235D5359'/%3e%3cpath%20d='M115.947%2057.5607L121.342%2043.4604H124.04L129.436%2057.5607H125.895L124.715%2054.3716H120.331L119.319%2057.5607H115.947ZM122.691%2046.9856L121.005%2052.1893H124.378L122.691%2046.9856Z'%20fill='%235D5359'/%3e%3cpath%20d='M131.965%2057.5607V43.4604H138.373C141.07%2043.4604%20142.925%2045.8105%20142.925%2048.1605C142.925%2049.8393%20142.082%2051.5179%20140.565%2052.1893L143.768%2057.393H140.059L137.192%2052.8607H135V57.393H131.965V57.5607ZM135.169%2050.175H138.204C139.047%2050.175%20139.553%2049.3356%20139.553%2048.1605C139.553%2046.9856%20138.71%2046.3142%20138.035%2046.3142H135.169V50.175Z'%20fill='%235D5359'/%3e%3cpath%20d='M146.635%2057.5607V43.4604H150.007V49.8393L155.403%2043.4604H158.776L153.548%2049.6713L159.281%2057.5607H155.74L151.693%2051.5179L150.007%2053.3642V57.5607H146.635Z'%20fill='%235D5359'/%3e%3cpath%20d='M171.422%2054.7073V57.5607H161.474V43.4604H171.253V46.3142H164.677V48.9999H170.242V51.6856H164.677V54.7073H171.422Z'%20fill='%235D5359'/%3e%3cpath%20d='M185.417%2046.3142H181.202V57.5607H177.829V46.3142H173.614V43.4604H185.417V46.3142Z'%20fill='%235D5359'/%3e%3cpath%20d='M111.057%2062.5967V76.6973H107.853V70.9898H102.12V76.6973H98.9161V62.5967H102.12V68.1361H107.853V62.5967H111.057Z'%20fill='%235D5359'/%3e%3cpath%20d='M124.04%2069.815V62.5967H127.244V69.815C127.244%2073.6758%20125.389%2076.865%20121.005%2076.865C116.453%2076.865%20114.766%2073.5078%20114.766%2069.815V62.5967H117.97V69.815C117.97%2071.997%20118.813%2074.0115%20121.005%2074.0115C123.366%2074.0115%20124.04%2071.997%20124.04%2069.815Z'%20fill='%235D5359'/%3e%3cpath%20d='M138.036%2076.6973H131.122V62.5967H139.047C141.071%2062.5967%20142.251%2064.4433%20142.251%2066.2898C142.251%2067.6327%20141.576%2068.9755%20140.228%2069.4793C141.914%2069.9827%20142.926%2071.1578%20142.926%2073.1721C142.757%2075.5221%20140.733%2076.6973%20138.036%2076.6973ZM134.326%2065.4504V68.3041H137.53C138.204%2068.3041%20138.879%2067.8004%20138.879%2066.7933C138.879%2065.7861%20138.373%2065.2827%20137.698%2065.2827H134.326V65.4504ZM138.204%2070.8221H134.494V73.8435H138.204C139.047%2073.8435%20139.722%2073.1721%20139.722%2072.3327C139.553%2071.6613%20138.879%2070.8221%20138.204%2070.8221Z'%20fill='%235D5359'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M73.4753%2051.4994C78.7281%2050.5396%2082.8911%2046.4891%2083.9954%2041.3137L84.1232%2040.7134L83.9445%2040.1256C80.5804%2029.066%2071.9945%2020.2704%2061.0373%2016.5726C57.4%2015.3451%2053.5046%2014.6804%2049.458%2014.6804C45.4112%2014.6804%2041.5158%2015.3451%2037.8784%2016.5726C26.9214%2020.2704%2018.3354%2029.066%2014.9712%2040.1256L14.7924%2040.7134L14.9206%2041.3137C16.0247%2046.4891%2020.1875%2050.5396%2025.4405%2051.4994V58.8839H14.4183C14.6758%2059.9557%2014.9818%2061.0088%2015.3337%2062.0411C20.1553%2076.1811%2033.6083%2086.3619%2049.458%2086.3619C65.3074%2086.3619%2078.7606%2076.1811%2083.5822%2062.0411C83.9342%2061.0088%2084.2399%2059.9557%2084.4974%2058.8839H73.4753V51.4994ZM41.0517%2020.5973V38.5742C41.0517%2043.1931%2044.8155%2046.9371%2049.458%2046.9371C54.1005%2046.9371%2057.8641%2043.1931%2057.8641%2038.5742V20.5973C55.1919%2019.856%2052.3732%2019.4592%2049.458%2019.4592C46.5428%2019.4592%2043.7241%2019.856%2041.0517%2020.5973ZM62.6675%2022.3673V38.5742C62.6675%2043.1931%2066.431%2046.9371%2071.0735%2046.9371C74.9051%2046.9371%2078.1425%2044.3848%2079.1528%2040.8942C76.4672%2032.6902%2070.4379%2025.9824%2062.6675%2022.3673ZM60.2658%2046.1322C57.8753%2049.5094%2053.9255%2051.7159%2049.458%2051.7159C44.9902%2051.7159%2041.0408%2049.5094%2038.65%2046.1322C36.6982%2048.8894%2033.7074%2050.8662%2030.2439%2051.4994V58.8839H68.6718V51.4994C65.2083%2050.8662%2062.2175%2048.8894%2060.2658%2046.1322ZM21.1583%2063.6628C26.1349%2074.2514%2036.9382%2081.5834%2049.458%2081.5834C61.9776%2081.5834%2072.781%2074.2514%2077.7574%2063.6628H21.1583ZM36.2482%2038.5742V22.3673C28.4779%2025.9824%2022.4486%2032.6902%2019.7631%2040.8942C20.7733%2044.3848%2024.0106%2046.9371%2027.8422%2046.9371C32.4847%2046.9371%2036.2482%2043.1931%2036.2482%2038.5742Z'%20fill='%23FFC35D'/%3e%3c/svg%3e";
|
|
10
|
+
var De = { exports: {} };
|
|
11
|
+
(function(C, y) {
|
|
11
12
|
(function() {
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
return n.filter(function(
|
|
15
|
-
return
|
|
13
|
+
var o = {};
|
|
14
|
+
C.exports = o, o.simpleFilter = function(r, n) {
|
|
15
|
+
return n.filter(function(t) {
|
|
16
|
+
return o.test(r, t);
|
|
16
17
|
});
|
|
17
|
-
},
|
|
18
|
-
return
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
var
|
|
22
|
-
r =
|
|
18
|
+
}, o.test = function(r, n) {
|
|
19
|
+
return o.match(r, n) !== null;
|
|
20
|
+
}, o.match = function(r, n, t) {
|
|
21
|
+
t = t || {};
|
|
22
|
+
var i = 0, b = [], w = n.length, f = 0, m = 0, s = t.pre || "", u = t.post || "", x = t.caseSensitive && n || n.toLowerCase(), E;
|
|
23
|
+
r = t.caseSensitive && r || r.toLowerCase();
|
|
23
24
|
for (var k = 0; k < w; k++)
|
|
24
|
-
|
|
25
|
-
return
|
|
26
|
-
},
|
|
27
|
-
return !n || n.length === 0 ? [] : typeof r != "string" ? n : (
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
var
|
|
31
|
-
return
|
|
32
|
-
string:
|
|
33
|
-
score:
|
|
25
|
+
E = n[k], x[k] === r[i] ? (E = s + E + u, i += 1, m += 1 + m) : m = 0, f += m, b[b.length] = E;
|
|
26
|
+
return i === r.length ? (f = x === r ? 1 / 0 : f, { rendered: b.join(""), score: f }) : null;
|
|
27
|
+
}, o.filter = function(r, n, t) {
|
|
28
|
+
return !n || n.length === 0 ? [] : typeof r != "string" ? n : (t = t || {}, n.reduce(function(i, b, w, f) {
|
|
29
|
+
var m = b;
|
|
30
|
+
t.extract && (m = t.extract(b));
|
|
31
|
+
var s = o.match(r, m, t);
|
|
32
|
+
return s != null && (i[i.length] = {
|
|
33
|
+
string: s.rendered,
|
|
34
|
+
score: s.score,
|
|
34
35
|
index: w,
|
|
35
|
-
original:
|
|
36
|
-
}),
|
|
37
|
-
}, []).sort(function(
|
|
38
|
-
var w =
|
|
39
|
-
return w ||
|
|
36
|
+
original: b
|
|
37
|
+
}), i;
|
|
38
|
+
}, []).sort(function(i, b) {
|
|
39
|
+
var w = b.score - i.score;
|
|
40
|
+
return w || i.index - b.index;
|
|
40
41
|
}));
|
|
41
42
|
};
|
|
42
43
|
})();
|
|
43
|
-
})(
|
|
44
|
-
var
|
|
45
|
-
const
|
|
46
|
-
function he(
|
|
47
|
-
return
|
|
44
|
+
})(De);
|
|
45
|
+
var ot = De.exports;
|
|
46
|
+
const Oe = /* @__PURE__ */ Ue(ot);
|
|
47
|
+
function he(C, y) {
|
|
48
|
+
return Oe.filter(C, y).length > 0;
|
|
48
49
|
}
|
|
49
|
-
function
|
|
50
|
-
if (!
|
|
50
|
+
function st(C, y) {
|
|
51
|
+
if (!C)
|
|
51
52
|
return {
|
|
52
53
|
label: y,
|
|
53
54
|
segments: [
|
|
@@ -58,19 +59,19 @@ function ot(E, y) {
|
|
|
58
59
|
],
|
|
59
60
|
matched: !1
|
|
60
61
|
};
|
|
61
|
-
const [
|
|
62
|
+
const [o] = Oe.filter(C.toLocaleLowerCase(), [y], {
|
|
62
63
|
pre: "|",
|
|
63
64
|
post: "|"
|
|
64
65
|
});
|
|
65
|
-
if (!
|
|
66
|
+
if (!o)
|
|
66
67
|
return {
|
|
67
68
|
label: y,
|
|
68
69
|
segments: [{ segment: y, isMatch: !1 }],
|
|
69
70
|
matched: !1
|
|
70
71
|
};
|
|
71
|
-
const r =
|
|
72
|
-
segment:
|
|
73
|
-
isMatch:
|
|
72
|
+
const r = o.string.toString().replace(/\|\|/g, "").split("|").reduce((n, t, i) => (n.push({
|
|
73
|
+
segment: t,
|
|
74
|
+
isMatch: i % 2 !== 0
|
|
74
75
|
//e.g. index 1, 3, 5, ...
|
|
75
76
|
}), n), new Array());
|
|
76
77
|
return {
|
|
@@ -79,185 +80,185 @@ function ot(E, y) {
|
|
|
79
80
|
matched: !0
|
|
80
81
|
};
|
|
81
82
|
}
|
|
82
|
-
function K(
|
|
83
|
-
return Object.prototype.hasOwnProperty.call(
|
|
83
|
+
function K(C) {
|
|
84
|
+
return Object.prototype.hasOwnProperty.call(C, "children");
|
|
84
85
|
}
|
|
85
|
-
const
|
|
86
|
+
const at = { class: "flex flex-col gap-12 h-[350px]" }, lt = { class: "flex items-center" }, it = {
|
|
86
87
|
class: "flex-1",
|
|
87
88
|
"data-cy": "items-selected"
|
|
88
|
-
},
|
|
89
|
+
}, rt = {
|
|
89
90
|
class: "flex-1",
|
|
90
91
|
"data-cy": "filter-field"
|
|
91
|
-
},
|
|
92
|
+
}, ut = ["data-cy"], ct = { class: "flex flex-col" }, dt = { class: "fm-typo-en-body-md-400" }, mt = {
|
|
92
93
|
key: 1,
|
|
93
94
|
class: "w-full py-16 text-fm-color-typo-disabled fm-typo-en-body-md-400 text-center"
|
|
94
|
-
},
|
|
95
|
+
}, Me = /* @__PURE__ */ Y({
|
|
95
96
|
__name: "FmNestedMultiselectDialog",
|
|
96
|
-
props: /* @__PURE__ */
|
|
97
|
+
props: /* @__PURE__ */ je({
|
|
97
98
|
modelValue: {}
|
|
98
99
|
}, {
|
|
99
100
|
modelValue: {},
|
|
100
101
|
modelModifiers: {}
|
|
101
102
|
}),
|
|
102
103
|
emits: ["update:modelValue"],
|
|
103
|
-
setup(
|
|
104
|
-
const y = Se(
|
|
104
|
+
setup(C) {
|
|
105
|
+
const y = Se(C, "modelValue"), o = qe();
|
|
105
106
|
pe(() => {
|
|
106
|
-
|
|
107
|
+
o.emitData(y.value);
|
|
107
108
|
});
|
|
108
109
|
const r = M(""), { t: n } = Z();
|
|
109
|
-
function e
|
|
110
|
+
function t(e) {
|
|
110
111
|
return he(
|
|
111
112
|
r.value,
|
|
112
|
-
|
|
113
|
+
e.sublabel ? [e.label, e.sublabel] : [e.label]
|
|
113
114
|
);
|
|
114
115
|
}
|
|
115
|
-
function
|
|
116
|
-
return e
|
|
116
|
+
function i(e) {
|
|
117
|
+
return t(e) ? !0 : K(e) ? e.children.some(i) : !1;
|
|
117
118
|
}
|
|
118
|
-
function
|
|
119
|
+
function b(e, a) {
|
|
119
120
|
if (!r.value)
|
|
120
121
|
return !0;
|
|
121
|
-
const [
|
|
122
|
-
if (typeof
|
|
122
|
+
const [B, ...L] = e;
|
|
123
|
+
if (typeof B != "number")
|
|
123
124
|
return !1;
|
|
124
|
-
const N = a[
|
|
125
|
+
const N = a[B];
|
|
125
126
|
return he(
|
|
126
127
|
r.value,
|
|
127
128
|
N.sublabel ? [N.label, N.sublabel] : [N.label]
|
|
128
|
-
) ? !0 : L.length === 0 ?
|
|
129
|
+
) ? !0 : L.length === 0 ? i(N) : K(N) ? b(L, N.children) : !1;
|
|
129
130
|
}
|
|
130
|
-
function w(
|
|
131
|
-
if (K(
|
|
132
|
-
const { children: N, ...H } =
|
|
133
|
-
(R, T) => w(R, [...a, T],
|
|
131
|
+
function w(e, a, B = 0, L = !1) {
|
|
132
|
+
if (K(e) && e.children.length) {
|
|
133
|
+
const { children: N, ...H } = e, X = N.flatMap(
|
|
134
|
+
(R, T) => w(R, [...a, T], B + 1, L || e.disabled)
|
|
134
135
|
);
|
|
135
136
|
return [
|
|
136
137
|
{
|
|
137
138
|
...H,
|
|
138
139
|
keys: a,
|
|
139
|
-
indent:
|
|
140
|
+
indent: B,
|
|
140
141
|
collapsible: !0,
|
|
141
|
-
disabled: L ||
|
|
142
|
+
disabled: L || e.disabled
|
|
142
143
|
},
|
|
143
144
|
...X
|
|
144
145
|
];
|
|
145
146
|
}
|
|
146
147
|
return [
|
|
147
148
|
{
|
|
148
|
-
...
|
|
149
|
+
...e,
|
|
149
150
|
keys: a,
|
|
150
|
-
indent:
|
|
151
|
+
indent: B,
|
|
151
152
|
collapsible: !1,
|
|
152
|
-
disabled: L ||
|
|
153
|
+
disabled: L || e.disabled
|
|
153
154
|
}
|
|
154
155
|
];
|
|
155
156
|
}
|
|
156
|
-
const
|
|
157
|
-
(
|
|
157
|
+
const f = _(() => y.value.flatMap(
|
|
158
|
+
(e, a) => w(e, [a]).filter((B) => b(B.keys, y.value))
|
|
158
159
|
));
|
|
159
|
-
function
|
|
160
|
-
if (K(
|
|
161
|
-
if (
|
|
162
|
-
const a = e
|
|
163
|
-
return a.length === 0 ? !1 : a.every(
|
|
160
|
+
function m(e) {
|
|
161
|
+
if (K(e)) {
|
|
162
|
+
if (i(e)) {
|
|
163
|
+
const a = t(e) ? e.children : e.children.filter(i);
|
|
164
|
+
return a.length === 0 ? !1 : a.every(m);
|
|
164
165
|
}
|
|
165
|
-
return
|
|
166
|
+
return e.children.every(m);
|
|
166
167
|
}
|
|
167
|
-
return
|
|
168
|
+
return e.active ?? !1;
|
|
168
169
|
}
|
|
169
|
-
function
|
|
170
|
-
const [
|
|
171
|
-
if (typeof
|
|
170
|
+
function s(e, a) {
|
|
171
|
+
const [B, ...L] = e;
|
|
172
|
+
if (typeof B != "number")
|
|
172
173
|
return !1;
|
|
173
|
-
const N = a[
|
|
174
|
-
return L.length === 0 ?
|
|
174
|
+
const N = a[B];
|
|
175
|
+
return L.length === 0 ? m(N ?? []) : K(N) ? s(L, N.children ?? []) : !1;
|
|
175
176
|
}
|
|
176
|
-
function
|
|
177
|
-
if (K(
|
|
178
|
-
if (
|
|
179
|
-
const a = e
|
|
180
|
-
return a.length === 0 ? !1 : a.some(
|
|
177
|
+
function u(e) {
|
|
178
|
+
if (K(e)) {
|
|
179
|
+
if (i(e)) {
|
|
180
|
+
const a = t(e) ? e.children : e.children.filter(i);
|
|
181
|
+
return a.length === 0 ? !1 : a.some(m) && !a.every(m);
|
|
181
182
|
}
|
|
182
183
|
return !1;
|
|
183
184
|
}
|
|
184
185
|
return !1;
|
|
185
186
|
}
|
|
186
|
-
function
|
|
187
|
-
const [
|
|
188
|
-
if (typeof
|
|
187
|
+
function x(e, a) {
|
|
188
|
+
const [B, ...L] = e;
|
|
189
|
+
if (typeof B != "number")
|
|
189
190
|
return !1;
|
|
190
|
-
const N = a[
|
|
191
|
-
return L.length === 0 ?
|
|
191
|
+
const N = a[B];
|
|
192
|
+
return L.length === 0 ? u(N ?? []) : K(N) ? x(L, (N == null ? void 0 : N.children) ?? []) : !1;
|
|
192
193
|
}
|
|
193
|
-
function
|
|
194
|
-
if (
|
|
195
|
-
return
|
|
196
|
-
if (K(
|
|
197
|
-
if (
|
|
198
|
-
const
|
|
194
|
+
function E(e, a) {
|
|
195
|
+
if (e.disabled)
|
|
196
|
+
return e;
|
|
197
|
+
if (K(e)) {
|
|
198
|
+
if (i(e)) {
|
|
199
|
+
const B = t(e) ? e.children : e.children.filter(i);
|
|
199
200
|
return {
|
|
200
|
-
...
|
|
201
|
-
children:
|
|
201
|
+
...e,
|
|
202
|
+
children: e.children.map((L) => B.find((H) => Xe(H.value, L.value)) ? E(L, a) : L)
|
|
202
203
|
};
|
|
203
204
|
}
|
|
204
205
|
return {
|
|
205
|
-
...
|
|
206
|
-
children:
|
|
206
|
+
...e,
|
|
207
|
+
children: e.children.map((B) => E(B, a))
|
|
207
208
|
};
|
|
208
209
|
}
|
|
209
210
|
return {
|
|
210
|
-
...
|
|
211
|
+
...e,
|
|
211
212
|
active: a
|
|
212
213
|
};
|
|
213
214
|
}
|
|
214
|
-
function k(
|
|
215
|
-
const [L, ...N] =
|
|
216
|
-
return typeof L != "number" ? a : N.length === 0 ? a.map((H, X) => L !== X ? H :
|
|
215
|
+
function k(e, a, B) {
|
|
216
|
+
const [L, ...N] = e;
|
|
217
|
+
return typeof L != "number" ? a : N.length === 0 ? a.map((H, X) => L !== X ? H : E(H, B)) : a.map(
|
|
217
218
|
(H, X) => L === X && K(H) ? {
|
|
218
219
|
...H,
|
|
219
|
-
children: k(N, H.children,
|
|
220
|
+
children: k(N, H.children, B)
|
|
220
221
|
} : H
|
|
221
222
|
);
|
|
222
223
|
}
|
|
223
224
|
const g = M(new Array());
|
|
224
|
-
function p(
|
|
225
|
-
const a =
|
|
226
|
-
return g.value.find((
|
|
225
|
+
function p(e) {
|
|
226
|
+
const a = e.join();
|
|
227
|
+
return g.value.find((B) => a === B);
|
|
227
228
|
}
|
|
228
|
-
function
|
|
229
|
-
const a =
|
|
230
|
-
p(
|
|
229
|
+
function d(e) {
|
|
230
|
+
const a = e.join();
|
|
231
|
+
p(e) ? g.value = g.value.filter((B) => B !== a) : g.value = [...g.value, a];
|
|
231
232
|
}
|
|
232
|
-
function c(
|
|
233
|
-
const a =
|
|
234
|
-
return g.value.find((
|
|
233
|
+
function c(e) {
|
|
234
|
+
const a = e.join();
|
|
235
|
+
return g.value.find((B) => a.startsWith(B) && a !== B);
|
|
235
236
|
}
|
|
236
|
-
const
|
|
237
|
-
() =>
|
|
237
|
+
const A = _(
|
|
238
|
+
() => f.value.filter((e) => b(e.keys, y.value) && e.active).length
|
|
238
239
|
);
|
|
239
|
-
function v(
|
|
240
|
-
y.value = k(
|
|
240
|
+
function v(e, a, B) {
|
|
241
|
+
y.value = k(e, a, B), o.emitData(y.value);
|
|
241
242
|
}
|
|
242
|
-
return (
|
|
243
|
-
const
|
|
244
|
-
return I(), V("div",
|
|
245
|
-
l("div",
|
|
246
|
-
l("div",
|
|
247
|
-
l("div",
|
|
248
|
-
|
|
243
|
+
return (e, a) => {
|
|
244
|
+
const B = F("FmSearch"), L = F("FmCheckbox"), N = F("FmButton"), H = F("FmListItem"), X = F("FmList");
|
|
245
|
+
return I(), V("div", at, [
|
|
246
|
+
l("div", lt, [
|
|
247
|
+
l("div", it, j(S(n)("inventory.formField.itemsSelected", { count: A.value })), 1),
|
|
248
|
+
l("div", rt, [
|
|
249
|
+
h(B, {
|
|
249
250
|
modelValue: r.value,
|
|
250
251
|
"onUpdate:modelValue": a[0] || (a[0] = (R) => r.value = R),
|
|
251
252
|
placeholder: S(n)("inventory.formField.filterItems")
|
|
252
253
|
}, null, 8, ["modelValue", "placeholder"])
|
|
253
254
|
])
|
|
254
255
|
]),
|
|
255
|
-
|
|
256
|
+
f.value.length ? (I(), U(X, {
|
|
256
257
|
key: 0,
|
|
257
258
|
class: "flex-1 overflow-y-auto"
|
|
258
259
|
}, {
|
|
259
260
|
default: O(() => [
|
|
260
|
-
(I(!0), V(J, null, W(
|
|
261
|
+
(I(!0), V(J, null, W(f.value, (R) => (I(), V("div", {
|
|
261
262
|
key: R.keys.join(),
|
|
262
263
|
class: q([
|
|
263
264
|
"transition-all overflow-y-clip",
|
|
@@ -265,10 +266,10 @@ const st = { class: "flex flex-col gap-12 h-[350px]" }, at = { class: "flex item
|
|
|
265
266
|
]),
|
|
266
267
|
"data-cy": `nested-${R.keys.join("-")}-${R.label}`
|
|
267
268
|
}, [
|
|
268
|
-
|
|
269
|
+
h(H, {
|
|
269
270
|
clickable: R.selectable !== !1,
|
|
270
|
-
onClick: () => R.selectable === !1 || R.disabled || v(R.keys, y.value, !
|
|
271
|
-
style:
|
|
271
|
+
onClick: () => R.selectable === !1 || R.disabled || v(R.keys, y.value, !s(R.keys, y.value)),
|
|
272
|
+
style: Te({
|
|
272
273
|
paddingLeft: `${16 + R.indent * 16}px`,
|
|
273
274
|
paddingTop: "4px",
|
|
274
275
|
paddingBottom: "4px"
|
|
@@ -276,9 +277,9 @@ const st = { class: "flex flex-col gap-12 h-[350px]" }, at = { class: "flex item
|
|
|
276
277
|
disabled: R.selectable !== !1 && R.disabled
|
|
277
278
|
}, se({
|
|
278
279
|
default: O(() => [
|
|
279
|
-
l("div",
|
|
280
|
-
l("div",
|
|
281
|
-
(I(!0), V(J, null, W(S(
|
|
280
|
+
l("div", ct, [
|
|
281
|
+
l("div", dt, [
|
|
282
|
+
(I(!0), V(J, null, W(S(st)(r.value, R.label).segments, (T, Q) => (I(), V("span", {
|
|
282
283
|
key: Q,
|
|
283
284
|
class: q({
|
|
284
285
|
"font-bold": T.isMatch
|
|
@@ -299,11 +300,11 @@ const st = { class: "flex flex-col gap-12 h-[350px]" }, at = { class: "flex item
|
|
|
299
300
|
R.selectable !== !1 ? {
|
|
300
301
|
name: "prepend",
|
|
301
302
|
fn: O(() => [
|
|
302
|
-
|
|
303
|
+
h(L, {
|
|
303
304
|
disabled: R.disabled,
|
|
304
|
-
"model-value":
|
|
305
|
+
"model-value": s(R.keys, y.value),
|
|
305
306
|
value: R.keys,
|
|
306
|
-
indeterminate:
|
|
307
|
+
indeterminate: x(R.keys, y.value)
|
|
307
308
|
}, null, 8, ["disabled", "model-value", "value", "indeterminate"])
|
|
308
309
|
]),
|
|
309
310
|
key: "0"
|
|
@@ -311,30 +312,30 @@ const st = { class: "flex flex-col gap-12 h-[350px]" }, at = { class: "flex item
|
|
|
311
312
|
R.collapsible ? {
|
|
312
313
|
name: "append",
|
|
313
314
|
fn: O(() => [
|
|
314
|
-
|
|
315
|
+
h(N, {
|
|
315
316
|
"prepend-icon": p(R.keys) ? "expand_less" : "expand_more",
|
|
316
317
|
size: "md",
|
|
317
318
|
variant: "tertiary",
|
|
318
|
-
onClick:
|
|
319
|
+
onClick: _e(() => d(R.keys), ["stop"])
|
|
319
320
|
}, null, 8, ["prepend-icon", "onClick"])
|
|
320
321
|
]),
|
|
321
322
|
key: "1"
|
|
322
323
|
} : void 0
|
|
323
324
|
]), 1032, ["clickable", "onClick", "style", "disabled"])
|
|
324
|
-
], 10,
|
|
325
|
+
], 10, ut))), 128))
|
|
325
326
|
]),
|
|
326
327
|
_: 1
|
|
327
|
-
})) : (I(), V("div",
|
|
328
|
+
})) : (I(), V("div", mt, j(S(n)("inventory.formField.noItemsFound")), 1))
|
|
328
329
|
]);
|
|
329
330
|
};
|
|
330
331
|
}
|
|
331
|
-
}),
|
|
332
|
+
}), ft = { class: "flex flex-col rounded border border-fm-color-neutral-gray-100 px-5 py-5 gap-5" }, pt = { class: "flex items-center" }, vt = { class: "text-lg font-bold flex-grow" }, gt = {
|
|
332
333
|
key: 0,
|
|
333
334
|
class: "table-auto w-full"
|
|
334
|
-
},
|
|
335
|
+
}, yt = { class: "text-left" }, At = { class: "min-w-64" }, bt = { class: "flex flex-col" }, ht = { class: "fm-typo-en-body-md-400" }, xt = {
|
|
335
336
|
key: 0,
|
|
336
337
|
class: "fm-typo-en-body-sm-400 text-fm-color-neutral-gray-400"
|
|
337
|
-
},
|
|
338
|
+
}, It = { class: "w-1" }, St = /* @__PURE__ */ Y({
|
|
338
339
|
__name: "ApplyAddon",
|
|
339
340
|
props: {
|
|
340
341
|
groups: {
|
|
@@ -354,146 +355,146 @@ const st = { class: "flex flex-col gap-12 h-[350px]" }, at = { class: "flex item
|
|
|
354
355
|
}
|
|
355
356
|
},
|
|
356
357
|
emits: ["update:modifiers"],
|
|
357
|
-
setup(
|
|
358
|
-
const
|
|
359
|
-
const
|
|
360
|
-
const
|
|
358
|
+
setup(C, { emit: y }) {
|
|
359
|
+
const o = C, r = y, n = re(), t = _(() => {
|
|
360
|
+
const s = o.groups.flatMap((u) => u.items.map((x) => {
|
|
361
|
+
const E = o.items.find((k) => k._id === x._id);
|
|
361
362
|
return {
|
|
362
|
-
...
|
|
363
|
-
groupName:
|
|
364
|
-
name:
|
|
363
|
+
...x,
|
|
364
|
+
groupName: u.name,
|
|
365
|
+
name: x.name ?? (E == null ? void 0 : E.name) ?? "-"
|
|
365
366
|
};
|
|
366
367
|
}));
|
|
367
|
-
return
|
|
368
|
-
const
|
|
368
|
+
return o.modifiers.map((u) => {
|
|
369
|
+
const x = s.find((g) => g.selection === u.selection), E = (x == null ? void 0 : x.name) ?? "-", k = (x == null ? void 0 : x.groupName) ?? "";
|
|
369
370
|
return {
|
|
370
|
-
...
|
|
371
|
-
name:
|
|
371
|
+
...u,
|
|
372
|
+
name: E,
|
|
372
373
|
groupName: k
|
|
373
374
|
};
|
|
374
375
|
});
|
|
375
|
-
}),
|
|
376
|
-
function
|
|
376
|
+
}), i = _(() => o.groups.flatMap((s) => s.items.map((u) => ({ ...u, groupId: s._id }))));
|
|
377
|
+
function b({ selection: s }) {
|
|
377
378
|
r(
|
|
378
379
|
"update:modifiers",
|
|
379
|
-
|
|
380
|
+
o.modifiers.filter((u) => u.selection !== s)
|
|
380
381
|
);
|
|
381
382
|
}
|
|
382
|
-
function w({ selection:
|
|
383
|
-
const
|
|
384
|
-
|
|
383
|
+
function w({ selection: s }, u) {
|
|
384
|
+
const x = o.modifiers.find((E) => E.selection === s);
|
|
385
|
+
x && (x.code = u);
|
|
385
386
|
}
|
|
386
|
-
function
|
|
387
|
-
let
|
|
388
|
-
|
|
389
|
-
let
|
|
390
|
-
|
|
391
|
-
label:
|
|
387
|
+
function f() {
|
|
388
|
+
let s = [];
|
|
389
|
+
o.groups.forEach((x) => {
|
|
390
|
+
let E = !1;
|
|
391
|
+
x.items.every((k) => k._id.startsWith("item")) && (E = !0), s.push({
|
|
392
|
+
label: x.name,
|
|
392
393
|
sublabel: "Group",
|
|
393
|
-
value:
|
|
394
|
-
disabled:
|
|
395
|
-
children:
|
|
394
|
+
value: x._id,
|
|
395
|
+
disabled: E,
|
|
396
|
+
children: x.items.reduce((k, g) => {
|
|
396
397
|
var c;
|
|
397
|
-
const p =
|
|
398
|
-
(
|
|
398
|
+
const p = o.items.find((A) => A._id === g._id), d = (c = p == null ? void 0 : p.variant) == null ? void 0 : c.variantCombinations.find(
|
|
399
|
+
(A) => A.combinationKey === (g == null ? void 0 : g.combinationKey)
|
|
399
400
|
);
|
|
400
401
|
return [
|
|
401
402
|
...k,
|
|
402
403
|
{
|
|
403
|
-
label: `${g.name ?? (p == null ? void 0 : p.name)} ${
|
|
404
|
-
value: `${g.selection}${
|
|
405
|
-
disabled:
|
|
406
|
-
active: !!
|
|
404
|
+
label: `${g.name ?? (p == null ? void 0 : p.name)} ${d ? `(${d.name})` : ""}`,
|
|
405
|
+
value: `${g.selection}${d ? `/${d == null ? void 0 : d.combinationKey}` : ""}`,
|
|
406
|
+
disabled: E,
|
|
407
|
+
active: !!o.modifiers.find(({ selection: A }) => A === g.selection)
|
|
407
408
|
}
|
|
408
409
|
];
|
|
409
410
|
}, [])
|
|
410
411
|
});
|
|
411
412
|
});
|
|
412
|
-
const
|
|
413
|
-
modelValue:
|
|
413
|
+
const u = {
|
|
414
|
+
modelValue: s
|
|
414
415
|
};
|
|
415
416
|
n.open({
|
|
416
417
|
title: "Select Addons",
|
|
417
|
-
contentComponent:
|
|
418
|
-
contentComponentProps:
|
|
418
|
+
contentComponent: Me,
|
|
419
|
+
contentComponentProps: u,
|
|
419
420
|
primaryActions: {
|
|
420
421
|
text: "Confirm",
|
|
421
422
|
close: !0
|
|
422
423
|
}
|
|
423
|
-
}).onPrimary((
|
|
424
|
-
const
|
|
424
|
+
}).onPrimary((x) => {
|
|
425
|
+
const E = te(o.modifiers);
|
|
425
426
|
let k = [];
|
|
426
|
-
function g(p,
|
|
427
|
-
if (
|
|
427
|
+
function g(p, d) {
|
|
428
|
+
if (d(p), K(p))
|
|
428
429
|
for (let c of p.children)
|
|
429
|
-
g(c,
|
|
430
|
+
g(c, d);
|
|
430
431
|
}
|
|
431
|
-
|
|
432
|
-
g(p, (
|
|
433
|
-
var
|
|
434
|
-
if (
|
|
435
|
-
const
|
|
436
|
-
!K(
|
|
437
|
-
addonGroupId: (
|
|
438
|
-
selection:
|
|
439
|
-
code: ((
|
|
432
|
+
x.forEach((p) => {
|
|
433
|
+
g(p, (d) => {
|
|
434
|
+
var e;
|
|
435
|
+
if (o.groups.find(({ _id: a }) => a === d.value)) return;
|
|
436
|
+
const A = i.value.find(({ selection: a }) => a === d.value), v = k.find(({ selection: a }) => d.value === a);
|
|
437
|
+
!K(d) && d.active && v === void 0 && k.push({
|
|
438
|
+
addonGroupId: (A == null ? void 0 : A.groupId) ?? "",
|
|
439
|
+
selection: d.value,
|
|
440
|
+
code: ((e = E.find(({ selection: a }) => d.value === a)) == null ? void 0 : e.code) ?? ""
|
|
440
441
|
});
|
|
441
442
|
});
|
|
442
443
|
}), r("update:modifiers", k);
|
|
443
444
|
});
|
|
444
445
|
}
|
|
445
|
-
const { t:
|
|
446
|
-
return (
|
|
447
|
-
const
|
|
448
|
-
return I(), V("div",
|
|
449
|
-
l("div",
|
|
450
|
-
l("div",
|
|
451
|
-
x
|
|
446
|
+
const { t: m } = Z();
|
|
447
|
+
return (s, u) => {
|
|
448
|
+
const x = F("FmButton"), E = F("FmTextField");
|
|
449
|
+
return I(), V("div", ft, [
|
|
450
|
+
l("div", pt, [
|
|
451
|
+
l("div", vt, j(S(m)("inventory.integration.apply.addons")), 1),
|
|
452
|
+
h(x, {
|
|
452
453
|
type: "button",
|
|
453
454
|
variant: "plain",
|
|
454
455
|
size: "md",
|
|
455
456
|
icon: "link",
|
|
456
|
-
label: S(
|
|
457
|
-
onClick:
|
|
457
|
+
label: S(m)("inventory.integration.apply.applyAddon"),
|
|
458
|
+
onClick: u[0] || (u[0] = (k) => f())
|
|
458
459
|
}, null, 8, ["label"])
|
|
459
460
|
]),
|
|
460
461
|
l("div", null, [
|
|
461
|
-
|
|
462
|
-
l("tr",
|
|
463
|
-
l("th",
|
|
464
|
-
l("th", null, j(S(
|
|
465
|
-
|
|
462
|
+
t.value.length > 0 ? (I(), V("table", gt, [
|
|
463
|
+
l("tr", yt, [
|
|
464
|
+
l("th", At, j(S(m)("inventory.integration.apply.name")), 1),
|
|
465
|
+
l("th", null, j(S(m)("inventory.integration.apply.code")), 1),
|
|
466
|
+
u[1] || (u[1] = l("th", { class: "w-1" }, " ", -1))
|
|
466
467
|
]),
|
|
467
|
-
(I(!0), V(J, null, W(
|
|
468
|
-
|
|
468
|
+
(I(!0), V(J, null, W(t.value, (k, g) => (I(), V(J, { key: g }, [
|
|
469
|
+
u[2] || (u[2] = l("tr", { class: "block h-8" }, null, -1)),
|
|
469
470
|
l("tr", null, [
|
|
470
471
|
l("td", null, [
|
|
471
|
-
l("div",
|
|
472
|
-
l("div",
|
|
473
|
-
k.groupName ? (I(), V("div",
|
|
472
|
+
l("div", bt, [
|
|
473
|
+
l("div", ht, j(k.name), 1),
|
|
474
|
+
k.groupName ? (I(), V("div", xt, j(k.groupName), 1)) : z("", !0)
|
|
474
475
|
])
|
|
475
476
|
]),
|
|
476
477
|
l("td", null, [
|
|
477
|
-
|
|
478
|
-
disabled:
|
|
478
|
+
h(E, {
|
|
479
|
+
disabled: C.loading,
|
|
479
480
|
"model-value": k.code,
|
|
480
481
|
"onUpdate:modelValue": [(p) => k.code = p, (p) => w(k, p)],
|
|
481
482
|
rules: [
|
|
482
|
-
function(
|
|
483
|
-
return !!
|
|
483
|
+
function(d) {
|
|
484
|
+
return !!d || "Required";
|
|
484
485
|
}
|
|
485
486
|
]
|
|
486
487
|
}, null, 8, ["disabled", "model-value", "onUpdate:modelValue", "rules"])
|
|
487
488
|
]),
|
|
488
|
-
l("td",
|
|
489
|
-
x
|
|
490
|
-
disabled:
|
|
489
|
+
l("td", It, [
|
|
490
|
+
h(x, {
|
|
491
|
+
disabled: C.loading,
|
|
491
492
|
type: "button",
|
|
492
493
|
variant: "tertiary",
|
|
493
494
|
icon: "delete",
|
|
494
495
|
"icon-color": "#000000",
|
|
495
496
|
size: "md",
|
|
496
|
-
onClick: (p) =>
|
|
497
|
+
onClick: (p) => b(k)
|
|
497
498
|
}, null, 8, ["disabled", "onClick"])
|
|
498
499
|
])
|
|
499
500
|
])
|
|
@@ -504,48 +505,48 @@ const st = { class: "flex flex-col gap-12 h-[350px]" }, at = { class: "flex item
|
|
|
504
505
|
};
|
|
505
506
|
}
|
|
506
507
|
});
|
|
507
|
-
function
|
|
508
|
-
const
|
|
509
|
-
return
|
|
508
|
+
function wt(C, y = []) {
|
|
509
|
+
const o = y.map((n) => C.find((t) => t._id === n)).filter((n) => !!n);
|
|
510
|
+
return Bt(o).reduce((n, t) => (n[t.combinationKey] = t.selectionName.join(" / "), n), {});
|
|
510
511
|
}
|
|
511
|
-
function
|
|
512
|
-
const r =
|
|
513
|
-
var
|
|
514
|
-
const
|
|
515
|
-
...
|
|
516
|
-
codeName: [
|
|
512
|
+
function kt(C, y, o) {
|
|
513
|
+
const r = o.reduce((t, i) => {
|
|
514
|
+
var m, s, u;
|
|
515
|
+
const b = i.category || "", w = wt(y, (m = i.variant) == null ? void 0 : m.variantGroupIds), f = {
|
|
516
|
+
...i,
|
|
517
|
+
codeName: [i.code, i.name].filter((x) => !!x).join(" "),
|
|
517
518
|
variant: {
|
|
518
|
-
variantGroupIds: ((
|
|
519
|
-
variantCombinations: (((
|
|
520
|
-
const
|
|
519
|
+
variantGroupIds: ((s = i.variant) == null ? void 0 : s.variantGroupIds) || [],
|
|
520
|
+
variantCombinations: (((u = i.variant) == null ? void 0 : u.variantCombinations) || []).map((x) => {
|
|
521
|
+
const E = x.code, k = x.name || w[x.combinationKey || ""];
|
|
521
522
|
return {
|
|
522
|
-
...
|
|
523
|
-
codeName: [
|
|
523
|
+
...x,
|
|
524
|
+
codeName: [E, k].filter((g) => !!g).join(" ").trim() || "-"
|
|
524
525
|
};
|
|
525
526
|
})
|
|
526
527
|
}
|
|
527
528
|
};
|
|
528
|
-
return
|
|
529
|
+
return t[b] = t[b] ? [...t[b], f] : [f], t;
|
|
529
530
|
}, {}), n = Object.values(r)[0];
|
|
530
|
-
return
|
|
531
|
-
id:
|
|
532
|
-
name:
|
|
533
|
-
items: r[
|
|
534
|
-
})) || [] :
|
|
535
|
-
id:
|
|
536
|
-
name:
|
|
537
|
-
items: r[
|
|
531
|
+
return C.length === 0 && n ? n.map((t) => ({
|
|
532
|
+
id: t._id,
|
|
533
|
+
name: t.name ?? "",
|
|
534
|
+
items: r[t._id || ""] || []
|
|
535
|
+
})) || [] : C.map((t) => ({
|
|
536
|
+
id: t._id,
|
|
537
|
+
name: t.name ?? "",
|
|
538
|
+
items: r[t._id || ""] || []
|
|
538
539
|
}));
|
|
539
540
|
}
|
|
540
|
-
function
|
|
541
|
-
if (
|
|
542
|
-
return
|
|
543
|
-
const
|
|
544
|
-
return
|
|
541
|
+
function Re(C, y) {
|
|
542
|
+
if (C.length == 1)
|
|
543
|
+
return C[0];
|
|
544
|
+
const o = C[0], r = C.slice(1, C.length), n = Re(r, y);
|
|
545
|
+
return o.reduce((i, b) => [...i, ...n.map((w) => y(b, w))], new Array());
|
|
545
546
|
}
|
|
546
|
-
function
|
|
547
|
-
if (
|
|
548
|
-
const y =
|
|
547
|
+
function Bt(C) {
|
|
548
|
+
if (C.length === 0) return [];
|
|
549
|
+
const y = C.map(
|
|
549
550
|
(r) => (r.options ?? []).map(
|
|
550
551
|
(n) => ({
|
|
551
552
|
combinationKey: [`${r._id}/${n._id}`],
|
|
@@ -553,7 +554,7 @@ function kt(E) {
|
|
|
553
554
|
})
|
|
554
555
|
)
|
|
555
556
|
);
|
|
556
|
-
return
|
|
557
|
+
return Re(y, (r, n) => ({
|
|
557
558
|
combinationKey: [...r.combinationKey, ...n.combinationKey],
|
|
558
559
|
selectionName: [...r.selectionName, ...n.selectionName]
|
|
559
560
|
})).map((r) => {
|
|
@@ -565,13 +566,13 @@ function kt(E) {
|
|
|
565
566
|
};
|
|
566
567
|
});
|
|
567
568
|
}
|
|
568
|
-
const
|
|
569
|
+
const Ct = { class: "flex flex-col rounded border border-fm-color-neutral-gray-100 px-5 py-5 gap-5 mb-3" }, Et = { class: "flex items-center" }, Ft = { class: "text-lg font-bold flex-grow" }, Lt = {
|
|
569
570
|
key: 0,
|
|
570
571
|
class: "table-auto w-full"
|
|
571
|
-
},
|
|
572
|
+
}, Vt = { class: "text-left" }, Nt = { class: "min-w-64" }, Dt = { class: "flex flex-col" }, Ot = { class: "fm-typo-en-body-md-400" }, Mt = {
|
|
572
573
|
key: 0,
|
|
573
574
|
class: "fm-typo-en-body-sm-400 text-fm-color-neutral-gray-400"
|
|
574
|
-
},
|
|
575
|
+
}, Rt = { class: "w-1" }, fe = /* @__PURE__ */ Y({
|
|
575
576
|
__name: "ApplyProduct",
|
|
576
577
|
props: {
|
|
577
578
|
isAddon: {
|
|
@@ -596,222 +597,222 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
596
597
|
}
|
|
597
598
|
},
|
|
598
599
|
emits: ["update:bindings"],
|
|
599
|
-
setup(
|
|
600
|
-
const
|
|
601
|
-
() =>
|
|
600
|
+
setup(C, { emit: y }) {
|
|
601
|
+
const o = C, r = y, n = re(), t = _(() => o.isAddon ? "Addons" : "Products"), i = _(() => o.isAddon ? [] : o.categories), b = _(
|
|
602
|
+
() => kt(i.value, o.variants, o.menus)
|
|
602
603
|
), w = _(() => {
|
|
603
|
-
if (
|
|
604
|
-
return
|
|
605
|
-
const c =
|
|
604
|
+
if (o.isAddon)
|
|
605
|
+
return o.bindings.map((d) => {
|
|
606
|
+
const c = o.menus.find((v) => v._id === d.productId), A = (c == null ? void 0 : c.name) ?? "-";
|
|
606
607
|
return {
|
|
607
|
-
...
|
|
608
|
-
name:
|
|
608
|
+
...d,
|
|
609
|
+
name: A,
|
|
609
610
|
itemCode: (c == null ? void 0 : c.code) ?? "-"
|
|
610
611
|
};
|
|
611
612
|
});
|
|
612
|
-
const p =
|
|
613
|
-
return
|
|
613
|
+
const p = b.value.flatMap((d) => d.items);
|
|
614
|
+
return o.bindings.map((d) => {
|
|
614
615
|
var a;
|
|
615
|
-
const c = p.find((
|
|
616
|
-
let v = (c == null ? void 0 : c.code) ?? "-",
|
|
617
|
-
if (
|
|
618
|
-
const
|
|
619
|
-
(L) => L.combinationKey ===
|
|
616
|
+
const c = p.find((B) => B._id === d.productId), A = (c == null ? void 0 : c.name) ?? "-";
|
|
617
|
+
let v = (c == null ? void 0 : c.code) ?? "-", e;
|
|
618
|
+
if (d.combinationKey) {
|
|
619
|
+
const B = (((a = c == null ? void 0 : c.variant) == null ? void 0 : a.variantCombinations) || []).find(
|
|
620
|
+
(L) => L.combinationKey === d.combinationKey
|
|
620
621
|
);
|
|
621
|
-
|
|
622
|
+
e = (B == null ? void 0 : B.name) ?? (B == null ? void 0 : B.codeName) ?? "", v = (B == null ? void 0 : B.code) ?? v;
|
|
622
623
|
}
|
|
623
624
|
return {
|
|
624
|
-
...
|
|
625
|
-
name:
|
|
625
|
+
...d,
|
|
626
|
+
name: A,
|
|
626
627
|
itemCode: v,
|
|
627
|
-
variantName:
|
|
628
|
+
variantName: e
|
|
628
629
|
};
|
|
629
630
|
});
|
|
630
631
|
});
|
|
631
|
-
function
|
|
632
|
+
function f(p) {
|
|
632
633
|
r(
|
|
633
634
|
"update:bindings",
|
|
634
|
-
|
|
635
|
-
(
|
|
635
|
+
o.bindings.filter(
|
|
636
|
+
(d) => d.productId !== p.productId || d.combinationKey !== p.combinationKey
|
|
636
637
|
)
|
|
637
638
|
);
|
|
638
639
|
}
|
|
639
|
-
function
|
|
640
|
-
const
|
|
641
|
-
(v) => v.productId === p && v.combinationKey ===
|
|
640
|
+
function m({ productId: p, combinationKey: d }, c) {
|
|
641
|
+
const A = o.bindings.find(
|
|
642
|
+
(v) => v.productId === p && v.combinationKey === d
|
|
642
643
|
);
|
|
643
|
-
|
|
644
|
+
A && (A.code = c);
|
|
644
645
|
}
|
|
645
|
-
function
|
|
646
|
-
return
|
|
646
|
+
function s() {
|
|
647
|
+
return b.value.map((p) => ({
|
|
647
648
|
label: p.name,
|
|
648
649
|
sublabel: "Category",
|
|
649
650
|
value: p.name,
|
|
650
651
|
disabled: !1,
|
|
651
|
-
children: p.items.map((
|
|
652
|
-
var
|
|
653
|
-
const c = (
|
|
652
|
+
children: p.items.map((d) => {
|
|
653
|
+
var A;
|
|
654
|
+
const c = (A = d.variant) == null ? void 0 : A.variantCombinations;
|
|
654
655
|
return c != null && c.length ? {
|
|
655
|
-
label:
|
|
656
|
-
value:
|
|
656
|
+
label: d.name ?? "",
|
|
657
|
+
value: d._id,
|
|
657
658
|
sublabel: "Product",
|
|
658
659
|
children: [
|
|
659
660
|
{
|
|
660
|
-
label:
|
|
661
|
+
label: d.codeName ?? "",
|
|
661
662
|
value: {
|
|
662
|
-
productId:
|
|
663
|
+
productId: d._id
|
|
663
664
|
},
|
|
664
|
-
active: !!
|
|
665
|
-
({ productId: v, combinationKey:
|
|
665
|
+
active: !!o.bindings.find(
|
|
666
|
+
({ productId: v, combinationKey: e }) => d._id === v && !e
|
|
666
667
|
)
|
|
667
668
|
},
|
|
668
669
|
...c.map((v) => ({
|
|
669
670
|
label: v.codeName ?? "",
|
|
670
671
|
value: {
|
|
671
|
-
productId:
|
|
672
|
+
productId: d._id,
|
|
672
673
|
combinationKey: v.combinationKey
|
|
673
674
|
},
|
|
674
675
|
sublabel: "Variant",
|
|
675
|
-
active: !!
|
|
676
|
-
({ productId:
|
|
676
|
+
active: !!o.bindings.find(
|
|
677
|
+
({ productId: e, combinationKey: a }) => d._id === e && v.combinationKey === a
|
|
677
678
|
)
|
|
678
679
|
}))
|
|
679
680
|
]
|
|
680
681
|
} : {
|
|
681
|
-
label:
|
|
682
|
+
label: d.codeName ?? "",
|
|
682
683
|
value: {
|
|
683
|
-
productId:
|
|
684
|
+
productId: d._id
|
|
684
685
|
},
|
|
685
|
-
active: !!
|
|
686
|
-
({ productId: v, combinationKey:
|
|
686
|
+
active: !!o.bindings.find(
|
|
687
|
+
({ productId: v, combinationKey: e }) => d._id === v && !e
|
|
687
688
|
)
|
|
688
689
|
};
|
|
689
690
|
})
|
|
690
691
|
}));
|
|
691
692
|
}
|
|
692
|
-
function
|
|
693
|
-
return
|
|
693
|
+
function u() {
|
|
694
|
+
return o.menus.map((p) => ({
|
|
694
695
|
label: p.name,
|
|
695
696
|
value: { productId: p._id },
|
|
696
|
-
active: !!
|
|
697
|
-
({ productId:
|
|
697
|
+
active: !!o.bindings.find(
|
|
698
|
+
({ productId: d, combinationKey: c }) => p._id === d && !c
|
|
698
699
|
)
|
|
699
700
|
}));
|
|
700
701
|
}
|
|
701
|
-
function
|
|
702
|
-
const
|
|
703
|
-
return p.flatMap((c) => c.children.flatMap((
|
|
704
|
-
var
|
|
705
|
-
if (K(
|
|
706
|
-
return
|
|
702
|
+
function x(p) {
|
|
703
|
+
const d = te(o.bindings);
|
|
704
|
+
return p.flatMap((c) => c.children.flatMap((A) => {
|
|
705
|
+
var e;
|
|
706
|
+
if (K(A))
|
|
707
|
+
return A.children.filter((a) => a.active).map((a) => {
|
|
707
708
|
var N, H;
|
|
708
|
-
const { productId:
|
|
709
|
+
const { productId: B, combinationKey: L } = a.value;
|
|
709
710
|
return L ? {
|
|
710
|
-
productId:
|
|
711
|
+
productId: B,
|
|
711
712
|
combinationKey: L,
|
|
712
|
-
code: ((N =
|
|
713
|
-
({ productId: X, combinationKey: R }) =>
|
|
713
|
+
code: ((N = d.find(
|
|
714
|
+
({ productId: X, combinationKey: R }) => B === X && L === R
|
|
714
715
|
)) == null ? void 0 : N.code) ?? ""
|
|
715
716
|
} : {
|
|
716
|
-
productId:
|
|
717
|
-
code: ((H =
|
|
717
|
+
productId: B,
|
|
718
|
+
code: ((H = d.find(({ productId: X, combinationKey: R }) => B === X && !R)) == null ? void 0 : H.code) ?? ""
|
|
718
719
|
};
|
|
719
720
|
});
|
|
720
|
-
if (!
|
|
721
|
+
if (!A.active)
|
|
721
722
|
return [];
|
|
722
|
-
const { productId: v } =
|
|
723
|
+
const { productId: v } = A.value;
|
|
723
724
|
return [
|
|
724
725
|
{
|
|
725
726
|
productId: v,
|
|
726
|
-
code: ((
|
|
727
|
+
code: ((e = d.find(({ productId: a, combinationKey: B }) => v === a && !B)) == null ? void 0 : e.code) ?? ""
|
|
727
728
|
}
|
|
728
729
|
];
|
|
729
730
|
}));
|
|
730
731
|
}
|
|
731
|
-
function
|
|
732
|
-
const
|
|
732
|
+
function E(p) {
|
|
733
|
+
const d = te(o.bindings);
|
|
733
734
|
return p.filter((c) => c.active).map(
|
|
734
735
|
(c) => {
|
|
735
|
-
var
|
|
736
|
+
var A;
|
|
736
737
|
return {
|
|
737
738
|
productId: c.value.productId,
|
|
738
|
-
code: ((
|
|
739
|
+
code: ((A = d.find(({ productId: v }) => v === c.value.productId)) == null ? void 0 : A.code) ?? ""
|
|
739
740
|
};
|
|
740
741
|
}
|
|
741
742
|
);
|
|
742
743
|
}
|
|
743
744
|
function k() {
|
|
744
745
|
let p;
|
|
745
|
-
|
|
746
|
-
const
|
|
746
|
+
o.isAddon ? p = u() : p = s();
|
|
747
|
+
const d = {
|
|
747
748
|
modelValue: p
|
|
748
749
|
};
|
|
749
750
|
n.open({
|
|
750
|
-
title: `Select ${
|
|
751
|
-
contentComponent:
|
|
752
|
-
contentComponentProps:
|
|
751
|
+
title: `Select ${t.value}`,
|
|
752
|
+
contentComponent: Me,
|
|
753
|
+
contentComponentProps: d,
|
|
753
754
|
primaryActions: {
|
|
754
755
|
text: "Confirm",
|
|
755
756
|
close: !0
|
|
756
757
|
}
|
|
757
758
|
}).onPrimary((c) => {
|
|
758
|
-
let
|
|
759
|
-
|
|
759
|
+
let A;
|
|
760
|
+
o.isAddon ? A = E(c) : A = x(c), r("update:bindings", A);
|
|
760
761
|
});
|
|
761
762
|
}
|
|
762
763
|
const { t: g } = Z();
|
|
763
|
-
return (p,
|
|
764
|
-
const c = F("FmButton"),
|
|
765
|
-
return I(), V("div",
|
|
766
|
-
l("div",
|
|
767
|
-
l("div",
|
|
768
|
-
|
|
764
|
+
return (p, d) => {
|
|
765
|
+
const c = F("FmButton"), A = F("FmTextField");
|
|
766
|
+
return I(), V("div", Ct, [
|
|
767
|
+
l("div", Et, [
|
|
768
|
+
l("div", Ft, j(C.isAddon ? S(g)("inventory.integration.apply.addons") : S(g)("inventory.integration.apply.products")), 1),
|
|
769
|
+
h(c, {
|
|
769
770
|
type: "button",
|
|
770
771
|
variant: "plain",
|
|
771
772
|
size: "md",
|
|
772
773
|
icon: "link",
|
|
773
|
-
label:
|
|
774
|
-
onClick:
|
|
774
|
+
label: C.isAddon ? S(g)("inventory.integration.apply.applyAddon") : S(g)("inventory.integration.apply.applyProduct"),
|
|
775
|
+
onClick: d[0] || (d[0] = (v) => k())
|
|
775
776
|
}, null, 8, ["label"])
|
|
776
777
|
]),
|
|
777
778
|
l("div", null, [
|
|
778
|
-
w.value.length > 0 ? (I(), V("table",
|
|
779
|
+
w.value.length > 0 ? (I(), V("table", Lt, [
|
|
779
780
|
l("thead", null, [
|
|
780
|
-
l("tr",
|
|
781
|
-
l("th",
|
|
781
|
+
l("tr", Vt, [
|
|
782
|
+
l("th", Nt, j(S(g)("inventory.integration.apply.name")), 1),
|
|
782
783
|
l("th", null, j(S(g)("inventory.integration.apply.code")), 1),
|
|
783
|
-
|
|
784
|
+
d[1] || (d[1] = l("th", { class: "w-1" }, " ", -1))
|
|
784
785
|
])
|
|
785
786
|
]),
|
|
786
787
|
l("tbody", null, [
|
|
787
|
-
(I(!0), V(J, null, W(w.value, (v,
|
|
788
|
-
|
|
788
|
+
(I(!0), V(J, null, W(w.value, (v, e) => (I(), V(J, { key: e }, [
|
|
789
|
+
d[2] || (d[2] = l("tr", { class: "block h-8" }, null, -1)),
|
|
789
790
|
l("tr", null, [
|
|
790
791
|
l("td", null, [
|
|
791
|
-
l("div",
|
|
792
|
-
l("div",
|
|
793
|
-
v.variantName ? (I(), V("div",
|
|
792
|
+
l("div", Dt, [
|
|
793
|
+
l("div", Ot, j(v.itemCode) + " " + j(v.name), 1),
|
|
794
|
+
v.variantName ? (I(), V("div", Mt, j(v.variantName), 1)) : z("", !0)
|
|
794
795
|
])
|
|
795
796
|
]),
|
|
796
797
|
l("td", null, [
|
|
797
|
-
|
|
798
|
+
h(A, {
|
|
798
799
|
"model-value": v.code,
|
|
799
|
-
"onUpdate:modelValue": [(a) => v.code = a, (a) =>
|
|
800
|
+
"onUpdate:modelValue": [(a) => v.code = a, (a) => m(v, a)],
|
|
800
801
|
rules: [
|
|
801
|
-
function(
|
|
802
|
-
return !!
|
|
802
|
+
function(B) {
|
|
803
|
+
return !!B || "Required";
|
|
803
804
|
}
|
|
804
805
|
]
|
|
805
806
|
}, null, 8, ["model-value", "onUpdate:modelValue", "rules"])
|
|
806
807
|
]),
|
|
807
|
-
l("td",
|
|
808
|
-
|
|
808
|
+
l("td", Rt, [
|
|
809
|
+
h(c, {
|
|
809
810
|
type: "button",
|
|
810
811
|
variant: "tertiary",
|
|
811
812
|
icon: "delete",
|
|
812
813
|
"icon-color": "#000000",
|
|
813
814
|
size: "md",
|
|
814
|
-
onClick: (a) =>
|
|
815
|
+
onClick: (a) => f(v)
|
|
815
816
|
}, null, 8, ["onClick"])
|
|
816
817
|
])
|
|
817
818
|
])
|
|
@@ -822,7 +823,7 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
822
823
|
]);
|
|
823
824
|
};
|
|
824
825
|
}
|
|
825
|
-
}),
|
|
826
|
+
}), jt = { class: "flex flex-col gap-8 w-full" }, Tt = /* @__PURE__ */ Y({
|
|
826
827
|
__name: "ApplyProductDialog",
|
|
827
828
|
props: {
|
|
828
829
|
categories: { default: () => [] },
|
|
@@ -834,56 +835,56 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
834
835
|
loading: { type: Boolean }
|
|
835
836
|
},
|
|
836
837
|
emits: ["update:setting", "update:show", "submit"],
|
|
837
|
-
setup(
|
|
838
|
-
const
|
|
839
|
-
ge([() =>
|
|
840
|
-
if (
|
|
841
|
-
for (const
|
|
842
|
-
n[
|
|
838
|
+
setup(C, { emit: y }) {
|
|
839
|
+
const o = C, r = y, n = ve(te(o.setting));
|
|
840
|
+
ge([() => o.show], ([m]) => {
|
|
841
|
+
if (m)
|
|
842
|
+
for (const s of Object.keys(o.setting))
|
|
843
|
+
n[s] = o.setting[s];
|
|
843
844
|
});
|
|
844
|
-
const
|
|
845
|
-
function
|
|
846
|
-
var
|
|
847
|
-
(
|
|
845
|
+
const t = M(), i = le(o, "show");
|
|
846
|
+
function b() {
|
|
847
|
+
var m, s;
|
|
848
|
+
(s = (m = t.value) == null ? void 0 : m.validateInputs) == null || s.call(m);
|
|
848
849
|
}
|
|
849
850
|
function w() {
|
|
850
851
|
r("update:setting", te(n)), r("submit");
|
|
851
852
|
}
|
|
852
|
-
const { t:
|
|
853
|
-
return (
|
|
854
|
-
const
|
|
853
|
+
const { t: f } = Z();
|
|
854
|
+
return (m, s) => {
|
|
855
|
+
const u = F("FmChip"), x = F("FmForm"), E = F("FmButton"), k = F("FmSideSheet");
|
|
855
856
|
return I(), U(k, {
|
|
856
|
-
modelValue: S(
|
|
857
|
-
"onUpdate:modelValue":
|
|
858
|
-
header: S(
|
|
857
|
+
modelValue: S(i),
|
|
858
|
+
"onUpdate:modelValue": s[4] || (s[4] = (g) => ae(i) ? i.value = g : null),
|
|
859
|
+
header: S(f)("inventory.integration.apply.title"),
|
|
859
860
|
"dismiss-away": "",
|
|
860
861
|
"close-button": "",
|
|
861
862
|
"max-width": 500
|
|
862
863
|
}, {
|
|
863
864
|
default: O(() => [
|
|
864
|
-
l("div",
|
|
865
|
+
l("div", jt, [
|
|
865
866
|
l("div", null, [
|
|
866
|
-
|
|
867
|
+
h(u, { label: "Menu v3" })
|
|
867
868
|
]),
|
|
868
|
-
x
|
|
869
|
+
h(x, {
|
|
869
870
|
ref_key: "formRef",
|
|
870
|
-
ref:
|
|
871
|
-
onValidationSuccess:
|
|
871
|
+
ref: t,
|
|
872
|
+
onValidationSuccess: s[2] || (s[2] = (g) => w())
|
|
872
873
|
}, {
|
|
873
874
|
default: O(() => [
|
|
874
|
-
|
|
875
|
+
h(fe, {
|
|
875
876
|
bindings: n.bindings,
|
|
876
|
-
categories:
|
|
877
|
-
variants:
|
|
878
|
-
menus:
|
|
879
|
-
"onUpdate:bindings":
|
|
877
|
+
categories: m.categories,
|
|
878
|
+
variants: m.variants,
|
|
879
|
+
menus: m.menus,
|
|
880
|
+
"onUpdate:bindings": s[0] || (s[0] = (g) => n.bindings = g)
|
|
880
881
|
}, null, 8, ["bindings", "categories", "variants", "menus"]),
|
|
881
|
-
|
|
882
|
-
form:
|
|
882
|
+
h(St, {
|
|
883
|
+
form: t.value,
|
|
883
884
|
modifiers: n.modifiers ?? [],
|
|
884
|
-
groups:
|
|
885
|
-
items:
|
|
886
|
-
"onUpdate:modifiers":
|
|
885
|
+
groups: m.groups ?? [],
|
|
886
|
+
items: m.menus ?? [],
|
|
887
|
+
"onUpdate:modifiers": s[1] || (s[1] = (g) => n.modifiers = g)
|
|
887
888
|
}, null, 8, ["form", "modifiers", "groups", "items"])
|
|
888
889
|
]),
|
|
889
890
|
_: 1
|
|
@@ -891,18 +892,18 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
891
892
|
])
|
|
892
893
|
]),
|
|
893
894
|
"side-sheet-footer": O(() => [
|
|
894
|
-
|
|
895
|
-
loading:
|
|
895
|
+
h(E, {
|
|
896
|
+
loading: m.loading,
|
|
896
897
|
type: "submit",
|
|
897
|
-
label: S(
|
|
898
|
-
onClick:
|
|
898
|
+
label: S(f)("common.confirm"),
|
|
899
|
+
onClick: s[3] || (s[3] = (g) => b())
|
|
899
900
|
}, null, 8, ["loading", "label"])
|
|
900
901
|
]),
|
|
901
902
|
_: 1
|
|
902
903
|
}, 8, ["modelValue", "header"]);
|
|
903
904
|
};
|
|
904
905
|
}
|
|
905
|
-
}),
|
|
906
|
+
}), _t = { class: "flex flex-col gap-8 w-full" }, zt = /* @__PURE__ */ Y({
|
|
906
907
|
__name: "ApplyProductDialogV4",
|
|
907
908
|
props: {
|
|
908
909
|
categories: { default: () => [] },
|
|
@@ -914,70 +915,70 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
914
915
|
loading: { type: Boolean }
|
|
915
916
|
},
|
|
916
917
|
emits: ["update:setting", "update:show", "submit"],
|
|
917
|
-
setup(
|
|
918
|
-
const
|
|
919
|
-
ge([() =>
|
|
918
|
+
setup(C, { emit: y }) {
|
|
919
|
+
const o = C, r = y, n = ve(te(o.setting));
|
|
920
|
+
ge([() => o.show], ([g]) => {
|
|
920
921
|
if (g)
|
|
921
|
-
for (const p of Object.keys(
|
|
922
|
-
n[p] =
|
|
922
|
+
for (const p of Object.keys(o.setting))
|
|
923
|
+
n[p] = o.setting[p];
|
|
923
924
|
});
|
|
924
|
-
const
|
|
925
|
-
const p =
|
|
925
|
+
const t = _(() => o.menus.filter((g) => (g == null ? void 0 : g.category) === null)), i = _(() => n.bindings.filter((g) => {
|
|
926
|
+
const p = o.menus.find((d) => d._id === g.productId);
|
|
926
927
|
return p ? (p == null ? void 0 : p.category) === null : !1;
|
|
927
|
-
})),
|
|
928
|
-
const p =
|
|
928
|
+
})), b = _(() => o.menus.filter((g) => (g == null ? void 0 : g.category) !== null)), w = _(() => n.bindings.filter((g) => {
|
|
929
|
+
const p = o.menus.find((d) => d._id === g.productId);
|
|
929
930
|
return p ? (p == null ? void 0 : p.category) !== null : !1;
|
|
930
931
|
}));
|
|
931
|
-
function
|
|
932
|
-
n.bindings = [...
|
|
932
|
+
function f(g) {
|
|
933
|
+
n.bindings = [...i.value, ...g];
|
|
933
934
|
}
|
|
934
|
-
function
|
|
935
|
+
function m(g) {
|
|
935
936
|
n.bindings = [...w.value, ...g];
|
|
936
937
|
}
|
|
937
|
-
const
|
|
938
|
-
function
|
|
938
|
+
const s = M(), u = le(o, "show");
|
|
939
|
+
function x() {
|
|
939
940
|
var g, p;
|
|
940
|
-
(p = (g =
|
|
941
|
+
(p = (g = s.value) == null ? void 0 : g.validateInputs) == null || p.call(g);
|
|
941
942
|
}
|
|
942
|
-
function
|
|
943
|
+
function E() {
|
|
943
944
|
r("update:setting", te(n)), r("submit");
|
|
944
945
|
}
|
|
945
946
|
const { t: k } = Z();
|
|
946
947
|
return (g, p) => {
|
|
947
|
-
const
|
|
948
|
+
const d = F("FmChip"), c = F("FmForm"), A = F("FmButton"), v = F("FmSideSheet");
|
|
948
949
|
return I(), U(v, {
|
|
949
|
-
modelValue: S(
|
|
950
|
-
"onUpdate:modelValue": p[4] || (p[4] = (
|
|
950
|
+
modelValue: S(u),
|
|
951
|
+
"onUpdate:modelValue": p[4] || (p[4] = (e) => ae(u) ? u.value = e : null),
|
|
951
952
|
header: S(k)("inventory.integration.apply.title"),
|
|
952
953
|
"dismiss-away": "",
|
|
953
954
|
"close-button": "",
|
|
954
955
|
"max-width": 500
|
|
955
956
|
}, {
|
|
956
957
|
default: O(() => [
|
|
957
|
-
l("div",
|
|
958
|
+
l("div", _t, [
|
|
958
959
|
l("div", null, [
|
|
959
|
-
|
|
960
|
+
h(d, { label: "Menu v4" })
|
|
960
961
|
]),
|
|
961
|
-
|
|
962
|
+
h(c, {
|
|
962
963
|
ref_key: "formRef",
|
|
963
|
-
ref:
|
|
964
|
-
onValidationSuccess: p[2] || (p[2] = (
|
|
964
|
+
ref: s,
|
|
965
|
+
onValidationSuccess: p[2] || (p[2] = (e) => E())
|
|
965
966
|
}, {
|
|
966
967
|
default: O(() => [
|
|
967
|
-
|
|
968
|
+
h(fe, {
|
|
968
969
|
categories: g.categories,
|
|
969
970
|
variants: g.variants,
|
|
970
971
|
bindings: w.value,
|
|
971
|
-
menus:
|
|
972
|
-
"onUpdate:bindings": p[0] || (p[0] = (
|
|
972
|
+
menus: b.value,
|
|
973
|
+
"onUpdate:bindings": p[0] || (p[0] = (e) => f(e))
|
|
973
974
|
}, null, 8, ["categories", "variants", "bindings", "menus"]),
|
|
974
|
-
|
|
975
|
+
h(fe, {
|
|
975
976
|
"is-addon": !0,
|
|
976
977
|
categories: [],
|
|
977
978
|
variants: g.variants,
|
|
978
|
-
bindings:
|
|
979
|
-
menus:
|
|
980
|
-
"onUpdate:bindings": p[1] || (p[1] = (
|
|
979
|
+
bindings: i.value,
|
|
980
|
+
menus: t.value,
|
|
981
|
+
"onUpdate:bindings": p[1] || (p[1] = (e) => m(e))
|
|
981
982
|
}, null, 8, ["variants", "bindings", "menus"])
|
|
982
983
|
]),
|
|
983
984
|
_: 1
|
|
@@ -985,57 +986,57 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
985
986
|
])
|
|
986
987
|
]),
|
|
987
988
|
"side-sheet-footer": O(() => [
|
|
988
|
-
|
|
989
|
+
h(A, {
|
|
989
990
|
loading: g.loading,
|
|
990
991
|
type: "submit",
|
|
991
992
|
label: S(k)("common.confirm"),
|
|
992
|
-
onClick: p[3] || (p[3] = (
|
|
993
|
+
onClick: p[3] || (p[3] = (e) => x())
|
|
993
994
|
}, null, 8, ["loading", "label"])
|
|
994
995
|
]),
|
|
995
996
|
_: 1
|
|
996
997
|
}, 8, ["modelValue", "header"]);
|
|
997
998
|
};
|
|
998
999
|
}
|
|
999
|
-
}),
|
|
1000
|
+
}), Ht = { key: 0 }, Ut = { class: "flex justify-center" }, Xt = ["src"], Qt = { class: "flex flex-col items-center gap-2" }, Yt = { class: "text-lg font-bold" }, Jt = { class: "text-fm-color-neutral-gray-300" }, Kt = { key: 0 }, Pt = /* @__PURE__ */ Y({
|
|
1000
1001
|
__name: "FoodMarketHub",
|
|
1001
|
-
setup(
|
|
1002
|
-
const y = oe(),
|
|
1002
|
+
setup(C) {
|
|
1003
|
+
const y = oe(), o = ee(), r = $(), n = M(!1), t = Ze(), i = _(() => t.state.menu ?? []), b = _(() => t.state.group ?? []), w = _(() => t.state.variants ?? []), f = _(() => t.state.categories ?? []), m = Qe(), s = _(() => {
|
|
1003
1004
|
var c;
|
|
1004
1005
|
return (c = y.currentBusiness.value) == null ? void 0 : c.menuVersion;
|
|
1005
1006
|
});
|
|
1006
|
-
r.watchLocation(
|
|
1007
|
-
const
|
|
1008
|
-
async function
|
|
1009
|
-
|
|
1007
|
+
r.watchLocation(t.init);
|
|
1008
|
+
const u = M(!1);
|
|
1009
|
+
async function x() {
|
|
1010
|
+
u.value = !0;
|
|
1010
1011
|
}
|
|
1011
|
-
const { breakpoints:
|
|
1012
|
+
const { breakpoints: E } = Ve(), k = _(() => E.value.xs || E.value.sm), g = _(() => k.value);
|
|
1012
1013
|
async function p() {
|
|
1013
|
-
const c =
|
|
1014
|
+
const c = t.state.setting;
|
|
1014
1015
|
if (c) {
|
|
1015
1016
|
n.value = !0;
|
|
1016
1017
|
try {
|
|
1017
|
-
await
|
|
1018
|
+
await m.updateSetting(c), o.open({
|
|
1018
1019
|
title: "Success",
|
|
1019
1020
|
message: "Your changes has been saved",
|
|
1020
1021
|
type: "success"
|
|
1021
|
-
}),
|
|
1022
|
+
}), u.value = !1, await t.init();
|
|
1022
1023
|
return;
|
|
1023
|
-
} catch (
|
|
1024
|
-
|
|
1024
|
+
} catch (A) {
|
|
1025
|
+
o.open({
|
|
1025
1026
|
title: "Something went wrong",
|
|
1026
1027
|
message: "Cannot update integration info. Please try again.",
|
|
1027
1028
|
type: "error"
|
|
1028
|
-
}), console.error("Error at updating integration info",
|
|
1029
|
+
}), console.error("Error at updating integration info", A);
|
|
1029
1030
|
} finally {
|
|
1030
1031
|
n.value = !1;
|
|
1031
1032
|
}
|
|
1032
1033
|
}
|
|
1033
1034
|
}
|
|
1034
|
-
const { t:
|
|
1035
|
-
return (c,
|
|
1036
|
-
const v = F("FmCardSection"),
|
|
1037
|
-
return S(
|
|
1038
|
-
|
|
1035
|
+
const { t: d } = Z();
|
|
1036
|
+
return (c, A) => {
|
|
1037
|
+
const v = F("FmCardSection"), e = F("FmCard");
|
|
1038
|
+
return S(t).isEnabled && !S(t).isBusinessLocation ? (I(), V("div", Ht, [
|
|
1039
|
+
h(e, {
|
|
1039
1040
|
class: q({
|
|
1040
1041
|
"w-full": g.value,
|
|
1041
1042
|
"w-1/2": !g.value,
|
|
@@ -1044,20 +1045,20 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1044
1045
|
"cursor-pointer": !0,
|
|
1045
1046
|
"hover:border-fm-color-primary": !0
|
|
1046
1047
|
}),
|
|
1047
|
-
onClick:
|
|
1048
|
+
onClick: A[0] || (A[0] = (a) => x())
|
|
1048
1049
|
}, {
|
|
1049
1050
|
default: O(() => [
|
|
1050
|
-
|
|
1051
|
+
h(v, null, {
|
|
1051
1052
|
default: O(() => [
|
|
1052
|
-
l("div",
|
|
1053
|
+
l("div", Ut, [
|
|
1053
1054
|
l("img", {
|
|
1054
|
-
src: S(
|
|
1055
|
+
src: S(nt),
|
|
1055
1056
|
alt: "Food Market Hub"
|
|
1056
|
-
}, null, 8,
|
|
1057
|
+
}, null, 8, Xt)
|
|
1057
1058
|
]),
|
|
1058
|
-
l("div",
|
|
1059
|
-
l("div",
|
|
1060
|
-
l("div",
|
|
1059
|
+
l("div", Qt, [
|
|
1060
|
+
l("div", Yt, j(S(d)("inventory.integration.fmh.title")), 1),
|
|
1061
|
+
l("div", Jt, j(S(d)("inventory.integration.fmh.description")), 1)
|
|
1061
1062
|
])
|
|
1062
1063
|
]),
|
|
1063
1064
|
_: 1
|
|
@@ -1065,45 +1066,45 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1065
1066
|
]),
|
|
1066
1067
|
_: 1
|
|
1067
1068
|
}, 8, ["class"]),
|
|
1068
|
-
S(
|
|
1069
|
+
S(t).state.setting ? (I(), V("div", Kt, [
|
|
1069
1070
|
(I(), U(ce, { to: "body" }, [
|
|
1070
|
-
|
|
1071
|
+
s.value === "v3" ? (I(), U(Tt, {
|
|
1071
1072
|
key: 0,
|
|
1072
|
-
menus:
|
|
1073
|
+
menus: i.value,
|
|
1073
1074
|
variants: w.value,
|
|
1074
|
-
categories:
|
|
1075
|
-
setting: S(
|
|
1076
|
-
"onUpdate:setting":
|
|
1077
|
-
show:
|
|
1078
|
-
"onUpdate:show":
|
|
1079
|
-
groups:
|
|
1075
|
+
categories: f.value,
|
|
1076
|
+
setting: S(t).state.setting,
|
|
1077
|
+
"onUpdate:setting": A[1] || (A[1] = (a) => S(t).state.setting = a),
|
|
1078
|
+
show: u.value,
|
|
1079
|
+
"onUpdate:show": A[2] || (A[2] = (a) => u.value = a),
|
|
1080
|
+
groups: b.value,
|
|
1080
1081
|
loading: n.value,
|
|
1081
|
-
onSubmit:
|
|
1082
|
-
}, null, 8, ["menus", "variants", "categories", "setting", "show", "groups", "loading"])) : (I(), U(
|
|
1082
|
+
onSubmit: A[3] || (A[3] = (a) => p())
|
|
1083
|
+
}, null, 8, ["menus", "variants", "categories", "setting", "show", "groups", "loading"])) : (I(), U(zt, {
|
|
1083
1084
|
key: 1,
|
|
1084
|
-
menus:
|
|
1085
|
+
menus: i.value,
|
|
1085
1086
|
variants: w.value,
|
|
1086
|
-
categories:
|
|
1087
|
-
setting: S(
|
|
1088
|
-
"onUpdate:setting":
|
|
1089
|
-
show:
|
|
1090
|
-
"onUpdate:show":
|
|
1091
|
-
groups:
|
|
1087
|
+
categories: f.value,
|
|
1088
|
+
setting: S(t).state.setting,
|
|
1089
|
+
"onUpdate:setting": A[4] || (A[4] = (a) => S(t).state.setting = a),
|
|
1090
|
+
show: u.value,
|
|
1091
|
+
"onUpdate:show": A[5] || (A[5] = (a) => u.value = a),
|
|
1092
|
+
groups: b.value,
|
|
1092
1093
|
loading: n.value,
|
|
1093
|
-
onSubmit:
|
|
1094
|
+
onSubmit: A[6] || (A[6] = (a) => p())
|
|
1094
1095
|
}, null, 8, ["menus", "variants", "categories", "setting", "show", "groups", "loading"]))
|
|
1095
1096
|
]))
|
|
1096
1097
|
])) : z("", !0)
|
|
1097
1098
|
])) : z("", !0);
|
|
1098
1099
|
};
|
|
1099
1100
|
}
|
|
1100
|
-
}), Pt = "data:image/svg+xml,%3csvg%20width='200'%20height='100'%20viewBox='0%200%20200%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3crect%20width='200'%20height='100'%20fill='url(%23pattern0_1500_58879)'/%3e%3cdefs%3e%3cpattern%20id='pattern0_1500_58879'%20patternContentUnits='objectBoundingBox'%20width='1'%20height='1'%3e%3cuse%20xlink:href='%23image0_1500_58879'%20transform='matrix(0.002%200%200%200.004%200%200.046)'/%3e%3c/pattern%3e%3cimage%20id='image0_1500_58879'%20width='500'%20height='227'%20xlink:href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAADjCAYAAABzcuYdAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB9KADAAQAAAABAAAA4wAAAABu8la3AABAAElEQVR4Ae2dCYAcVZnH61V191w5yDU5CDAkIXN0z0wC7C4uAorKpeyysugiuLqKooKIBwsCcguCFwoogqwrIHhzLIKigDeIQDLT3XMlmYSQBHKQhITM1V319v+6p/qorup+1VPd0z3zFXSm6r3vvfe9X1W9792lKHQQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIgMKIAREgApVLoKmp6aCGhoZZqrp/fzi8eU/lakqaEQEiMNkEpqNBZ8Fg00JVr13AfcpizrX5uAlLVVVlhmHwybohSF/lnA/jtwU6bIcu24eHh3du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ASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARyCTAMi/onAgQgWwCra2th6mqulBTlEWKYjRyVZ2nKspcnHPO1bjCjW0IsVvhbKvO2OvDw8NbBwcH38iOha6IABEgAqUnULUGvb390DlcmXEbMrCQK8wwUWncPEv9DegKvycS6bk/5eLRSbC99VKmqKcgujEzSpv0GVd4zFD0qyOR/hdMOae/HStWLGW1tfcoijUjukMQmBoXB5TJOrjNE8AZV3Ujfnk0OvD3LGFctLW1BX2qcgtTmB+Xltis0t5f5+pvkwEFDwRjXwyHwy+61SAYDAY0wzhS0dT3KIwfh3wuRxww5ooM6L1AspVz5WXG2J+4zp8Z1fWe/v7+/UXocaimql9HuIMY56nnG9cBQH+4OxL5lts43cqvWLGipq6u5ivg0AEV4iK8eL7xzPjwT7/Oey+ORtPPvlP8TU1NtbNmNIh42g2FJeIRsoxxHzdYH3h9NhqNpt4hazzt7cGPI9mz4T5m835Zxct2DZ1qUKG7vzva+/18iXaEgncj78sYT+c9n7xXfniPxX0a3LV7z2e2bds25FW8FE/lEvBVrmr5NTOMmTWqppwEqQW2RXpGcJUrHe3tK18Ihwf6MpwnfArjciRTlbcVighGAf+pdxSSS/hrWgNKOuQLxUXWUSiXWcKOF9ZY7Ay60NbHVFuDgQdmLozVaY4JlNgjV3+rS1IBZhjfcKmK1hEM/pui8ovA/1iGGwaT4zIK5SCEOQhhgwh4GtOYUqv6utqDbU/AkN0Ho9UjGyGa/zMheyo0EM9DVjBcbcpyKNHF0NCQBoN+HPJ0FO55KhVxhqdz8RtvLEUlZ0vK3elk1vCwpsysF5WjIzOigThiYnzRgTeHwNr5QIU4hPTf5iwxOT4JDkxdUzB1ppyIvC9z/zgVjDmvgHiP8X431dfXV205nzeD5JlDIO+LlCNdQQ6MDaHMU0ZkVEJhMJdx/y2Q9Ti/LCaTPmRizFAzW1mOwaArykopUcc47D1EnPiJzozMn72wYhiqbZeAznTR1+zYmnKIroTO4/lKMEufG9BTNtH29pajOkMtjzPV+BkKweNwD7x7TpjSqarsMo3xF9FSu0FWp8RzwHnG853OG1fiss+dbHKOcngYR+08Ycxs3e1kE26c2cojnow82oeGDmXLr70GeVx5Yd3Qw1Iwj3lSmJgXd3mfJpYahZ5kAt4VXJOckULJo2Vwekeo9fxCcuQ/vQi0B1s+gK7QJ5O9IqXLOwx0Ldq1J5QuBYqZCBCB6U6gqg06utLRQ5r9S7Zu062ZzGs0fq9F13uLVzddDKrKp58aOpRM3poHuWApfdBiVbN+XnZPALqlRezVdbbO1jxIN7qlYHWG2j6Bit59+GGSWxkOVni8OVMLAz0p6R8Iiz7eMh9izDr1TOFc6CB+uouSYzt0NsNlxiXOZbIkBoLNcGXOfk5yZj5Sf1W7QavsYPo4MxGmXIepH7RzcafKpR2lUyoC02xshS1A1/tXAfNf8fPWOpTqDlG8JSHQGWw5GfbkW4W61yGzB4Mg69G6jmCsYVBlbBsmWe5RMcUdU8REz/hiyCyGZToCdqcJckvhuKgkSk/fSMcwzIN5jqyormuE9SFswA6fGD6Cn9vathlVPUqRooefJpInU4ECfwOYozCkaZU0lbCAxuQ9IQLTzKCjRcCU92DW7KfC4ejtEyJX0sClqGuYcVor7Ka7mSGrv+leqX+t+hfWMxhcOhctl1thjG0LeRED5mf04nc3i8cf7+rvh0FXbOcUWFLzdzQ3LzU0rYWp7GQYeUyGUlohk3jP0LU/gTaamc9quz8WQkVcDo/qt9Vq2k/jano1i2w0jI2NYrL3mTDa19uH4dfFDfYQ/ByfBftwaBFomBgTM15z8i/ozlg0bijnYYoA5hf4J/Bs2KeECgNT1dhIf/86muFuj2jKuU47gy7uICapXIvlSU+7mXU8Ne789DMGdvdNYw0fRQHvPPRi8Nu5+uZV4cjmPXbh87jFuvv7N8Jf/J5ownKtmTNr/4lx7d2Yb3yuXAdzntinqdfAwMBWZF38ijqwemGDY0CuDk5aOcCVN5G2WBqKTh46iMDECUw5g17IZIl2DgrzuZrCRdf76fiZTZ+J00QMTunLNO/sFHCKz5SVVV6MRicP8695lR2DecVV0aVsd4hV6om10AlPR7GcoGbMOR5SDqnQlnaMVUlTLtklnhv1kiVL6jGT/Zxcn6QLStZbu6M9n3Xyd+O+adMm0UX8B/Fbvnz512oaaprdhK9EWTGWnTjMv5WopEUnxgyUc9YnJSmU9LMEKNclumyw1j+wfv162xUA5VKD0pk6BKacQZe9NTDqp7UHg58MR6Ny68NlIy6v3BDq9mthYsUYYNLUmQWtxfCZzoUaA1jzix4M9NTpyut2WTEMba+q8achFcDYMnql0zHbyWe4CUFsxMH/AeztS9cMYZwiT7wbCewX8ulU0mfZ4smrhC+Uwzi3rf4L5sw4EjU6sU7c7ogODY9ebecxUbcNGzbsQBziRwcRIAJEoCQEpq1BFzQxhnolZr0/gQ1nBktCt8SRwpi+oitD7+VG/Z433nhDTLr37NiyZYttq6G3t7cHXcnvjsfjlipD/qQRX1yML2OoUGyugiVchQ5+QNf1T3X3rHth6dKlrsc3nfRHT0UrahO2zz3mXf0QraV9hTQjfyJABIhAJRKwLdgqUdFS6ISW3yJMmLkJcb+/FPGXOs5EC5nXH8A4XNEzbYvQ0RjvSnYd1PCPYUuwGulwhqoOQ1iHcRZ/PTkwLW2lU0SYs/a0kx+5T5xARjfLxCOjGIgAEcghINP1mROoMhwaUmpkrl1OOTqcZMomzhl/X2eo+SMO4gWc3ayTlq87iXFpcWNkbs7o6KiMWIF8lMdb12uhq5mz5N9EXkV+x38K/oqfga3TsdpICHl6oPd+VqYOZrqYGLBXi7OKap2ba6+Tf5OMPIUhFZmY/WHOTBABzPsn30GzUITiyXis75+IsdRHIuXxNf3JvIj8mL9Sp57c/17Fdvzil07XPC99+pTC9CHgeYFZXnTYNSH/kKqUOlhbfP2q1mVHSAlnCqGJTMfUIICVD2pM9eJpmho8KBdEgAhUH4EqN+heAWdLmBYQXe/yzQ6vkqZ4ykvAaSMQxmZpnB9WXmUoNSJABIiAdwTIoJssGTtzVbD1o+Yl/Z2aBAyV9TvlTFOVDzj5kTsRIAJEoNIJkEHPuENYHIUNZ5avyHCi0ylGgOm8C1my3RYAS+TOaW9rO3WKZZmyQwSIwDQhQAY960azJRrz35zlRBdTisDQ2NjzWO4njHrOgVUPNdiy9Qf4lOp7cjzJgQgQASJQ4QSmhUHH1LW9KMR3ytwLFOrv7Qg1U9e7DKwqlBG7cmHfme85qY5lbQu5ov4ihG+XY3vg8nyFzUkZcicCRIAIuCAwLQw61kFtwfcbrxFfN5Jjo6Iwr4aud8br9++37T6Wy+f0lMKHeX6ACt5TTrlHpS6AveyuwI54zwY7Wj+1bNmy2U6y5E4EiAARqBQC8oujK0Xj4vQI7Bse/dGshsA/IPiH80WRqOEwZZGmJLre/x2yzmvTxKeQSzEvPvVRKVH/cK5zQTGfsWDmopY5c/YGYrEJ7xQ3hK3zampq3ijtRjUiTxnQMk6z74vAXrK6SszgsU+rLPAkvje+NDvd5NX4AraVWP19x6y62gtWB4P3YfeeB8Bms5381HUzHyvJunAFgkjkwPktLqvGzm9zWdWgxKYogelh0LEFWF3dfp2PzrlSqVGPx8c5lhW8n+h6X40NZ9ZE+u8pKFsSAZkClC/3MX+Xz4dKhz/gaBqFeunY7IsUBGb1ijKqG/EzIf5MSbJUQZFGIut6Q6GWD6oKexDd7I7fL08YdsbaoPpNfkX57OpQ22MGN356YDT+e/qoRgXd0GpUBd1E9AxV442rXJ2nh0EHf/+BBt/aTQNbVwdbrkSj9wG5W8Kub21d9sfe3sF1cvLllULXsLDODZkNXicN0tY+bdqTsmkDD5kAopw2z0Qk0vf7UKj5ZLTC70Le/8mJnekOmUbUez6iMu1DM2rUbixz/DHX+cNdfX0Dpgz9JQKyBNDBN3dVa+sZkBdbNyde0bjZISIbiY2c+NIgU7Q9XdHoc/AWH26iY5oQmDaFtz7TSLwwa6J9D65qbzkJrfQPF7zHjC32a4GvQO4s/KyWsGDwahMQcwzQWq2Qzsny0ItE+rsxRn5yQ33geuwY+AmkioZ4wUNDZWo1yuDVho9f2hlq+x3Q3b9rz76ntm3bNlQwNAkQARBAGdQM0/vLTBjp6nWmq7tzfCtR7GH5Ij7NeiJ9bMgdu2qX9uL5qQoG2v70tp581LgSvV2DMoqLWe/4zOpHZWQrWUbcaLtf+XW2alF+DawpDg4OvhGO9F2kc34S9pH/bSYpUQ3M98PzMRef7XsfU7VH58876M8dodbPtLS0zLOmQddEwI4Anp+sQ8PD5OaXFXj8IpmO+CgCHdONwLS86V0DA1sx7+xK2ZuNju0bWltb3e/1LpsAyVUEAdEF3xWJnswN/d9R4fsdlHLVXYkW12oMWdxa41OfQyXwgqamJonPxFZE1kmJKUcgNbN2yuWMMuRMYFoadIFDdL1jZ7CfOqNJ+4ixU7+mXZ92obMpTIB3R/t+0R3uOclQ9HdikcNd6L7c4Sq/jK1QVeX2WTMang4Gm9/uKiwJEwFPCIglOHRMNwLT1qCLG23EjMtQYG8rfNMNdITx96PVRXt9F4Y1VSR4ONz3h65wz/kGHzka33K9CBXAZ5E56bV0mI/wFo1pv0Y3/BUIN63ftanyUFRNPjibNvOjquaelEHRaX3Tu/v7N+Jb6F+CtXZcmpYuhYVRV2/uWLHij93r128R94aqwO6fUE1MuYHItQAAD99JREFUuauy3sBIZMMr0Po2TDK6q7bWdxRmxX8Q16dhyPLQXALZcydh1AOQuaEz1NoyEjM+1d/fvz83TK6Lj48ien/OHEV8VTtXuApcPJi8XQW5tFdRzDM1y4rMpwMVxFcwmfIuRcWXez0qTsTzgcmt+HAg34o9JUbsNSLXqUpgWht0cVO7Iv3/09neegpOxUz2vAfDJiRqrU/Mej83r2CVesKCBLDGujotRhmYj68Z/iuS+msodPhC1ag/BRb3wxhvPx7s8nNjyrk1Acx3Sj47meW6reZGXB32+5Ux+45TdohtoNI4Oqx6QM7pmBABGPpXMLxzw4QiocBEIIPAtDfoggUfMy7FZp//jErywRlsbE9RcJ+Dtey/EmPwtgJldeTb4oZ2DZI8wFmxs1rT5bXK8S0yResuaxaqNLFIZON2qP5D/O7HBjXHodX+WUyKOw3Xju8U/M9uDzb3hKP9hQvxkZE9ir/hgAMemaV1DkHlnWfNmlWHt0Osvc8JhOdtuLa2tmDFJCcgOaQIoLKmotenhjaXSSGhkwkScCx8JhhvVQUXXe8dwdbL0cYSBXTBA6bzltbWw0VLTWwIMXkHZ28Mj47eSwXC5N0CpKyL2fH4i01qWk7Cjh7XwnAf46QRGvKXBoMr/y8aHbD94psZLlZfr/qZaJ/nGlM45+8NMCOZ4N94PK7W+AJiyCDnwELn1/DcxXI8yIEIEIFJI1CWgmHScuci4e5o773oOpVqdaPAXlrjq7kRZe0kL0tKdMjWuMhmZYiKzgTzVxkaeaIFDPuTu/e8eaLB2W1OEaKjegZ2mrvIyd90hzF9k3NmOwaKuz5LtOxM2VL9VVVVGPM5dvFjVFhMDkx379gJkRsRIAJlJUAGPQP3WEy5HEZ9S4aT8ylXzkYr5V3OAuXwmc5TjcrB130aW7ZsGQ5HejAjnn/NKTTGTv8VPTyHOfkL90SvC+MOu87xmTC2M/OF98KvRlXnwmI7pMO3Ig0y6F6ApjiIgEcEyKBngOzr69uEbcHEEqOCB8bS0VBn8wsKkkAWAR09yPjCWeqX5TmVLnbuuQaVwxftsoRHZ15A8x9v55fpBlRidr3NwRYEAnyBjYe3Tqq6LPGc28bK3a3Nt42DHIkAEfCSABl0C81E1zvnv7A4T8LlVL0102MeVff27QewfshxOSQqg8FCDxVIbbCTgaFHN7hvqZ2fl24YqXfUER8w3OZlWhQXESACEycwVa3GhMiweKLr3aMWiGnAXOwimpqwTrdnQjdykgOzOHsK4+CjdnvKYAy64NIznWsDTlnQmNru5OeZOzPwARrx/JrPcCrmYYygr09dVfiJGOw39+OfbFXFG23+aMBssu/G1EufLIbNPU18DpPza2y8inTKKRCLjIeCVRMBWPLX0Zp+zU5nzL+YDfe8ZbqhxHvswgo3dOeXdP7GypUr52M2/Sq79LEhyr4Y51Vj0O3yQG5EYCoSIIPucFe7I/13YsbPIw7e5OwRgczxdHE+lQ7DQLuQ2W/BiWdLYkKZbwMM90ZbJlxZhV0LS9btXutnHVjFscI2bUXp6+3tfdXBj5yJABGYJAJk0J3BoyGiX4Zi17aF5RysnD6iM5GOSiWgaZpY8oWNWWwOprwO17w3MBqNvqZw1msTGvUEtkip9Z9u5+eFG+I/1ykebFf6Oyc/cicCRGDyCJBBz8M+HB7oM9hEu94FYsKcB/OU9fL52FuROdtd3dB0d5jBbsHBlV9ZXFKXiOPjHQsXNqQcPDrpaG0NIaoz7aLDcrxRReVP2fmRGxEgApNLgCxNAf5d4b670VR/uIDYJHkzPjIyQrt1TRL9fMkGg8EAttI9z0kGC/f6nPwy3Y248QT65vdkuqXOGVvFG+f/V+raoxOm8c+hC2CWfXQsjK/Q/d3ej1yJABGYTAK09Wth+gaP80sVH3sLVp4vLCxeTgl++Pw5M/+y4KAW3anvNu+sK6iq58zLQrsvuR/5ptF4/DyszRddw3S4JKAxfhGMIr4PkHsIA20Y8b/l+uS6iG2JV4VaHkdc5+T6ou+H86vb21uehZF90c7frVso1Hwu0nKsJGBTnHsRZ9xtvCRPBIhA6QlUtUFHdziMT+k/KClmva8Ktl6JxO4u/S1xkQJjtTC+q1EACyNc1JEbLumCrtW5GAO27S4uKiGZQKnlejLCxcmg5dyJkEcMDw//dnBw8I3iYskfqj0Y/BjmvH3ZUYrzP0ejG9Y7+ls8DJ3drmr83zGunbvdKzY3Yly7LxQ64sxIZJ3teLslOsfLjmDwX/BFQcdtazFBb3BoJPZjxwgq3EOVmIZY4Vkg9YhAXgJV3OWe/hCVuVLW6a94j/fmxVDYc2209x6Dqw+J6oO7n7mKV77ulFgz65COk6biRmb+rHJpNtn6p9cZmzPMk5KoKI0xNlT6ItDc09005uZ1oufA9rsg1qy5uobBakHr+WcNdbXPtofavh0MNr+9qanpIFeROAivamlpWhUMfsfHlLuQRsBKWtwfrEs3DMV5r3e7qLt7e59DmP8RdyY7zuSTqDGj1ce0J1e1N59lF76QW3Nz80x8QvhLTDV+Dh0PynyOLOc3Y0vanYXis/MXPUjJJys7B3ayXruJXirTmKt4vjJ/XqdlF1+y2WGWAxkSqCHRB24yeNDphAnIW5kJJ1X1EXAlrl/Gfdo/V17Xu1dskybDq9gqMR4m1sbBSuEetkK/Vp/q+/Ssmb7+jvbW52Bxnsfa62f3j4wM1tXVDWOWeaGv6YnPX86oDwQ6Vcbei26Ss9C/cXC+fMP/wUik97f5ZOz8RmPGDfie+onQvNnOH300S+H30472tl8zbtwd59rvob+ox4qbandoWPa2WKnVMFOefQICHXZCphtqdo+sDff9j3nt1d/S1xi90rQk8TRgiONIVVdHDM0QdScPDrNTLZaIi3OfGovFdg4MDGz1IHKKosIJkEF3cYNE13t7e/AGFMqO3ZIuoiPRCiGA+wkjqTbD0H8IKg3PqK/bB7f1HaHgIK6xbJHvQMs6NU2BoY8bNQIYbn64ZiSGPBZDzixJnXPFlV4+MnaZs4CzT39//7aOtpUXcE17BLo5zmyHYT9FYdopmsI3w7iv5YayHp903YYvwI0b9rgfn3BtUhhvxpK4VajYzHVONemDhmS/ElMuxhWNnReC5cIflZmQn6l/UFAKa4n+NefA6VpZIbuPpyNxJIt23Lta1e+7FU6fH/egP1OYABl0lzcX/aV3oRB8D34nuwxaVnHx2qcLgbImXe2J1eHe1iETC1E0HpvMDMykWU4mHMwL/DVPC+WaK5sxc/Hc7vXrtxQSdfLv7hl4qjO08qMo/u+FPnnHIzDefijiOdT8cjqM+vhhGgRJ3bnyMsbwP9Dd17vJjIH+ekMA90jcjHpvYrOPBWng2TVy517Yi5NrlRMw3+4qz0am+iJL1l+qNMsULOpcdMPyuH4JV1QsJZLBZ+pSVHKuA2GeIBpfyWAy2uWycp2kywAmD6e/LqNzKY6JlHkn/ouxVjc/RTR87X6ZenH+rB4zTsJY+EuZzsWcd0UGfoKlCe/lXN2a+Ka8JZLsEWq72R6WO24dUzbnMCT+sudiSvxUL/RO7nJr90TmvR2W3E3k0nzerHGUOf0svnY8rPolr03trfc3V1pU4y1VeTF7mI5pQUD+iZoWOOQyGe7rC+MNuUpOmqQqiQB6WF5EN+TjmMW/r9R64RnZg3SuHYrxk7H8rN+r9Nb29v4qxpW3Ie6f4+d5YY0o3+QG/9oYZ++a6Mx5r/JM8RABIlCYQNV2uXNejw4rXiezIzY+9Vg3c6aYO+7dgd017uwIhU5Fj9ZpErH6uSo36cXwG6qaszbcOYXMurionfGMXGb6Ocfg4ANm3KjPiM1BzoWz2Nuc+Xy1+YKYdwlGpU7DsoJ8ssX4YQ/ydQj37ra2tiDGmU9Cl/m70SnZgfTmo3sSc+bcxWqrILqpYWUfjivx75XKIKKnSCx7O6sz2CKGfi7C73g8izPcaY+2XEZ+UTXYjvCP6Qq7PdoTXes2rrzyjOO+Y+1ERnpCHhWHvM9D3jglPcVTZ94na/qGkb/HRjKJvGIof8Ty0sRhTd/UK28EE/VU8w/PTDR6Cl85BKrWoMfj8QM+VfsOSoi5iZVAKabZDRYxgQkTg17b84YxkhLx5iSOF/XzWIe0Di0+MUSZnfB4GnBkKsPWNDy+USZZNqTv5nW+bzvJ6kjGLBysCYpZW05+6fisodI+5lli0peibheMTTcv/uq6/ibn2tehQcCJl0gHHYQqKmsHhnVdGJiSHD09PVFELH7fFB854YHAUYpqYMtTFZ8MVY6AcTwUf8XYo5js5vSe6DpnMVVhw3gOEBfrRr6ewdT4p2FwdyNcyY+uaN9vkMhvVgdXdoLtyaiciHH/ozFwehD+Cv2d+pRjOlOgKkfXPXuOM/57roz+LhLZ8ArCeHro8+fHVEO5D8vi/oqnNz25EApDvZc3bdqUcvM04fHIsIlPRGG+xETWzOcOzyEGS5h4Bkp7cP59PNQHZ06sNBNE5Sn1zppusn+Tb3Kh95n5cX+flo2T5KqbgFn+V3cuSHsi4B0BtnTp0trZODTDWMJ9yiKU+qL1PhstvUTpid3ZGGaNjzBFfw3Dk6/C5r8SiUSEAY95p0bRMSWW0tXW1h4Ma7kcOi+AvjOydGdsN3okdijKyODu3UOvbtu2bajo1CggESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiIBHBP4fA65iItIh5WIAAAAASUVORK5CYII='/%3e%3c/defs%3e%3c/svg%3e", qt = { class: "flex-col items-center" }, Zt = { class: "flex gap-2" }, Gt = {
|
|
1101
|
+
}), qt = "data:image/svg+xml,%3csvg%20width='200'%20height='100'%20viewBox='0%200%20200%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3crect%20width='200'%20height='100'%20fill='url(%23pattern0_1500_58879)'/%3e%3cdefs%3e%3cpattern%20id='pattern0_1500_58879'%20patternContentUnits='objectBoundingBox'%20width='1'%20height='1'%3e%3cuse%20xlink:href='%23image0_1500_58879'%20transform='matrix(0.002%200%200%200.004%200%200.046)'/%3e%3c/pattern%3e%3cimage%20id='image0_1500_58879'%20width='500'%20height='227'%20xlink:href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAADjCAYAAABzcuYdAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB9KADAAQAAAABAAAA4wAAAABu8la3AABAAElEQVR4Ae2dCYAcVZnH61V191w5yDU5CDAkIXN0z0wC7C4uAorKpeyysugiuLqKooKIBwsCcguCFwoogqwrIHhzLIKigDeIQDLT3XMlmYSQBHKQhITM1V319v+6p/qorup+1VPd0z3zFXSm6r3vvfe9X1W9792lKHQQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIgMKIAREgApVLoKmp6aCGhoZZqrp/fzi8eU/lakqaEQEiMNkEpqNBZ8Fg00JVr13AfcpizrX5uAlLVVVlhmHwybohSF/lnA/jtwU6bIcu24eHh3du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ASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARyCTAMi/onAgQgWwCra2th6mqulBTlEWKYjRyVZ2nKspcnHPO1bjCjW0IsVvhbKvO2OvDw8NbBwcH38iOha6IABEgAqUnULUGvb390DlcmXEbMrCQK8wwUWncPEv9DegKvycS6bk/5eLRSbC99VKmqKcgujEzSpv0GVd4zFD0qyOR/hdMOae/HStWLGW1tfcoijUjukMQmBoXB5TJOrjNE8AZV3Ujfnk0OvD3LGFctLW1BX2qcgtTmB+Xltis0t5f5+pvkwEFDwRjXwyHwy+61SAYDAY0wzhS0dT3KIwfh3wuRxww5ooM6L1AspVz5WXG2J+4zp8Z1fWe/v7+/UXocaimql9HuIMY56nnG9cBQH+4OxL5lts43cqvWLGipq6u5ivg0AEV4iK8eL7xzPjwT7/Oey+ORtPPvlP8TU1NtbNmNIh42g2FJeIRsoxxHzdYH3h9NhqNpt4hazzt7cGPI9mz4T5m835Zxct2DZ1qUKG7vzva+/18iXaEgncj78sYT+c9n7xXfniPxX0a3LV7z2e2bds25FW8FE/lEvBVrmr5NTOMmTWqppwEqQW2RXpGcJUrHe3tK18Ihwf6MpwnfArjciRTlbcVighGAf+pdxSSS/hrWgNKOuQLxUXWUSiXWcKOF9ZY7Ay60NbHVFuDgQdmLozVaY4JlNgjV3+rS1IBZhjfcKmK1hEM/pui8ovA/1iGGwaT4zIK5SCEOQhhgwh4GtOYUqv6utqDbU/AkN0Ho9UjGyGa/zMheyo0EM9DVjBcbcpyKNHF0NCQBoN+HPJ0FO55KhVxhqdz8RtvLEUlZ0vK3elk1vCwpsysF5WjIzOigThiYnzRgTeHwNr5QIU4hPTf5iwxOT4JDkxdUzB1ppyIvC9z/zgVjDmvgHiP8X431dfXV205nzeD5JlDIO+LlCNdQQ6MDaHMU0ZkVEJhMJdx/y2Q9Ti/LCaTPmRizFAzW1mOwaArykopUcc47D1EnPiJzozMn72wYhiqbZeAznTR1+zYmnKIroTO4/lKMEufG9BTNtH29pajOkMtjzPV+BkKweNwD7x7TpjSqarsMo3xF9FSu0FWp8RzwHnG853OG1fiss+dbHKOcngYR+08Ycxs3e1kE26c2cojnow82oeGDmXLr70GeVx5Yd3Qw1Iwj3lSmJgXd3mfJpYahZ5kAt4VXJOckULJo2Vwekeo9fxCcuQ/vQi0B1s+gK7QJ5O9IqXLOwx0Ldq1J5QuBYqZCBCB6U6gqg06utLRQ5r9S7Zu062ZzGs0fq9F13uLVzddDKrKp58aOpRM3poHuWApfdBiVbN+XnZPALqlRezVdbbO1jxIN7qlYHWG2j6Bit59+GGSWxkOVni8OVMLAz0p6R8Iiz7eMh9izDr1TOFc6CB+uouSYzt0NsNlxiXOZbIkBoLNcGXOfk5yZj5Sf1W7QavsYPo4MxGmXIepH7RzcafKpR2lUyoC02xshS1A1/tXAfNf8fPWOpTqDlG8JSHQGWw5GfbkW4W61yGzB4Mg69G6jmCsYVBlbBsmWe5RMcUdU8REz/hiyCyGZToCdqcJckvhuKgkSk/fSMcwzIN5jqyormuE9SFswA6fGD6Cn9vathlVPUqRooefJpInU4ECfwOYozCkaZU0lbCAxuQ9IQLTzKCjRcCU92DW7KfC4ejtEyJX0sClqGuYcVor7Ka7mSGrv+leqX+t+hfWMxhcOhctl1thjG0LeRED5mf04nc3i8cf7+rvh0FXbOcUWFLzdzQ3LzU0rYWp7GQYeUyGUlohk3jP0LU/gTaamc9quz8WQkVcDo/qt9Vq2k/jano1i2w0jI2NYrL3mTDa19uH4dfFDfYQ/ByfBftwaBFomBgTM15z8i/ozlg0bijnYYoA5hf4J/Bs2KeECgNT1dhIf/86muFuj2jKuU47gy7uICapXIvlSU+7mXU8Ne789DMGdvdNYw0fRQHvPPRi8Nu5+uZV4cjmPXbh87jFuvv7N8Jf/J5ownKtmTNr/4lx7d2Yb3yuXAdzntinqdfAwMBWZF38ijqwemGDY0CuDk5aOcCVN5G2WBqKTh46iMDECUw5g17IZIl2DgrzuZrCRdf76fiZTZ+J00QMTunLNO/sFHCKz5SVVV6MRicP8695lR2DecVV0aVsd4hV6om10AlPR7GcoGbMOR5SDqnQlnaMVUlTLtklnhv1kiVL6jGT/Zxcn6QLStZbu6M9n3Xyd+O+adMm0UX8B/Fbvnz512oaaprdhK9EWTGWnTjMv5WopEUnxgyUc9YnJSmU9LMEKNclumyw1j+wfv162xUA5VKD0pk6BKacQZe9NTDqp7UHg58MR6Ny68NlIy6v3BDq9mthYsUYYNLUmQWtxfCZzoUaA1jzix4M9NTpyut2WTEMba+q8achFcDYMnql0zHbyWe4CUFsxMH/AeztS9cMYZwiT7wbCewX8ulU0mfZ4smrhC+Uwzi3rf4L5sw4EjU6sU7c7ogODY9ebecxUbcNGzbsQBziRwcRIAJEoCQEpq1BFzQxhnolZr0/gQ1nBktCt8SRwpi+oitD7+VG/Z433nhDTLr37NiyZYttq6G3t7cHXcnvjsfjlipD/qQRX1yML2OoUGyugiVchQ5+QNf1T3X3rHth6dKlrsc3nfRHT0UrahO2zz3mXf0QraV9hTQjfyJABIhAJRKwLdgqUdFS6ISW3yJMmLkJcb+/FPGXOs5EC5nXH8A4XNEzbYvQ0RjvSnYd1PCPYUuwGulwhqoOQ1iHcRZ/PTkwLW2lU0SYs/a0kx+5T5xARjfLxCOjGIgAEcghINP1mROoMhwaUmpkrl1OOTqcZMomzhl/X2eo+SMO4gWc3ayTlq87iXFpcWNkbs7o6KiMWIF8lMdb12uhq5mz5N9EXkV+x38K/oqfga3TsdpICHl6oPd+VqYOZrqYGLBXi7OKap2ba6+Tf5OMPIUhFZmY/WHOTBABzPsn30GzUITiyXis75+IsdRHIuXxNf3JvIj8mL9Sp57c/17Fdvzil07XPC99+pTC9CHgeYFZXnTYNSH/kKqUOlhbfP2q1mVHSAlnCqGJTMfUIICVD2pM9eJpmho8KBdEgAhUH4EqN+heAWdLmBYQXe/yzQ6vkqZ4ykvAaSMQxmZpnB9WXmUoNSJABIiAdwTIoJssGTtzVbD1o+Yl/Z2aBAyV9TvlTFOVDzj5kTsRIAJEoNIJkEHPuENYHIUNZ5avyHCi0ylGgOm8C1my3RYAS+TOaW9rO3WKZZmyQwSIwDQhQAY960azJRrz35zlRBdTisDQ2NjzWO4njHrOgVUPNdiy9Qf4lOp7cjzJgQgQASJQ4QSmhUHH1LW9KMR3ytwLFOrv7Qg1U9e7DKwqlBG7cmHfme85qY5lbQu5ov4ihG+XY3vg8nyFzUkZcicCRIAIuCAwLQw61kFtwfcbrxFfN5Jjo6Iwr4aud8br9++37T6Wy+f0lMKHeX6ACt5TTrlHpS6AveyuwI54zwY7Wj+1bNmy2U6y5E4EiAARqBQC8oujK0Xj4vQI7Bse/dGshsA/IPiH80WRqOEwZZGmJLre/x2yzmvTxKeQSzEvPvVRKVH/cK5zQTGfsWDmopY5c/YGYrEJ7xQ3hK3zampq3ijtRjUiTxnQMk6z74vAXrK6SszgsU+rLPAkvje+NDvd5NX4AraVWP19x6y62gtWB4P3YfeeB8Bms5381HUzHyvJunAFgkjkwPktLqvGzm9zWdWgxKYogelh0LEFWF3dfp2PzrlSqVGPx8c5lhW8n+h6X40NZ9ZE+u8pKFsSAZkClC/3MX+Xz4dKhz/gaBqFeunY7IsUBGb1ijKqG/EzIf5MSbJUQZFGIut6Q6GWD6oKexDd7I7fL08YdsbaoPpNfkX57OpQ22MGN356YDT+e/qoRgXd0GpUBd1E9AxV442rXJ2nh0EHf/+BBt/aTQNbVwdbrkSj9wG5W8Kub21d9sfe3sF1cvLllULXsLDODZkNXicN0tY+bdqTsmkDD5kAopw2z0Qk0vf7UKj5ZLTC70Le/8mJnekOmUbUez6iMu1DM2rUbixz/DHX+cNdfX0Dpgz9JQKyBNDBN3dVa+sZkBdbNyde0bjZISIbiY2c+NIgU7Q9XdHoc/AWH26iY5oQmDaFtz7TSLwwa6J9D65qbzkJrfQPF7zHjC32a4GvQO4s/KyWsGDwahMQcwzQWq2Qzsny0ItE+rsxRn5yQ33geuwY+AmkioZ4wUNDZWo1yuDVho9f2hlq+x3Q3b9rz76ntm3bNlQwNAkQARBAGdQM0/vLTBjp6nWmq7tzfCtR7GH5Ij7NeiJ9bMgdu2qX9uL5qQoG2v70tp581LgSvV2DMoqLWe/4zOpHZWQrWUbcaLtf+XW2alF+DawpDg4OvhGO9F2kc34S9pH/bSYpUQ3M98PzMRef7XsfU7VH58876M8dodbPtLS0zLOmQddEwI4Anp+sQ8PD5OaXFXj8IpmO+CgCHdONwLS86V0DA1sx7+xK2ZuNju0bWltb3e/1LpsAyVUEAdEF3xWJnswN/d9R4fsdlHLVXYkW12oMWdxa41OfQyXwgqamJonPxFZE1kmJKUcgNbN2yuWMMuRMYFoadIFDdL1jZ7CfOqNJ+4ixU7+mXZ92obMpTIB3R/t+0R3uOclQ9HdikcNd6L7c4Sq/jK1QVeX2WTMang4Gm9/uKiwJEwFPCIglOHRMNwLT1qCLG23EjMtQYG8rfNMNdITx96PVRXt9F4Y1VSR4ONz3h65wz/kGHzka33K9CBXAZ5E56bV0mI/wFo1pv0Y3/BUIN63ftanyUFRNPjibNvOjquaelEHRaX3Tu/v7N+Jb6F+CtXZcmpYuhYVRV2/uWLHij93r128R94aqwO6fUE1MuYHItQAAD99JREFUuauy3sBIZMMr0Po2TDK6q7bWdxRmxX8Q16dhyPLQXALZcydh1AOQuaEz1NoyEjM+1d/fvz83TK6Lj48ien/OHEV8VTtXuApcPJi8XQW5tFdRzDM1y4rMpwMVxFcwmfIuRcWXez0qTsTzgcmt+HAg34o9JUbsNSLXqUpgWht0cVO7Iv3/09neegpOxUz2vAfDJiRqrU/Mej83r2CVesKCBLDGujotRhmYj68Z/iuS+msodPhC1ag/BRb3wxhvPx7s8nNjyrk1Acx3Sj47meW6reZGXB32+5Ux+45TdohtoNI4Oqx6QM7pmBABGPpXMLxzw4QiocBEIIPAtDfoggUfMy7FZp//jErywRlsbE9RcJ+Dtey/EmPwtgJldeTb4oZ2DZI8wFmxs1rT5bXK8S0yResuaxaqNLFIZON2qP5D/O7HBjXHodX+WUyKOw3Xju8U/M9uDzb3hKP9hQvxkZE9ir/hgAMemaV1DkHlnWfNmlWHt0Osvc8JhOdtuLa2tmDFJCcgOaQIoLKmotenhjaXSSGhkwkScCx8JhhvVQUXXe8dwdbL0cYSBXTBA6bzltbWw0VLTWwIMXkHZ28Mj47eSwXC5N0CpKyL2fH4i01qWk7Cjh7XwnAf46QRGvKXBoMr/y8aHbD94psZLlZfr/qZaJ/nGlM45+8NMCOZ4N94PK7W+AJiyCDnwELn1/DcxXI8yIEIEIFJI1CWgmHScuci4e5o773oOpVqdaPAXlrjq7kRZe0kL0tKdMjWuMhmZYiKzgTzVxkaeaIFDPuTu/e8eaLB2W1OEaKjegZ2mrvIyd90hzF9k3NmOwaKuz5LtOxM2VL9VVVVGPM5dvFjVFhMDkx379gJkRsRIAJlJUAGPQP3WEy5HEZ9S4aT8ylXzkYr5V3OAuXwmc5TjcrB130aW7ZsGQ5HejAjnn/NKTTGTv8VPTyHOfkL90SvC+MOu87xmTC2M/OF98KvRlXnwmI7pMO3Ig0y6F6ApjiIgEcEyKBngOzr69uEbcHEEqOCB8bS0VBn8wsKkkAWAR09yPjCWeqX5TmVLnbuuQaVwxftsoRHZ15A8x9v55fpBlRidr3NwRYEAnyBjYe3Tqq6LPGc28bK3a3Nt42DHIkAEfCSABl0C81E1zvnv7A4T8LlVL0102MeVff27QewfshxOSQqg8FCDxVIbbCTgaFHN7hvqZ2fl24YqXfUER8w3OZlWhQXESACEycwVa3GhMiweKLr3aMWiGnAXOwimpqwTrdnQjdykgOzOHsK4+CjdnvKYAy64NIznWsDTlnQmNru5OeZOzPwARrx/JrPcCrmYYygr09dVfiJGOw39+OfbFXFG23+aMBssu/G1EufLIbNPU18DpPza2y8inTKKRCLjIeCVRMBWPLX0Zp+zU5nzL+YDfe8ZbqhxHvswgo3dOeXdP7GypUr52M2/Sq79LEhyr4Y51Vj0O3yQG5EYCoSIIPucFe7I/13YsbPIw7e5OwRgczxdHE+lQ7DQLuQ2W/BiWdLYkKZbwMM90ZbJlxZhV0LS9btXutnHVjFscI2bUXp6+3tfdXBj5yJABGYJAJk0J3BoyGiX4Zi17aF5RysnD6iM5GOSiWgaZpY8oWNWWwOprwO17w3MBqNvqZw1msTGvUEtkip9Z9u5+eFG+I/1ykebFf6Oyc/cicCRGDyCJBBz8M+HB7oM9hEu94FYsKcB/OU9fL52FuROdtd3dB0d5jBbsHBlV9ZXFKXiOPjHQsXNqQcPDrpaG0NIaoz7aLDcrxRReVP2fmRGxEgApNLgCxNAf5d4b670VR/uIDYJHkzPjIyQrt1TRL9fMkGg8EAttI9z0kGC/f6nPwy3Y248QT65vdkuqXOGVvFG+f/V+raoxOm8c+hC2CWfXQsjK/Q/d3ej1yJABGYTAK09Wth+gaP80sVH3sLVp4vLCxeTgl++Pw5M/+y4KAW3anvNu+sK6iq58zLQrsvuR/5ptF4/DyszRddw3S4JKAxfhGMIr4PkHsIA20Y8b/l+uS6iG2JV4VaHkdc5+T6ou+H86vb21uehZF90c7frVso1Hwu0nKsJGBTnHsRZ9xtvCRPBIhA6QlUtUFHdziMT+k/KClmva8Ktl6JxO4u/S1xkQJjtTC+q1EACyNc1JEbLumCrtW5GAO27S4uKiGZQKnlejLCxcmg5dyJkEcMDw//dnBw8I3iYskfqj0Y/BjmvH3ZUYrzP0ejG9Y7+ls8DJ3drmr83zGunbvdKzY3Yly7LxQ64sxIZJ3teLslOsfLjmDwX/BFQcdtazFBb3BoJPZjxwgq3EOVmIZY4Vkg9YhAXgJV3OWe/hCVuVLW6a94j/fmxVDYc2209x6Dqw+J6oO7n7mKV77ulFgz65COk6biRmb+rHJpNtn6p9cZmzPMk5KoKI0xNlT6ItDc09005uZ1oufA9rsg1qy5uobBakHr+WcNdbXPtofavh0MNr+9qanpIFeROAivamlpWhUMfsfHlLuQRsBKWtwfrEs3DMV5r3e7qLt7e59DmP8RdyY7zuSTqDGj1ce0J1e1N59lF76QW3Nz80x8QvhLTDV+Dh0PynyOLOc3Y0vanYXis/MXPUjJJys7B3ayXruJXirTmKt4vjJ/XqdlF1+y2WGWAxkSqCHRB24yeNDphAnIW5kJJ1X1EXAlrl/Gfdo/V17Xu1dskybDq9gqMR4m1sbBSuEetkK/Vp/q+/Ssmb7+jvbW52Bxnsfa62f3j4wM1tXVDWOWeaGv6YnPX86oDwQ6Vcbei26Ss9C/cXC+fMP/wUik97f5ZOz8RmPGDfie+onQvNnOH300S+H30472tl8zbtwd59rvob+ox4qbandoWPa2WKnVMFOefQICHXZCphtqdo+sDff9j3nt1d/S1xi90rQk8TRgiONIVVdHDM0QdScPDrNTLZaIi3OfGovFdg4MDGz1IHKKosIJkEF3cYNE13t7e/AGFMqO3ZIuoiPRCiGA+wkjqTbD0H8IKg3PqK/bB7f1HaHgIK6xbJHvQMs6NU2BoY8bNQIYbn64ZiSGPBZDzixJnXPFlV4+MnaZs4CzT39//7aOtpUXcE17BLo5zmyHYT9FYdopmsI3w7iv5YayHp903YYvwI0b9rgfn3BtUhhvxpK4VajYzHVONemDhmS/ElMuxhWNnReC5cIflZmQn6l/UFAKa4n+NefA6VpZIbuPpyNxJIt23Lta1e+7FU6fH/egP1OYABl0lzcX/aV3oRB8D34nuwxaVnHx2qcLgbImXe2J1eHe1iETC1E0HpvMDMykWU4mHMwL/DVPC+WaK5sxc/Hc7vXrtxQSdfLv7hl4qjO08qMo/u+FPnnHIzDefijiOdT8cjqM+vhhGgRJ3bnyMsbwP9Dd17vJjIH+ekMA90jcjHpvYrOPBWng2TVy517Yi5NrlRMw3+4qz0am+iJL1l+qNMsULOpcdMPyuH4JV1QsJZLBZ+pSVHKuA2GeIBpfyWAy2uWycp2kywAmD6e/LqNzKY6JlHkn/ouxVjc/RTR87X6ZenH+rB4zTsJY+EuZzsWcd0UGfoKlCe/lXN2a+Ka8JZLsEWq72R6WO24dUzbnMCT+sudiSvxUL/RO7nJr90TmvR2W3E3k0nzerHGUOf0svnY8rPolr03trfc3V1pU4y1VeTF7mI5pQUD+iZoWOOQyGe7rC+MNuUpOmqQqiQB6WF5EN+TjmMW/r9R64RnZg3SuHYrxk7H8rN+r9Nb29v4qxpW3Ie6f4+d5YY0o3+QG/9oYZ++a6Mx5r/JM8RABIlCYQNV2uXNejw4rXiezIzY+9Vg3c6aYO+7dgd017uwIhU5Fj9ZpErH6uSo36cXwG6qaszbcOYXMurionfGMXGb6Ocfg4ANm3KjPiM1BzoWz2Nuc+Xy1+YKYdwlGpU7DsoJ8ssX4YQ/ydQj37ra2tiDGmU9Cl/m70SnZgfTmo3sSc+bcxWqrILqpYWUfjivx75XKIKKnSCx7O6sz2CKGfi7C73g8izPcaY+2XEZ+UTXYjvCP6Qq7PdoTXes2rrzyjOO+Y+1ERnpCHhWHvM9D3jglPcVTZ94na/qGkb/HRjKJvGIof8Ty0sRhTd/UK28EE/VU8w/PTDR6Cl85BKrWoMfj8QM+VfsOSoi5iZVAKabZDRYxgQkTg17b84YxkhLx5iSOF/XzWIe0Di0+MUSZnfB4GnBkKsPWNDy+USZZNqTv5nW+bzvJ6kjGLBysCYpZW05+6fisodI+5lli0peibheMTTcv/uq6/ibn2tehQcCJl0gHHYQqKmsHhnVdGJiSHD09PVFELH7fFB854YHAUYpqYMtTFZ8MVY6AcTwUf8XYo5js5vSe6DpnMVVhw3gOEBfrRr6ewdT4p2FwdyNcyY+uaN9vkMhvVgdXdoLtyaiciHH/ozFwehD+Cv2d+pRjOlOgKkfXPXuOM/57roz+LhLZ8ArCeHro8+fHVEO5D8vi/oqnNz25EApDvZc3bdqUcvM04fHIsIlPRGG+xETWzOcOzyEGS5h4Bkp7cP59PNQHZ06sNBNE5Sn1zppusn+Tb3Kh95n5cX+flo2T5KqbgFn+V3cuSHsi4B0BtnTp0trZODTDWMJ9yiKU+qL1PhstvUTpid3ZGGaNjzBFfw3Dk6/C5r8SiUSEAY95p0bRMSWW0tXW1h4Ma7kcOi+AvjOydGdsN3okdijKyODu3UOvbtu2bajo1CggESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiIBHBP4fA65iItIh5WIAAAAASUVORK5CYII='/%3e%3c/defs%3e%3c/svg%3e", Zt = { class: "flex-col items-center" }, Gt = { class: "flex gap-2" }, Wt = {
|
|
1101
1102
|
key: 0,
|
|
1102
1103
|
class: "text-xs text-red-500 mt-2"
|
|
1103
|
-
},
|
|
1104
|
+
}, $t = {
|
|
1104
1105
|
key: 1,
|
|
1105
1106
|
class: "flex items-center mt-2"
|
|
1106
|
-
},
|
|
1107
|
+
}, en = { class: "flex flex-col" }, tn = { class: "font-medium" }, nn = { class: "text-xs text-gray-400" }, on = { class: "text-xs text-gray-400" }, sn = /* @__PURE__ */ Y({
|
|
1107
1108
|
__name: "NetSuiteLocationField",
|
|
1108
1109
|
props: {
|
|
1109
1110
|
isDuplicate: { type: Boolean, default: !1 },
|
|
@@ -1117,25 +1118,25 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1117
1118
|
}) }
|
|
1118
1119
|
},
|
|
1119
1120
|
emits: ["update:modelValue"],
|
|
1120
|
-
setup(
|
|
1121
|
-
const
|
|
1122
|
-
return (
|
|
1123
|
-
const
|
|
1124
|
-
return I(), V("div",
|
|
1125
|
-
l("div",
|
|
1126
|
-
|
|
1121
|
+
setup(C, { emit: y }) {
|
|
1122
|
+
const o = C, r = _(() => o.modelValue), n = y;
|
|
1123
|
+
return (t, i) => {
|
|
1124
|
+
const b = F("FmSelect"), w = F("FmButton"), f = F("FmIcon");
|
|
1125
|
+
return I(), V("div", Zt, [
|
|
1126
|
+
l("div", Gt, [
|
|
1127
|
+
h(b, {
|
|
1127
1128
|
placeholder: "Select NetSuite Location",
|
|
1128
|
-
items:
|
|
1129
|
+
items: t.nsLocationOptions,
|
|
1129
1130
|
searchable: "",
|
|
1130
1131
|
searchTarget: "label",
|
|
1131
1132
|
"model-value": r.value,
|
|
1132
|
-
"onUpdate:modelValue":
|
|
1133
|
+
"onUpdate:modelValue": i[0] || (i[0] = (m) => n("update:modelValue", m))
|
|
1133
1134
|
}, null, 8, ["items", "model-value"]),
|
|
1134
1135
|
r.value.netsuiteId ? (I(), U(w, {
|
|
1135
1136
|
key: 0,
|
|
1136
1137
|
variant: "secondary",
|
|
1137
1138
|
label: "Clear",
|
|
1138
|
-
onClick:
|
|
1139
|
+
onClick: i[1] || (i[1] = (m) => n("update:modelValue", {
|
|
1139
1140
|
netsuiteId: "",
|
|
1140
1141
|
name: "",
|
|
1141
1142
|
subsidiaryName: "",
|
|
@@ -1143,25 +1144,25 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1143
1144
|
}))
|
|
1144
1145
|
})) : z("", !0)
|
|
1145
1146
|
]),
|
|
1146
|
-
|
|
1147
|
-
r.value.netsuiteId ? (I(), V("div",
|
|
1148
|
-
|
|
1147
|
+
t.isDuplicate ? (I(), V("div", Wt, " NetSuite location being used by another FeedMe location. ")) : z("", !0),
|
|
1148
|
+
r.value.netsuiteId ? (I(), V("div", $t, [
|
|
1149
|
+
h(f, {
|
|
1149
1150
|
name: "cloud",
|
|
1150
1151
|
color: "neutral-gray-400",
|
|
1151
1152
|
size: "md",
|
|
1152
1153
|
class: "mr-2",
|
|
1153
1154
|
outline: ""
|
|
1154
1155
|
}),
|
|
1155
|
-
l("div",
|
|
1156
|
-
l("span",
|
|
1157
|
-
l("span",
|
|
1158
|
-
l("span",
|
|
1156
|
+
l("div", en, [
|
|
1157
|
+
l("span", tn, j(r.value.name), 1),
|
|
1158
|
+
l("span", nn, "ID: " + j(r.value.netsuiteId), 1),
|
|
1159
|
+
l("span", on, "Subsidiary: " + j(r.value.subsidiaryName), 1)
|
|
1159
1160
|
])
|
|
1160
1161
|
])) : z("", !0)
|
|
1161
1162
|
]);
|
|
1162
1163
|
};
|
|
1163
1164
|
}
|
|
1164
|
-
}),
|
|
1165
|
+
}), an = /* @__PURE__ */ Y({
|
|
1165
1166
|
__name: "AddLocationDialog",
|
|
1166
1167
|
props: {
|
|
1167
1168
|
showDialog: {
|
|
@@ -1182,14 +1183,14 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1182
1183
|
}
|
|
1183
1184
|
},
|
|
1184
1185
|
emits: ["update:loading", "update:showDialog"],
|
|
1185
|
-
setup(
|
|
1186
|
-
const
|
|
1186
|
+
setup(C, { emit: y }) {
|
|
1187
|
+
const o = ie(), r = ee(), n = [
|
|
1187
1188
|
{
|
|
1188
1189
|
id: "fmLocation",
|
|
1189
1190
|
header: "FeedMe Location",
|
|
1190
|
-
cell(
|
|
1191
|
-
const
|
|
1192
|
-
name:
|
|
1191
|
+
cell(x) {
|
|
1192
|
+
const E = x.row.original, k = D(ne.FmIcon, {
|
|
1193
|
+
name: E.type,
|
|
1193
1194
|
color: "neutral-gray-400",
|
|
1194
1195
|
size: "md",
|
|
1195
1196
|
class: "mr-2",
|
|
@@ -1198,8 +1199,8 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1198
1199
|
return D("div", { class: "flex items-center" }, [
|
|
1199
1200
|
k,
|
|
1200
1201
|
D("div", { class: "flex flex-col" }, [
|
|
1201
|
-
D("span", { class: "font-medium" },
|
|
1202
|
-
D("span", { class: "text-xs text-gray-400" },
|
|
1202
|
+
D("span", { class: "font-medium" }, E.name),
|
|
1203
|
+
D("span", { class: "text-xs text-gray-400" }, E.doc._id)
|
|
1203
1204
|
])
|
|
1204
1205
|
]);
|
|
1205
1206
|
}
|
|
@@ -1207,85 +1208,85 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1207
1208
|
{
|
|
1208
1209
|
id: "nsLocation",
|
|
1209
1210
|
header: "NetSuite Location",
|
|
1210
|
-
cell(
|
|
1211
|
-
const
|
|
1212
|
-
([p,
|
|
1211
|
+
cell(x) {
|
|
1212
|
+
const E = x.row.original, k = b.value[E.dbName], g = Object.entries(b.value).some(
|
|
1213
|
+
([p, d]) => p !== E.dbName && d.netsuiteId === (k == null ? void 0 : k.netsuiteId)
|
|
1213
1214
|
);
|
|
1214
|
-
return D(
|
|
1215
|
+
return D(sn, {
|
|
1215
1216
|
isDuplicate: g,
|
|
1216
|
-
nsLocationOptions:
|
|
1217
|
+
nsLocationOptions: m.value,
|
|
1217
1218
|
modelValue: k,
|
|
1218
|
-
fmLocation:
|
|
1219
|
+
fmLocation: E,
|
|
1219
1220
|
"onUpdate:modelValue": (p) => {
|
|
1220
|
-
p.netsuiteId ?
|
|
1221
|
-
...
|
|
1222
|
-
[
|
|
1221
|
+
p.netsuiteId ? b.value = {
|
|
1222
|
+
...b.value,
|
|
1223
|
+
[E.dbName]: {
|
|
1223
1224
|
netsuiteId: p.netsuiteId,
|
|
1224
1225
|
name: p.name,
|
|
1225
1226
|
subsidiaryName: p.subsidiaryName,
|
|
1226
1227
|
subsidiaryId: p.subsidiaryId
|
|
1227
1228
|
}
|
|
1228
|
-
} : delete
|
|
1229
|
+
} : delete b.value[E.dbName];
|
|
1229
1230
|
}
|
|
1230
1231
|
});
|
|
1231
1232
|
}
|
|
1232
1233
|
}
|
|
1233
|
-
],
|
|
1234
|
-
label:
|
|
1235
|
-
value:
|
|
1236
|
-
}))),
|
|
1237
|
-
(
|
|
1234
|
+
], t = C, i = y, b = M({}), w = M(), f = M(""), m = _(() => t.nsLocationsNotBeingUsed.map((x) => ({
|
|
1235
|
+
label: x.name,
|
|
1236
|
+
value: x
|
|
1237
|
+
}))), s = _(() => Object.values(b.value).length === 0 || Object.values(b.value).some(
|
|
1238
|
+
(x) => Object.values(b.value).filter((E) => E.netsuiteId === x.netsuiteId).length > 1
|
|
1238
1239
|
));
|
|
1239
|
-
async function
|
|
1240
|
+
async function u() {
|
|
1240
1241
|
try {
|
|
1241
|
-
|
|
1242
|
+
i("update:loading", !0), await o.updateLocationConfigs(b.value), r.open({
|
|
1242
1243
|
message: "Locations updated successfully",
|
|
1243
1244
|
type: "success"
|
|
1244
|
-
}),
|
|
1245
|
+
}), i("update:showDialog", !1);
|
|
1245
1246
|
} catch {
|
|
1246
1247
|
r.open({
|
|
1247
1248
|
message: "Failed to update locations. Please try again.",
|
|
1248
1249
|
type: "error"
|
|
1249
1250
|
});
|
|
1250
1251
|
} finally {
|
|
1251
|
-
|
|
1252
|
+
i("update:loading", !1);
|
|
1252
1253
|
}
|
|
1253
1254
|
}
|
|
1254
|
-
return (
|
|
1255
|
-
const k = F("FmTable"), g = F("FmForm"), p = F("FmSpacer"),
|
|
1255
|
+
return (x, E) => {
|
|
1256
|
+
const k = F("FmTable"), g = F("FmForm"), p = F("FmSpacer"), d = F("FmButton"), c = F("FmDialog");
|
|
1256
1257
|
return I(), U(c, {
|
|
1257
|
-
modelValue:
|
|
1258
|
-
"onUpdate:modelValue":
|
|
1258
|
+
modelValue: C.showDialog,
|
|
1259
|
+
"onUpdate:modelValue": E[2] || (E[2] = (A) => x.$emit("update:showDialog", A)),
|
|
1259
1260
|
overlay: !0,
|
|
1260
1261
|
"max-width": "900px"
|
|
1261
1262
|
}, {
|
|
1262
|
-
"dialog-header": O(() =>
|
|
1263
|
+
"dialog-header": O(() => E[3] || (E[3] = [
|
|
1263
1264
|
l("div", null, "Add locations", -1)
|
|
1264
1265
|
])),
|
|
1265
1266
|
"dialog-footer": O(() => [
|
|
1266
|
-
|
|
1267
|
-
|
|
1267
|
+
h(p, { class: "sm:hidden xs:hidden" }),
|
|
1268
|
+
h(d, {
|
|
1268
1269
|
class: "sm:w-full xs:w-full",
|
|
1269
1270
|
label: "Submit",
|
|
1270
1271
|
size: "md",
|
|
1271
|
-
disabled:
|
|
1272
|
-
onClick:
|
|
1272
|
+
disabled: s.value,
|
|
1273
|
+
onClick: u
|
|
1273
1274
|
}, null, 8, ["disabled"])
|
|
1274
1275
|
]),
|
|
1275
1276
|
default: O(() => [
|
|
1276
|
-
|
|
1277
|
+
h(g, {
|
|
1277
1278
|
ref: "formRef",
|
|
1278
1279
|
class: "mb-4",
|
|
1279
1280
|
"model-value": w.value,
|
|
1280
|
-
"onUpdate:modelValue":
|
|
1281
|
+
"onUpdate:modelValue": E[1] || (E[1] = (A) => w.value = A)
|
|
1281
1282
|
}, {
|
|
1282
1283
|
default: O(() => [
|
|
1283
|
-
|
|
1284
|
+
h(k, {
|
|
1284
1285
|
modelValue: w.value,
|
|
1285
|
-
"onUpdate:modelValue":
|
|
1286
|
-
"row-data":
|
|
1286
|
+
"onUpdate:modelValue": E[0] || (E[0] = (A) => w.value = A),
|
|
1287
|
+
"row-data": t.fmLocationNotYetConfigured,
|
|
1287
1288
|
"column-defs": n,
|
|
1288
|
-
"search-value":
|
|
1289
|
+
"search-value": f.value,
|
|
1289
1290
|
"shrink-at": !1
|
|
1290
1291
|
}, null, 8, ["modelValue", "row-data", "search-value"])
|
|
1291
1292
|
]),
|
|
@@ -1296,10 +1297,10 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1296
1297
|
}, 8, ["modelValue"]);
|
|
1297
1298
|
};
|
|
1298
1299
|
}
|
|
1299
|
-
}),
|
|
1300
|
+
}), ln = { key: 0 }, rn = {
|
|
1300
1301
|
key: 1,
|
|
1301
1302
|
class: "flex flex-col gap-8 w-full"
|
|
1302
|
-
},
|
|
1303
|
+
}, un = { class: "flex gap-2 flex-wrap" }, cn = { class: "p-8" }, dn = { class: "flex gap-8 items-center justify-start" }, mn = /* @__PURE__ */ Y({
|
|
1303
1304
|
__name: "BusinessNetSuiteSideSheet",
|
|
1304
1305
|
props: {
|
|
1305
1306
|
setting: {},
|
|
@@ -1308,27 +1309,27 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1308
1309
|
loading: { type: Boolean }
|
|
1309
1310
|
},
|
|
1310
1311
|
emits: ["update:setting", "update:show", "update:loading", "submit"],
|
|
1311
|
-
setup(
|
|
1312
|
-
const
|
|
1313
|
-
ge([() =>
|
|
1314
|
-
if (
|
|
1315
|
-
for (const c of Object.keys(
|
|
1316
|
-
|
|
1312
|
+
setup(C, { emit: y }) {
|
|
1313
|
+
const o = oe(), r = $(), n = M(!1), t = C, i = y, b = ve(te(t.setting));
|
|
1314
|
+
ge([() => t.show], ([d]) => {
|
|
1315
|
+
if (d)
|
|
1316
|
+
for (const c of Object.keys(t.setting))
|
|
1317
|
+
b[c] = t.setting[c];
|
|
1317
1318
|
});
|
|
1318
|
-
const w = M(),
|
|
1319
|
-
(
|
|
1320
|
-
)),
|
|
1319
|
+
const w = M(), f = le(t, "show"), m = M(), s = M(""), u = _(() => t.setting.locations.filter(
|
|
1320
|
+
(d) => d.name.toLowerCase().includes(s.value.toLowerCase()) || d.netSuiteId.toLowerCase().includes(s.value.toLowerCase())
|
|
1321
|
+
)), x = [
|
|
1321
1322
|
{
|
|
1322
1323
|
id: "location",
|
|
1323
1324
|
header: () => "FeedMe Location",
|
|
1324
|
-
cell(
|
|
1325
|
-
const c =
|
|
1326
|
-
(
|
|
1325
|
+
cell(d) {
|
|
1326
|
+
const c = d.row.original, A = r.locations.find(
|
|
1327
|
+
(e) => e.type === c.type && e.doc._id === c.id
|
|
1327
1328
|
);
|
|
1328
|
-
if (!
|
|
1329
|
+
if (!A)
|
|
1329
1330
|
return D("div", "Unknown Location");
|
|
1330
1331
|
const v = D(ne.FmIcon, {
|
|
1331
|
-
name:
|
|
1332
|
+
name: A.type,
|
|
1332
1333
|
color: "neutral-gray-400",
|
|
1333
1334
|
size: "md",
|
|
1334
1335
|
class: "mr-2",
|
|
@@ -1337,8 +1338,8 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1337
1338
|
return D("div", { class: "flex items-center" }, [
|
|
1338
1339
|
v,
|
|
1339
1340
|
D("div", { class: "flex flex-col" }, [
|
|
1340
|
-
D("span", { class: "font-medium" },
|
|
1341
|
-
D("span", { class: "text-xs text-gray-400" },
|
|
1341
|
+
D("span", { class: "font-medium" }, A.name),
|
|
1342
|
+
D("span", { class: "text-xs text-gray-400" }, A.doc._id)
|
|
1342
1343
|
])
|
|
1343
1344
|
]);
|
|
1344
1345
|
}
|
|
@@ -1346,11 +1347,11 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1346
1347
|
{
|
|
1347
1348
|
id: "netsuite",
|
|
1348
1349
|
header: () => "NetSuite Location",
|
|
1349
|
-
cell(
|
|
1350
|
-
var
|
|
1351
|
-
const c =
|
|
1350
|
+
cell(d) {
|
|
1351
|
+
var e;
|
|
1352
|
+
const c = d.row.original, A = (e = t.nsLocations.find(
|
|
1352
1353
|
(a) => a.netsuiteId === c.netSuiteId
|
|
1353
|
-
)) == null ? void 0 :
|
|
1354
|
+
)) == null ? void 0 : e.subsidiaryName, v = D(ne.FmIcon, {
|
|
1354
1355
|
name: "cloud",
|
|
1355
1356
|
color: "neutral-gray-400",
|
|
1356
1357
|
size: "md",
|
|
@@ -1362,12 +1363,12 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1362
1363
|
D("div", { class: "flex flex-col" }, [
|
|
1363
1364
|
D("span", { class: "font-medium" }, c.name),
|
|
1364
1365
|
D("span", { class: "text-xs text-gray-400" }, `ID: ${c.netSuiteId}`),
|
|
1365
|
-
D("span", { class: "text-xs text-gray-400" }, `Subsidiary: ${
|
|
1366
|
+
D("span", { class: "text-xs text-gray-400" }, `Subsidiary: ${A}`)
|
|
1366
1367
|
])
|
|
1367
1368
|
]);
|
|
1368
1369
|
}
|
|
1369
1370
|
}
|
|
1370
|
-
], { t:
|
|
1371
|
+
], { t: E } = Z(), k = [
|
|
1371
1372
|
"Unit Type",
|
|
1372
1373
|
"Inventory Item",
|
|
1373
1374
|
"Location",
|
|
@@ -1377,18 +1378,18 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1377
1378
|
"Transfer Order",
|
|
1378
1379
|
"Inventory Transfer"
|
|
1379
1380
|
], g = _(() => r.locations.filter(
|
|
1380
|
-
(
|
|
1381
|
-
(c) => c.id ===
|
|
1381
|
+
(d) => !t.setting.locations.some(
|
|
1382
|
+
(c) => c.id === d.doc._id && c.type === d.type
|
|
1382
1383
|
)
|
|
1383
|
-
)), p = _(() =>
|
|
1384
|
-
(
|
|
1384
|
+
)), p = _(() => t.nsLocations.filter(
|
|
1385
|
+
(d) => !t.setting.locations.some((c) => c.netSuiteId === d.netsuiteId)
|
|
1385
1386
|
));
|
|
1386
|
-
return (
|
|
1387
|
-
const
|
|
1388
|
-
return I(), U(
|
|
1389
|
-
modelValue: S(
|
|
1390
|
-
"onUpdate:modelValue": c[6] || (c[6] = (L) => ae(
|
|
1391
|
-
header: S(
|
|
1387
|
+
return (d, c) => {
|
|
1388
|
+
const A = F("FmChip"), v = F("FmSearch"), e = F("FmTable"), a = F("FmButton"), B = F("FmSideSheet");
|
|
1389
|
+
return I(), U(B, {
|
|
1390
|
+
modelValue: S(f),
|
|
1391
|
+
"onUpdate:modelValue": c[6] || (c[6] = (L) => ae(f) ? f.value = L : null),
|
|
1392
|
+
header: S(E)("inventory.integration.netsuite.title"),
|
|
1392
1393
|
"dismiss-away": "",
|
|
1393
1394
|
"close-button": "",
|
|
1394
1395
|
"max-width": 800
|
|
@@ -1396,10 +1397,10 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1396
1397
|
default: O(() => {
|
|
1397
1398
|
var L;
|
|
1398
1399
|
return [
|
|
1399
|
-
(L = S(
|
|
1400
|
+
(L = S(o).sessionUser.value) != null && L.role.isAdmin ? (I(), V("div", rn, [
|
|
1400
1401
|
c[7] || (c[7] = l("div", { class: "text-sm" }, " This integration keeps your FeedMe system and NetSuite in sync for the following modules: ", -1)),
|
|
1401
|
-
l("div",
|
|
1402
|
-
(I(), V(J, null, W(k, (N) =>
|
|
1402
|
+
l("div", un, [
|
|
1403
|
+
(I(), V(J, null, W(k, (N) => h(A, {
|
|
1403
1404
|
key: N,
|
|
1404
1405
|
label: N,
|
|
1405
1406
|
compact: ""
|
|
@@ -1407,24 +1408,24 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1407
1408
|
]),
|
|
1408
1409
|
c[8] || (c[8] = l("div", { class: "text-xs mt-2" }, " Changes made in FeedMe or NetSuite will be reflected in both systems, ensuring data consistency and streamlined operations. ", -1)),
|
|
1409
1410
|
c[9] || (c[9] = l("hr", { class: "my-3" }, null, -1)),
|
|
1410
|
-
l("div",
|
|
1411
|
-
|
|
1411
|
+
l("div", cn, [
|
|
1412
|
+
h(v, {
|
|
1412
1413
|
placeholder: "Search by [NetSuite Location]",
|
|
1413
1414
|
class: "w-[300px]",
|
|
1414
|
-
modelValue:
|
|
1415
|
-
"onUpdate:modelValue": c[0] || (c[0] = (N) =>
|
|
1415
|
+
modelValue: s.value,
|
|
1416
|
+
"onUpdate:modelValue": c[0] || (c[0] = (N) => s.value = N)
|
|
1416
1417
|
}, null, 8, ["modelValue"])
|
|
1417
1418
|
]),
|
|
1418
|
-
|
|
1419
|
-
modelValue:
|
|
1420
|
-
"onUpdate:modelValue": c[1] || (c[1] = (N) =>
|
|
1421
|
-
"row-data":
|
|
1422
|
-
"column-defs":
|
|
1419
|
+
h(e, {
|
|
1420
|
+
modelValue: m.value,
|
|
1421
|
+
"onUpdate:modelValue": c[1] || (c[1] = (N) => m.value = N),
|
|
1422
|
+
"row-data": u.value,
|
|
1423
|
+
"column-defs": x,
|
|
1423
1424
|
"shrink-at": !1,
|
|
1424
|
-
"search-value":
|
|
1425
|
+
"search-value": s.value
|
|
1425
1426
|
}, null, 8, ["modelValue", "row-data", "search-value"])
|
|
1426
|
-
])) : (I(), V("div",
|
|
1427
|
-
|
|
1427
|
+
])) : (I(), V("div", ln, " Please contact your administrator to apply the changes. ")),
|
|
1428
|
+
h(an, {
|
|
1428
1429
|
"show-dialog": n.value,
|
|
1429
1430
|
"onUpdate:showDialog": [
|
|
1430
1431
|
c[2] || (c[2] = (N) => n.value = N),
|
|
@@ -1437,17 +1438,17 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1437
1438
|
];
|
|
1438
1439
|
}),
|
|
1439
1440
|
"side-sheet-footer": O(() => [
|
|
1440
|
-
l("div",
|
|
1441
|
-
|
|
1441
|
+
l("div", dn, [
|
|
1442
|
+
h(a, {
|
|
1442
1443
|
label: "Add location",
|
|
1443
1444
|
onClick: c[4] || (c[4] = (L) => n.value = !0),
|
|
1444
|
-
loading:
|
|
1445
|
-
disabled:
|
|
1445
|
+
loading: d.loading,
|
|
1446
|
+
disabled: d.loading
|
|
1446
1447
|
}, null, 8, ["loading", "disabled"]),
|
|
1447
|
-
|
|
1448
|
+
h(a, {
|
|
1448
1449
|
variant: "tertiary",
|
|
1449
|
-
label: S(
|
|
1450
|
-
onClick: c[5] || (c[5] = (L) =>
|
|
1450
|
+
label: S(E)("common.close"),
|
|
1451
|
+
onClick: c[5] || (c[5] = (L) => i("update:show", !1))
|
|
1451
1452
|
}, null, 8, ["label"])
|
|
1452
1453
|
])
|
|
1453
1454
|
]),
|
|
@@ -1455,26 +1456,26 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1455
1456
|
}, 8, ["modelValue", "header"]);
|
|
1456
1457
|
};
|
|
1457
1458
|
}
|
|
1458
|
-
}),
|
|
1459
|
+
}), fn = /* @__PURE__ */ Y({
|
|
1459
1460
|
__name: "InventoryTransferIngredientTable",
|
|
1460
1461
|
props: {
|
|
1461
1462
|
modelValue: { default: [] },
|
|
1462
1463
|
modelModifiers: {}
|
|
1463
1464
|
},
|
|
1464
1465
|
emits: ["update:modelValue"],
|
|
1465
|
-
setup(
|
|
1466
|
-
const { t: y } = de(),
|
|
1466
|
+
setup(C) {
|
|
1467
|
+
const { t: y } = de(), o = Se(C, "modelValue"), r = [
|
|
1467
1468
|
{
|
|
1468
1469
|
id: "Code",
|
|
1469
1470
|
header: () => y("inventory.transfer.form.items.table.Code"),
|
|
1470
1471
|
accessorKey: "code",
|
|
1471
1472
|
size: 200,
|
|
1472
1473
|
cell(n) {
|
|
1473
|
-
const
|
|
1474
|
+
const t = n.row.original;
|
|
1474
1475
|
return D(
|
|
1475
1476
|
ne.FmTooltip,
|
|
1476
1477
|
{
|
|
1477
|
-
content:
|
|
1478
|
+
content: t.code,
|
|
1478
1479
|
placement: "top",
|
|
1479
1480
|
variant: "plain",
|
|
1480
1481
|
zIndex: 50
|
|
@@ -1484,7 +1485,7 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1484
1485
|
{
|
|
1485
1486
|
class: "flex-auto line-clamp-2 text-ellipsis break-all"
|
|
1486
1487
|
},
|
|
1487
|
-
|
|
1488
|
+
t.code
|
|
1488
1489
|
)
|
|
1489
1490
|
);
|
|
1490
1491
|
},
|
|
@@ -1495,11 +1496,11 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1495
1496
|
header: () => y("inventory.transfer.form.items.table.Name"),
|
|
1496
1497
|
minSize: 300,
|
|
1497
1498
|
cell(n) {
|
|
1498
|
-
const
|
|
1499
|
+
const t = n.row.original;
|
|
1499
1500
|
return D(
|
|
1500
1501
|
ne.FmTooltip,
|
|
1501
1502
|
{
|
|
1502
|
-
content:
|
|
1503
|
+
content: t.name,
|
|
1503
1504
|
placement: "top",
|
|
1504
1505
|
variant: "plain",
|
|
1505
1506
|
zIndex: 50
|
|
@@ -1509,7 +1510,7 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1509
1510
|
{
|
|
1510
1511
|
class: "flex-auto line-clamp-2 text-ellipsis break-all"
|
|
1511
1512
|
},
|
|
1512
|
-
|
|
1513
|
+
t.name
|
|
1513
1514
|
)
|
|
1514
1515
|
);
|
|
1515
1516
|
},
|
|
@@ -1520,31 +1521,31 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1520
1521
|
header: () => y("inventory.transfer.form.items.table.Amount"),
|
|
1521
1522
|
minSize: 200,
|
|
1522
1523
|
cell(n) {
|
|
1523
|
-
const
|
|
1524
|
-
return D(
|
|
1524
|
+
const t = n.row.original, i = n.row.index;
|
|
1525
|
+
return D(et, {
|
|
1525
1526
|
style: {
|
|
1526
1527
|
flex: "1 1 0%"
|
|
1527
1528
|
},
|
|
1528
1529
|
modelValue: {
|
|
1529
|
-
amount:
|
|
1530
|
-
measurement:
|
|
1530
|
+
amount: t.quantity ?? { amount: 1, precision: 0 },
|
|
1531
|
+
measurement: t.measurement ?? null
|
|
1531
1532
|
},
|
|
1532
|
-
key:
|
|
1533
|
-
unit:
|
|
1534
|
-
"onUpdate:modelValue": (
|
|
1535
|
-
if (!
|
|
1533
|
+
key: t.sku._id,
|
|
1534
|
+
unit: t.sku.unit,
|
|
1535
|
+
"onUpdate:modelValue": (b) => {
|
|
1536
|
+
if (!b) return;
|
|
1536
1537
|
const w = {
|
|
1537
|
-
...
|
|
1538
|
-
quantity:
|
|
1539
|
-
measurement:
|
|
1538
|
+
...t,
|
|
1539
|
+
quantity: b.amount,
|
|
1540
|
+
measurement: b.measurement
|
|
1540
1541
|
};
|
|
1541
|
-
|
|
1542
|
-
...
|
|
1542
|
+
o.value = [
|
|
1543
|
+
...o.value.slice(0, i),
|
|
1543
1544
|
w,
|
|
1544
|
-
...
|
|
1545
|
+
...o.value.slice(i + 1)
|
|
1545
1546
|
];
|
|
1546
1547
|
},
|
|
1547
|
-
rules: [
|
|
1548
|
+
rules: [tt(+Ye({ amount: 1, precision: 0 }))],
|
|
1548
1549
|
applyDefaultRules: !0
|
|
1549
1550
|
});
|
|
1550
1551
|
},
|
|
@@ -1554,17 +1555,17 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1554
1555
|
id: "Delete",
|
|
1555
1556
|
header: "",
|
|
1556
1557
|
cell(n) {
|
|
1557
|
-
const
|
|
1558
|
+
const t = n.row.original, i = n.row.index;
|
|
1558
1559
|
return D("div", { class: "flex justify-end" }, [
|
|
1559
1560
|
D(ne.FmButton, {
|
|
1560
|
-
key:
|
|
1561
|
+
key: t.sku._id,
|
|
1561
1562
|
class: "delete-button",
|
|
1562
1563
|
type: "button",
|
|
1563
1564
|
icon: "delete",
|
|
1564
1565
|
variant: "tertiary",
|
|
1565
1566
|
size: "md",
|
|
1566
1567
|
onClick: () => {
|
|
1567
|
-
|
|
1568
|
+
o.value = [...o.value.slice(0, i), ...o.value.slice(i + 1)];
|
|
1568
1569
|
}
|
|
1569
1570
|
})
|
|
1570
1571
|
]);
|
|
@@ -1577,49 +1578,49 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1577
1578
|
}
|
|
1578
1579
|
}
|
|
1579
1580
|
];
|
|
1580
|
-
return (n,
|
|
1581
|
-
const
|
|
1582
|
-
return I(), U(
|
|
1581
|
+
return (n, t) => {
|
|
1582
|
+
const i = F("FmTable");
|
|
1583
|
+
return I(), U(i, {
|
|
1583
1584
|
"column-defs": r,
|
|
1584
|
-
"row-data":
|
|
1585
|
-
"row-key": (
|
|
1585
|
+
"row-data": o.value,
|
|
1586
|
+
"row-key": (b) => b.sku._id,
|
|
1586
1587
|
"empty-text": S(y)("inventory.transfer.form.items.table.empty"),
|
|
1587
1588
|
pagination: !1,
|
|
1588
1589
|
"virtual-scroll": { enabled: !0, itemSize: 48 }
|
|
1589
1590
|
}, null, 8, ["row-data", "row-key", "empty-text"]);
|
|
1590
1591
|
};
|
|
1591
1592
|
}
|
|
1592
|
-
}),
|
|
1593
|
+
}), pn = { class: "flex items-center gap-8 mb-8" }, vn = /* @__PURE__ */ Y({
|
|
1593
1594
|
__name: "InventoryTransferOutTable",
|
|
1594
|
-
setup(
|
|
1595
|
-
const y = M([]),
|
|
1595
|
+
setup(C) {
|
|
1596
|
+
const y = M([]), o = me(), r = M(!1), n = M(!1), t = ee(), i = $();
|
|
1596
1597
|
pe(async () => {
|
|
1597
|
-
const
|
|
1598
|
-
|
|
1598
|
+
const m = /* @__PURE__ */ new Date(), s = /* @__PURE__ */ new Date();
|
|
1599
|
+
s.setDate(s.getDate() - 30), r.value = !0;
|
|
1599
1600
|
try {
|
|
1600
|
-
const
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1601
|
+
const u = await o.getInventoryTransferHistory(
|
|
1602
|
+
i.currentLocationDBName,
|
|
1603
|
+
s,
|
|
1604
|
+
m
|
|
1604
1605
|
);
|
|
1605
|
-
y.value =
|
|
1606
|
-
} catch (
|
|
1607
|
-
console.error("Error fetching inventory transfer history:",
|
|
1606
|
+
y.value = u;
|
|
1607
|
+
} catch (u) {
|
|
1608
|
+
console.error("Error fetching inventory transfer history:", u);
|
|
1608
1609
|
} finally {
|
|
1609
1610
|
r.value = !1;
|
|
1610
1611
|
}
|
|
1611
1612
|
});
|
|
1612
|
-
async function
|
|
1613
|
+
async function b() {
|
|
1613
1614
|
try {
|
|
1614
|
-
n.value = !0, await
|
|
1615
|
+
n.value = !0, await o.manualSyncInventoryTransfer(i.currentLocationDBName), t == null || t.open({
|
|
1615
1616
|
title: "Sync Started",
|
|
1616
1617
|
message: "Inventory transfers sync queued successfully.",
|
|
1617
1618
|
type: "success"
|
|
1618
1619
|
});
|
|
1619
|
-
} catch (
|
|
1620
|
-
|
|
1620
|
+
} catch (m) {
|
|
1621
|
+
t == null || t.open({
|
|
1621
1622
|
title: "Sync Failed",
|
|
1622
|
-
message: `Failed to queue inventory transfers sync. ${
|
|
1623
|
+
message: `Failed to queue inventory transfers sync. ${m == null ? void 0 : m.message}`,
|
|
1623
1624
|
type: "error"
|
|
1624
1625
|
});
|
|
1625
1626
|
} finally {
|
|
@@ -1637,17 +1638,17 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1637
1638
|
{
|
|
1638
1639
|
id: "destinationLocation",
|
|
1639
1640
|
header: "Destination Location",
|
|
1640
|
-
cell: (
|
|
1641
|
-
const
|
|
1642
|
-
return
|
|
1641
|
+
cell: (m) => {
|
|
1642
|
+
const s = m.row.original.destinationLocation.netSuiteName;
|
|
1643
|
+
return s ? D(
|
|
1643
1644
|
ne.FmTooltip,
|
|
1644
1645
|
{ zIndex: 51 },
|
|
1645
1646
|
{
|
|
1646
1647
|
content() {
|
|
1647
|
-
return
|
|
1648
|
+
return s;
|
|
1648
1649
|
},
|
|
1649
1650
|
default() {
|
|
1650
|
-
return D("div", { class: "line-clamp-2 fm-typo-en-body-sm-400" },
|
|
1651
|
+
return D("div", { class: "line-clamp-2 fm-typo-en-body-sm-400" }, s);
|
|
1651
1652
|
}
|
|
1652
1653
|
}
|
|
1653
1654
|
) : "N/A";
|
|
@@ -1656,22 +1657,22 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1656
1657
|
{
|
|
1657
1658
|
id: "netsuite",
|
|
1658
1659
|
header: () => "NetSuite",
|
|
1659
|
-
cell(
|
|
1660
|
+
cell(m) {
|
|
1660
1661
|
return D("div", { class: "flex flex-col" }, [
|
|
1661
1662
|
D(
|
|
1662
1663
|
"span",
|
|
1663
1664
|
{ class: "fm-typo-en-body-sm-400" },
|
|
1664
|
-
`ID: ${
|
|
1665
|
+
`ID: ${m.row.original.netsuiteId ?? "N/A"}`
|
|
1665
1666
|
),
|
|
1666
1667
|
D(
|
|
1667
1668
|
"span",
|
|
1668
1669
|
{ class: "fm-typo-en-body-sm-400" },
|
|
1669
|
-
`Transaction ID: ${
|
|
1670
|
+
`Transaction ID: ${m.row.original.netsuiteTranId ?? "N/A"}`
|
|
1670
1671
|
),
|
|
1671
1672
|
D(
|
|
1672
1673
|
"span",
|
|
1673
1674
|
{ class: "fm-typo-en-body-sm-400" },
|
|
1674
|
-
`Transaction Date: ${
|
|
1675
|
+
`Transaction Date: ${m.row.original.netsuiteTranDate ?? "N/A"}`
|
|
1675
1676
|
)
|
|
1676
1677
|
]);
|
|
1677
1678
|
}
|
|
@@ -1679,14 +1680,14 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1679
1680
|
{
|
|
1680
1681
|
id: "adjustment",
|
|
1681
1682
|
header: () => "Adjustment (FeedMe)",
|
|
1682
|
-
cell(
|
|
1683
|
-
const
|
|
1683
|
+
cell(m) {
|
|
1684
|
+
const s = m.row.original.adjustmentId;
|
|
1684
1685
|
return D("div", { class: "flex flex-col" }, [
|
|
1685
|
-
D("span", { class: "fm-typo-en-body-sm-400" }, `ID: ${
|
|
1686
|
+
D("span", { class: "fm-typo-en-body-sm-400" }, `ID: ${s ?? "N/A"}`),
|
|
1686
1687
|
D(
|
|
1687
1688
|
"span",
|
|
1688
1689
|
{ class: "fm-typo-en-body-sm-400" },
|
|
1689
|
-
`Date: ${
|
|
1690
|
+
`Date: ${s ? ye(Ae(s)) : "N/A"}`
|
|
1690
1691
|
)
|
|
1691
1692
|
]);
|
|
1692
1693
|
}
|
|
@@ -1694,17 +1695,17 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1694
1695
|
{
|
|
1695
1696
|
id: "items",
|
|
1696
1697
|
header: () => "Items",
|
|
1697
|
-
cell(
|
|
1698
|
-
const
|
|
1698
|
+
cell(m) {
|
|
1699
|
+
const s = m.row.original.items;
|
|
1699
1700
|
return D(
|
|
1700
1701
|
"div",
|
|
1701
1702
|
{ class: "overflow-auto" },
|
|
1702
1703
|
D("ul", { class: "list-disc pl-5" }, [
|
|
1703
|
-
|
|
1704
|
-
(
|
|
1704
|
+
s == null ? void 0 : s.map(
|
|
1705
|
+
(u) => D(
|
|
1705
1706
|
"li",
|
|
1706
1707
|
{ class: "fm-typo-en-body-sm-400" },
|
|
1707
|
-
`[${
|
|
1708
|
+
`[${u == null ? void 0 : u.itemId}] ${u == null ? void 0 : u.itemName}: ${u == null ? void 0 : u.quantity} ${(u == null ? void 0 : u.uomName) ?? "N/A"}`
|
|
1708
1709
|
)
|
|
1709
1710
|
)
|
|
1710
1711
|
])
|
|
@@ -1712,13 +1713,13 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1712
1713
|
},
|
|
1713
1714
|
size: 150
|
|
1714
1715
|
}
|
|
1715
|
-
],
|
|
1716
|
-
return (
|
|
1717
|
-
const
|
|
1716
|
+
], f = M();
|
|
1717
|
+
return (m, s) => {
|
|
1718
|
+
const u = F("FmButton"), x = F("FmTable");
|
|
1718
1719
|
return I(), V(J, null, [
|
|
1719
|
-
l("div",
|
|
1720
|
-
|
|
1721
|
-
|
|
1720
|
+
l("div", pn, [
|
|
1721
|
+
s[1] || (s[1] = l("span", null, "Last 30 Days:", -1)),
|
|
1722
|
+
h(u, {
|
|
1722
1723
|
"prepend-icon": "sync",
|
|
1723
1724
|
variant: "secondary",
|
|
1724
1725
|
label: "Sync",
|
|
@@ -1726,12 +1727,12 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1726
1727
|
"text-color": "primary",
|
|
1727
1728
|
"bg-color": "transparent",
|
|
1728
1729
|
"border-color": "primary",
|
|
1729
|
-
onClick:
|
|
1730
|
+
onClick: b
|
|
1730
1731
|
}, null, 8, ["loading"])
|
|
1731
1732
|
]),
|
|
1732
|
-
x
|
|
1733
|
-
modelValue:
|
|
1734
|
-
"onUpdate:modelValue":
|
|
1733
|
+
h(x, {
|
|
1734
|
+
modelValue: f.value,
|
|
1735
|
+
"onUpdate:modelValue": s[0] || (s[0] = (E) => f.value = E),
|
|
1735
1736
|
"row-data": y.value,
|
|
1736
1737
|
"column-defs": w,
|
|
1737
1738
|
loading: r.value
|
|
@@ -1739,120 +1740,120 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1739
1740
|
], 64);
|
|
1740
1741
|
};
|
|
1741
1742
|
}
|
|
1742
|
-
}),
|
|
1743
|
+
}), gn = { class: "flex flex-col gap-8" }, yn = {
|
|
1743
1744
|
key: 0,
|
|
1744
1745
|
class: "flex flex-col gap-4"
|
|
1745
|
-
},
|
|
1746
|
+
}, An = { class: "flex gap-2" }, bn = {
|
|
1746
1747
|
key: 1,
|
|
1747
1748
|
class: "flex items-center my-2 border rounded-lg p-2"
|
|
1748
|
-
},
|
|
1749
|
+
}, hn = { class: "flex flex-col" }, xn = { class: "font-medium" }, In = { class: "text-xs text-gray-400" }, Sn = { class: "text-xs text-gray-400" }, wn = { class: "flex my-4" }, kn = { class: "flex" }, Bn = {
|
|
1749
1750
|
key: 1,
|
|
1750
1751
|
class: "flex flex-col"
|
|
1751
|
-
},
|
|
1752
|
+
}, Cn = {
|
|
1752
1753
|
key: 1,
|
|
1753
1754
|
class: "flex flex-col"
|
|
1754
|
-
},
|
|
1755
|
+
}, En = /* @__PURE__ */ Y({
|
|
1755
1756
|
__name: "InventoryTransfer",
|
|
1756
1757
|
props: {
|
|
1757
1758
|
nsLocations: {},
|
|
1758
1759
|
currentLocationSetting: {},
|
|
1759
1760
|
currentLocationSubsidiary: {}
|
|
1760
1761
|
},
|
|
1761
|
-
setup(
|
|
1762
|
-
const y = re(),
|
|
1763
|
-
const
|
|
1764
|
-
return
|
|
1765
|
-
label:
|
|
1766
|
-
value:
|
|
1767
|
-
disabled: v.some((a) => a.netSuiteId ===
|
|
1762
|
+
setup(C) {
|
|
1763
|
+
const y = re(), o = ie(), r = be(), n = me(), t = ee(), { t: i } = de(), b = M([]), w = [{ label: "Transfer Out" }, { label: "History" }], f = M(w[0]), m = M(!1), s = M(null), u = M(null), x = C, E = _(() => {
|
|
1764
|
+
const A = o.currentLocationSetting, v = o.configuredLocations;
|
|
1765
|
+
return x.nsLocations.map((e) => ({
|
|
1766
|
+
label: e.name,
|
|
1767
|
+
value: e,
|
|
1768
|
+
disabled: v.some((a) => a.netSuiteId === e.netsuiteId) || e.subsidiaryId !== (A == null ? void 0 : A.subsidiaryId)
|
|
1768
1769
|
}));
|
|
1769
1770
|
}), k = _({
|
|
1770
1771
|
get() {
|
|
1771
|
-
return
|
|
1772
|
+
return s.value ? s.value.toISOString().slice(0, 10) : "";
|
|
1772
1773
|
},
|
|
1773
|
-
set(
|
|
1774
|
-
if (!
|
|
1775
|
-
|
|
1774
|
+
set(A) {
|
|
1775
|
+
if (!A) {
|
|
1776
|
+
s.value = null;
|
|
1776
1777
|
return;
|
|
1777
1778
|
}
|
|
1778
|
-
const v =
|
|
1779
|
-
v.setFullYear(
|
|
1779
|
+
const v = s.value ?? /* @__PURE__ */ new Date(), e = new Date(A);
|
|
1780
|
+
v.setFullYear(e.getFullYear(), e.getMonth(), e.getDate()), s.value = new Date(v);
|
|
1780
1781
|
}
|
|
1781
1782
|
}), g = _({
|
|
1782
1783
|
get() {
|
|
1783
|
-
if (!
|
|
1784
|
-
const
|
|
1785
|
-
return `${
|
|
1784
|
+
if (!s.value) return null;
|
|
1785
|
+
const A = String(s.value.getHours()).padStart(2, "0"), v = String(s.value.getMinutes()).padStart(2, "0");
|
|
1786
|
+
return `${A}:${v}`;
|
|
1786
1787
|
},
|
|
1787
|
-
set(
|
|
1788
|
-
if (!
|
|
1789
|
-
const [v,
|
|
1790
|
-
a.setHours(v,
|
|
1788
|
+
set(A) {
|
|
1789
|
+
if (!A) return;
|
|
1790
|
+
const [v, e] = A.split(":").map(Number), a = s.value ?? /* @__PURE__ */ new Date();
|
|
1791
|
+
a.setHours(v, e), s.value = new Date(a);
|
|
1791
1792
|
}
|
|
1792
|
-
}), p = _(() => k.value && g.value &&
|
|
1793
|
-
async function
|
|
1793
|
+
}), p = _(() => k.value && g.value && u.value && b.value.length > 0 && !m.value);
|
|
1794
|
+
async function d() {
|
|
1794
1795
|
if (p.value) {
|
|
1795
|
-
if (!
|
|
1796
|
-
|
|
1796
|
+
if (!x.currentLocationSetting) {
|
|
1797
|
+
t.open({
|
|
1797
1798
|
message: "Current location setting is not available",
|
|
1798
1799
|
type: "error"
|
|
1799
1800
|
});
|
|
1800
1801
|
return;
|
|
1801
1802
|
}
|
|
1802
|
-
|
|
1803
|
+
m.value = !0;
|
|
1803
1804
|
try {
|
|
1804
|
-
const
|
|
1805
|
-
items:
|
|
1806
|
-
date:
|
|
1807
|
-
netsuiteLocationId:
|
|
1808
|
-
netsuiteLocationName:
|
|
1809
|
-
}, v = `${
|
|
1810
|
-
await n.createInventoryTransfer(v,
|
|
1805
|
+
const A = {
|
|
1806
|
+
items: b.value,
|
|
1807
|
+
date: s.value.toISOString(),
|
|
1808
|
+
netsuiteLocationId: u.value.netsuiteId,
|
|
1809
|
+
netsuiteLocationName: u.value.name
|
|
1810
|
+
}, v = `${x.currentLocationSetting.type}_${x.currentLocationSetting.id}`;
|
|
1811
|
+
await n.createInventoryTransfer(v, A), b.value = [], s.value = null, u.value = null, t.open({
|
|
1811
1812
|
message: "Inventort transfer created successfully",
|
|
1812
1813
|
type: "success"
|
|
1813
1814
|
});
|
|
1814
1815
|
} catch {
|
|
1815
|
-
|
|
1816
|
+
t.open({
|
|
1816
1817
|
message: "Failed to create inventory transfer",
|
|
1817
1818
|
type: "error"
|
|
1818
1819
|
});
|
|
1819
1820
|
} finally {
|
|
1820
|
-
|
|
1821
|
+
m.value = !1;
|
|
1821
1822
|
}
|
|
1822
1823
|
}
|
|
1823
1824
|
}
|
|
1824
1825
|
function c() {
|
|
1825
|
-
const
|
|
1826
|
+
const A = o.currentLocationSubsidiary(), v = o.getAvailableItems(A.id), e = r.skus.filter((L) => v.includes(L._id)).map((L) => L._id), a = r.skus.map(
|
|
1826
1827
|
(L) => ({
|
|
1827
1828
|
label: L.name,
|
|
1828
1829
|
sublabel: L.code,
|
|
1829
1830
|
value: L,
|
|
1830
|
-
disabled: !
|
|
1831
|
+
disabled: !e.includes(L._id)
|
|
1831
1832
|
})
|
|
1832
|
-
),
|
|
1833
|
+
), B = a.filter((L) => {
|
|
1833
1834
|
var N;
|
|
1834
|
-
return (N =
|
|
1835
|
+
return (N = b.value) == null ? void 0 : N.find((H) => H.sku._id === L.value._id);
|
|
1835
1836
|
}).map((L) => L.value);
|
|
1836
1837
|
y.open({
|
|
1837
|
-
title:
|
|
1838
|
+
title: i("inventory.transfer.form.items.selectItem"),
|
|
1838
1839
|
closeButton: !0,
|
|
1839
|
-
contentComponent:
|
|
1840
|
+
contentComponent: Je,
|
|
1840
1841
|
contentComponentProps: {
|
|
1841
|
-
modelValue:
|
|
1842
|
+
modelValue: B,
|
|
1842
1843
|
items: a,
|
|
1843
1844
|
virtualScroll: !0
|
|
1844
1845
|
},
|
|
1845
1846
|
primaryActions: {
|
|
1846
|
-
text:
|
|
1847
|
+
text: i("common.confirm"),
|
|
1847
1848
|
close: !0
|
|
1848
1849
|
},
|
|
1849
1850
|
secondaryActions: {
|
|
1850
|
-
text:
|
|
1851
|
+
text: i("common.close"),
|
|
1851
1852
|
close: !0,
|
|
1852
1853
|
variant: "tertiary"
|
|
1853
1854
|
}
|
|
1854
1855
|
}).onPrimary((L) => {
|
|
1855
|
-
const N =
|
|
1856
|
+
const N = b.value, H = L.map((X) => {
|
|
1856
1857
|
const R = N.find((Q) => Q.sku._id === X._id);
|
|
1857
1858
|
return R || {
|
|
1858
1859
|
sku: X,
|
|
@@ -1864,26 +1865,26 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1864
1865
|
}
|
|
1865
1866
|
};
|
|
1866
1867
|
});
|
|
1867
|
-
H.sort((X, R) => X.sku.code.localeCompare(R.sku.code)),
|
|
1868
|
+
H.sort((X, R) => X.sku.code.localeCompare(R.sku.code)), b.value = H;
|
|
1868
1869
|
});
|
|
1869
1870
|
}
|
|
1870
|
-
return (
|
|
1871
|
-
const
|
|
1872
|
-
return I(), V("div",
|
|
1873
|
-
|
|
1874
|
-
modelValue:
|
|
1875
|
-
"onUpdate:modelValue": v[0] || (v[0] = (T) =>
|
|
1871
|
+
return (A, v) => {
|
|
1872
|
+
const e = F("FmButtonGroup"), a = F("FmLabel"), B = F("FmField"), L = F("FmSimpleDatePicker"), N = F("FmTimePicker"), H = F("FmSelect"), X = F("FmIcon"), R = F("FmButton");
|
|
1873
|
+
return I(), V("div", gn, [
|
|
1874
|
+
h(e, {
|
|
1875
|
+
modelValue: f.value,
|
|
1876
|
+
"onUpdate:modelValue": v[0] || (v[0] = (T) => f.value = T),
|
|
1876
1877
|
items: w
|
|
1877
1878
|
}, null, 8, ["modelValue"]),
|
|
1878
|
-
|
|
1879
|
-
S(
|
|
1880
|
-
|
|
1879
|
+
f.value.label === "Transfer Out" ? (I(), V(J, { key: 0 }, [
|
|
1880
|
+
S(o).inventoryTransferOutEnabled ? (I(), V("div", yn, [
|
|
1881
|
+
h(a, { class: "fm-typo-en-body-md-600" }, {
|
|
1881
1882
|
default: O(() => v[6] || (v[6] = [
|
|
1882
1883
|
P("Type")
|
|
1883
1884
|
])),
|
|
1884
1885
|
_: 1
|
|
1885
1886
|
}),
|
|
1886
|
-
|
|
1887
|
+
h(B, {
|
|
1887
1888
|
class: "my-4",
|
|
1888
1889
|
disabled: "",
|
|
1889
1890
|
"prepend-icon": "lock"
|
|
@@ -1893,81 +1894,81 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1893
1894
|
])),
|
|
1894
1895
|
_: 1
|
|
1895
1896
|
}),
|
|
1896
|
-
|
|
1897
|
+
h(a, { class: "fm-typo-en-body-md-600" }, {
|
|
1897
1898
|
default: O(() => v[8] || (v[8] = [
|
|
1898
1899
|
P("Subsidiary")
|
|
1899
1900
|
])),
|
|
1900
1901
|
_: 1
|
|
1901
1902
|
}),
|
|
1902
|
-
|
|
1903
|
+
h(B, {
|
|
1903
1904
|
class: "my-4",
|
|
1904
1905
|
disabled: "",
|
|
1905
1906
|
"prepend-icon": "lock"
|
|
1906
1907
|
}, {
|
|
1907
1908
|
default: O(() => [
|
|
1908
|
-
P(j(
|
|
1909
|
+
P(j(A.currentLocationSubsidiary.fullName), 1)
|
|
1909
1910
|
]),
|
|
1910
1911
|
_: 1
|
|
1911
1912
|
}),
|
|
1912
|
-
|
|
1913
|
+
h(a, { class: "fm-typo-en-body-md-600" }, {
|
|
1913
1914
|
default: O(() => v[9] || (v[9] = [
|
|
1914
1915
|
P("Transaction date")
|
|
1915
1916
|
])),
|
|
1916
1917
|
_: 1
|
|
1917
1918
|
}),
|
|
1918
|
-
|
|
1919
|
+
h(L, {
|
|
1919
1920
|
modelValue: k.value,
|
|
1920
1921
|
"onUpdate:modelValue": v[1] || (v[1] = (T) => k.value = T)
|
|
1921
1922
|
}, null, 8, ["modelValue"]),
|
|
1922
|
-
|
|
1923
|
+
h(a, { class: "fm-typo-en-body-md-600" }, {
|
|
1923
1924
|
default: O(() => v[10] || (v[10] = [
|
|
1924
1925
|
P("Transaction time")
|
|
1925
1926
|
])),
|
|
1926
1927
|
_: 1
|
|
1927
1928
|
}),
|
|
1928
|
-
|
|
1929
|
+
h(N, {
|
|
1929
1930
|
modelValue: g.value,
|
|
1930
1931
|
"onUpdate:modelValue": v[2] || (v[2] = (T) => g.value = T)
|
|
1931
1932
|
}, null, 8, ["modelValue"]),
|
|
1932
|
-
|
|
1933
|
+
h(a, { class: "fm-typo-en-body-md-600" }, {
|
|
1933
1934
|
default: O(() => v[11] || (v[11] = [
|
|
1934
1935
|
P("NetSuite Location")
|
|
1935
1936
|
])),
|
|
1936
1937
|
_: 1
|
|
1937
1938
|
}),
|
|
1938
|
-
l("div",
|
|
1939
|
-
|
|
1939
|
+
l("div", An, [
|
|
1940
|
+
u.value ? z("", !0) : (I(), U(H, {
|
|
1940
1941
|
key: 0,
|
|
1941
1942
|
class: "my-4 w-full",
|
|
1942
|
-
modelValue:
|
|
1943
|
-
"onUpdate:modelValue": v[3] || (v[3] = (T) =>
|
|
1943
|
+
modelValue: u.value,
|
|
1944
|
+
"onUpdate:modelValue": v[3] || (v[3] = (T) => u.value = T),
|
|
1944
1945
|
searchable: "",
|
|
1945
1946
|
searchTarget: "label",
|
|
1946
|
-
items:
|
|
1947
|
+
items: E.value
|
|
1947
1948
|
}, null, 8, ["modelValue", "items"])),
|
|
1948
|
-
|
|
1949
|
-
|
|
1949
|
+
u.value ? (I(), V("div", bn, [
|
|
1950
|
+
h(X, {
|
|
1950
1951
|
name: "cloud",
|
|
1951
1952
|
color: "neutral-gray-400",
|
|
1952
1953
|
size: "md",
|
|
1953
1954
|
class: "mr-2",
|
|
1954
1955
|
outline: ""
|
|
1955
1956
|
}),
|
|
1956
|
-
l("div",
|
|
1957
|
-
l("span",
|
|
1958
|
-
l("span",
|
|
1959
|
-
l("span",
|
|
1957
|
+
l("div", hn, [
|
|
1958
|
+
l("span", xn, j(u.value.name), 1),
|
|
1959
|
+
l("span", In, "ID: " + j(u.value.netsuiteId), 1),
|
|
1960
|
+
l("span", Sn, "Subsidiary: " + j(u.value.subsidiaryName), 1)
|
|
1960
1961
|
]),
|
|
1961
|
-
|
|
1962
|
+
h(R, {
|
|
1962
1963
|
class: "ml-2",
|
|
1963
1964
|
variant: "secondary",
|
|
1964
1965
|
label: "Clear",
|
|
1965
|
-
onClick: v[4] || (v[4] = (T) =>
|
|
1966
|
+
onClick: v[4] || (v[4] = (T) => u.value = null)
|
|
1966
1967
|
})
|
|
1967
1968
|
])) : z("", !0)
|
|
1968
1969
|
]),
|
|
1969
|
-
l("div",
|
|
1970
|
-
|
|
1970
|
+
l("div", wn, [
|
|
1971
|
+
h(R, {
|
|
1971
1972
|
class: "ml-auto",
|
|
1972
1973
|
variant: "secondary",
|
|
1973
1974
|
"prepend-icon": "add",
|
|
@@ -1975,23 +1976,23 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1975
1976
|
onClick: c
|
|
1976
1977
|
})
|
|
1977
1978
|
]),
|
|
1978
|
-
|
|
1979
|
-
modelValue:
|
|
1980
|
-
"onUpdate:modelValue": v[5] || (v[5] = (T) =>
|
|
1979
|
+
h(fn, {
|
|
1980
|
+
modelValue: b.value,
|
|
1981
|
+
"onUpdate:modelValue": v[5] || (v[5] = (T) => b.value = T)
|
|
1981
1982
|
}, null, 8, ["modelValue"]),
|
|
1982
|
-
l("div",
|
|
1983
|
-
|
|
1983
|
+
l("div", kn, [
|
|
1984
|
+
h(R, {
|
|
1984
1985
|
class: "ml-auto mt-4",
|
|
1985
1986
|
variant: "primary",
|
|
1986
1987
|
"prepend-icon": "add",
|
|
1987
1988
|
label: "Create",
|
|
1988
1989
|
disabled: !p.value,
|
|
1989
|
-
loading:
|
|
1990
|
-
onClick:
|
|
1990
|
+
loading: m.value,
|
|
1991
|
+
onClick: d
|
|
1991
1992
|
}, null, 8, ["disabled", "loading"])
|
|
1992
1993
|
])
|
|
1993
|
-
])) : (I(), V("div",
|
|
1994
|
-
|
|
1994
|
+
])) : (I(), V("div", Bn, [
|
|
1995
|
+
h(a, { class: "fm-typo-en-body-md-600" }, {
|
|
1995
1996
|
default: O(() => v[12] || (v[12] = [
|
|
1996
1997
|
P(" Feature is not enabled. Please contact your administrator. ")
|
|
1997
1998
|
])),
|
|
@@ -1999,43 +2000,45 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
1999
2000
|
})
|
|
2000
2001
|
]))
|
|
2001
2002
|
], 64)) : z("", !0),
|
|
2002
|
-
|
|
2003
|
-
|
|
2003
|
+
f.value.label === "History" ? (I(), V("div", Cn, [
|
|
2004
|
+
h(vn)
|
|
2004
2005
|
])) : z("", !0)
|
|
2005
2006
|
]);
|
|
2006
2007
|
};
|
|
2007
2008
|
}
|
|
2008
|
-
}),
|
|
2009
|
+
}), Fn = { class: "flex flex-col gap-8" }, Ln = {
|
|
2009
2010
|
key: 0,
|
|
2010
2011
|
class: "flex flex-col gap-4"
|
|
2011
|
-
},
|
|
2012
|
+
}, Vn = { style: { "list-style-type": "initial", "padding-left": "1rem" } }, Nn = /* @__PURE__ */ Y({
|
|
2012
2013
|
__name: "TransferOrder",
|
|
2013
2014
|
props: {
|
|
2014
2015
|
currentLocationSetting: {}
|
|
2015
2016
|
},
|
|
2016
|
-
setup(
|
|
2017
|
-
const y = re()
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2017
|
+
setup(C) {
|
|
2018
|
+
const y = re();
|
|
2019
|
+
oe();
|
|
2020
|
+
const o = me(), r = ee(), n = M(!1), t = C, i = M([]);
|
|
2021
|
+
async function b() {
|
|
2022
|
+
var f;
|
|
2023
|
+
n.value = !0;
|
|
2021
2024
|
try {
|
|
2022
|
-
const
|
|
2023
|
-
|
|
2025
|
+
const m = ((f = t.currentLocationSetting) == null ? void 0 : f.id) || "", s = await o.getUnSyncTransferInOrders(m);
|
|
2026
|
+
i.value = s, r.open({
|
|
2024
2027
|
message: "Check unsync transfer in order successfully",
|
|
2025
2028
|
type: "success"
|
|
2026
2029
|
});
|
|
2027
2030
|
} catch {
|
|
2028
|
-
|
|
2031
|
+
r.open({
|
|
2029
2032
|
message: "Failed to check unsync transfer in order",
|
|
2030
2033
|
type: "error"
|
|
2031
2034
|
});
|
|
2032
2035
|
} finally {
|
|
2033
|
-
|
|
2036
|
+
n.value = !1;
|
|
2034
2037
|
}
|
|
2035
2038
|
}
|
|
2036
|
-
async function
|
|
2037
|
-
if (
|
|
2038
|
-
|
|
2039
|
+
async function w() {
|
|
2040
|
+
if (i.value.length === 0) {
|
|
2041
|
+
r.open({
|
|
2039
2042
|
message: "No unsynced transfer orders to sync",
|
|
2040
2043
|
type: "info"
|
|
2041
2044
|
});
|
|
@@ -2046,82 +2049,88 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2046
2049
|
message: "Are you sure you want to sync these transfer orders?",
|
|
2047
2050
|
primaryActions: { text: "Proceed", close: !0 }
|
|
2048
2051
|
}).onPrimary(async () => {
|
|
2049
|
-
|
|
2052
|
+
n.value = !0;
|
|
2050
2053
|
try {
|
|
2051
|
-
await
|
|
2054
|
+
await o.manualSyncMultipleTransferInOrders(i.value), await new Promise((f) => setTimeout(f, 5e3)), r.open({
|
|
2052
2055
|
message: "Sync transfer orders request sent successfully",
|
|
2053
2056
|
type: "success"
|
|
2054
2057
|
});
|
|
2055
|
-
} catch (
|
|
2056
|
-
console.log(
|
|
2058
|
+
} catch (f) {
|
|
2059
|
+
console.log(f), r.open({
|
|
2057
2060
|
message: "Failed to sync transfer orders",
|
|
2058
2061
|
type: "error"
|
|
2059
2062
|
});
|
|
2060
2063
|
} finally {
|
|
2061
|
-
|
|
2064
|
+
n.value = !1;
|
|
2062
2065
|
}
|
|
2063
2066
|
});
|
|
2064
2067
|
}
|
|
2065
|
-
return (
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
return I(), V("div", En, [
|
|
2068
|
+
return (f, m) => {
|
|
2069
|
+
const s = F("FmButton");
|
|
2070
|
+
return I(), V("div", Fn, [
|
|
2069
2071
|
l("span", null, "Current date and time: " + j((/* @__PURE__ */ new Date()).toLocaleString()), 1),
|
|
2070
|
-
|
|
2072
|
+
h(s, {
|
|
2071
2073
|
label: "Check Unsync Transfer Order (Last 2 months)",
|
|
2072
2074
|
variant: "primary",
|
|
2073
|
-
onClick:
|
|
2074
|
-
disabled:
|
|
2075
|
-
loading:
|
|
2075
|
+
onClick: b,
|
|
2076
|
+
disabled: n.value,
|
|
2077
|
+
loading: n.value
|
|
2076
2078
|
}, null, 8, ["disabled", "loading"]),
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
l("ul",
|
|
2080
|
-
(I(!0), V(J, null, W(
|
|
2079
|
+
i.value.length > 0 ? (I(), V("div", Ln, [
|
|
2080
|
+
m[0] || (m[0] = l("p", null, "Transfer Order NetSuite ID not match with existing orders", -1)),
|
|
2081
|
+
l("ul", Vn, [
|
|
2082
|
+
(I(!0), V(J, null, W(i.value, (u) => (I(), V("li", { key: u }, j(u), 1))), 128))
|
|
2081
2083
|
]),
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2084
|
+
h(Ne, null, {
|
|
2085
|
+
default: O(() => [
|
|
2086
|
+
i.value.length > 0 ? (I(), U(s, {
|
|
2087
|
+
key: 0,
|
|
2088
|
+
label: "Sync now",
|
|
2089
|
+
variant: "destructive",
|
|
2090
|
+
onClick: w,
|
|
2091
|
+
disabled: n.value,
|
|
2092
|
+
loading: n.value
|
|
2093
|
+
}, null, 8, ["disabled", "loading"])) : z("", !0)
|
|
2094
|
+
]),
|
|
2095
|
+
_: 1
|
|
2096
|
+
})
|
|
2090
2097
|
])) : z("", !0)
|
|
2091
2098
|
]);
|
|
2092
2099
|
};
|
|
2093
2100
|
}
|
|
2094
|
-
}),
|
|
2101
|
+
}), Dn = { class: "flex flex-col gap-8" }, On = {
|
|
2095
2102
|
key: 0,
|
|
2096
2103
|
class: "flex flex-col gap-4"
|
|
2097
|
-
},
|
|
2104
|
+
}, Mn = { style: { "list-style-type": "initial", "padding-left": "1rem" } }, Rn = /* @__PURE__ */ Y({
|
|
2098
2105
|
__name: "PurchaseOrder",
|
|
2099
2106
|
props: {
|
|
2100
2107
|
currentLocationSetting: {}
|
|
2101
2108
|
},
|
|
2102
|
-
setup(
|
|
2103
|
-
const y = re()
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2109
|
+
setup(C) {
|
|
2110
|
+
const y = re();
|
|
2111
|
+
oe();
|
|
2112
|
+
const o = me(), r = ee(), n = M(!1), t = C, i = M([]);
|
|
2113
|
+
async function b() {
|
|
2114
|
+
var f;
|
|
2115
|
+
n.value = !0;
|
|
2107
2116
|
try {
|
|
2108
|
-
const
|
|
2109
|
-
|
|
2117
|
+
const m = ((f = t.currentLocationSetting) == null ? void 0 : f.id) || "", s = await o.getUnSyncPurchaseOrders(m);
|
|
2118
|
+
i.value = s, r.open({
|
|
2110
2119
|
message: "Check unsync purchase order successfully",
|
|
2111
2120
|
type: "success"
|
|
2112
2121
|
});
|
|
2113
2122
|
} catch {
|
|
2114
|
-
|
|
2123
|
+
r.open({
|
|
2115
2124
|
message: "Failed to check unsync purchase order",
|
|
2116
2125
|
type: "error"
|
|
2117
2126
|
});
|
|
2118
2127
|
} finally {
|
|
2119
|
-
|
|
2128
|
+
n.value = !1;
|
|
2120
2129
|
}
|
|
2121
2130
|
}
|
|
2122
|
-
async function
|
|
2123
|
-
if (
|
|
2124
|
-
|
|
2131
|
+
async function w() {
|
|
2132
|
+
if (i.value.length === 0) {
|
|
2133
|
+
r.open({
|
|
2125
2134
|
message: "No unsynced purchase orders to sync",
|
|
2126
2135
|
type: "info"
|
|
2127
2136
|
});
|
|
@@ -2132,52 +2141,58 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2132
2141
|
message: "Are you sure you want to sync these purchase orders?",
|
|
2133
2142
|
primaryActions: { text: "Proceed", close: !0 }
|
|
2134
2143
|
}).onPrimary(async () => {
|
|
2135
|
-
|
|
2144
|
+
n.value = !0;
|
|
2136
2145
|
try {
|
|
2137
|
-
await
|
|
2146
|
+
await o.manualSyncMultiplePurchaseOrders(i.value), await new Promise((f) => setTimeout(f, 5e3)), r.open({
|
|
2138
2147
|
message: "Sync purchase orders request sent successfully",
|
|
2139
2148
|
type: "success"
|
|
2140
2149
|
});
|
|
2141
|
-
} catch (
|
|
2142
|
-
console.log(
|
|
2150
|
+
} catch (f) {
|
|
2151
|
+
console.log(f), r.open({
|
|
2143
2152
|
message: "Failed to sync purchase orders",
|
|
2144
2153
|
type: "error"
|
|
2145
2154
|
});
|
|
2146
2155
|
} finally {
|
|
2147
|
-
|
|
2156
|
+
n.value = !1;
|
|
2148
2157
|
}
|
|
2149
2158
|
});
|
|
2150
2159
|
}
|
|
2151
|
-
return (
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
return I(), V("div", Nn, [
|
|
2160
|
+
return (f, m) => {
|
|
2161
|
+
const s = F("FmButton");
|
|
2162
|
+
return I(), V("div", Dn, [
|
|
2155
2163
|
l("span", null, "Current date and time: " + j((/* @__PURE__ */ new Date()).toLocaleString()), 1),
|
|
2156
|
-
|
|
2164
|
+
h(s, {
|
|
2157
2165
|
label: "Check Unsync Purchase Order (Last 2 months)",
|
|
2158
2166
|
variant: "primary",
|
|
2159
|
-
onClick:
|
|
2160
|
-
disabled:
|
|
2161
|
-
loading:
|
|
2167
|
+
onClick: b,
|
|
2168
|
+
disabled: n.value,
|
|
2169
|
+
loading: n.value
|
|
2162
2170
|
}, null, 8, ["disabled", "loading"]),
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
l("ul",
|
|
2166
|
-
(I(!0), V(J, null, W(
|
|
2171
|
+
i.value.length > 0 ? (I(), V("div", On, [
|
|
2172
|
+
m[0] || (m[0] = l("p", null, "Purchase Order NetSuite ID not match with existing orders", -1)),
|
|
2173
|
+
l("ul", Mn, [
|
|
2174
|
+
(I(!0), V(J, null, W(i.value, (u) => (I(), V("li", { key: u }, j(u), 1))), 128))
|
|
2167
2175
|
]),
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
+
l("div", null, [
|
|
2177
|
+
h(Ne, null, {
|
|
2178
|
+
default: O(() => [
|
|
2179
|
+
i.value.length > 0 ? (I(), U(s, {
|
|
2180
|
+
key: 0,
|
|
2181
|
+
label: "Sync now",
|
|
2182
|
+
variant: "destructive",
|
|
2183
|
+
onClick: w,
|
|
2184
|
+
disabled: n.value,
|
|
2185
|
+
loading: n.value
|
|
2186
|
+
}, null, 8, ["disabled", "loading"])) : z("", !0)
|
|
2187
|
+
]),
|
|
2188
|
+
_: 1
|
|
2189
|
+
})
|
|
2190
|
+
])
|
|
2176
2191
|
])) : z("", !0)
|
|
2177
2192
|
]);
|
|
2178
2193
|
};
|
|
2179
2194
|
}
|
|
2180
|
-
}),
|
|
2195
|
+
}), jn = { class: "flex flex-col gap-8 w-full" }, Tn = { class: "flex gap-4 justify-between" }, _n = { class: "inline-flex rounded-md items-center gap-4 justify-center h-[30px] px-8 py-4 bg-fm-color-neutral-gray-100 text-fm-color-neutral-gray-400" }, zn = { class: "fm-typo-en-body-md-600 select-none text-ellipsis overflow-hidden whitespace-nowrap" }, Hn = { key: 0 }, Un = { class: "flex gap-8 items-center justify-start" }, Xn = /* @__PURE__ */ Y({
|
|
2181
2196
|
__name: "NetSuiteSideSheet",
|
|
2182
2197
|
props: {
|
|
2183
2198
|
nsLocations: {},
|
|
@@ -2185,9 +2200,9 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2185
2200
|
loading: { type: Boolean }
|
|
2186
2201
|
},
|
|
2187
2202
|
emits: ["update:show"],
|
|
2188
|
-
setup(
|
|
2203
|
+
setup(C, { emit: y }) {
|
|
2189
2204
|
var k;
|
|
2190
|
-
const
|
|
2205
|
+
const o = oe(), r = ie(), n = C, t = le(n, "show"), { t: i } = Z(), b = y, w = $(), f = ((k = w._currentLocation) == null ? void 0 : k.type) || "", m = [
|
|
2191
2206
|
{
|
|
2192
2207
|
label: "Inventory Transfer (Out)",
|
|
2193
2208
|
value: "inventoryTransfer"
|
|
@@ -2203,15 +2218,15 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2203
2218
|
value: "purchaseOrder"
|
|
2204
2219
|
/* PURCHASE_ORDER */
|
|
2205
2220
|
}
|
|
2206
|
-
],
|
|
2207
|
-
(g) => g.subsidiaryId ===
|
|
2221
|
+
], s = M(m[0].value), u = _(() => r.currentLocationSubsidiary()), x = _(() => r.currentLocationSetting), E = _(() => n.nsLocations.filter(
|
|
2222
|
+
(g) => g.subsidiaryId === u.value.id || g.netsuiteId === u.value.id
|
|
2208
2223
|
));
|
|
2209
2224
|
return (g, p) => {
|
|
2210
|
-
var
|
|
2211
|
-
const
|
|
2225
|
+
var e;
|
|
2226
|
+
const d = F("FmIcon"), c = F("FmTabs"), A = F("FmButton"), v = F("FmSideSheet");
|
|
2212
2227
|
return I(), U(v, {
|
|
2213
|
-
modelValue: S(
|
|
2214
|
-
"onUpdate:modelValue": p[2] || (p[2] = (a) => ae(
|
|
2228
|
+
modelValue: S(t),
|
|
2229
|
+
"onUpdate:modelValue": p[2] || (p[2] = (a) => ae(t) ? t.value = a : null),
|
|
2215
2230
|
header: "Data migration (Xilnex)",
|
|
2216
2231
|
"dismiss-away": "",
|
|
2217
2232
|
"close-button": "",
|
|
@@ -2219,53 +2234,53 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2219
2234
|
}, se({
|
|
2220
2235
|
default: O(() => [
|
|
2221
2236
|
S(r).isCurrentLocationBindedToNetSuite ? (I(), V(J, { key: 1 }, [
|
|
2222
|
-
|
|
2237
|
+
s.value === "inventoryTransfer" ? (I(), U(En, {
|
|
2223
2238
|
key: 0,
|
|
2224
|
-
currentLocationSetting:
|
|
2225
|
-
nsLocations:
|
|
2226
|
-
currentLocationSubsidiary:
|
|
2239
|
+
currentLocationSetting: x.value,
|
|
2240
|
+
nsLocations: E.value,
|
|
2241
|
+
currentLocationSubsidiary: u.value
|
|
2227
2242
|
}, null, 8, ["currentLocationSetting", "nsLocations", "currentLocationSubsidiary"])) : z("", !0),
|
|
2228
|
-
|
|
2243
|
+
s.value === "transferOrder" ? (I(), U(Nn, {
|
|
2229
2244
|
key: 1,
|
|
2230
|
-
currentLocationSetting:
|
|
2245
|
+
currentLocationSetting: x.value
|
|
2231
2246
|
}, null, 8, ["currentLocationSetting"])) : z("", !0),
|
|
2232
|
-
|
|
2247
|
+
s.value === "purchaseOrder" ? (I(), U(Rn, {
|
|
2233
2248
|
key: 2,
|
|
2234
|
-
currentLocationSetting:
|
|
2249
|
+
currentLocationSetting: x.value
|
|
2235
2250
|
}, null, 8, ["currentLocationSetting"])) : z("", !0)
|
|
2236
|
-
], 64)) : (I(), V("div",
|
|
2251
|
+
], 64)) : (I(), V("div", Hn, " Netsuite is not configured for this location. Please contact your administrator. "))
|
|
2237
2252
|
]),
|
|
2238
2253
|
"side-sheet-footer": O(() => [
|
|
2239
|
-
l("div",
|
|
2240
|
-
|
|
2254
|
+
l("div", Un, [
|
|
2255
|
+
h(A, {
|
|
2241
2256
|
variant: "tertiary",
|
|
2242
|
-
label: S(
|
|
2243
|
-
onClick: p[1] || (p[1] = (a) =>
|
|
2257
|
+
label: S(i)("common.close"),
|
|
2258
|
+
onClick: p[1] || (p[1] = (a) => b("update:show", !1))
|
|
2244
2259
|
}, null, 8, ["label"])
|
|
2245
2260
|
])
|
|
2246
2261
|
]),
|
|
2247
2262
|
_: 2
|
|
2248
2263
|
}, [
|
|
2249
|
-
(
|
|
2264
|
+
(e = S(o).sessionUser.value) != null && e.role.isAdmin ? {
|
|
2250
2265
|
name: "side-sheet-header",
|
|
2251
2266
|
fn: O(() => {
|
|
2252
2267
|
var a;
|
|
2253
2268
|
return [
|
|
2254
|
-
l("div",
|
|
2255
|
-
l("div",
|
|
2269
|
+
l("div", jn, [
|
|
2270
|
+
l("div", Tn, [
|
|
2256
2271
|
p[3] || (p[3] = l("div", { class: "fm-typo-en-title-md-600" }, "NetSuite Integration", -1)),
|
|
2257
|
-
l("div",
|
|
2258
|
-
|
|
2259
|
-
name: S(
|
|
2272
|
+
l("div", _n, [
|
|
2273
|
+
h(d, {
|
|
2274
|
+
name: S(f),
|
|
2260
2275
|
size: "sm"
|
|
2261
2276
|
}, null, 8, ["name"]),
|
|
2262
|
-
l("div",
|
|
2277
|
+
l("div", zn, j((a = S(w)._currentLocation) == null ? void 0 : a.name), 1)
|
|
2263
2278
|
])
|
|
2264
2279
|
]),
|
|
2265
|
-
|
|
2266
|
-
"model-value":
|
|
2267
|
-
"onUpdate:modelValue": p[0] || (p[0] = (
|
|
2268
|
-
items:
|
|
2280
|
+
h(c, {
|
|
2281
|
+
"model-value": s.value,
|
|
2282
|
+
"onUpdate:modelValue": p[0] || (p[0] = (B) => s.value = B),
|
|
2283
|
+
items: m
|
|
2269
2284
|
}, null, 8, ["model-value"])
|
|
2270
2285
|
])
|
|
2271
2286
|
];
|
|
@@ -2275,22 +2290,22 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2275
2290
|
]), 1032, ["modelValue"]);
|
|
2276
2291
|
};
|
|
2277
2292
|
}
|
|
2278
|
-
}),
|
|
2293
|
+
}), Qn = { class: "flex justify-center" }, Yn = ["src"], Jn = { class: "flex flex-col items-center gap-2" }, Kn = { class: "text-lg font-bold" }, Pn = { class: "text-fm-color-neutral-gray-300" }, qn = /* @__PURE__ */ Y({
|
|
2279
2294
|
__name: "NetSuite",
|
|
2280
|
-
setup(
|
|
2281
|
-
const y = ie(),
|
|
2282
|
-
async function
|
|
2295
|
+
setup(C) {
|
|
2296
|
+
const y = ie(), o = ee(), r = M(!1), n = M(!1);
|
|
2297
|
+
async function t() {
|
|
2283
2298
|
n.value = !0;
|
|
2284
2299
|
}
|
|
2285
|
-
const
|
|
2286
|
-
|
|
2300
|
+
const i = M([]);
|
|
2301
|
+
ze(async () => {
|
|
2287
2302
|
if (y.isReady && y.isEnabled) {
|
|
2288
2303
|
r.value = !0;
|
|
2289
2304
|
try {
|
|
2290
2305
|
const w = await y.getNetSuiteLocationOptions();
|
|
2291
|
-
|
|
2306
|
+
i.value = w;
|
|
2292
2307
|
} catch {
|
|
2293
|
-
|
|
2308
|
+
o.open({
|
|
2294
2309
|
message: "Failed to fetch NetSuite locations",
|
|
2295
2310
|
type: "error"
|
|
2296
2311
|
});
|
|
@@ -2299,11 +2314,11 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2299
2314
|
}
|
|
2300
2315
|
}
|
|
2301
2316
|
});
|
|
2302
|
-
const { t:
|
|
2303
|
-
return (w,
|
|
2304
|
-
const
|
|
2317
|
+
const { t: b } = Z();
|
|
2318
|
+
return (w, f) => {
|
|
2319
|
+
const m = F("FmCardSection"), s = F("FmCard");
|
|
2305
2320
|
return S(y).isEnabled ? (I(), V(J, { key: 0 }, [
|
|
2306
|
-
|
|
2321
|
+
h(s, {
|
|
2307
2322
|
class: q({
|
|
2308
2323
|
"w-full": !0,
|
|
2309
2324
|
border: !0,
|
|
@@ -2311,20 +2326,20 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2311
2326
|
"cursor-pointer": !0,
|
|
2312
2327
|
"hover:border-fm-color-primary": !0
|
|
2313
2328
|
}),
|
|
2314
|
-
onClick:
|
|
2329
|
+
onClick: f[0] || (f[0] = (u) => t())
|
|
2315
2330
|
}, {
|
|
2316
2331
|
default: O(() => [
|
|
2317
|
-
|
|
2332
|
+
h(m, null, {
|
|
2318
2333
|
default: O(() => [
|
|
2319
|
-
l("div",
|
|
2334
|
+
l("div", Qn, [
|
|
2320
2335
|
l("img", {
|
|
2321
|
-
src: S(
|
|
2336
|
+
src: S(qt),
|
|
2322
2337
|
alt: "NetSuite"
|
|
2323
|
-
}, null, 8,
|
|
2338
|
+
}, null, 8, Yn)
|
|
2324
2339
|
]),
|
|
2325
|
-
l("div",
|
|
2326
|
-
l("div",
|
|
2327
|
-
l("div",
|
|
2340
|
+
l("div", Jn, [
|
|
2341
|
+
l("div", Kn, j(S(b)("inventory.integration.netsuite.title")), 1),
|
|
2342
|
+
l("div", Pn, j(S(b)("inventory.integration.netsuite.description")), 1)
|
|
2328
2343
|
])
|
|
2329
2344
|
]),
|
|
2330
2345
|
_: 1
|
|
@@ -2336,32 +2351,32 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2336
2351
|
key: 0,
|
|
2337
2352
|
to: "body"
|
|
2338
2353
|
}, [
|
|
2339
|
-
S(y).isBusinessLocation ? (I(), U(
|
|
2354
|
+
S(y).isBusinessLocation ? (I(), U(mn, {
|
|
2340
2355
|
key: 0,
|
|
2341
2356
|
setting: S(y).state.setting,
|
|
2342
|
-
"onUpdate:setting":
|
|
2343
|
-
nsLocations:
|
|
2344
|
-
"onUpdate:nsLocations":
|
|
2357
|
+
"onUpdate:setting": f[1] || (f[1] = (u) => S(y).state.setting = u),
|
|
2358
|
+
nsLocations: i.value,
|
|
2359
|
+
"onUpdate:nsLocations": f[2] || (f[2] = (u) => i.value = u),
|
|
2345
2360
|
show: n.value,
|
|
2346
2361
|
"onUpdate:show": [
|
|
2347
|
-
|
|
2348
|
-
|
|
2362
|
+
f[3] || (f[3] = (u) => n.value = u),
|
|
2363
|
+
f[4] || (f[4] = (u) => n.value = u)
|
|
2349
2364
|
],
|
|
2350
2365
|
loading: r.value,
|
|
2351
|
-
"onUpdate:loading":
|
|
2352
|
-
}, null, 8, ["setting", "nsLocations", "show", "loading"])) : (I(), U(
|
|
2366
|
+
"onUpdate:loading": f[5] || (f[5] = (u) => r.value = u)
|
|
2367
|
+
}, null, 8, ["setting", "nsLocations", "show", "loading"])) : (I(), U(Xn, {
|
|
2353
2368
|
key: 1,
|
|
2354
2369
|
setting: S(y).state.setting,
|
|
2355
|
-
"onUpdate:setting":
|
|
2356
|
-
nsLocations:
|
|
2357
|
-
"onUpdate:nsLocations":
|
|
2370
|
+
"onUpdate:setting": f[6] || (f[6] = (u) => S(y).state.setting = u),
|
|
2371
|
+
nsLocations: i.value,
|
|
2372
|
+
"onUpdate:nsLocations": f[7] || (f[7] = (u) => i.value = u),
|
|
2358
2373
|
show: n.value,
|
|
2359
2374
|
"onUpdate:show": [
|
|
2360
|
-
|
|
2361
|
-
|
|
2375
|
+
f[8] || (f[8] = (u) => n.value = u),
|
|
2376
|
+
f[9] || (f[9] = (u) => n.value = u)
|
|
2362
2377
|
],
|
|
2363
2378
|
loading: r.value,
|
|
2364
|
-
"onUpdate:loading":
|
|
2379
|
+
"onUpdate:loading": f[10] || (f[10] = (u) => r.value = u)
|
|
2365
2380
|
}, null, 8, ["setting", "nsLocations", "show", "loading"]))
|
|
2366
2381
|
])) : z("", !0)
|
|
2367
2382
|
], 64)) : z("", !0);
|
|
@@ -2384,44 +2399,44 @@ const Bt = { class: "flex flex-col rounded border border-fm-color-neutral-gray-1
|
|
|
2384
2399
|
"schemeFranchiseePrice",
|
|
2385
2400
|
"physicalSchemeTotalFranchiseePrice"
|
|
2386
2401
|
];
|
|
2387
|
-
async function
|
|
2388
|
-
var
|
|
2389
|
-
const r = await
|
|
2390
|
-
for (const
|
|
2391
|
-
const w = r[
|
|
2392
|
-
for (let
|
|
2393
|
-
const
|
|
2394
|
-
if (
|
|
2402
|
+
async function Zn(C, y, o) {
|
|
2403
|
+
var i;
|
|
2404
|
+
const r = await Gn(o), n = [], t = {};
|
|
2405
|
+
for (const b in r) {
|
|
2406
|
+
const w = r[b];
|
|
2407
|
+
for (let f = 0; f < w.length; f++) {
|
|
2408
|
+
const m = w[f], s = m.itemCode, u = m.itemName, x = m.physicalQty, E = m.customCost;
|
|
2409
|
+
if (s === "" || s === "undefined") {
|
|
2395
2410
|
n.push({
|
|
2396
|
-
row:
|
|
2397
|
-
itemCode:
|
|
2398
|
-
itemName:
|
|
2411
|
+
row: m.excelRow,
|
|
2412
|
+
itemCode: s,
|
|
2413
|
+
itemName: u,
|
|
2399
2414
|
message: "Item code is empty or undefined"
|
|
2400
2415
|
});
|
|
2401
2416
|
continue;
|
|
2402
2417
|
}
|
|
2403
|
-
const k = y.find((
|
|
2418
|
+
const k = y.find((A) => A.code === s);
|
|
2404
2419
|
if (!k) {
|
|
2405
2420
|
n.push({
|
|
2406
|
-
row:
|
|
2407
|
-
itemCode:
|
|
2408
|
-
itemName:
|
|
2409
|
-
qty:
|
|
2421
|
+
row: m.excelRow,
|
|
2422
|
+
itemCode: s,
|
|
2423
|
+
itemName: u,
|
|
2424
|
+
qty: x,
|
|
2410
2425
|
message: "Item not found in inventory"
|
|
2411
|
-
}), console.error(`${
|
|
2426
|
+
}), console.error(`${m.excelRow} Item not found: ${s} ${u} ${x}`);
|
|
2412
2427
|
continue;
|
|
2413
2428
|
}
|
|
2414
|
-
let g = Number(
|
|
2415
|
-
const p =
|
|
2416
|
-
p && (g = p * Number(
|
|
2417
|
-
const
|
|
2418
|
-
amount:
|
|
2429
|
+
let g = Number(m.totalPhysicalCustomCost);
|
|
2430
|
+
const p = C[k._id];
|
|
2431
|
+
p && (g = p * Number(x));
|
|
2432
|
+
const d = G.fromNumber(Number(x)), c = {
|
|
2433
|
+
amount: d,
|
|
2419
2434
|
cost: {
|
|
2420
2435
|
...G.fromNumber(Number(g)),
|
|
2421
2436
|
currency: "MYR"
|
|
2422
2437
|
}
|
|
2423
2438
|
};
|
|
2424
|
-
|
|
2439
|
+
x != "0" && E == "0" && console.warn(`Item ${s} ${u} has 0 cost.`), t[i = k._id] ?? (t[i] = {
|
|
2425
2440
|
skuAdjustment: {
|
|
2426
2441
|
sku: k,
|
|
2427
2442
|
fromBalance: G.fromNumber(0),
|
|
@@ -2430,18 +2445,18 @@ async function qn(E, y, s) {
|
|
|
2430
2445
|
_id: null,
|
|
2431
2446
|
type: we.Enum.CLOSING,
|
|
2432
2447
|
remark: "Opening Balance",
|
|
2433
|
-
amount:
|
|
2448
|
+
amount: d,
|
|
2434
2449
|
measurement: null,
|
|
2435
2450
|
// always the smallest unit
|
|
2436
2451
|
cost: c.cost
|
|
2437
2452
|
}
|
|
2438
2453
|
],
|
|
2439
|
-
toBalance:
|
|
2454
|
+
toBalance: d,
|
|
2440
2455
|
toCostBalances: [c]
|
|
2441
2456
|
},
|
|
2442
2457
|
skuBalance: {
|
|
2443
2458
|
id: k._id,
|
|
2444
|
-
balance:
|
|
2459
|
+
balance: d,
|
|
2445
2460
|
costs: [c]
|
|
2446
2461
|
}
|
|
2447
2462
|
});
|
|
@@ -2449,68 +2464,68 @@ async function qn(E, y, s) {
|
|
|
2449
2464
|
}
|
|
2450
2465
|
return {
|
|
2451
2466
|
errors: n,
|
|
2452
|
-
rows:
|
|
2467
|
+
rows: t
|
|
2453
2468
|
};
|
|
2454
2469
|
}
|
|
2455
|
-
async function
|
|
2456
|
-
const y = await new Promise((
|
|
2457
|
-
const
|
|
2458
|
-
|
|
2459
|
-
}),
|
|
2460
|
-
for (const
|
|
2461
|
-
const
|
|
2462
|
-
n[
|
|
2470
|
+
async function Gn(C) {
|
|
2471
|
+
const y = await new Promise((t, i) => {
|
|
2472
|
+
const b = new FileReader();
|
|
2473
|
+
b.onload = (w) => t(w.target.result), b.onerror = i, b.readAsArrayBuffer(C);
|
|
2474
|
+
}), o = ke(y, { type: "array" }), r = o.SheetNames, n = {};
|
|
2475
|
+
for (const t of r) {
|
|
2476
|
+
const i = await Wn(o.Sheets[t]);
|
|
2477
|
+
n[t] = i;
|
|
2463
2478
|
}
|
|
2464
2479
|
return n;
|
|
2465
2480
|
}
|
|
2466
|
-
async function
|
|
2467
|
-
const y = Be.sheet_to_json(
|
|
2481
|
+
async function Wn(C) {
|
|
2482
|
+
const y = Be.sheet_to_json(C, {
|
|
2468
2483
|
header: xe,
|
|
2469
2484
|
range: 12
|
|
2470
|
-
}),
|
|
2485
|
+
}), o = [];
|
|
2471
2486
|
for (let r = 0; r < y.length; r++) {
|
|
2472
|
-
const n = y[r],
|
|
2473
|
-
for (const
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
...
|
|
2487
|
+
const n = y[r], t = {};
|
|
2488
|
+
for (const i of xe)
|
|
2489
|
+
t[i] = String(n[i]).trim();
|
|
2490
|
+
o.push({
|
|
2491
|
+
...t,
|
|
2477
2492
|
excelRow: r + 13
|
|
2478
2493
|
// Excel rows start from 1, and we skip the first 12 rows
|
|
2479
2494
|
});
|
|
2480
2495
|
}
|
|
2481
|
-
return
|
|
2496
|
+
return o;
|
|
2482
2497
|
}
|
|
2483
|
-
const
|
|
2498
|
+
const $n = { class: "flex flex-col gap-4" }, eo = { class: "flex flex-col" }, to = {
|
|
2484
2499
|
key: 0,
|
|
2485
2500
|
class: "flex flex-col gap-4 my-5"
|
|
2486
|
-
},
|
|
2501
|
+
}, no = { class: "flex flex-col gap-8" }, oo = { class: "flex flex-col gap-8" }, so = {
|
|
2487
2502
|
class: /* @__PURE__ */ q(["fm-corner-radius-md p-16 flex items-center gap-16"])
|
|
2488
|
-
},
|
|
2503
|
+
}, ao = {
|
|
2489
2504
|
class: /* @__PURE__ */ q(["fm-typo-en-body-md-400 flex-1 h-[36px] flex items-center gap-3"])
|
|
2490
|
-
},
|
|
2505
|
+
}, lo = { class: "line-clamp-2 text-ellipsis break-all" }, io = { class: "flex flex-col" }, ro = { class: "font-medium" }, uo = { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, co = { class: "flex" }, mo = { class: "flex" }, fo = { key: 1 }, po = /* @__PURE__ */ Y({
|
|
2491
2506
|
__name: "XilnexOpeningImport",
|
|
2492
|
-
setup(
|
|
2493
|
-
const y =
|
|
2507
|
+
setup(C) {
|
|
2508
|
+
const y = Ge(), o = ie(), r = be(), n = Ce(), t = ee(), i = _(() => [
|
|
2494
2509
|
{
|
|
2495
2510
|
value: "xilnex",
|
|
2496
2511
|
label: "Xilnex",
|
|
2497
2512
|
subLabel: "Based on Xilnex's item cost from excel file"
|
|
2498
2513
|
},
|
|
2499
|
-
...
|
|
2514
|
+
...o.isEnabled ? [
|
|
2500
2515
|
{
|
|
2501
2516
|
value: "netsuite",
|
|
2502
2517
|
label: "NetSuite",
|
|
2503
2518
|
subLabel: "Based on NetSuite's item current average cost by location. If not available, it will fallback to excel's cost",
|
|
2504
|
-
disabled: !
|
|
2519
|
+
disabled: !o.isCurrentLocationBindedToNetSuite,
|
|
2505
2520
|
disabledReason: "Current location is not binded to NetSuite"
|
|
2506
2521
|
}
|
|
2507
2522
|
] : []
|
|
2508
|
-
]),
|
|
2523
|
+
]), b = M(i.value[0].value), { t: w } = de(), f = M(null), m = M(), s = M(""), u = M([]), x = M([]), E = [
|
|
2509
2524
|
{
|
|
2510
2525
|
id: "ingredient",
|
|
2511
2526
|
header: () => "Ingredient",
|
|
2512
|
-
cell(
|
|
2513
|
-
const a =
|
|
2527
|
+
cell(e) {
|
|
2528
|
+
const a = e.row.original;
|
|
2514
2529
|
return D("div", { class: "flex flex-col" }, [
|
|
2515
2530
|
D("span", { class: "font-medium" }, a.skuAdjustment.sku.name),
|
|
2516
2531
|
D("span", { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, [
|
|
@@ -2522,8 +2537,8 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2522
2537
|
{
|
|
2523
2538
|
id: "openingBalance",
|
|
2524
2539
|
header: () => "Opening Balance",
|
|
2525
|
-
cell(
|
|
2526
|
-
const a =
|
|
2540
|
+
cell(e) {
|
|
2541
|
+
const a = e.row.original;
|
|
2527
2542
|
return D("div", { class: "flex flex-col" }, [
|
|
2528
2543
|
D(
|
|
2529
2544
|
"span",
|
|
@@ -2538,10 +2553,10 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2538
2553
|
{
|
|
2539
2554
|
id: "unit",
|
|
2540
2555
|
header: () => "Unit",
|
|
2541
|
-
cell(
|
|
2542
|
-
const a =
|
|
2556
|
+
cell(e) {
|
|
2557
|
+
const a = e.row.original, B = !a.skuAdjustment.amounts[0].measurement;
|
|
2543
2558
|
let L = a.skuAdjustment.sku.unit.name;
|
|
2544
|
-
if (!
|
|
2559
|
+
if (!B) {
|
|
2545
2560
|
const N = a.skuAdjustment.sku.unit.measurements.find(
|
|
2546
2561
|
(H) => H.id === a.skuAdjustment.amounts[0].measurement.id
|
|
2547
2562
|
);
|
|
@@ -2549,7 +2564,7 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2549
2564
|
}
|
|
2550
2565
|
return D("div", { class: "flex flex-col" }, [
|
|
2551
2566
|
D("span", { class: "font-medium" }, L),
|
|
2552
|
-
|
|
2567
|
+
B ? null : D("span", { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, [
|
|
2553
2568
|
`Base unit: ${a.skuAdjustment.sku.unit.name}`
|
|
2554
2569
|
])
|
|
2555
2570
|
]);
|
|
@@ -2558,8 +2573,8 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2558
2573
|
{
|
|
2559
2574
|
id: "totalCost",
|
|
2560
2575
|
header: () => "Total Cost",
|
|
2561
|
-
cell(
|
|
2562
|
-
const a =
|
|
2576
|
+
cell(e) {
|
|
2577
|
+
const a = e.row.original, { currency: B, ...L } = a.skuAdjustment.amounts[0].cost ?? {
|
|
2563
2578
|
amount: 0,
|
|
2564
2579
|
precision: 0,
|
|
2565
2580
|
currency: ""
|
|
@@ -2598,19 +2613,19 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2598
2613
|
}
|
|
2599
2614
|
], g = M(!1);
|
|
2600
2615
|
async function p() {
|
|
2601
|
-
if (
|
|
2616
|
+
if (f.value) {
|
|
2602
2617
|
g.value = !0;
|
|
2603
2618
|
try {
|
|
2604
|
-
let
|
|
2605
|
-
|
|
2606
|
-
const { errors: a, rows:
|
|
2607
|
-
|
|
2619
|
+
let e = {};
|
|
2620
|
+
b.value === "netsuite" && (e = await o.getItemAverageCosts());
|
|
2621
|
+
const { errors: a, rows: B } = await Zn(
|
|
2622
|
+
e,
|
|
2608
2623
|
r.skus,
|
|
2609
|
-
|
|
2624
|
+
f.value
|
|
2610
2625
|
);
|
|
2611
|
-
|
|
2626
|
+
u.value = a, x.value = Object.values(B);
|
|
2612
2627
|
} catch {
|
|
2613
|
-
|
|
2628
|
+
t.open({
|
|
2614
2629
|
message: "Error verifying file",
|
|
2615
2630
|
type: "error"
|
|
2616
2631
|
});
|
|
@@ -2619,27 +2634,27 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2619
2634
|
}
|
|
2620
2635
|
}
|
|
2621
2636
|
}
|
|
2622
|
-
async function
|
|
2623
|
-
if (
|
|
2637
|
+
async function d() {
|
|
2638
|
+
if (f.value) {
|
|
2624
2639
|
g.value = !0;
|
|
2625
2640
|
try {
|
|
2626
|
-
if (!
|
|
2627
|
-
|
|
2641
|
+
if (!A.value) {
|
|
2642
|
+
t.open({
|
|
2628
2643
|
message: "Please select a date for the opening balance",
|
|
2629
2644
|
type: "error"
|
|
2630
2645
|
});
|
|
2631
2646
|
return;
|
|
2632
2647
|
}
|
|
2633
2648
|
await n.setOpeningBalance({
|
|
2634
|
-
effectiveAt:
|
|
2635
|
-
skuAdjustments:
|
|
2636
|
-
skuBalances:
|
|
2637
|
-
}),
|
|
2649
|
+
effectiveAt: A.value,
|
|
2650
|
+
skuAdjustments: x.value.map((e) => e.skuAdjustment),
|
|
2651
|
+
skuBalances: x.value.map((e) => e.skuBalance)
|
|
2652
|
+
}), t.open({
|
|
2638
2653
|
message: "Opening balance imported successfully",
|
|
2639
2654
|
type: "success"
|
|
2640
2655
|
}), await y.fetchClosingDocumentId();
|
|
2641
2656
|
} catch {
|
|
2642
|
-
|
|
2657
|
+
t.open({
|
|
2643
2658
|
message: "Error importing opening balance",
|
|
2644
2659
|
type: "error"
|
|
2645
2660
|
});
|
|
@@ -2648,25 +2663,25 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2648
2663
|
}
|
|
2649
2664
|
}
|
|
2650
2665
|
}
|
|
2651
|
-
const c = M(""),
|
|
2666
|
+
const c = M(""), A = _({
|
|
2652
2667
|
get() {
|
|
2653
2668
|
return c.value;
|
|
2654
2669
|
},
|
|
2655
|
-
set(
|
|
2656
|
-
c.value = `${
|
|
2670
|
+
set(e) {
|
|
2671
|
+
c.value = `${e}T15:59:59.999Z`;
|
|
2657
2672
|
}
|
|
2658
2673
|
}), v = _(() => {
|
|
2659
2674
|
if (!c.value) return null;
|
|
2660
|
-
const
|
|
2661
|
-
return isNaN(
|
|
2675
|
+
const e = new Date(c.value);
|
|
2676
|
+
return isNaN(e.getTime()) ? null : ye(e);
|
|
2662
2677
|
});
|
|
2663
|
-
return (
|
|
2664
|
-
const
|
|
2665
|
-
return I(), V("div",
|
|
2666
|
-
l("div",
|
|
2667
|
-
|
|
2678
|
+
return (e, a) => {
|
|
2679
|
+
const B = F("FmLabel"), L = F("FmField"), N = F("FmSimpleDatePicker"), H = F("FmButton"), X = F("FmRadio"), R = F("FmRadioGroup"), T = F("FmTable");
|
|
2680
|
+
return I(), V("div", $n, [
|
|
2681
|
+
l("div", eo, [
|
|
2682
|
+
h(B, { label: "Latest closing" })
|
|
2668
2683
|
]),
|
|
2669
|
-
|
|
2684
|
+
h(L, {
|
|
2670
2685
|
"prepend-icon": "lock_outline",
|
|
2671
2686
|
disabled: ""
|
|
2672
2687
|
}, {
|
|
@@ -2675,16 +2690,16 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2675
2690
|
]),
|
|
2676
2691
|
_: 1
|
|
2677
2692
|
}),
|
|
2678
|
-
S(y).state.closingDocumentId ? (I(), V("div",
|
|
2693
|
+
S(y).state.closingDocumentId ? (I(), V("div", fo, a[6] || (a[6] = [
|
|
2679
2694
|
l("span", { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, " Not able to import opening balance as closing document already exists. ", -1)
|
|
2680
|
-
]))) : (I(), V("div",
|
|
2681
|
-
|
|
2682
|
-
modelValue:
|
|
2683
|
-
"onUpdate:modelValue": a[0] || (a[0] = (Q) =>
|
|
2695
|
+
]))) : (I(), V("div", to, [
|
|
2696
|
+
h(N, {
|
|
2697
|
+
modelValue: A.value,
|
|
2698
|
+
"onUpdate:modelValue": a[0] || (a[0] = (Q) => A.value = Q),
|
|
2684
2699
|
label: "Last closing time"
|
|
2685
2700
|
}, {
|
|
2686
2701
|
"trigger-button": O(() => [
|
|
2687
|
-
|
|
2702
|
+
h(L, {
|
|
2688
2703
|
"prepend-icon": "calendar_today",
|
|
2689
2704
|
readonly: "",
|
|
2690
2705
|
label: "Last closing time"
|
|
@@ -2697,23 +2712,23 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2697
2712
|
]),
|
|
2698
2713
|
_: 1
|
|
2699
2714
|
}, 8, ["modelValue"]),
|
|
2700
|
-
l("div",
|
|
2701
|
-
|
|
2715
|
+
l("div", no, [
|
|
2716
|
+
h(B, { label: "Stock take file" })
|
|
2702
2717
|
]),
|
|
2703
|
-
|
|
2718
|
+
h(Fe, {
|
|
2704
2719
|
onFileUpload: a[1] || (a[1] = (Q) => {
|
|
2705
|
-
Q && (
|
|
2720
|
+
Q && (f.value = Q);
|
|
2706
2721
|
}),
|
|
2707
2722
|
accept: ".xlsx, .xls, .csv"
|
|
2708
2723
|
}, se({ _: 2 }, [
|
|
2709
|
-
|
|
2724
|
+
f.value ? {
|
|
2710
2725
|
name: "default",
|
|
2711
2726
|
fn: O(({ openFileDialog: Q }) => [
|
|
2712
|
-
l("div",
|
|
2713
|
-
l("div",
|
|
2714
|
-
l("div",
|
|
2715
|
-
l("div",
|
|
2716
|
-
|
|
2727
|
+
l("div", oo, [
|
|
2728
|
+
l("div", so, [
|
|
2729
|
+
l("div", ao, [
|
|
2730
|
+
l("div", lo, j(f.value.name), 1),
|
|
2731
|
+
h(H, {
|
|
2717
2732
|
label: S(w)("inventory.ingredient.import.replaceFile"),
|
|
2718
2733
|
variant: "secondary",
|
|
2719
2734
|
"prepend-icon": "autorenew",
|
|
@@ -2726,14 +2741,14 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2726
2741
|
key: "0"
|
|
2727
2742
|
} : void 0
|
|
2728
2743
|
]), 1024),
|
|
2729
|
-
|
|
2730
|
-
modelValue:
|
|
2731
|
-
"onUpdate:modelValue": a[2] || (a[2] = (Q) =>
|
|
2744
|
+
h(R, {
|
|
2745
|
+
modelValue: b.value,
|
|
2746
|
+
"onUpdate:modelValue": a[2] || (a[2] = (Q) => b.value = Q),
|
|
2732
2747
|
label: "Retrieve cost from",
|
|
2733
2748
|
class: "my-5"
|
|
2734
2749
|
}, {
|
|
2735
2750
|
default: O(() => [
|
|
2736
|
-
(I(!0), V(J, null, W(
|
|
2751
|
+
(I(!0), V(J, null, W(i.value, (Q) => (I(), U(X, {
|
|
2737
2752
|
key: Q.value,
|
|
2738
2753
|
value: Q.value,
|
|
2739
2754
|
label: Q.label,
|
|
@@ -2741,9 +2756,9 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2741
2756
|
disabled: Q.disabled
|
|
2742
2757
|
}, {
|
|
2743
2758
|
label: O(() => [
|
|
2744
|
-
l("div",
|
|
2745
|
-
l("span",
|
|
2746
|
-
l("span",
|
|
2759
|
+
l("div", io, [
|
|
2760
|
+
l("span", ro, j(Q.label), 1),
|
|
2761
|
+
l("span", uo, j(Q.disabled ? Q.disabledReason : Q.subLabel), 1)
|
|
2747
2762
|
])
|
|
2748
2763
|
]),
|
|
2749
2764
|
_: 2
|
|
@@ -2751,63 +2766,63 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2751
2766
|
]),
|
|
2752
2767
|
_: 1
|
|
2753
2768
|
}, 8, ["modelValue"]),
|
|
2754
|
-
l("div",
|
|
2755
|
-
|
|
2769
|
+
l("div", co, [
|
|
2770
|
+
h(H, {
|
|
2756
2771
|
class: "ml-auto mt-4",
|
|
2757
2772
|
variant: "secondary",
|
|
2758
2773
|
"prepend-icon": "troubleshoot",
|
|
2759
2774
|
label: "Verify",
|
|
2760
|
-
disabled: !
|
|
2775
|
+
disabled: !f.value && !g.value,
|
|
2761
2776
|
loading: g.value,
|
|
2762
2777
|
onClick: p
|
|
2763
2778
|
}, null, 8, ["disabled", "loading"])
|
|
2764
2779
|
]),
|
|
2765
|
-
|
|
2780
|
+
f.value && x.value.length > 0 ? (I(), V(J, { key: 0 }, [
|
|
2766
2781
|
a[4] || (a[4] = l("h2", { class: "fm-typo-en-title-md-800 mt-8 mb-4" }, "Results", -1)),
|
|
2767
|
-
|
|
2768
|
-
modelValue:
|
|
2769
|
-
"onUpdate:modelValue": a[3] || (a[3] = (Q) =>
|
|
2770
|
-
"row-data":
|
|
2771
|
-
"column-defs":
|
|
2782
|
+
h(T, {
|
|
2783
|
+
modelValue: m.value,
|
|
2784
|
+
"onUpdate:modelValue": a[3] || (a[3] = (Q) => m.value = Q),
|
|
2785
|
+
"row-data": x.value,
|
|
2786
|
+
"column-defs": E,
|
|
2772
2787
|
"shrink-at": !1,
|
|
2773
|
-
"search-value":
|
|
2788
|
+
"search-value": s.value
|
|
2774
2789
|
}, null, 8, ["modelValue", "row-data", "search-value"])
|
|
2775
2790
|
], 64)) : z("", !0),
|
|
2776
|
-
|
|
2791
|
+
u.value.length > 0 ? (I(), V(J, { key: 1 }, [
|
|
2777
2792
|
a[5] || (a[5] = l("h2", { class: "fm-typo-en-title-md-800 mt-8 mb-4 text-red-600" }, "Errors", -1)),
|
|
2778
|
-
|
|
2779
|
-
"row-data":
|
|
2793
|
+
h(T, {
|
|
2794
|
+
"row-data": u.value,
|
|
2780
2795
|
"column-defs": k
|
|
2781
2796
|
}, null, 8, ["row-data"])
|
|
2782
2797
|
], 64)) : z("", !0),
|
|
2783
|
-
l("div",
|
|
2784
|
-
|
|
2798
|
+
l("div", mo, [
|
|
2799
|
+
x.value.length > 0 && !S(y).state.closingDocumentId ? (I(), U(H, {
|
|
2785
2800
|
key: 0,
|
|
2786
2801
|
class: "ml-auto mt-4",
|
|
2787
2802
|
"prepend-icon": "file_upload",
|
|
2788
2803
|
variant: "primary",
|
|
2789
2804
|
label: "Import Opening Balance",
|
|
2790
|
-
disabled: !
|
|
2791
|
-
onClick:
|
|
2805
|
+
disabled: !f.value || g.value,
|
|
2806
|
+
onClick: d
|
|
2792
2807
|
}, null, 8, ["disabled"])) : z("", !0)
|
|
2793
2808
|
])
|
|
2794
2809
|
]))
|
|
2795
2810
|
]);
|
|
2796
2811
|
};
|
|
2797
2812
|
}
|
|
2798
|
-
}),
|
|
2813
|
+
}), vo = { class: "flex flex-col gap-8 w-full" }, go = { class: "flex gap-4 justify-between" }, yo = { class: "inline-flex rounded-md items-center gap-4 justify-center h-[30px] px-8 py-4 bg-fm-color-neutral-gray-100 text-fm-color-neutral-gray-400" }, Ao = { class: "fm-typo-en-body-md-600 select-none text-ellipsis overflow-hidden whitespace-nowrap" }, bo = { key: 0 }, ho = {
|
|
2799
2814
|
key: 1,
|
|
2800
2815
|
class: "flex flex-col gap-8 w-full"
|
|
2801
|
-
},
|
|
2816
|
+
}, xo = { key: 1 }, Io = { class: "flex gap-8 items-center justify-start" }, So = /* @__PURE__ */ Y({
|
|
2802
2817
|
__name: "XilnexSideSheet",
|
|
2803
2818
|
props: {
|
|
2804
2819
|
show: { type: Boolean },
|
|
2805
2820
|
loading: { type: Boolean }
|
|
2806
2821
|
},
|
|
2807
2822
|
emits: ["update:show"],
|
|
2808
|
-
setup(
|
|
2809
|
-
var
|
|
2810
|
-
const
|
|
2823
|
+
setup(C, { emit: y }) {
|
|
2824
|
+
var s;
|
|
2825
|
+
const o = oe(), n = le(C, "show"), { t } = Z(), i = y, b = $(), w = ((s = b._currentLocation) == null ? void 0 : s.type) || "", f = [
|
|
2811
2826
|
{ label: ue(
|
|
2812
2827
|
"openingBalance"
|
|
2813
2828
|
/* OPENING_BALANCE */
|
|
@@ -2816,13 +2831,13 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2816
2831
|
"transferNote"
|
|
2817
2832
|
/* TRANSFER_NOTE */
|
|
2818
2833
|
) }
|
|
2819
|
-
],
|
|
2820
|
-
return (
|
|
2821
|
-
var
|
|
2822
|
-
const
|
|
2834
|
+
], m = M(f[0]);
|
|
2835
|
+
return (u, x) => {
|
|
2836
|
+
var d;
|
|
2837
|
+
const E = F("FmIcon"), k = F("FmButtonGroup"), g = F("FmButton"), p = F("FmSideSheet");
|
|
2823
2838
|
return I(), U(p, {
|
|
2824
2839
|
modelValue: S(n),
|
|
2825
|
-
"onUpdate:modelValue":
|
|
2840
|
+
"onUpdate:modelValue": x[2] || (x[2] = (c) => ae(n) ? n.value = c : null),
|
|
2826
2841
|
header: "Data migration (Xilnex)",
|
|
2827
2842
|
"dismiss-away": "",
|
|
2828
2843
|
"close-button": "",
|
|
@@ -2831,49 +2846,49 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2831
2846
|
default: O(() => {
|
|
2832
2847
|
var c;
|
|
2833
2848
|
return [
|
|
2834
|
-
(c = S(
|
|
2835
|
-
|
|
2849
|
+
(c = S(o).sessionUser.value) != null && c.role.isAdmin ? (I(), V("div", ho, [
|
|
2850
|
+
m.value.label === S(ue)(
|
|
2836
2851
|
"openingBalance"
|
|
2837
2852
|
/* OPENING_BALANCE */
|
|
2838
|
-
) ? (I(), U(
|
|
2839
|
-
|
|
2853
|
+
) ? (I(), U(po, { key: 0 })) : z("", !0),
|
|
2854
|
+
m.value.label === S(ue)(
|
|
2840
2855
|
"transferNote"
|
|
2841
2856
|
/* TRANSFER_NOTE */
|
|
2842
|
-
) ? (I(), V("div",
|
|
2843
|
-
])) : (I(), V("div",
|
|
2857
|
+
) ? (I(), V("div", xo, " Not available yet. ")) : z("", !0)
|
|
2858
|
+
])) : (I(), V("div", bo, " Please contact your administrator to apply the changes. "))
|
|
2844
2859
|
];
|
|
2845
2860
|
}),
|
|
2846
2861
|
"side-sheet-footer": O(() => [
|
|
2847
|
-
l("div",
|
|
2848
|
-
|
|
2862
|
+
l("div", Io, [
|
|
2863
|
+
h(g, {
|
|
2849
2864
|
variant: "tertiary",
|
|
2850
|
-
label: S(
|
|
2851
|
-
onClick:
|
|
2865
|
+
label: S(t)("common.close"),
|
|
2866
|
+
onClick: x[1] || (x[1] = (c) => i("update:show", !1))
|
|
2852
2867
|
}, null, 8, ["label"])
|
|
2853
2868
|
])
|
|
2854
2869
|
]),
|
|
2855
2870
|
_: 2
|
|
2856
2871
|
}, [
|
|
2857
|
-
(
|
|
2872
|
+
(d = S(o).sessionUser.value) != null && d.role.isAdmin ? {
|
|
2858
2873
|
name: "side-sheet-header",
|
|
2859
2874
|
fn: O(() => {
|
|
2860
2875
|
var c;
|
|
2861
2876
|
return [
|
|
2862
|
-
l("div",
|
|
2863
|
-
l("div",
|
|
2864
|
-
|
|
2865
|
-
l("div",
|
|
2866
|
-
|
|
2877
|
+
l("div", vo, [
|
|
2878
|
+
l("div", go, [
|
|
2879
|
+
x[3] || (x[3] = l("div", { class: "fm-typo-en-title-md-600" }, "Data migration (Xilnex)", -1)),
|
|
2880
|
+
l("div", yo, [
|
|
2881
|
+
h(E, {
|
|
2867
2882
|
name: S(w),
|
|
2868
2883
|
size: "sm"
|
|
2869
2884
|
}, null, 8, ["name"]),
|
|
2870
|
-
l("div",
|
|
2885
|
+
l("div", Ao, j((c = S(b)._currentLocation) == null ? void 0 : c.name), 1)
|
|
2871
2886
|
])
|
|
2872
2887
|
]),
|
|
2873
|
-
|
|
2874
|
-
modelValue:
|
|
2875
|
-
"onUpdate:modelValue":
|
|
2876
|
-
items:
|
|
2888
|
+
h(k, {
|
|
2889
|
+
modelValue: m.value,
|
|
2890
|
+
"onUpdate:modelValue": x[0] || (x[0] = (A) => m.value = A),
|
|
2891
|
+
items: f
|
|
2877
2892
|
}, null, 8, ["modelValue"])
|
|
2878
2893
|
])
|
|
2879
2894
|
];
|
|
@@ -2883,17 +2898,17 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2883
2898
|
]), 1032, ["modelValue"]);
|
|
2884
2899
|
};
|
|
2885
2900
|
}
|
|
2886
|
-
}),
|
|
2901
|
+
}), wo = /* @__PURE__ */ Y({
|
|
2887
2902
|
__name: "XilnexView",
|
|
2888
|
-
setup(
|
|
2889
|
-
const y = Le(),
|
|
2903
|
+
setup(C) {
|
|
2904
|
+
const y = Le(), o = $(), r = M(!1);
|
|
2890
2905
|
async function n() {
|
|
2891
2906
|
r.value = !0, console.log("Opening Xilnex migration dialog");
|
|
2892
2907
|
}
|
|
2893
|
-
return (
|
|
2894
|
-
const
|
|
2895
|
-
return S(y).enabledXilnexOpeningMigration && !S(
|
|
2896
|
-
|
|
2908
|
+
return (t, i) => {
|
|
2909
|
+
const b = F("FmCardSection"), w = F("FmCard");
|
|
2910
|
+
return S(y).enabledXilnexOpeningMigration && !S(o).businessLevel ? (I(), V(J, { key: 0 }, [
|
|
2911
|
+
h(w, {
|
|
2897
2912
|
class: q({
|
|
2898
2913
|
"w-full": !0,
|
|
2899
2914
|
border: !0,
|
|
@@ -2901,11 +2916,11 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2901
2916
|
"cursor-pointer": !0,
|
|
2902
2917
|
"hover:border-fm-color-primary": !0
|
|
2903
2918
|
}),
|
|
2904
|
-
onClick:
|
|
2919
|
+
onClick: i[0] || (i[0] = (f) => n())
|
|
2905
2920
|
}, {
|
|
2906
2921
|
default: O(() => [
|
|
2907
|
-
|
|
2908
|
-
default: O(() =>
|
|
2922
|
+
h(b, null, {
|
|
2923
|
+
default: O(() => i[2] || (i[2] = [
|
|
2909
2924
|
l("div", { class: "flex justify-center" }, [
|
|
2910
2925
|
l("div", { class: "size-[100px] bg-gray-200 rounded-lg flex items-center justify-center" }, [
|
|
2911
2926
|
l("span", { class: "text-lg font-bold text-gray-600" }, "Xilnex")
|
|
@@ -2922,9 +2937,9 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2922
2937
|
_: 1
|
|
2923
2938
|
}),
|
|
2924
2939
|
(I(), U(ce, { to: "body" }, [
|
|
2925
|
-
|
|
2940
|
+
h(So, {
|
|
2926
2941
|
show: r.value,
|
|
2927
|
-
"onUpdate:show":
|
|
2942
|
+
"onUpdate:show": i[1] || (i[1] = (f) => r.value = f)
|
|
2928
2943
|
}, null, 8, ["show"])
|
|
2929
2944
|
]))
|
|
2930
2945
|
], 64)) : z("", !0);
|
|
@@ -2940,42 +2955,42 @@ const Wn = { class: "flex flex-col gap-4" }, $n = { class: "flex flex-col" }, eo
|
|
|
2940
2955
|
"quantity",
|
|
2941
2956
|
"total"
|
|
2942
2957
|
];
|
|
2943
|
-
async function
|
|
2958
|
+
async function ko(C, y, o) {
|
|
2944
2959
|
var w;
|
|
2945
|
-
const r = await
|
|
2946
|
-
for (let
|
|
2947
|
-
const
|
|
2948
|
-
if (
|
|
2960
|
+
const r = await Bo(o), n = [], t = {}, i = Object.keys(r)[0], b = r[i];
|
|
2961
|
+
for (let f = 0; f < b.length; f++) {
|
|
2962
|
+
const m = b[f], s = m.code, u = m.description, x = m.quantity, E = m.unitcost;
|
|
2963
|
+
if (s === "" || s === "undefined") {
|
|
2949
2964
|
n.push({
|
|
2950
|
-
row:
|
|
2951
|
-
itemCode:
|
|
2952
|
-
itemName:
|
|
2965
|
+
row: m.excelRow,
|
|
2966
|
+
itemCode: s,
|
|
2967
|
+
itemName: u,
|
|
2953
2968
|
message: "Item code is empty or undefined"
|
|
2954
2969
|
});
|
|
2955
2970
|
continue;
|
|
2956
2971
|
}
|
|
2957
|
-
const k = y.find((
|
|
2972
|
+
const k = y.find((A) => A.code === s);
|
|
2958
2973
|
if (!k) {
|
|
2959
2974
|
n.push({
|
|
2960
|
-
row:
|
|
2961
|
-
itemCode:
|
|
2962
|
-
itemName:
|
|
2963
|
-
qty:
|
|
2975
|
+
row: m.excelRow,
|
|
2976
|
+
itemCode: s,
|
|
2977
|
+
itemName: u,
|
|
2978
|
+
qty: x,
|
|
2964
2979
|
message: "Item not found in inventory"
|
|
2965
|
-
}), console.error(`${
|
|
2980
|
+
}), console.error(`${m.excelRow} Item not found: ${s} ${u} ${x}`);
|
|
2966
2981
|
continue;
|
|
2967
2982
|
}
|
|
2968
|
-
let g = Number(
|
|
2969
|
-
const p =
|
|
2970
|
-
p && (g = p * Number(
|
|
2971
|
-
const
|
|
2972
|
-
amount:
|
|
2983
|
+
let g = Number(m.total);
|
|
2984
|
+
const p = C[k._id];
|
|
2985
|
+
p && (g = p * Number(x));
|
|
2986
|
+
const d = G.fromNumber(Number(x)), c = {
|
|
2987
|
+
amount: d,
|
|
2973
2988
|
cost: {
|
|
2974
2989
|
...G.fromNumber(Number(g)),
|
|
2975
2990
|
currency: "MYR"
|
|
2976
2991
|
}
|
|
2977
2992
|
};
|
|
2978
|
-
|
|
2993
|
+
x != "0" && E == "0" && console.warn(`Item ${s} ${u} has 0 cost.`), t[w = k._id] ?? (t[w] = {
|
|
2979
2994
|
skuAdjustment: {
|
|
2980
2995
|
sku: k,
|
|
2981
2996
|
fromBalance: G.fromNumber(0),
|
|
@@ -2984,81 +2999,81 @@ async function wo(E, y, s) {
|
|
|
2984
2999
|
_id: null,
|
|
2985
3000
|
type: we.Enum.CLOSING,
|
|
2986
3001
|
remark: "Opening Balance",
|
|
2987
|
-
amount:
|
|
3002
|
+
amount: d,
|
|
2988
3003
|
measurement: null,
|
|
2989
3004
|
// always the smallest unit
|
|
2990
3005
|
cost: c.cost
|
|
2991
3006
|
}
|
|
2992
3007
|
],
|
|
2993
|
-
toBalance:
|
|
3008
|
+
toBalance: d,
|
|
2994
3009
|
toCostBalances: [c]
|
|
2995
3010
|
},
|
|
2996
3011
|
skuBalance: {
|
|
2997
3012
|
id: k._id,
|
|
2998
|
-
balance:
|
|
3013
|
+
balance: d,
|
|
2999
3014
|
costs: [c]
|
|
3000
3015
|
}
|
|
3001
3016
|
});
|
|
3002
3017
|
}
|
|
3003
3018
|
return {
|
|
3004
3019
|
errors: n,
|
|
3005
|
-
rows:
|
|
3020
|
+
rows: t
|
|
3006
3021
|
};
|
|
3007
3022
|
}
|
|
3008
|
-
async function
|
|
3009
|
-
const y = await new Promise((
|
|
3010
|
-
const
|
|
3011
|
-
|
|
3012
|
-
}),
|
|
3013
|
-
for (const
|
|
3014
|
-
const
|
|
3015
|
-
n[
|
|
3023
|
+
async function Bo(C) {
|
|
3024
|
+
const y = await new Promise((t, i) => {
|
|
3025
|
+
const b = new FileReader();
|
|
3026
|
+
b.onload = (w) => t(w.target.result), b.onerror = i, b.readAsArrayBuffer(C);
|
|
3027
|
+
}), o = ke(y, { type: "array" }), r = o.SheetNames, n = {};
|
|
3028
|
+
for (const t of r) {
|
|
3029
|
+
const i = await Co(o.Sheets[t]);
|
|
3030
|
+
n[t] = i;
|
|
3016
3031
|
}
|
|
3017
3032
|
return n;
|
|
3018
3033
|
}
|
|
3019
|
-
async function
|
|
3020
|
-
const y = Be.sheet_to_json(
|
|
3034
|
+
async function Co(C) {
|
|
3035
|
+
const y = Be.sheet_to_json(C, {
|
|
3021
3036
|
header: Ie,
|
|
3022
3037
|
range: 1
|
|
3023
|
-
}),
|
|
3038
|
+
}), o = [];
|
|
3024
3039
|
for (let r = 0; r < y.length; r++) {
|
|
3025
|
-
const n = y[r],
|
|
3026
|
-
for (const
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
...
|
|
3040
|
+
const n = y[r], t = {};
|
|
3041
|
+
for (const i of Ie)
|
|
3042
|
+
t[i] = String(n[i]).trim();
|
|
3043
|
+
o.push({
|
|
3044
|
+
...t,
|
|
3030
3045
|
excelRow: r + 2
|
|
3031
3046
|
// Excel rows start from 1, and we skip the first row
|
|
3032
3047
|
});
|
|
3033
3048
|
}
|
|
3034
|
-
return
|
|
3049
|
+
return o;
|
|
3035
3050
|
}
|
|
3036
|
-
const
|
|
3051
|
+
const Eo = { class: "flex flex-col gap-4" }, Fo = { class: "flex flex-col" }, Lo = {
|
|
3037
3052
|
key: 0,
|
|
3038
3053
|
class: "flex flex-col gap-4 my-5"
|
|
3039
|
-
},
|
|
3054
|
+
}, Vo = { class: "flex flex-col gap-8" }, No = { class: "flex flex-col gap-8" }, Do = {
|
|
3040
3055
|
class: /* @__PURE__ */ q(["fm-corner-radius-md p-16 flex items-center gap-16"])
|
|
3041
|
-
},
|
|
3056
|
+
}, Oo = {
|
|
3042
3057
|
class: /* @__PURE__ */ q(["fm-typo-en-body-md-400 flex-1 h-[36px] flex items-center gap-3"])
|
|
3043
|
-
},
|
|
3058
|
+
}, Mo = { class: "line-clamp-2 text-ellipsis break-all" }, Ro = { class: "flex flex-col" }, jo = { class: "font-medium" }, To = { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, _o = { class: "flex" }, zo = { class: "flex" }, Ho = { key: 1 }, Uo = /* @__PURE__ */ Y({
|
|
3044
3059
|
__name: "SynergyOpeningImport",
|
|
3045
|
-
setup(
|
|
3046
|
-
const y =
|
|
3060
|
+
setup(C) {
|
|
3061
|
+
const y = We(), o = be(), r = Ce(), n = ee(), t = _(() => [
|
|
3047
3062
|
{
|
|
3048
3063
|
value: "synergy",
|
|
3049
3064
|
label: "Synergy",
|
|
3050
3065
|
subLabel: "Based on Synergy's item cost from excel file"
|
|
3051
3066
|
}
|
|
3052
|
-
]),
|
|
3067
|
+
]), i = M(t.value[0].value), { t: b } = de(), w = M(null), f = M(), m = M(""), s = M([]), u = M([]), x = [
|
|
3053
3068
|
{
|
|
3054
3069
|
id: "ingredient",
|
|
3055
3070
|
header: () => "Ingredient",
|
|
3056
3071
|
cell(v) {
|
|
3057
|
-
const
|
|
3072
|
+
const e = v.row.original;
|
|
3058
3073
|
return D("div", { class: "flex flex-col" }, [
|
|
3059
|
-
D("span", { class: "font-medium" },
|
|
3074
|
+
D("span", { class: "font-medium" }, e.skuAdjustment.sku.name),
|
|
3060
3075
|
D("span", { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, [
|
|
3061
|
-
|
|
3076
|
+
e.skuAdjustment.sku.code
|
|
3062
3077
|
])
|
|
3063
3078
|
]);
|
|
3064
3079
|
}
|
|
@@ -3067,13 +3082,13 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3067
3082
|
id: "openingBalance",
|
|
3068
3083
|
header: () => "Opening Balance",
|
|
3069
3084
|
cell(v) {
|
|
3070
|
-
const
|
|
3085
|
+
const e = v.row.original;
|
|
3071
3086
|
return D("div", { class: "flex flex-col" }, [
|
|
3072
3087
|
D(
|
|
3073
3088
|
"span",
|
|
3074
3089
|
{ class: "font-medium" },
|
|
3075
3090
|
G.toFormatString({
|
|
3076
|
-
value:
|
|
3091
|
+
value: e.skuAdjustment.amounts[0].amount
|
|
3077
3092
|
})
|
|
3078
3093
|
)
|
|
3079
3094
|
]);
|
|
@@ -3083,18 +3098,18 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3083
3098
|
id: "unit",
|
|
3084
3099
|
header: () => "Unit",
|
|
3085
3100
|
cell(v) {
|
|
3086
|
-
const
|
|
3087
|
-
let
|
|
3101
|
+
const e = v.row.original, a = !e.skuAdjustment.amounts[0].measurement;
|
|
3102
|
+
let B = e.skuAdjustment.sku.unit.name;
|
|
3088
3103
|
if (!a) {
|
|
3089
|
-
const L =
|
|
3090
|
-
(N) => N.id ===
|
|
3104
|
+
const L = e.skuAdjustment.sku.unit.measurements.find(
|
|
3105
|
+
(N) => N.id === e.skuAdjustment.amounts[0].measurement.id
|
|
3091
3106
|
);
|
|
3092
|
-
|
|
3107
|
+
B = L ? L.name : "Error: Measurement not found";
|
|
3093
3108
|
}
|
|
3094
3109
|
return D("div", { class: "flex flex-col" }, [
|
|
3095
|
-
D("span", { class: "font-medium" },
|
|
3110
|
+
D("span", { class: "font-medium" }, B),
|
|
3096
3111
|
a ? null : D("span", { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, [
|
|
3097
|
-
`Base unit: ${
|
|
3112
|
+
`Base unit: ${e.skuAdjustment.sku.unit.name}`
|
|
3098
3113
|
])
|
|
3099
3114
|
]);
|
|
3100
3115
|
}
|
|
@@ -3103,7 +3118,7 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3103
3118
|
id: "totalCost",
|
|
3104
3119
|
header: () => "Total Cost",
|
|
3105
3120
|
cell(v) {
|
|
3106
|
-
const
|
|
3121
|
+
const e = v.row.original, { currency: a, ...B } = e.skuAdjustment.amounts[0].cost ?? {
|
|
3107
3122
|
amount: 0,
|
|
3108
3123
|
precision: 0,
|
|
3109
3124
|
currency: ""
|
|
@@ -3113,13 +3128,13 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3113
3128
|
"span",
|
|
3114
3129
|
{ class: "font-medium" },
|
|
3115
3130
|
G.toFormatString({
|
|
3116
|
-
value:
|
|
3131
|
+
value: B
|
|
3117
3132
|
})
|
|
3118
3133
|
)
|
|
3119
3134
|
]);
|
|
3120
3135
|
}
|
|
3121
3136
|
}
|
|
3122
|
-
],
|
|
3137
|
+
], E = [
|
|
3123
3138
|
{
|
|
3124
3139
|
accessorKey: "row",
|
|
3125
3140
|
header: "Row"
|
|
@@ -3146,12 +3161,12 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3146
3161
|
k.value = !0;
|
|
3147
3162
|
try {
|
|
3148
3163
|
let v = {};
|
|
3149
|
-
const { errors:
|
|
3164
|
+
const { errors: e, rows: a } = await ko(
|
|
3150
3165
|
v,
|
|
3151
|
-
|
|
3166
|
+
o.skus,
|
|
3152
3167
|
w.value
|
|
3153
3168
|
);
|
|
3154
|
-
|
|
3169
|
+
s.value = e, u.value = Object.values(a);
|
|
3155
3170
|
} catch {
|
|
3156
3171
|
n.open({
|
|
3157
3172
|
message: "Error verifying file",
|
|
@@ -3175,8 +3190,8 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3175
3190
|
}
|
|
3176
3191
|
await r.setOpeningBalance({
|
|
3177
3192
|
effectiveAt: c.value,
|
|
3178
|
-
skuAdjustments:
|
|
3179
|
-
skuBalances:
|
|
3193
|
+
skuAdjustments: u.value.map((v) => v.skuAdjustment),
|
|
3194
|
+
skuBalances: u.value.map((v) => v.skuBalance)
|
|
3180
3195
|
}), n.open({
|
|
3181
3196
|
message: "Opening balance imported successfully",
|
|
3182
3197
|
type: "success"
|
|
@@ -3191,25 +3206,25 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3191
3206
|
}
|
|
3192
3207
|
}
|
|
3193
3208
|
}
|
|
3194
|
-
const
|
|
3209
|
+
const d = M(""), c = _({
|
|
3195
3210
|
get() {
|
|
3196
|
-
return
|
|
3211
|
+
return d.value;
|
|
3197
3212
|
},
|
|
3198
3213
|
set(v) {
|
|
3199
|
-
|
|
3214
|
+
d.value = `${v}T15:59:59.999Z`;
|
|
3200
3215
|
}
|
|
3201
|
-
}),
|
|
3202
|
-
if (!
|
|
3203
|
-
const v = new Date(
|
|
3216
|
+
}), A = _(() => {
|
|
3217
|
+
if (!d.value) return null;
|
|
3218
|
+
const v = new Date(d.value);
|
|
3204
3219
|
return isNaN(v.getTime()) ? null : ye(v);
|
|
3205
3220
|
});
|
|
3206
|
-
return (v,
|
|
3207
|
-
const a = F("FmLabel"),
|
|
3208
|
-
return I(), V("div",
|
|
3209
|
-
l("div",
|
|
3210
|
-
|
|
3221
|
+
return (v, e) => {
|
|
3222
|
+
const a = F("FmLabel"), B = F("FmField"), L = F("FmSimpleDatePicker"), N = F("FmButton"), H = F("FmRadio"), X = F("FmRadioGroup"), R = F("FmTable");
|
|
3223
|
+
return I(), V("div", Eo, [
|
|
3224
|
+
l("div", Fo, [
|
|
3225
|
+
h(a, { label: "Latest closing" })
|
|
3211
3226
|
]),
|
|
3212
|
-
|
|
3227
|
+
h(B, {
|
|
3213
3228
|
"prepend-icon": "lock_outline",
|
|
3214
3229
|
disabled: ""
|
|
3215
3230
|
}, {
|
|
@@ -3218,33 +3233,33 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3218
3233
|
]),
|
|
3219
3234
|
_: 1
|
|
3220
3235
|
}),
|
|
3221
|
-
S(y).state.closingDocumentId ? (I(), V("div",
|
|
3236
|
+
S(y).state.closingDocumentId ? (I(), V("div", Ho, e[6] || (e[6] = [
|
|
3222
3237
|
l("span", { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, " Not able to import opening balance as closing document already exists. ", -1)
|
|
3223
|
-
]))) : (I(), V("div",
|
|
3224
|
-
|
|
3238
|
+
]))) : (I(), V("div", Lo, [
|
|
3239
|
+
h(L, {
|
|
3225
3240
|
modelValue: c.value,
|
|
3226
|
-
"onUpdate:modelValue":
|
|
3241
|
+
"onUpdate:modelValue": e[0] || (e[0] = (T) => c.value = T),
|
|
3227
3242
|
label: "Last closing time"
|
|
3228
3243
|
}, {
|
|
3229
3244
|
"trigger-button": O(() => [
|
|
3230
|
-
|
|
3245
|
+
h(B, {
|
|
3231
3246
|
"prepend-icon": "calendar_today",
|
|
3232
3247
|
readonly: "",
|
|
3233
3248
|
label: "Last closing time"
|
|
3234
3249
|
}, {
|
|
3235
3250
|
default: O(() => [
|
|
3236
|
-
P(j(
|
|
3251
|
+
P(j(A.value), 1)
|
|
3237
3252
|
]),
|
|
3238
3253
|
_: 1
|
|
3239
3254
|
})
|
|
3240
3255
|
]),
|
|
3241
3256
|
_: 1
|
|
3242
3257
|
}, 8, ["modelValue"]),
|
|
3243
|
-
l("div",
|
|
3244
|
-
|
|
3258
|
+
l("div", Vo, [
|
|
3259
|
+
h(a, { label: "Stock take file" })
|
|
3245
3260
|
]),
|
|
3246
|
-
|
|
3247
|
-
onFileUpload:
|
|
3261
|
+
h(Fe, {
|
|
3262
|
+
onFileUpload: e[1] || (e[1] = (T) => {
|
|
3248
3263
|
T && (w.value = T);
|
|
3249
3264
|
}),
|
|
3250
3265
|
accept: ".xlsx, .xls, .csv"
|
|
@@ -3252,12 +3267,12 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3252
3267
|
w.value ? {
|
|
3253
3268
|
name: "default",
|
|
3254
3269
|
fn: O(({ openFileDialog: T }) => [
|
|
3255
|
-
l("div",
|
|
3256
|
-
l("div",
|
|
3257
|
-
l("div",
|
|
3258
|
-
l("div",
|
|
3259
|
-
|
|
3260
|
-
label: S(
|
|
3270
|
+
l("div", No, [
|
|
3271
|
+
l("div", Do, [
|
|
3272
|
+
l("div", Oo, [
|
|
3273
|
+
l("div", Mo, j(w.value.name), 1),
|
|
3274
|
+
h(N, {
|
|
3275
|
+
label: S(b)("inventory.ingredient.import.replaceFile"),
|
|
3261
3276
|
variant: "secondary",
|
|
3262
3277
|
"prepend-icon": "autorenew",
|
|
3263
3278
|
onClick: T
|
|
@@ -3269,14 +3284,14 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3269
3284
|
key: "0"
|
|
3270
3285
|
} : void 0
|
|
3271
3286
|
]), 1024),
|
|
3272
|
-
|
|
3273
|
-
modelValue:
|
|
3274
|
-
"onUpdate:modelValue":
|
|
3287
|
+
h(X, {
|
|
3288
|
+
modelValue: i.value,
|
|
3289
|
+
"onUpdate:modelValue": e[2] || (e[2] = (T) => i.value = T),
|
|
3275
3290
|
label: "Retrieve cost from",
|
|
3276
3291
|
class: "my-5"
|
|
3277
3292
|
}, {
|
|
3278
3293
|
default: O(() => [
|
|
3279
|
-
(I(!0), V(J, null, W(
|
|
3294
|
+
(I(!0), V(J, null, W(t.value, (T) => (I(), U(H, {
|
|
3280
3295
|
key: T.value,
|
|
3281
3296
|
value: T.value,
|
|
3282
3297
|
label: T.label,
|
|
@@ -3284,9 +3299,9 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3284
3299
|
disabled: T.disabled
|
|
3285
3300
|
}, {
|
|
3286
3301
|
label: O(() => [
|
|
3287
|
-
l("div",
|
|
3288
|
-
l("span",
|
|
3289
|
-
l("span",
|
|
3302
|
+
l("div", Ro, [
|
|
3303
|
+
l("span", jo, j(T.label), 1),
|
|
3304
|
+
l("span", To, j(T.disabled ? T.disabledReason : T.subLabel), 1)
|
|
3290
3305
|
])
|
|
3291
3306
|
]),
|
|
3292
3307
|
_: 2
|
|
@@ -3294,8 +3309,8 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3294
3309
|
]),
|
|
3295
3310
|
_: 1
|
|
3296
3311
|
}, 8, ["modelValue"]),
|
|
3297
|
-
l("div",
|
|
3298
|
-
|
|
3312
|
+
l("div", _o, [
|
|
3313
|
+
h(N, {
|
|
3299
3314
|
class: "ml-auto mt-4",
|
|
3300
3315
|
variant: "secondary",
|
|
3301
3316
|
"prepend-icon": "troubleshoot",
|
|
@@ -3305,26 +3320,26 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3305
3320
|
onClick: g
|
|
3306
3321
|
}, null, 8, ["disabled", "loading"])
|
|
3307
3322
|
]),
|
|
3308
|
-
w.value &&
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
modelValue:
|
|
3312
|
-
"onUpdate:modelValue":
|
|
3313
|
-
"row-data":
|
|
3314
|
-
"column-defs":
|
|
3323
|
+
w.value && u.value.length > 0 ? (I(), V(J, { key: 0 }, [
|
|
3324
|
+
e[4] || (e[4] = l("h2", { class: "fm-typo-en-title-md-800 mt-8 mb-4" }, "Results", -1)),
|
|
3325
|
+
h(R, {
|
|
3326
|
+
modelValue: f.value,
|
|
3327
|
+
"onUpdate:modelValue": e[3] || (e[3] = (T) => f.value = T),
|
|
3328
|
+
"row-data": u.value,
|
|
3329
|
+
"column-defs": x,
|
|
3315
3330
|
"shrink-at": !1,
|
|
3316
|
-
"search-value":
|
|
3331
|
+
"search-value": m.value
|
|
3317
3332
|
}, null, 8, ["modelValue", "row-data", "search-value"])
|
|
3318
3333
|
], 64)) : z("", !0),
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
"row-data":
|
|
3323
|
-
"column-defs":
|
|
3334
|
+
s.value.length > 0 ? (I(), V(J, { key: 1 }, [
|
|
3335
|
+
e[5] || (e[5] = l("h2", { class: "fm-typo-en-title-md-800 mt-8 mb-4 text-red-600" }, "Errors", -1)),
|
|
3336
|
+
h(R, {
|
|
3337
|
+
"row-data": s.value,
|
|
3338
|
+
"column-defs": E
|
|
3324
3339
|
}, null, 8, ["row-data"])
|
|
3325
3340
|
], 64)) : z("", !0),
|
|
3326
|
-
l("div",
|
|
3327
|
-
|
|
3341
|
+
l("div", zo, [
|
|
3342
|
+
u.value.length > 0 && !S(y).state.closingDocumentId ? (I(), U(N, {
|
|
3328
3343
|
key: 0,
|
|
3329
3344
|
class: "ml-auto mt-4",
|
|
3330
3345
|
"prepend-icon": "file_upload",
|
|
@@ -3338,25 +3353,25 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3338
3353
|
]);
|
|
3339
3354
|
};
|
|
3340
3355
|
}
|
|
3341
|
-
}),
|
|
3356
|
+
}), Xo = { class: "flex flex-col gap-8 w-full" }, Qo = { class: "flex gap-4 justify-between" }, Yo = { class: "inline-flex rounded-md items-center gap-4 justify-center h-[30px] px-8 py-4 bg-fm-color-neutral-gray-100 text-fm-color-neutral-gray-400" }, Jo = { class: "fm-typo-en-body-md-600 select-none text-ellipsis overflow-hidden whitespace-nowrap" }, Ko = { key: 0 }, Po = {
|
|
3342
3357
|
key: 1,
|
|
3343
3358
|
class: "flex flex-col gap-8 w-full"
|
|
3344
|
-
},
|
|
3359
|
+
}, qo = { class: "flex gap-8 items-center justify-start" }, Zo = /* @__PURE__ */ Y({
|
|
3345
3360
|
__name: "SynergySideSheet",
|
|
3346
3361
|
props: {
|
|
3347
3362
|
show: { type: Boolean },
|
|
3348
3363
|
loading: { type: Boolean }
|
|
3349
3364
|
},
|
|
3350
3365
|
emits: ["update:show"],
|
|
3351
|
-
setup(
|
|
3352
|
-
var
|
|
3353
|
-
const
|
|
3354
|
-
return (
|
|
3366
|
+
setup(C, { emit: y }) {
|
|
3367
|
+
var f;
|
|
3368
|
+
const o = oe(), n = le(C, "show"), { t } = Z(), i = y, b = $(), w = ((f = b._currentLocation) == null ? void 0 : f.type) || "";
|
|
3369
|
+
return (m, s) => {
|
|
3355
3370
|
var k;
|
|
3356
|
-
const
|
|
3357
|
-
return I(), U(
|
|
3371
|
+
const u = F("FmIcon"), x = F("FmButton"), E = F("FmSideSheet");
|
|
3372
|
+
return I(), U(E, {
|
|
3358
3373
|
modelValue: S(n),
|
|
3359
|
-
"onUpdate:modelValue":
|
|
3374
|
+
"onUpdate:modelValue": s[1] || (s[1] = (g) => ae(n) ? n.value = g : null),
|
|
3360
3375
|
header: "Data migration (Synergy)",
|
|
3361
3376
|
"dismiss-away": "",
|
|
3362
3377
|
"close-button": "",
|
|
@@ -3365,36 +3380,36 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3365
3380
|
default: O(() => {
|
|
3366
3381
|
var g;
|
|
3367
3382
|
return [
|
|
3368
|
-
(g = S(
|
|
3369
|
-
|
|
3370
|
-
])) : (I(), V("div",
|
|
3383
|
+
(g = S(o).sessionUser.value) != null && g.role.isAdmin ? (I(), V("div", Po, [
|
|
3384
|
+
h(Uo)
|
|
3385
|
+
])) : (I(), V("div", Ko, " Please contact your administrator to apply the changes. "))
|
|
3371
3386
|
];
|
|
3372
3387
|
}),
|
|
3373
3388
|
"side-sheet-footer": O(() => [
|
|
3374
|
-
l("div",
|
|
3375
|
-
x
|
|
3389
|
+
l("div", qo, [
|
|
3390
|
+
h(x, {
|
|
3376
3391
|
variant: "tertiary",
|
|
3377
|
-
label: S(
|
|
3378
|
-
onClick:
|
|
3392
|
+
label: S(t)("common.close"),
|
|
3393
|
+
onClick: s[0] || (s[0] = (g) => i("update:show", !1))
|
|
3379
3394
|
}, null, 8, ["label"])
|
|
3380
3395
|
])
|
|
3381
3396
|
]),
|
|
3382
3397
|
_: 2
|
|
3383
3398
|
}, [
|
|
3384
|
-
(k = S(
|
|
3399
|
+
(k = S(o).sessionUser.value) != null && k.role.isAdmin ? {
|
|
3385
3400
|
name: "side-sheet-header",
|
|
3386
3401
|
fn: O(() => {
|
|
3387
3402
|
var g;
|
|
3388
3403
|
return [
|
|
3389
|
-
l("div",
|
|
3390
|
-
l("div",
|
|
3391
|
-
|
|
3392
|
-
l("div",
|
|
3393
|
-
|
|
3404
|
+
l("div", Xo, [
|
|
3405
|
+
l("div", Qo, [
|
|
3406
|
+
s[2] || (s[2] = l("div", { class: "fm-typo-en-title-md-600" }, "Data migration (Synergy)", -1)),
|
|
3407
|
+
l("div", Yo, [
|
|
3408
|
+
h(u, {
|
|
3394
3409
|
name: S(w),
|
|
3395
3410
|
size: "sm"
|
|
3396
3411
|
}, null, 8, ["name"]),
|
|
3397
|
-
l("div",
|
|
3412
|
+
l("div", Jo, j((g = S(b)._currentLocation) == null ? void 0 : g.name), 1)
|
|
3398
3413
|
])
|
|
3399
3414
|
])
|
|
3400
3415
|
])
|
|
@@ -3405,17 +3420,17 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3405
3420
|
]), 1032, ["modelValue"]);
|
|
3406
3421
|
};
|
|
3407
3422
|
}
|
|
3408
|
-
}),
|
|
3423
|
+
}), Go = /* @__PURE__ */ Y({
|
|
3409
3424
|
__name: "SynergyView",
|
|
3410
|
-
setup(
|
|
3411
|
-
const y = Le(),
|
|
3425
|
+
setup(C) {
|
|
3426
|
+
const y = Le(), o = $(), r = M(!1);
|
|
3412
3427
|
async function n() {
|
|
3413
3428
|
r.value = !0, console.log("Opening Synergy migration dialog");
|
|
3414
3429
|
}
|
|
3415
|
-
return (
|
|
3416
|
-
const
|
|
3417
|
-
return S(y).enabledSynergyOpeningMigration && !S(
|
|
3418
|
-
|
|
3430
|
+
return (t, i) => {
|
|
3431
|
+
const b = F("FmCardSection"), w = F("FmCard");
|
|
3432
|
+
return S(y).enabledSynergyOpeningMigration && !S(o).businessLevel ? (I(), V(J, { key: 0 }, [
|
|
3433
|
+
h(w, {
|
|
3419
3434
|
class: q({
|
|
3420
3435
|
"w-full": !0,
|
|
3421
3436
|
border: !0,
|
|
@@ -3423,11 +3438,11 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3423
3438
|
"cursor-pointer": !0,
|
|
3424
3439
|
"hover:border-fm-color-primary": !0
|
|
3425
3440
|
}),
|
|
3426
|
-
onClick:
|
|
3441
|
+
onClick: i[0] || (i[0] = (f) => n())
|
|
3427
3442
|
}, {
|
|
3428
3443
|
default: O(() => [
|
|
3429
|
-
|
|
3430
|
-
default: O(() =>
|
|
3444
|
+
h(b, null, {
|
|
3445
|
+
default: O(() => i[2] || (i[2] = [
|
|
3431
3446
|
l("div", { class: "flex justify-center" }, [
|
|
3432
3447
|
l("div", { class: "size-[100px] bg-gray-200 rounded-lg flex items-center justify-center" }, [
|
|
3433
3448
|
l("span", { class: "text-lg font-bold text-gray-600" }, "Synergy")
|
|
@@ -3444,71 +3459,71 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3444
3459
|
_: 1
|
|
3445
3460
|
}),
|
|
3446
3461
|
(I(), U(ce, { to: "body" }, [
|
|
3447
|
-
|
|
3462
|
+
h(Zo, {
|
|
3448
3463
|
show: r.value,
|
|
3449
|
-
"onUpdate:show":
|
|
3464
|
+
"onUpdate:show": i[1] || (i[1] = (f) => r.value = f)
|
|
3450
3465
|
}, null, 8, ["show"])
|
|
3451
3466
|
]))
|
|
3452
3467
|
], 64)) : z("", !0);
|
|
3453
3468
|
};
|
|
3454
3469
|
}
|
|
3455
|
-
}),
|
|
3470
|
+
}), Wo = { key: 0 }, $o = {
|
|
3456
3471
|
key: 1,
|
|
3457
3472
|
class: "flex flex-col items-center my-10 gap-5"
|
|
3458
|
-
},
|
|
3473
|
+
}, es = ["src"], ts = {
|
|
3459
3474
|
class: "text-xs text-neutral-400 text-center",
|
|
3460
3475
|
style: { "max-width": "25rem" }
|
|
3461
|
-
},
|
|
3476
|
+
}, ns = {
|
|
3462
3477
|
key: 2,
|
|
3463
3478
|
class: "grid grid-cols-2 gap-5"
|
|
3464
|
-
},
|
|
3479
|
+
}, ds = /* @__PURE__ */ Y({
|
|
3465
3480
|
__name: "IntegrationView",
|
|
3466
|
-
setup(
|
|
3467
|
-
const y = $(),
|
|
3481
|
+
setup(C) {
|
|
3482
|
+
const y = $(), o = M(!1), r = $e(), { breakpoints: n } = Ve(), t = _(() => n.value.xs || n.value.sm), { t: i } = Z();
|
|
3468
3483
|
return pe(async () => {
|
|
3469
3484
|
if (y._currentLocation) {
|
|
3470
|
-
|
|
3485
|
+
o.value = !0;
|
|
3471
3486
|
try {
|
|
3472
3487
|
await r.fetchFoodMarketHubSetting(), await r.fetchNetSuiteSetting();
|
|
3473
3488
|
} finally {
|
|
3474
|
-
|
|
3489
|
+
o.value = !1;
|
|
3475
3490
|
}
|
|
3476
3491
|
}
|
|
3477
|
-
}), (
|
|
3478
|
-
const
|
|
3479
|
-
return I(), U(
|
|
3480
|
-
title: S(
|
|
3492
|
+
}), (b, w) => {
|
|
3493
|
+
const f = F("FmCircularProgress");
|
|
3494
|
+
return I(), U(Ke, {
|
|
3495
|
+
title: S(i)("inventory.integration.title")
|
|
3481
3496
|
}, {
|
|
3482
3497
|
default: O(() => [
|
|
3483
3498
|
l("div", {
|
|
3484
3499
|
class: q([
|
|
3485
3500
|
"flex flex-col gap-8 max-h-full",
|
|
3486
3501
|
{
|
|
3487
|
-
"p-0":
|
|
3488
|
-
"px-24 ": !
|
|
3502
|
+
"p-0": t.value,
|
|
3503
|
+
"px-24 ": !t.value
|
|
3489
3504
|
}
|
|
3490
3505
|
])
|
|
3491
3506
|
}, [
|
|
3492
|
-
|
|
3507
|
+
h(Pe, {
|
|
3493
3508
|
"change-location": "",
|
|
3494
3509
|
showBusiness: ""
|
|
3495
3510
|
}),
|
|
3496
|
-
!S(y)._currentLocation ||
|
|
3497
|
-
|
|
3498
|
-
])) : S(r).enabledIntegrations == 0 ? (I(), V("div",
|
|
3511
|
+
!S(y)._currentLocation || o.value ? (I(), V("div", Wo, [
|
|
3512
|
+
h(f, { size: "lg" })
|
|
3513
|
+
])) : S(r).enabledIntegrations == 0 ? (I(), V("div", $o, [
|
|
3499
3514
|
l("div", null, [
|
|
3500
3515
|
l("img", {
|
|
3501
|
-
src: S(
|
|
3516
|
+
src: S(He),
|
|
3502
3517
|
alt: "List is empty"
|
|
3503
|
-
}, null, 8,
|
|
3518
|
+
}, null, 8, es)
|
|
3504
3519
|
]),
|
|
3505
3520
|
w[0] || (w[0] = l("div", { class: "font-bold text-lg" }, "Integration", -1)),
|
|
3506
|
-
l("div",
|
|
3507
|
-
])) : (I(), V("div",
|
|
3508
|
-
|
|
3509
|
-
|
|
3510
|
-
|
|
3511
|
-
|
|
3521
|
+
l("div", ts, j(S(i)("inventory.integration.description")), 1)
|
|
3522
|
+
])) : (I(), V("div", ns, [
|
|
3523
|
+
h(qn),
|
|
3524
|
+
h(Pt),
|
|
3525
|
+
h(wo),
|
|
3526
|
+
h(Go)
|
|
3512
3527
|
]))
|
|
3513
3528
|
], 2)
|
|
3514
3529
|
]),
|
|
@@ -3518,5 +3533,5 @@ const Co = { class: "flex flex-col gap-4" }, Eo = { class: "flex flex-col" }, Fo
|
|
|
3518
3533
|
}
|
|
3519
3534
|
});
|
|
3520
3535
|
export {
|
|
3521
|
-
|
|
3536
|
+
ds as default
|
|
3522
3537
|
};
|