order-management 0.0.18 → 0.0.20
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 +9 -9
- package/.medusa/server/src/admin/index.mjs +9 -9
- package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +32 -3
- package/.medusa/server/src/api/admin/swaps/[id]/process-payment/route.js +152 -0
- package/.medusa/server/src/api/admin/swaps/[id]/sync/route.js +148 -0
- package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +39 -2
- package/.medusa/server/src/api/store/swaps/route.js +14 -2
- package/.medusa/server/src/modules/swap/service.js +71 -1
- package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +71 -0
- package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +79 -0
- package/.medusa/server/src/workflows/steps/swap/handle-payment-difference-step.js +102 -0
- package/.medusa/server/src/workflows/steps/swap/index.js +12 -2
- package/.medusa/server/src/workflows/steps/swap/sync-medusa-status-step.js +132 -0
- package/.medusa/server/src/workflows/steps/swap/validate-eligibility-step.js +25 -0
- package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +23 -1
- package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +2 -18
- package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +7 -1
- package/.medusa/server/src/workflows/swaps/execute-swap-workflow.js +36 -0
- package/README.md +10 -0
- package/package.json +1 -1
|
@@ -1168,12 +1168,6 @@ const routeModule = {
|
|
|
1168
1168
|
};
|
|
1169
1169
|
const menuItemModule = {
|
|
1170
1170
|
menuItems: [
|
|
1171
|
-
{
|
|
1172
|
-
label: config$2.label,
|
|
1173
|
-
icon: config$2.icon,
|
|
1174
|
-
path: "/returns",
|
|
1175
|
-
nested: void 0
|
|
1176
|
-
},
|
|
1177
1171
|
{
|
|
1178
1172
|
label: config$3.label,
|
|
1179
1173
|
icon: config$3.icon,
|
|
@@ -1181,9 +1175,9 @@ const menuItemModule = {
|
|
|
1181
1175
|
nested: void 0
|
|
1182
1176
|
},
|
|
1183
1177
|
{
|
|
1184
|
-
label: config.label,
|
|
1185
|
-
icon: config.icon,
|
|
1186
|
-
path: "/returns
|
|
1178
|
+
label: config$2.label,
|
|
1179
|
+
icon: config$2.icon,
|
|
1180
|
+
path: "/returns",
|
|
1187
1181
|
nested: void 0
|
|
1188
1182
|
},
|
|
1189
1183
|
{
|
|
@@ -1191,6 +1185,12 @@ const menuItemModule = {
|
|
|
1191
1185
|
icon: config$1.icon,
|
|
1192
1186
|
path: "/swaps/:id",
|
|
1193
1187
|
nested: void 0
|
|
1188
|
+
},
|
|
1189
|
+
{
|
|
1190
|
+
label: config.label,
|
|
1191
|
+
icon: config.icon,
|
|
1192
|
+
path: "/returns/:id",
|
|
1193
|
+
nested: void 0
|
|
1194
1194
|
}
|
|
1195
1195
|
]
|
|
1196
1196
|
};
|
|
@@ -1167,12 +1167,6 @@ const routeModule = {
|
|
|
1167
1167
|
};
|
|
1168
1168
|
const menuItemModule = {
|
|
1169
1169
|
menuItems: [
|
|
1170
|
-
{
|
|
1171
|
-
label: config$2.label,
|
|
1172
|
-
icon: config$2.icon,
|
|
1173
|
-
path: "/returns",
|
|
1174
|
-
nested: void 0
|
|
1175
|
-
},
|
|
1176
1170
|
{
|
|
1177
1171
|
label: config$3.label,
|
|
1178
1172
|
icon: config$3.icon,
|
|
@@ -1180,9 +1174,9 @@ const menuItemModule = {
|
|
|
1180
1174
|
nested: void 0
|
|
1181
1175
|
},
|
|
1182
1176
|
{
|
|
1183
|
-
label: config.label,
|
|
1184
|
-
icon: config.icon,
|
|
1185
|
-
path: "/returns
|
|
1177
|
+
label: config$2.label,
|
|
1178
|
+
icon: config$2.icon,
|
|
1179
|
+
path: "/returns",
|
|
1186
1180
|
nested: void 0
|
|
1187
1181
|
},
|
|
1188
1182
|
{
|
|
@@ -1190,6 +1184,12 @@ const menuItemModule = {
|
|
|
1190
1184
|
icon: config$1.icon,
|
|
1191
1185
|
path: "/swaps/:id",
|
|
1192
1186
|
nested: void 0
|
|
1187
|
+
},
|
|
1188
|
+
{
|
|
1189
|
+
label: config.label,
|
|
1190
|
+
icon: config.icon,
|
|
1191
|
+
path: "/returns/:id",
|
|
1192
|
+
nested: void 0
|
|
1193
1193
|
}
|
|
1194
1194
|
]
|
|
1195
1195
|
};
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.POST = void 0;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const approve_swap_workflow_1 = require("../../../../../workflows/swaps/approve-swap-workflow");
|
|
6
|
+
const execute_swap_workflow_1 = require("../../../../../workflows/swaps/execute-swap-workflow");
|
|
6
7
|
const POST = async (req, res) => {
|
|
7
8
|
const { id } = req.params;
|
|
8
9
|
if (!id) {
|
|
@@ -13,13 +14,41 @@ const POST = async (req, res) => {
|
|
|
13
14
|
const authContext = req.auth_context;
|
|
14
15
|
const adminId = authContext?.actor_id || authContext?.user_id || "admin";
|
|
15
16
|
try {
|
|
16
|
-
|
|
17
|
+
// Step 1: Approve the swap
|
|
18
|
+
const { result: approvalResult } = await (0, approve_swap_workflow_1.approveSwapWorkflow)(req.scope).run({
|
|
17
19
|
input: {
|
|
18
20
|
swap_id: id,
|
|
19
21
|
admin_id: adminId,
|
|
20
22
|
},
|
|
21
23
|
});
|
|
22
|
-
|
|
24
|
+
// Step 2: Execute swap (create Medusa return and exchange)
|
|
25
|
+
try {
|
|
26
|
+
const { result: executionResult } = await (0, execute_swap_workflow_1.executeSwapWorkflow)(req.scope).run({
|
|
27
|
+
input: {
|
|
28
|
+
swap_id: id,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
res.json({
|
|
32
|
+
...approvalResult,
|
|
33
|
+
execution: executionResult,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
catch (executionError) {
|
|
37
|
+
// If execution fails, still return approval result but log the error
|
|
38
|
+
// Admin can retry execution later
|
|
39
|
+
if (executionError instanceof utils_1.MedusaError) {
|
|
40
|
+
res.status(500).json({
|
|
41
|
+
...approvalResult,
|
|
42
|
+
execution_error: {
|
|
43
|
+
message: executionError.message,
|
|
44
|
+
type: executionError.type,
|
|
45
|
+
},
|
|
46
|
+
warning: "Swap was approved but Medusa exchange creation failed. Please retry execution.",
|
|
47
|
+
});
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
throw executionError;
|
|
51
|
+
}
|
|
23
52
|
}
|
|
24
53
|
catch (error) {
|
|
25
54
|
if (error instanceof utils_1.MedusaError) {
|
|
@@ -42,4 +71,4 @@ const POST = async (req, res) => {
|
|
|
42
71
|
}
|
|
43
72
|
};
|
|
44
73
|
exports.POST = POST;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vYXBwcm92ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsZ0dBQTBGO0FBQzFGLGdHQUEwRjtBQUVuRixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUE7UUFDeEQsT0FBTTtJQUNSLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsTUFBTSxXQUFXLEdBQUksR0FFbkIsQ0FBQyxZQUFZLENBQUE7SUFFZixNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxPQUFPLElBQUksT0FBTyxDQUFBO0lBRXhFLElBQUksQ0FBQztRQUNILDJCQUEyQjtRQUMzQixNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFFLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxRQUFRLEVBQUUsT0FBTzthQUNsQjtTQUNGLENBQUMsQ0FBQTtRQUVGLDJEQUEyRDtRQUMzRCxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUMzRSxLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLEVBQUU7aUJBQ1o7YUFDRixDQUFDLENBQUE7WUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNQLEdBQUcsY0FBYztnQkFDakIsU0FBUyxFQUFFLGVBQWU7YUFDM0IsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUFDLE9BQU8sY0FBYyxFQUFFLENBQUM7WUFDeEIscUVBQXFFO1lBQ3JFLGtDQUFrQztZQUNsQyxJQUFJLGNBQWMsWUFBWSxtQkFBVyxFQUFFLENBQUM7Z0JBQzFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNuQixHQUFHLGNBQWM7b0JBQ2pCLGVBQWUsRUFBRTt3QkFDZixPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU87d0JBQy9CLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSTtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFLGdGQUFnRjtpQkFDMUYsQ0FBQyxDQUFBO2dCQUNGLE9BQU07WUFDUixDQUFDO1lBRUQsTUFBTSxjQUFjLENBQUE7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksbUJBQVcsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUNkLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUztnQkFDeEMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ0wsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWTtvQkFDL0MsQ0FBQyxDQUFDLEdBQUc7b0JBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtZQUVULEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUE5RVksUUFBQSxJQUFJLFFBOEVoQiJ9
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const swap_1 = require("../../../../../modules/swap");
|
|
7
|
+
const ProcessPaymentSchema = zod_1.z.object({
|
|
8
|
+
action: zod_1.z.enum(["approve", "reject"]),
|
|
9
|
+
payment_intent_id: zod_1.z.string().optional(),
|
|
10
|
+
});
|
|
11
|
+
const POST = async (req, res) => {
|
|
12
|
+
const { id } = req.params;
|
|
13
|
+
if (!id) {
|
|
14
|
+
res.status(400).json({ message: "Swap ID is required" });
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
// Type-safe access to auth_context
|
|
18
|
+
const authContext = req.auth_context;
|
|
19
|
+
const adminId = authContext?.actor_id || authContext?.user_id || "admin";
|
|
20
|
+
try {
|
|
21
|
+
const body = ProcessPaymentSchema.parse(req.body);
|
|
22
|
+
const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
|
|
23
|
+
const swap = await swapService.retrieveSwap(id);
|
|
24
|
+
const swapData = swap;
|
|
25
|
+
if (swapData.payment_status !== "pending") {
|
|
26
|
+
res.status(400).json({
|
|
27
|
+
message: `Payment cannot be processed. Current status: ${swapData.payment_status}`,
|
|
28
|
+
});
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const differenceDue = swapData.difference_due || 0;
|
|
32
|
+
if (differenceDue <= 0) {
|
|
33
|
+
res.status(400).json({
|
|
34
|
+
message: "No payment required for this swap",
|
|
35
|
+
});
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const swapMetadata = swapData.metadata || {};
|
|
39
|
+
const medusaIntegration = swapMetadata.medusa_integration || {};
|
|
40
|
+
if (body.action === "approve") {
|
|
41
|
+
// Resolve payment service
|
|
42
|
+
const paymentService = req.scope.resolve("payment");
|
|
43
|
+
let paymentIntentId = body.payment_intent_id;
|
|
44
|
+
if (paymentService?.capturePayment && swapData.order_id) {
|
|
45
|
+
try {
|
|
46
|
+
const payment = await paymentService.capturePayment({
|
|
47
|
+
order_id: swapData.order_id,
|
|
48
|
+
amount: differenceDue,
|
|
49
|
+
payment_intent_id: paymentIntentId,
|
|
50
|
+
});
|
|
51
|
+
paymentIntentId = payment.id;
|
|
52
|
+
// Update swap with captured payment
|
|
53
|
+
await swapService.updateSwaps({
|
|
54
|
+
selector: { id },
|
|
55
|
+
data: {
|
|
56
|
+
payment_status: "captured",
|
|
57
|
+
metadata: {
|
|
58
|
+
...swapMetadata,
|
|
59
|
+
medusa_integration: {
|
|
60
|
+
...medusaIntegration,
|
|
61
|
+
payment_intent_id: paymentIntentId,
|
|
62
|
+
payment_captured_at: new Date().toISOString(),
|
|
63
|
+
payment_captured_by: adminId,
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
res.status(500).json({
|
|
71
|
+
message: "Failed to capture payment",
|
|
72
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
73
|
+
});
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Mark as manually processed if payment service not available
|
|
79
|
+
await swapService.updateSwaps({
|
|
80
|
+
selector: { id },
|
|
81
|
+
data: {
|
|
82
|
+
payment_status: "captured",
|
|
83
|
+
metadata: {
|
|
84
|
+
...swapMetadata,
|
|
85
|
+
medusa_integration: {
|
|
86
|
+
...medusaIntegration,
|
|
87
|
+
payment_manually_processed: true,
|
|
88
|
+
payment_captured_at: new Date().toISOString(),
|
|
89
|
+
payment_captured_by: adminId,
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const updatedSwap = await swapService.retrieveSwap(id);
|
|
96
|
+
res.json({
|
|
97
|
+
swap: updatedSwap,
|
|
98
|
+
message: "Payment approved and captured",
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else if (body.action === "reject") {
|
|
102
|
+
// Reject payment - cancel the swap or mark for manual review
|
|
103
|
+
await swapService.updateSwaps({
|
|
104
|
+
selector: { id },
|
|
105
|
+
data: {
|
|
106
|
+
payment_status: "rejected",
|
|
107
|
+
metadata: {
|
|
108
|
+
...swapMetadata,
|
|
109
|
+
medusa_integration: {
|
|
110
|
+
...medusaIntegration,
|
|
111
|
+
payment_rejected_at: new Date().toISOString(),
|
|
112
|
+
payment_rejected_by: adminId,
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
const updatedSwap = await swapService.retrieveSwap(id);
|
|
118
|
+
res.json({
|
|
119
|
+
swap: updatedSwap,
|
|
120
|
+
message: "Payment rejected",
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
126
|
+
res.status(400).json({
|
|
127
|
+
message: "Invalid request data",
|
|
128
|
+
errors: error.errors,
|
|
129
|
+
});
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (error instanceof utils_1.MedusaError) {
|
|
133
|
+
const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
|
|
134
|
+
? 404
|
|
135
|
+
: error.type === utils_1.MedusaError.Types.INVALID_DATA
|
|
136
|
+
? 400
|
|
137
|
+
: 500;
|
|
138
|
+
res.status(statusCode).json({
|
|
139
|
+
message: error.message,
|
|
140
|
+
type: error.type,
|
|
141
|
+
});
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
145
|
+
res.status(500).json({
|
|
146
|
+
message: "Failed to process payment",
|
|
147
|
+
error: errorMessage,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
exports.POST = POST;
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vcHJvY2Vzcy1wYXltZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCw2QkFBdUI7QUFDdkIsc0RBQXlEO0FBR3pELE1BQU0sb0JBQW9CLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxNQUFNLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyQyxpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3pDLENBQUMsQ0FBQTtBQUVLLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNSLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQTtRQUN4RCxPQUFNO0lBQ1IsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBSSxHQUVuQixDQUFDLFlBQVksQ0FBQTtJQUVmLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxRQUFRLElBQUksV0FBVyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUE7SUFFeEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNqRCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7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
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const swap_1 = require("../../../../../modules/swap");
|
|
6
|
+
const utils_2 = require("@medusajs/framework/utils");
|
|
7
|
+
const POST = async (req, res) => {
|
|
8
|
+
const { id } = req.params;
|
|
9
|
+
if (!id) {
|
|
10
|
+
res.status(400).json({ message: "Swap ID is required" });
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
|
|
15
|
+
const swap = await swapService.retrieveSwap(id);
|
|
16
|
+
const swapData = swap;
|
|
17
|
+
if (!swapData.exchange_id && !swapData.return_id) {
|
|
18
|
+
res.json({
|
|
19
|
+
swap,
|
|
20
|
+
status_synced: false,
|
|
21
|
+
});
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const remoteQuery = req.scope.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
|
|
25
|
+
let medusaStatus;
|
|
26
|
+
let updatedStatus;
|
|
27
|
+
// Query Medusa exchange status if exchange_id exists
|
|
28
|
+
if (swapData.exchange_id) {
|
|
29
|
+
try {
|
|
30
|
+
const exchangeQuery = (0, utils_2.remoteQueryObjectFromString)({
|
|
31
|
+
entryPoint: "exchange",
|
|
32
|
+
fields: ["id", "status"],
|
|
33
|
+
filters: {
|
|
34
|
+
id: [swapData.exchange_id],
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
const exchanges = await remoteQuery(exchangeQuery);
|
|
38
|
+
const exchangeArray = Array.isArray(exchanges) ? exchanges : exchanges ? [exchanges] : [];
|
|
39
|
+
const exchange = exchangeArray.find((e) => {
|
|
40
|
+
const eData = e;
|
|
41
|
+
return eData?.id === swapData.exchange_id;
|
|
42
|
+
});
|
|
43
|
+
if (exchange) {
|
|
44
|
+
const exchangeData = exchange;
|
|
45
|
+
medusaStatus = exchangeData.status;
|
|
46
|
+
const statusMap = {
|
|
47
|
+
requested: "return_started",
|
|
48
|
+
received: "return_received",
|
|
49
|
+
shipped: "new_items_shipped",
|
|
50
|
+
delivered: "completed",
|
|
51
|
+
cancelled: "cancelled",
|
|
52
|
+
};
|
|
53
|
+
updatedStatus = statusMap[medusaStatus || ""];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
// If exchange query fails, continue
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Query Medusa return status if return_id exists and exchange status not found
|
|
61
|
+
if (!medusaStatus && swapData.return_id) {
|
|
62
|
+
try {
|
|
63
|
+
const returnQuery = (0, utils_2.remoteQueryObjectFromString)({
|
|
64
|
+
entryPoint: "return",
|
|
65
|
+
fields: ["id", "status"],
|
|
66
|
+
filters: {
|
|
67
|
+
id: [swapData.return_id],
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
const returns = await remoteQuery(returnQuery);
|
|
71
|
+
const returnArray = Array.isArray(returns) ? returns : returns ? [returns] : [];
|
|
72
|
+
const returnData = returnArray.find((r) => {
|
|
73
|
+
const rData = r;
|
|
74
|
+
return rData?.id === swapData.return_id;
|
|
75
|
+
});
|
|
76
|
+
if (returnData) {
|
|
77
|
+
const returnDataTyped = returnData;
|
|
78
|
+
medusaStatus = returnDataTyped.status;
|
|
79
|
+
const statusMap = {
|
|
80
|
+
requested: "return_started",
|
|
81
|
+
received: "return_received",
|
|
82
|
+
cancelled: "cancelled",
|
|
83
|
+
};
|
|
84
|
+
if (!updatedStatus) {
|
|
85
|
+
updatedStatus = statusMap[medusaStatus || ""];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
// If return query fails, cannot sync
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Update swap status if it differs from Medusa status
|
|
94
|
+
let statusSynced = false;
|
|
95
|
+
if (updatedStatus && updatedStatus !== swapData.status) {
|
|
96
|
+
const swapMetadata = swapData.metadata || {};
|
|
97
|
+
const statusHistory = swapMetadata.status_history || [];
|
|
98
|
+
await swapService.updateSwaps({
|
|
99
|
+
selector: { id },
|
|
100
|
+
data: {
|
|
101
|
+
status: updatedStatus,
|
|
102
|
+
metadata: {
|
|
103
|
+
...swapMetadata,
|
|
104
|
+
status_history: [
|
|
105
|
+
...statusHistory,
|
|
106
|
+
{
|
|
107
|
+
status: updatedStatus,
|
|
108
|
+
timestamp: new Date().toISOString(),
|
|
109
|
+
synced_from_medusa: true,
|
|
110
|
+
medusa_status: medusaStatus,
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
last_synced_at: new Date().toISOString(),
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
statusSynced = true;
|
|
118
|
+
}
|
|
119
|
+
// Retrieve the latest swap data
|
|
120
|
+
const finalSwap = await swapService.retrieveSwap(id);
|
|
121
|
+
res.json({
|
|
122
|
+
swap: finalSwap,
|
|
123
|
+
status_synced: statusSynced,
|
|
124
|
+
medusa_status: medusaStatus,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
if (error instanceof utils_1.MedusaError) {
|
|
129
|
+
const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
|
|
130
|
+
? 404
|
|
131
|
+
: error.type === utils_1.MedusaError.Types.INVALID_DATA
|
|
132
|
+
? 400
|
|
133
|
+
: 500;
|
|
134
|
+
res.status(statusCode).json({
|
|
135
|
+
message: error.message,
|
|
136
|
+
type: error.type,
|
|
137
|
+
});
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
141
|
+
res.status(500).json({
|
|
142
|
+
message: "Failed to sync swap status",
|
|
143
|
+
error: errorMessage,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
exports.POST = POST;
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vc3luYy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsc0RBQXlEO0FBRXpELHFEQUFrRztBQUczRixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUE7UUFDeEQsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBS2hCLENBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqRCxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNQLElBQUk7Z0JBQ0osYUFBYSxFQUFFLEtBQUs7YUFDckIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDbkMsaUNBQXlCLENBQUMsWUFBWSxDQUN2QyxDQUFBO1FBRUQsSUFBSSxZQUFnQyxDQUFBO1FBQ3BDLElBQUksYUFBaUMsQ0FBQTtRQUVyQyxx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
|
|
@@ -59,9 +59,25 @@ const POST = async (req, res) => {
|
|
|
59
59
|
});
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
|
+
// Handle array body (from Next.js server actions) or object body
|
|
63
|
+
let requestBody = req.body;
|
|
64
|
+
if (Array.isArray(requestBody) && requestBody.length > 0) {
|
|
65
|
+
requestBody = requestBody[0];
|
|
66
|
+
}
|
|
67
|
+
// Remove order_id from body if present (use URL param instead)
|
|
68
|
+
if (requestBody && typeof requestBody === 'object' && 'order_id' in requestBody) {
|
|
69
|
+
const { order_id: _, ...rest } = requestBody;
|
|
70
|
+
requestBody = rest;
|
|
71
|
+
}
|
|
62
72
|
try {
|
|
73
|
+
console.log("Creating swap request:", {
|
|
74
|
+
order_id,
|
|
75
|
+
customer_id: customerId,
|
|
76
|
+
raw_body: req.body,
|
|
77
|
+
parsed_body: requestBody,
|
|
78
|
+
});
|
|
63
79
|
// Validate request body
|
|
64
|
-
const body = CreateSwapSchema.parse(
|
|
80
|
+
const body = CreateSwapSchema.parse(requestBody);
|
|
65
81
|
const { result } = await (0, create_swap_workflow_js_1.createSwapWorkflow)(req.scope).run({
|
|
66
82
|
input: {
|
|
67
83
|
order_id,
|
|
@@ -76,6 +92,12 @@ const POST = async (req, res) => {
|
|
|
76
92
|
}
|
|
77
93
|
catch (error) {
|
|
78
94
|
if (error instanceof zod_1.z.ZodError) {
|
|
95
|
+
console.error("Validation error:", {
|
|
96
|
+
order_id,
|
|
97
|
+
customer_id: customerId,
|
|
98
|
+
errors: error.errors,
|
|
99
|
+
body: requestBody,
|
|
100
|
+
});
|
|
79
101
|
res.status(400).json({
|
|
80
102
|
message: "Invalid request data",
|
|
81
103
|
errors: error.errors,
|
|
@@ -90,6 +112,13 @@ const POST = async (req, res) => {
|
|
|
90
112
|
: error.type === utils_1.MedusaError.Types.UNAUTHORIZED
|
|
91
113
|
? 401
|
|
92
114
|
: 400;
|
|
115
|
+
console.error("Medusa error:", {
|
|
116
|
+
order_id,
|
|
117
|
+
customer_id: customerId,
|
|
118
|
+
error_type: error.type,
|
|
119
|
+
error_message: error.message,
|
|
120
|
+
body: requestBody,
|
|
121
|
+
});
|
|
93
122
|
res.status(statusCode).json({
|
|
94
123
|
message: error.message,
|
|
95
124
|
type: error.type,
|
|
@@ -97,6 +126,14 @@ const POST = async (req, res) => {
|
|
|
97
126
|
return;
|
|
98
127
|
}
|
|
99
128
|
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
129
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
130
|
+
console.error("Failed to create swap:", {
|
|
131
|
+
order_id,
|
|
132
|
+
customer_id: customerId,
|
|
133
|
+
error: errorMessage,
|
|
134
|
+
stack: errorStack,
|
|
135
|
+
body: req.body,
|
|
136
|
+
});
|
|
100
137
|
res.status(500).json({
|
|
101
138
|
message: "Failed to create swap",
|
|
102
139
|
error: errorMessage,
|
|
@@ -104,4 +141,4 @@ const POST = async (req, res) => {
|
|
|
104
141
|
}
|
|
105
142
|
};
|
|
106
143
|
exports.POST = POST;
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9bb3JkZXJfaWRdL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCxvR0FBMkY7QUFDM0YsbUVBQWtFO0FBRWxFLDZCQUF1QjtBQUV2QixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNkLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1FBQy9CLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0tBQzlCLENBQUMsQ0FDSDtJQUNELFNBQVMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNoQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDaEMsQ0FBQyxDQUNIO0lBQ0QsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDNUIsQ0FBQyxDQUFBO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNKLEVBQUU7SUFDakIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFL0IsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFB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
|
|
@@ -70,8 +70,13 @@ const POST = async (req, res) => {
|
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
72
|
try {
|
|
73
|
+
// Handle array body (from Next.js server actions) or object body
|
|
74
|
+
let requestBody = req.body;
|
|
75
|
+
if (Array.isArray(requestBody) && requestBody.length > 0) {
|
|
76
|
+
requestBody = requestBody[0];
|
|
77
|
+
}
|
|
73
78
|
// Validate request body
|
|
74
|
-
const body = CreateSwapSchema.parse(
|
|
79
|
+
const body = CreateSwapSchema.parse(requestBody);
|
|
75
80
|
const { result } = await (0, create_swap_workflow_1.createSwapWorkflow)(req.scope).run({
|
|
76
81
|
input: {
|
|
77
82
|
order_id: body.order_id,
|
|
@@ -107,6 +112,13 @@ const POST = async (req, res) => {
|
|
|
107
112
|
return;
|
|
108
113
|
}
|
|
109
114
|
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
115
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
116
|
+
console.error("Failed to create swap:", {
|
|
117
|
+
customer_id: customerId,
|
|
118
|
+
error: errorMessage,
|
|
119
|
+
stack: errorStack,
|
|
120
|
+
body: req.body,
|
|
121
|
+
});
|
|
110
122
|
res.status(500).json({
|
|
111
123
|
message: "Failed to create swap",
|
|
112
124
|
error: errorMessage,
|
|
@@ -114,4 +126,4 @@ const POST = async (req, res) => {
|
|
|
114
126
|
}
|
|
115
127
|
};
|
|
116
128
|
exports.POST = POST;
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCx3RkFBa0Y7QUFDbEYsZ0RBQW1EO0FBRW5ELDZCQUF1QjtBQUV2QixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNkLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1FBQy9CLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0tBQzlCLENBQUMsQ0FDSDtJQUNELFNBQVMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNoQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDaEMsQ0FBQyxDQUNIO0lBQ0QsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDNUIsQ0FBQyxDQUFBO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNKLEVBQUU7SUFDakIsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFBO0lBRWYsTUFBTSxVQUFVLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FB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
|