@vqnguyen1/piece-sellercloud 0.1.3 → 0.1.4
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/package.json +1 -1
- package/src/lib/actions/import-inventory-from-csv.d.ts +2 -1
- package/src/lib/actions/import-inventory-from-csv.js +12 -7
- package/src/lib/actions/import-inventory-from-csv.js.map +1 -1
- package/src/lib/actions/import-physical-inventory.d.ts +2 -1
- package/src/lib/actions/import-physical-inventory.js +8 -3
- package/src/lib/actions/import-physical-inventory.js.map +1 -1
- package/src/lib/common/inventory.d.ts +5 -2
- package/src/lib/common/inventory.js +28 -0
- package/src/lib/common/inventory.js.map +1 -1
- package/src/lib/common/props.d.ts +2 -1
- package/src/lib/common/props.js +24 -19
- package/src/lib/common/props.js.map +1 -1
- package/src/lib/common/quantity-ledger.d.ts +25 -0
- package/src/lib/common/quantity-ledger.js +44 -0
- package/src/lib/common/quantity-ledger.js.map +1 -0
- package/src/lib/common/run-import.d.ts +5 -4
- package/src/lib/common/run-import.js +10 -4
- package/src/lib/common/run-import.js.map +1 -1
- package/src/lib/common/set-inventory.d.ts +7 -2
- package/src/lib/common/set-inventory.js +64 -4
- package/src/lib/common/set-inventory.js.map +1 -1
package/package.json
CHANGED
|
@@ -20,7 +20,8 @@ export declare const importInventoryFromCsv: import("@activepieces/pieces-framew
|
|
|
20
20
|
writeMode: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
21
21
|
adjustmentReason: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
22
22
|
verifyAfterWrite: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
23
|
-
|
|
23
|
+
trustLastWritten: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
24
|
+
zeroMissing: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
24
25
|
inventoryDate: import("@activepieces/pieces-framework").DateTimeProperty<false>;
|
|
25
26
|
dryRun: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
26
27
|
waitForCompletion: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
@@ -55,7 +55,8 @@ exports.importInventoryFromCsv = (0, pieces_framework_1.createAction)({
|
|
|
55
55
|
writeMode: props_1.sellercloudProps.writeMode,
|
|
56
56
|
adjustmentReason: props_1.sellercloudProps.adjustmentReason,
|
|
57
57
|
verifyAfterWrite: props_1.sellercloudProps.verifyAfterWrite,
|
|
58
|
-
|
|
58
|
+
trustLastWritten: props_1.sellercloudProps.trustLastWritten,
|
|
59
|
+
zeroMissing: props_1.sellercloudProps.zeroMissing,
|
|
59
60
|
inventoryDate: props_1.sellercloudProps.inventoryDate,
|
|
60
61
|
dryRun: pieces_framework_1.Property.Checkbox({
|
|
61
62
|
displayName: 'Dry Run',
|
|
@@ -70,10 +71,10 @@ exports.importInventoryFromCsv = (0, pieces_framework_1.createAction)({
|
|
|
70
71
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
71
72
|
var _a, _b, _c, _d, _e, _f;
|
|
72
73
|
const props = context.propsValue;
|
|
73
|
-
const updateType = props.updateType === 'FULL' ? 'FULL' : 'PARTIAL';
|
|
74
74
|
const onlyProductIds = ((_a = props.onlyProductIds) !== null && _a !== void 0 ? _a : []).map((id) => String(id).trim()).filter((id) => id !== '');
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
const writeMode = writeModeOf({ value: props.writeMode });
|
|
76
|
+
if (writeMode === 'REPLACE_WAREHOUSE' && onlyProductIds.length > 0) {
|
|
77
|
+
throw new Error('"Only These Products" can\'t be combined with replacing the warehouse: every product outside the subset would be set to 0. Use "Set only these products" instead.');
|
|
77
78
|
}
|
|
78
79
|
const auth = context.auth.props;
|
|
79
80
|
const token = yield client_1.sellercloudClient.getToken({ auth, store: context.store });
|
|
@@ -99,7 +100,7 @@ exports.importInventoryFromCsv = (0, pieces_framework_1.createAction)({
|
|
|
99
100
|
unmatchedSample: mapping.unmatchedSample,
|
|
100
101
|
productsToImport: mapping.rows.length,
|
|
101
102
|
missingFromFile: mapping.missingFromFile,
|
|
102
|
-
|
|
103
|
+
writeMode,
|
|
103
104
|
};
|
|
104
105
|
if (props.dryRun) {
|
|
105
106
|
const warehouse = yield run_import_1.importRunner.findWarehouse({ auth, token, warehouseId: props.warehouse });
|
|
@@ -110,11 +111,12 @@ exports.importInventoryFromCsv = (0, pieces_framework_1.createAction)({
|
|
|
110
111
|
token,
|
|
111
112
|
store: context.store,
|
|
112
113
|
warehouseId: props.warehouse,
|
|
113
|
-
writeMode
|
|
114
|
+
writeMode,
|
|
114
115
|
adjustmentReason: props.adjustmentReason,
|
|
115
116
|
verifyAfterWrite: props.verifyAfterWrite,
|
|
117
|
+
trustLastWritten: props.trustLastWritten,
|
|
118
|
+
zeroMissing: props.zeroMissing,
|
|
116
119
|
rows: mapping.rows,
|
|
117
|
-
updateType,
|
|
118
120
|
inventoryDate: props.inventoryDate ? new Date(props.inventoryDate) : new Date(),
|
|
119
121
|
waitForCompletion: (_e = props.waitForCompletion) !== null && _e !== void 0 ? _e : true,
|
|
120
122
|
timeoutSeconds: (_f = props.timeoutSeconds) !== null && _f !== void 0 ? _f : 300,
|
|
@@ -123,4 +125,7 @@ exports.importInventoryFromCsv = (0, pieces_framework_1.createAction)({
|
|
|
123
125
|
});
|
|
124
126
|
},
|
|
125
127
|
});
|
|
128
|
+
function writeModeOf({ value }) {
|
|
129
|
+
return value === 'ADD' || value === 'SET_LISTED' ? value : 'REPLACE_WAREHOUSE';
|
|
130
|
+
}
|
|
126
131
|
//# sourceMappingURL=import-inventory-from-csv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-inventory-from-csv.js","sourceRoot":"","sources":["../../../../src/lib/actions/import-inventory-from-csv.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,kCAA0C;AAC1C,6CAAqD;AACrD,uDAAmD;AACnD,2CAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"import-inventory-from-csv.js","sourceRoot":"","sources":["../../../../src/lib/actions/import-inventory-from-csv.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,8 @@ export declare const importPhysicalInventory: import("@activepieces/pieces-frame
|
|
|
14
14
|
writeMode: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
15
15
|
adjustmentReason: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
16
16
|
verifyAfterWrite: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
17
|
-
|
|
17
|
+
trustLastWritten: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
18
|
+
zeroMissing: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
18
19
|
inventoryDate: import("@activepieces/pieces-framework").DateTimeProperty<false>;
|
|
19
20
|
waitForCompletion: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
20
21
|
timeoutSeconds: import("@activepieces/pieces-framework").NumberProperty<false>;
|
|
@@ -23,7 +23,8 @@ exports.importPhysicalInventory = (0, pieces_framework_1.createAction)({
|
|
|
23
23
|
writeMode: props_1.sellercloudProps.writeMode,
|
|
24
24
|
adjustmentReason: props_1.sellercloudProps.adjustmentReason,
|
|
25
25
|
verifyAfterWrite: props_1.sellercloudProps.verifyAfterWrite,
|
|
26
|
-
|
|
26
|
+
trustLastWritten: props_1.sellercloudProps.trustLastWritten,
|
|
27
|
+
zeroMissing: props_1.sellercloudProps.zeroMissing,
|
|
27
28
|
inventoryDate: props_1.sellercloudProps.inventoryDate,
|
|
28
29
|
waitForCompletion: props_1.sellercloudProps.waitForCompletion,
|
|
29
30
|
timeoutSeconds: props_1.sellercloudProps.timeoutSeconds,
|
|
@@ -40,11 +41,12 @@ exports.importPhysicalInventory = (0, pieces_framework_1.createAction)({
|
|
|
40
41
|
token,
|
|
41
42
|
store: context.store,
|
|
42
43
|
warehouseId: props.warehouse,
|
|
43
|
-
writeMode: props.writeMode
|
|
44
|
+
writeMode: writeModeOf({ value: props.writeMode }),
|
|
44
45
|
adjustmentReason: props.adjustmentReason,
|
|
45
46
|
verifyAfterWrite: props.verifyAfterWrite,
|
|
47
|
+
trustLastWritten: props.trustLastWritten,
|
|
48
|
+
zeroMissing: props.zeroMissing,
|
|
46
49
|
rows,
|
|
47
|
-
updateType: props.updateType === 'FULL' ? 'FULL' : 'PARTIAL',
|
|
48
50
|
inventoryDate: props.inventoryDate ? new Date(props.inventoryDate) : new Date(),
|
|
49
51
|
waitForCompletion: (_a = props.waitForCompletion) !== null && _a !== void 0 ? _a : true,
|
|
50
52
|
timeoutSeconds: (_b = props.timeoutSeconds) !== null && _b !== void 0 ? _b : 300,
|
|
@@ -69,4 +71,7 @@ function parseItems({ items }) {
|
|
|
69
71
|
function isRecord(value) {
|
|
70
72
|
return typeof value === 'object' && value !== null;
|
|
71
73
|
}
|
|
74
|
+
function writeModeOf({ value }) {
|
|
75
|
+
return value === 'ADD' || value === 'SET_LISTED' ? value : 'REPLACE_WAREHOUSE';
|
|
76
|
+
}
|
|
72
77
|
//# sourceMappingURL=import-physical-inventory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-physical-inventory.js","sourceRoot":"","sources":["../../../../src/lib/actions/import-physical-inventory.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,kCAA0C;AAC1C,6CAAqD;AAErD,2CAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"import-physical-inventory.js","sourceRoot":"","sources":["../../../../src/lib/actions/import-physical-inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SellercloudAuthProps } from './client';
|
|
2
|
-
declare function submitImport({ auth, token, warehouse, rows, updateType, inventoryDate }: SubmitImportParams): Promise<SubmittedJob>;
|
|
2
|
+
declare function submitImport({ auth, token, warehouse, rows, updateType, inventoryDate, waitForSlotSeconds }: SubmitImportParams): Promise<SubmittedJob>;
|
|
3
3
|
declare function getJob({ auth, token, jobId }: {
|
|
4
4
|
auth: SellercloudAuthProps;
|
|
5
5
|
token?: string;
|
|
@@ -44,7 +44,7 @@ type SubmittedJob = {
|
|
|
44
44
|
link: string | null;
|
|
45
45
|
message: string | null;
|
|
46
46
|
};
|
|
47
|
-
type
|
|
47
|
+
type SubmitOnceParams = {
|
|
48
48
|
auth: SellercloudAuthProps;
|
|
49
49
|
token?: string;
|
|
50
50
|
warehouse: {
|
|
@@ -55,6 +55,9 @@ type SubmitImportParams = {
|
|
|
55
55
|
updateType: UpdateType;
|
|
56
56
|
inventoryDate: Date;
|
|
57
57
|
};
|
|
58
|
+
type SubmitImportParams = SubmitOnceParams & {
|
|
59
|
+
waitForSlotSeconds?: number;
|
|
60
|
+
};
|
|
58
61
|
type WaitParams = {
|
|
59
62
|
auth: SellercloudAuthProps;
|
|
60
63
|
token?: string;
|
|
@@ -3,8 +3,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.inventoryImport = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
6
|
+
const shared_1 = require("@activepieces/shared");
|
|
6
7
|
const client_1 = require("./client");
|
|
8
|
+
// SellerCloud permits one physical-inventory import in flight per account and answers
|
|
9
|
+
// 500 "You are not allowed to import physical inventory because N jobs are already
|
|
10
|
+
// submitted" otherwise. Several PDC warehouses therefore cannot import in parallel; wait
|
|
11
|
+
// for the slot instead of failing the run.
|
|
7
12
|
function submitImport(_a) {
|
|
13
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, token, warehouse, rows, updateType, inventoryDate, waitForSlotSeconds }) {
|
|
14
|
+
const deadline = Date.now() + (waitForSlotSeconds !== null && waitForSlotSeconds !== void 0 ? waitForSlotSeconds : DEFAULT_SLOT_WAIT_S) * 1000;
|
|
15
|
+
for (;;) {
|
|
16
|
+
const { data, error } = yield (0, shared_1.tryCatch)(() => submitOnce({ auth, token, warehouse, rows, updateType, inventoryDate }));
|
|
17
|
+
if (!error) {
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
const blockingJob = blockedByJob({ error });
|
|
21
|
+
if ((0, shared_1.isNil)(blockingJob) || Date.now() > deadline) {
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
yield waitForJob({ auth, token, jobId: blockingJob, timeoutSeconds: Math.max(1, Math.round((deadline - Date.now()) / 1000)) });
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function blockedByJob({ error }) {
|
|
29
|
+
var _a;
|
|
30
|
+
const body = error instanceof pieces_common_1.HttpError ? String((_a = error.response.body) !== null && _a !== void 0 ? _a : '') : '';
|
|
31
|
+
const match = /already submitted[\s\S]*?(\d+)/.exec(body);
|
|
32
|
+
return match ? Number(match[1]) : null;
|
|
33
|
+
}
|
|
34
|
+
function submitOnce(_a) {
|
|
8
35
|
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, token, warehouse, rows, updateType, inventoryDate }) {
|
|
9
36
|
var _b, _c;
|
|
10
37
|
const csv = buildTemplateCsv({ warehouseName: warehouse.Name, rows, inventoryDate });
|
|
@@ -108,6 +135,7 @@ function statusName({ raw }) {
|
|
|
108
135
|
}
|
|
109
136
|
const TENANT_TIME_ZONE = 'America/New_York';
|
|
110
137
|
const CSV_FORMAT = 1;
|
|
138
|
+
const DEFAULT_SLOT_WAIT_S = 1800;
|
|
111
139
|
const POLL_INTERVAL_MS = 5000;
|
|
112
140
|
const TEMPLATE_HEADER = 'ProductID,Warehouse,PhysicalInventoryQty,InventoryDate,LocationNotes';
|
|
113
141
|
// The documented enum has no 2, so a dense array silently reads Completed (3) as Failed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../../../src/lib/common/inventory.ts"],"names":[],"mappings":";;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../../../src/lib/common/inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ export declare const sellercloudProps: {
|
|
|
8
8
|
writeMode: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
9
9
|
adjustmentReason: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
10
10
|
verifyAfterWrite: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
11
|
-
|
|
11
|
+
trustLastWritten: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
12
|
+
zeroMissing: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
12
13
|
inventoryDate: import("@activepieces/pieces-framework").DateTimeProperty<false>;
|
|
13
14
|
waitForCompletion: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
14
15
|
timeoutSeconds: import("@activepieces/pieces-framework").NumberProperty<false>;
|
package/src/lib/common/props.js
CHANGED
|
@@ -27,43 +27,47 @@ const warehouse = pieces_framework_1.Property.Dropdown({
|
|
|
27
27
|
};
|
|
28
28
|
}),
|
|
29
29
|
});
|
|
30
|
-
//
|
|
30
|
+
// Three real behaviours, named by what they do rather than by the API's UpdateType flag:
|
|
31
|
+
// a Full import replaces the warehouse (verified: a listed product is set to the file
|
|
32
|
+
// value, an unlisted one goes to 0), a Partial import adds, and delta adjustments set
|
|
33
|
+
// only the listed products without touching anything else.
|
|
31
34
|
const writeMode = pieces_framework_1.Property.StaticDropdown({
|
|
32
35
|
displayName: 'Quantity Handling',
|
|
33
|
-
description: '
|
|
36
|
+
description: 'How the file quantities are applied to this warehouse.',
|
|
34
37
|
required: true,
|
|
35
|
-
defaultValue: '
|
|
38
|
+
defaultValue: 'SET_LISTED',
|
|
36
39
|
options: {
|
|
37
40
|
options: [
|
|
38
|
-
{ label: 'Set
|
|
39
|
-
{ label: '
|
|
41
|
+
{ label: 'Set only these products — leave other products untouched', value: 'SET_LISTED' },
|
|
42
|
+
{ label: 'Replace the warehouse — set these products, zero everything else (slow: a full import takes ~1 hour and blocks every other import account-wide)', value: 'REPLACE_WAREHOUSE' },
|
|
43
|
+
{ label: 'Add to current quantities', value: 'ADD' },
|
|
40
44
|
],
|
|
41
45
|
},
|
|
42
46
|
});
|
|
43
47
|
const adjustmentReason = pieces_framework_1.Property.ShortText({
|
|
44
48
|
displayName: 'Adjustment Reason',
|
|
45
|
-
description: 'Recorded against each adjustment in SellerCloud. Only used when setting
|
|
49
|
+
description: 'Recorded against each adjustment in SellerCloud. Only used when setting only the listed products.',
|
|
46
50
|
required: false,
|
|
47
51
|
defaultValue: 'PDC inventory import',
|
|
48
52
|
});
|
|
53
|
+
const trustLastWritten = pieces_framework_1.Property.Checkbox({
|
|
54
|
+
displayName: 'Trust Last Written Quantities',
|
|
55
|
+
description: 'When setting only the listed products, reuses what this flow last wrote instead of reading each one back. Much faster, but only safe when nothing else changes inventory in this warehouse.',
|
|
56
|
+
required: false,
|
|
57
|
+
defaultValue: false,
|
|
58
|
+
});
|
|
59
|
+
const zeroMissing = pieces_framework_1.Property.Checkbox({
|
|
60
|
+
displayName: 'Zero Products Missing From This Run',
|
|
61
|
+
description: 'When setting only the listed products, any product this flow wrote previously but that is absent now is set to 0. Gives the same end state as replacing the warehouse, without the hours-long full import. Needs "Trust Last Written Quantities" history to know what was written before.',
|
|
62
|
+
required: false,
|
|
63
|
+
defaultValue: false,
|
|
64
|
+
});
|
|
49
65
|
const verifyAfterWrite = pieces_framework_1.Property.Checkbox({
|
|
50
66
|
displayName: 'Verify After Writing',
|
|
51
67
|
description: 'Adjustments apply asynchronously. When on, this polls until the quantities settle and reports any that did not land.',
|
|
52
68
|
required: false,
|
|
53
69
|
defaultValue: true,
|
|
54
70
|
});
|
|
55
|
-
const updateType = pieces_framework_1.Property.StaticDropdown({
|
|
56
|
-
displayName: 'Update Type',
|
|
57
|
-
description: 'Only applies when adding to current amounts. Partial changes only the products in the file; Full also sets every other product in this warehouse to 0.',
|
|
58
|
-
required: true,
|
|
59
|
-
defaultValue: 'PARTIAL',
|
|
60
|
-
options: {
|
|
61
|
-
options: [
|
|
62
|
-
{ label: 'Partial (only products in the file)', value: 'PARTIAL' },
|
|
63
|
-
{ label: 'Full (products not in the file go to 0)', value: 'FULL' },
|
|
64
|
-
],
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
71
|
const inventoryDate = pieces_framework_1.Property.DateTime({
|
|
68
72
|
displayName: 'Inventory Date',
|
|
69
73
|
description: 'When the counts were taken. Defaults to now.',
|
|
@@ -86,7 +90,8 @@ exports.sellercloudProps = {
|
|
|
86
90
|
writeMode,
|
|
87
91
|
adjustmentReason,
|
|
88
92
|
verifyAfterWrite,
|
|
89
|
-
|
|
93
|
+
trustLastWritten,
|
|
94
|
+
zeroMissing,
|
|
90
95
|
inventoryDate,
|
|
91
96
|
waitForCompletion,
|
|
92
97
|
timeoutSeconds,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../../../src/lib/common/props.ts"],"names":[],"mappings":";;;;AAAA,qEAA0D;AAC1D,iDAAgD;AAChD,kCAA0C;AAC1C,qCAA6C;AAE7C,MAAM,SAAS,GAAG,2BAAQ,CAAC,QAAQ,CAAC;IAChC,IAAI,EAAE,sBAAe;IACrB,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,EAAE;IACd,OAAO,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;QACrF,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,iBAAQ,EAAC,GAAG,EAAE,CAAC,0BAAiB,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrG,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,6BAA6B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACtG,CAAC;QACD,OAAO;YACH,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;iBACb,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACnE,CAAC;IACN,CAAC,CAAA;CACJ,CAAC,CAAC;AAEH,
|
|
1
|
+
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../../../src/lib/common/props.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
declare function read({ store, warehouseId }: LedgerRef): Promise<Record<string, number>>;
|
|
2
|
+
declare function write({ store, warehouseId, quantities }: LedgerRef & {
|
|
3
|
+
quantities: Record<string, number>;
|
|
4
|
+
}): Promise<void>;
|
|
5
|
+
declare function merge({ store, warehouseId, applied }: LedgerRef & {
|
|
6
|
+
applied: Record<string, number>;
|
|
7
|
+
}): Promise<Record<string, number>>;
|
|
8
|
+
declare function forget({ store, warehouseId, productIds }: LedgerRef & {
|
|
9
|
+
productIds: string[];
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare const quantityLedger: {
|
|
12
|
+
read: typeof read;
|
|
13
|
+
write: typeof write;
|
|
14
|
+
merge: typeof merge;
|
|
15
|
+
forget: typeof forget;
|
|
16
|
+
};
|
|
17
|
+
type LedgerRef = {
|
|
18
|
+
store: LedgerStore;
|
|
19
|
+
warehouseId: number;
|
|
20
|
+
};
|
|
21
|
+
export type LedgerStore = {
|
|
22
|
+
get: <T>(key: string) => Promise<T | null>;
|
|
23
|
+
put: (key: string, value: unknown) => Promise<unknown>;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.quantityLedger = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const shared_1 = require("@activepieces/shared");
|
|
6
|
+
// Reading a shadow SKU's warehouse quantity costs one request each, and no bulk endpoint
|
|
7
|
+
// exposes it, so a 466-SKU warehouse costs ~466 reads per run. When this integration is
|
|
8
|
+
// the only writer to a warehouse, the quantity it last wrote is already known, and the
|
|
9
|
+
// delta can be computed from that instead. The ledger is per warehouse so two PDCs never
|
|
10
|
+
// read each other's numbers.
|
|
11
|
+
function read(_a) {
|
|
12
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ store, warehouseId }) {
|
|
13
|
+
const { data } = yield (0, shared_1.tryCatch)(() => store.get(key({ warehouseId })));
|
|
14
|
+
return (0, shared_1.isNil)(data) ? {} : data;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function write(_a) {
|
|
18
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ store, warehouseId, quantities }) {
|
|
19
|
+
yield store.put(key({ warehouseId }), quantities);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
// Only the SKUs just written are updated: a SKU missing from this run keeps whatever the
|
|
23
|
+
// previous run recorded, so dropping out of one file does not erase its history.
|
|
24
|
+
function merge(_a) {
|
|
25
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ store, warehouseId, applied }) {
|
|
26
|
+
const existing = yield read({ store, warehouseId });
|
|
27
|
+
const merged = Object.assign(Object.assign({}, existing), applied);
|
|
28
|
+
yield write({ store, warehouseId, quantities: merged });
|
|
29
|
+
return merged;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function forget(_a) {
|
|
33
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ store, warehouseId, productIds }) {
|
|
34
|
+
const existing = yield read({ store, warehouseId });
|
|
35
|
+
const remaining = Object.fromEntries(Object.entries(existing).filter(([productId]) => !productIds.includes(productId)));
|
|
36
|
+
yield write({ store, warehouseId, quantities: remaining });
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function key({ warehouseId }) {
|
|
40
|
+
return `${LEDGER_PREFIX}${warehouseId}`;
|
|
41
|
+
}
|
|
42
|
+
exports.quantityLedger = { read, write, merge, forget };
|
|
43
|
+
const LEDGER_PREFIX = 'sellercloud_last_written_wh';
|
|
44
|
+
//# sourceMappingURL=quantity-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quantity-ledger.js","sourceRoot":"","sources":["../../../../src/lib/common/quantity-ledger.ts"],"names":[],"mappings":";;;;AAAA,iDAAuD;AAEvD,yFAAyF;AACzF,wFAAwF;AACxF,uFAAuF;AACvF,yFAAyF;AACzF,6BAA6B;AAC7B,SAAe,IAAI;iEAAC,EAAE,KAAK,EAAE,WAAW,EAAa;QACjD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,iBAAQ,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAyB,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/F,OAAO,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC;CAAA;AAED,SAAe,KAAK;iEAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAsD;QACvG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;CAAA;AAED,yFAAyF;AACzF,iFAAiF;AACjF,SAAe,KAAK;iEAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAmD;QACjG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,mCAAQ,QAAQ,GAAK,OAAO,CAAE,CAAC;QAC3C,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA;AAED,SAAe,MAAM;iEAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAwC;QAC1F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACxH,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;CAAA;AAED,SAAS,GAAG,CAAC,EAAE,WAAW,EAA2B;IACjD,OAAO,GAAG,aAAa,GAAG,WAAW,EAAE,CAAC;AAC5C,CAAC;AAEY,QAAA,cAAc,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAE7D,MAAM,aAAa,GAAG,6BAA6B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SellercloudAuthProps, TokenStore } from './client';
|
|
2
|
-
import { InventoryRow, JobResult
|
|
2
|
+
import { InventoryRow, JobResult } from './inventory';
|
|
3
3
|
import { SetOutcome } from './set-inventory';
|
|
4
|
-
declare function runImport({ auth, token, store, warehouseId, rows,
|
|
4
|
+
declare function runImport({ auth, token, store, warehouseId, rows, inventoryDate, waitForCompletion, timeoutSeconds, writeMode, adjustmentReason, verifyAfterWrite, trustLastWritten, zeroMissing }: RunImportParams): Promise<ImportOutcome>;
|
|
5
5
|
declare function findWarehouse({ auth, token, warehouseId }: {
|
|
6
6
|
auth: SellercloudAuthProps;
|
|
7
7
|
token: string;
|
|
@@ -27,7 +27,7 @@ export type ImportOutcome = {
|
|
|
27
27
|
} | null;
|
|
28
28
|
set?: SetOutcome;
|
|
29
29
|
};
|
|
30
|
-
export type WriteMode = '
|
|
30
|
+
export type WriteMode = 'REPLACE_WAREHOUSE' | 'SET_LISTED' | 'ADD';
|
|
31
31
|
type RunImportParams = {
|
|
32
32
|
auth: SellercloudAuthProps;
|
|
33
33
|
token: string;
|
|
@@ -35,9 +35,10 @@ type RunImportParams = {
|
|
|
35
35
|
writeMode: WriteMode;
|
|
36
36
|
adjustmentReason?: string;
|
|
37
37
|
verifyAfterWrite?: boolean;
|
|
38
|
+
trustLastWritten?: boolean;
|
|
39
|
+
zeroMissing?: boolean;
|
|
38
40
|
warehouseId: number;
|
|
39
41
|
rows: InventoryRow[];
|
|
40
|
-
updateType: UpdateType;
|
|
41
42
|
inventoryDate: Date;
|
|
42
43
|
waitForCompletion: boolean;
|
|
43
44
|
timeoutSeconds: number;
|
|
@@ -6,14 +6,14 @@ const client_1 = require("./client");
|
|
|
6
6
|
const inventory_1 = require("./inventory");
|
|
7
7
|
const set_inventory_1 = require("./set-inventory");
|
|
8
8
|
function runImport(_a) {
|
|
9
|
-
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, token, store, warehouseId, rows,
|
|
9
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, token, store, warehouseId, rows, inventoryDate, waitForCompletion, timeoutSeconds, writeMode, adjustmentReason, verifyAfterWrite, trustLastWritten, zeroMissing }) {
|
|
10
10
|
var _b;
|
|
11
11
|
const warehouse = yield findWarehouse({ auth, token, warehouseId });
|
|
12
12
|
if (rows.length === 0) {
|
|
13
13
|
return { warehouse, submitted: false, job: null };
|
|
14
14
|
}
|
|
15
|
-
//
|
|
16
|
-
if (writeMode === '
|
|
15
|
+
// Only the delta path needs reads; both import modes are a single queued job.
|
|
16
|
+
if (writeMode === 'SET_LISTED') {
|
|
17
17
|
const set = yield set_inventory_1.inventorySetter.setQuantities({
|
|
18
18
|
auth,
|
|
19
19
|
token,
|
|
@@ -22,10 +22,16 @@ function runImport(_a) {
|
|
|
22
22
|
rows,
|
|
23
23
|
reason: adjustmentReason !== null && adjustmentReason !== void 0 ? adjustmentReason : 'Inventory import',
|
|
24
24
|
verify: verifyAfterWrite !== null && verifyAfterWrite !== void 0 ? verifyAfterWrite : true,
|
|
25
|
+
useLedger: trustLastWritten !== null && trustLastWritten !== void 0 ? trustLastWritten : false,
|
|
26
|
+
zeroMissing: zeroMissing !== null && zeroMissing !== void 0 ? zeroMissing : false,
|
|
25
27
|
});
|
|
26
28
|
return { warehouse, submitted: true, job: null, set };
|
|
27
29
|
}
|
|
28
|
-
|
|
30
|
+
// A Full import replaces the warehouse; a Partial one adds to what is already there.
|
|
31
|
+
const submitted = yield inventory_1.inventoryImport.submitImport({
|
|
32
|
+
auth, token, warehouse, rows, inventoryDate,
|
|
33
|
+
updateType: writeMode === 'REPLACE_WAREHOUSE' ? 'FULL' : 'PARTIAL',
|
|
34
|
+
});
|
|
29
35
|
if (!waitForCompletion) {
|
|
30
36
|
return { warehouse, submitted: true, job: { id: submitted.id, status: 'Submitted', message: submitted.message } };
|
|
31
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-import.js","sourceRoot":"","sources":["../../../../src/lib/common/run-import.ts"],"names":[],"mappings":";;;;AAAA,qCAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"run-import.js","sourceRoot":"","sources":["../../../../src/lib/common/run-import.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SellercloudAuthProps, TokenStore } from './client';
|
|
2
2
|
import { InventoryRow } from './inventory';
|
|
3
|
-
declare function setQuantities({ auth, token, store, warehouseId, rows, reason, verify, onProgress }: SetQuantitiesParams): Promise<SetOutcome>;
|
|
3
|
+
declare function setQuantities({ auth, token, store, warehouseId, rows, reason, verify, useLedger, zeroMissing, onProgress }: SetQuantitiesParams): Promise<SetOutcome>;
|
|
4
4
|
declare function readQuantity({ auth, token, store, warehouseId, productId }: ReadQuantityParams): Promise<number | null>;
|
|
5
5
|
export declare const inventorySetter: {
|
|
6
6
|
setQuantities: typeof setQuantities;
|
|
@@ -23,9 +23,12 @@ export type VerifyResult = {
|
|
|
23
23
|
actual: number | null;
|
|
24
24
|
}[];
|
|
25
25
|
};
|
|
26
|
+
export type QuantitySource = 'read' | 'ledger';
|
|
26
27
|
export type SetOutcome = {
|
|
27
28
|
warehouseId: number;
|
|
29
|
+
source: QuantitySource;
|
|
28
30
|
requested: number;
|
|
31
|
+
zeroedMissing: number;
|
|
29
32
|
changed: number;
|
|
30
33
|
unchanged: number;
|
|
31
34
|
failed: number;
|
|
@@ -40,12 +43,14 @@ type SetQuantitiesParams = {
|
|
|
40
43
|
rows: InventoryRow[];
|
|
41
44
|
reason: string;
|
|
42
45
|
verify: boolean;
|
|
46
|
+
useLedger: boolean;
|
|
47
|
+
zeroMissing: boolean;
|
|
43
48
|
onProgress?: (progress: {
|
|
44
49
|
done: number;
|
|
45
50
|
total: number;
|
|
46
51
|
}) => void;
|
|
47
52
|
};
|
|
48
|
-
type ReadQuantitiesParams = Omit<SetQuantitiesParams, 'rows' | 'reason' | 'verify' | 'onProgress'> & {
|
|
53
|
+
type ReadQuantitiesParams = Omit<SetQuantitiesParams, 'rows' | 'reason' | 'verify' | 'useLedger' | 'zeroMissing' | 'onProgress'> & {
|
|
49
54
|
productIds: string[];
|
|
50
55
|
};
|
|
51
56
|
type ReadQuantityParams = Omit<ReadQuantitiesParams, 'productIds'> & {
|
|
@@ -5,14 +5,21 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
6
6
|
const shared_1 = require("@activepieces/shared");
|
|
7
7
|
const client_1 = require("./client");
|
|
8
|
+
const quantity_ledger_1 = require("./quantity-ledger");
|
|
8
9
|
// ImportPhysicalInventory ADDS to the existing quantity, so "set this warehouse to N"
|
|
9
10
|
// has to be expressed as a delta. AdjustPhysicalInventory takes one, and unlike
|
|
10
11
|
// SetPhysicalInventory it is not blocked for shadow SKUs.
|
|
11
12
|
function setQuantities(_a) {
|
|
12
|
-
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, token, store, warehouseId, rows, reason, verify, onProgress }) {
|
|
13
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, token, store, warehouseId, rows, reason, verify, useLedger, zeroMissing, onProgress }) {
|
|
13
14
|
var _b, _c;
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
if ((zeroMissing || useLedger) && !verify) {
|
|
16
|
+
throw new Error('Trusting or extending the last-written history requires "Verify After Writing": without it the history records intent rather than confirmed quantities.');
|
|
17
|
+
}
|
|
18
|
+
const targets = zeroMissing
|
|
19
|
+
? yield withMissingZeroed({ store, warehouseId, rows })
|
|
20
|
+
: rows;
|
|
21
|
+
const current = yield currentQuantities({ auth, token, store, warehouseId, rows: targets, useLedger });
|
|
22
|
+
const planned = targets.map((row) => plan({ row, current: current.quantities.get(row.productId) }));
|
|
16
23
|
const applied = [];
|
|
17
24
|
for (const [index, item] of planned.entries()) {
|
|
18
25
|
if (item.delta !== 0 && (0, shared_1.isNil)(item.error)) {
|
|
@@ -27,9 +34,26 @@ function setQuantities(_a) {
|
|
|
27
34
|
const verified = verify
|
|
28
35
|
? yield verifyQuantities({ auth, token, store, warehouseId, planned })
|
|
29
36
|
: null;
|
|
37
|
+
// The ledger is a claim about SellerCloud's state, so only verified quantities may
|
|
38
|
+
// enter it. Recording intent instead let an adjustment that lagged or failed leave a
|
|
39
|
+
// false baseline, and the next run then computed its delta from a number that was
|
|
40
|
+
// never true. Without verification nothing is recorded at all.
|
|
41
|
+
if (!(0, shared_1.isNil)(store) && !(0, shared_1.isNil)(verified)) {
|
|
42
|
+
const unconfirmed = new Set(verified.mismatches.map((mismatch) => mismatch.productId));
|
|
43
|
+
const confirmed = Object.fromEntries(applied
|
|
44
|
+
.filter((item) => (0, shared_1.isNil)(item.error) && !unconfirmed.has(item.productId))
|
|
45
|
+
.map((item) => [item.productId, item.to]));
|
|
46
|
+
yield quantity_ledger_1.quantityLedger.merge({ store, warehouseId, applied: confirmed });
|
|
47
|
+
// A SKU that did not land must not keep a stale claim either.
|
|
48
|
+
if (unconfirmed.size > 0) {
|
|
49
|
+
yield quantity_ledger_1.quantityLedger.forget({ store, warehouseId, productIds: [...unconfirmed] });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
30
52
|
return {
|
|
31
53
|
warehouseId,
|
|
32
|
-
|
|
54
|
+
source: current.source,
|
|
55
|
+
requested: targets.length,
|
|
56
|
+
zeroedMissing: targets.length - rows.length,
|
|
33
57
|
changed: applied.filter((item) => item.delta !== 0 && (0, shared_1.isNil)(item.error)).length,
|
|
34
58
|
unchanged: applied.filter((item) => item.delta === 0).length,
|
|
35
59
|
failed: applied.filter((item) => !(0, shared_1.isNil)(item.error)).length,
|
|
@@ -38,6 +62,42 @@ function setQuantities(_a) {
|
|
|
38
62
|
};
|
|
39
63
|
});
|
|
40
64
|
}
|
|
65
|
+
// With the ledger, a SKU this integration has written before needs no read at all; the
|
|
66
|
+
// rest still do, so a first run or a newly added part stays correct.
|
|
67
|
+
// A part that drops out of the file has not gone to zero on its own: replacing the
|
|
68
|
+
// warehouse would zero it, but that import takes hours, so the ledger of what this flow
|
|
69
|
+
// wrote last time stands in for it and those products are set to 0 explicitly.
|
|
70
|
+
function withMissingZeroed(_a) {
|
|
71
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ store, warehouseId, rows }) {
|
|
72
|
+
if ((0, shared_1.isNil)(store)) {
|
|
73
|
+
return rows;
|
|
74
|
+
}
|
|
75
|
+
const ledger = yield quantity_ledger_1.quantityLedger.read({ store, warehouseId });
|
|
76
|
+
const present = new Set(rows.map((row) => row.productId));
|
|
77
|
+
const missing = Object.keys(ledger)
|
|
78
|
+
.filter((productId) => !present.has(productId) && ledger[productId] !== 0)
|
|
79
|
+
.map((productId) => ({ productId, quantity: 0 }));
|
|
80
|
+
return [...rows, ...missing];
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function currentQuantities(_a) {
|
|
84
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, token, store, warehouseId, rows, useLedger }) {
|
|
85
|
+
var _b;
|
|
86
|
+
if (!useLedger || (0, shared_1.isNil)(store)) {
|
|
87
|
+
return { quantities: yield readQuantities({ auth, token, store, warehouseId, productIds: rows.map((row) => row.productId) }), source: 'read' };
|
|
88
|
+
}
|
|
89
|
+
const ledger = yield quantity_ledger_1.quantityLedger.read({ store, warehouseId });
|
|
90
|
+
const missing = rows.filter((row) => (0, shared_1.isNil)(ledger[row.productId])).map((row) => row.productId);
|
|
91
|
+
const read = missing.length > 0
|
|
92
|
+
? yield readQuantities({ auth, token, store, warehouseId, productIds: missing })
|
|
93
|
+
: new Map();
|
|
94
|
+
const quantities = new Map();
|
|
95
|
+
for (const row of rows) {
|
|
96
|
+
quantities.set(row.productId, read.has(row.productId) ? (_b = read.get(row.productId)) !== null && _b !== void 0 ? _b : null : ledger[row.productId]);
|
|
97
|
+
}
|
|
98
|
+
return { quantities, source: missing.length === rows.length ? 'read' : 'ledger' };
|
|
99
|
+
});
|
|
100
|
+
}
|
|
41
101
|
function plan({ row, current }) {
|
|
42
102
|
if ((0, shared_1.isNil)(current)) {
|
|
43
103
|
return { productId: row.productId, from: null, to: row.quantity, delta: 0, error: 'no inventory row in this warehouse' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-inventory.js","sourceRoot":"","sources":["../../../../src/lib/common/set-inventory.ts"],"names":[],"mappings":";;;;AAAA,+DAAyD;AACzD,iDAAuD;AACvD,qCAA+E;
|
|
1
|
+
{"version":3,"file":"set-inventory.js","sourceRoot":"","sources":["../../../../src/lib/common/set-inventory.ts"],"names":[],"mappings":"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"}
|