order-management 0.0.1 → 0.0.2

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.
@@ -0,0 +1,84 @@
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.POST = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const utils_2 = require("@medusajs/framework/utils");
9
+ const process_cod_refund_workflow_1 = __importDefault(require("../../../../../workflows/process-cod-refund-workflow"));
10
+ /**
11
+ * Helper function to find return by ID
12
+ * Reused from payment-details route - consider extracting to shared utility
13
+ */
14
+ async function findReturnById(orderService, returnId) {
15
+ try {
16
+ const orders = await orderService.listOrders({});
17
+ for (const order of orders) {
18
+ const orderWithReturns = order;
19
+ const returns = orderWithReturns.returns || [];
20
+ const returnRecord = returns.find((ret) => ret.id === returnId);
21
+ if (returnRecord) {
22
+ return returnRecord;
23
+ }
24
+ }
25
+ }
26
+ catch (error) {
27
+ console.error("Error finding return:", error);
28
+ }
29
+ return null;
30
+ }
31
+ /**
32
+ * Admin API endpoint to retry a failed refund
33
+ *
34
+ * POST /admin/returns/[id]/retry-refund
35
+ *
36
+ * Retries processing a refund for a return that previously failed.
37
+ * Increments retry_count and attempts payment processing again.
38
+ */
39
+ const POST = async (req, res) => {
40
+ const { id: return_id } = req.params;
41
+ if (!return_id) {
42
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Return ID is required");
43
+ }
44
+ const orderService = req.scope.resolve(utils_2.Modules.ORDER);
45
+ // Find return to get order_id
46
+ const returnRecord = await findReturnById(orderService, return_id);
47
+ if (!returnRecord) {
48
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Return with ID ${return_id} not found`);
49
+ }
50
+ const orderId = returnRecord.order_id;
51
+ if (!orderId) {
52
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Return ${return_id} does not have an associated order_id`);
53
+ }
54
+ // Execute refund workflow (will handle retry logic internally)
55
+ try {
56
+ const { result } = await (0, process_cod_refund_workflow_1.default)(req.scope).run({
57
+ input: {
58
+ return_id,
59
+ order_id: orderId,
60
+ },
61
+ });
62
+ return res.json({
63
+ success: true,
64
+ message: "Refund retry initiated successfully",
65
+ refund_id: result.refund_id,
66
+ amount: result.amount,
67
+ currency_code: result.currency_code,
68
+ order_id: result.order_id,
69
+ });
70
+ }
71
+ catch (error) {
72
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
73
+ // Return error response instead of throwing to provide better API response
74
+ return res.status(500).json({
75
+ success: false,
76
+ message: "Refund retry failed",
77
+ error: errorMessage,
78
+ return_id,
79
+ order_id: orderId,
80
+ });
81
+ }
82
+ };
83
+ exports.POST = POST;
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldHVybnMvW2lkXS9yZXRyeS1yZWZ1bmQvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EscURBQXVEO0FBQ3ZELHFEQUFtRDtBQUVuRCx1SEFBMkY7QUFFM0Y7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGNBQWMsQ0FDM0IsWUFBaUMsRUFDakMsUUFBZ0I7SUFFaEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRWhELEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7WUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxLQUEyQyxDQUFBO1lBQ3BFLE1BQU0sT0FBTyxHQUFJLGdCQUFnQixDQUFDLE9BQXFCLElBQUksRUFBRSxDQUFBO1lBQzdELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQy9CLENBQUMsR0FBbUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQzdDLENBQUE7WUFDRCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixPQUFPLFlBQVksQ0FBQTtZQUNyQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUVwQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix1QkFBdUIsQ0FDeEIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBc0IsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRTFFLDhCQUE4QjtJQUM5QixNQUFNLFlBQVksR0FBRyxNQUFNLGNBQWMsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFFbEUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLGtCQUFrQixTQUFTLFlBQVksQ0FDeEMsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBSSxZQUFxQyxDQUFDLFFBQVEsQ0FBQTtJQUUvRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixVQUFVLFNBQVMsdUNBQXVDLENBQzNELENBQUE7SUFDSCxDQUFDO0lBRUQsK0RBQStEO0lBQy9ELElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEscUNBQXdCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMvRCxLQUFLLEVBQUU7Z0JBQ0wsU0FBUztnQkFDVCxRQUFRLEVBQUUsT0FBTzthQUNsQjtTQUNGLENBQUMsQ0FBQTtRQUVGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztZQUNkLE9BQU8sRUFBRSxJQUFJO1lBQ2IsT0FBTyxFQUFFLHFDQUFxQztZQUM5QyxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYTtZQUNuQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLFlBQVksR0FDaEIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO1FBRTFELDJFQUEyRTtRQUMzRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixLQUFLLEVBQUUsWUFBWTtZQUNuQixTQUFTO1lBQ1QsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQTtBQWhFWSxRQUFBLElBQUksUUFnRWhCIn0=
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const utils_2 = require("@medusajs/framework/utils");
6
+ /**
7
+ * Admin API endpoint to list failed refunds
8
+ *
9
+ * GET /admin/returns/failed-refunds
10
+ *
11
+ * Returns a list of all refunds with "failed" status.
12
+ * Useful for admin dashboard to see refunds that need attention.
13
+ */
14
+ const GET = async (req, res) => {
15
+ const paymentService = req.scope.resolve(utils_2.Modules.PAYMENT);
16
+ try {
17
+ // Get query parameters for pagination/filtering
18
+ const limit = req.query.limit
19
+ ? parseInt(req.query.limit, 10)
20
+ : 50;
21
+ const offset = req.query.offset
22
+ ? parseInt(req.query.offset, 10)
23
+ : 0;
24
+ const currencyCodeFilter = req.query.currency_code;
25
+ const errorCodeFilter = req.query.error_code;
26
+ const returnIdFilter = req.query.return_id;
27
+ const orderIdFilter = req.query.order_id;
28
+ // List all payment collections
29
+ // Note: This is a simplified approach. In production, you might want
30
+ // to use a more efficient query method or create a custom service
31
+ // We fetch more than needed to allow filtering before pagination
32
+ const paymentCollections = await paymentService.listPaymentCollections?.({ limit: 1000, offset: 0 });
33
+ const failedRefunds = [];
34
+ if (paymentCollections && Array.isArray(paymentCollections)) {
35
+ for (const collection of paymentCollections) {
36
+ const collectionWithRefunds = collection;
37
+ // Check refunds in collection
38
+ const refunds = collectionWithRefunds.refunds || [];
39
+ for (const refund of refunds) {
40
+ const refundData = refund;
41
+ const metadata = refundData.metadata || {};
42
+ // Check if refund has failed status
43
+ if (metadata.refund_status === "failed") {
44
+ const refundRecord = {
45
+ refund_id: refundData.id,
46
+ amount: refundData.amount,
47
+ currency_code: refundData.currency_code,
48
+ payment_error: metadata.payment_error,
49
+ payment_error_code: metadata.payment_error_code,
50
+ failed_at: metadata.failed_at,
51
+ retry_count: metadata.retry_count || 0,
52
+ last_retry_at: metadata.last_retry_at,
53
+ return_id: metadata.return_id,
54
+ order_id: metadata.order_id,
55
+ created_at: refundData.created_at,
56
+ };
57
+ // Apply filters
58
+ if (currencyCodeFilter &&
59
+ refundRecord.currency_code !== currencyCodeFilter) {
60
+ continue;
61
+ }
62
+ if (errorCodeFilter &&
63
+ refundRecord.payment_error_code !== errorCodeFilter) {
64
+ continue;
65
+ }
66
+ if (returnIdFilter &&
67
+ refundRecord.return_id !== returnIdFilter) {
68
+ continue;
69
+ }
70
+ if (orderIdFilter &&
71
+ refundRecord.order_id !== orderIdFilter) {
72
+ continue;
73
+ }
74
+ failedRefunds.push(refundRecord);
75
+ }
76
+ // Also check payment collection metadata for fallback refunds
77
+ const collectionMetadata = collectionWithRefunds.metadata || {};
78
+ const refundsInMetadata = collectionMetadata.refunds || [];
79
+ for (const metaRefund of refundsInMetadata) {
80
+ const metaRefundData = metaRefund;
81
+ if (metaRefundData.refund_status === "failed" &&
82
+ !failedRefunds.find((r) => r.refund_id ===
83
+ metaRefundData.id)) {
84
+ const refundRecord = {
85
+ refund_id: metaRefundData.id,
86
+ payment_error: metaRefundData.payment_error,
87
+ payment_error_code: metaRefundData.payment_error_code,
88
+ refund_status: "failed",
89
+ return_id: metaRefundData.return_id,
90
+ order_id: metaRefundData.order_id,
91
+ };
92
+ // Apply filters
93
+ if (returnIdFilter &&
94
+ refundRecord.return_id !== returnIdFilter) {
95
+ continue;
96
+ }
97
+ if (orderIdFilter &&
98
+ refundRecord.order_id !== orderIdFilter) {
99
+ continue;
100
+ }
101
+ failedRefunds.push(refundRecord);
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ // Sort by failed_at (most recent first) or created_at
108
+ failedRefunds.sort((a, b) => {
109
+ const dateA = a.failed_at
110
+ ? new Date(a.failed_at).getTime()
111
+ : a.created_at
112
+ ? new Date(a.created_at).getTime()
113
+ : 0;
114
+ const dateB = b.failed_at
115
+ ? new Date(b.failed_at).getTime()
116
+ : b.created_at
117
+ ? new Date(b.created_at).getTime()
118
+ : 0;
119
+ return dateB - dateA; // Descending order
120
+ });
121
+ const totalCount = failedRefunds.length;
122
+ // Apply pagination
123
+ const paginatedRefunds = failedRefunds.slice(offset, offset + limit);
124
+ return res.json({
125
+ failed_refunds: paginatedRefunds,
126
+ count: totalCount,
127
+ limit,
128
+ offset,
129
+ });
130
+ }
131
+ catch (error) {
132
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
133
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to retrieve failed refunds: ${errorMessage}`);
134
+ }
135
+ };
136
+ exports.GET = GET;
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldHVybnMvZmFpbGVkLXJlZnVuZHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXVEO0FBQ3ZELHFEQUFtRDtBQUduRDs7Ozs7OztHQU9HO0FBQ0ksTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ3RDLGVBQU8sQ0FBQyxPQUFPLENBQ2hCLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxnREFBZ0Q7UUFDaEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQzNCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDTixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDN0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQWdCLEVBQUUsRUFBRSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDTCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBbUMsQ0FBQTtRQUN4RSxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQWdDLENBQUE7UUFDbEUsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUErQixDQUFBO1FBQ2hFLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBOEIsQ0FBQTtRQUU5RCwrQkFBK0I7UUFDL0IscUVBQXFFO1FBQ3JFLGtFQUFrRTtRQUNsRSxpRUFBaUU7UUFD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
@@ -1,8 +1,59 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.POST = void 0;
6
+ exports.POST = exports.GET = void 0;
4
7
  const utils_1 = require("@medusajs/framework/utils");
5
8
  const utils_2 = require("@medusajs/framework/utils");
9
+ const process_cod_refund_workflow_1 = __importDefault(require("../../../../../workflows/process-cod-refund-workflow"));
10
+ /**
11
+ * GET endpoint to retrieve current payment details and refund status
12
+ *
13
+ * GET /store/returns/[id]/payment-details
14
+ */
15
+ const GET = async (req, res) => {
16
+ const { id: return_id } = req.params;
17
+ if (!return_id) {
18
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Return ID is required");
19
+ }
20
+ // Get order service to retrieve return
21
+ const orderService = req.scope.resolve(utils_2.Modules.ORDER);
22
+ const paymentService = req.scope.resolve(utils_2.Modules.PAYMENT);
23
+ // Find return by ID
24
+ const returnRecord = await findReturnById(orderService, return_id);
25
+ if (!returnRecord) {
26
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Return with ID ${return_id} not found`);
27
+ }
28
+ // Get order to verify customer ownership
29
+ const orderId = returnRecord.order_id;
30
+ const order = await orderService.retrieveOrder(orderId);
31
+ // Verify customer ownership
32
+ const authContext = req.auth_context;
33
+ if (authContext?.actor_type === "customer") {
34
+ const customerId = authContext.actor_id;
35
+ if (order.customer_id !== customerId) {
36
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "You are not authorized to view this return");
37
+ }
38
+ }
39
+ // Get current payment details from metadata
40
+ const metadata = returnRecord.metadata || {};
41
+ const paymentDetails = metadata.refund_payment_details;
42
+ const lastUpdatedAt = metadata.payment_details_updated_at;
43
+ const paymentDetailsHistory = metadata.payment_details_history || [];
44
+ // Get refund status
45
+ const refundStatus = await getRefundStatusForReturn(orderService, paymentService, return_id, orderId);
46
+ const refundStatusValue = refundStatus.status;
47
+ const canUpdate = refundStatusValue !== "succeeded";
48
+ return res.json({
49
+ payment_details: paymentDetails || null,
50
+ refund_status: refundStatusValue,
51
+ can_update: canUpdate,
52
+ last_updated_at: lastUpdatedAt || null,
53
+ payment_details_history_count: paymentDetailsHistory.length,
54
+ });
55
+ };
56
+ exports.GET = GET;
6
57
  const POST = async (req, res) => {
7
58
  const { id: return_id } = req.params;
8
59
  const paymentDetails = req.body;
@@ -21,6 +72,7 @@ const POST = async (req, res) => {
21
72
  }
22
73
  // Get order service to retrieve return
23
74
  const orderService = req.scope.resolve(utils_2.Modules.ORDER);
75
+ const paymentService = req.scope.resolve(utils_2.Modules.PAYMENT);
24
76
  // Find return by ID
25
77
  // Note: In Medusa, returns are linked to orders, so we need to search through orders
26
78
  // This is a simplified approach - in production, you might want to use a more efficient query
@@ -39,13 +91,48 @@ const POST = async (req, res) => {
39
91
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "You are not authorized to update this return");
40
92
  }
41
93
  }
42
- // Update return metadata with payment details
94
+ // Check refund status before allowing update
95
+ const refundStatus = await getRefundStatusForReturn(orderService, paymentService, return_id, orderId);
96
+ // Reject update if refund is already succeeded
97
+ if (refundStatus.status === "succeeded") {
98
+ return res.status(400).json({
99
+ success: false,
100
+ error: "Payment details cannot be updated after refund is successful",
101
+ refund_status: "succeeded",
102
+ refund_id: refundStatus.refund_id,
103
+ });
104
+ }
105
+ // Get current metadata
43
106
  const currentMetadata = returnRecord.metadata || {};
107
+ // Get current payment details for history
108
+ const currentPaymentDetails = currentMetadata.refund_payment_details;
109
+ // Build payment details history
110
+ const paymentDetailsHistory = currentMetadata.payment_details_history || [];
111
+ // Add current payment details to history if they exist
112
+ if (currentPaymentDetails) {
113
+ const historyEntry = {
114
+ payment_details: currentPaymentDetails,
115
+ updated_at: currentMetadata.payment_details_updated_at ||
116
+ new Date().toISOString(),
117
+ reason: refundStatus.status === "failed" ? "refund_failed" : "user_update",
118
+ };
119
+ // Add to history (limit to last 10 entries)
120
+ paymentDetailsHistory.push(historyEntry);
121
+ if (paymentDetailsHistory.length > 10) {
122
+ paymentDetailsHistory.shift(); // Remove oldest entry
123
+ }
124
+ }
125
+ // Update return metadata with payment details
44
126
  const updatedMetadata = {
45
127
  ...currentMetadata,
46
128
  refund_payment_details: paymentDetails,
47
129
  payment_details_updated_at: new Date().toISOString(),
130
+ payment_details_history: paymentDetailsHistory,
131
+ // Cache refund status for quick access
132
+ refund_status: refundStatus.status,
48
133
  };
134
+ // Store previous refund status to check if we need to trigger retry
135
+ const previousRefundStatus = refundStatus.status;
49
136
  // Attempt to update return metadata via order service
50
137
  // Note: Medusa v2 may not expose direct return update API
51
138
  // We'll try to update through the order service if available
@@ -93,12 +180,27 @@ const POST = async (req, res) => {
93
180
  console.warn(`[payment-details] Payment details metadata structure is correct but may not be persisted. ` +
94
181
  `This is a known limitation when Medusa's return update API is not available.`);
95
182
  }
183
+ // If refund was failed and payment details are updated, trigger auto-retry
184
+ if (previousRefundStatus === "failed") {
185
+ // Trigger refund retry asynchronously (don't await)
186
+ triggerRefundRetry(req.scope, return_id, orderId).catch((error) => {
187
+ console.error(`[payment-details] Error triggering refund retry for return ${return_id}:`, error instanceof Error ? error.message : error);
188
+ });
189
+ }
96
190
  return res.json({
97
191
  success: true,
98
192
  message: "Payment details saved successfully",
99
193
  return_id,
100
- note: "Payment details have been processed. If return update API is not available in your Medusa version, " +
101
- "you may need to implement a custom return module to persist metadata.",
194
+ refund_status: refundStatus.status,
195
+ can_update: refundStatus.status !== "succeeded",
196
+ payment_details_history_count: paymentDetailsHistory.length,
197
+ ...(previousRefundStatus === "failed" && {
198
+ note: "Refund retry has been automatically initiated with updated payment details",
199
+ }),
200
+ ...(previousRefundStatus !== "failed" && {
201
+ note: "Payment details have been processed. If return update API is not available in your Medusa version, " +
202
+ "you may need to implement a custom return module to persist metadata.",
203
+ }),
102
204
  });
103
205
  };
104
206
  exports.POST = POST;
@@ -130,4 +232,95 @@ async function findReturnById(orderService, returnId) {
130
232
  }
131
233
  return null;
132
234
  }
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3JldHVybnMvW2lkXS9wYXltZW50LWRldGFpbHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXVEO0FBQ3ZELHFEQUFtRDtBQUk1QyxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFDcEMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLElBQTRCLENBQUE7SUFFdkQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsdUJBQXVCLENBQ3hCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDhCQUE4QixDQUMvQixDQUFBO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDRCQUE0QixDQUM3QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbEMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMkJBQTJCLENBQzVCLENBQUE7SUFDSCxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFzQixlQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFMUUsb0JBQW9CO0lBQ3BCLHFGQUFxRjtJQUNyRiw4RkFBOEY7SUFDOUYsTUFBTSxZQUFZLEdBQUcsTUFBTSxjQUFjLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRWxFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixrQkFBa0IsU0FBUyxZQUFZLENBQ3hDLENBQUE7SUFDSCxDQUFDO0lBRUQscURBQXFEO0lBQ3JELE1BQU0sT0FBTyxHQUFJLFlBQXFDLENBQUMsUUFBUSxDQUFBO0lBQy9ELE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUV2RCwrRUFBK0U7SUFDL0UsTUFBTSxXQUFXLEdBQUksR0FFbkIsQ0FBQyxZQUFZLENBQUE7SUFFZixJQUFJLFdBQVcsRUFBRSxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQTtRQUN2QyxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsOENBQThDLENBQy9DLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxNQUFNLGVBQWUsR0FDakIsWUFBdUMsQ0FBQyxRQUVqQyxJQUFJLEVBQUUsQ0FBQTtJQUVqQixNQUFNLGVBQWUsR0FBRztRQUN0QixHQUFHLGVBQWU7UUFDbEIsc0JBQXNCLEVBQUUsY0FBYztRQUN0QywwQkFBMEIsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtLQUNyRCxDQUFBO0lBRUQsc0RBQXNEO0lBQ3RELDBEQUEwRDtJQUMxRCw2REFBNkQ7SUFDN0QsSUFBSSxDQUFDO1FBQ0gsaURBQWlEO1FBQ2pELDhEQUE4RDtRQUM5RCxNQUFNLHVCQUF1QixHQUFHLFlBSy9CLENBQUE7UUFFRCxJQUFJLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sdUJBQXVCLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtnQkFDcEQsUUFBUSxFQUFFLGVBQWU7YUFDMUIsQ0FBQyxDQUFBO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTix1RUFBdUU7WUFDdkUscUVBQXFFO1lBQ3JFLE1BQU0sZ0JBQWdCLEdBQUcsS0FFeEIsQ0FBQTtZQUNELE1BQU0sT0FBTyxHQUFJLGdCQUFnQixDQUFDLE9BRy9CLElBQUksRUFBRSxDQUFBO1lBRVQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQTtZQUNwRSxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHO29CQUNyQixHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSxlQUFlO2lCQUMxQixDQUFBO2dCQUVELDRDQUE0QztnQkFDNUMsTUFBTSxzQkFBc0IsR0FBRyxZQUs5QixDQUFBO2dCQUVELElBQUksc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sc0JBQXNCLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTt3QkFDaEQsT0FBTyxFQUFFLE9BQU87cUJBQ2pCLENBQUMsQ0FBQTtnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sbURBQW1EO29CQUNuRCxPQUFPLENBQUMsSUFBSSxDQUNWLGtFQUFrRSxTQUFTLElBQUk7d0JBQzdFLHVEQUF1RDt3QkFDdkQsaUVBQWlFO3dCQUNqRSxvRkFBb0YsQ0FDdkYsQ0FBQTtnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLHVFQUF1RTtRQUN2RSw0REFBNEQ7UUFDNUQsT0FBTyxDQUFDLEtBQUssQ0FDWCwrREFBK0QsU0FBUyxHQUFHLEVBQzNFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDL0MsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1YsNEZBQTRGO1lBQzFGLDhFQUE4RSxDQUNqRixDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztRQUNkLE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLG9DQUFvQztRQUM3QyxTQUFTO1FBQ1QsSUFBSSxFQUNGLHFHQUFxRztZQUNyRyx1RUFBdUU7S0FDMUUsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBaktZLFFBQUEsSUFBSSxRQWlLaEI7QUFFRCx1Q0FBdUM7QUFDdkMsS0FBSyxVQUFVLGNBQWMsQ0FDM0IsWUFBaUMsRUFDakMsUUFBZ0I7SUFFaEIsc0NBQXNDO0lBQ3RDLHFFQUFxRTtJQUNyRSxvQ0FBb0M7SUFFcEMsK0NBQStDO0lBQy9DLDZFQUE2RTtJQUM3RSxJQUFJLENBQUM7UUFDSCxzQ0FBc0M7UUFDdEMsZ0VBQWdFO1FBQ2hFLGdFQUFnRTtRQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDM0MsdUNBQXVDO1NBQ3hDLENBQUMsQ0FBQTtRQUVGLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7WUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxLQUEyQyxDQUFBO1lBQ3BFLE1BQU0sT0FBTyxHQUFJLGdCQUFnQixDQUFDLE9BQXFCLElBQUksRUFBRSxDQUFBO1lBQzdELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQy9CLENBQUMsR0FBbUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQzdDLENBQUE7WUFDRCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixPQUFPLFlBQVksQ0FBQTtZQUNyQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIn0=
235
+ /**
236
+ * Helper function to get refund status for a return
237
+ * Checks payment collection refunds to find refund linked to return_id
238
+ */
239
+ async function getRefundStatusForReturn(orderService, paymentService, return_id, order_id) {
240
+ try {
241
+ // Retrieve order with payment collection
242
+ const order = await orderService.retrieveOrder(order_id, {
243
+ relations: ["payment_collection"],
244
+ });
245
+ if (!order) {
246
+ return { status: null };
247
+ }
248
+ // Get payment collection ID
249
+ const orderWithPayment = order;
250
+ const paymentCollectionId = orderWithPayment.payment_collection_id;
251
+ if (!paymentCollectionId) {
252
+ return { status: null };
253
+ }
254
+ // Retrieve payment collection with refunds
255
+ const paymentCollection = await paymentService.retrievePaymentCollection(paymentCollectionId, {
256
+ relations: ["refunds"],
257
+ });
258
+ if (!paymentCollection) {
259
+ return { status: null };
260
+ }
261
+ // Check refunds in collection
262
+ const paymentCollectionWithRefunds = paymentCollection;
263
+ const refunds = paymentCollectionWithRefunds.refunds || [];
264
+ // Find refund linked to this return
265
+ for (const refund of refunds) {
266
+ const refundData = refund;
267
+ const metadata = refundData.metadata || {};
268
+ // Check if refund is linked to this return
269
+ if (metadata.return_id === return_id) {
270
+ const refundStatus = metadata.refund_status;
271
+ return {
272
+ status: refundStatus || null,
273
+ refund_id: refundData.id,
274
+ };
275
+ }
276
+ }
277
+ // Also check payment collection metadata for fallback refunds
278
+ const collectionMetadata = paymentCollectionWithRefunds.metadata || {};
279
+ const refundTransactions = collectionMetadata.refund_transactions || {};
280
+ // Check each refund transaction
281
+ for (const [refundId, refundData] of Object.entries(refundTransactions)) {
282
+ const refundInfo = refundData;
283
+ if (refundInfo.return_id === return_id) {
284
+ return {
285
+ status: refundInfo.refund_status || null,
286
+ refund_id: refundId,
287
+ };
288
+ }
289
+ }
290
+ return { status: null };
291
+ }
292
+ catch (error) {
293
+ console.error(`[getRefundStatusForReturn] Error checking refund status for return ${return_id}:`, error instanceof Error ? error.message : error);
294
+ return { status: null };
295
+ }
296
+ }
297
+ /**
298
+ * Helper function to trigger refund retry when payment details are updated
299
+ * Executes workflow asynchronously without blocking the response
300
+ */
301
+ async function triggerRefundRetry(scope, return_id, order_id) {
302
+ try {
303
+ // Execute workflow asynchronously (don't await to avoid blocking)
304
+ (0, process_cod_refund_workflow_1.default)(scope)
305
+ .run({
306
+ input: {
307
+ return_id,
308
+ order_id,
309
+ },
310
+ })
311
+ .then(({ result }) => {
312
+ console.log(`[triggerRefundRetry] Refund retry initiated successfully for return ${return_id}`, {
313
+ refund_id: result.refund_id,
314
+ amount: result.amount,
315
+ currency_code: result.currency_code,
316
+ });
317
+ })
318
+ .catch((error) => {
319
+ console.error(`[triggerRefundRetry] Refund retry failed for return ${return_id}:`, error instanceof Error ? error.message : error);
320
+ });
321
+ }
322
+ catch (error) {
323
+ console.error(`[triggerRefundRetry] Error initiating refund retry for return ${return_id}:`, error instanceof Error ? error.message : error);
324
+ }
325
+ }
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3JldHVybnMvW2lkXS9wYXltZW50LWRldGFpbHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EscURBQXVEO0FBQ3ZELHFEQUFtRDtBQU1uRCx1SEFBMkY7QUFFM0Y7Ozs7R0FJRztBQUNJLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUVwQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix1QkFBdUIsQ0FDeEIsQ0FBQTtJQUNILENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXNCLGVBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxRSxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDdEMsZUFBTyxDQUFDLE9BQU8sQ0FDaEIsQ0FBQTtJQUVELG9CQUFvQjtJQUNwQixNQUFNLFlBQVksR0FBRyxNQUFNLGNBQWMsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFFbEUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLGtCQUFrQixTQUFTLFlBQVksQ0FDeEMsQ0FBQTtJQUNILENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsTUFBTSxPQUFPLEdBQUksWUFBcUMsQ0FBQyxRQUFRLENBQUE7SUFDL0QsTUFBTSxLQUFLLEdBQUcs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
@@ -26,6 +26,7 @@ const OrderManagementPluginOptionsSchema = zod_1.z.object({
26
26
  providerSelection: zod_1.z.enum(["auto", "manual"]).default("auto"),
27
27
  })
28
28
  .optional(),
29
+ paymentProcessing: zod_1.z.enum(["automatic", "manual"]).default("automatic"),
29
30
  });
30
31
  function normalizeOrderManagementOptions(input) {
31
32
  const parsed = OrderManagementPluginOptionsSchema.parse(input ?? {});
@@ -37,6 +38,7 @@ function normalizeOrderManagementOptions(input) {
37
38
  providerSelection: parsed.refundProviders.providerSelection,
38
39
  }
39
40
  : undefined,
41
+ paymentProcessing: parsed.paymentProcessing,
40
42
  };
41
43
  }
42
44
  exports.DEFAULT_ORDER_MANAGEMENT_OPTIONS = normalizeOrderManagementOptions({});
@@ -56,4 +58,4 @@ function resolveOrderManagementOptions(configModule) {
56
58
  }
57
59
  return exports.DEFAULT_ORDER_MANAGEMENT_OPTIONS;
58
60
  }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29uZmlnL3BsdWdpbi1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZDQSwwRUFjQztBQU9ELHNFQW1CQztBQXJGRCxxREFBb0Q7QUFDcEQsNkJBQXVCO0FBTXZCLE1BQU0sK0JBQStCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxRQUFRLEVBQUUsT0FBQztTQUNSLE1BQU0sQ0FBQztRQUNOLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDN0IsQ0FBQztTQUNELFFBQVEsRUFBRTtJQUNiLE1BQU0sRUFBRSxPQUFDO1NBQ04sTUFBTSxDQUFDO1FBQ04sTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQzFCLENBQUM7U0FDRCxRQUFRLEVBQUU7Q0FDZCxDQUFDLENBQUE7QUFFRixNQUFNLGtDQUFrQyxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEQsZUFBZSxFQUFFLE9BQUM7U0FDZixNQUFNLENBQUM7UUFDTixPQUFPLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7UUFDM0QsV0FBVyxFQUFFLCtCQUErQixDQUFDLFFBQVEsRUFBRTtRQUN2RCxpQkFBaUIsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUM5RCxDQUFDO1NBQ0QsUUFBUSxFQUFFO0NBQ2QsQ0FBQyxDQUFBO0FBZ0JGLFNBQWdCLCtCQUErQixDQUM3QyxLQUE4QztJQUU5QyxNQUFNLE1BQU0sR0FBRyxrQ0FBa0MsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXBFLE9BQU87UUFDTCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7WUFDckMsQ0FBQyxDQUFDO2dCQUNFLE9BQU8sRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQ3ZDLFdBQVcsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQy9DLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsaUJBQWlCO2FBQzVEO1lBQ0gsQ0FBQyxDQUFDLFNBQVM7S0FDZCxDQUFBO0FBQ0gsQ0FBQztBQUVZLFFBQUEsZ0NBQWdDLEdBQzNDLCtCQUErQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBRXJDLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFBO0FBRXRDLFNBQWdCLDZCQUE2QixDQUMzQyxZQUFnQztJQUVoQyxNQUFNLE9BQU8sR0FBRyxZQUFZLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUUzQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksSUFBQSxnQkFBUSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDckIsSUFBSSxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQzNCLE1BQUs7WUFDUCxDQUFDO1lBQ0QsU0FBUTtRQUNWLENBQUM7UUFFRCxJQUFJLE1BQU0sRUFBRSxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsT0FBTywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLHdDQUFnQyxDQUFBO0FBQ3pDLENBQUMifQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29uZmlnL3BsdWdpbi1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThDQSwwRUFlQztBQU9ELHNFQW1CQztBQXZGRCxxREFBb0Q7QUFDcEQsNkJBQXVCO0FBTXZCLE1BQU0sK0JBQStCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxRQUFRLEVBQUUsT0FBQztTQUNSLE1BQU0sQ0FBQztRQUNOLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDN0IsQ0FBQztTQUNELFFBQVEsRUFBRTtJQUNiLE1BQU0sRUFBRSxPQUFDO1NBQ04sTUFBTSxDQUFDO1FBQ04sTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQzFCLENBQUM7U0FDRCxRQUFRLEVBQUU7Q0FDZCxDQUFDLENBQUE7QUFFRixNQUFNLGtDQUFrQyxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEQsZUFBZSxFQUFFLE9BQUM7U0FDZixNQUFNLENBQUM7UUFDTixPQUFPLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7UUFDM0QsV0FBVyxFQUFFLCtCQUErQixDQUFDLFFBQVEsRUFBRTtRQUN2RCxpQkFBaUIsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUM5RCxDQUFDO1NBQ0QsUUFBUSxFQUFFO0lBQ2IsaUJBQWlCLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Q0FDeEUsQ0FBQyxDQUFBO0FBZ0JGLFNBQWdCLCtCQUErQixDQUM3QyxLQUE4QztJQUU5QyxNQUFNLE1BQU0sR0FBRyxrQ0FBa0MsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXBFLE9BQU87UUFDTCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7WUFDckMsQ0FBQyxDQUFDO2dCQUNFLE9BQU8sRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQ3ZDLFdBQVcsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQy9DLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsaUJBQWlCO2FBQzVEO1lBQ0gsQ0FBQyxDQUFDLFNBQVM7UUFDYixpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO0tBQzVDLENBQUE7QUFDSCxDQUFDO0FBRVksUUFBQSxnQ0FBZ0MsR0FDM0MsK0JBQStCLENBQUMsRUFBRSxDQUFDLENBQUE7QUFFckMsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUE7QUFFdEMsU0FBZ0IsNkJBQTZCLENBQzNDLFlBQWdDO0lBRWhDLE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFBO0lBRTNDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFBLGdCQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0IsTUFBSztZQUNQLENBQUM7WUFDRCxTQUFRO1FBQ1YsQ0FBQztRQUVELElBQUksTUFBTSxFQUFFLE9BQU8sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxPQUFPLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sd0NBQWdDLENBQUE7QUFDekMsQ0FBQyJ9
@@ -5,7 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.config = void 0;
7
7
  exports.default = returnReceivedHandler;
8
+ const utils_1 = require("@medusajs/framework/utils");
8
9
  const process_cod_refund_workflow_1 = __importDefault(require("../workflows/process-cod-refund-workflow"));
10
+ const plugin_options_1 = require("../config/plugin-options");
9
11
  /**
10
12
  * Subscriber for return.updated events
11
13
  *
@@ -43,6 +45,16 @@ async function returnReceivedHandler({ event: { data }, container, }) {
43
45
  console.log(`[return-received] Return ${returnId} was already in "received" status. Skipping duplicate processing.`);
44
46
  return;
45
47
  }
48
+ // Check payment processing mode from plugin configuration
49
+ const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
50
+ const pluginOptions = (0, plugin_options_1.resolveOrderManagementOptions)(configModule);
51
+ const paymentProcessing = pluginOptions.paymentProcessing || "automatic";
52
+ if (paymentProcessing === "manual") {
53
+ console.log(`[return-received] Payment processing is set to "manual" mode. ` +
54
+ `Skipping automatic refund processing for return ${returnId}. ` +
55
+ `Admin will process refund manually.`);
56
+ return;
57
+ }
46
58
  try {
47
59
  console.log(`[return-received] Processing COD refund for return ${returnId}, order ${orderId}`);
48
60
  // Execute workflow to process COD refund
@@ -88,4 +100,4 @@ async function returnReceivedHandler({ event: { data }, container, }) {
88
100
  exports.config = {
89
101
  event: "return.updated",
90
102
  };
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJuLXJlY2VpdmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL3JldHVybi1yZWNlaXZlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUE2QkEsd0NBMkZDO0FBcEhELDJHQUErRTtBQVkvRTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDWSxLQUFLLFVBQVUscUJBQXFCLENBQUMsRUFDbEQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQ2YsU0FBUyxHQUM4QjtJQUN2QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO0lBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUMxQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFBO0lBRTNDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsZ0RBQWdELFFBQVEsWUFBWSxPQUFPLGFBQWEsTUFBTSxFQUFFLENBQ2pHLENBQUE7SUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUE7UUFDN0QsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUE7UUFDNUQsT0FBTTtJQUNSLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsSUFBSSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FDVCw0QkFBNEIsUUFBUSxlQUFlLE1BQU0sb0RBQW9ELENBQzlHLENBQUE7UUFDRCxPQUFNO0lBQ1IsQ0FBQztJQUVELHdGQUF3RjtJQUN4RixJQUFJLGNBQWMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUNULDRCQUE0QixRQUFRLG1FQUFtRSxDQUN4RyxDQUFBO1FBQ0QsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUNULHNEQUFzRCxRQUFRLFdBQVcsT0FBTyxFQUFFLENBQ25GLENBQUE7UUFFRCx5Q0FBeUM7UUFDekMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxxQ0FBd0IsRUFBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDL0QsS0FBSyxFQUFFO2dCQUNMLFNBQVMsRUFBRSxRQUFRO2dCQUNuQixRQUFRLEVBQUUsT0FBTzthQUNsQjtTQUNGLENBQUMsQ0FBQTtRQUVGLE9BQU8sQ0FBQyxHQUFHLENBQ1Qsb0VBQW9FLFFBQVEsR0FBRyxFQUMvRTtZQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQ25DLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtTQUMxQixDQUNGLENBQUE7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLDhFQUE4RTtRQUM5RSxpRkFBaUY7UUFDakYsMkRBQTJEO1FBQzNELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1lBQzNCLDZEQUE2RDtZQUM3RCxJQUNFLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDN0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO2dCQUNqQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFDdEMsQ0FBQztnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUNULDJCQUEyQixPQUFPLDBDQUEwQyxFQUM1RSxLQUFLLENBQUMsT0FBTyxDQUNkLENBQUE7Z0JBQ0QsT0FBTTtZQUNSLENBQUM7WUFFRCxnQ0FBZ0M7WUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FDWCw4REFBOEQsUUFBUSxXQUFXLE9BQU8sR0FBRyxFQUMzRixLQUFLLENBQUMsT0FBTyxDQUNkLENBQUE7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQ1gsc0VBQXNFLFFBQVEsV0FBVyxPQUFPLEdBQUcsRUFDbkcsS0FBSyxDQUNOLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNVLFFBQUEsTUFBTSxHQUFxQjtJQUN0QyxLQUFLLEVBQUUsZ0JBQWdCO0NBQ3hCLENBQUEifQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJuLXJlY2VpdmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL3JldHVybi1yZWNlaXZlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFnQ0Esd0NBNEdDO0FBeElELHFEQUFxRTtBQUNyRSwyR0FBK0U7QUFDL0UsNkRBQXdFO0FBYXhFOzs7Ozs7Ozs7Ozs7R0FZRztBQUNZLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxFQUNsRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQzhCO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUE7SUFDeEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQzFCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUE7SUFFM0MsT0FBTyxDQUFDLEdBQUcsQ0FDVCxnREFBZ0QsUUFBUSxZQUFZLE9BQU8sYUFBYSxNQUFNLEVBQUUsQ0FDakcsQ0FBQTtJQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQTtRQUM3RCxPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtRQUM1RCxPQUFNO0lBQ1IsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxJQUFJLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUNULDRCQUE0QixRQUFRLGVBQWUsTUFBTSxvREFBb0QsQ0FDOUcsQ0FBQTtRQUNELE9BQU07SUFDUixDQUFDO0lBRUQsd0ZBQXdGO0lBQ3hGLElBQUksY0FBYyxLQUFLLFVBQVUsRUFBRSxDQUFD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
@@ -36,6 +36,7 @@ exports.processCodRefundWorkflow = (0, workflows_sdk_1.createWorkflow)("process-
36
36
  // If payment details are not provided, skip payment processing
37
37
  // This allows the workflow to still create refund records for manual processing
38
38
  let transaction_id;
39
+ let paymentError;
39
40
  if (has_payment_details && payment_details) {
40
41
  // Step 5: Validate payment method is supported for currency
41
42
  const { selected_method, payment_details: validatedPaymentDetails } = (0, select_payment_method_step_1.selectPaymentMethodStep)({
@@ -58,16 +59,28 @@ exports.processCodRefundWorkflow = (0, workflows_sdk_1.createWorkflow)("process-
58
59
  return_id: input.return_id,
59
60
  order_id: input.order_id,
60
61
  });
61
- transaction_id = gatewayTransactionId;
62
+ // Check if payment processing failed
63
+ if (!refund_result.success) {
64
+ paymentError = {
65
+ error_message: refund_result.error_message,
66
+ error_code: refund_result.error_code,
67
+ };
68
+ // Don't set transaction_id on failure
69
+ }
70
+ else {
71
+ transaction_id = gatewayTransactionId;
72
+ }
62
73
  }
63
- // Step 8: Create refund record with transaction ID
74
+ // Step 8: Create refund record with transaction ID or error details
75
+ // Always create refund record, even on failure, so we can track failures
64
76
  const { refund_id, amount: refundAmount, currency_code: refundCurrencyCode } = (0, create_refund_record_step_1.createRefundRecordStep)({
65
77
  payment_collection_id: payment_collection.id,
66
78
  amount,
67
79
  currency_code: refundCurrency,
68
80
  order_id: input.order_id,
69
81
  return_id: input.return_id,
70
- transaction_id, // Include gateway transaction ID
82
+ transaction_id, // Include gateway transaction ID (if successful)
83
+ payment_error: paymentError, // Include error details (if failed)
71
84
  });
72
85
  // Step 9: Update payment status
73
86
  (0, update_payment_status_step_1.updatePaymentStatusStep)({
@@ -83,4 +96,4 @@ exports.processCodRefundWorkflow = (0, workflows_sdk_1.createWorkflow)("process-
83
96
  });
84
97
  });
85
98
  exports.default = exports.processCodRefundWorkflow;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1jb2QtcmVmdW5kLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9wcm9jZXNzLWNvZC1yZWZ1bmQtd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHlFQUVzQztBQUN0Qyw2RkFFZ0Q7QUFDaEQsdUZBRTZDO0FBQzdDLHVHQUVxRDtBQUNyRCxtRkFFMkM7QUFDM0MseUZBRThDO0FBQzlDLHFGQUU0QztBQUM1QyxpRkFFMEM7QUFDMUMsbUZBRTJDO0FBTTlCLFFBQUEsd0JBQXdCLEdBQUcsSUFBQSw4QkFBYyxFQUNwRCxvQkFBb0IsRUFDcEIsQ0FDRSxLQUFvQyxFQUNjLEVBQUU7SUFDcEQsOEJBQThCO0lBQzlCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLDBDQUFrQixFQUFDO1FBQ3BDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtLQUN6QixDQUFDLENBQUE7SUFFRiwyRUFBMkU7SUFDM0Usd0RBQXdEO0lBRXhELG1EQUFtRDtJQUNuRCxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxHQUNoRCxJQUFBLDZEQUEyQixFQUFDO1FBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtLQUN6QixDQUFDLENBQUE7SUFFSixrQ0FBa0M7SUFDbEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQzdDLElBQUEsd0RBQXlCLEVBQUM7UUFDeEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixhQUFhO0tBQ2QsQ0FBQyxDQUFBO0lBRUosK0NBQStDO0lBQy9DLE1BQU0sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsR0FDNUMsSUFBQSx1RUFBZ0MsRUFBQztRQUMvQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO0tBQ3pCLENBQUMsQ0FBQTtJQUVKLCtEQUErRDtJQUMvRCxnRkFBZ0Y7SUFDaEYsSUFBSSxjQUFrQyxDQUFBO0lBRXRDLElBQUksbUJBQW1CLElBQUksZUFBZSxFQUFFLENBQUM7UUFDM0MsNERBQTREO1FBQzVELE1BQU0sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLEdBQ2pFLElBQUEsb0RBQXVCLEVBQUM7WUFDdEIsYUFBYSxFQUFFLGNBQWM7WUFDN0IsZUFBZTtTQUNoQixDQUFDLENBQUE7UUFFSiwwQ0FBMEM7UUFDMUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxHQUM1QyxJQUFBLDBEQUEwQixFQUFDO1lBQ3pCLGVBQWUsRUFBRSx1QkFBdUI7WUFDeEMsY0FBYyxFQUFFLGVBQWU7WUFDL0IsYUFBYSxFQUFFLGNBQWM7U0FDOUIsQ0FBQyxDQUFBO1FBRUosb0RBQW9EO1FBQ3BELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxHQUMzRCxJQUFBLHNEQUF3QixFQUFDO1lBQ3ZCLE1BQU07WUFDTixhQUFhLEVBQUUsY0FBYztZQUM3QixlQUFlLEVBQUUsbUJBQW1CO1lBQ3BDLGNBQWMsRUFBRSxlQUFlO1lBQy9CLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7U0FDekIsQ0FBQyxDQUFBO1FBRUosY0FBYyxHQUFHLG9CQUFvQixDQUFBO0lBQ3ZDLENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxHQUMxRSxJQUFBLGtEQUFzQixFQUFDO1FBQ3JCLHFCQUFxQixFQUFHLGtCQUFxQyxDQUFDLEVBQUU7UUFDaEUsTUFBTTtRQUNOLGFBQWEsRUFBRSxjQUFjO1FBQzdCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsY0FBYyxFQUFFLGlDQUFpQztLQUNsRCxDQUFDLENBQUE7SUFFSixnQ0FBZ0M7SUFDaEMsSUFBQSxvREFBdUIsRUFBQztRQUN0QixxQkFBcUIsRUFBRyxrQkFBcUMsQ0FBQyxFQUFFO1FBQ2hFLFNBQVM7UUFDVCxhQUFhLEVBQUUsWUFBWTtLQUM1QixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQWlDO1FBQzFELFNBQVM7UUFDVCxNQUFNLEVBQUUsWUFBWTtRQUNwQixhQUFhLEVBQUUsa0JBQWtCO1FBQ2pDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtLQUN6QixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLGdDQUF3QixDQUFBIn0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1jb2QtcmVmdW5kLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9wcm9jZXNzLWNvZC1yZWZ1bmQtd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHlFQUVzQztBQUN0Qyw2RkFFZ0Q7QUFDaEQsdUZBRTZDO0FBQzdDLHVHQUVxRDtBQUNyRCxtRkFFMkM7QUFDM0MseUZBRThDO0FBQzlDLHFGQUU0QztBQUM1QyxpRkFFMEM7QUFDMUMsbUZBRTJDO0FBTTlCLFFBQUEsd0JBQXdCLEdBQUcsSUFBQSw4QkFBYyxFQUNwRCxvQkFBb0IsRUFDcEIsQ0FDRSxLQUFvQyxFQUNjLEVBQUU7SUFDcEQsOEJBQThCO0lBQzlCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLDBDQUFrQixFQUFDO1FBQ3BDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtLQUN6QixDQUFDLENBQUE7SUFFRiwyRUFBMkU7SUFDM0Usd0RBQXdEO0lBRXhELG1EQUFtRDtJQUNuRCxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxHQUNoRCxJQUFBLDZEQUEyQixFQUFDO1FBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtLQUN6QixDQUFDLENBQUE7SUFFSixrQ0FBa0M7SUFDbEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQzdDLElBQUEsd0RBQXlCLEVBQUM7UUFDeEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixhQUFhO0tBQ2QsQ0FBQyxDQUFBO0lBRUosK0NBQStDO0lBQy9DLE1BQU0sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsR0FDNUMsSUFBQSx1RUFBZ0MsRUFBQztRQUMvQixTQUFTLEVBQUUsS0FBSyxDQUFD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