@unchainedshop/core-warehousing 2.2.2 → 2.3.0
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/lib/director/WarehousingDirector.js +18 -8
- package/lib/director/WarehousingDirector.js.map +1 -1
- package/lib/director/WarehousingError.js +1 -1
- package/lib/director/WarehousingError.js.map +1 -1
- package/lib/director/WarehousingProviderType.js +1 -1
- package/lib/director/WarehousingProviderType.js.map +1 -1
- package/package.json +10 -10
- package/src/director/WarehousingDirector.ts +20 -10
|
@@ -21,10 +21,9 @@ export const WarehousingDirector = {
|
|
|
21
21
|
...unchainedAPI,
|
|
22
22
|
};
|
|
23
23
|
const adapter = Adapter.actions(warehousingProvider.configuration, context);
|
|
24
|
-
const throughputTime = async () => {
|
|
24
|
+
const throughputTime = async (referenceDate) => {
|
|
25
25
|
try {
|
|
26
26
|
const { quantity } = context;
|
|
27
|
-
const referenceDate = getReferenceDate(context);
|
|
28
27
|
const stock = await adapter.stock(referenceDate);
|
|
29
28
|
const notInStockQuantity = Math.max(quantity - stock, 0);
|
|
30
29
|
const productionTime = await adapter.productionTime(notInStockQuantity);
|
|
@@ -33,7 +32,7 @@ export const WarehousingDirector = {
|
|
|
33
32
|
}
|
|
34
33
|
catch (error) {
|
|
35
34
|
log(error.message, { level: LogLevel.Error, ...error });
|
|
36
|
-
return
|
|
35
|
+
return NaN;
|
|
37
36
|
}
|
|
38
37
|
};
|
|
39
38
|
return {
|
|
@@ -72,14 +71,25 @@ export const WarehousingDirector = {
|
|
|
72
71
|
try {
|
|
73
72
|
const { deliveryProvider } = context;
|
|
74
73
|
const referenceDate = getReferenceDate(context);
|
|
75
|
-
const warehousingThroughputTime = await throughputTime();
|
|
74
|
+
const warehousingThroughputTime = await throughputTime(referenceDate);
|
|
75
|
+
if (!Number.isFinite(warehousingThroughputTime)) {
|
|
76
|
+
return {
|
|
77
|
+
shipping: null,
|
|
78
|
+
earliestDelivery: null,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// Calculate shipping date
|
|
82
|
+
const shippingTimestamp = referenceDate.getTime() + warehousingThroughputTime;
|
|
83
|
+
const shipping = new Date(shippingTimestamp);
|
|
84
|
+
// Calculate earliest delivery date
|
|
76
85
|
const actions = await DeliveryDirector.actions(deliveryProvider, context, unchainedAPI);
|
|
77
86
|
const deliveryThroughputTime = await actions.estimatedDeliveryThroughput(warehousingThroughputTime);
|
|
78
|
-
const
|
|
79
|
-
|
|
87
|
+
const earliestDelivery = Number.isFinite(deliveryThroughputTime)
|
|
88
|
+
? new Date(shippingTimestamp + deliveryThroughputTime)
|
|
89
|
+
: null;
|
|
80
90
|
return {
|
|
81
|
-
shipping
|
|
82
|
-
earliestDelivery
|
|
91
|
+
shipping,
|
|
92
|
+
earliestDelivery,
|
|
83
93
|
};
|
|
84
94
|
}
|
|
85
95
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarehousingDirector.js","sourceRoot":"","sources":["../../src/director/WarehousingDirector.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,gBAAgB,GAAG,CAAC,OAA2B,EAAE,EAAE;IACvD,OAAO,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,YAAY,CAAsB,qBAAqB,EAAE;IAC5E,cAAc,EAAE,YAAY;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAyB;IACvD,GAAG,YAAY;IAEf,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,YAAY,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAExE,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,mBAAmB,CAAC,UAAU,gBAAgB,CAAC,CAAC;SACvF;QACD,MAAM,OAAO,GAAG;YACd,qBAAqB,EAAE,mBAAmB,CAAC,GAAG;YAC9C,GAAG,kBAAkB;YACrB,GAAG,YAAY;SAChB,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAE5E,MAAM,cAAc,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"WarehousingDirector.js","sourceRoot":"","sources":["../../src/director/WarehousingDirector.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,5 @@ export var WarehousingError;
|
|
|
4
4
|
WarehousingError["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
|
|
5
5
|
WarehousingError["INCOMPLETE_CONFIGURATION"] = "INCOMPLETE_CONFIGURATION";
|
|
6
6
|
WarehousingError["WRONG_CREDENTIALS"] = "WRONG_CREDENTIALS";
|
|
7
|
-
})(WarehousingError
|
|
7
|
+
})(WarehousingError || (WarehousingError = {}));
|
|
8
8
|
//# sourceMappingURL=WarehousingError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarehousingError.js","sourceRoot":"","sources":["../../src/director/WarehousingError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,2DAAuC,CAAA;IACvC,uDAAmC,CAAA;IACnC,yEAAqD,CAAA;IACrD,2DAAuC,CAAA;AACzC,CAAC,EALW,gBAAgB,
|
|
1
|
+
{"version":3,"file":"WarehousingError.js","sourceRoot":"","sources":["../../src/director/WarehousingError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,2DAAuC,CAAA;IACvC,uDAAmC,CAAA;IACnC,yEAAqD,CAAA;IACrD,2DAAuC,CAAA;AACzC,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B"}
|
|
@@ -2,5 +2,5 @@ export var WarehousingProviderType;
|
|
|
2
2
|
(function (WarehousingProviderType) {
|
|
3
3
|
WarehousingProviderType["PHYSICAL"] = "PHYSICAL";
|
|
4
4
|
WarehousingProviderType["VIRTUAL"] = "VIRTUAL";
|
|
5
|
-
})(WarehousingProviderType
|
|
5
|
+
})(WarehousingProviderType || (WarehousingProviderType = {}));
|
|
6
6
|
//# sourceMappingURL=WarehousingProviderType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarehousingProviderType.js","sourceRoot":"","sources":["../../src/director/WarehousingProviderType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,gDAAqB,CAAA;IACrB,8CAAmB,CAAA;AACrB,CAAC,EAHW,uBAAuB,
|
|
1
|
+
{"version":3,"file":"WarehousingProviderType.js","sourceRoot":"","sources":["../../src/director/WarehousingProviderType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,gDAAqB,CAAA;IACrB,8CAAmB,CAAA;AACrB,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,QAGlC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-warehousing",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"main": "lib/warehousing-index.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./lib/warehousing-index.js",
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^2.
|
|
35
|
-
"@unchainedshop/logger": "^2.
|
|
36
|
-
"@unchainedshop/utils": "^2.
|
|
37
|
-
"lru-cache": "^
|
|
34
|
+
"@unchainedshop/events": "^2.3.0",
|
|
35
|
+
"@unchainedshop/logger": "^2.3.0",
|
|
36
|
+
"@unchainedshop/utils": "^2.3.0",
|
|
37
|
+
"lru-cache": "^10.0.0",
|
|
38
38
|
"simpl-schema": "=3.2.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@types/node": "^18.16.
|
|
42
|
-
"@unchainedshop/types": "^2.
|
|
43
|
-
"jest": "^29.
|
|
44
|
-
"ts-jest": "^29.1.
|
|
45
|
-
"typescript": "^
|
|
41
|
+
"@types/node": "^18.16.19",
|
|
42
|
+
"@unchainedshop/types": "^2.3.0",
|
|
43
|
+
"jest": "^29.6.0",
|
|
44
|
+
"ts-jest": "^29.1.1",
|
|
45
|
+
"typescript": "^5.1.6"
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -32,10 +32,9 @@ export const WarehousingDirector: IWarehousingDirector = {
|
|
|
32
32
|
};
|
|
33
33
|
const adapter = Adapter.actions(warehousingProvider.configuration, context);
|
|
34
34
|
|
|
35
|
-
const throughputTime = async () => {
|
|
35
|
+
const throughputTime = async (referenceDate) => {
|
|
36
36
|
try {
|
|
37
37
|
const { quantity } = context;
|
|
38
|
-
const referenceDate = getReferenceDate(context);
|
|
39
38
|
const stock = await adapter.stock(referenceDate);
|
|
40
39
|
const notInStockQuantity = Math.max(quantity - stock, 0);
|
|
41
40
|
const productionTime = await adapter.productionTime(notInStockQuantity);
|
|
@@ -43,7 +42,7 @@ export const WarehousingDirector: IWarehousingDirector = {
|
|
|
43
42
|
return Math.max(commissioningTime + productionTime, 0);
|
|
44
43
|
} catch (error) {
|
|
45
44
|
log(error.message, { level: LogLevel.Error, ...error });
|
|
46
|
-
return
|
|
45
|
+
return NaN;
|
|
47
46
|
}
|
|
48
47
|
};
|
|
49
48
|
|
|
@@ -83,20 +82,31 @@ export const WarehousingDirector: IWarehousingDirector = {
|
|
|
83
82
|
try {
|
|
84
83
|
const { deliveryProvider } = context;
|
|
85
84
|
const referenceDate = getReferenceDate(context);
|
|
86
|
-
const warehousingThroughputTime = await throughputTime();
|
|
87
85
|
|
|
86
|
+
const warehousingThroughputTime = await throughputTime(referenceDate);
|
|
87
|
+
if (!Number.isFinite(warehousingThroughputTime)) {
|
|
88
|
+
return {
|
|
89
|
+
shipping: null,
|
|
90
|
+
earliestDelivery: null,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Calculate shipping date
|
|
95
|
+
const shippingTimestamp = referenceDate.getTime() + warehousingThroughputTime;
|
|
96
|
+
const shipping = new Date(shippingTimestamp);
|
|
97
|
+
|
|
98
|
+
// Calculate earliest delivery date
|
|
88
99
|
const actions = await DeliveryDirector.actions(deliveryProvider, context, unchainedAPI);
|
|
89
100
|
const deliveryThroughputTime = await actions.estimatedDeliveryThroughput(
|
|
90
101
|
warehousingThroughputTime,
|
|
91
102
|
);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
deliveryThroughputTime !== null ? shippingTimestamp + deliveryThroughputTime : null;
|
|
103
|
+
const earliestDelivery = Number.isFinite(deliveryThroughputTime)
|
|
104
|
+
? new Date(shippingTimestamp + deliveryThroughputTime)
|
|
105
|
+
: null;
|
|
96
106
|
|
|
97
107
|
return {
|
|
98
|
-
shipping
|
|
99
|
-
earliestDelivery
|
|
108
|
+
shipping,
|
|
109
|
+
earliestDelivery,
|
|
100
110
|
};
|
|
101
111
|
} catch (error) {
|
|
102
112
|
log(error.message, { level: LogLevel.Error, ...error });
|