@feedmepos/mf-inventory-portal 1.8.0-dev.4 → 1.8.0-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/{App-FeJnwZme.js → App-DEbWEOwe.js} +609 -558
  2. package/dist/{ApprovalView-Eo-cGWyA.js → ApprovalView-BEnYHIlU.js} +9 -9
  3. package/dist/{BindingsDialog-DkjuXydb.js → BindingsDialog-CJVkMoBS.js} +2 -2
  4. package/dist/{BindingsPicker-DUOQcOlj.js → BindingsPicker-CX9o-xdQ.js} +2 -2
  5. package/dist/{BindingsTable-CoDdU5xh.js → BindingsTable-Cil4LJ7l.js} +4 -4
  6. package/dist/{BulkReceiveRequestView-BGh8fbEX.js → BulkReceiveRequestView-DYEc2jPw.js} +19 -19
  7. package/dist/{ChangeLocationComponent.vue_vue_type_script_setup_true_lang-CStISRqy.js → ChangeLocationComponent.vue_vue_type_script_setup_true_lang-DoAv2mHA.js} +1 -1
  8. package/dist/{ClosingDraftView-Cwnhrv5P.js → ClosingDraftView-Bz94Iejf.js} +20 -20
  9. package/dist/{ClosingHistoryView-oHf77Lal.js → ClosingHistoryView-B479Y-mH.js} +5 -5
  10. package/dist/{ClosingTemplateView-1P8J1vAn.js → ClosingTemplateView-F_nx43n6.js} +18 -18
  11. package/dist/{CustomPrintTemplatePreview.vue_vue_type_script_setup_true_lang-BuEPaqQK.js → CustomPrintTemplatePreview.vue_vue_type_script_setup_true_lang-DddYGHxQ.js} +1 -1
  12. package/dist/{DefaultView-3Z8aVFSU.js → DefaultView-CkZOl0ov.js} +2 -2
  13. package/dist/{DeliveryOrderPrintPreview-uT_e3Suw.js → DeliveryOrderPrintPreview-BJEpwAX6.js} +2 -2
  14. package/dist/{EmailDialog.vue_vue_type_script_setup_true_lang-BCgnXxEi.js → EmailDialog.vue_vue_type_script_setup_true_lang-BW988AoC.js} +23 -23
  15. package/dist/FeatureCapabilityBadge.vue_vue_type_script_setup_true_lang-Izn-hTjK.js +297 -0
  16. package/dist/{FmDateRangePickerChip.vue_vue_type_script_setup_true_lang-BlKpGdCx.js → FmDateRangePickerChip.vue_vue_type_script_setup_true_lang-CoUWxHlj.js} +1 -1
  17. package/dist/{FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-DKkxn1J-.js → FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-Ci81xTbl.js} +2 -2
  18. package/dist/{FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-dOXDST-E.js → FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-CnaHTAUZ.js} +2 -2
  19. package/dist/{FmMultiselectDialog-DRxZAkcu.js → FmMultiselectDialog-BE8BlO6_.js} +2 -2
  20. package/dist/FmMultiselectDialog-COKgBmPZ.js +123 -0
  21. package/dist/{FmUnitInput.vue_vue_type_script_setup_true_lang-DRSzQqVJ.js → FmUnitInput.vue_vue_type_script_setup_true_lang-BQHd3NjM.js} +6 -6
  22. package/dist/ImportView-Crb_yrNb.js +1291 -0
  23. package/dist/{IngredientsView-N9U7tdI_.js → IngredientsView-lDypeR4c.js} +34 -35
  24. package/dist/{IntegrationExplorerView-CjmeGQ14.js → IntegrationExplorerView-DgOFGj7H.js} +4 -4
  25. package/dist/{IntegrationView-DAdpmuxx.js → IntegrationView-0sbjINo5.js} +973 -974
  26. package/dist/{InventoryBindingForm-CAj3MurI.js → InventoryBindingForm-BhyrjIXJ.js} +1 -1
  27. package/dist/InventoryBindingForm.vue_vue_type_script_setup_true_lang-KCz_BQ6T.js +472 -0
  28. package/dist/{InventoryBindingSummary-B-1OBUdw.js → InventoryBindingSummary-CsfNKd1r.js} +1 -1
  29. package/dist/{NumberPrecisionInput.vue_vue_type_script_setup_true_lang-CUYYEuW3.js → NumberPrecisionInput.vue_vue_type_script_setup_true_lang-C32OoIBz.js} +1 -1
  30. package/dist/{ProductionRunDetailView-eFvl8-By.js → ProductionRunDetailView-BxbDtGMo.js} +4 -4
  31. package/dist/{ProductionRunLifecycleDialogs.vue_vue_type_script_setup_true_lang-DaC7e4qS.js → ProductionRunLifecycleDialogs.vue_vue_type_script_setup_true_lang-BdJVvwSP.js} +9 -9
  32. package/dist/{ProductionRunView-C_NJJKLr.js → ProductionRunView-CJhNEIzT.js} +3 -3
  33. package/dist/{PublishView-BglAEkzU.js → PublishView-vkt6-D6P.js} +3 -3
  34. package/dist/{PurchaseOrderPrintPreview-BTF9ikpQ.js → PurchaseOrderPrintPreview-25dHfVKp.js} +2 -2
  35. package/dist/{ReceiveRequestView-BUvehG10.js → ReceiveRequestView-BO4Z2dZu.js} +13 -13
  36. package/dist/RecipeView-B_AE7QQv.js +3428 -0
  37. package/dist/{SettingsView-DRR86cHo.js → SettingsView-qTUvQCuu.js} +164 -168
  38. package/dist/{StockView-D1oEnbZp.js → StockView-yh6qkYUS.js} +267 -267
  39. package/dist/{SubsidiaryTreeDialog.vue_vue_type_script_setup_true_lang-CxU92-io.js → SubsidiaryTreeDialog.vue_vue_type_script_setup_true_lang-Cn_fx9qG.js} +1 -1
  40. package/dist/{SupplierView-D68wz0-g.js → SupplierView-Dqzu1Bvh.js} +14 -14
  41. package/dist/{SurchargeView-Cw9rTw2h.js → SurchargeView-CDosn36c.js} +7 -7
  42. package/dist/{SystemTrailDialog.vue_vue_type_script_setup_true_lang-Az-a1Dsp.js → SystemTrailDialog.vue_vue_type_script_setup_true_lang-DZ3Gdlp9.js} +2 -2
  43. package/dist/{TemplatePublishDialog.vue_vue_type_script_setup_true_lang-C-sxbacO.js → TemplatePublishDialog.vue_vue_type_script_setup_true_lang-CWoh2FqQ.js} +1 -1
  44. package/dist/{TransferDetails.vue_vue_type_script_setup_true_lang-CsHfLaCv.js → TransferDetails.vue_vue_type_script_setup_true_lang-BtjKnIwf.js} +690 -666
  45. package/dist/{TransferTemplateView-CHPJMjYC.js → TransferTemplateView-fDZcC9i4.js} +20 -20
  46. package/dist/{UnitCostHistoryView-DM8OzWhe.js → UnitCostHistoryView-CmTTIXAp.js} +4 -4
  47. package/dist/{UnitDisplayControl.vue_vue_type_script_setup_true_lang-DpwK5mFH.js → UnitDisplayControl.vue_vue_type_script_setup_true_lang-DZihCM0T.js} +4 -4
  48. package/dist/{UnitView-90uR-ZzQ.js → UnitView-BTx59sFK.js} +8 -8
  49. package/dist/{WarehouseView-Bulg6Vac.js → WarehouseView-BIFe08FJ.js} +8 -8
  50. package/dist/{WastageTemplateView-BmAHnnwm.js → WastageTemplateView-B_oJqm0_.js} +15 -15
  51. package/dist/api/feature-flags.d.ts +2 -0
  52. package/dist/api/license.d.ts +0 -2
  53. package/dist/{app-Ccdgbe4f.js → app-DyEvx3Em.js} +1628 -1817
  54. package/dist/app.d.ts +0 -150
  55. package/dist/app.js +1 -1
  56. package/dist/{closing-template-DuBZxoXx.js → closing-template-FgcLy4RT.js} +1 -1
  57. package/dist/{date2-IBrLdtni.js → date2-Rv4IwT9a.js} +1 -1
  58. package/dist/{dayjs.min-DEkq-Hpp.js → dayjs.min-DOq1QM_M.js} +1 -1
  59. package/dist/{decimal-g6jRdlSk.js → decimal-7vA05AaD.js} +2 -2
  60. package/dist/{defineDeepModel-P5a5Ffpn.js → defineDeepModel-22Md2SKY.js} +1 -1
  61. package/dist/{duplicate-template-Do8s80ei.js → duplicate-template-D2tjCY7C.js} +1 -1
  62. package/dist/{feature-ChVm5JED.js → feature-BMTKl6PK.js} +1999 -3092
  63. package/dist/feature-flags/portal-feature-catalog.d.ts +0 -2
  64. package/dist/{format-time-from-id-BgbBOII7.js → format-time-from-id-DXhm_Ji1.js} +1 -1
  65. package/dist/{format-unit-display-hSXy2iu6.js → format-unit-display-DxWLjFPz.js} +13 -13
  66. package/dist/helper/menu-usage-module.d.ts +1 -1
  67. package/dist/{id-to-date-DlGYysU8.js → id-to-date-VKlOL3mN.js} +1 -1
  68. package/dist/{import-export.helper-LrZhiz2W.js → import-export.helper-BiF5aKUp.js} +6 -6
  69. package/dist/{index-BTNJ1fk2.js → index-DEl_gZn0.js} +3 -3
  70. package/dist/{index-DsOmtywr.js → index-DdtsVAcv.js} +1 -1
  71. package/dist/{index-DCiNwlw2.js → index-DoBWE4Ci.js} +1 -1
  72. package/dist/{lz-string-DRuyjE9G.js → lz-string-BwQj8QRN.js} +1 -1
  73. package/dist/{netsuite-B6y8GZCP.js → netsuite-s1S33-lP.js} +2 -2
  74. package/dist/{number-Besn-1-5.js → number-BmKjsNrc.js} +3 -3
  75. package/dist/{predefined-templates-D92mN_2S.js → predefined-templates-BZ2KqNix.js} +1 -1
  76. package/dist/{purchase-order-template-hvq2pfWx.js → purchase-order-template-CINU4my1.js} +1 -1
  77. package/dist/{recalculationUtils-BlZR5O2G.js → recalculationUtils-R5tFu_ts.js} +1 -1
  78. package/dist/router/name.d.ts +0 -1
  79. package/dist/{row-action.enum-R2bi3eAv.js → row-action.enum-ePO-Py0V.js} +1 -1
  80. package/dist/{rules-DzwoRKUS.js → rules-BZrZVzw7.js} +2 -2
  81. package/dist/{stock-Cq37EARQ.js → stock-C2HOKq0k.js} +8 -8
  82. package/dist/{stock-oJqnUrtt.js → stock-Ce1UvAZ3.js} +1 -1
  83. package/dist/stores/feature.d.ts +9 -9
  84. package/dist/stores/inventory.d.ts +0 -47
  85. package/dist/stores/supplier.d.ts +1 -1
  86. package/dist/style.css +1 -1
  87. package/dist/{supplier-DtdwvcPr.js → supplier-DgT66emI.js} +2 -2
  88. package/dist/{surcharge-CjdJGIsM.js → surcharge-CsVMuzPM.js} +1 -1
  89. package/dist/tsconfig.app.tsbuildinfo +1 -1
  90. package/dist/{uom-rules-BqPn_GoZ.js → uom-rules-CR1XukyM.js} +1 -1
  91. package/dist/{use-ingredient-select-dialog-0hRCj6Fu.js → use-ingredient-select-dialog-CJkG4hEX.js} +2 -2
  92. package/dist/use-inventory-binding-dialog-B36kPj4V.js +113 -0
  93. package/dist/{use-template-enabled-locations-8ZfTj4YB.js → use-template-enabled-locations-Boa9QLPV.js} +2 -2
  94. package/dist/{use-transfer-locations-BGS1EBEt.js → use-transfer-locations-BxOygSUg.js} +2 -2
  95. package/dist/{useHrmPermission-BcQ2KPD-.js → useHrmPermission-DLHAqbLV.js} +1 -1
  96. package/dist/{useNavigationMenu-DImtns81.js → useNavigationMenu-D6abZMGz.js} +65 -74
  97. package/dist/{useSseClient-DPSFFVci.js → useSseClient-C7pff-EW.js} +1 -1
  98. package/dist/views/ingredients/components/inventory-binding/InventoryBindingForm.vue.d.ts +0 -1
  99. package/dist/views/ingredients/components/inventory-binding/composables/use-inventory-binding-dialog.d.ts +0 -1
  100. package/dist/views/ingredients/components/inventory-binding/v2/InventoryBindingFormV2.vue.d.ts +0 -1
  101. package/dist/views/ingredients/components/inventory-binding/v2/composables/use-inventory-binding-dialog.d.ts +0 -1
  102. package/dist/views/ingredients/helper/is-linked-ingredient-error.d.ts +1 -1
  103. package/dist/views/integration/components/IntegrationCard.vue.d.ts +3 -3
  104. package/dist/views/recipe/helper/bulk-edit-simulation.helper.d.ts +0 -1
  105. package/dist/views/recipe/helper/import-recipe.d.ts +2 -2
  106. package/dist/{vue-i18n-DTyGIjTI.js → vue-i18n-CpOOFhVU.js} +219 -219
  107. package/dist/{xlsx.util-CK9Lnq3Q.js → xlsx.util-xwI5tVz6.js} +2 -2
  108. package/package.json +4 -4
  109. package/dist/DeprecateSoonWarningDialog.vue_vue_type_script_setup_true_lang-D_vmtZDZ.js +0 -58
  110. package/dist/FeatureCapabilityBadge.vue_vue_type_script_setup_true_lang-D-RzUmqA.js +0 -81
  111. package/dist/FmMultiselectDialog-C8uYx8rr.js +0 -77
  112. package/dist/ImportView-Qigtf3ik.js +0 -1302
  113. package/dist/IngredientBindedItem.vue_vue_type_script_setup_true_lang-B8PJeYrP.js +0 -51
  114. package/dist/IngredientGroupView-RNYZLkQu.js +0 -1000
  115. package/dist/InventoryBindingForm.vue_vue_type_script_setup_true_lang-3pYuu62C.js +0 -563
  116. package/dist/RecipeView-DO5-jgwh.js +0 -3624
  117. package/dist/feature-flags/premium-flags.spec.d.ts +0 -1
  118. package/dist/random-CSbEbElR.js +0 -10
  119. package/dist/use-inventory-binding-dialog-BLRcIC1u.js +0 -152
  120. package/dist/usePromise-CbVUCxhj.js +0 -29
  121. package/dist/views/ingredient-group/IngredientGroupView.vue.d.ts +0 -3
  122. package/dist/views/ingredient-group/components/ingredient-group-dialog/IngredientGroupDialog.vue.d.ts +0 -31
  123. package/dist/views/ingredient-group/components/ingredient-group-dialog/IngredientGroupDialogProps.d.ts +0 -10
  124. package/dist/views/ingredient-group/components/ingredient-group-form/IngredientGroupForm.vue.d.ts +0 -21
  125. package/dist/views/ingredient-group/components/ingredient-group-form/IngredientGroupFormProps.d.ts +0 -12
  126. package/dist/views/ingredient-group/components/ingredient-group-rule-field/IngredientGroupRuleField.vue.d.ts +0 -37
  127. package/dist/views/ingredient-group/composables/use-ingredient-group-actions.d.ts +0 -24
  128. package/dist/views/ingredient-group/composables/use-ingredient-group-rule-item.d.ts +0 -31
  129. package/dist/views/ingredient-group/composables/use-ingredient-group-table.d.ts +0 -77
@@ -1,5 +1,5 @@
1
1
  import { computed as o } from "vue";
2
- import { u } from "./netsuite-B6y8GZCP.js";
2
+ import { u } from "./netsuite-s1S33-lP.js";
3
3
  function i(e) {
4
4
  const t = (n) => !!n && n.toLocaleLowerCase().includes("inactive");
5
5
  return t(e.name) || t(e.abbrev);
@@ -1,6 +1,6 @@
1
1
  import { defineStore as S } from "pinia";
2
- import { a as b } from "./app-Ccdgbe4f.js";
3
- import { a as A } from "./FmMultiselectDialog-DRxZAkcu.js";
2
+ import { a as b } from "./app-DyEvx3Em.js";
3
+ import { a as A } from "./FmMultiselectDialog-BE8BlO6_.js";
4
4
  import { useDialog as I } from "@feedmepos/ui-library";
5
5
  import { useI18n as D } from "@feedmepos/mf-common";
6
6
  const w = S(
@@ -0,0 +1,113 @@
1
+ import { a as y } from "./FmMultiselectDialog-BE8BlO6_.js";
2
+ import { a as S } from "./app-DyEvx3Em.js";
3
+ import { useDialog as E } from "@feedmepos/ui-library";
4
+ function w() {
5
+ const c = S(), g = E();
6
+ async function _(s, p, d, f = []) {
7
+ var n, a;
8
+ const b = s.filter((i) => i.type === "SKU"), l = s.filter((i) => i.type !== "SKU"), r = /* @__PURE__ */ new Set();
9
+ if (d)
10
+ for (const i of c.skus)
11
+ !f.some((o) => o === i._id) && i._id !== d && !((a = (n = i.convert) == null ? void 0 : n.inventoryBindings) != null && a.some((o) => o.id === d)) || r.add(i._id);
12
+ const m = c.skus.map((i) => ({
13
+ label: i.name,
14
+ sublabel: `${i.code}${r.has(i._id) ? " (Cannot bind, will cause recursive binding)" : ""}`,
15
+ value: i,
16
+ disabled: r.has(i._id)
17
+ })), u = m.filter(
18
+ (i) => b.find((t) => t.id === i.value._id) && !r.has(i.value._id)
19
+ ).map((i) => i.value);
20
+ g.open({
21
+ title: "Select ingredients",
22
+ contentComponent: y,
23
+ contentComponentProps: {
24
+ items: m,
25
+ modelValue: u,
26
+ virtualScroll: !0
27
+ },
28
+ primaryActions: {
29
+ text: "Confirm",
30
+ close: !0
31
+ },
32
+ secondaryActions: {
33
+ text: "Close",
34
+ close: !0,
35
+ variant: "tertiary"
36
+ }
37
+ }).onPrimary((i) => {
38
+ const t = [
39
+ ...l,
40
+ ...s.filter((o) => i.find((e) => e._id === o.id)),
41
+ ...i.filter((o) => !s.find((e) => e.id === o._id)).map((o) => ({
42
+ type: "SKU",
43
+ id: o._id,
44
+ amount: {
45
+ amount: 1,
46
+ precision: 0
47
+ }
48
+ }))
49
+ ];
50
+ p(t);
51
+ });
52
+ }
53
+ async function v(s, p, d = []) {
54
+ var u;
55
+ const f = s.filter((n) => n.type === "RECIPE"), b = s.filter((n) => n.type !== "RECIPE"), l = /* @__PURE__ */ new Set();
56
+ if (d.length)
57
+ for (const n of c.recipes) {
58
+ const a = ((u = c.recipeBindingFlattenCache[n._id]) == null ? void 0 : u.inventoryBindings) ?? [], i = a.some(
59
+ (e) => e.bindingPaths.some((C) => d.some((h) => h === C.id))
60
+ ), t = a.some(
61
+ (e) => "success" in e && d.includes(e.ingredient._id)
62
+ );
63
+ (d.some((e) => e === n._id) || i || t) && l.add(n._id);
64
+ }
65
+ const r = c.recipes.filter((n) => !d.includes(n._id)).map((n) => ({
66
+ label: n.name,
67
+ sublabel: l.has(n._id) ? "(Cannot bind, will cause recursive binding)" : `${n.contains.length} inventory bindings`,
68
+ value: n,
69
+ disabled: l.has(n._id)
70
+ })), m = r.filter(
71
+ (n) => f.find((a) => a.id === n.value._id) && !l.has(n.value._id)
72
+ ).map((n) => n.value);
73
+ g.open({
74
+ title: "Select recipes",
75
+ contentComponent: y,
76
+ contentComponentProps: {
77
+ items: r,
78
+ modelValue: m,
79
+ virtualScroll: !0
80
+ },
81
+ primaryActions: {
82
+ text: "Confirm",
83
+ close: !0
84
+ },
85
+ secondaryActions: {
86
+ text: "Close",
87
+ close: !0,
88
+ variant: "tertiary"
89
+ }
90
+ }).onPrimary((n) => {
91
+ const a = [
92
+ ...s.filter((i) => n.find((t) => t._id === i.id)),
93
+ ...n.filter((i) => !s.find((t) => t.id === i._id)).map((i) => ({
94
+ type: "RECIPE",
95
+ id: i._id,
96
+ amount: {
97
+ amount: 1,
98
+ precision: 0
99
+ }
100
+ })),
101
+ ...b
102
+ ];
103
+ p(a);
104
+ });
105
+ }
106
+ return {
107
+ promptIngredientsBinding: _,
108
+ promptRecipesBinding: v
109
+ };
110
+ }
111
+ export {
112
+ w as u
113
+ };
@@ -1,5 +1,5 @@
1
- import { a as A } from "./FmMultiselectDialog-DRxZAkcu.js";
2
- import { u as S } from "./app-Ccdgbe4f.js";
1
+ import { a as A } from "./FmMultiselectDialog-BE8BlO6_.js";
2
+ import { u as S } from "./app-DyEvx3Em.js";
3
3
  import { useI18n as w, useCoreStore as i, useCustomAttributes as _ } from "@feedmepos/mf-common";
4
4
  import { useDialog as C, components as p } from "@feedmepos/ui-library";
5
5
  import { computed as r, h as c } from "vue";
@@ -1,5 +1,5 @@
1
- import { u as g, r as l, $ as w, a2 as R } from "./app-Ccdgbe4f.js";
2
- import { u as E } from "./supplier-DtdwvcPr.js";
1
+ import { u as g, r as l, $ as w, a2 as R } from "./app-DyEvx3Em.js";
2
+ import { u as E } from "./supplier-DgT66emI.js";
3
3
  import { computed as u } from "vue";
4
4
  function d(n) {
5
5
  const c = R.safeParse(n);
@@ -1,5 +1,5 @@
1
1
  import { computed as p, toValue as o } from "vue";
2
- import { ab as n } from "./app-Ccdgbe4f.js";
2
+ import { ab as n } from "./app-DyEvx3Em.js";
3
3
  import { useCoreStore as c } from "@feedmepos/mf-common";
4
4
  function g(t, i = "all") {
5
5
  const m = c();
@@ -1,9 +1,9 @@
1
- import { computed as E, h as P } from "vue";
2
- import { R as e, ac as C, ad as f, ab as O } from "./app-Ccdgbe4f.js";
3
- import { useCoreStore as b, useI18n as _ } from "@feedmepos/mf-common";
4
- import { f as U, g as S, h as A, u as L } from "./feature-ChVm5JED.js";
5
- import { a as G } from "./FeatureCapabilityBadge.vue_vue_type_script_setup_true_lang-D-RzUmqA.js";
6
- const p = [
1
+ import { computed as R, h as C } from "vue";
2
+ import { R as e, ac as P, ad as O, ab as A } from "./app-DyEvx3Em.js";
3
+ import { useCoreStore as U, useI18n as b } from "@feedmepos/mf-common";
4
+ import { I as E, u as L } from "./feature-BMTKl6PK.js";
5
+ import { e as y, g as v, d as G, a as H } from "./FeatureCapabilityBadge.vue_vue_type_script_setup_true_lang-Izn-hTjK.js";
6
+ const _ = [
7
7
  {
8
8
  route: e.STOCK,
9
9
  module: "Stock",
@@ -57,13 +57,6 @@ const p = [
57
57
  tier: "standard",
58
58
  description: "Manage ingredients and SKUs."
59
59
  },
60
- {
61
- route: e.INGREDIENT_GROUP,
62
- module: "Catalogue",
63
- tier: "standard",
64
- description: "Organize ingredients into reusable groups.",
65
- featureKey: "ingredient-group"
66
- },
67
60
  {
68
61
  route: e.RECIPE,
69
62
  module: "Catalogue",
@@ -146,65 +139,68 @@ const p = [
146
139
  tier: "standard",
147
140
  description: "Inspect and manage integration records and synchronization."
148
141
  }
149
- ], y = Object.fromEntries(
150
- p.map((s) => {
142
+ ], K = Object.fromEntries(
143
+ _.map((o) => {
151
144
  var u;
152
- const r = S(s.featureKey ?? "");
145
+ const s = v(o.featureKey ?? "");
153
146
  return [
154
- s.route,
155
- A({
156
- key: s.route,
157
- minimumTier: s.tier,
158
- release: s.release ?? ((u = r == null ? void 0 : r.definition) == null ? void 0 : u.release),
159
- flagKeys: r == null ? void 0 : r.flagKeys
147
+ o.route,
148
+ G({
149
+ key: o.route,
150
+ minimumTier: o.tier,
151
+ release: o.release ?? ((u = s == null ? void 0 : s.definition) == null ? void 0 : u.release),
152
+ flagKeys: s == null ? void 0 : s.flagKeys
160
153
  })
161
154
  ];
162
155
  })
163
156
  );
164
- function K(s) {
165
- return p.find((r) => r.route === s) ?? null;
157
+ function M(o) {
158
+ return _.find((s) => s.route === o) ?? null;
166
159
  }
167
- function H(s) {
168
- return s ? y[s] ?? null : null;
160
+ function F(o) {
161
+ return o ? K[o] ?? null : null;
169
162
  }
170
- function W(s, r) {
171
- const u = H(s);
172
- return u ? U(u, r) : { enabled: !0, disabled: !1, stage: "ga", eligible: !0 };
163
+ function Q(o, s) {
164
+ const u = F(o);
165
+ return u ? y(u, s) : { enabled: !0, disabled: !1, stage: "ga", eligible: !0 };
173
166
  }
174
- const M = f.reduce(
175
- (s, r) => {
167
+ const k = O.reduce(
168
+ (o, s) => {
176
169
  var u;
177
- return r.name && (s[r.name] = (u = r.meta) == null ? void 0 : u.validationManifest), s;
170
+ return s.name && (o[s.name] = (u = s.meta) == null ? void 0 : u.validationManifest), o;
178
171
  },
179
172
  {}
180
173
  );
181
- function w() {
182
- const s = b(), r = L(), { t: u } = _(), a = (o) => C(o, u), g = E(
174
+ function Y() {
175
+ const o = U(), s = L(), { t: u } = b(), a = (r) => P(r, u), g = R(
183
176
  () => {
184
- var o;
185
- return ((o = s.sessionUser.value) == null ? void 0 : o.permissions) ?? [];
177
+ var r;
178
+ return ((r = o.sessionUser.value) == null ? void 0 : r.permissions) ?? [];
186
179
  }
187
- ), h = (o = []) => o.length === 0 ? !0 : O(o, g.value).granted, n = (o) => {
188
- const t = M[o];
180
+ ), h = (r = []) => r.length === 0 ? !0 : A(r, g.value).granted, n = (r) => {
181
+ const t = k[r];
189
182
  return h(t == null ? void 0 : t.requiredCaslPermissions);
190
- }, R = (o) => o.filter((t) => !t.hide).map((t) => t.children ? { ...t, children: R(t.children) } : t).filter((t) => !t.children || t.children.length > 0), T = (o) => o.map((t) => {
191
- const { hide: d, children: i, ...l } = t, c = { ...l };
192
- return i && (c.children = T(i)), c;
193
- }), I = (o) => o.map((t) => {
194
- const d = t.value, i = K(d), l = S((i == null ? void 0 : i.featureKey) ?? ""), c = l == null ? void 0 : l.category, v = i && (i.tier === "premium" || c === "beta" || l != null && l.deprecateSoon) ? () => P(G, {
183
+ }, d = (r) => {
184
+ var t;
185
+ return ((t = s.flags.find((c) => c.name === r)) == null ? void 0 : t.beta) !== !1 && !s.isFlagOn(r);
186
+ }, m = (r) => r.filter((t) => !t.hide).map((t) => t.children ? { ...t, children: m(t.children) } : t).filter((t) => !t.children || t.children.length > 0), I = (r) => r.map((t) => {
187
+ const { hide: c, children: i, ...l } = t, T = { ...l };
188
+ return i && (T.children = I(i)), T;
189
+ }), p = (r) => r.map((t) => {
190
+ const c = t.value, i = M(c), l = v((i == null ? void 0 : i.featureKey) ?? ""), T = l == null ? void 0 : l.category, f = i && (i.tier === "premium" || T === "beta" || l != null && l.deprecateSoon) ? () => C(H, {
195
191
  tier: i.tier,
196
- category: c,
192
+ category: T,
197
193
  deprecateSoon: l == null ? void 0 : l.deprecateSoon,
198
194
  featureKey: i.featureKey
199
195
  }) : void 0;
200
196
  return {
201
197
  ...t,
202
- badge: v,
203
- children: t.children ? I(t.children) : void 0
198
+ badge: f,
199
+ children: t.children ? p(t.children) : void 0
204
200
  };
205
- }), m = E(() => {
206
- var d;
207
- const o = [
201
+ }), S = R(() => {
202
+ var c;
203
+ const r = [
208
204
  {
209
205
  label: a(e.STOCK),
210
206
  children: [
@@ -216,17 +212,17 @@ function w() {
216
212
  {
217
213
  label: a(e.PRODUCTION_RUN),
218
214
  value: e.PRODUCTION_RUN,
219
- hide: !n(e.PRODUCTION_RUN) || !r.enableProductionRun
215
+ hide: !n(e.PRODUCTION_RUN) || d(E.inventory_portal_production_item)
220
216
  },
221
217
  {
222
218
  label: a(e.UNIT_COST_HISTORY),
223
219
  value: e.UNIT_COST_HISTORY,
224
- hide: !n(e.UNIT_COST_HISTORY) || !r.enableTotalCost
220
+ hide: !n(e.UNIT_COST_HISTORY) || d(E.inventory_pos_costing)
225
221
  },
226
222
  {
227
223
  label: a(e.WASTAGE_TEMPLATE),
228
224
  value: e.WASTAGE_TEMPLATE,
229
- hide: !n(e.WASTAGE_TEMPLATE) || !r.enableWastageTemplate
225
+ hide: !n(e.WASTAGE_TEMPLATE) || d(E.inventory_pos_adjust_v2_wastage)
230
226
  }
231
227
  ]
232
228
  },
@@ -241,12 +237,12 @@ function w() {
241
237
  {
242
238
  label: a(e.CLOSING_TEMPLATE),
243
239
  value: e.CLOSING_TEMPLATE,
244
- hide: !n(e.CLOSING_TEMPLATE) || !r.enableClosingTemplate
240
+ hide: !n(e.CLOSING_TEMPLATE) || d(E.inventory_pos_closing_v2)
245
241
  },
246
242
  {
247
243
  label: a(e.CLOSING_DRAFT),
248
244
  value: e.CLOSING_DRAFT,
249
- hide: !n(e.CLOSING_DRAFT) || !r.enableClosingTemplate
245
+ hide: !n(e.CLOSING_DRAFT) || d(E.inventory_pos_closing_v2)
250
246
  }
251
247
  ]
252
248
  },
@@ -255,11 +251,6 @@ function w() {
255
251
  value: e.INGREDIENTS,
256
252
  hide: !n(e.INGREDIENTS)
257
253
  },
258
- {
259
- label: a(e.INGREDIENT_GROUP),
260
- value: e.INGREDIENT_GROUP,
261
- hide: !n(e.INGREDIENT_GROUP) || !r.enableIngredientGroup
262
- },
263
254
  {
264
255
  label: a(e.RECIPE),
265
256
  value: e.RECIPE,
@@ -281,7 +272,7 @@ function w() {
281
272
  {
282
273
  label: a(e.RECEIVE_REQUEST_BULK),
283
274
  value: e.RECEIVE_REQUEST_BULK,
284
- hide: !n(e.RECEIVE_REQUEST_BULK) || !r.enableReceiveRequestBeta
275
+ hide: !n(e.RECEIVE_REQUEST_BULK) || d(E.inventory_receive_request_beta)
285
276
  },
286
277
  {
287
278
  label: a(e.APPROVAL),
@@ -291,12 +282,12 @@ function w() {
291
282
  {
292
283
  label: a(e.SURCHARGE),
293
284
  value: e.SURCHARGE,
294
- hide: !n(e.SURCHARGE) || !r.enableSurcharge
285
+ hide: !n(e.SURCHARGE) || d(E.inventory_portal_surcharge)
295
286
  },
296
287
  {
297
288
  label: a(e.TRANSFER_TEMPLATE),
298
289
  value: e.TRANSFER_TEMPLATE,
299
- hide: !n(e.TRANSFER_TEMPLATE) || !r.enablePoTemplate
290
+ hide: !n(e.TRANSFER_TEMPLATE) || d(E.inventory_portal_must_use_transfer_template)
300
291
  }
301
292
  ]
302
293
  },
@@ -318,7 +309,7 @@ function w() {
318
309
  {
319
310
  label: a(e.IMPORT),
320
311
  value: e.IMPORT,
321
- hide: !n(e.IMPORT) || !r.enableBulkImport
312
+ hide: !n(e.IMPORT) || d(E.inventory_bulk_import)
322
313
  },
323
314
  {
324
315
  label: a(e.INTEGRATION),
@@ -330,25 +321,25 @@ function w() {
330
321
  value: e.SETTINGS,
331
322
  hide: !n(e.SETTINGS)
332
323
  }
333
- ], t = I(T(R(o)));
334
- return ((d = s.currentBusiness.value) == null ? void 0 : d.menuVersion) === "v3" ? t.filter(
324
+ ], t = p(I(m(r)));
325
+ return ((c = o.currentBusiness.value) == null ? void 0 : c.menuVersion) === "v3" ? t.filter(
335
326
  (i) => i.value !== e.INGREDIENTS && i.value !== e.RECIPE && i.value !== e.UNIT && i.value !== e.PUBLISH
336
327
  ) : t;
337
- }), N = E(() => {
338
- function o(d) {
339
- for (const i of d)
328
+ }), N = R(() => {
329
+ function r(c) {
330
+ for (const i of c)
340
331
  if (i.children && i.children.length > 0) {
341
- const l = o(i.children);
332
+ const l = r(i.children);
342
333
  if (l) return l;
343
334
  } else if (i.value)
344
335
  return i.value;
345
336
  }
346
- return o(m.value) ?? null;
337
+ return r(S.value) ?? null;
347
338
  });
348
- return { menuItems: m, firstAccessibleRouteName: N };
339
+ return { menuItems: S, firstAccessibleRouteName: N };
349
340
  }
350
341
  export {
351
- W as e,
352
- p as n,
353
- w as u
342
+ Q as e,
343
+ _ as n,
344
+ Y as u
354
345
  };
@@ -1,4 +1,4 @@
1
- import { d as se } from "./app-Ccdgbe4f.js";
1
+ import { d as se } from "./app-DyEvx3Em.js";
2
2
  import { useCoreStore as ne } from "@feedmepos/mf-common";
3
3
  const re = se((e, t) => ({
4
4
  getSubscribeUrl(s, r, a) {
@@ -7,7 +7,6 @@ export interface InventoryBindingFormProps {
7
7
  iframeMode?: boolean;
8
8
  disabled?: boolean;
9
9
  readonly?: boolean;
10
- enableIngredientGroup?: boolean;
11
10
  /** recipe amounts may be keyed in with decimals — off keeps them whole numbers */
12
11
  allowRecipeDecimal?: boolean;
13
12
  }
@@ -1,5 +1,4 @@
1
1
  export declare function useInventoryBindingDialog(): {
2
2
  promptIngredientsBinding: (currentBindings: FdoInventoryBinding[], onUpdateInventoryBindings: (bindings: FdoInventoryBinding[]) => void, excludeBindingId?: string, excludeIds?: string[]) => Promise<void>;
3
3
  promptRecipesBinding: (currentBindings: FdoInventoryBinding[], onUpdateInventoryBindings: (mv: FdoInventoryBinding[]) => void, excludeIds?: string[]) => Promise<void>;
4
- promptIngredientGroupsBinding: (currentBindings: FdoInventoryBinding[], onUpdateInventoryBindings: (mv: FdoInventoryBinding[]) => void, excludeIds?: string[]) => Promise<void>;
5
4
  };
@@ -18,7 +18,6 @@ export interface InventoryBindingFormProps {
18
18
  readonly?: boolean;
19
19
  recipeBindingConfig?: InventoryRecipeBindingFormConfig;
20
20
  skuBindingConfig?: InventorySkuBindingFormConfig;
21
- enableIngredientGroup?: boolean;
22
21
  /** recipe amounts may be keyed in with decimals — off keeps them whole numbers */
23
22
  allowRecipeDecimal?: boolean;
24
23
  }
@@ -1,5 +1,4 @@
1
1
  export declare function useInventoryBindingDialogV2(): {
2
2
  promptIngredientsBinding: (currentBindings: FdoInventoryBinding[], onUpdateInventoryBindings: (bindings: FdoInventoryBinding[]) => void, excludeBindingId?: string, excludeIds?: string[]) => Promise<void>;
3
3
  promptRecipesBinding: (currentBindings: FdoInventoryBinding[], onUpdateInventoryBindings: (mv: FdoInventoryBinding[]) => void, excludeIds?: string[]) => Promise<void>;
4
- promptIngredientGroupsBinding: (currentBindings: FdoInventoryBinding[], onUpdateInventoryBindings: (mv: FdoInventoryBinding[]) => void, excludeIds?: string[]) => Promise<void>;
5
4
  };
@@ -1,6 +1,6 @@
1
1
  import type { SvcCompanyApiError } from '@/api/error';
2
2
  export type LinkedIngredientError = {
3
- module: 'sku' | 'recipe' | 'skuGroup';
3
+ module: 'sku' | 'recipe';
4
4
  name: string;
5
5
  _id: string;
6
6
  message?: string;
@@ -1,13 +1,13 @@
1
1
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
2
- capability?: "premium" | "beta" | undefined;
2
+ capability?: "beta" | "premium" | undefined;
3
3
  }>, {
4
4
  capability: undefined;
5
5
  }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
6
- capability?: "premium" | "beta" | undefined;
6
+ capability?: "beta" | "premium" | undefined;
7
7
  }>, {
8
8
  capability: undefined;
9
9
  }>>> & Readonly<{}>, {
10
- capability: "premium" | "beta";
10
+ capability: "beta" | "premium";
11
11
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<{
12
12
  default(): unknown;
13
13
  }> & {
@@ -49,7 +49,6 @@ export interface RecipeBulkEditEntry {
49
49
  }
50
50
  export type FlatBinding = FdoInventoryBinding & {
51
51
  recipeIds: string[];
52
- isGroup?: boolean;
53
52
  };
54
53
  export declare function flattenBindings(bindings: FdoInventoryBinding[], visitedIds: Set<string>, recipeById: Record<string, FdoInventoryRecipe>): FlatBinding[];
55
54
  export declare function decimalsEqual(a: FdoDecimal, b: FdoDecimal): boolean;
@@ -5,7 +5,7 @@ export type ObjectWithIndex<T> = {
5
5
  };
6
6
  export interface RecipeRow {
7
7
  recipeName: string;
8
- type: 'RECIPE' | 'INGREDIENT' | 'SKU_GROUP';
8
+ type: 'RECIPE' | 'INGREDIENT';
9
9
  code: string;
10
10
  name: string;
11
11
  amount: string;
@@ -15,7 +15,7 @@ export interface RecipeRow {
15
15
  customAttributes?: string;
16
16
  }
17
17
  export interface RecipeContainsRow {
18
- type: 'RECIPE' | 'SKU' | 'SKU_GROUP';
18
+ type: 'RECIPE' | 'SKU';
19
19
  id: string;
20
20
  amount: {
21
21
  amount: number;