order-management 0.0.82 → 0.0.83
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/return/[id]/reject/route.js +6 -2
- package/.medusa/server/src/api/admin/swaps/[id]/cancel/route.js +5 -1
- package/.medusa/server/src/api/admin/swaps/[id]/reject/route.js +5 -1
- package/.medusa/server/src/api/store/guest-orders/[id]/returns/route.js +56 -41
- package/.medusa/server/src/api/store/guest-orders/[id]/swaps/[swap_id]/cancel/route.js +3 -1
- package/.medusa/server/src/api/store/guest-orders/[id]/swaps/route.js +25 -15
- package/.medusa/server/src/api/store/returns/[id]/cancel/route.js +3 -1
- package/.medusa/server/src/api/store/returns/route.js +24 -19
- package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +5 -1
- package/.medusa/server/src/api/store/swaps/route.js +26 -15
- package/.medusa/server/src/helpers/index.js +2 -1
- package/.medusa/server/src/helpers/return-exchange-guard.js +129 -0
- package/.medusa/server/src/modules/order-rma-gate/constants.js +21 -0
- package/.medusa/server/src/modules/order-rma-gate/index.js +20 -0
- package/.medusa/server/src/modules/order-rma-gate/migrations/Migration20260724100000.js +34 -0
- package/.medusa/server/src/modules/order-rma-gate/models/order-rma-gate.js +11 -0
- package/.medusa/server/src/modules/order-rma-gate/service.js +202 -0
- package/.medusa/server/src/modules/order-rma-gate/stale-reclaim.js +18 -0
- package/.medusa/server/src/modules/order-rma-gate/types.js +3 -0
- package/.medusa/server/src/subscribers/order-return-received.js +45 -0
- package/README.md +13 -4
- package/package.json +4 -2
|
@@ -10,6 +10,7 @@ const payment_detail_1 = require("../../../modules/payment-detail");
|
|
|
10
10
|
const config_1 = require("../../../config");
|
|
11
11
|
const returns_1 = require("../../../helpers/returns");
|
|
12
12
|
const detect_cod_1 = require("../../../helpers/detect-cod");
|
|
13
|
+
const return_exchange_guard_1 = require("../../../helpers/return-exchange-guard");
|
|
13
14
|
async function POST(req, res) {
|
|
14
15
|
const authContext = req.auth_context;
|
|
15
16
|
const actorId = authContext?.actor_id;
|
|
@@ -34,24 +35,6 @@ async function POST(req, res) {
|
|
|
34
35
|
const data = parseResult.data;
|
|
35
36
|
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
36
37
|
const isCodOrder = await (0, detect_cod_1.detectCodOrder)(data.order_id, query);
|
|
37
|
-
// Early duplicate guard — fail fast before running any workflow step
|
|
38
|
-
try {
|
|
39
|
-
const { data: activeChanges } = await query.graph({
|
|
40
|
-
entity: "order_change",
|
|
41
|
-
fields: ["id", "status"],
|
|
42
|
-
filters: { order_id: data.order_id, status: ["pending", "requested"] },
|
|
43
|
-
});
|
|
44
|
-
if (activeChanges.length > 0) {
|
|
45
|
-
res.status(400).json({
|
|
46
|
-
message: "This order already has an active return or exchange in progress. Cancel or complete the existing one before creating a new return.",
|
|
47
|
-
type: "NOT_ALLOWED",
|
|
48
|
-
});
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
catch (e) {
|
|
53
|
-
void e;
|
|
54
|
-
}
|
|
55
38
|
// Delivery window check — reject if outside the configured return/exchange period
|
|
56
39
|
try {
|
|
57
40
|
const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
@@ -82,6 +65,23 @@ async function POST(req, res) {
|
|
|
82
65
|
return;
|
|
83
66
|
}
|
|
84
67
|
}
|
|
68
|
+
const gate = await (0, return_exchange_guard_1.acquireOrderRmaGate)(data.order_id, "return", req.scope);
|
|
69
|
+
if (!gate.ok) {
|
|
70
|
+
res.status(400).json({
|
|
71
|
+
message: gate.message,
|
|
72
|
+
type: gate.type,
|
|
73
|
+
});
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const entityCheck = await (0, return_exchange_guard_1.assertNoActiveConflictingRma)(data.order_id, "return", req.scope);
|
|
77
|
+
if (!entityCheck.allowed) {
|
|
78
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(data.order_id, req.scope);
|
|
79
|
+
res.status(400).json({
|
|
80
|
+
message: entityCheck.message,
|
|
81
|
+
type: entityCheck.type,
|
|
82
|
+
});
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
85
|
const { items, return_shipping, ...rest } = data;
|
|
86
86
|
const input = {
|
|
87
87
|
...rest,
|
|
@@ -110,6 +110,7 @@ async function POST(req, res) {
|
|
|
110
110
|
]);
|
|
111
111
|
if (updated)
|
|
112
112
|
returnPayload = updated;
|
|
113
|
+
await (0, return_exchange_guard_1.setOrderRmaGateReference)(data.order_id, returnId, req.scope);
|
|
113
114
|
try {
|
|
114
115
|
const mappingService = req.scope.resolve(refund_payment_mapping_1.REFUND_PAYMENT_MAPPING_MODULE);
|
|
115
116
|
// COD orders have no payment detail — store null so admin knows no bank/UPI refund is needed
|
|
@@ -125,9 +126,13 @@ async function POST(req, res) {
|
|
|
125
126
|
}
|
|
126
127
|
}
|
|
127
128
|
}
|
|
129
|
+
else {
|
|
130
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(data.order_id, req.scope);
|
|
131
|
+
}
|
|
128
132
|
res.status(201).json({ return: returnPayload });
|
|
129
133
|
}
|
|
130
134
|
catch (err) {
|
|
135
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(data.order_id, req.scope);
|
|
131
136
|
const message = err instanceof Error ? err.message : "Unknown error";
|
|
132
137
|
res.status(500).json({
|
|
133
138
|
message: "Failed to create return",
|
|
@@ -187,4 +192,4 @@ async function GET(req, res) {
|
|
|
187
192
|
});
|
|
188
193
|
}
|
|
189
194
|
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3JldHVybnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE0QkEsb0JBMklDO0FBRUQsa0JBNERDO0FBcE9ELHFEQUEyRTtBQUMzRSxxREFBOEU7QUFFOUUsNkNBQXNEO0FBQ3RELG9GQUF1RjtBQUV2RixvRUFBdUU7QUFFdkUsNENBQStEO0FBRS9ELHNEQUFzRztBQUN0Ryw0REFBNEQ7QUFDNUQsa0ZBSytDO0FBVXhDLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNoRSxNQUFNLFdBQVcsR0FBSSxHQUFxRSxDQUFDLFlBQVksQ0FBQTtJQUN2RyxNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxDQUFBO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLFdBQVcsRUFBRSxVQUFVLENBQUE7SUFDekMsSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLG1EQUFtRDtZQUM1RCxJQUFJLEVBQUUsY0FBYztTQUNyQixDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELCtEQUErRDtJQUMvRCxNQUFNLFdBQVcsR0FBRyxvQ0FBdUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9ELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDbkMsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxD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
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.POST = POST;
|
|
4
4
|
const core_flows_1 = require("@medusajs/core-flows");
|
|
5
5
|
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const return_exchange_guard_1 = require("../../../../../helpers/return-exchange-guard");
|
|
6
7
|
async function POST(req, res) {
|
|
7
8
|
const authContext = req.auth_context;
|
|
8
9
|
const customerId = authContext?.actor_id;
|
|
@@ -52,6 +53,9 @@ async function POST(req, res) {
|
|
|
52
53
|
await (0, core_flows_1.cancelBeginOrderExchangeWorkflow)(req.scope).run({
|
|
53
54
|
input: { exchange_id: exchangeId },
|
|
54
55
|
});
|
|
56
|
+
if (oc.order_id) {
|
|
57
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(oc.order_id, req.scope);
|
|
58
|
+
}
|
|
55
59
|
const updated = await orderModuleService.retrieveOrderChange(id, { relations: ["actions"] });
|
|
56
60
|
res.json({ order_change: updated });
|
|
57
61
|
}
|
|
@@ -64,4 +68,4 @@ async function POST(req, res) {
|
|
|
64
68
|
});
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL1tpZF0vY2FuY2VsL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esb0JBMEVDO0FBOUVELHFEQUF1RTtBQUN2RSxxREFBbUQ7QUFDbkQsd0ZBQWtGO0FBRTNFLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQWtCLEVBQ2xCLEdBQW1CO0lBRW5CLE1BQU0sV0FBVyxHQUFJLEdBQXFFLENBQUMsWUFBWSxDQUFBO0lBQ3ZHLE1BQU0sVUFBVSxHQUFHLFdBQVcsRUFBRSxRQUFRLENBQUE7SUFDeEMsTUFBTSxTQUFTLEdBQUcsV0FBVyxFQUFFLFVBQVUsQ0FBQTtJQUN6QyxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUM1QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsbURBQW1EO1lBQzVELElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFdEYsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxJQUFJLEVBQUUsV0FBVzthQUNsQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLFdBQWlHLENBQUE7UUFDNUcsSUFBSSxFQUFFLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxJQUFJLEVBQUUsV0FBVzthQUNsQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEYsSUFBSSxDQUFDLEtBQUssSUFBSyxLQUFrQyxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLDhDQUE4QztnQkFDdkQsSUFBSSxFQUFFLGFBQWE7YUFDcEIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLDhCQUE4QjtnQkFDdkMsSUFBSSxFQUFFLGNBQWM7YUFDckIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLElBQUEsNkNBQWdDLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNwRCxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFO1NBQ25DLENBQUMsQ0FBQTtRQUVGLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNuRCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDNUYsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFBQyxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUNwRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsbUNBQW1DO1lBQzVDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -8,6 +8,7 @@ const zod_1 = require("zod");
|
|
|
8
8
|
const config_1 = require("../../../config");
|
|
9
9
|
const returns_1 = require("../../../helpers/returns");
|
|
10
10
|
const validate_same_product_1 = require("../../../exchanges/validate-same-product");
|
|
11
|
+
const return_exchange_guard_1 = require("../../../helpers/return-exchange-guard");
|
|
11
12
|
const StorePostOrderChangesReqSchema = zod_1.z.object({
|
|
12
13
|
order_id: zod_1.z.string().min(1),
|
|
13
14
|
type: zod_1.z.literal("exchange").optional().default("exchange"),
|
|
@@ -59,20 +60,6 @@ async function POST(req, res) {
|
|
|
59
60
|
return;
|
|
60
61
|
}
|
|
61
62
|
try {
|
|
62
|
-
// Early duplicate guard — fail fast before running any workflow step
|
|
63
|
-
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
64
|
-
const { data: activeChanges } = await query.graph({
|
|
65
|
-
entity: "order_change",
|
|
66
|
-
fields: ["id", "status"],
|
|
67
|
-
filters: { order_id, status: ["pending", "requested"] },
|
|
68
|
-
});
|
|
69
|
-
if (activeChanges.length > 0) {
|
|
70
|
-
res.status(400).json({
|
|
71
|
-
message: "This order already has an active return or exchange in progress. Cancel or complete the existing one before creating a new exchange.",
|
|
72
|
-
type: "NOT_ALLOWED",
|
|
73
|
-
});
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
63
|
// Delivery window check — reject if outside the configured return/exchange period
|
|
77
64
|
try {
|
|
78
65
|
const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
@@ -91,11 +78,29 @@ async function POST(req, res) {
|
|
|
91
78
|
catch (e) {
|
|
92
79
|
void e;
|
|
93
80
|
}
|
|
81
|
+
const gate = await (0, return_exchange_guard_1.acquireOrderRmaGate)(order_id, "exchange", req.scope);
|
|
82
|
+
if (!gate.ok) {
|
|
83
|
+
res.status(400).json({
|
|
84
|
+
message: gate.message,
|
|
85
|
+
type: gate.type,
|
|
86
|
+
});
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const entityCheck = await (0, return_exchange_guard_1.assertNoActiveConflictingRma)(order_id, "exchange", req.scope);
|
|
90
|
+
if (!entityCheck.allowed) {
|
|
91
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
|
|
92
|
+
res.status(400).json({
|
|
93
|
+
message: entityCheck.message,
|
|
94
|
+
type: entityCheck.type,
|
|
95
|
+
});
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
94
98
|
const orderModuleService = req.scope.resolve(utils_1.Modules.ORDER);
|
|
95
99
|
const order = await orderModuleService.retrieveOrder(order_id, {
|
|
96
100
|
relations: ["items"],
|
|
97
101
|
}).catch(() => null);
|
|
98
102
|
if (!order) {
|
|
103
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
|
|
99
104
|
res.status(404).json({
|
|
100
105
|
message: "Order not found",
|
|
101
106
|
type: "NOT_FOUND",
|
|
@@ -104,6 +109,7 @@ async function POST(req, res) {
|
|
|
104
109
|
}
|
|
105
110
|
const orderData = order;
|
|
106
111
|
if (orderData.customer_id !== customerId) {
|
|
112
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
|
|
107
113
|
res.status(403).json({
|
|
108
114
|
message: "Order does not belong to customer",
|
|
109
115
|
type: "NOT_ALLOWED",
|
|
@@ -114,6 +120,7 @@ async function POST(req, res) {
|
|
|
114
120
|
const orderItemIds = new Set(orderItems.map((i) => i.id));
|
|
115
121
|
for (const r of return_items) {
|
|
116
122
|
if (!orderItemIds.has(r.item_id)) {
|
|
123
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
|
|
117
124
|
res.status(400).json({
|
|
118
125
|
message: `Item ${r.item_id} is not a valid line item on this order`,
|
|
119
126
|
type: "INVALID_DATA",
|
|
@@ -124,6 +131,7 @@ async function POST(req, res) {
|
|
|
124
131
|
// Same-product validation: new variants must belong to the same product as the returned items
|
|
125
132
|
const sameProductResult = await (0, validate_same_product_1.validateSameProductExchange)(return_items.map((r) => r.item_id), new_items.map((n) => n.variant_id), req.scope);
|
|
126
133
|
if (!sameProductResult.valid) {
|
|
134
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
|
|
127
135
|
res.status(400).json({
|
|
128
136
|
message: sameProductResult.message,
|
|
129
137
|
type: "INVALID_DATA",
|
|
@@ -140,12 +148,14 @@ async function POST(req, res) {
|
|
|
140
148
|
});
|
|
141
149
|
const exchangeId = orderChange.exchange_id;
|
|
142
150
|
if (!exchangeId) {
|
|
151
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
|
|
143
152
|
res.status(500).json({
|
|
144
153
|
message: "Exchange could not be created",
|
|
145
154
|
type: "INTERNAL_ERROR",
|
|
146
155
|
});
|
|
147
156
|
return;
|
|
148
157
|
}
|
|
158
|
+
await (0, return_exchange_guard_1.setOrderRmaGateReference)(order_id, exchangeId, req.scope);
|
|
149
159
|
const returnItemsInput = return_items.map((item) => ({
|
|
150
160
|
id: item.item_id,
|
|
151
161
|
quantity: item.quantity,
|
|
@@ -211,6 +221,7 @@ async function POST(req, res) {
|
|
|
211
221
|
});
|
|
212
222
|
}
|
|
213
223
|
catch (err) {
|
|
224
|
+
await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
|
|
214
225
|
const message = err instanceof Error ? err.message : "Unknown error";
|
|
215
226
|
res.status(500).json({
|
|
216
227
|
message: "Failed to create exchange request",
|
|
@@ -277,4 +288,4 @@ async function GET(req, res) {
|
|
|
277
288
|
});
|
|
278
289
|
}
|
|
279
290
|
}
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0NBLG9CQXVPQztBQUVELGtCQXFFQztBQWpWRCxxREFNNkI7QUFDN0IscURBQThFO0FBRTlFLDZCQUF1QjtBQUN2Qiw0Q0FBK0Q7QUFFL0Qsc0RBQW9FO0FBQ3BFLG9GQUFzRjtBQUV0RixNQUFNLDhCQUE4QixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDOUMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksRUFBRSxPQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDMUQsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNuQixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0IsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUU7UUFDL0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUU7S0FDM0IsQ0FBQyxDQUNIO0lBQ0QsU0FBUyxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ2hCLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUN0QixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDNUIsQ0FBQyxDQUNIO0lBQ0Qsa0JBQWtCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFB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
|
|
291
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMENBLG9CQWlQQztBQUVELGtCQXFFQztBQWpXRCxxREFNNkI7QUFDN0IscURBQThFO0FBRTlFLDZCQUF1QjtBQUN2Qiw0Q0FBK0Q7QUFFL0Qsc0RBQW9FO0FBQ3BFLG9GQUFzRjtBQUN0RixrRkFLK0M7QUFFL0MsTUFBTSw4QkFBOEIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzQixJQUFJLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQzFELFlBQVksRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNuQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDbkIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNCLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFO1FBQy9CLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFO0tBQzNCLENBQUMsQ0FDSDtJQUNELFNBQVMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNoQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQzVCLENBQUMsQ0FDSDtJQUNELGtCQUFrQixFQUFFLE9BQUMs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
|
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./swaps"), exports);
|
|
18
18
|
__exportStar(require("./order-exchange-data"), exports);
|
|
19
|
-
|
|
19
|
+
__exportStar(require("./return-exchange-guard"), exports);
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLHdEQUFxQztBQUNyQywwREFBdUMifQ==
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.evaluateStaleGateReclaim = exports.STALE_GATE_TTL_MS = exports.ACTIVE_RETURN_STATUSES = void 0;
|
|
4
|
+
exports.isActiveReturnStatus = isActiveReturnStatus;
|
|
5
|
+
exports.isActiveStandaloneReturn = isActiveStandaloneReturn;
|
|
6
|
+
exports.isActiveExchange = isActiveExchange;
|
|
7
|
+
exports.assertNoActiveConflictingRma = assertNoActiveConflictingRma;
|
|
8
|
+
exports.orderHasActiveMedusaRma = orderHasActiveMedusaRma;
|
|
9
|
+
exports.acquireOrderRmaGate = acquireOrderRmaGate;
|
|
10
|
+
exports.releaseOrderRmaGate = releaseOrderRmaGate;
|
|
11
|
+
exports.setOrderRmaGateReference = setOrderRmaGateReference;
|
|
12
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
13
|
+
const constants_1 = require("../modules/order-rma-gate/constants");
|
|
14
|
+
var constants_2 = require("../modules/order-rma-gate/constants");
|
|
15
|
+
Object.defineProperty(exports, "ACTIVE_RETURN_STATUSES", { enumerable: true, get: function () { return constants_2.ACTIVE_RETURN_STATUSES; } });
|
|
16
|
+
Object.defineProperty(exports, "STALE_GATE_TTL_MS", { enumerable: true, get: function () { return constants_2.STALE_GATE_TTL_MS; } });
|
|
17
|
+
var stale_reclaim_1 = require("../modules/order-rma-gate/stale-reclaim");
|
|
18
|
+
Object.defineProperty(exports, "evaluateStaleGateReclaim", { enumerable: true, get: function () { return stale_reclaim_1.evaluateStaleGateReclaim; } });
|
|
19
|
+
function isActiveReturnStatus(status) {
|
|
20
|
+
if (!status) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return constants_1.ACTIVE_RETURN_STATUSES.includes(status);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Standalone refund return (not the return created as part of an exchange).
|
|
27
|
+
*/
|
|
28
|
+
function isActiveStandaloneReturn(ret) {
|
|
29
|
+
if (ret.exchange_id) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return isActiveReturnStatus(ret.status);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Exchange is active while not canceled and (no linked return yet, or linked return still active).
|
|
36
|
+
*/
|
|
37
|
+
function isActiveExchange(exchange, linkedReturn) {
|
|
38
|
+
if (exchange.canceled_at) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
const ret = linkedReturn ?? exchange.return ?? null;
|
|
42
|
+
if (!ret) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return isActiveReturnStatus(ret.status);
|
|
46
|
+
}
|
|
47
|
+
function conflictMessage(requesting, blocking) {
|
|
48
|
+
if (requesting === "exchange" && blocking === "return") {
|
|
49
|
+
return "This order already has a return request. Cancel or complete it before creating an exchange.";
|
|
50
|
+
}
|
|
51
|
+
if (requesting === "return" && blocking === "exchange") {
|
|
52
|
+
return "This order already has an exchange request. Cancel it before creating a return.";
|
|
53
|
+
}
|
|
54
|
+
if (requesting === "return") {
|
|
55
|
+
return "This order already has an active return in progress. Cancel or complete it before creating a new return.";
|
|
56
|
+
}
|
|
57
|
+
return "This order already has an active exchange in progress. Cancel it before creating a new exchange.";
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Entity-level mutual exclusion (allowlists). Used after gate acquire and in tests.
|
|
61
|
+
*/
|
|
62
|
+
async function assertNoActiveConflictingRma(orderId, requesting, container) {
|
|
63
|
+
const orderModule = container.resolve(utils_1.Modules.ORDER);
|
|
64
|
+
const returns = await orderModule.listReturns({ order_id: orderId }, { take: 100, relations: ["items"] });
|
|
65
|
+
const returnList = Array.isArray(returns) ? returns : [];
|
|
66
|
+
const activeStandalone = returnList.find((r) => isActiveStandaloneReturn(r));
|
|
67
|
+
if (activeStandalone) {
|
|
68
|
+
return {
|
|
69
|
+
allowed: false,
|
|
70
|
+
message: conflictMessage(requesting, "return"),
|
|
71
|
+
type: "NOT_ALLOWED",
|
|
72
|
+
blocking: "return",
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const exchanges = await orderModule.listOrderExchanges({ order_id: orderId }, { take: 100, relations: ["return"] });
|
|
76
|
+
const exchangeList = Array.isArray(exchanges) ? exchanges : [];
|
|
77
|
+
for (const ex of exchangeList) {
|
|
78
|
+
const row = ex;
|
|
79
|
+
let linked = row.return ?? null;
|
|
80
|
+
if (!linked && row.return_id) {
|
|
81
|
+
const found = returnList.find((r) => r.id === row.return_id);
|
|
82
|
+
linked = found ? found : null;
|
|
83
|
+
if (!linked) {
|
|
84
|
+
try {
|
|
85
|
+
const retrieved = await orderModule.retrieveReturn(row.return_id);
|
|
86
|
+
linked = retrieved;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
linked = null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (isActiveExchange(row, linked)) {
|
|
94
|
+
return {
|
|
95
|
+
allowed: false,
|
|
96
|
+
message: conflictMessage(requesting, "exchange"),
|
|
97
|
+
type: "NOT_ALLOWED",
|
|
98
|
+
blocking: "exchange",
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return { allowed: true };
|
|
103
|
+
}
|
|
104
|
+
async function orderHasActiveMedusaRma(orderId, container) {
|
|
105
|
+
const asReturn = await assertNoActiveConflictingRma(orderId, "return", container);
|
|
106
|
+
return !asReturn.allowed;
|
|
107
|
+
}
|
|
108
|
+
async function acquireOrderRmaGate(orderId, kind, container) {
|
|
109
|
+
const gateService = container.resolve(constants_1.ORDER_RMA_GATE_MODULE);
|
|
110
|
+
return gateService.acquire(orderId, kind, () => orderHasActiveMedusaRma(orderId, container));
|
|
111
|
+
}
|
|
112
|
+
async function releaseOrderRmaGate(orderId, container) {
|
|
113
|
+
try {
|
|
114
|
+
const gateService = container.resolve(constants_1.ORDER_RMA_GATE_MODULE);
|
|
115
|
+
await gateService.release(orderId);
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
const msg = e instanceof Error ? e.message : "";
|
|
119
|
+
if (msg.includes("could not be resolved") || msg.includes("not found")) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
throw e;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async function setOrderRmaGateReference(orderId, referenceId, container) {
|
|
126
|
+
const gateService = container.resolve(constants_1.ORDER_RMA_GATE_MODULE);
|
|
127
|
+
await gateService.setReference(orderId, referenceId);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJuLWV4Y2hhbmdlLWd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2hlbHBlcnMvcmV0dXJuLWV4Y2hhbmdlLWd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1DQSxvREFLQztBQUtELDREQUtDO0FBS0QsNENBWUM7QUFxQkQsb0VBdURDO0FBRUQsMERBTUM7QUFFRCxrREFPQztBQUVELGtEQWNDO0FBRUQsNERBT0M7QUF4TEQscURBQW1EO0FBQ25ELG1FQUk0QztBQUk1QyxpRUFJNEM7QUFIMUMsbUhBQUEsc0JBQXNCLE9BQUE7QUFDdEIsOEdBQUEsaUJBQWlCLE9BQUE7QUFHbkIseUVBQWtGO0FBQXpFLHlIQUFBLHdCQUF3QixPQUFBO0FBb0JqQyxTQUFnQixvQkFBb0IsQ0FBQyxNQUFpQztJQUNwRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxPQUFRLGtDQUE0QyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUN2RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxHQUFlO0lBQ3RELElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELE9BQU8sb0JBQW9CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixRQUFzQixFQUN0QixZQUFnQztJQUVoQyxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxZQUFZLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUE7SUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsT0FB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
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ORDER_RMA_GATE_MODULE = exports.STALE_GATE_TTL_MS = exports.ACTIVE_RETURN_STATUSES = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Medusa ReturnStatus values that count as an open RMA.
|
|
6
|
+
* Do not use `!== "canceled"` — `received` is terminal (no `completed` in the enum).
|
|
7
|
+
* @see `@medusajs/utils` ReturnStatus
|
|
8
|
+
*/
|
|
9
|
+
exports.ACTIVE_RETURN_STATUSES = [
|
|
10
|
+
"open",
|
|
11
|
+
"requested",
|
|
12
|
+
"partially_received",
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* Max age of an unreferenced gate before lazy reclaim may steal it.
|
|
16
|
+
* Tune if crash-recovery timing needs adjust in production.
|
|
17
|
+
*/
|
|
18
|
+
exports.STALE_GATE_TTL_MS = 15 * 60 * 1000;
|
|
19
|
+
/** Module registration key (also exported from index.ts). */
|
|
20
|
+
exports.ORDER_RMA_GATE_MODULE = "order_rma_gate";
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvb3JkZXItcm1hLWdhdGUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7O0dBSUc7QUFDVSxRQUFBLHNCQUFzQixHQUFHO0lBQ3BDLE1BQU07SUFDTixXQUFXO0lBQ1gsb0JBQW9CO0NBQ1osQ0FBQTtBQUlWOzs7R0FHRztBQUNVLFFBQUEsaUJBQWlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUE7QUFJL0MsNkRBQTZEO0FBQ2hELFFBQUEscUJBQXFCLEdBQUcsZ0JBQWdCLENBQUEifQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.evaluateStaleGateReclaim = exports.STALE_GATE_TTL_MS = exports.ACTIVE_RETURN_STATUSES = exports.OrderRmaGateModuleService = exports.ORDER_RMA_GATE_MODULE = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const service_1 = __importDefault(require("./service"));
|
|
9
|
+
exports.OrderRmaGateModuleService = service_1.default;
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
Object.defineProperty(exports, "ORDER_RMA_GATE_MODULE", { enumerable: true, get: function () { return constants_1.ORDER_RMA_GATE_MODULE; } });
|
|
12
|
+
exports.default = (0, utils_1.Module)(constants_1.ORDER_RMA_GATE_MODULE, {
|
|
13
|
+
service: service_1.default,
|
|
14
|
+
});
|
|
15
|
+
var constants_2 = require("./constants");
|
|
16
|
+
Object.defineProperty(exports, "ACTIVE_RETURN_STATUSES", { enumerable: true, get: function () { return constants_2.ACTIVE_RETURN_STATUSES; } });
|
|
17
|
+
Object.defineProperty(exports, "STALE_GATE_TTL_MS", { enumerable: true, get: function () { return constants_2.STALE_GATE_TTL_MS; } });
|
|
18
|
+
var stale_reclaim_1 = require("./stale-reclaim");
|
|
19
|
+
Object.defineProperty(exports, "evaluateStaleGateReclaim", { enumerable: true, get: function () { return stale_reclaim_1.evaluateStaleGateReclaim; } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9vcmRlci1ybWEtZ2F0ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBa0Q7QUFDbEQsd0RBQWlEO0FBU3hDLG9DQVRGLGlCQUF5QixDQVNFO0FBUmxDLDJDQUFtRDtBQUUxQyxzR0FGQSxpQ0FBcUIsT0FFQTtBQUU5QixrQkFBZSxJQUFBLGNBQU0sRUFBQyxpQ0FBcUIsRUFBRTtJQUMzQyxPQUFPLEVBQUUsaUJBQXlCO0NBQ25DLENBQUMsQ0FBQTtBQUdGLHlDQUtvQjtBQUpsQixtSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxpQkFBaUIsT0FBQTtBQUtuQixpREFBMEQ7QUFBakQseUhBQUEsd0JBQXdCLE9BQUEifQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260724100000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260724100000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`
|
|
8
|
+
CREATE TABLE IF NOT EXISTS "order_rma_gate" (
|
|
9
|
+
"id" text NOT NULL PRIMARY KEY,
|
|
10
|
+
"order_id" text NOT NULL,
|
|
11
|
+
"kind" text NOT NULL,
|
|
12
|
+
"reference_id" text NULL,
|
|
13
|
+
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
14
|
+
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
15
|
+
"deleted_at" timestamptz NULL
|
|
16
|
+
);
|
|
17
|
+
`);
|
|
18
|
+
this.addSql(`
|
|
19
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "IDX_order_rma_gate_order_id_active"
|
|
20
|
+
ON "order_rma_gate" ("order_id") WHERE "deleted_at" IS NULL;
|
|
21
|
+
`);
|
|
22
|
+
this.addSql(`
|
|
23
|
+
CREATE INDEX IF NOT EXISTS "IDX_order_rma_gate_deleted_at"
|
|
24
|
+
ON "order_rma_gate" ("deleted_at");
|
|
25
|
+
`);
|
|
26
|
+
}
|
|
27
|
+
async down() {
|
|
28
|
+
this.addSql(`DROP INDEX IF EXISTS "IDX_order_rma_gate_deleted_at";`);
|
|
29
|
+
this.addSql(`DROP INDEX IF EXISTS "IDX_order_rma_gate_order_id_active";`);
|
|
30
|
+
this.addSql(`DROP TABLE IF EXISTS "order_rma_gate";`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.Migration20260724100000 = Migration20260724100000;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA3MjQxMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9vcmRlci1ybWEtZ2F0ZS9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjYwNzI0MTAwMDAwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFvRTtBQUVwRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQ3BELEtBQUssQ0FBQyxFQUFFO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQzs7Ozs7Ozs7OztLQVVYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsdURBQXVELENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLDREQUE0RCxDQUFDLENBQUE7UUFDekUsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0lBQ3ZELENBQUM7Q0FDRjtBQTlCRCwwREE4QkMifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const OrderRmaGate = utils_1.model.define("order_rma_gate", {
|
|
5
|
+
id: utils_1.model.id().primaryKey(),
|
|
6
|
+
order_id: utils_1.model.text(),
|
|
7
|
+
kind: utils_1.model.text(),
|
|
8
|
+
reference_id: utils_1.model.text().nullable(),
|
|
9
|
+
});
|
|
10
|
+
exports.default = OrderRmaGate;
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItcm1hLWdhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9vcmRlci1ybWEtZ2F0ZS9tb2RlbHMvb3JkZXItcm1hLWdhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUQ7QUFFakQsTUFBTSxZQUFZLEdBQUcsYUFBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtJQUNsRCxFQUFFLEVBQUUsYUFBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRTtJQUMzQixRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUN0QixJQUFJLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUNsQixZQUFZLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUN0QyxDQUFDLENBQUE7QUFFRixrQkFBZSxZQUFZLENBQUEifQ==
|