order-management 0.0.22 → 0.0.23
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 +434 -431
- package/.medusa/server/src/admin/index.mjs +434 -431
- package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +20 -8
- package/.medusa/server/src/api/admin/swaps/[id]/confirm-exchange/route.js +109 -0
- package/.medusa/server/src/subscribers/exchange-created.js +43 -7
- package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +15 -3
- package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +39 -27
- package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +5 -3
- package/.medusa/server/src/workflows/swaps/confirm-exchange-workflow.js +51 -0
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ 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
6
|
const validators_1 = require("../../validators");
|
|
7
|
+
const swap_1 = require("../../../../../modules/swap");
|
|
7
8
|
const zod_1 = require("zod");
|
|
8
9
|
const POST = async (req, res) => {
|
|
9
10
|
const { id } = req.params;
|
|
@@ -17,9 +18,8 @@ const POST = async (req, res) => {
|
|
|
17
18
|
try {
|
|
18
19
|
// Parse and validate request body for exchange details
|
|
19
20
|
const exchangeDetails = validators_1.ApproveSwapSchema.parse(req.body || {});
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
// Admin should then create the exchange manually using Medusa's exchange creation form
|
|
21
|
+
// Store exchange details but keep status as "requested"
|
|
22
|
+
// Admin will create exchange using the form, then swap will be approved
|
|
23
23
|
const { result: approvalResult } = await (0, approve_swap_workflow_1.approveSwapWorkflow)(req.scope).run({
|
|
24
24
|
input: {
|
|
25
25
|
swap_id: id,
|
|
@@ -30,12 +30,24 @@ const POST = async (req, res) => {
|
|
|
30
30
|
send_notification: exchangeDetails.send_notification,
|
|
31
31
|
},
|
|
32
32
|
});
|
|
33
|
-
//
|
|
34
|
-
|
|
33
|
+
// Get swap to retrieve order_id
|
|
34
|
+
const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
|
|
35
|
+
const swap = await swapService.retrieveSwap(id);
|
|
36
|
+
const swapData = swap;
|
|
37
|
+
// Return response with flag to show exchange form
|
|
35
38
|
res.json({
|
|
36
39
|
swap: approvalResult.swap,
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
show_exchange_form: true,
|
|
41
|
+
order_id: swapData.order_id,
|
|
42
|
+
exchange_details: {
|
|
43
|
+
return_items: swapData.return_items,
|
|
44
|
+
new_items: swapData.new_items,
|
|
45
|
+
return_location_id: exchangeDetails.return_location_id,
|
|
46
|
+
return_shipping_method_id: exchangeDetails.return_shipping_method_id,
|
|
47
|
+
outbound_shipping_method_id: exchangeDetails.outbound_shipping_method_id,
|
|
48
|
+
send_notification: exchangeDetails.send_notification,
|
|
49
|
+
},
|
|
50
|
+
message: "Please create the exchange using the form below.",
|
|
39
51
|
});
|
|
40
52
|
}
|
|
41
53
|
catch (error) {
|
|
@@ -109,4 +121,4 @@ const POST = async (req, res) => {
|
|
|
109
121
|
}
|
|
110
122
|
};
|
|
111
123
|
exports.POST = POST;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vYXBwcm92ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsZ0dBQTBGO0FBQzFGLGlEQUFvRDtBQUNwRCxzREFBeUQ7QUFFekQsNkJBQXVCO0FBRWhCLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNSLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQTtRQUN4RCxPQUFNO0lBQ1IsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBSSxHQUVuQixDQUFDLFlBQVksQ0FBQTtJQUVmLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxRQUFRLElBQUksV0FBVyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUE7SUFFeEUsSUFBSSxDQUFDO1FBQ0gsdURBQXVEO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLDhCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBRS9ELHdEQUF3RDtRQUN4RCx3RUFBd0U7UUFDeEUsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUEsMkNBQW1CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxRSxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLGtCQUFrQixFQUFFLGVB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
|
|
@@ -0,0 +1,109 @@
|
|
|
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 confirm_exchange_workflow_1 = require("../../../../../workflows/swaps/confirm-exchange-workflow");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const ConfirmExchangeSchema = zod_1.z.object({
|
|
8
|
+
return_items: zod_1.z.array(zod_1.z.object({
|
|
9
|
+
item_id: zod_1.z.string(),
|
|
10
|
+
quantity: zod_1.z.number().positive(),
|
|
11
|
+
reason_id: zod_1.z.string().optional(),
|
|
12
|
+
})),
|
|
13
|
+
new_items: zod_1.z.array(zod_1.z.object({
|
|
14
|
+
variant_id: zod_1.z.string(),
|
|
15
|
+
quantity: zod_1.z.number().positive(),
|
|
16
|
+
})),
|
|
17
|
+
return_location_id: zod_1.z.string().optional(),
|
|
18
|
+
return_shipping_method_id: zod_1.z.string().optional(),
|
|
19
|
+
outbound_shipping_method_id: zod_1.z.string().optional(),
|
|
20
|
+
send_notification: zod_1.z.boolean().optional().default(false),
|
|
21
|
+
});
|
|
22
|
+
const POST = async (req, res) => {
|
|
23
|
+
const { id } = req.params;
|
|
24
|
+
if (!id) {
|
|
25
|
+
res.status(400).json({ message: "Swap ID is required" });
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Type-safe access to auth_context
|
|
29
|
+
const authContext = req.auth_context;
|
|
30
|
+
const adminId = authContext?.actor_id || authContext?.user_id || "admin";
|
|
31
|
+
try {
|
|
32
|
+
// Parse and validate request body
|
|
33
|
+
const exchangeData = ConfirmExchangeSchema.parse(req.body || {});
|
|
34
|
+
// Create exchange and approve swap
|
|
35
|
+
const { result } = await (0, confirm_exchange_workflow_1.confirmExchangeWorkflow)(req.scope).run({
|
|
36
|
+
input: {
|
|
37
|
+
swap_id: id,
|
|
38
|
+
admin_id: adminId,
|
|
39
|
+
return_items: exchangeData.return_items,
|
|
40
|
+
new_items: exchangeData.new_items,
|
|
41
|
+
return_location_id: exchangeData.return_location_id,
|
|
42
|
+
return_shipping_method_id: exchangeData.return_shipping_method_id,
|
|
43
|
+
outbound_shipping_method_id: exchangeData.outbound_shipping_method_id,
|
|
44
|
+
send_notification: exchangeData.send_notification,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
res.json({
|
|
48
|
+
swap: result.swap,
|
|
49
|
+
return_id: result.return_id,
|
|
50
|
+
exchange_id: result.exchange_id,
|
|
51
|
+
message: "Exchange created and swap approved successfully.",
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
// Handle Zod validation errors
|
|
56
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
57
|
+
res.status(400).json({
|
|
58
|
+
message: "Invalid request data",
|
|
59
|
+
errors: error.errors,
|
|
60
|
+
});
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Extract error message - handle various error formats
|
|
64
|
+
let errorMessage = "Unknown error";
|
|
65
|
+
let errorStack;
|
|
66
|
+
let errorType;
|
|
67
|
+
if (error instanceof Error) {
|
|
68
|
+
errorMessage = error.message;
|
|
69
|
+
errorStack = error.stack;
|
|
70
|
+
errorType = error.type;
|
|
71
|
+
}
|
|
72
|
+
else if (error && typeof error === "object") {
|
|
73
|
+
const errorObj = error;
|
|
74
|
+
errorMessage = String(errorObj.message ||
|
|
75
|
+
errorObj.error ||
|
|
76
|
+
errorObj.reason ||
|
|
77
|
+
JSON.stringify(errorObj));
|
|
78
|
+
errorStack = errorObj.stack;
|
|
79
|
+
errorType = errorObj.type;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
errorMessage = String(error);
|
|
83
|
+
}
|
|
84
|
+
console.error("[Confirm Exchange] Error:", {
|
|
85
|
+
swap_id: id,
|
|
86
|
+
error_message: errorMessage,
|
|
87
|
+
error_type: errorType,
|
|
88
|
+
error_stack: errorStack,
|
|
89
|
+
});
|
|
90
|
+
if (error instanceof utils_1.MedusaError) {
|
|
91
|
+
const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
|
|
92
|
+
? 404
|
|
93
|
+
: error.type === utils_1.MedusaError.Types.INVALID_DATA
|
|
94
|
+
? 400
|
|
95
|
+
: 500;
|
|
96
|
+
res.status(statusCode).json({
|
|
97
|
+
message: error.message,
|
|
98
|
+
type: error.type,
|
|
99
|
+
});
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
res.status(500).json({
|
|
103
|
+
message: "Failed to confirm exchange",
|
|
104
|
+
error: errorMessage,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
exports.POST = POST;
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vY29uZmlybS1leGNoYW5nZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsd0dBQWtHO0FBQ2xHLDZCQUF1QjtBQUV2QixNQUFNLHFCQUFxQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDckMsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNuQixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUMvQixTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtLQUNqQyxDQUFDLENBQ0g7SUFDRCxTQUFTLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FDaEIsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNQLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQ3RCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0tBQ2hDLENBQUMsQ0FDSDtJQUNELGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekMseUJBQXlCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoRCwyQkFBMkIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xELGlCQUFpQixFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0NBQ3pELENBQUMsQ0FBQTtBQUVLLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0Is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
|
|
@@ -64,20 +64,38 @@ async function exchangeCreatedHandler({ event: { data }, container, }) {
|
|
|
64
64
|
console.warn(`[Exchange Created Subscriber] Failed to validate exchange ${exchangeId}: ${validationErrorMessage}`);
|
|
65
65
|
// Continue processing even if validation fails (might be transient)
|
|
66
66
|
}
|
|
67
|
-
// Find swap by order_id where
|
|
67
|
+
// Find swap by order_id where:
|
|
68
|
+
// - status is "approved" OR ("requested" with pending_exchange_creation flag)
|
|
69
|
+
// - exchange_id is null
|
|
68
70
|
let swaps;
|
|
69
71
|
let swap = null;
|
|
70
72
|
try {
|
|
73
|
+
// First try to find approved swaps
|
|
71
74
|
swaps = await swapService.listSwaps({
|
|
72
75
|
order_id: orderId,
|
|
73
76
|
status: "approved",
|
|
74
77
|
}, { take: 10 });
|
|
75
|
-
|
|
78
|
+
let swapsArray = Array.isArray(swaps) ? swaps : swaps ? [swaps] : [];
|
|
76
79
|
// Find swap without exchange_id (not yet linked)
|
|
77
80
|
swap = swapsArray.find((s) => {
|
|
78
81
|
const swapData = s;
|
|
79
82
|
return !swapData.exchange_id;
|
|
80
83
|
}) || null;
|
|
84
|
+
// If no approved swap found, try to find requested swap with pending_exchange_creation
|
|
85
|
+
if (!swap) {
|
|
86
|
+
swaps = await swapService.listSwaps({
|
|
87
|
+
order_id: orderId,
|
|
88
|
+
status: "requested",
|
|
89
|
+
}, { take: 10 });
|
|
90
|
+
swapsArray = Array.isArray(swaps) ? swaps : swaps ? [swaps] : [];
|
|
91
|
+
// Find swap with pending_exchange_creation flag and no exchange_id
|
|
92
|
+
swap = swapsArray.find((s) => {
|
|
93
|
+
const swapData = s;
|
|
94
|
+
const metadata = swapData.metadata || {};
|
|
95
|
+
const pendingExchangeCreation = metadata.pending_exchange_creation === true;
|
|
96
|
+
return !swapData.exchange_id && pendingExchangeCreation;
|
|
97
|
+
}) || null;
|
|
98
|
+
}
|
|
81
99
|
}
|
|
82
100
|
catch (filterError) {
|
|
83
101
|
const errorMessage = filterError instanceof Error ? filterError.message : String(filterError);
|
|
@@ -85,12 +103,12 @@ async function exchangeCreatedHandler({ event: { data }, container, }) {
|
|
|
85
103
|
return;
|
|
86
104
|
}
|
|
87
105
|
if (!swap) {
|
|
88
|
-
// No unlinked
|
|
106
|
+
// No unlinked swap found for this order
|
|
89
107
|
// This is expected if:
|
|
90
108
|
// - Exchange was created manually without a swap request
|
|
91
|
-
// - Swap
|
|
109
|
+
// - Swap doesn't have pending_exchange_creation flag
|
|
92
110
|
// - Swap already has an exchange_id
|
|
93
|
-
console.debug(`[Exchange Created Subscriber] No unlinked
|
|
111
|
+
console.debug(`[Exchange Created Subscriber] No unlinked swap found for order ${orderId} and exchange ${exchangeId}`);
|
|
94
112
|
return;
|
|
95
113
|
}
|
|
96
114
|
const swapData = swap;
|
|
@@ -98,13 +116,18 @@ async function exchangeCreatedHandler({ event: { data }, container, }) {
|
|
|
98
116
|
console.error("[Exchange Created Subscriber] Swap found but missing ID");
|
|
99
117
|
return;
|
|
100
118
|
}
|
|
101
|
-
//
|
|
119
|
+
// Check if swap needs to be approved (status is "requested" with pending flag)
|
|
102
120
|
const swapMetadata = swapData.metadata || {};
|
|
121
|
+
const pendingExchangeCreation = swapMetadata.pending_exchange_creation === true;
|
|
122
|
+
const shouldApprove = swapData.status === "requested" && pendingExchangeCreation;
|
|
123
|
+
// Link exchange to swap and approve if needed
|
|
103
124
|
const linkingHistory = swapMetadata.exchange_linking_history || [];
|
|
125
|
+
const statusHistory = swapMetadata.status_history || [];
|
|
104
126
|
await swapService.updateSwaps({
|
|
105
127
|
selector: { id: swapData.id },
|
|
106
128
|
data: {
|
|
107
129
|
exchange_id: exchangeId,
|
|
130
|
+
status: shouldApprove ? "approved" : swapData.status,
|
|
108
131
|
metadata: {
|
|
109
132
|
...swapMetadata,
|
|
110
133
|
exchange_linking_history: [
|
|
@@ -113,9 +136,22 @@ async function exchangeCreatedHandler({ event: { data }, container, }) {
|
|
|
113
136
|
exchange_id: exchangeId,
|
|
114
137
|
linked_at: new Date().toISOString(),
|
|
115
138
|
linked_by: "exchange_created_subscriber",
|
|
139
|
+
auto_approved: shouldApprove,
|
|
116
140
|
},
|
|
117
141
|
],
|
|
118
142
|
exchange_linked_at: new Date().toISOString(),
|
|
143
|
+
pending_exchange_creation: false,
|
|
144
|
+
...(shouldApprove ? {
|
|
145
|
+
status_history: [
|
|
146
|
+
...statusHistory,
|
|
147
|
+
{
|
|
148
|
+
status: "approved",
|
|
149
|
+
timestamp: new Date().toISOString(),
|
|
150
|
+
auto_approved: true,
|
|
151
|
+
approved_via: "exchange_created_subscriber",
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
} : {}),
|
|
119
155
|
},
|
|
120
156
|
},
|
|
121
157
|
});
|
|
@@ -168,4 +204,4 @@ async function exchangeCreatedHandler({ event: { data }, container, }) {
|
|
|
168
204
|
exports.config = {
|
|
169
205
|
event: "exchange.created",
|
|
170
206
|
};
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjaGFuZ2UtY3JlYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9leGNoYW5nZS1jcmVhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXFCQSx5Q0FtT0M7QUF2UEQscURBQWtHO0FBRWxHLDBDQUE2QztBQVM3Qzs7Ozs7Ozs7R0FRRztBQUNZLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQ2dDO0lBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUM1QixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUE7SUFDbEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFBO0lBQ3BCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQSxDQUFDLHNCQUFzQjtJQUU5QyxzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsRUFBRTtRQUMzRCxVQUFVLEVBQUUsa0JBQWtCO1FBQzlCLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO0tBQ3BDLENBQUMsQ0FBQTtJQUVGLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxJQUFtQixFQUFFO1FBQ2pELElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUE7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtZQUU3QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQTtnQkFDakYsT0FBTTtZQUNSLENBQUM7WUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxD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
|
|
@@ -5,7 +5,7 @@ const utils_1 = require("@medusajs/framework/utils");
|
|
|
5
5
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
6
|
const swap_1 = require("../../../modules/swap");
|
|
7
7
|
exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medusa-exchange", async (input, { container }) => {
|
|
8
|
-
const { swap_id, return_id, outbound_shipping_method_id, send_notification } = input;
|
|
8
|
+
const { swap_id, return_id, outbound_shipping_method_id, send_notification, new_items: inputNewItems } = input;
|
|
9
9
|
if (!swap_id) {
|
|
10
10
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "swap_id is required");
|
|
11
11
|
}
|
|
@@ -22,7 +22,19 @@ exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medus
|
|
|
22
22
|
swap,
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
// Use new_items from input if provided, otherwise use from swap model
|
|
26
|
+
let newItems = [];
|
|
27
|
+
if (inputNewItems && inputNewItems.length > 0) {
|
|
28
|
+
// Use items from input (from exchange form)
|
|
29
|
+
newItems = inputNewItems;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// Use items from swap model
|
|
33
|
+
const swapNewItems = swapData.new_items || [];
|
|
34
|
+
if (Array.isArray(swapNewItems)) {
|
|
35
|
+
newItems = swapNewItems;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
26
38
|
if (newItems.length === 0) {
|
|
27
39
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Swap must have new items to create exchange");
|
|
28
40
|
}
|
|
@@ -202,4 +214,4 @@ exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medus
|
|
|
202
214
|
swap: finalSwap || swap,
|
|
203
215
|
});
|
|
204
216
|
});
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lZHVzYS1leGNoYW5nZS1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9zd2FwL2NyZWF0ZS1tZWR1c2EtZXhjaGFuZ2Utc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBK0c7QUFDL0cscUVBQTRFO0FBRTVFLGdEQUFtRDtBQWlCdEMsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELHdCQUF3QixFQUN4QixLQUFLLEVBQ0gsS0FBb0MsRUFDcEMsRUFBRSxTQUFTLEVBQUUsRUFDMEMsRUFBRTtJQUN6RCxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRTlHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHFCQUFxQixDQUN0QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDBDQUEwQyxDQUMzQyxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQWMsa0JBQVcsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUlOLENBQUE7SUFFWCxJQUFLLFFBQXFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkQsMkJBQTJCO1FBQzNCLE9BQU8sSUFBSSw0QkFBWSxDQUFpQztZQUN0RCxXQUFXLEVBQUcsUUFBcUMs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
|
|
@@ -6,7 +6,7 @@ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
|
6
6
|
const utils_2 = require("@medusajs/framework/utils");
|
|
7
7
|
const swap_1 = require("../../../modules/swap");
|
|
8
8
|
exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-return", async (input, { container }) => {
|
|
9
|
-
const { swap_id, return_location_id, return_shipping_method_id } = input;
|
|
9
|
+
const { swap_id, return_location_id, return_shipping_method_id, return_items: inputReturnItems } = input;
|
|
10
10
|
if (!swap_id) {
|
|
11
11
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "swap_id is required");
|
|
12
12
|
}
|
|
@@ -23,33 +23,46 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
|
|
|
23
23
|
swap,
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
-
if
|
|
27
|
-
|
|
26
|
+
// Allow creating return if status is "approved" OR "requested" with pending_exchange_creation flag
|
|
27
|
+
const swapMetadata = swapData.metadata || {};
|
|
28
|
+
const pendingExchangeCreation = swapMetadata.pending_exchange_creation === true;
|
|
29
|
+
if (swapData.status !== "approved" && !(swapData.status === "requested" && pendingExchangeCreation)) {
|
|
30
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Swap must be approved or pending exchange creation before creating Medusa return. Current status: ${swapData.status}`);
|
|
28
31
|
}
|
|
29
|
-
//
|
|
30
|
-
// return_items is stored as JSONB and may be an array or JSON string
|
|
32
|
+
// Use return_items from input if provided, otherwise parse from swap model
|
|
31
33
|
let returnItems = [];
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
34
|
+
if (inputReturnItems && inputReturnItems.length > 0) {
|
|
35
|
+
// Use items from input (from exchange form)
|
|
36
|
+
returnItems = inputReturnItems.map((item) => ({
|
|
37
|
+
id: item.item_id,
|
|
38
|
+
quantity: item.quantity,
|
|
39
|
+
reason: item.reason_id,
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// Parse return_items from JSONB format in swap model
|
|
44
|
+
if (swapData.return_items) {
|
|
45
|
+
if (Array.isArray(swapData.return_items)) {
|
|
46
|
+
returnItems = swapData.return_items.map((item) => ({
|
|
47
|
+
id: String(item.id || item.item_id || ""),
|
|
48
|
+
quantity: Number(item.quantity || 0),
|
|
49
|
+
reason: item.reason,
|
|
50
|
+
}));
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
else if (typeof swapData.return_items === "string") {
|
|
53
|
+
try {
|
|
54
|
+
const parsed = JSON.parse(swapData.return_items);
|
|
55
|
+
if (Array.isArray(parsed)) {
|
|
56
|
+
returnItems = parsed.map((item) => ({
|
|
57
|
+
id: String(item.id || item.item_id || ""),
|
|
58
|
+
quantity: Number(item.quantity || 0),
|
|
59
|
+
reason: item.reason,
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Invalid JSON, will throw error below
|
|
65
|
+
}
|
|
53
66
|
}
|
|
54
67
|
}
|
|
55
68
|
}
|
|
@@ -106,7 +119,6 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
|
|
|
106
119
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNKNOWN_MODULES, "Return creation via Order Module is not directly available. Please use Medusa's return workflow.");
|
|
107
120
|
}
|
|
108
121
|
// Update swap with return_id and exchange details
|
|
109
|
-
const swapMetadata = swapData.metadata || {};
|
|
110
122
|
const medusaIntegration = swapMetadata.medusa_integration || {};
|
|
111
123
|
const updatedSwap = await swapService.updateSwaps({
|
|
112
124
|
selector: { id: swap_id },
|
|
@@ -132,4 +144,4 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
|
|
|
132
144
|
swap: finalSwap || swap,
|
|
133
145
|
});
|
|
134
146
|
});
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lZHVzYS1yZXR1cm4tc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC9jcmVhdGUtbWVkdXNhLXJldHVybi1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQWtHO0FBRWxHLGdEQUFtRDtBQWdCdEMsUUFBQSxzQkFBc0IsR0FBRyxJQUFBLDBCQUFVLEVBQzlDLHNCQUFzQixFQUN0QixLQUFLLEVBQ0gsS0FBa0MsRUFDbEMsRUFBRSxTQUFTLEVBQUUsRUFDd0MsRUFBRTtJQUN2RCxNQUFNLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV4RyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQkFBcUIsQ0FDdEIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFjLGtCQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFLaEIsQ0FBQTtJQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsNEJBQTRCLENBQzdCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkIseUJBQXlCO1FBQ3pCLE9BQU8sSUFBSSw0QkFBWSxDQUErQjtZQUNwRCxTQUFT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
|
|
@@ -5,14 +5,16 @@ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
|
5
5
|
const swap_1 = require("../steps/swap");
|
|
6
6
|
exports.approveSwapWorkflow = (0, workflows_sdk_1.createWorkflow)("approve-swap", (input) => {
|
|
7
7
|
const { swap_id, admin_id, return_location_id, return_shipping_method_id, outbound_shipping_method_id, send_notification, } = input;
|
|
8
|
-
//
|
|
8
|
+
// Store exchange details but keep status as "requested"
|
|
9
|
+
// Status will change to "approved" when exchange is confirmed
|
|
9
10
|
// Store exchange details in metadata for audit trail
|
|
10
11
|
const { swap: approvedSwap } = (0, swap_1.updateSwapStatusStep)({
|
|
11
12
|
swap_id,
|
|
12
|
-
status: "
|
|
13
|
+
status: "requested", // Keep as requested until exchange is confirmed
|
|
13
14
|
metadata: {
|
|
14
15
|
approved_at: new Date().toISOString(),
|
|
15
16
|
approved_by: admin_id,
|
|
17
|
+
pending_exchange_creation: true,
|
|
16
18
|
exchange_details: {
|
|
17
19
|
return_location_id,
|
|
18
20
|
return_shipping_method_id,
|
|
@@ -35,4 +37,4 @@ exports.approveSwapWorkflow = (0, workflows_sdk_1.createWorkflow)("approve-swap"
|
|
|
35
37
|
});
|
|
36
38
|
});
|
|
37
39
|
exports.default = exports.approveSwapWorkflow;
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92ZS1zd2FwLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zd2Fwcy9hcHByb3ZlLXN3YXAtd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHdDQUdzQjtBQU1ULFFBQUEsbUJBQW1CLEdBQUcsSUFBQSw4QkFBYyxFQUMvQyxjQUFjLEVBQ2QsQ0FDRSxLQUErQixFQUNjLEVBQUU7SUFDL0MsTUFBTSxFQUNKLE9BQU8sRUFDUCxRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IsaUJBQWlCLEdBQ2xCLEdBQUcsS0FBSyxDQUFBO0lBRVQsd0RBQXdEO0lBQ3hELDhEQUE4RDtJQUM5RCxxREFBcUQ7SUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFBLDJCQUFvQixFQUFDO1FBQ2xELE9BQU87UUFDUCxNQUFNLEVBQUUsV0FBVyxFQUFFLGdEQUFnRDtRQUNyRSxRQUFRLEVBQUU7WUFDUixXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDckMsV0FBVyxFQUFFLFFBQVE7WUFDckIseUJBQXlCLEVBQUUsSUFBSTtZQUMvQixnQkFBZ0IsRUFBRTtnQkFDaEIsa0JBQWtCO2dCQUNsQix5QkFBeUI7Z0JBQ3pCLDJCQUEyQjtnQkFDM0IsaUJBQWlCO2dCQUNqQixhQUFhLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7YUFDeEM7U0FDRjtLQUNGLENBQUMsQ0FBQTtJQUVGLHVEQUF1RDtJQUN2RCxNQUFNLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEdBQUcsSUFBQSxvQ0FBNkIsRUFBQztRQUN0RSxPQUFPO1FBQ1Asa0JBQWtCO1FBQ2xCLHlCQUF5QjtRQUN6QiwyQkFBMkI7UUFDM0IsaUJBQWlCO0tBQ2xCLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBNEI7UUFDckQsSUFBSSxFQUFFLHVCQUF1QjtLQUM5QixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLDJCQUFtQixDQUFBIn0=
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.confirmExchangeWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const swap_1 = require("../steps/swap");
|
|
6
|
+
exports.confirmExchangeWorkflow = (0, workflows_sdk_1.createWorkflow)("confirm-exchange", (input) => {
|
|
7
|
+
const { swap_id, admin_id, return_items, new_items, return_location_id, return_shipping_method_id, outbound_shipping_method_id, send_notification, } = input;
|
|
8
|
+
// Step 1: Retrieve swap to validate it's in requested status
|
|
9
|
+
const { swap: retrievedSwap } = (0, swap_1.retrieveSwapStep)({
|
|
10
|
+
swap_id,
|
|
11
|
+
});
|
|
12
|
+
// Step 2: Create Medusa Return
|
|
13
|
+
// Pass return_items from input (from exchange form)
|
|
14
|
+
const { return_id, swap: swapWithReturn } = (0, swap_1.createMedusaReturnStep)({
|
|
15
|
+
swap_id,
|
|
16
|
+
return_location_id,
|
|
17
|
+
return_shipping_method_id,
|
|
18
|
+
return_items: return_items,
|
|
19
|
+
});
|
|
20
|
+
// Step 3: Create Medusa Exchange linked to return
|
|
21
|
+
// Pass new_items from input (from exchange form)
|
|
22
|
+
// This will trigger Medusa's native exchange workflow which handles:
|
|
23
|
+
// - Fulfillment creation for new items
|
|
24
|
+
// - Payment Collection creation if difference_due > 0 (customer owes)
|
|
25
|
+
// - Refund processing if difference_due < 0 (customer gets refund)
|
|
26
|
+
// - Status transitions (requested → received → shipped → delivered)
|
|
27
|
+
const { exchange_id, swap: swapWithExchange } = (0, swap_1.createMedusaExchangeStep)({
|
|
28
|
+
swap_id,
|
|
29
|
+
return_id,
|
|
30
|
+
outbound_shipping_method_id,
|
|
31
|
+
send_notification,
|
|
32
|
+
new_items: new_items,
|
|
33
|
+
});
|
|
34
|
+
// Step 4: Update swap status to "approved" after successful exchange creation
|
|
35
|
+
const { swap: finalSwap } = (0, swap_1.updateSwapStatusStep)({
|
|
36
|
+
swap_id,
|
|
37
|
+
status: "approved",
|
|
38
|
+
metadata: {
|
|
39
|
+
exchange_confirmed_at: new Date().toISOString(),
|
|
40
|
+
exchange_confirmed_by: admin_id,
|
|
41
|
+
pending_exchange_creation: false,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
return new workflows_sdk_1.WorkflowResponse({
|
|
45
|
+
swap: finalSwap,
|
|
46
|
+
return_id,
|
|
47
|
+
exchange_id,
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
exports.default = exports.confirmExchangeWorkflow;
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1leGNoYW5nZS13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3dhcHMvY29uZmlybS1leGNoYW5nZS13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFHMEM7QUFDMUMsd0NBS3NCO0FBTVQsUUFBQSx1QkFBdUIsR0FBRyxJQUFBLDhCQUFjLEVBQ25ELGtCQUFrQixFQUNsQixDQUNFLEtBQW1DLEVBQ2MsRUFBRTtJQUNuRCxNQUFNLEVBQ0osT0FBTyxFQUNQLFFBQVEsRUFDUixZQUFZLEVBQ1osU0FBUyxFQUNULGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzNCLGlCQUFpQixHQUNsQixHQUFHLEtBQUssQ0FBQTtJQUVULDZEQUE2RDtJQUM3RCxNQUFNLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUEsdUJBQWdCLEVBQUM7UUFDL0MsT0FBTztLQUNSLENBQUMsQ0FBQTtJQUVGLCtCQUErQjtJQUMvQixvREFBb0Q7SUFDcEQsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBQSw2QkFBc0IsRUFBQztRQUNqRSxPQUFPO1FBQ1Asa0JBQWtCO1FBQ2xCLHlCQUF5QjtRQUN6QixZQUFZLEVBQUUsWUFBWTtLQUMzQixDQUFDLENBQUE7SUFFRixrREFBa0Q7SUFDbEQsaURBQWlEO0lBQ2pELHFFQUFxRTtJQUNyRSx1Q0FBdUM7SUFDdkMsc0VBQXNFO0lBQ3RFLG1FQUFtRTtJQUNuRSxvRUFBb0U7SUFDcEUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFBLCtCQUF3QixFQUFDO1FBQ3ZFLE9BQU87UUFDUCxTQUFTO1FBQ1QsMkJBQTJCO1FBQzNCLGlCQUFpQjtRQUNqQixTQUFTLEVBQUUsU0FBUztLQUNyQixDQUFDLENBQUE7SUFFRiw4RUFBOEU7SUFDOUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDJCQUFvQixFQUFDO1FBQy9DLE9BQU87UUFDUCxNQUFNLEVBQUUsVUFBVTtRQUNsQixRQUFRLEVBQUU7WUFDUixxQkFBcUIsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtZQUMvQyxxQkFBcUIsRUFBRSxRQUFRO1lBQy9CLHlCQUF5QixFQUFFLEtBQUs7U0FDakM7S0FDRixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQWdDO1FBQ3pELElBQUksRUFBRSxTQUFTO1FBQ2YsU0FBUztRQUNULFdBQVc7S0FDWixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLCtCQUF1QixDQUFBIn0=
|