order-management 0.0.75 → 0.0.77
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/.medusa/server/src/admin/index.js +18 -18
- package/.medusa/server/src/admin/index.mjs +18 -18
- package/.medusa/server/src/api/store/orders/reorder/[order_id]/route.js +72 -13
- package/.medusa/server/src/config.js +2 -1
- package/.medusa/server/src/subscribers/order-fulfilled.js +260 -1
- package/.medusa/server/src/workflows/reorder-workflow.js +3 -2
- package/.medusa/server/src/workflows/steps/retrieve-order-step.js +4 -131
- package/.medusa/server/src/workflows/steps/transform-order-to-cart-step.js +193 -4
- package/README.md +7 -0
- package/package.json +1 -1
|
@@ -2732,9 +2732,9 @@ const routeModule = {
|
|
|
2732
2732
|
const menuItemModule = {
|
|
2733
2733
|
menuItems: [
|
|
2734
2734
|
{
|
|
2735
|
-
label: config$
|
|
2736
|
-
icon: config$
|
|
2737
|
-
path: "/
|
|
2735
|
+
label: config$7.label,
|
|
2736
|
+
icon: config$7.icon,
|
|
2737
|
+
path: "/payments",
|
|
2738
2738
|
nested: void 0
|
|
2739
2739
|
},
|
|
2740
2740
|
{
|
|
@@ -2744,21 +2744,21 @@ const menuItemModule = {
|
|
|
2744
2744
|
nested: void 0
|
|
2745
2745
|
},
|
|
2746
2746
|
{
|
|
2747
|
-
label: config$
|
|
2748
|
-
icon: config$
|
|
2749
|
-
path: "/
|
|
2747
|
+
label: config$6.label,
|
|
2748
|
+
icon: config$6.icon,
|
|
2749
|
+
path: "/refunds",
|
|
2750
2750
|
nested: void 0
|
|
2751
2751
|
},
|
|
2752
2752
|
{
|
|
2753
|
-
label: config$
|
|
2754
|
-
icon: config$
|
|
2755
|
-
path: "/
|
|
2753
|
+
label: config$4.label,
|
|
2754
|
+
icon: config$4.icon,
|
|
2755
|
+
path: "/swaps",
|
|
2756
2756
|
nested: void 0
|
|
2757
2757
|
},
|
|
2758
2758
|
{
|
|
2759
|
-
label: config$
|
|
2760
|
-
icon: config$
|
|
2761
|
-
path: "/
|
|
2759
|
+
label: config$3.label,
|
|
2760
|
+
icon: config$3.icon,
|
|
2761
|
+
path: "/payments/:id",
|
|
2762
2762
|
nested: void 0
|
|
2763
2763
|
},
|
|
2764
2764
|
{
|
|
@@ -2768,15 +2768,15 @@ const menuItemModule = {
|
|
|
2768
2768
|
nested: void 0
|
|
2769
2769
|
},
|
|
2770
2770
|
{
|
|
2771
|
-
label: config.label,
|
|
2772
|
-
icon: config.icon,
|
|
2773
|
-
path: "/
|
|
2771
|
+
label: config$2.label,
|
|
2772
|
+
icon: config$2.icon,
|
|
2773
|
+
path: "/refunds/:id",
|
|
2774
2774
|
nested: void 0
|
|
2775
2775
|
},
|
|
2776
2776
|
{
|
|
2777
|
-
label: config
|
|
2778
|
-
icon: config
|
|
2779
|
-
path: "/
|
|
2777
|
+
label: config.label,
|
|
2778
|
+
icon: config.icon,
|
|
2779
|
+
path: "/swaps/:id",
|
|
2780
2780
|
nested: void 0
|
|
2781
2781
|
}
|
|
2782
2782
|
]
|
|
@@ -2731,9 +2731,9 @@ const routeModule = {
|
|
|
2731
2731
|
const menuItemModule = {
|
|
2732
2732
|
menuItems: [
|
|
2733
2733
|
{
|
|
2734
|
-
label: config$
|
|
2735
|
-
icon: config$
|
|
2736
|
-
path: "/
|
|
2734
|
+
label: config$7.label,
|
|
2735
|
+
icon: config$7.icon,
|
|
2736
|
+
path: "/payments",
|
|
2737
2737
|
nested: void 0
|
|
2738
2738
|
},
|
|
2739
2739
|
{
|
|
@@ -2743,21 +2743,21 @@ const menuItemModule = {
|
|
|
2743
2743
|
nested: void 0
|
|
2744
2744
|
},
|
|
2745
2745
|
{
|
|
2746
|
-
label: config$
|
|
2747
|
-
icon: config$
|
|
2748
|
-
path: "/
|
|
2746
|
+
label: config$6.label,
|
|
2747
|
+
icon: config$6.icon,
|
|
2748
|
+
path: "/refunds",
|
|
2749
2749
|
nested: void 0
|
|
2750
2750
|
},
|
|
2751
2751
|
{
|
|
2752
|
-
label: config$
|
|
2753
|
-
icon: config$
|
|
2754
|
-
path: "/
|
|
2752
|
+
label: config$4.label,
|
|
2753
|
+
icon: config$4.icon,
|
|
2754
|
+
path: "/swaps",
|
|
2755
2755
|
nested: void 0
|
|
2756
2756
|
},
|
|
2757
2757
|
{
|
|
2758
|
-
label: config$
|
|
2759
|
-
icon: config$
|
|
2760
|
-
path: "/
|
|
2758
|
+
label: config$3.label,
|
|
2759
|
+
icon: config$3.icon,
|
|
2760
|
+
path: "/payments/:id",
|
|
2761
2761
|
nested: void 0
|
|
2762
2762
|
},
|
|
2763
2763
|
{
|
|
@@ -2767,15 +2767,15 @@ const menuItemModule = {
|
|
|
2767
2767
|
nested: void 0
|
|
2768
2768
|
},
|
|
2769
2769
|
{
|
|
2770
|
-
label: config.label,
|
|
2771
|
-
icon: config.icon,
|
|
2772
|
-
path: "/
|
|
2770
|
+
label: config$2.label,
|
|
2771
|
+
icon: config$2.icon,
|
|
2772
|
+
path: "/refunds/:id",
|
|
2773
2773
|
nested: void 0
|
|
2774
2774
|
},
|
|
2775
2775
|
{
|
|
2776
|
-
label: config
|
|
2777
|
-
icon: config
|
|
2778
|
-
path: "/
|
|
2776
|
+
label: config.label,
|
|
2777
|
+
icon: config.icon,
|
|
2778
|
+
path: "/swaps/:id",
|
|
2779
2779
|
nested: void 0
|
|
2780
2780
|
}
|
|
2781
2781
|
]
|
|
@@ -3,8 +3,63 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.POST = void 0;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const reorder_workflow_1 = require("../../../../../workflows/reorder-workflow");
|
|
6
|
+
const parseBooleanQueryParam = (value) => {
|
|
7
|
+
if (typeof value === "string") {
|
|
8
|
+
return value.toLowerCase() === "true";
|
|
9
|
+
}
|
|
10
|
+
if (Array.isArray(value)) {
|
|
11
|
+
return value.some((item) => typeof item === "string" && item.toLowerCase() === "true");
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
};
|
|
15
|
+
const INVENTORY_ERROR_PREFIX = "Inventory check failed for reorder items:";
|
|
16
|
+
const parseInventoryIssuesFromMessage = (message) => {
|
|
17
|
+
if (!message || !message.startsWith(INVENTORY_ERROR_PREFIX)) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const rawIssues = message.slice(INVENTORY_ERROR_PREFIX.length).trim();
|
|
21
|
+
if (!rawIssues) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const parsed = JSON.parse(rawIssues);
|
|
26
|
+
if (!Array.isArray(parsed)) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return parsed
|
|
30
|
+
.filter((issue) => typeof issue === "object" &&
|
|
31
|
+
issue !== null &&
|
|
32
|
+
typeof issue.variant_id === "string" &&
|
|
33
|
+
(typeof issue.variant_name ===
|
|
34
|
+
"string" ||
|
|
35
|
+
issue.variant_name === null ||
|
|
36
|
+
issue.variant_name === undefined) &&
|
|
37
|
+
(typeof issue.product_name ===
|
|
38
|
+
"string" ||
|
|
39
|
+
issue.product_name === null ||
|
|
40
|
+
issue.product_name === undefined) &&
|
|
41
|
+
typeof issue.requested_quantity ===
|
|
42
|
+
"number" &&
|
|
43
|
+
(typeof issue.available_quantity ===
|
|
44
|
+
"number" ||
|
|
45
|
+
issue.available_quantity === null) &&
|
|
46
|
+
typeof issue.reason === "string")
|
|
47
|
+
.map((issue) => ({
|
|
48
|
+
variant_id: issue.variant_id,
|
|
49
|
+
variant_name: issue.variant_name ?? null,
|
|
50
|
+
product_name: issue.product_name ?? null,
|
|
51
|
+
requested_quantity: issue.requested_quantity,
|
|
52
|
+
available_quantity: issue.available_quantity,
|
|
53
|
+
reason: issue.reason,
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
6
60
|
const POST = async (req, res) => {
|
|
7
61
|
const { order_id } = req.params;
|
|
62
|
+
const forceReorder = parseBooleanQueryParam(req.query?.force_reorder);
|
|
8
63
|
if (!order_id) {
|
|
9
64
|
res.status(400).json({
|
|
10
65
|
message: "order_id is required in path parameter",
|
|
@@ -17,12 +72,6 @@ const POST = async (req, res) => {
|
|
|
17
72
|
const actorType = authContext?.actor_type;
|
|
18
73
|
const isCustomer = actorType === "customer";
|
|
19
74
|
if (!actorId || !isCustomer) {
|
|
20
|
-
console.warn("[Order Management] Authentication failed:", {
|
|
21
|
-
order_id,
|
|
22
|
-
actor_id: actorId,
|
|
23
|
-
actor_type: actorType,
|
|
24
|
-
reason: !actorId ? "Missing actor_id" : "Invalid actor_type",
|
|
25
|
-
});
|
|
26
75
|
res.status(401).json({
|
|
27
76
|
message: "Unauthorized: Customer authentication is required",
|
|
28
77
|
});
|
|
@@ -33,17 +82,27 @@ const POST = async (req, res) => {
|
|
|
33
82
|
input: {
|
|
34
83
|
order_id,
|
|
35
84
|
customer_id: actorId,
|
|
85
|
+
force_reorder: forceReorder,
|
|
36
86
|
},
|
|
37
87
|
});
|
|
38
88
|
res.json(result);
|
|
39
89
|
}
|
|
40
90
|
catch (error) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
91
|
+
const medusaError = error;
|
|
92
|
+
const isMedusaLikeError = error instanceof utils_1.MedusaError || medusaError?.__isMedusaError === true;
|
|
93
|
+
if (isMedusaLikeError) {
|
|
94
|
+
const errorType = medusaError?.type;
|
|
95
|
+
const statusCode = errorType === utils_1.MedusaError.Types.NOT_FOUND ? 404 : 400;
|
|
96
|
+
const inventoryIssues = parseInventoryIssuesFromMessage(medusaError?.message);
|
|
97
|
+
if (inventoryIssues) {
|
|
98
|
+
res.status(409).json({
|
|
99
|
+
inventory_issues: inventoryIssues,
|
|
100
|
+
});
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
res.status(statusCode).json({
|
|
104
|
+
message: medusaError?.message || "An error occurred",
|
|
105
|
+
type: errorType,
|
|
47
106
|
});
|
|
48
107
|
return;
|
|
49
108
|
}
|
|
@@ -57,4 +116,4 @@ const POST = async (req, res) => {
|
|
|
57
116
|
}
|
|
58
117
|
};
|
|
59
118
|
exports.POST = POST;
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9yZW9yZGVyL1tvcmRlcl9pZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXVEO0FBQ3ZELGdGQUEyRTtBQVEzRSxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7SUFDekQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUE7SUFDdkMsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQTtJQUN4RixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDLENBQUE7QUFFRCxNQUFNLHNCQUFzQixHQUFHLDJDQUEyQyxDQUFBO0FBRTFFLE1BQU0sK0JBQStCLEdBQUcsQ0FDdEMsT0FBMkIsRUFRbkIsRUFBRTtJQUNWLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3JFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxH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
|
|
@@ -43,6 +43,7 @@ function normalizeOrderManagementOptions(input) {
|
|
|
43
43
|
enabled: input.notifications?.enabled ?? false,
|
|
44
44
|
statusConfig: input.notifications?.statusConfig ?? {},
|
|
45
45
|
},
|
|
46
|
+
capture_payment_on_delivered: input.capture_payment_on_delivered ?? true,
|
|
46
47
|
returnValidInDays,
|
|
47
48
|
exchangeValidInDays,
|
|
48
49
|
};
|
|
@@ -63,4 +64,4 @@ function resolveOrderManagementOptions(configModule) {
|
|
|
63
64
|
}
|
|
64
65
|
throw new Error("order-management: Plugin not found in configuration. Please add the plugin to medusa-config.ts");
|
|
65
66
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQXFDSCwwRUFvREM7QUFFRCxzRUF3QkM7QUFqSEQscURBQW9EO0FBc0JwRCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQTtBQWF0QyxTQUFnQiwrQkFBK0IsQ0FDN0MsS0FBMkM7SUFFM0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQ3JCLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQztRQUN4RSxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRVAsTUFBTSxtQkFBbUIsR0FDdkIsT0FBTyxLQUFLLENBQUMsbUJBQW1CLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFUCxPQUFPO1FBQ0wsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1FBQ2xDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixLQUFLLEVBQUU7WUFDTCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLG9CQUFvQixJQUFJLElBQUk7WUFDL0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUk7U0FDOUM7UUFDRCxJQUFJLEVBQUU7WUFDSixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksS0FBSztZQUNyQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1lBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUk7WUFDdEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUk7WUFDbEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSTtZQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1NBQ3ZCO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLEtBQUs7WUFDOUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsWUFBWSxJQUFJLEVBQUU7U0FDdEQ7UUFDRCw0QkFBNEIsRUFBRSxLQUFLLENBQUMsNEJBQTRCLElBQUksSUFBSTtRQUN4RSxpQkFBaUI7UUFDakIsbUJBQW1CO0tBQ3BCLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsNkJBQTZCLENBQzNDLFlBQWdDO0lBRWhDLE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFBO0lBRTNDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFBLGdCQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0Isd0VBQXdFO2dCQUN4RSxNQUFNLElBQUksS0FBSyxDQUNiLDZGQUE2RixDQUM5RixDQUFBO1lBQ0gsQ0FBQztZQUNELFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxNQUFNLEVBQUUsT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sK0JBQStCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -5,7 +5,237 @@ exports.getOrderIdFromFulfillment = getOrderIdFromFulfillment;
|
|
|
5
5
|
exports.default = orderFulfilledHandler;
|
|
6
6
|
const utils_1 = require("@medusajs/framework/utils");
|
|
7
7
|
const utils_2 = require("@medusajs/framework/utils");
|
|
8
|
+
const core_flows_1 = require("@medusajs/core-flows");
|
|
8
9
|
const template_1 = require("../utils/template");
|
|
10
|
+
const config_1 = require("../config");
|
|
11
|
+
function toNumber(value) {
|
|
12
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
13
|
+
return value;
|
|
14
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
15
|
+
const parsed = Number(value);
|
|
16
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
17
|
+
}
|
|
18
|
+
if (value && typeof value === "object" && "value" in value) {
|
|
19
|
+
const nested = value.value;
|
|
20
|
+
return toNumber(nested);
|
|
21
|
+
}
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
function resolveCapturePayload(payment) {
|
|
25
|
+
const paymentId = typeof payment.id === "string" ? payment.id : "";
|
|
26
|
+
if (!paymentId)
|
|
27
|
+
return null;
|
|
28
|
+
const totalAmount = toNumber(payment.amount);
|
|
29
|
+
const capturedAmount = toNumber(payment.captured_amount);
|
|
30
|
+
const remaining = Math.max(0, totalAmount - capturedAmount);
|
|
31
|
+
if (remaining <= 0)
|
|
32
|
+
return null;
|
|
33
|
+
const status = typeof payment.status === "string" ? payment.status.toLowerCase() : "";
|
|
34
|
+
const capturableStatuses = new Set([
|
|
35
|
+
"authorized",
|
|
36
|
+
"partially_captured",
|
|
37
|
+
"requires_capture",
|
|
38
|
+
"pending",
|
|
39
|
+
]);
|
|
40
|
+
if (status && !capturableStatuses.has(status)) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
payment_id: paymentId,
|
|
45
|
+
amount: remaining,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async function executeCapture(container, paymentModuleService, payload, logger) {
|
|
49
|
+
logger?.info?.(`[Order Fulfilled] Triggering capture workflow for payment ${payload.payment_id} with amount ${payload.amount}.`);
|
|
50
|
+
await (0, core_flows_1.capturePaymentWorkflow)(container).run({
|
|
51
|
+
input: {
|
|
52
|
+
payment_id: payload.payment_id,
|
|
53
|
+
amount: payload.amount,
|
|
54
|
+
captured_by: "system-auto-delivery",
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
logger?.info?.(`[Order Fulfilled] Auto-captured payment ${payload.payment_id} for amount ${payload.amount}.`);
|
|
58
|
+
try {
|
|
59
|
+
const payments = await paymentModuleService.listPayments({ id: [payload.payment_id] });
|
|
60
|
+
const paymentList = Array.isArray(payments) ? payments : payments ? [payments] : [];
|
|
61
|
+
const payment = paymentList[0];
|
|
62
|
+
if (!payment) {
|
|
63
|
+
logger?.info?.(`[Order Fulfilled] Could not reload payment ${payload.payment_id} after capture for reconciliation.`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const totalAmount = toNumber(payment.amount);
|
|
67
|
+
const capturedAt = payment.captured_at;
|
|
68
|
+
const captures = await paymentModuleService.listCaptures({ payment_id: [payload.payment_id] });
|
|
69
|
+
const captureRows = Array.isArray(captures) ? captures : captures ? [captures] : [];
|
|
70
|
+
const capturedTotal = captureRows.reduce((sum, capture) => {
|
|
71
|
+
return sum + toNumber(capture.amount);
|
|
72
|
+
}, 0);
|
|
73
|
+
if (!capturedAt && totalAmount > 0 && capturedTotal >= totalAmount) {
|
|
74
|
+
logger?.info?.(`[Order Fulfilled] Payment ${payload.payment_id} has captured_total=${capturedTotal} and null captured_at; running reconciliation capture workflow.`);
|
|
75
|
+
await (0, core_flows_1.capturePaymentWorkflow)(container).run({
|
|
76
|
+
input: {
|
|
77
|
+
payment_id: payload.payment_id,
|
|
78
|
+
captured_by: "system-auto-delivery-finalize",
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
const finalized = await paymentModuleService.listPayments({ id: [payload.payment_id] });
|
|
82
|
+
const finalizedList = Array.isArray(finalized) ? finalized : finalized ? [finalized] : [];
|
|
83
|
+
const finalizedPayment = finalizedList[0];
|
|
84
|
+
logger?.info?.(`[Order Fulfilled] Reconciliation complete for payment ${payload.payment_id}; captured_at=${String(finalizedPayment?.captured_at ?? null)}.`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (reconcileError) {
|
|
88
|
+
const reconcileErrorMessage = reconcileError instanceof Error
|
|
89
|
+
? `${reconcileError.message}\n${reconcileError.stack ?? ""}`
|
|
90
|
+
: String(reconcileError);
|
|
91
|
+
logger?.error?.(`[Order Fulfilled] Reconciliation failed for payment ${payload.payment_id}: ${reconcileErrorMessage}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async function autoCaptureOrderPayments(container, orderId, remoteQuery, paymentModuleService, logger) {
|
|
95
|
+
logger?.info?.(`[Order Fulfilled] Resolving payment collections for order ${orderId}.`);
|
|
96
|
+
const orderQuery = (0, utils_1.remoteQueryObjectFromString)({
|
|
97
|
+
entryPoint: "order",
|
|
98
|
+
fields: ["id", "payment_collections.id"],
|
|
99
|
+
filters: { id: [orderId] },
|
|
100
|
+
});
|
|
101
|
+
const orders = await remoteQuery(orderQuery);
|
|
102
|
+
const orderList = Array.isArray(orders) ? orders : orders ? [orders] : [];
|
|
103
|
+
const order = orderList.find((row) => row.id === orderId);
|
|
104
|
+
let collectionIds = (order?.payment_collections ?? []).map((collection) => collection.id);
|
|
105
|
+
logger?.info?.(`[Order Fulfilled] Order query returned ${collectionIds.length} payment collection(s) for order ${orderId}.`);
|
|
106
|
+
if (collectionIds.length === 0) {
|
|
107
|
+
const attemptPaymentCollectionQueries = [
|
|
108
|
+
(0, utils_1.remoteQueryObjectFromString)({
|
|
109
|
+
entryPoint: "payment_collection",
|
|
110
|
+
fields: ["id", "order.id"],
|
|
111
|
+
filters: { order: { id: [orderId] } },
|
|
112
|
+
}),
|
|
113
|
+
(0, utils_1.remoteQueryObjectFromString)({
|
|
114
|
+
entryPoint: "payment_collection",
|
|
115
|
+
fields: ["id", "order.id"],
|
|
116
|
+
filters: { order_id: [orderId] },
|
|
117
|
+
}),
|
|
118
|
+
];
|
|
119
|
+
for (const query of attemptPaymentCollectionQueries) {
|
|
120
|
+
try {
|
|
121
|
+
const collections = await remoteQuery(query);
|
|
122
|
+
const list = Array.isArray(collections) ? collections : collections ? [collections] : [];
|
|
123
|
+
const ids = list
|
|
124
|
+
.map((row) => row.id)
|
|
125
|
+
.filter((id) => typeof id === "string" && id.length > 0);
|
|
126
|
+
if (ids.length > 0) {
|
|
127
|
+
collectionIds = ids;
|
|
128
|
+
logger?.info?.(`[Order Fulfilled] Fallback query resolved ${collectionIds.length} payment collection(s) for order ${orderId}.`);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
logger?.info?.(`[Order Fulfilled] Fallback payment collection query failed for order ${orderId}; trying next strategy.`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (collectionIds.length === 0) {
|
|
138
|
+
logger?.info?.(`[Order Fulfilled] No payment collections found for order ${orderId}; skipping auto-capture.`);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const sessions = await paymentModuleService.listPaymentSessions({
|
|
142
|
+
payment_collection_id: collectionIds,
|
|
143
|
+
});
|
|
144
|
+
const sessionListRaw = Array.isArray(sessions) ? sessions : sessions ? [sessions] : [];
|
|
145
|
+
const sessionList = sessionListRaw.filter((session) => {
|
|
146
|
+
const row = session;
|
|
147
|
+
return (typeof row.payment_collection_id === "string" &&
|
|
148
|
+
collectionIds.includes(row.payment_collection_id));
|
|
149
|
+
});
|
|
150
|
+
const sessionIds = sessionList.map((session) => session.id).filter((id) => typeof id === "string");
|
|
151
|
+
logger?.info?.(`[Order Fulfilled] Found ${sessionIds.length} payment session(s) for order ${orderId}.`);
|
|
152
|
+
if (sessionIds.length === 0) {
|
|
153
|
+
logger?.info?.(`[Order Fulfilled] No payment sessions found for order ${orderId}; skipping auto-capture.`);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const paymentCollectionQuery = (0, utils_1.remoteQueryObjectFromString)({
|
|
157
|
+
entryPoint: "payment_collection",
|
|
158
|
+
fields: [
|
|
159
|
+
"id",
|
|
160
|
+
"payments.id",
|
|
161
|
+
"payments.amount",
|
|
162
|
+
"payments.captured_amount",
|
|
163
|
+
"payments.status",
|
|
164
|
+
"payments.captured_at",
|
|
165
|
+
"payments.payment_session_id",
|
|
166
|
+
"payments.payment_collection_id",
|
|
167
|
+
],
|
|
168
|
+
filters: { id: collectionIds },
|
|
169
|
+
});
|
|
170
|
+
const paymentCollectionRows = await remoteQuery(paymentCollectionQuery).catch(() => []);
|
|
171
|
+
const paymentCollectionListRaw = Array.isArray(paymentCollectionRows)
|
|
172
|
+
? paymentCollectionRows
|
|
173
|
+
: paymentCollectionRows
|
|
174
|
+
? [paymentCollectionRows]
|
|
175
|
+
: [];
|
|
176
|
+
const paymentCollectionList = paymentCollectionListRaw.filter((row) => {
|
|
177
|
+
const collectionId = row.id;
|
|
178
|
+
return typeof collectionId === "string" && collectionIds.includes(collectionId);
|
|
179
|
+
});
|
|
180
|
+
let paymentList = paymentCollectionList.flatMap((row) => {
|
|
181
|
+
const collection = row;
|
|
182
|
+
const collectionId = typeof collection.id === "string" ? collection.id : undefined;
|
|
183
|
+
const payments = Array.isArray(collection.payments) ? collection.payments : [];
|
|
184
|
+
return payments.map((payment) => {
|
|
185
|
+
const raw = payment;
|
|
186
|
+
return {
|
|
187
|
+
...raw,
|
|
188
|
+
payment_collection_id: raw.payment_collection_id ?? collectionId,
|
|
189
|
+
};
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
paymentList = paymentList.filter((payment) => {
|
|
193
|
+
const row = payment;
|
|
194
|
+
const byCollection = typeof row.payment_collection_id === "string" &&
|
|
195
|
+
collectionIds.includes(row.payment_collection_id);
|
|
196
|
+
const bySession = typeof row.payment_session_id === "string" && sessionIds.includes(row.payment_session_id);
|
|
197
|
+
return byCollection || bySession;
|
|
198
|
+
});
|
|
199
|
+
logger?.info?.(`[Order Fulfilled] remoteQuery(payment_collection.payments) returned ${paymentList.length} payment(s) for order ${orderId}.`);
|
|
200
|
+
logger?.info?.(`[Order Fulfilled] Candidate payment IDs for order ${orderId}: ${paymentList
|
|
201
|
+
.map((p) => p.id)
|
|
202
|
+
.filter((id) => typeof id === "string")
|
|
203
|
+
.join(", ") || "none"}.`);
|
|
204
|
+
if (paymentList.length === 0) {
|
|
205
|
+
// Fallback for environments where payment_collection.payments is not expanded
|
|
206
|
+
const fallbackPayments = await paymentModuleService
|
|
207
|
+
.listPayments({
|
|
208
|
+
payment_collection_id: collectionIds,
|
|
209
|
+
})
|
|
210
|
+
.catch(() => []);
|
|
211
|
+
paymentList = Array.isArray(fallbackPayments)
|
|
212
|
+
? fallbackPayments
|
|
213
|
+
: fallbackPayments
|
|
214
|
+
? [fallbackPayments]
|
|
215
|
+
: [];
|
|
216
|
+
paymentList = paymentList.filter((payment) => {
|
|
217
|
+
const row = payment;
|
|
218
|
+
return (typeof row.payment_collection_id === "string" &&
|
|
219
|
+
collectionIds.includes(row.payment_collection_id));
|
|
220
|
+
});
|
|
221
|
+
logger?.info?.(`[Order Fulfilled] Fallback listPayments(payment_collection_id) returned ${paymentList.length} payment(s) for order ${orderId}.`);
|
|
222
|
+
logger?.info?.(`[Order Fulfilled] Fallback candidate payment IDs for order ${orderId}: ${paymentList
|
|
223
|
+
.map((p) => p.id)
|
|
224
|
+
.filter((id) => typeof id === "string")
|
|
225
|
+
.join(", ") || "none"}.`);
|
|
226
|
+
}
|
|
227
|
+
const capturable = paymentList
|
|
228
|
+
.map((payment) => resolveCapturePayload(payment))
|
|
229
|
+
.filter((value) => value !== null);
|
|
230
|
+
logger?.info?.(`[Order Fulfilled] Computed ${capturable.length} capturable payment(s) for order ${orderId}.`);
|
|
231
|
+
if (capturable.length === 0) {
|
|
232
|
+
logger?.info?.(`[Order Fulfilled] No capturable payments for order ${orderId}; skipping auto-capture.`);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
for (const capture of capturable) {
|
|
236
|
+
await executeCapture(container, paymentModuleService, capture, logger);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
9
239
|
/**
|
|
10
240
|
* Resolve order_id from a fulfillment id using remote query.
|
|
11
241
|
* Tries direct fulfillment.order_id first; falls back to querying orders with fulfillments
|
|
@@ -71,15 +301,44 @@ async function orderFulfilledHandler({ event, container, }) {
|
|
|
71
301
|
return;
|
|
72
302
|
}
|
|
73
303
|
try {
|
|
304
|
+
logger?.info?.(`[Order Fulfilled] Received event ${event.name} with payload: ${JSON.stringify(data)}`);
|
|
74
305
|
const remoteQuery = container.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
|
|
75
306
|
const orderModuleService = container.resolve(utils_2.Modules.ORDER);
|
|
307
|
+
const paymentModuleService = container.resolve(utils_2.Modules.PAYMENT);
|
|
308
|
+
if (!orderId && typeof data.id === "string" && data.id.startsWith("order_")) {
|
|
309
|
+
orderId = data.id;
|
|
310
|
+
logger?.info?.(`[Order Fulfilled] Resolved order ID directly from event payload id: ${orderId}.`);
|
|
311
|
+
}
|
|
76
312
|
if (!orderId && fulfillmentId) {
|
|
77
313
|
orderId = await getOrderIdFromFulfillment(fulfillmentId, remoteQuery) ?? undefined;
|
|
314
|
+
logger?.info?.(`[Order Fulfilled] Resolved order ID from fulfillment ${fulfillmentId}: ${orderId ?? "not-found"}.`);
|
|
78
315
|
}
|
|
79
316
|
if (!orderId) {
|
|
80
317
|
logger?.info?.("[Order Fulfilled] No order_id found for delivery event; skipping order status update.");
|
|
81
318
|
return;
|
|
82
319
|
}
|
|
320
|
+
let captureOnDelivered = true;
|
|
321
|
+
try {
|
|
322
|
+
const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
323
|
+
const config = (0, config_1.resolveOrderManagementOptions)(configModule);
|
|
324
|
+
captureOnDelivered = config.capture_payment_on_delivered;
|
|
325
|
+
logger?.info?.(`[Order Fulfilled] capture_payment_on_delivered resolved to ${String(captureOnDelivered)} for order ${orderId}.`);
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
logger?.info?.(`[Order Fulfilled] Could not resolve plugin config for order ${orderId}; defaulting capture_payment_on_delivered=true.`);
|
|
329
|
+
}
|
|
330
|
+
if (captureOnDelivered) {
|
|
331
|
+
try {
|
|
332
|
+
await autoCaptureOrderPayments(container, orderId, remoteQuery, paymentModuleService, logger);
|
|
333
|
+
}
|
|
334
|
+
catch (captureError) {
|
|
335
|
+
const captureErrorMessage = captureError instanceof Error ? `${captureError.message}\n${captureError.stack ?? ""}` : String(captureError);
|
|
336
|
+
logger?.error?.(`[Order Fulfilled] Failed to auto-capture payments for order ${orderId}: ${captureErrorMessage}`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
logger?.info?.(`[Order Fulfilled] Auto-capture disabled for order ${orderId}; skipping payment capture.`);
|
|
341
|
+
}
|
|
83
342
|
let displaySuffix = "";
|
|
84
343
|
try {
|
|
85
344
|
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
@@ -114,4 +373,4 @@ exports.config = {
|
|
|
114
373
|
"fulfillment.shipment_delivered",
|
|
115
374
|
],
|
|
116
375
|
};
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZnVsZmlsbGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL29yZGVyLWZ1bGZpbGxlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQkEsOERBd0NDO0FBVUQsd0NBMERDO0FBL0hELHFEQUFrRztBQUVsRyxxREFBbUQ7QUFDbkQsZ0RBQTJEO0FBVTNEOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLHlCQUF5QixDQUM3QyxhQUFxQixFQUNyQixXQUFnQztJQUVoQyxJQUFJLENBQUM7UUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUEsbUNBQTJCLEVBQUM7WUFDbkQsVUFBVSxFQUFFLGFBQWE7WUFDekIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztZQUMxQixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRTtTQUNqQyxDQUFDLENBQUE7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ3hELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDNUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssYUFBYSxDQUFzQyxDQUFBO1FBQ25ILElBQUksV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQTtRQUM3QixDQUFDO1FBQ0QsMkZBQTJGO1FBQzNGLE1BQU0sVUFBVSxHQUFHLElBQUEsbUNBQTJCLEVBQUM7WUFDN0MsVUFBVSxFQUFFLE9B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
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZnVsZmlsbGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL29yZGVyLWZ1bGZpbGxlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4VUEsOERBd0NDO0FBVUQsd0NBZ0dDO0FBL2RELHFEQUFrRztBQUVsRyxxREFBbUQ7QUFDbkQscURBQTZEO0FBQzdELGdEQUEyRDtBQUMzRCxzQ0FBaUY7QUFrQmpGLFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUNyRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM1QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFJLEtBQTZCLENBQUMsS0FBSyxDQUFBO1FBQ25ELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUM1QixPQUFnQztJQUVoQyxNQUFNLFNBQVMsR0FBRyxPQUFPLE9BQU8sQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7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
|
|
@@ -4,7 +4,7 @@ exports.reorderWorkflow = void 0;
|
|
|
4
4
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
5
|
const steps_1 = require("./steps");
|
|
6
6
|
exports.reorderWorkflow = (0, workflows_sdk_1.createWorkflow)("reorder", (input) => {
|
|
7
|
-
const { order_id, customer_id } = input;
|
|
7
|
+
const { order_id, customer_id, force_reorder } = input;
|
|
8
8
|
// Step 1: Retrieve and validate order
|
|
9
9
|
const { order } = (0, steps_1.retrieveOrderStep)({
|
|
10
10
|
order_id,
|
|
@@ -13,6 +13,7 @@ exports.reorderWorkflow = (0, workflows_sdk_1.createWorkflow)("reorder", (input)
|
|
|
13
13
|
// Step 2: Transform order to cart input
|
|
14
14
|
const { cartInput } = (0, steps_1.transformOrderToCartStep)({
|
|
15
15
|
order,
|
|
16
|
+
force_reorder,
|
|
16
17
|
});
|
|
17
18
|
// Step 3: Create cart from order
|
|
18
19
|
const { cart } = (0, steps_1.createCartFromOrderStep)({
|
|
@@ -24,4 +25,4 @@ exports.reorderWorkflow = (0, workflows_sdk_1.createWorkflow)("reorder", (input)
|
|
|
24
25
|
});
|
|
25
26
|
});
|
|
26
27
|
exports.default = exports.reorderWorkflow;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVvcmRlci13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcmVvcmRlci13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFHMEM7QUFDMUMsbUNBSWdCO0FBTUgsUUFBQSxlQUFlLEdBQUcsSUFBQSw4QkFBYyxFQUMzQyxTQUFTLEVBQ1QsQ0FDRSxLQUEyQixFQUNjLEVBQUU7SUFDM0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRXRELHNDQUFzQztJQUN0QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBQSx5QkFBaUIsRUFBQztRQUNsQyxRQUFRO1FBQ1IsV0FBVztLQUNaLENBQUMsQ0FBQTtJQUVGLHdDQUF3QztJQUN4QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBQSxnQ0FBd0IsRUFBQztRQUM3QyxLQUFLO1FBQ0wsYUFBYTtLQUNkLENBQUMsQ0FBQTtJQUVGLGlDQUFpQztJQUNqQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBQSwrQkFBdUIsRUFBQztRQUN2QyxTQUFTO0tBQ1YsQ0FBQyxDQUFBO0lBRUYsMENBQTBDO0lBQzFDLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQztRQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7S0FDakIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUE7QUFFRCxrQkFBZSx1QkFBZSxDQUFBIn0=
|
|
@@ -15,7 +15,6 @@ exports.retrieveOrderStep = (0, workflows_sdk_1.createStep)("retrieve-order", as
|
|
|
15
15
|
const remoteQuery = container.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
|
|
16
16
|
let orders;
|
|
17
17
|
try {
|
|
18
|
-
// Fix: Use array format for id filter to ensure proper filtering
|
|
19
18
|
const queryObject = (0, utils_2.remoteQueryObjectFromString)({
|
|
20
19
|
entryPoint: "order",
|
|
21
20
|
fields: [
|
|
@@ -25,178 +24,52 @@ exports.retrieveOrderStep = (0, workflows_sdk_1.createStep)("retrieve-order", as
|
|
|
25
24
|
"billing_address.*",
|
|
26
25
|
"region_id",
|
|
27
26
|
"sales_channel_id",
|
|
28
|
-
"customer_id",
|
|
29
|
-
"customer.*",
|
|
27
|
+
"customer_id",
|
|
28
|
+
"customer.*",
|
|
30
29
|
"email",
|
|
31
30
|
],
|
|
32
31
|
filters: {
|
|
33
|
-
id: [order_id],
|
|
32
|
+
id: [order_id],
|
|
34
33
|
},
|
|
35
34
|
});
|
|
36
35
|
orders = await remoteQuery(queryObject);
|
|
37
|
-
// Detailed logging: Raw remoteQuery result
|
|
38
|
-
console.log("[Order Management] Raw remoteQuery result:", {
|
|
39
|
-
order_id_requested: order_id,
|
|
40
|
-
orders_type: Array.isArray(orders) ? 'array' : typeof orders,
|
|
41
|
-
orders_length: Array.isArray(orders) ? orders.length : 'N/A',
|
|
42
|
-
orders_is_array: Array.isArray(orders),
|
|
43
|
-
first_order_exists: Array.isArray(orders) ? !!orders[0] : !!orders,
|
|
44
|
-
first_order_id: Array.isArray(orders) && orders[0] ? orders[0].id : orders?.id,
|
|
45
|
-
first_few_order_ids: Array.isArray(orders) ? orders.slice(0, 5).map((o) => o?.id) : 'N/A',
|
|
46
|
-
timestamp: new Date().toISOString(),
|
|
47
|
-
});
|
|
48
36
|
}
|
|
49
37
|
catch (queryError) {
|
|
50
|
-
console.error("[Order Management] Remote query error:", {
|
|
51
|
-
order_id,
|
|
52
|
-
error: queryError,
|
|
53
|
-
error_message: queryError instanceof Error ? queryError.message : "Unknown error",
|
|
54
|
-
error_stack: queryError instanceof Error ? queryError.stack : undefined,
|
|
55
|
-
});
|
|
56
38
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to retrieve order: ${queryError instanceof Error ? queryError.message : "Unknown error"}`);
|
|
57
39
|
}
|
|
58
|
-
// Fix: Find the correct order from results, don't just take first one
|
|
59
40
|
let order = null;
|
|
60
41
|
if (Array.isArray(orders)) {
|
|
61
|
-
// If multiple orders returned, find the one matching our order_id
|
|
62
42
|
order = orders.find((o) => o && o.id === order_id);
|
|
63
|
-
if (!order && orders.length > 0) {
|
|
64
|
-
console.warn("[Order Management] Order ID mismatch - multiple orders returned:", {
|
|
65
|
-
order_id_requested: order_id,
|
|
66
|
-
orders_returned: orders.length,
|
|
67
|
-
first_order_id: orders[0]?.id,
|
|
68
|
-
first_few_order_ids: orders.slice(0, 5).map((o) => o?.id),
|
|
69
|
-
timestamp: new Date().toISOString(),
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
43
|
}
|
|
73
44
|
else {
|
|
74
45
|
order = orders;
|
|
75
46
|
}
|
|
76
|
-
// Validate we got the correct order
|
|
77
47
|
if (!order) {
|
|
78
|
-
console.error("[Order Management] Order not found after query:", {
|
|
79
|
-
order_id_requested: order_id,
|
|
80
|
-
orders_result: orders,
|
|
81
|
-
orders_type: typeof orders,
|
|
82
|
-
orders_count: Array.isArray(orders) ? orders.length : orders ? 1 : 0,
|
|
83
|
-
timestamp: new Date().toISOString(),
|
|
84
|
-
});
|
|
85
48
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Order with id ${order_id} not found`);
|
|
86
49
|
}
|
|
87
|
-
// Critical validation: Ensure we got the correct order
|
|
88
50
|
if (order.id !== order_id) {
|
|
89
|
-
console.error("[Order Management] Order ID mismatch - wrong order returned:", {
|
|
90
|
-
order_id_requested: order_id,
|
|
91
|
-
order_id_received: order.id,
|
|
92
|
-
orders_count: Array.isArray(orders) ? orders.length : 1,
|
|
93
|
-
orders_array_ids: Array.isArray(orders) ? orders.map((o) => o?.id).slice(0, 10) : [order.id],
|
|
94
|
-
timestamp: new Date().toISOString(),
|
|
95
|
-
});
|
|
96
51
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Order with id ${order_id} not found. Query returned order ${order.id} instead.`);
|
|
97
52
|
}
|
|
98
|
-
console.log("[Order Management] Correct order found:", {
|
|
99
|
-
order_id_requested: order_id,
|
|
100
|
-
order_id_received: order.id,
|
|
101
|
-
order_ids_match: order.id === order_id,
|
|
102
|
-
timestamp: new Date().toISOString(),
|
|
103
|
-
});
|
|
104
|
-
// Detailed logging: Full order object structure
|
|
105
|
-
console.log("[Order Management] Full order object structure:", {
|
|
106
|
-
order_id,
|
|
107
|
-
order_keys: Object.keys(order),
|
|
108
|
-
order_id_value: order.id,
|
|
109
|
-
order_customer_id_direct: order.customer_id,
|
|
110
|
-
order_customer_id_type: typeof order.customer_id,
|
|
111
|
-
order_customer_id_value: order.customer_id,
|
|
112
|
-
// Check for nested customer objects
|
|
113
|
-
has_customer_object: !!order.customer,
|
|
114
|
-
customer_object_type: typeof order.customer,
|
|
115
|
-
customer_object_keys: order.customer && typeof order.customer === 'object' ? Object.keys(order.customer) : 'N/A',
|
|
116
|
-
customer_object_id: order.customer && typeof order.customer === 'object' ? order.customer.id : 'N/A',
|
|
117
|
-
// Check for cart relationship
|
|
118
|
-
has_cart: !!order.cart,
|
|
119
|
-
cart_customer_id: order.cart?.customer_id,
|
|
120
|
-
// Full order JSON (truncated for large objects)
|
|
121
|
-
order_json: JSON.stringify(order, null, 2).substring(0, 2000),
|
|
122
|
-
timestamp: new Date().toISOString(),
|
|
123
|
-
});
|
|
124
|
-
// Debug: Log what customer_id we actually got from the query
|
|
125
|
-
console.log("[Order Management] Customer ID retrieval debug:", {
|
|
126
|
-
order_id,
|
|
127
|
-
order_customer_id_direct: order.customer_id,
|
|
128
|
-
order_customer_id_type: typeof order.customer_id,
|
|
129
|
-
order_customer_id_is_null: order.customer_id === null,
|
|
130
|
-
order_customer_id_is_undefined: order.customer_id === undefined,
|
|
131
|
-
order_customer_id_is_empty_string: order.customer_id === "",
|
|
132
|
-
order_has_customer_object: !!order.customer,
|
|
133
|
-
order_customer_object_id: order.customer?.id,
|
|
134
|
-
// Don't log cart - we're not using it anymore
|
|
135
|
-
timestamp: new Date().toISOString(),
|
|
136
|
-
});
|
|
137
|
-
// Get customer_id - prioritize order.customer_id as source of truth
|
|
138
|
-
// Use nullish coalescing (??) instead of || to only fallback on null/undefined
|
|
139
53
|
let orderCustomerId = null;
|
|
140
54
|
if (order.customer_id) {
|
|
141
|
-
// Direct field is the most reliable
|
|
142
55
|
orderCustomerId = order.customer_id;
|
|
143
56
|
}
|
|
144
57
|
else if (order.customer && typeof order.customer === 'object' && order.customer.id) {
|
|
145
|
-
// Try customer object if direct field is missing
|
|
146
58
|
orderCustomerId = order.customer.id;
|
|
147
59
|
}
|
|
148
60
|
else {
|
|
149
|
-
// No fallback to cart - it might be outdated
|
|
150
|
-
// If customer_id is truly missing, we need to fail explicitly
|
|
151
61
|
orderCustomerId = null;
|
|
152
62
|
}
|
|
153
|
-
// Validate that we have a customer_id
|
|
154
63
|
if (!orderCustomerId) {
|
|
155
|
-
console.error("[Order Management] Order missing customer_id:", {
|
|
156
|
-
order_id,
|
|
157
|
-
order_has_customer_id: !!order.customer_id,
|
|
158
|
-
order_has_customer_object: !!order.customer,
|
|
159
|
-
order_customer_object_id: order.customer?.id,
|
|
160
|
-
order_has_cart: !!order.cart,
|
|
161
|
-
cart_customer_id: order.cart?.customer_id,
|
|
162
|
-
warning: "Order should have customer_id - this indicates a data integrity issue",
|
|
163
|
-
timestamp: new Date().toISOString(),
|
|
164
|
-
});
|
|
165
64
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Order ${order_id} is missing customer_id. Cannot validate ownership.`);
|
|
166
65
|
}
|
|
167
66
|
const authCustomerId = customer_id;
|
|
168
67
|
const customerIdsMatch = orderCustomerId === authCustomerId;
|
|
169
|
-
console.log("[Order Management] Customer ID comparison (fixed):", {
|
|
170
|
-
order_id,
|
|
171
|
-
order_customer_id: orderCustomerId,
|
|
172
|
-
order_customer_id_source: order.customer_id ? 'direct' :
|
|
173
|
-
(order.customer?.id ? 'customer_object' : 'missing'),
|
|
174
|
-
authentication_customer_id: authCustomerId,
|
|
175
|
-
match: customerIdsMatch,
|
|
176
|
-
strings_equal: String(orderCustomerId) === String(authCustomerId),
|
|
177
|
-
// Type safety check
|
|
178
|
-
both_are_strings: typeof orderCustomerId === 'string' && typeof authCustomerId === 'string',
|
|
179
|
-
timestamp: new Date().toISOString(),
|
|
180
|
-
});
|
|
181
|
-
// Validate customer ownership
|
|
182
68
|
if (!customerIdsMatch) {
|
|
183
|
-
console.warn("[Order Management] Customer ID mismatch - Access denied:", {
|
|
184
|
-
order_id,
|
|
185
|
-
order_customer_id: orderCustomerId,
|
|
186
|
-
order_customer_id_source: order.customer_id ? 'direct' : 'customer_object',
|
|
187
|
-
authentication_customer_id: authCustomerId,
|
|
188
|
-
reason: "Order customer_id does not match authenticated customer_id",
|
|
189
|
-
timestamp: new Date().toISOString(),
|
|
190
|
-
});
|
|
191
69
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "You can only reorder your own orders");
|
|
192
70
|
}
|
|
193
|
-
console.log("[Order Management] Customer ID validation passed:", {
|
|
194
|
-
order_id,
|
|
195
|
-
customer_id: authCustomerId,
|
|
196
|
-
timestamp: new Date().toISOString(),
|
|
197
|
-
});
|
|
198
71
|
return new workflows_sdk_1.StepResponse({
|
|
199
72
|
order: order,
|
|
200
73
|
});
|
|
201
74
|
});
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmlldmUtb3JkZXItc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvcmV0cmlldmUtb3JkZXItc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLHFEQUFrRztBQWtEckYsUUFBQSxpQkFBaUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3pDLGdCQUFnQixFQUNoQixLQUFLLEVBQ0gsS0FBNkIsRUFDN0IsRUFBRSxTQUFTLEVBQUUsRUFDbUMsRUFBRTtJQUNsRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV2QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixzQkFBc0IsQ0FDdkIsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUNBQXFDLENBQ3RDLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDbkMsaUNBQXlCLENBQUMsWUFBWSxDQUN2QyxDQUFBO0lBRUQsSUFBSSxNQUFNLENBQUE7SUFDVixJQUFJLENBQUM7UUFDSCxpRUFBaUU7UUFDakUsTUFBTSxXQUFXLEdBQUcsSUFBQSxtQ0FBMkIsRUFBQztZQUM5QyxVQUFVLEVBQUUsT0FBTztZQUNuQixNQUFNLEVBQUU7Z0JBQ04sSUFBSTtnQkFDSixTQUFTO2dCQUNULG9CQUFvQjtnQkFDcEIsbUJBQW1CO2dCQUNuQixXQUFXO2dCQUNYLGtCQUFrQjtnQkFDbEIsYUFBYSxFQUFHLGlDQUFpQztnQkFDakQsWUFBWSxFQUFJLHdDQUF3Qztn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
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmlldmUtb3JkZXItc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvcmV0cmlldmUtb3JkZXItc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLHFEQUFrRztBQWtEckYsUUFBQSxpQkFBaUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3pDLGdCQUFnQixFQUNoQixLQUFLLEVBQ0gsS0FBNkIsRUFDN0IsRUFBRSxTQUFTLEVBQUUsRUFDbUMsRUFBRTtJQUNsRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV2QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixzQkFBc0IsQ0FDdkIsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUNBQXFDLENBQ3RDLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDbkMsaUNBQXlCLENBQUMsWUFBWSxDQUN2QyxDQUFBO0lBRUQsSUFBSSxNQUFNLENBQUE7SUFDVixJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFBLG1DQUEyQixFQUFDO1lBQzlDLFVBQVUsRUFBRSxPQUFPO1lBQ25CLE1BQU0sRUFBRTtnQkFDTixJQUFJO2dCQUNKLFNBQVM7Z0JBQ1Qsb0JBQW9CO2dCQUNwQixtQkFBbUI7Z0JBQ25CLFdBQVc7Z0JBQ1gsa0JBQWtCO2dCQUNsQixhQUFhO2dCQUNiLFlBQVk7Z0JBQ1osT0FBTzthQUNSO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEVB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
|
|
@@ -1,14 +1,203 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transformOrderToCartStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
5
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
-
|
|
6
|
-
const
|
|
6
|
+
const getVariantAvailableQuantity = (variant) => {
|
|
7
|
+
const directQuantity = [
|
|
8
|
+
variant.calculated_inventory_quantity,
|
|
9
|
+
variant.inventory_quantity,
|
|
10
|
+
].find((quantity) => typeof quantity === "number");
|
|
11
|
+
if (typeof directQuantity === "number") {
|
|
12
|
+
return directQuantity;
|
|
13
|
+
}
|
|
14
|
+
const inventoryItems = variant.inventory_items ?? [];
|
|
15
|
+
if (!inventoryItems.length) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
// For variants linked to multiple inventory items, sellable quantity is
|
|
19
|
+
// limited by the "bottleneck" item after accounting for required quantity.
|
|
20
|
+
const availableByItem = inventoryItems
|
|
21
|
+
.map((item) => {
|
|
22
|
+
const requiredQuantity = typeof item.required_quantity === "number" && item.required_quantity > 0
|
|
23
|
+
? item.required_quantity
|
|
24
|
+
: 1;
|
|
25
|
+
const levels = item.inventory?.location_levels ?? [];
|
|
26
|
+
const totalAvailable = levels.reduce((sum, level) => {
|
|
27
|
+
if (typeof level.available_quantity === "number") {
|
|
28
|
+
return sum + level.available_quantity;
|
|
29
|
+
}
|
|
30
|
+
if (typeof level.stocked_quantity === "number" &&
|
|
31
|
+
typeof level.reserved_quantity === "number") {
|
|
32
|
+
return sum + (level.stocked_quantity - level.reserved_quantity);
|
|
33
|
+
}
|
|
34
|
+
return sum;
|
|
35
|
+
}, 0);
|
|
36
|
+
return Math.floor(totalAvailable / requiredQuantity);
|
|
37
|
+
})
|
|
38
|
+
.filter((value) => Number.isFinite(value));
|
|
39
|
+
if (!availableByItem.length) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return Math.min(...availableByItem);
|
|
43
|
+
};
|
|
44
|
+
exports.transformOrderToCartStep = (0, workflows_sdk_1.createStep)("transform-order-to-cart", async (input, { container }) => {
|
|
45
|
+
const { order, force_reorder = false } = input;
|
|
46
|
+
const variantDetailsById = new Map();
|
|
47
|
+
for (const item of order.items || []) {
|
|
48
|
+
if (!item.variant_id || variantDetailsById.has(item.variant_id)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const orderItem = item;
|
|
52
|
+
variantDetailsById.set(item.variant_id, {
|
|
53
|
+
variant_name: orderItem.variant_title ?? null,
|
|
54
|
+
product_name: orderItem.product_title ?? null,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
7
57
|
// Map order items to cart items
|
|
8
58
|
const items = (order.items || []).map((item) => ({
|
|
9
59
|
variant_id: item.variant_id,
|
|
10
60
|
quantity: item.quantity,
|
|
11
61
|
}));
|
|
62
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
63
|
+
const requestedQuantityByVariant = new Map();
|
|
64
|
+
for (const item of items) {
|
|
65
|
+
if (!item.variant_id) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const existingQuantity = requestedQuantityByVariant.get(item.variant_id) ?? 0;
|
|
69
|
+
requestedQuantityByVariant.set(item.variant_id, existingQuantity + item.quantity);
|
|
70
|
+
}
|
|
71
|
+
const variantIds = Array.from(requestedQuantityByVariant.keys());
|
|
72
|
+
if (!variantIds.length) {
|
|
73
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Cannot reorder: no valid variants found in order items.");
|
|
74
|
+
}
|
|
75
|
+
const { data: variants } = await query.graph({
|
|
76
|
+
entity: "product_variant",
|
|
77
|
+
fields: [
|
|
78
|
+
"id",
|
|
79
|
+
"inventory_quantity",
|
|
80
|
+
"calculated_inventory_quantity",
|
|
81
|
+
"allow_backorder",
|
|
82
|
+
"manage_inventory",
|
|
83
|
+
"inventory_items.required_quantity",
|
|
84
|
+
"inventory_items.inventory.location_levels.available_quantity",
|
|
85
|
+
"inventory_items.inventory.location_levels.stocked_quantity",
|
|
86
|
+
"inventory_items.inventory.location_levels.reserved_quantity",
|
|
87
|
+
],
|
|
88
|
+
filters: {
|
|
89
|
+
id: variantIds,
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
const variantsById = new Map();
|
|
93
|
+
for (const variant of variants) {
|
|
94
|
+
variantsById.set(variant.id, variant);
|
|
95
|
+
}
|
|
96
|
+
const inventoryIssues = [];
|
|
97
|
+
const forceModeSkippedIssues = [];
|
|
98
|
+
const maxAllowedByVariant = new Map();
|
|
99
|
+
for (const [variantId, requestedQuantity] of requestedQuantityByVariant.entries()) {
|
|
100
|
+
const variant = variantsById.get(variantId);
|
|
101
|
+
const variantDetails = variantDetailsById.get(variantId);
|
|
102
|
+
if (!variant) {
|
|
103
|
+
const issue = {
|
|
104
|
+
variant_id: variantId,
|
|
105
|
+
variant_name: variantDetails?.variant_name ?? null,
|
|
106
|
+
product_name: variantDetails?.product_name ?? null,
|
|
107
|
+
requested_quantity: requestedQuantity,
|
|
108
|
+
available_quantity: null,
|
|
109
|
+
reason: "Variant not found",
|
|
110
|
+
};
|
|
111
|
+
inventoryIssues.push(issue);
|
|
112
|
+
forceModeSkippedIssues.push(issue);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
// If inventory management is explicitly disabled or backorders are explicitly allowed,
|
|
116
|
+
// this variant should not block reorder creation.
|
|
117
|
+
if (variant.manage_inventory === false || variant.allow_backorder === true) {
|
|
118
|
+
maxAllowedByVariant.set(variantId, requestedQuantity);
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const availableQuantity = getVariantAvailableQuantity(variant);
|
|
122
|
+
if (availableQuantity === null) {
|
|
123
|
+
const issue = {
|
|
124
|
+
variant_id: variantId,
|
|
125
|
+
variant_name: variantDetails?.variant_name ?? null,
|
|
126
|
+
product_name: variantDetails?.product_name ?? null,
|
|
127
|
+
requested_quantity: requestedQuantity,
|
|
128
|
+
available_quantity: null,
|
|
129
|
+
reason: "Inventory quantity is unavailable",
|
|
130
|
+
};
|
|
131
|
+
inventoryIssues.push(issue);
|
|
132
|
+
forceModeSkippedIssues.push(issue);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (availableQuantity <= 0) {
|
|
136
|
+
const issue = {
|
|
137
|
+
variant_id: variantId,
|
|
138
|
+
variant_name: variantDetails?.variant_name ?? null,
|
|
139
|
+
product_name: variantDetails?.product_name ?? null,
|
|
140
|
+
requested_quantity: requestedQuantity,
|
|
141
|
+
available_quantity: availableQuantity,
|
|
142
|
+
reason: "Out of stock",
|
|
143
|
+
};
|
|
144
|
+
inventoryIssues.push(issue);
|
|
145
|
+
forceModeSkippedIssues.push(issue);
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
maxAllowedByVariant.set(variantId, Math.min(requestedQuantity, Math.floor(availableQuantity)));
|
|
149
|
+
if (availableQuantity < requestedQuantity) {
|
|
150
|
+
inventoryIssues.push({
|
|
151
|
+
variant_id: variantId,
|
|
152
|
+
variant_name: variantDetails?.variant_name ?? null,
|
|
153
|
+
product_name: variantDetails?.product_name ?? null,
|
|
154
|
+
requested_quantity: requestedQuantity,
|
|
155
|
+
available_quantity: availableQuantity,
|
|
156
|
+
reason: availableQuantity <= 0 ? "Out of stock" : "Insufficient inventory",
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (!force_reorder && inventoryIssues.length) {
|
|
161
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Inventory check failed for reorder items: ${JSON.stringify(inventoryIssues)}`);
|
|
162
|
+
}
|
|
163
|
+
const finalItems = force_reorder
|
|
164
|
+
? (() => {
|
|
165
|
+
const remainingByVariant = new Map(maxAllowedByVariant);
|
|
166
|
+
const adjustedItems = [];
|
|
167
|
+
for (const item of items) {
|
|
168
|
+
const remaining = remainingByVariant.get(item.variant_id) ?? 0;
|
|
169
|
+
if (remaining <= 0) {
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
const itemQuantity = Math.min(item.quantity, remaining);
|
|
173
|
+
if (itemQuantity <= 0) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
adjustedItems.push({
|
|
177
|
+
variant_id: item.variant_id,
|
|
178
|
+
quantity: itemQuantity,
|
|
179
|
+
});
|
|
180
|
+
remainingByVariant.set(item.variant_id, remaining - itemQuantity);
|
|
181
|
+
}
|
|
182
|
+
return adjustedItems;
|
|
183
|
+
})()
|
|
184
|
+
: items;
|
|
185
|
+
if (force_reorder && finalItems.length === 0) {
|
|
186
|
+
const fallbackIssues = forceModeSkippedIssues.length > 0
|
|
187
|
+
? forceModeSkippedIssues
|
|
188
|
+
: Array.from(requestedQuantityByVariant.entries()).map(([variantId, requestedQuantity]) => {
|
|
189
|
+
const variantDetails = variantDetailsById.get(variantId);
|
|
190
|
+
return {
|
|
191
|
+
variant_id: variantId,
|
|
192
|
+
variant_name: variantDetails?.variant_name ?? null,
|
|
193
|
+
product_name: variantDetails?.product_name ?? null,
|
|
194
|
+
requested_quantity: requestedQuantity,
|
|
195
|
+
available_quantity: 0,
|
|
196
|
+
reason: "Out of stock",
|
|
197
|
+
};
|
|
198
|
+
});
|
|
199
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Inventory check failed for reorder items: ${JSON.stringify(fallbackIssues)}`);
|
|
200
|
+
}
|
|
12
201
|
// Extract billing address
|
|
13
202
|
const billingAddress = order.billing_address
|
|
14
203
|
? {
|
|
@@ -44,10 +233,10 @@ exports.transformOrderToCartStep = (0, workflows_sdk_1.createStep)("transform-or
|
|
|
44
233
|
email: order.email,
|
|
45
234
|
billing_address: billingAddress,
|
|
46
235
|
shipping_address: shippingAddress,
|
|
47
|
-
items,
|
|
236
|
+
items: finalItems,
|
|
48
237
|
};
|
|
49
238
|
return new workflows_sdk_1.StepResponse({
|
|
50
239
|
cartInput,
|
|
51
240
|
});
|
|
52
241
|
});
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLW9yZGVyLXRvLWNhcnQtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvdHJhbnNmb3JtLW9yZGVyLXRvLWNhcnQtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUEwQy9ELFFBQUEsd0JBQXdCLEdBQUcsSUFBQSwwQkFBVSxFQUNoRCx5QkFBeUIsRUFDekIsS0FBSyxFQUNILEtBQW9DLEVBQ21CLEVBQUU7SUFDekQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV2QixnQ0FBZ0M7SUFDaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7UUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO0tBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBRUgsMEJBQTBCO0lBQzFCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxlQUFlO1FBQzFDLENBQUMsQ0FBQztZQUNFLFVBQVUsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFVBQVU7WUFDNUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUztZQUMxQyxTQUFTLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUFTO1lBQzFDLFNBQVMsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQVM7WUFDMUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSTtZQUNoQyxZQUFZLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZO1lBQ2hELFFBQVEsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVE7WUFDeEMsV0FBVyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVztZQUM5QyxLQUFLLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUFLO1NBQ25DO1FBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUViLDJCQUEyQjtJQUMzQixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZ0JBQWdCO1FBQzVDLENBQUMsQ0FBQztZQUNFLFVBQVUsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBVTtZQUM3QyxTQUFTLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVM7WUFDM0MsU0FBUyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTO1lBQzNDLFNBQVMsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUztZQUMzQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUk7WUFDakMsWUFBWSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUTtZQUN6QyxXQUFXLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFdBQVc7WUFDL0MsS0FBSyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO1NBQ3BDO1FBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUViLE1BQU0sU0FBUyxHQUFnRDtRQUM3RCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtRQUN4QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLGVBQWUsRUFBRSxjQUFjO1FBQy9CLGdCQUFnQixFQUFFLGVBQWU7UUFDakMsS0FBSztLQUNOLENBQUE7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBaUM7UUFDdEQsU0FBUztLQUNWLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLW9yZGVyLXRvLWNhcnQtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvdHJhbnNmb3JtLW9yZGVyLXRvLWNhcnQtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBa0Y7QUFDbEYscUVBQTRFO0FBMEU1RSxNQUFNLDJCQUEyQixHQUFHLENBQ2xDLE9BQStCLEVBQ2hCLEVBQUU7SUFDakIsTUFBTSxjQUFjLEdBQUc7UUFDckIsT0FBTyxDQUFDLDZCQUE2QjtRQUNyQyxPQUFPLENBQUMsa0JBQWtCO0tBQzNCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFzQixFQUFFLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUE7SUFFdEUsSUFBSSxPQUFPLGNBQWMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxPQUFPLGNBQWMsQ0FBQTtJQUN2QixDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUE7SUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsMkVBQTJFO0lBQzNFLE1BQU0sZUFBZSxHQUFHLGNBQWM7U0FDbkMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDWixNQUFNLGdCQUFnQixHQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUM7WUFDdEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUVQLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQTtRQUNwRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2xELElBQUksT0FBTyxLQUFLLENBQUMsa0JBQWtCLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2pELE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQTtZQUN2QyxDQUFDO1lBRUQsSUFDRSxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRO2dCQUMxQyxPQUFPLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxRQUFRLEVBQzNDLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUE7WUFDakUsQ0FBQztZQUVELE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBRUwsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3RELENBQUMsQ0FBQztTQUNELE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBRTVDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUE7QUFDckMsQ0FBQyxDQUFBO0FBRVksUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELHlCQUF5QixFQUN6QixLQUFLLEVBQ0gsS0FBb0MsRUFDcEMsRUFBRSxTQUFTLEVBQUUsRUFDMEMsRUFBRTtJQUN6RCxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsR0FBRyxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFOUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFNL0IsQ0FBQTtJQUVILEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDaEUsU0FBUTtRQUNWLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUlqQixDQUFBO1FBRUQsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxhQUFhLElBQUksSUFBSTtZQUM3QyxZQUFZLEVBQUUsU0FBUyxDQUFDLGFBQWEsSUFBSSxJQUFJO1NBQzlDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7UUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO0tBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBRUgsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYSxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM1RSxNQUFNLDBCQUEwQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBRTVELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixTQUFRO1FBQ1YsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsMEJBQTBCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDN0UsMEJBQTBCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ25GLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7SUFDaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix5REFBeUQsQ0FDMUQsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMzQyxNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixvQkFBb0I7WUFDcEIsK0JBQStCO1lBQy9CLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsbUNBQW1DO1lBQ25DLDhEQUE4RDtZQUM5RCw0REFBNEQ7WUFDNUQsNkRBQTZEO1NBQzlEO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsRUFBRSxFQUFFLFVBQVU7U0FDZjtLQUNGLENBQUMsQ0FBQTtJQUVGLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFrQyxDQUFBO0lBQzlELEtBQUssTUFBTSxPQUFPLElBQUksUUFBb0MsRUFBRSxDQUFDO1FBQzNELFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQXFCLEVBQUUsQ0FBQTtJQUM1QyxNQUFNLHNCQUFzQixHQUFxQixFQUFFLENBQUE7SUFDbkQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQTtJQUVyRCxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsSUFBSSwwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ2xGLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDM0MsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRXhELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sS0FBSyxHQUFtQjtnQkFDNUIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxJQUFJLElBQUk7Z0JBQ2xELFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxJQUFJLElBQUk7Z0JBQ2xELGtCQUFrQixFQUFFLGlCQUFpQjtnQkFDckMsa0JBQWtCLEVBQUUsSUFBSTtnQkFDeEIsTUFBTSxFQUFFLG1CQUFtQjthQUM1QixDQUFBO1lBQ0QsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMzQixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDbEMsU0FBUTtRQUNWLENBQUM7UUFFRCx1RkFBdUY7UUFDdkYsa0RBQWtEO1FBQ2xELElBQUksT0FBTyxDQUFDLGdCQUFnQixLQUFLLEtBQUssSUFBSSxPQUFPLENBQUMsZUFBZSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtZQUNyRCxTQUFRO1FBQ1YsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFOUQsSUFBSSxpQkFBaUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMvQixNQUFNLEtBQUssR0FBbUI7Z0JBQzVCLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixZQUFZLEVBQUUsY0FBYyxFQUFFLFlBQVksSUFBSSxJQUFJO2dCQUNsRCxZQUFZLEVBQUUsY0FBYyxFQUFFLFlBQVksSUFBSSxJQUFJO2dCQUNsRCxrQkFBa0IsRUFBRSxpQkFBaUI7Z0JBQ3JDLGtCQUFrQixFQUFFLElBQUk7Z0JBQ3hCLE1BQU0sRUFBRSxtQ0FBbUM7YUFDNUMsQ0FBQTtZQUNELGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDM0Isc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2xDLFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLEtBQUssR0FBbUI7Z0JBQzVCLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixZQUFZLEVBQUUsY0FBYyxFQUFFLFlBQVksSUFBSSxJQUFJO2dCQUNsRCxZQUFZLEVBQUUsY0FBYyxFQUFFLFlBQVksSUFBSSxJQUFJO2dCQUNsRCxrQkFBa0IsRUFBRSxpQkFBaUI7Z0JBQ3JDLGtCQUFrQixFQUFFLGlCQUFpQjtnQkFDckMsTUFBTSxFQUFFLGNBQWM7YUFDdkIsQ0FBQTtZQUNELGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDM0Isc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2xDLFNBQVE7UUFDVixDQUFDO1FBRUQsbUJBQW1CLENBQUMsR0FBRyxDQUNyQixTQUFTLEVBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FDM0QsQ0FBQTtRQUVELElBQUksaUJBQWlCLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztZQUMxQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUNuQixVQUFVLEVBQUUsU0FBUztnQkFDckIsWUFBWSxFQUFFLGNBQWMsRUFBRSxZQUFZLElBQUksSUFBSTtnQkFDbEQsWUFBWSxFQUFFLGNBQWMsRUFBRSxZQUFZLElBQUksSUFBSTtnQkFDbEQsa0JBQWtCLEVBQUUsaUJBQWlCO2dCQUNyQyxrQkFBa0IsRUFBRSxpQkFBaUI7Z0JBQ3JDLE1BQU0sRUFDSixpQkFBaUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCO2FBQ3JFLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0MsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsNkNBQTZDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FDL0UsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxhQUFhO1FBQzlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtZQUNKLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQWlCLG1CQUFtQixDQUFDLENBQUE7WUFDdkUsTUFBTSxhQUFhLEdBQW9ELEVBQUUsQ0FBQTtZQUV6RSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN6QixNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDOUQsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ25CLFNBQVE7Z0JBQ1YsQ0FBQztnQkFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUE7Z0JBQ3ZELElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUN0QixTQUFRO2dCQUNWLENBQUM7Z0JBRUQsYUFBYSxDQUFDLElBQUksQ0FBQztvQkFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixRQUFRLEVBQUUsWUFBWTtpQkFDdkIsQ0FBQyxDQUFBO2dCQUVGLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQTtZQUNuRSxDQUFDO1lBRUQsT0FBTyxhQUFhLENBQUE7UUFDdEIsQ0FBQyxDQUFDLEVBQUU7UUFDTixDQUFDLENBQUMsS0FBSyxDQUFBO0lBRVQsSUFBSSxhQUFhLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGNBQWMsR0FDbEIsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDL0IsQ0FBQyxDQUFDLHNCQUFzQjtZQUN4QixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDbEQsQ0FBQyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pDLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDeEQsT0FBTztvQkFDTCxVQUFVLEVBQUUsU0FBUztvQkFDckIsWUFBWSxFQUFFLGNBQWMsRUFBRSxZQUFZLElBQUksSUFBSTtvQkFDbEQsWUFBWSxFQUFFLGNBQWMsRUFBRSxZQUFZLElBQUksSUFBSTtvQkFDbEQsa0JBQWtCLEVBQUUsaUJBQWlCO29CQUNyQyxrQkFBa0IsRUFBRSxDQUFDO29CQUNyQixNQUFNLEVBQUUsY0FBYztpQkFDdkIsQ0FBQTtZQUNILENBQUMsQ0FDRixDQUFBO1FBRVAsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsNkNBQTZDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FDOUUsQ0FBQTtJQUNILENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGVBQWU7UUFDMUMsQ0FBQyxDQUFDO1lBQ0UsVUFBVSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsVUFBVTtZQUM1QyxTQUFTLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUFTO1lBQzFDLFNBQVMsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQVM7WUFDMUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUztZQUMxQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJO1lBQ2hDLFlBQVksRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVk7WUFDaEQsUUFBUSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUTtZQUN4QyxXQUFXLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXO1lBQzlDLEtBQUssRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUs7U0FDbkM7UUFDSCxDQUFDLENBQUMsU0FBUyxDQUFBO0lBRWIsMkJBQTJCO0lBQzNCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0I7UUFDNUMsQ0FBQyxDQUFDO1lBQ0UsVUFBVSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVO1lBQzdDLFNBQVMsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUztZQUMzQyxTQUFTLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVM7WUFDM0MsU0FBUyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTO1lBQzNDLElBQUksRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtZQUNqQyxZQUFZLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQVk7WUFDakQsUUFBUSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ3pDLFdBQVcsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBVztZQUMvQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUs7U0FDcEM7UUFDSCxDQUFDLENBQUMsU0FBUyxDQUFBO0lBRWIsTUFBTSxTQUFTLEdBQWdEO1FBQzdELFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1FBQ3hDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztRQUM5QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDbEIsZUFBZSxFQUFFLGNBQWM7UUFDL0IsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxLQUFLLEVBQUUsVUFBVTtLQUNsQixDQUFBO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQWlDO1FBQ3RELFNBQVM7S0FDVixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQSJ9
|
package/README.md
CHANGED
|
@@ -188,6 +188,9 @@ module.exports = defineConfig({
|
|
|
188
188
|
]
|
|
189
189
|
}
|
|
190
190
|
},
|
|
191
|
+
|
|
192
|
+
// Optional: auto-capture payment on delivered events (default: true)
|
|
193
|
+
capture_payment_on_delivered: true,
|
|
191
194
|
},
|
|
192
195
|
},
|
|
193
196
|
],
|
|
@@ -239,6 +242,9 @@ When the window has expired the API returns:
|
|
|
239
242
|
- **Push channel**: For `channel: "push"`, the recipient is treated as a **customer_id**. The code loads all active device tokens for that customer from the `notification_tokens` module (e.g. when using the `medusa-notification-token-management` plugin) and sends one push notification to each token. If the token module is not installed or the customer has no tokens, no push is sent.
|
|
240
243
|
- **SMS channel**: The plugin sends the SMS body in a form compatible with **medusa-twilio-sms** (`content.text`) and as `text`/`body`/`data.text` for other adapters. If you use medusa-twilio-sms and patch it to also accept string `content` or `data.text`, use `npx patch-package medusa-twilio-sms` after editing so the fix persists across installs.
|
|
241
244
|
|
|
245
|
+
**Optional Delivery Payment Capture Option:**
|
|
246
|
+
- `capture_payment_on_delivered` - Automatically captures the remaining authorized payment amount when delivery events are received (default: `true`). Set to `false` to disable auto-capture.
|
|
247
|
+
|
|
242
248
|
**Notes**:
|
|
243
249
|
- `storefrontUrl` and `jwtSecret` are required. All other options are optional.
|
|
244
250
|
- Order confirmation emails are only sent if a template path is provided. If no template is configured, emails will not be sent.
|
|
@@ -246,6 +252,7 @@ When the window has expired the API returns:
|
|
|
246
252
|
- OTP templates should include `{{otp}}` placeholder for the verification code.
|
|
247
253
|
- SMTP configuration is optional. If not enabled, emails will use Medusa's default email provider.
|
|
248
254
|
- Status-based notifications are optional. If enabled, notifications will be sent whenever an order reaches a configured status.
|
|
255
|
+
- Payment auto-capture on delivery is enabled by default and captures only the remaining uncaptured amount, skipping already captured payments.
|
|
249
256
|
|
|
250
257
|
### Payment detail module
|
|
251
258
|
|