@feedmepos/mf-inventory-portal 1.7.11 → 1.7.12-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-DE5q8pJt.js +1434 -0
- package/dist/{ApprovalView-Dn0-OeH0.js → ApprovalView-tn3kgVnm.js} +9 -9
- package/dist/{BindingsDialog-BVVu8xWS.js → BindingsDialog-BcpMSsbG.js} +2 -2
- package/dist/{BindingsPicker-krMKURKj.js → BindingsPicker-D-XtjmkW.js} +2 -2
- package/dist/{BindingsTable-CLiGmTHB.js → BindingsTable-CpQ6DVv6.js} +4 -4
- package/dist/BulkReceiveRequestView-BOUrL6ir.js +2657 -0
- package/dist/{ChangeLocationComponent.vue_vue_type_script_setup_true_lang-BYtJnIsF.js → ChangeLocationComponent.vue_vue_type_script_setup_true_lang-Bu9YI9f7.js} +1 -1
- package/dist/{ClosingDraftView-fUMDbnI6.js → ClosingDraftView-BQkusa3K.js} +19 -19
- package/dist/{ClosingHistoryView-Cfvkxwlh.js → ClosingHistoryView-DNmUcfKW.js} +5 -5
- package/dist/{ClosingTemplateView-DtIeSknz.js → ClosingTemplateView-BGMMQIlm.js} +16 -16
- package/dist/{CustomPrintTemplatePreview.vue_vue_type_script_setup_true_lang-Bz7CjD7v.js → CustomPrintTemplatePreview.vue_vue_type_script_setup_true_lang-BlrhLlmx.js} +1 -1
- package/dist/{DefaultView-BbN62d8p.js → DefaultView-DbW7mva7.js} +2 -2
- package/dist/{DeliveryOrderPrintPreview-91UH3oJ8.js → DeliveryOrderPrintPreview-C6gqP8ro.js} +2 -2
- package/dist/{EmailDialog.vue_vue_type_script_setup_true_lang-DDunnzgw.js → EmailDialog.vue_vue_type_script_setup_true_lang-XU50lg6w.js} +2259 -2254
- package/dist/{FmDateRangePickerChip.vue_vue_type_script_setup_true_lang-CKlpaNGP.js → FmDateRangePickerChip.vue_vue_type_script_setup_true_lang-D-3eipuP.js} +6 -6
- package/dist/{FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-DOqGzn08.js → FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-CfmhYGml.js} +2 -2
- package/dist/{FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-CxdQsFqQ.js → FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-DyEY4i7p.js} +2 -2
- package/dist/{FmMultiselectDialog-Dg70WmLs.js → FmMultiselectDialog-DCzjYd3G.js} +2 -2
- package/dist/{FmMultiselectDialog-BEVkUX96.js → FmMultiselectDialog-zWGXAdy0.js} +1 -1
- package/dist/{FmUnitInput.vue_vue_type_script_setup_true_lang-RQ44PYLb.js → FmUnitInput.vue_vue_type_script_setup_true_lang-Ple3fGYg.js} +6 -6
- package/dist/{ImportView-C0hAMz8m.js → ImportView-pEnmvGQZ.js} +499 -496
- package/dist/{IngredientBindedItem.vue_vue_type_script_setup_true_lang-C6SNYEJl.js → IngredientBindedItem.vue_vue_type_script_setup_true_lang-zneEDRRK.js} +1 -1
- package/dist/{IngredientGroupView-CRGyWM_X.js → IngredientGroupView-C4LKT2no.js} +5 -5
- package/dist/{IngredientsView-C7CVkoou.js → IngredientsView-BuAz_kTx.js} +18 -17
- package/dist/{IntegrationExplorerView-2nvAOHbA.js → IntegrationExplorerView-C2BSURrj.js} +4 -4
- package/dist/{IntegrationView-CYSaTE2T.js → IntegrationView-D_mBNCCe.js} +14 -14
- package/dist/{InventoryBindingForm-CezLMw2l.js → InventoryBindingForm-bZo-006V.js} +1 -1
- package/dist/InventoryBindingForm.vue_vue_type_script_setup_true_lang-DJg4Yogw.js +563 -0
- package/dist/{InventoryBindingSummary-QOztXyC8.js → InventoryBindingSummary-BB9KGZ2m.js} +1 -1
- package/dist/{NumberPrecisionInput.vue_vue_type_script_setup_true_lang-BT0zK5o_.js → NumberPrecisionInput.vue_vue_type_script_setup_true_lang-DXUTZvuO.js} +1 -1
- package/dist/{PremiumBadge.vue_vue_type_script_setup_true_lang-_w5kZ9SM.js → PremiumBadge.vue_vue_type_script_setup_true_lang-BaBJdjs1.js} +1 -1
- package/dist/{ProductionView-BveNOlcK.js → ProductionView-Dl-Cyg38.js} +7 -7
- package/dist/{PublishView-bmecemJd.js → PublishView-C3X5HiH6.js} +3 -3
- package/dist/{PurchaseOrderPrintPreview-CDvO6BLm.js → PurchaseOrderPrintPreview-CSrsukQD.js} +2 -2
- package/dist/{ReceiveRequestView-CwVQ-KzO.js → ReceiveRequestView-DHfHO1hN.js} +14 -14
- package/dist/RecipeView-CDWEAe2t.js +3625 -0
- package/dist/{SettingsView-DJcAum3t.js → SettingsView-BLIWAA-o.js} +4 -4
- package/dist/{StockView-GDvWxpOJ.js → StockView-C0v3io9V.js} +21 -21
- package/dist/{SubsidiaryTreeDialog.vue_vue_type_script_setup_true_lang-DcCO7HHD.js → SubsidiaryTreeDialog.vue_vue_type_script_setup_true_lang-DlECppRw.js} +1 -1
- package/dist/{SupplierView-C3S8tTyF.js → SupplierView-J61tPOTo.js} +12 -12
- package/dist/{SurchargeView-skaVlUu3.js → SurchargeView-BACvlFV2.js} +6 -6
- package/dist/{SystemTrailDialog.vue_vue_type_script_setup_true_lang-BrBgjPjN.js → SystemTrailDialog.vue_vue_type_script_setup_true_lang-DJ08rDXE.js} +2 -2
- package/dist/{TemplatePublishDialog.vue_vue_type_script_setup_true_lang-BcvXD9Kt.js → TemplatePublishDialog.vue_vue_type_script_setup_true_lang-CSLs6e0k.js} +1 -1
- package/dist/{TransferDetails.vue_vue_type_script_setup_true_lang-BO6vRibE.js → TransferDetails.vue_vue_type_script_setup_true_lang-C_cRs9Cy.js} +1639 -1575
- package/dist/{TransferTemplateView-j6GNvA2S.js → TransferTemplateView-CEAAZaYQ.js} +20 -20
- package/dist/{UnitCostHistoryView-0H_0-DbA.js → UnitCostHistoryView-rmgLm5vt.js} +4 -4
- package/dist/{UnitDisplayControl.vue_vue_type_script_setup_true_lang-DJa1AaL2.js → UnitDisplayControl.vue_vue_type_script_setup_true_lang-o1eSDUbx.js} +4 -4
- package/dist/{UnitView-CSD1Gnsb.js → UnitView-C0xIGsAy.js} +8 -8
- package/dist/WarehouseView-RPXyVYIR.js +1082 -0
- package/dist/{WastageTemplateView-kvuJXBiI.js → WastageTemplateView-DrEDl-Cn.js} +14 -14
- package/dist/api/changelog.d.ts +132 -0
- package/dist/api/purchase-order.d.ts +2 -0
- package/dist/{app-Bon7qTu5.js → app-DxdWfyxo.js} +10046 -9137
- package/dist/app.d.ts +906 -15
- package/dist/app.js +1 -1
- package/dist/{closing-template-BjekEF5s.js → closing-template-DLkEPmhO.js} +1 -1
- package/dist/{date2-BXEHP1It.js → date2-_HV-UUr-.js} +5 -5
- package/dist/{dayjs.min-iFbgqyzU.js → dayjs.min-B4ZBHgnH.js} +1 -1
- package/dist/{decimal-BIi1j8fj.js → decimal-BP9r-3Fd.js} +2 -2
- package/dist/{defineDeepModel-IMW3a6OW.js → defineDeepModel-512Elkp4.js} +1 -1
- package/dist/{duplicate-template-DFciXweZ.js → duplicate-template-B5Wg73Th.js} +1 -1
- package/dist/{feature-CNI4MMSc.js → feature-CqyeXw0w.js} +2 -2
- package/dist/{format-time-from-id-DDH3ceGb.js → format-time-from-id-CBkBQaBx.js} +1 -1
- package/dist/{format-unit-display-Dp383g0F.js → format-unit-display-DNWWwkbf.js} +27 -27
- package/dist/{import-export.helper-BPK_S1mX.js → import-export.helper-BSz6k4kC.js} +6 -6
- package/dist/{index-BeP05_CC.js → index-BcC1HW4y.js} +3 -3
- package/dist/{index-BbhrAzLH.js → index-DCGTaCsW.js} +1 -1
- package/dist/{index-D20KUiXn.js → index-Dxc2IYXi.js} +3306 -3232
- package/dist/{inventory-core-dart.default-B7F_lZ7E.js → inventory-core-dart.default-BbZy6Cok.js} +1 -1
- package/dist/{lz-string-C_xIP_0T.js → lz-string-RCKGmlTu.js} +1 -1
- package/dist/{netsuite-a6M2ml9V.js → netsuite-tMIpKK4c.js} +3 -2
- package/dist/{number-4OG2ZSmc.js → number-Bf8QDJ39.js} +3 -3
- package/dist/{predefined-templates-CjXICvUU.js → predefined-templates-Bh5ObypP.js} +1 -1
- package/dist/{purchase-order-template-CXdomQWy.js → purchase-order-template-Cdeh8-im.js} +1 -1
- package/dist/{recalculationUtils-CEAhd7BW.js → recalculationUtils-CJ02T70y.js} +1 -1
- package/dist/{rules-Dvr47IAA.js → rules-BrpDaHZu.js} +2 -2
- package/dist/{stock-Caf05ukJ.js → stock-BP1CvvEN.js} +3 -3
- package/dist/{stock-DEOhLNew.js → stock-Ca3ejqyO.js} +1 -1
- package/dist/stores/bulk-job.d.ts +13 -0
- package/dist/style.css +1 -1
- package/dist/{supplier-BvHSfhV9.js → supplier-CikAplrR.js} +2 -2
- package/dist/{surcharge-Cu0KfPTD.js → surcharge-z_QfAREF.js} +8 -8
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{uom-rules-D71zOsgd.js → uom-rules-BU0EkWV5.js} +1 -1
- package/dist/{use-ingredient-select-dialog-DZzvq4UK.js → use-ingredient-select-dialog-DxxL31dH.js} +2 -2
- package/dist/{use-inventory-binding-dialog-C1focrkJ.js → use-inventory-binding-dialog-oRxuJqJI.js} +2 -2
- package/dist/{use-template-enabled-locations-DMcKtqkt.js → use-template-enabled-locations-CcQMhBXm.js} +2 -2
- package/dist/{use-transfer-locations-DJttEyyP.js → use-transfer-locations-ByuoGAkE.js} +2 -2
- package/dist/{useHrmPermission-DaLaaQR9.js → useHrmPermission-VmapATbV.js} +1 -1
- package/dist/{useNavigationMenu-CoX50gGK.js → useNavigationMenu-D6vXqC9N.js} +2 -2
- package/dist/{useSseClient-DTpRYQC7.js → useSseClient-Dzsg1Vj-.js} +1 -1
- package/dist/views/changelog/components/ChangelogDialog.vue.d.ts +19 -0
- package/dist/views/changelog/components/ChangelogFloatingButton.vue.d.ts +2 -0
- package/dist/views/changelog/components/ChangelogPanel.spec.d.ts +1 -0
- package/dist/views/changelog/components/ChangelogPanel.vue.d.ts +20 -0
- package/dist/views/changelog/composables/change-path.d.ts +10 -0
- package/dist/views/changelog/composables/commit-message.d.ts +9 -0
- package/dist/views/changelog/composables/commit-message.spec.d.ts +1 -0
- package/dist/views/changelog/composables/json-line-diff.d.ts +10 -0
- package/dist/views/changelog/composables/json-line-diff.spec.d.ts +1 -0
- package/dist/views/changelog/composables/use-changelog.d.ts +90 -0
- package/dist/views/changelog/composables/use-changelog.spec.d.ts +1 -0
- package/dist/views/changelog/composables/use-inventory-record-commits.d.ts +97 -0
- package/dist/views/changelog/composables/use-inventory-record-commits.spec.d.ts +1 -0
- package/dist/views/changelog/composables/use-snapshot-diff.d.ts +29 -0
- package/dist/views/changelog/composables/use-snapshot-diff.spec.d.ts +1 -0
- package/dist/views/changelog/composables/value-tree.d.ts +14 -0
- package/dist/views/changelog/composables/value-tree.spec.d.ts +1 -0
- package/dist/views/import/helper/submit-rows.d.ts +13 -0
- package/dist/views/import/helper/submit-rows.spec.d.ts +1 -0
- package/dist/views/ingredients/components/inventory-binding/InventoryBindingForm.vue.d.ts +2 -0
- package/dist/views/ingredients/components/inventory-binding/RecipeBindingBreakdown.vue.d.ts +25 -0
- package/dist/views/ingredients/components/inventory-binding/composables/recipe-breakdown.d.ts +34 -0
- package/dist/views/ingredients/components/inventory-binding/composables/recipe-breakdown.spec.d.ts +1 -0
- package/dist/views/ingredients/components/inventory-binding/v2/InventoryBindingFormV2.vue.d.ts +2 -0
- package/dist/views/ingredients/components/inventory-binding/v2/components/InventoryRecipeBindingV2Field.vue.d.ts +4 -0
- package/dist/views/receive-request/components/email-dialog/EmailDialog.spec.d.ts +1 -0
- package/dist/views/receive-request/components/email-dialog/EmailDialogProps.d.ts +23 -9
- package/dist/views/recipe/composables/use-recipe-table.d.ts +11 -0
- package/dist/{vue-i18n-BC7M3p_r.js → vue-i18n-DApbl4qi.js} +540 -540
- package/dist/{xlsx.util-D7HlgjJM.js → xlsx.util-B75j3mbr.js} +2 -2
- package/package.json +3 -3
- package/dist/App-C_6oyWjy.js +0 -311
- package/dist/BulkReceiveRequestView-FKdv9h5_.js +0 -2595
- package/dist/InventoryBindingForm.vue_vue_type_script_setup_true_lang-CJ1HyFqS.js +0 -441
- package/dist/RecipeView-B32tleCa.js +0 -3584
- package/dist/WarehouseView-Cua66P5F.js +0 -1079
package/dist/{use-ingredient-select-dialog-DZzvq4UK.js → use-ingredient-select-dialog-DxxL31dH.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineStore as S } from "pinia";
|
|
2
|
-
import { a as b } from "./app-
|
|
3
|
-
import { a as A } from "./FmMultiselectDialog-
|
|
2
|
+
import { a as b } from "./app-DxdWfyxo.js";
|
|
3
|
+
import { a as A } from "./FmMultiselectDialog-DCzjYd3G.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(
|
package/dist/{use-inventory-binding-dialog-C1focrkJ.js → use-inventory-binding-dialog-oRxuJqJI.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as g } from "./FmMultiselectDialog-
|
|
2
|
-
import { a as P } from "./app-
|
|
1
|
+
import { a as g } from "./FmMultiselectDialog-DCzjYd3G.js";
|
|
2
|
+
import { a as P } from "./app-DxdWfyxo.js";
|
|
3
3
|
import { useDialog as E } from "@feedmepos/ui-library";
|
|
4
4
|
function A() {
|
|
5
5
|
const u = P(), _ = E();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as A } from "./FmMultiselectDialog-
|
|
2
|
-
import { u as S } from "./app-
|
|
1
|
+
import { a as A } from "./FmMultiselectDialog-DCzjYd3G.js";
|
|
2
|
+
import { u as S } from "./app-DxdWfyxo.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, W as w, Z as R } from "./app-
|
|
2
|
-
import { u as E } from "./supplier-
|
|
1
|
+
import { u as g, r as l, W as w, Z as R } from "./app-DxdWfyxo.js";
|
|
2
|
+
import { u as E } from "./supplier-CikAplrR.js";
|
|
3
3
|
import { computed as u } from "vue";
|
|
4
4
|
function d(n) {
|
|
5
5
|
const c = R.safeParse(n);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { computed as T } from "vue";
|
|
2
|
-
import { b as v, R as e, a7 as b, a8 as O, a6 as A } from "./app-
|
|
2
|
+
import { b as v, R as e, a7 as b, a8 as O, a6 as A } from "./app-DxdWfyxo.js";
|
|
3
3
|
import { useCoreStore as C, useI18n as U } from "@feedmepos/mf-common";
|
|
4
|
-
import { u as _ } from "./feature-
|
|
4
|
+
import { u as _ } from "./feature-CqyeXw0w.js";
|
|
5
5
|
const L = O.reduce(
|
|
6
6
|
(o, r) => {
|
|
7
7
|
var i;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
|
|
2
|
+
modelValue: boolean;
|
|
3
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
4
|
+
"update:modelValue": (value: boolean) => void;
|
|
5
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
|
|
6
|
+
modelValue: boolean;
|
|
7
|
+
}>>> & Readonly<{
|
|
8
|
+
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
|
9
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
10
|
+
export default _default;
|
|
11
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
12
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
13
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
14
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
15
|
+
} : {
|
|
16
|
+
type: import('vue').PropType<T[K]>;
|
|
17
|
+
required: true;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ChangelogCommit } from '@/api/changelog';
|
|
2
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
|
|
3
|
+
commits: ChangelogCommit[];
|
|
4
|
+
isLoading: boolean;
|
|
5
|
+
resolveName?: ((id: string) => string | undefined) | undefined;
|
|
6
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
|
|
7
|
+
commits: ChangelogCommit[];
|
|
8
|
+
isLoading: boolean;
|
|
9
|
+
resolveName?: ((id: string) => string | undefined) | undefined;
|
|
10
|
+
}>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
11
|
+
export default _default;
|
|
12
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
13
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
14
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
15
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
16
|
+
} : {
|
|
17
|
+
type: import('vue').PropType<T[K]>;
|
|
18
|
+
required: true;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Structured commit message stored by inventory-backend: label key + verb + optional item name. */
|
|
2
|
+
export interface StructuredMessage {
|
|
3
|
+
labelKey: string;
|
|
4
|
+
verb: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function parseStructuredMessage(message?: string): StructuredMessage | null;
|
|
8
|
+
/** True when a human path segment is a changelog i18n key (vs a literal like an entity name). */
|
|
9
|
+
export declare function isLabelKey(segment: string): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type DiffLine = {
|
|
2
|
+
type: 'same' | 'add' | 'del' | 'skip';
|
|
3
|
+
text: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Diffs two JSON-encoded values line by line, git-style. Returns null unless
|
|
7
|
+
* both parse to objects/arrays whose changed region is small enough to diff —
|
|
8
|
+
* callers fall back to the plain from/to blocks.
|
|
9
|
+
*/
|
|
10
|
+
export declare function jsonLineDiff(from: string, to: string, context?: number): DiffLine[] | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { type ChangelogCommit, type ExplainSchema } from '@/api/changelog';
|
|
2
|
+
export declare function useChangelog(): {
|
|
3
|
+
commits: import("vue").Ref<{
|
|
4
|
+
doc_id: string;
|
|
5
|
+
id: string;
|
|
6
|
+
parent: string;
|
|
7
|
+
at: string;
|
|
8
|
+
authors: string[];
|
|
9
|
+
message?: string | undefined;
|
|
10
|
+
changes: {
|
|
11
|
+
at?: string | undefined;
|
|
12
|
+
actor?: string | undefined;
|
|
13
|
+
path: string;
|
|
14
|
+
kind: string;
|
|
15
|
+
from?: string | undefined;
|
|
16
|
+
to?: string | undefined;
|
|
17
|
+
from_value?: {
|
|
18
|
+
label?: string | undefined;
|
|
19
|
+
value?: string | undefined;
|
|
20
|
+
display?: string | undefined;
|
|
21
|
+
list?: boolean | undefined;
|
|
22
|
+
bookkeeping?: boolean | undefined;
|
|
23
|
+
kids?: any[] | undefined;
|
|
24
|
+
} | undefined;
|
|
25
|
+
to_value?: {
|
|
26
|
+
label?: string | undefined;
|
|
27
|
+
value?: string | undefined;
|
|
28
|
+
display?: string | undefined;
|
|
29
|
+
list?: boolean | undefined;
|
|
30
|
+
bookkeeping?: boolean | undefined;
|
|
31
|
+
kids?: any[] | undefined;
|
|
32
|
+
} | undefined;
|
|
33
|
+
field?: string[] | undefined;
|
|
34
|
+
element?: {
|
|
35
|
+
trail?: string[] | undefined;
|
|
36
|
+
name?: string | undefined;
|
|
37
|
+
id?: string | undefined;
|
|
38
|
+
} | undefined;
|
|
39
|
+
display?: {
|
|
40
|
+
from?: string | undefined;
|
|
41
|
+
to?: string | undefined;
|
|
42
|
+
} | undefined;
|
|
43
|
+
}[];
|
|
44
|
+
}[], ChangelogCommit[] | {
|
|
45
|
+
doc_id: string;
|
|
46
|
+
id: string;
|
|
47
|
+
parent: string;
|
|
48
|
+
at: string;
|
|
49
|
+
authors: string[];
|
|
50
|
+
message?: string | undefined;
|
|
51
|
+
changes: {
|
|
52
|
+
at?: string | undefined;
|
|
53
|
+
actor?: string | undefined;
|
|
54
|
+
path: string;
|
|
55
|
+
kind: string;
|
|
56
|
+
from?: string | undefined;
|
|
57
|
+
to?: string | undefined;
|
|
58
|
+
from_value?: {
|
|
59
|
+
label?: string | undefined;
|
|
60
|
+
value?: string | undefined;
|
|
61
|
+
display?: string | undefined;
|
|
62
|
+
list?: boolean | undefined;
|
|
63
|
+
bookkeeping?: boolean | undefined;
|
|
64
|
+
kids?: any[] | undefined;
|
|
65
|
+
} | undefined;
|
|
66
|
+
to_value?: {
|
|
67
|
+
label?: string | undefined;
|
|
68
|
+
value?: string | undefined;
|
|
69
|
+
display?: string | undefined;
|
|
70
|
+
list?: boolean | undefined;
|
|
71
|
+
bookkeeping?: boolean | undefined;
|
|
72
|
+
kids?: any[] | undefined;
|
|
73
|
+
} | undefined;
|
|
74
|
+
field?: string[] | undefined;
|
|
75
|
+
element?: {
|
|
76
|
+
trail?: string[] | undefined;
|
|
77
|
+
name?: string | undefined;
|
|
78
|
+
id?: string | undefined;
|
|
79
|
+
} | undefined;
|
|
80
|
+
display?: {
|
|
81
|
+
from?: string | undefined;
|
|
82
|
+
to?: string | undefined;
|
|
83
|
+
} | undefined;
|
|
84
|
+
}[];
|
|
85
|
+
}[]>;
|
|
86
|
+
isLoading: import("vue").Ref<boolean, boolean>;
|
|
87
|
+
hasMore: import("vue").Ref<boolean, boolean>;
|
|
88
|
+
load: (recordId: string, limit?: number, explain?: ExplainSchema) => Promise<void>;
|
|
89
|
+
loadMore: () => Promise<void>;
|
|
90
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { type ChangelogCommit } from '@/api/changelog';
|
|
2
|
+
export declare const INVENTORY_COMMIT_LIMIT = 1000;
|
|
3
|
+
/** Newest-first merge of two commit lists — ISO-8601 `at` compares lexicographically in chronological order. */
|
|
4
|
+
export declare function mergeCommitsNewestFirst(a: ChangelogCommit[], b: ChangelogCommit[]): ChangelogCommit[];
|
|
5
|
+
/**
|
|
6
|
+
* A record's per-entity changelog doc (Phase D-inventory:
|
|
7
|
+
* `${sharedDocId}/${module}/${entityId}`), to merge alongside its legacy
|
|
8
|
+
* shared-doc history. Most records predate the migration and have no
|
|
9
|
+
* per-entity doc yet, so an empty or failed fetch here is expected, not an
|
|
10
|
+
* error — the caller's legacy list is unaffected either way.
|
|
11
|
+
*/
|
|
12
|
+
export declare function usePerEntityCommits(): {
|
|
13
|
+
commits: import("vue").Ref<{
|
|
14
|
+
doc_id: string;
|
|
15
|
+
id: string;
|
|
16
|
+
parent: string;
|
|
17
|
+
at: string;
|
|
18
|
+
authors: string[];
|
|
19
|
+
message?: string | undefined;
|
|
20
|
+
changes: {
|
|
21
|
+
at?: string | undefined;
|
|
22
|
+
actor?: string | undefined;
|
|
23
|
+
path: string;
|
|
24
|
+
kind: string;
|
|
25
|
+
from?: string | undefined;
|
|
26
|
+
to?: string | undefined;
|
|
27
|
+
from_value?: {
|
|
28
|
+
label?: string | undefined;
|
|
29
|
+
value?: string | undefined;
|
|
30
|
+
display?: string | undefined;
|
|
31
|
+
list?: boolean | undefined;
|
|
32
|
+
bookkeeping?: boolean | undefined;
|
|
33
|
+
kids?: any[] | undefined;
|
|
34
|
+
} | undefined;
|
|
35
|
+
to_value?: {
|
|
36
|
+
label?: string | undefined;
|
|
37
|
+
value?: string | undefined;
|
|
38
|
+
display?: string | undefined;
|
|
39
|
+
list?: boolean | undefined;
|
|
40
|
+
bookkeeping?: boolean | undefined;
|
|
41
|
+
kids?: any[] | undefined;
|
|
42
|
+
} | undefined;
|
|
43
|
+
field?: string[] | undefined;
|
|
44
|
+
element?: {
|
|
45
|
+
trail?: string[] | undefined;
|
|
46
|
+
name?: string | undefined;
|
|
47
|
+
id?: string | undefined;
|
|
48
|
+
} | undefined;
|
|
49
|
+
display?: {
|
|
50
|
+
from?: string | undefined;
|
|
51
|
+
to?: string | undefined;
|
|
52
|
+
} | undefined;
|
|
53
|
+
}[];
|
|
54
|
+
}[], ChangelogCommit[] | {
|
|
55
|
+
doc_id: string;
|
|
56
|
+
id: string;
|
|
57
|
+
parent: string;
|
|
58
|
+
at: string;
|
|
59
|
+
authors: string[];
|
|
60
|
+
message?: string | undefined;
|
|
61
|
+
changes: {
|
|
62
|
+
at?: string | undefined;
|
|
63
|
+
actor?: string | undefined;
|
|
64
|
+
path: string;
|
|
65
|
+
kind: string;
|
|
66
|
+
from?: string | undefined;
|
|
67
|
+
to?: string | undefined;
|
|
68
|
+
from_value?: {
|
|
69
|
+
label?: string | undefined;
|
|
70
|
+
value?: string | undefined;
|
|
71
|
+
display?: string | undefined;
|
|
72
|
+
list?: boolean | undefined;
|
|
73
|
+
bookkeeping?: boolean | undefined;
|
|
74
|
+
kids?: any[] | undefined;
|
|
75
|
+
} | undefined;
|
|
76
|
+
to_value?: {
|
|
77
|
+
label?: string | undefined;
|
|
78
|
+
value?: string | undefined;
|
|
79
|
+
display?: string | undefined;
|
|
80
|
+
list?: boolean | undefined;
|
|
81
|
+
bookkeeping?: boolean | undefined;
|
|
82
|
+
kids?: any[] | undefined;
|
|
83
|
+
} | undefined;
|
|
84
|
+
field?: string[] | undefined;
|
|
85
|
+
element?: {
|
|
86
|
+
trail?: string[] | undefined;
|
|
87
|
+
name?: string | undefined;
|
|
88
|
+
id?: string | undefined;
|
|
89
|
+
} | undefined;
|
|
90
|
+
display?: {
|
|
91
|
+
from?: string | undefined;
|
|
92
|
+
to?: string | undefined;
|
|
93
|
+
} | undefined;
|
|
94
|
+
}[];
|
|
95
|
+
}[]>;
|
|
96
|
+
load: (recordId: string) => Promise<void>;
|
|
97
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ChangelogCommit } from '@/api/changelog';
|
|
2
|
+
import { type DiffLine } from './json-line-diff';
|
|
3
|
+
export interface SnapshotResult {
|
|
4
|
+
diff: DiffLine[] | null;
|
|
5
|
+
conflict: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Per-commit whole-document diff (kit-dialect records only): state at the
|
|
9
|
+
* commit vs state at its parent, over the backend's changelog/state
|
|
10
|
+
* passthrough. Cached per commit id so re-toggling the view is free; a 409
|
|
11
|
+
* (pre-kit history) is cached too, so it doesn't re-fetch on every toggle.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useSnapshotDiff(): {
|
|
14
|
+
isLoading: import("vue").Ref<boolean, boolean>;
|
|
15
|
+
result: import("vue").Ref<{
|
|
16
|
+
diff: {
|
|
17
|
+
type: "add" | "del" | "same" | "skip";
|
|
18
|
+
text: string;
|
|
19
|
+
}[] | null;
|
|
20
|
+
conflict: boolean;
|
|
21
|
+
} | null, SnapshotResult | {
|
|
22
|
+
diff: {
|
|
23
|
+
type: "add" | "del" | "same" | "skip";
|
|
24
|
+
text: string;
|
|
25
|
+
}[] | null;
|
|
26
|
+
conflict: boolean;
|
|
27
|
+
} | null>;
|
|
28
|
+
load: (commit: ChangelogCommit) => Promise<void>;
|
|
29
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ValueNode } from '@/api/changelog';
|
|
2
|
+
export interface ValueTreeLine {
|
|
3
|
+
depth: number;
|
|
4
|
+
label?: string;
|
|
5
|
+
text?: string;
|
|
6
|
+
bookkeeping: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Flattens one ValueNode tree; i18n-key labels are translated via `t`, literals
|
|
10
|
+
* pass through. `resolveName` fills in a display name for id-valued leaves the
|
|
11
|
+
* server couldn't resolve — ids referencing entities outside the explained
|
|
12
|
+
* value (kit's document walk only sees the value itself).
|
|
13
|
+
*/
|
|
14
|
+
export declare function flattenValueTree(node: ValueNode, t: (key: string) => string, depth?: number, resolveName?: (id: string) => string | undefined): ValueTreeLine[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The import preview merges transient validation state onto each entity row
|
|
3
|
+
* (`{ ...entity, errors }`) so the summary table can show per-row problems.
|
|
4
|
+
* The bulk API must receive the entity alone: rows submitted whole persisted
|
|
5
|
+
* `errors: []` into the inventory doc's skus/recipes/units, which then
|
|
6
|
+
* surfaced in the changelog as a phantom "Errors" field on every later edit.
|
|
7
|
+
* One boundary, one strip: valid rows only, `errors` removed.
|
|
8
|
+
*
|
|
9
|
+
* Untyped by necessity: the rows come off `importSummary` (a `ref<any>`), so a
|
|
10
|
+
* generic would only infer its own constraint and then fail against the typed
|
|
11
|
+
* bulk-request params. The spec pins the runtime contract instead.
|
|
12
|
+
*/
|
|
13
|
+
export declare function submittableRows(rows: Array<Record<string, any>> | undefined): any[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -8,6 +8,8 @@ export interface InventoryBindingFormProps {
|
|
|
8
8
|
disabled?: boolean;
|
|
9
9
|
readonly?: boolean;
|
|
10
10
|
enableIngredientGroup?: boolean;
|
|
11
|
+
/** recipe amounts may be keyed in with decimals — off keeps them whole numbers */
|
|
12
|
+
allowRecipeDecimal?: boolean;
|
|
11
13
|
}
|
|
12
14
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<InventoryBindingFormProps>, {
|
|
13
15
|
modelValue: () => never[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
|
|
2
|
+
recipeId: string;
|
|
3
|
+
/**
|
|
4
|
+
* The amount keyed in on the row, as typed — every contained amount previews as
|
|
5
|
+
* configured × this. Raw text rather than a number so a cleared field is not read as 0.
|
|
6
|
+
*/
|
|
7
|
+
multiplier: string;
|
|
8
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
|
|
9
|
+
recipeId: string;
|
|
10
|
+
/**
|
|
11
|
+
* The amount keyed in on the row, as typed — every contained amount previews as
|
|
12
|
+
* configured × this. Raw text rather than a number so a cleared field is not read as 0.
|
|
13
|
+
*/
|
|
14
|
+
multiplier: string;
|
|
15
|
+
}>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
16
|
+
export default _default;
|
|
17
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
18
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
19
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
20
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
21
|
+
} : {
|
|
22
|
+
type: import('vue').PropType<T[K]>;
|
|
23
|
+
required: true;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { FdoDecimal } from '@feedmepos/core/entity';
|
|
2
|
+
export interface RecipeBreakdownNode {
|
|
3
|
+
key: string;
|
|
4
|
+
name: string;
|
|
5
|
+
/** configured amount, already compounded through the parent recipes above it */
|
|
6
|
+
amount: FdoDecimal;
|
|
7
|
+
/** unit the amount is keyed in, empty for a recipe or an unresolved binding */
|
|
8
|
+
unit: string;
|
|
9
|
+
depth: number;
|
|
10
|
+
isRecipe: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** what a recipe contains, and how to label a binding — supplied by the store in the composable */
|
|
13
|
+
export interface RecipeBreakdownSource {
|
|
14
|
+
contentsOf: (recipeId: string) => FdoInventoryBinding[];
|
|
15
|
+
bindingName: (binding: FdoInventoryBinding) => string;
|
|
16
|
+
bindingUnit: (binding: FdoInventoryBinding) => string;
|
|
17
|
+
}
|
|
18
|
+
/** exact decimal multiply: integer amounts multiply, precisions add — no float drift */
|
|
19
|
+
export declare function multiplyDecimal(a: FdoDecimal, b: FdoDecimal): FdoDecimal;
|
|
20
|
+
/**
|
|
21
|
+
* What a contained amount works out to for the amount keyed in on the row:
|
|
22
|
+
* configured × input. Takes the raw text, so a row cleared mid-typing previews
|
|
23
|
+
* unscaled rather than flashing zeros — `+''` would read as 0.
|
|
24
|
+
*/
|
|
25
|
+
export declare function previewAmount(amount: FdoDecimal, multiplier: string): string;
|
|
26
|
+
/** the keyed-in text as a decimal; unscaled while it is blank or not yet a number */
|
|
27
|
+
export declare function parseMultiplier(multiplier: string): FdoDecimal;
|
|
28
|
+
/**
|
|
29
|
+
* Flattens a recipe's binding tree depth-first, descending into nested recipes and
|
|
30
|
+
* multiplying each amount by the chain of recipe amounts above it.
|
|
31
|
+
* `visited` keeps a recipe that (transitively) contains itself from recursing forever —
|
|
32
|
+
* the form reports that separately as a circular-dependency error.
|
|
33
|
+
*/
|
|
34
|
+
export declare function flattenRecipeTree(recipeId: string, source: RecipeBreakdownSource, depth?: number, visited?: Set<string>, factor?: FdoDecimal): RecipeBreakdownNode[];
|
package/dist/views/ingredients/components/inventory-binding/composables/recipe-breakdown.spec.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/views/ingredients/components/inventory-binding/v2/InventoryBindingFormV2.vue.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export interface InventoryBindingFormProps {
|
|
|
19
19
|
recipeBindingConfig?: InventoryRecipeBindingFormConfig;
|
|
20
20
|
skuBindingConfig?: InventorySkuBindingFormConfig;
|
|
21
21
|
enableIngredientGroup?: boolean;
|
|
22
|
+
/** recipe amounts may be keyed in with decimals — off keeps them whole numbers */
|
|
23
|
+
allowRecipeDecimal?: boolean;
|
|
22
24
|
}
|
|
23
25
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<InventoryBindingFormProps>, {
|
|
24
26
|
modelValue: () => never[];
|
|
@@ -27,6 +27,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
27
27
|
} | undefined;
|
|
28
28
|
displayName: string;
|
|
29
29
|
showError: boolean;
|
|
30
|
+
/** recipe amount may be keyed in with decimals — off keeps it a whole number */
|
|
31
|
+
allowRecipeDecimal?: boolean | undefined;
|
|
30
32
|
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
31
33
|
delete: (id: string) => void;
|
|
32
34
|
"update:modelValue": (value: {
|
|
@@ -83,6 +85,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
83
85
|
} | undefined;
|
|
84
86
|
displayName: string;
|
|
85
87
|
showError: boolean;
|
|
88
|
+
/** recipe amount may be keyed in with decimals — off keeps it a whole number */
|
|
89
|
+
allowRecipeDecimal?: boolean | undefined;
|
|
86
90
|
}>>> & Readonly<{
|
|
87
91
|
onDelete?: ((id: string) => any) | undefined;
|
|
88
92
|
"onUpdate:modelValue"?: ((value: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,21 +1,35 @@
|
|
|
1
1
|
import type { FmpBusiness } from "node_modules/@feedmepos/mf-common/dist/store";
|
|
2
|
+
import type { GetEmailAddressData } from "@/api/email";
|
|
2
3
|
export interface EmailDialogProps {
|
|
3
4
|
show?: boolean;
|
|
4
|
-
/** HTML content for the iframe preview
|
|
5
|
+
/** HTML content for the iframe preview. */
|
|
5
6
|
modelValue?: string;
|
|
6
|
-
/**
|
|
7
|
-
* Blob URL of the Lambda-generated PDF (bulk view path).
|
|
8
|
-
* When set the dialog shows the PDF instead of the rendered HTML.
|
|
9
|
-
* Caller is responsible for revoking via URL.revokeObjectURL when done.
|
|
10
|
-
*/
|
|
11
|
-
pdfBlobUrl?: string;
|
|
12
|
-
/** True while the PDF is being generated — shows a spinner instead of the preview. */
|
|
13
|
-
pdfLoading?: boolean;
|
|
14
7
|
email?: string;
|
|
15
8
|
business?: FmpBusiness;
|
|
16
9
|
senderName?: string;
|
|
17
10
|
senderEmail?: string;
|
|
18
11
|
recipientName?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Preview-only PDF blob URL (bulk view's dispatch mode) — shown in an
|
|
14
|
+
* iframe purely so the user can see what will be sent. Has no bearing on
|
|
15
|
+
* the actual send: the email attachment is generated independently,
|
|
16
|
+
* server-side, by the enqueued Lambda job. Caller revokes via
|
|
17
|
+
* URL.revokeObjectURL when done.
|
|
18
|
+
*/
|
|
19
|
+
pdfBlobUrl?: string;
|
|
20
|
+
/** True while the preview PDF is being generated — shows a spinner instead of the iframe. */
|
|
21
|
+
pdfLoading?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* When set, the dialog runs in "dispatch" mode (bulk view's single-email
|
|
24
|
+
* action): no direct SMS-API send. Send simply invokes this with the chosen
|
|
25
|
+
* sender and optional body text — the caller enqueues the background
|
|
26
|
+
* Lambda job (same pipeline as Email All) and owns its own success/error
|
|
27
|
+
* messaging. Throw to keep the dialog open on failure.
|
|
28
|
+
*/
|
|
29
|
+
onDispatch?: (payload: {
|
|
30
|
+
sender: GetEmailAddressData;
|
|
31
|
+
message: string;
|
|
32
|
+
}) => Promise<void> | void;
|
|
19
33
|
/** Called when the dialog requests a visibility change (e.g. user closes it). */
|
|
20
34
|
'onUpdate:show'?: (show: boolean) => void;
|
|
21
35
|
}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import type { ColumnDef } from '@tanstack/vue-table';
|
|
2
|
+
/** one resolved binding of a recipe: which nested recipe it came from, and the amount keyed in */
|
|
3
|
+
export type RecipeBindingCell = {
|
|
4
|
+
parentRecipe: string | null;
|
|
5
|
+
label: string;
|
|
6
|
+
};
|
|
7
|
+
/** the bindings of one nested recipe, or the recipe's own when `parentRecipe` is null */
|
|
8
|
+
export type RecipeBindingGroup = {
|
|
9
|
+
parentRecipe: string | null;
|
|
10
|
+
labels: string[];
|
|
11
|
+
};
|
|
2
12
|
export type FormattedRecipe = {
|
|
3
13
|
recipe: string;
|
|
4
14
|
readonly ingredients: string;
|
|
15
|
+
readonly bindings: RecipeBindingGroup[];
|
|
5
16
|
original: FdoInventoryRecipe;
|
|
6
17
|
};
|
|
7
18
|
export declare function useRecipeTable(): {
|