@feedmepos/mf-inventory-portal 0.0.22-dev.46 → 0.0.22-dev.47

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 (49) hide show
  1. package/dist/{ApprovalView-CjK-fcvU.js → ApprovalView-DvaKP7j9.js} +3 -3
  2. package/dist/{BindingsDialog-DWRDuKnY.js → BindingsDialog-DuJMVo61.js} +1 -1
  3. package/dist/{BindingsPicker-DtgCTWo5.js → BindingsPicker-BoYwB6U_.js} +8 -8
  4. package/dist/{BindingsTable-QevLem81.js → BindingsTable-CWpUfeKm.js} +1 -1
  5. package/dist/{ClosingTemplateView-Cdbp7nYn.js → ClosingTemplateView-Cn96MJVP.js} +26 -26
  6. package/dist/{FmDroppableField-DHF0MZls.js → FmDroppableField-Dlrwk4gA.js} +1 -1
  7. package/dist/{FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-CPhXgsQD.js → FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-CCGydCsm.js} +3 -3
  8. package/dist/{FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-Bl-BsJNP.js → FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-DVMieqhn.js} +1 -1
  9. package/dist/{IngredientBindedItem.vue_vue_type_script_setup_true_lang-B7dq1XS-.js → IngredientBindedItem.vue_vue_type_script_setup_true_lang-CTK65n8v.js} +7 -7
  10. package/dist/IngredientGroupView-VNG5Q8ou.js +608 -0
  11. package/dist/{IngredientsView-9xhWEl17.js → IngredientsView-C_rbIOCU.js} +5 -5
  12. package/dist/{IntegrationView-D7916Kg2.js → IntegrationView-OKyiv2vc.js} +2 -2
  13. package/dist/{NumberPrecisionInput.vue_vue_type_script_setup_true_lang-ZBxeayIl.js → NumberPrecisionInput.vue_vue_type_script_setup_true_lang-bEu-8q1N.js} +1 -1
  14. package/dist/{PremiumBadge.vue_vue_type_script_setup_true_lang-Dp_JLw2L.js → PremiumBadge.vue_vue_type_script_setup_true_lang-CDM7DSyn.js} +2 -2
  15. package/dist/{PurchaseOrderPrintPreview-U-M3r5H9.js → PurchaseOrderPrintPreview-BSyXdhQo.js} +1 -1
  16. package/dist/{ReceiveRequestView-BzChY8ca.js → ReceiveRequestView-C4t8Kkn6.js} +288 -288
  17. package/dist/{RecipeView-GrwiLQkW.js → RecipeView-BnmwgxnO.js} +22 -22
  18. package/dist/{StockView-CMvG-CIC.js → StockView-wKpLuCbC.js} +5 -5
  19. package/dist/{SupplierView-BmqzK7D6.js → SupplierView-CZ23V9tf.js} +418 -415
  20. package/dist/{TransferDetails.vue_vue_type_script_setup_true_lang-CE1aYr3I.js → TransferDetails.vue_vue_type_script_setup_true_lang-Cxm7P4nU.js} +51 -51
  21. package/dist/{TransferTemplateView-CBPSaIJs.js → TransferTemplateView-DAqSN1NH.js} +8 -8
  22. package/dist/{UnitView-4JKlaXtj.js → UnitView-UhJoXWMf.js} +4 -4
  23. package/dist/{WarehouseView-B5qLIIAQ.js → WarehouseView-C-DGIBdE.js} +2 -2
  24. package/dist/{app-B0BJjpJ5.js → app-pFcheyXr.js} +19173 -19122
  25. package/dist/app.d.ts +3 -0
  26. package/dist/app.js +1 -1
  27. package/dist/components/FmMultiselectDialogProps.d.ts +0 -2
  28. package/dist/{decimal-CDTaG5jr.js → decimal-CY3TbMUy.js} +1 -1
  29. package/dist/{defineDeepModel-9-wLB59o.js → defineDeepModel-CWIF7Cxg.js} +1 -1
  30. package/dist/extensions/array.d.ts +1 -1
  31. package/dist/{format-time-from-id-Bwq0tn09.js → format-time-from-id-CSntAOsD.js} +1 -1
  32. package/dist/{format-unit-display-BImgcRNp.js → format-unit-display-BHIBhwk3.js} +49 -49
  33. package/dist/router/name.d.ts +1 -0
  34. package/dist/stores/inventory.d.ts +71 -0
  35. package/dist/style.css +1 -1
  36. package/dist/{supplier-D9s1N_M7.js → supplier-142vtn2Q.js} +1 -1
  37. package/dist/tsconfig.app.tsbuildinfo +1 -1
  38. package/dist/{use-template-enabled-locations-2-BQSfU_U_.js → use-template-enabled-locations-2-DUR98xi2.js} +1 -1
  39. package/dist/views/ingredient-group/IngredientGroupView.vue.d.ts +3 -0
  40. package/dist/views/ingredient-group/components/ingredient-group-dialog/IngredientGroupDialog.vue.d.ts +31 -0
  41. package/dist/views/ingredient-group/components/ingredient-group-dialog/IngredientGroupDialogProps.d.ts +12 -0
  42. package/dist/views/ingredient-group/components/ingredient-group-form/IngredientGroupForm.vue.d.ts +20 -0
  43. package/dist/views/ingredient-group/components/ingredient-group-form/IngredientGroupFormProps.d.ts +12 -0
  44. package/dist/views/ingredient-group/composables/use-ingredient-group-actions.d.ts +24 -0
  45. package/dist/views/ingredient-group/composables/use-ingredient-group-table.d.ts +215 -0
  46. package/dist/views/supplier/helpers/import-export.helper.d.ts +1 -1
  47. package/dist/{xlsx-A9JiF_qH.js → xlsx-ChOXd9sY.js} +1 -1
  48. package/dist/{xlsx.util-J1g7CG7t.js → xlsx.util-BYVL7Paj.js} +1 -1
  49. package/package.json +3 -3
package/dist/app.d.ts CHANGED
@@ -330,6 +330,9 @@ export declare const i18nMessages: {
330
330
  success: string;
331
331
  };
332
332
  };
333
+ ingredientGroup: {
334
+ title: string;
335
+ };
333
336
  recipe: {
334
337
  title: string;
335
338
  title2: string;
package/dist/app.js CHANGED
@@ -1,4 +1,4 @@
1
- import { aC as s, _ as r, aD as e, aA as o, aB as t, u as i } from "./app-B0BJjpJ5.js";
1
+ import { aC as s, _ as r, aD as e, aA as o, aB as t, u as i } from "./app-pFcheyXr.js";
2
2
  export {
3
3
  s as FmApp,
4
4
  r as InventoryBindingForm,
@@ -12,8 +12,6 @@ export interface ISelectItemGroup {
12
12
  }
13
13
  export interface FmMultiselectDialogProps {
14
14
  modelValue: any;
15
- /** Called while model value is updated, allow update for `collapsed` property only */
16
- modifyItems?: (modelValue: any[], items: ISelectItemSublabel[]) => ISelectItemSublabel[];
17
15
  items: ISelectItemSublabel[];
18
16
  groups?: ISelectItemGroup[];
19
17
  singleSelect?: boolean;
@@ -1,4 +1,4 @@
1
- import "./app-B0BJjpJ5.js";
1
+ import "./app-pFcheyXr.js";
2
2
  function m(a) {
3
3
  function t(o, n = !0) {
4
4
  const e = Math.round(Math.log10(o));
@@ -1,4 +1,4 @@
1
- import { c as i, ao as d } from "./app-B0BJjpJ5.js";
1
+ import { c as i, ao as d } from "./app-pFcheyXr.js";
2
2
  import { getCurrentInstance as n, reactive as m, watch as l } from "vue";
3
3
  function b(e = "modelValue") {
4
4
  var t, r;
@@ -17,7 +17,7 @@ declare global {
17
17
  */
18
18
  insert(element: T, at: number): T[];
19
19
  chunk(chunkSize: number): Generator<T[], void, unknown>;
20
- groupBy<K, M = T>(key: keyof T, mapper?: (element: T, index: number, array: this) => M): Map<K, [M, ...M[]]>;
20
+ groupBy<K, M = T>(key: keyof T | ((getter: T) => unknown), mapper?: (element: T, index: number, array: this) => M): Map<K, [M, ...M[]]>;
21
21
  }
22
22
  }
23
23
  export {};
@@ -1,4 +1,4 @@
1
- import { ar as n } from "./app-B0BJjpJ5.js";
1
+ import { ar as n } from "./app-pFcheyXr.js";
2
2
  function d(t) {
3
3
  const r = a(t);
4
4
  return r === null ? "" : n(r);
@@ -1,15 +1,15 @@
1
- import { F as ee, D as j, R as I } from "./row-action.enum-PMKMRrZR.js";
1
+ import { F as ee, D as V, R as I } from "./row-action.enum-PMKMRrZR.js";
2
2
  import { c as be } from "./TableActionableRow.vue_vue_type_script_setup_true_lang-DlNJ6kRg.js";
3
- import { n as Te, u as M, f as Se, i as V, a as D, h as _e, al as te, t as Q, r as L, ak as we, ae as $e, w as ke, c as W, as as re, y as Re } from "./app-B0BJjpJ5.js";
4
- import { f as Ee } from "./format-time-from-id-Bwq0tn09.js";
3
+ import { o as Te, u as M, f as Se, i as j, a as D, h as _e, al as te, t as Q, s as L, ak as $e, ae as we, x as ke, c as W, as as re, j as Re } from "./app-pFcheyXr.js";
4
+ import { f as Ee } from "./format-time-from-id-CSntAOsD.js";
5
5
  import { useCoreStore as Y, useI18n as G } from "@feedmepos/mf-common";
6
6
  import { useDialogChild as Ce, useSnackbar as le, useDialog as Ae, FmButtonVariant as ne, components as oe } from "@feedmepos/ui-library";
7
7
  import { defineStore as me } from "pinia";
8
- import { defineComponent as ce, resolveComponent as P, openBlock as _, createElementBlock as $, createElementVNode as w, normalizeClass as U, createTextVNode as Ie, toDisplayString as C, unref as E, createCommentVNode as B, createVNode as N, withCtx as K, Fragment as F, renderList as q, ref as k, onMounted as Ne, computed as ae, watch as De, createSlots as Fe, createBlock as H, h as z } from "vue";
8
+ import { defineComponent as ce, resolveComponent as P, openBlock as _, createElementBlock as w, createElementVNode as $, normalizeClass as U, createTextVNode as Ie, toDisplayString as C, unref as E, createCommentVNode as B, createVNode as N, withCtx as K, Fragment as F, renderList as q, ref as k, onMounted as Ne, computed as ae, watch as De, createSlots as Fe, createBlock as H, h as z } from "vue";
9
9
  import { useRouter as Oe } from "vue-router";
10
- import { a as O, b as ue, d as pe, s as de, r as Pe } from "./xlsx.util-J1g7CG7t.js";
11
- import { F as Ue } from "./FmDroppableField-DHF0MZls.js";
12
- import { u as J } from "./supplier-D9s1N_M7.js";
10
+ import { a as O, b as ue, d as pe, s as de, r as Pe } from "./xlsx.util-BYVL7Paj.js";
11
+ import { F as Ue } from "./FmDroppableField-Dlrwk4gA.js";
12
+ import { u as J } from "./supplier-142vtn2Q.js";
13
13
  const fe = Te((t, r) => {
14
14
  function a() {
15
15
  var n;
@@ -137,7 +137,7 @@ function Be(t) {
137
137
  return pe(i, n), n;
138
138
  }
139
139
  function Me() {
140
- const t = Y(), r = J(), a = V(), c = M(), o = t.currentBusiness.value, n = he({
140
+ const t = Y(), r = J(), a = j(), c = M(), o = t.currentBusiness.value, n = he({
141
141
  sku: {
142
142
  unit: {
143
143
  _id: "",
@@ -248,7 +248,7 @@ function Me() {
248
248
  return pe(y, f), f;
249
249
  }
250
250
  function Qe(t, r) {
251
- const a = new Array(), c = /(.*) \(((supplier_|warehouse_|restaurant_).{24,})\)/, n = V().locationByDbName, l = J().supplierById, u = t.trim(), m = c.exec(u);
251
+ const a = new Array(), c = /(.*) \(((supplier_|warehouse_|restaurant_).{24,})\)/, n = j().locationByDbName, l = J().supplierById, u = t.trim(), m = c.exec(u);
252
252
  if (!m)
253
253
  return a.push(`Transfer from location value of ${u} cannot be read.`), {
254
254
  errors: a
@@ -292,7 +292,7 @@ function Qe(t, r) {
292
292
  function Le(t) {
293
293
  if (!t.length || `${t[0]}`.toLocaleLowerCase() === "all")
294
294
  return [];
295
- const r = /(.*) \(((warehouse_|restaurant_).{24,})\)/, c = V().locationByDbName;
295
+ const r = /(.*) \(((warehouse_|restaurant_).{24,})\)/, c = j().locationByDbName;
296
296
  return t.map((o) => {
297
297
  const n = new Array(), i = o.trim(), l = r.exec(i);
298
298
  if (!l)
@@ -378,7 +378,7 @@ function qe(t) {
378
378
  };
379
379
  });
380
380
  }
381
- function Ve(t, r, a) {
381
+ function je(t, r, a) {
382
382
  const o = M().skuByCode[t.code], n = new Array();
383
383
  if (!o)
384
384
  return n.push(`Cannot find ingredient with code (${t.code}) ${t.name}.`), {
@@ -415,7 +415,7 @@ function Ve(t, r, a) {
415
415
  L(i, l)
416
416
  );
417
417
  (Number.isNaN(Number(t.quantityStep)) || Number(t.quantityStep) <= 0) && n.push("Amount step must be more than 0");
418
- const m = we(u), h = Q(
418
+ const m = $e(u), h = Q(
419
419
  t.minimumQuantity,
420
420
  L(i, l)
421
421
  ), g = m(h);
@@ -425,7 +425,7 @@ function Ve(t, r, a) {
425
425
  L(i, l)
426
426
  ), y = m(x);
427
427
  typeof y == "string" && n.push(`Maximum amount: ${y}`), +t.minimumQuantity > +t.maximumQuantity && n.push("Minimum amount must be less than or equal to maximum amount");
428
- const f = $e(+t.minimumQuantity, +t.maximumQuantity), e = Q(
428
+ const f = we(+t.minimumQuantity, +t.maximumQuantity), e = Q(
429
429
  t.defaultQuantity,
430
430
  L(i, l)
431
431
  ), T = m(e), d = f(`${t.defaultQuantity}`);
@@ -446,7 +446,7 @@ function Ve(t, r, a) {
446
446
  templateItem: v
447
447
  };
448
448
  }
449
- function je(t) {
449
+ function Ve(t) {
450
450
  const r = t.SheetNames.filter(
451
451
  (n) => !Object.values(X).map(String).includes(n)
452
452
  ), c = xe().templates, o = _e(c, "_id");
@@ -459,7 +459,7 @@ function je(t) {
459
459
  const g = h.from, x = Le(m.locations), y = x.filter((p) => p.location).map((p) => p.location);
460
460
  l.push(...x.flatMap((p) => p.errors));
461
461
  const f = qe(u).filter((p) => p.data.code), e = f.map(
462
- (p, S) => Ve(p.data, S, f)
462
+ (p, S) => je(p.data, S, f)
463
463
  );
464
464
  l.push(
465
465
  ...e.flatMap(
@@ -575,24 +575,24 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
575
575
  return (r, a) => {
576
576
  var n, i, l;
577
577
  const c = P("FmIcon"), o = P("FmTooltip");
578
- return _(), $("div", Ke, [
579
- a[0] || (a[0] = w("div", null, "•", -1)),
580
- w("div", We, [
581
- w("div", Ye, [
582
- w("div", {
578
+ return _(), w("div", Ke, [
579
+ a[0] || (a[0] = $("div", null, "•", -1)),
580
+ $("div", We, [
581
+ $("div", Ye, [
582
+ $("div", {
583
583
  class: U({
584
584
  "text-fm-color-system-error-300": r.errors.length
585
585
  })
586
586
  }, [
587
587
  Ie(C(r.name) + " ", 1),
588
- w("span", Ge, " (" + C(E(ke)(`${r.transferType}`)) + ") ", 1),
589
- r.type === "create" ? (_(), $("span", Je, "(new)")) : B("", !0)
588
+ $("span", Ge, " (" + C(E(ke)(`${r.transferType}`)) + ") ", 1),
589
+ r.type === "create" ? (_(), w("span", Je, "(new)")) : B("", !0)
590
590
  ], 2),
591
- r.errors.length ? (_(), $("div", Xe, [
591
+ r.errors.length ? (_(), w("div", Xe, [
592
592
  N(o, { "z-index": 50 }, {
593
593
  content: K(() => [
594
- w("ol", null, [
595
- (_(!0), $(F, null, q(r.errors, (u, m) => (_(), $("li", { key: m }, C(u), 1))), 128))
594
+ $("ol", null, [
595
+ (_(!0), w(F, null, q(r.errors, (u, m) => (_(), w("li", { key: m }, C(u), 1))), 128))
596
596
  ])
597
597
  ]),
598
598
  default: K(() => [
@@ -606,7 +606,7 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
606
606
  })
607
607
  ])) : B("", !0)
608
608
  ]),
609
- w("div", {
609
+ $("div", {
610
610
  class: U([
611
611
  "fm-typo-en-body-sm-400",
612
612
  {
@@ -669,7 +669,7 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
669
669
  l.value.push(x("inventory.ingredient.import.fileError.noSheet"));
670
670
  return;
671
671
  }
672
- const v = je(e);
672
+ const v = Ve(e);
673
673
  if (v.invalidExcel) {
674
674
  l.value.push(
675
675
  v.invalidExcelMessage ?? x("inventory.ingredient.import.fileError.invalidExcel")
@@ -698,17 +698,17 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
698
698
  f && y(f);
699
699
  }), (f, e) => {
700
700
  const T = P("FmCircularProgress"), d = P("FmIcon"), v = P("FmButton");
701
- return _(), $("div", Ze, [
702
- e[2] || (e[2] = w("div", { class: "fm-typo-en-body-md-400" }, "Import transfer templates from excel sheets.", -1)),
703
- n.value ? (_(), $("div", et, [
704
- w("div", null, [
701
+ return _(), w("div", Ze, [
702
+ e[2] || (e[2] = $("div", { class: "fm-typo-en-body-md-400" }, "Import transfer templates from excel sheets.", -1)),
703
+ n.value ? (_(), w("div", et, [
704
+ $("div", null, [
705
705
  N(T, {
706
706
  size: "md",
707
707
  color: "neutral-gray-200"
708
708
  })
709
709
  ]),
710
- e[1] || (e[1] = w("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, "Loading...", -1))
711
- ])) : (_(), $(F, { key: 1 }, [
710
+ e[1] || (e[1] = $("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary" }, "Loading...", -1))
711
+ ])) : (_(), w(F, { key: 1 }, [
712
712
  N(Ue, {
713
713
  class: U({
714
714
  "w-full": !0,
@@ -722,8 +722,8 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
722
722
  r.value ? {
723
723
  name: "default",
724
724
  fn: K(({ openFileDialog: s }) => [
725
- w("div", tt, [
726
- w("div", {
725
+ $("div", tt, [
726
+ $("div", {
727
727
  class: U([
728
728
  "fm-corner-radius-md p-16 flex items-center gap-16",
729
729
  {
@@ -743,7 +743,7 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
743
743
  outline: "",
744
744
  color: h.value ? "system-error-300" : void 0
745
745
  }, null, 8, ["name", "color"])),
746
- w("div", {
746
+ $("div", {
747
747
  class: U([
748
748
  "fm-typo-en-body-md-400 flex-1 h-[36px] flex items-center",
749
749
  {
@@ -752,9 +752,9 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
752
752
  }
753
753
  ])
754
754
  }, [
755
- w("div", rt, C(r.value.name), 1)
755
+ $("div", rt, C(r.value.name), 1)
756
756
  ], 2),
757
- o.value ? B("", !0) : (_(), $("div", nt, [
757
+ o.value ? B("", !0) : (_(), w("div", nt, [
758
758
  N(v, {
759
759
  label: E(x)("inventory.ingredient.import.replaceFile"),
760
760
  variant: h.value ? "destructive" : "secondary",
@@ -763,8 +763,8 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
763
763
  }, null, 8, ["label", "variant", "prepend-icon", "onClick"])
764
764
  ]))
765
765
  ], 2),
766
- l.value.length ? (_(), $("div", ot, [
767
- (_(!0), $(F, null, q(l.value, (p, S) => (_(), $("div", {
766
+ l.value.length ? (_(), w("div", ot, [
767
+ (_(!0), w(F, null, q(l.value, (p, S) => (_(), w("div", {
768
768
  key: S,
769
769
  class: "flex gap-8 items-center"
770
770
  }, [
@@ -773,7 +773,7 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
773
773
  size: "sm",
774
774
  color: "system-error-300"
775
775
  }),
776
- w("div", at, C(p), 1)
776
+ $("div", at, C(p), 1)
777
777
  ]))), 128))
778
778
  ])) : B("", !0)
779
779
  ])
@@ -781,9 +781,9 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
781
781
  key: "0"
782
782
  } : void 0
783
783
  ]), 1032, ["class", "label", "button-label"]),
784
- g.value ? (_(), $("div", st, [
785
- w("div", it, C(E(x)("inventory.ingredient.import.summary")), 1),
786
- (_(!0), $(F, null, q(u.value, (s, p) => (_(), H(se, {
784
+ g.value ? (_(), w("div", st, [
785
+ $("div", it, C(E(x)("inventory.ingredient.import.summary")), 1),
786
+ (_(!0), w(F, null, q(u.value, (s, p) => (_(), H(se, {
787
787
  key: p,
788
788
  name: s.template.name,
789
789
  "transfer-type": typeof s.template.purchaseOrder.supplier.internal == "string" ? E(R).TRANSFER : E(R).PURCHASE,
@@ -792,7 +792,7 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
792
792
  errors: s.errors,
793
793
  type: "create"
794
794
  }, null, 8, ["name", "transfer-type", "locations", "items", "errors"]))), 128)),
795
- (_(!0), $(F, null, q(m.value, (s) => (_(), H(se, {
795
+ (_(!0), w(F, null, q(m.value, (s) => (_(), H(se, {
796
796
  key: s.template._id,
797
797
  name: s.template.name,
798
798
  "transfer-type": typeof s.template.purchaseOrder.supplier.internal == "string" ? E(R).TRANSFER : E(R).PURCHASE,
@@ -807,7 +807,7 @@ const Ke = { class: "flex items-center gap-12 pl-8" }, We = { class: "flex flex-
807
807
  };
808
808
  }
809
809
  }), mt = me("transferTemplateActions", () => {
810
- const t = Ae(), r = le(), a = V(), c = xe(), o = fe(), n = Oe(), { t: i } = G(), l = k({});
810
+ const t = Ae(), r = le(), a = j(), c = xe(), o = fe(), n = Oe(), { t: i } = G(), l = k({});
811
811
  function u() {
812
812
  l.value = {
813
813
  mode: ee.CREATE,
@@ -1160,9 +1160,9 @@ const xe = me(
1160
1160
  id: "action",
1161
1161
  cell(y) {
1162
1162
  const f = y.row.original, e = [
1163
- j[I.Details],
1164
- j[I.Edit],
1165
- j[I.Delete]
1163
+ V[I.Details],
1164
+ V[I.Edit],
1165
+ V[I.Delete]
1166
1166
  ];
1167
1167
  return be(e, (T) => g(T, f));
1168
1168
  },
@@ -1,5 +1,6 @@
1
1
  export declare enum RouteName {
2
2
  INGREDIENTS = "INGREDIENTS",
3
+ INGREDIENT_GROUP = "INGREDIENT_GROUP",
3
4
  RECIPE = "RECIPE",
4
5
  UNIT = "UNIT",
5
6
  STOCK = "STOCK",
@@ -2267,6 +2267,74 @@ export declare function useInventoryStore(): {
2267
2267
  _id: string;
2268
2268
  name: string;
2269
2269
  }>;
2270
+ readonly skuGroups: {
2271
+ ref?: string | null | undefined;
2272
+ unit: {
2273
+ _id: string;
2274
+ name: string;
2275
+ abbrev: string;
2276
+ precision: number;
2277
+ measurements: {
2278
+ id: string;
2279
+ name: string;
2280
+ abbrev: string;
2281
+ conversion: {
2282
+ amount: number;
2283
+ precision: number;
2284
+ };
2285
+ }[];
2286
+ };
2287
+ _id: string;
2288
+ name: string;
2289
+ skus: {
2290
+ trackingMeasurement?: string | null | undefined;
2291
+ convert?: {
2292
+ measurement?: string | null | undefined;
2293
+ inventoryBindings?: {
2294
+ measurement?: {
2295
+ id: string;
2296
+ name: string;
2297
+ abbrev: string;
2298
+ conversion: {
2299
+ amount: number;
2300
+ precision: number;
2301
+ };
2302
+ } | null | undefined;
2303
+ type: "RECIPE" | "SKU" | "SKU_GROUP";
2304
+ amount: {
2305
+ amount: number;
2306
+ precision: number;
2307
+ };
2308
+ id: string;
2309
+ }[] | null | undefined;
2310
+ } | null | undefined;
2311
+ valuation?: "FIFO" | "LIFO" | "FEFO" | "WAVG" | null | undefined;
2312
+ defaultCost?: {
2313
+ measurement?: {
2314
+ id: string;
2315
+ name: string;
2316
+ abbrev: string;
2317
+ conversion: {
2318
+ amount: number;
2319
+ precision: number;
2320
+ };
2321
+ } | null | undefined;
2322
+ costPerUnit: {
2323
+ currency: "AED" | "AFN" | "ALL" | "AMD" | "ANG" | "AOA" | "ARS" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BOV" | "BRL" | "BSD" | "BTN" | "BWP" | "BYN" | "BZD" | "CAD" | "CDF" | "CHE" | "CHF" | "CHW" | "CLF" | "CLP" | "CNY" | "COP" | "COU" | "CRC" | "CUC" | "CUP" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "ERN" | "ETB" | "EUR" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MAD" | "MDL" | "MGA" | "MKD" | "MMK" | "MNT" | "MOP" | "MRU" | "MUR" | "MVR" | "MWK" | "MXN" | "MXV" | "MYR" | "MZN" | "NAD" | "NGN" | "NIO" | "NOK" | "NPR" | "NZD" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STN" | "SVC" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "USD" | "USN" | "UYI" | "UYU" | "UYW" | "UZS" | "VES" | "VND" | "VUV" | "WST" | "XAF" | "XAG" | "XAU" | "XBA" | "XBB" | "XBC" | "XBD" | "XCD" | "XDR" | "XOF" | "XPD" | "XPF" | "XPT" | "XSU" | "XTS" | "XUA" | "XXX" | "YER" | "ZAR" | "ZMW" | "ZWL";
2324
+ amount: number;
2325
+ precision: number;
2326
+ };
2327
+ } | null | undefined;
2328
+ thresholds?: {
2329
+ low: number;
2330
+ mid: number;
2331
+ } | null | undefined;
2332
+ operationalGroup?: string | null | undefined;
2333
+ code: string;
2334
+ _id: string;
2335
+ name: string;
2336
+ }[];
2337
+ }[];
2270
2338
  init(): Promise<void>;
2271
2339
  readClosing(): Promise<void>;
2272
2340
  getAffectedMenu(id: string): Promise<BindedWithRecipeId[]>;
@@ -2286,4 +2354,7 @@ export declare function useInventoryStore(): {
2286
2354
  updateSku(sku: FdoInventorySku): Promise<void>;
2287
2355
  importSkus(skus: Omit<FdtoBulkSkuRequest, '_rev'>): Promise<void>;
2288
2356
  deleteSku({ _id }: FdoInventorySku): Promise<void>;
2357
+ createSkuGroup(skuGroup: CreateType<FdoInventorySkuGroup>): Promise<void>;
2358
+ updateSkuGroup(skuGroup: FdoInventorySkuGroup): Promise<void>;
2359
+ deleteSkuGroup({ _id }: FdoInventorySkuGroup): Promise<void>;
2289
2360
  };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .v-enter-active[data-v-903bd130],.v-leave-active[data-v-903bd130]{transition:opacity .1s ease}.v-enter-from[data-v-903bd130],.v-leave-to[data-v-903bd130]{opacity:0}.fm-status-badge{font-size:.875rem;font-weight:600;line-height:1.125rem;letter-spacing:.0125em;text-decoration-line:none;border-radius:8px;display:flex;align-items:center;padding-left:8px;padding-right:8px;height:22px}.fm-status-badge-draft{background-color:var(--fm-color-neutral-gray-100);color:var(--fm-color-neutral-gray-500)}.fm-status-badge-receiving{background-color:var(--fm-color-system-blue-100);color:var(--fm-color-system-blue-400)}.fm-status-badge-cancel{background-color:var(--fm-color-system-red-100);color:var(--fm-color-system-red-400)}.fm-status-badge-complete{background-color:var(--fm-color-system-green-100);color:var(--fm-color-system-green-400)}.fm-status-badge-processing,.fm-status-badge-requesting{background-color:var(--fm-color-system-orange-100);color:var(--fm-color-system-orange-400)}.fm-status-badge-transfer-info,.fm-status-badge-info-secondary{background-color:var(--fm-color-system-blue-100);color:var(--fm-color-system-blue-400)}.fm-status-badge-success-secondary{background-color:var(--fm-color-system-green-100);color:var(--fm-color-system-green-400)}.fade-enter-active,.fade-leave-active{transition:opacity .5s ease}.fade-enter-from,.fade-leave-to{opacity:0}.fade-enter-active[data-v-309312d7],.fade-leave-active[data-v-309312d7]{transition:opacity .25s ease}.fade-enter[data-v-309312d7],.fade-leave-to[data-v-309312d7]{opacity:0}.fm-forecast-notification-low{background-color:var(--fm-color-system-red-100);color:var(--fm-color-system-red-400)}.fm-forecast-notification-mid{background-color:var(--fm-color-system-orange-100);color:var(--fm-color-system-orange-400)}.fm-forecast-notification-high{background-color:var(--fm-color-system-green-100);color:var(--fm-color-system-green-400)}.fm-forecast-notification-indicator{display:inline-block;height:12px;width:12px;border-radius:9999px}.fm-forecast-notification-indicator-low{background-color:var(--fm-color-system-red-400)}.fm-forecast-notification-indicator-mid{background-color:var(--fm-color-system-orange-400)}.fm-forecast-notification-indicator-high{background-color:var(--fm-color-system-green-400)}.fm-droppable-field[data-v-e121b2c1]{display:flex;flex-direction:column;gap:4px}.fm-droppable-field__container[data-v-e121b2c1]{position:relative;background-color:var(--fm-color-neutral-white);padding:12px;border-radius:8px;border-width:2px;border-style:dashed;border-color:var(--fm-color-neutral-gray-300);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}.fm-droppable-field__container--disabled[data-v-e121b2c1]{cursor:not-allowed;color:var(--fm-color-neutral-gray-200);border-color:var(--fm-color-neutral-gray-200)}.fm-droppable-field__container--dragging[data-v-e121b2c1]{border-color:var(--fm-color-primary)}.fm-droppable-field__container--invalid[data-v-e121b2c1]{border-color:var(--fm-color-system-red-300)}.fm-droppable-field__container[data-v-e121b2c1]:hover:not(.fm-droppable-field__container--disabled){border-color:var(--fm-color-neutral-gray-400)}.fm-droppable-field__input[data-v-e121b2c1]{cursor:pointer;opacity:0;position:absolute;top:0;left:0;height:100%;width:100%}.fm-droppable-field__input[data-v-e121b2c1]:disabled{display:none;cursor:not-allowed}.map-button[data-v-272f5e8b]{border-top-width:1px;border-top-color:var(--fm-color-neutral-gray-200);color:var(--fm-color-neutral-gray-400);padding:.2rem 1rem;border-radius:8px}table[data-v-92a03d5c]{width:100%;border-spacing:unset;line-height:inherit}table td[data-v-92a03d5c],table th[data-v-92a03d5c]{padding:3px 5px;vertical-align:top}hr[data-v-92a03d5c]{border-collapse:unset;background:#888;height:2px;border:0px}.text-left[data-v-92a03d5c]{text-align:left}.text-right[data-v-92a03d5c]{text-align:right}.purchase-box[data-v-92a03d5c]{max-width:800px;margin:auto;padding:30px;border:1px solid #eee;box-shadow:0 0 10px #00000026;font-size:16px;line-height:1.5;font-family:Helvetica Neue,Helvetica,Helvetica,Arial,sans-serif;color:#555}.title[data-v-92a03d5c]{padding-bottom:0;font-size:30px;color:#333}.header[data-v-92a03d5c]{font-weight:600;color:#333}.sub-header[data-v-92a03d5c]{font-size:18px;color:#333}.caption[data-v-92a03d5c]{font-size:14px;color:#666}.address[data-v-92a03d5c]{font-size:16px;line-height:1.2;color:#666}.purchase-body[data-v-92a03d5c]{margin-top:30px}.item-header[data-v-92a03d5c]{border:0px;background:#ccc;color:#444}
1
+ .v-enter-active[data-v-0fe980e2],.v-leave-active[data-v-0fe980e2]{transition:opacity .1s ease}.v-enter-from[data-v-0fe980e2],.v-leave-to[data-v-0fe980e2]{opacity:0}.fm-status-badge{font-size:.875rem;font-weight:600;line-height:1.125rem;letter-spacing:.0125em;text-decoration-line:none;border-radius:8px;display:flex;align-items:center;padding-left:8px;padding-right:8px;height:22px}.fm-status-badge-draft{background-color:var(--fm-color-neutral-gray-100);color:var(--fm-color-neutral-gray-500)}.fm-status-badge-receiving{background-color:var(--fm-color-system-blue-100);color:var(--fm-color-system-blue-400)}.fm-status-badge-cancel{background-color:var(--fm-color-system-red-100);color:var(--fm-color-system-red-400)}.fm-status-badge-complete{background-color:var(--fm-color-system-green-100);color:var(--fm-color-system-green-400)}.fm-status-badge-processing,.fm-status-badge-requesting{background-color:var(--fm-color-system-orange-100);color:var(--fm-color-system-orange-400)}.fm-status-badge-transfer-info,.fm-status-badge-info-secondary{background-color:var(--fm-color-system-blue-100);color:var(--fm-color-system-blue-400)}.fm-status-badge-success-secondary{background-color:var(--fm-color-system-green-100);color:var(--fm-color-system-green-400)}.fade-enter-active,.fade-leave-active{transition:opacity .5s ease}.fade-enter-from,.fade-leave-to{opacity:0}.fade-enter-active[data-v-50dae672],.fade-leave-active[data-v-50dae672]{transition:opacity .25s ease}.fade-enter[data-v-50dae672],.fade-leave-to[data-v-50dae672]{opacity:0}.fm-forecast-notification-low{background-color:var(--fm-color-system-red-100);color:var(--fm-color-system-red-400)}.fm-forecast-notification-mid{background-color:var(--fm-color-system-orange-100);color:var(--fm-color-system-orange-400)}.fm-forecast-notification-high{background-color:var(--fm-color-system-green-100);color:var(--fm-color-system-green-400)}.fm-forecast-notification-indicator{display:inline-block;height:12px;width:12px;border-radius:9999px}.fm-forecast-notification-indicator-low{background-color:var(--fm-color-system-red-400)}.fm-forecast-notification-indicator-mid{background-color:var(--fm-color-system-orange-400)}.fm-forecast-notification-indicator-high{background-color:var(--fm-color-system-green-400)}.fm-droppable-field[data-v-e121b2c1]{display:flex;flex-direction:column;gap:4px}.fm-droppable-field__container[data-v-e121b2c1]{position:relative;background-color:var(--fm-color-neutral-white);padding:12px;border-radius:8px;border-width:2px;border-style:dashed;border-color:var(--fm-color-neutral-gray-300);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}.fm-droppable-field__container--disabled[data-v-e121b2c1]{cursor:not-allowed;color:var(--fm-color-neutral-gray-200);border-color:var(--fm-color-neutral-gray-200)}.fm-droppable-field__container--dragging[data-v-e121b2c1]{border-color:var(--fm-color-primary)}.fm-droppable-field__container--invalid[data-v-e121b2c1]{border-color:var(--fm-color-system-red-300)}.fm-droppable-field__container[data-v-e121b2c1]:hover:not(.fm-droppable-field__container--disabled){border-color:var(--fm-color-neutral-gray-400)}.fm-droppable-field__input[data-v-e121b2c1]{cursor:pointer;opacity:0;position:absolute;top:0;left:0;height:100%;width:100%}.fm-droppable-field__input[data-v-e121b2c1]:disabled{display:none;cursor:not-allowed}.map-button[data-v-272f5e8b]{border-top-width:1px;border-top-color:var(--fm-color-neutral-gray-200);color:var(--fm-color-neutral-gray-400);padding:.2rem 1rem;border-radius:8px}table[data-v-92a03d5c]{width:100%;border-spacing:unset;line-height:inherit}table td[data-v-92a03d5c],table th[data-v-92a03d5c]{padding:3px 5px;vertical-align:top}hr[data-v-92a03d5c]{border-collapse:unset;background:#888;height:2px;border:0px}.text-left[data-v-92a03d5c]{text-align:left}.text-right[data-v-92a03d5c]{text-align:right}.purchase-box[data-v-92a03d5c]{max-width:800px;margin:auto;padding:30px;border:1px solid #eee;box-shadow:0 0 10px #00000026;font-size:16px;line-height:1.5;font-family:Helvetica Neue,Helvetica,Helvetica,Arial,sans-serif;color:#555}.title[data-v-92a03d5c]{padding-bottom:0;font-size:30px;color:#333}.header[data-v-92a03d5c]{font-weight:600;color:#333}.sub-header[data-v-92a03d5c]{font-size:18px;color:#333}.caption[data-v-92a03d5c]{font-size:14px;color:#666}.address[data-v-92a03d5c]{font-size:16px;line-height:1.2;color:#666}.purchase-body[data-v-92a03d5c]{margin-top:30px}.item-header[data-v-92a03d5c]{border:0px;background:#ccc;color:#444}
@@ -1,4 +1,4 @@
1
- import { n as m, i as u, h as y, Z as b, $ as v } from "./app-B0BJjpJ5.js";
1
+ import { o as m, i as u, h as y, Z as b, $ as v } from "./app-pFcheyXr.js";
2
2
  import { useCoreStore as c } from "@feedmepos/mf-common";
3
3
  import { defineStore as w } from "pinia";
4
4
  import { ref as l, computed as d } from "vue";