order-management 0.0.91 → 0.0.92

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.
@@ -6,10 +6,14 @@ const refund_payment_mapping_1 = require("../../../../../modules/refund-payment-
6
6
  const payment_detail_1 = require("../../../../../modules/payment-detail");
7
7
  const detect_cod_1 = require("../../../../../helpers/detect-cod");
8
8
  const refund_calculation_1 = require("../../../../../helpers/refund-calculation");
9
+ const refund_receive_guard_1 = require("../../../../../helpers/refund-receive-guard");
9
10
  /**
10
11
  * GET /admin/orders/:order_id/refund-context
11
12
  *
12
- * Aggregated read: return (for order) + refund_payment_mapping + payment_detail.
13
+ * Aggregated read: return (for order) + refund_payment_mapping + payment_detail
14
+ * + the checkout payment used on the order (needed for guest orders, which
15
+ * typically have no saved payment_detail).
16
+ * `can_process_refund` is true only when return status is `received` and the mapping is not already refunded.
13
17
  *
14
18
  * Payment detail resolution priority:
15
19
  * 1. refund_mapping.payment_id (explicitly set on the mapping) → source = "specified"
@@ -26,11 +30,12 @@ async function GET(req, res) {
26
30
  }
27
31
  try {
28
32
  const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
29
- const [isCod, orderModuleServiceResolved] = await Promise.all([
30
- (0, detect_cod_1.detectCodOrder)(orderId, query),
33
+ const [orderPayment, orderModuleServiceResolved] = await Promise.all([
34
+ (0, detect_cod_1.loadOrderPaymentMethod)(orderId, query),
31
35
  Promise.resolve(req.scope.resolve(utils_1.Modules.ORDER)),
32
36
  ]);
33
37
  const orderModuleService = orderModuleServiceResolved;
38
+ const isCod = orderPayment?.is_cod ?? false;
34
39
  const order = await orderModuleService.retrieveOrder(orderId).catch(() => null);
35
40
  if (!order) {
36
41
  res.status(404).json({
@@ -45,7 +50,10 @@ async function GET(req, res) {
45
50
  if (!firstReturn) {
46
51
  const empty = {
47
52
  is_cod: isCod,
53
+ order_payment: orderPayment,
48
54
  return_id: null,
55
+ return_status: null,
56
+ can_process_refund: false,
49
57
  refund_mapping: null,
50
58
  payment_detail: null,
51
59
  refund: null,
@@ -54,6 +62,7 @@ async function GET(req, res) {
54
62
  return;
55
63
  }
56
64
  const returnId = firstReturn.id;
65
+ const returnStatus = firstReturn.status ?? null;
57
66
  const orderCustomerId = order.customer_id;
58
67
  let refundMappingService;
59
68
  let paymentDetailService;
@@ -62,14 +71,24 @@ async function GET(req, res) {
62
71
  paymentDetailService = req.scope.resolve(payment_detail_1.PAYMENT_DETAIL_MODULE);
63
72
  }
64
73
  catch {
65
- const destLabel = (0, refund_calculation_1.resolveDestinationLabel)({ is_cod: isCod });
74
+ const destLabel = (0, refund_calculation_1.resolveDestinationLabel)({
75
+ is_cod: isCod,
76
+ original_method_label: orderPayment?.label,
77
+ });
66
78
  const refund = await (0, refund_calculation_1.loadRefundCalculation)(orderId, req.scope, {
67
79
  returnId,
68
80
  destinationLabel: destLabel,
69
81
  });
70
82
  const partial = {
71
83
  is_cod: isCod,
84
+ order_payment: orderPayment,
72
85
  return_id: returnId,
86
+ return_status: returnStatus,
87
+ can_process_refund: (0, refund_receive_guard_1.canProcessRefundForReturn)({
88
+ status: returnStatus,
89
+ has_mapping: false,
90
+ is_refunded: false,
91
+ }),
73
92
  refund_mapping: null,
74
93
  payment_detail: null,
75
94
  refund,
@@ -93,12 +112,15 @@ async function GET(req, res) {
93
112
  let paymentDetailBlock = null;
94
113
  // True when the customer explicitly chose a payment method (even if that detail was later deleted)
95
114
  const customerSpecified = !!(refundMapping?.payment_id);
96
- if (orderCustomerId) {
97
- if (customerSpecified) {
98
- // Customer picked a specific payment detail — resolve it; if deleted/missing keep null
99
- // so the widget shows a "payment method removed" warning instead of falling back to default
100
- try {
101
- const detail = await paymentDetailService.getPaymentDetail(refundMapping.payment_id, orderCustomerId);
115
+ if (customerSpecified) {
116
+ // Customer picked a specific payment detail — resolve it; if deleted/missing keep null
117
+ // so the widget shows a "payment method removed" warning instead of falling back to default
118
+ try {
119
+ const specifiedId = refundMapping.payment_id;
120
+ const detail = orderCustomerId
121
+ ? await paymentDetailService.getPaymentDetail(specifiedId, orderCustomerId)
122
+ : await paymentDetailService.getPaymentDetailById(specifiedId);
123
+ if (detail) {
102
124
  paymentDetailBlock = {
103
125
  id: detail.id,
104
126
  type: detail.type,
@@ -107,33 +129,50 @@ async function GET(req, res) {
107
129
  source: "specified",
108
130
  };
109
131
  }
110
- catch {
111
- // payment detail was deleted or is inaccessible — paymentDetailBlock stays null
112
- }
113
132
  }
114
- else {
115
- // No explicit choice — fall back to customer's default payment detail
133
+ catch {
134
+ // customer-scoped lookup can fail for guest orders whose payment_detail
135
+ // is not owned by order.customer_id — try id-only admin lookup
116
136
  try {
117
- const [defaultDetails] = await paymentDetailService.listPaymentDetailsByCustomer(orderCustomerId, { take: 1 });
118
- const defaultDetail = defaultDetails.find((d) => d.is_default) ?? defaultDetails[0];
119
- if (defaultDetail) {
137
+ const detail = await paymentDetailService.getPaymentDetailById(refundMapping.payment_id);
138
+ if (detail) {
120
139
  paymentDetailBlock = {
121
- id: defaultDetail.id,
122
- type: defaultDetail.type,
123
- detail_json: (defaultDetail.detail_json ?? {}),
124
- is_default: defaultDetail.is_default,
125
- source: "default",
140
+ id: detail.id,
141
+ type: detail.type,
142
+ detail_json: (detail.detail_json ?? {}),
143
+ is_default: detail.is_default,
144
+ source: "specified",
126
145
  };
127
146
  }
128
147
  }
129
148
  catch {
130
- // no default payment detail found
149
+ // payment detail was deleted or is inaccessible — paymentDetailBlock stays null
131
150
  }
132
151
  }
133
152
  }
153
+ else if (orderCustomerId) {
154
+ // No explicit choice — fall back to customer's default payment detail
155
+ try {
156
+ const [defaultDetails] = await paymentDetailService.listPaymentDetailsByCustomer(orderCustomerId, { take: 1 });
157
+ const defaultDetail = defaultDetails.find((d) => d.is_default) ?? defaultDetails[0];
158
+ if (defaultDetail) {
159
+ paymentDetailBlock = {
160
+ id: defaultDetail.id,
161
+ type: defaultDetail.type,
162
+ detail_json: (defaultDetail.detail_json ?? {}),
163
+ is_default: defaultDetail.is_default,
164
+ source: "default",
165
+ };
166
+ }
167
+ }
168
+ catch {
169
+ // no default payment detail found
170
+ }
171
+ }
134
172
  const destinationLabel = (0, refund_calculation_1.resolveDestinationLabel)({
135
173
  is_cod: isCod,
136
174
  payment_type: paymentDetailBlock?.type,
175
+ original_method_label: orderPayment?.label,
137
176
  });
138
177
  const refund = await (0, refund_calculation_1.loadRefundCalculation)(orderId, req.scope, {
139
178
  returnId,
@@ -141,7 +180,14 @@ async function GET(req, res) {
141
180
  });
142
181
  const payload = {
143
182
  is_cod: isCod,
183
+ order_payment: orderPayment,
144
184
  return_id: returnId,
185
+ return_status: returnStatus,
186
+ can_process_refund: (0, refund_receive_guard_1.canProcessRefundForReturn)({
187
+ status: returnStatus,
188
+ has_mapping: !!refundMappingBlock,
189
+ is_refunded: Boolean(refundMappingBlock?.is_refunded),
190
+ }),
145
191
  refund_mapping: refundMappingBlock,
146
192
  payment_detail: paymentDetailBlock,
147
193
  refund,
@@ -157,4 +203,4 @@ async function GET(req, res) {
157
203
  });
158
204
  }
159
205
  }
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9bb3JkZXJfaWRdL3JlZnVuZC1jb250ZXh0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0RBLGtCQThKQztBQWpORCxxREFBOEU7QUFFOUUsMEZBQTZGO0FBRTdGLDBFQUE2RTtBQUU3RSxrRUFBa0U7QUFDbEUsa0ZBSWtEO0FBK0JsRDs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CO0lBRW5CLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBa0IsQ0FBQTtJQUU3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQWEsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDNUUsTUFBTSxDQUFDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM1RCxJQUFBLDJCQUFjLEVBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztZQUM5QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFzQixlQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkUsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQTtRQUVyRCxNQUFNLEtBQUssR0FBRyxNQUFNLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0UsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsbUJBQW1CLENBQ2hFLEVBQUUsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQStELEVBQ3BGLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FDM0MsQ0FBQTtRQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzdELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQStCLENBQUE7UUFFNUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sS0FBSyxHQUEwQjtnQkFDbkMsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixNQUFNLEVBQUUsSUFBSTthQUNiLENBQUE7WUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFBO1FBQy9CLE1BQU0sZUFBZSxHQUFJLEtBQWtDLENBQUMsV0FBVyxDQUFBO1FBRXZFLElBQUksb0JBQXVELENBQUE7UUFDM0QsSUFBSSxvQkFBZ0QsQ0FBQTtRQUVwRCxJQUFJLENBQUM7WUFDSCxvQkFBb0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBb0Msc0RBQTZCLENBQUMsQ0FBQTtZQUMxRyxvQkFBb0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNkIsc0NBQXFCLENBQUMsQ0FBQTtRQUM3RixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsTUFBTSxTQUFTLEdBQUcsSUFBQSw0Q0FBdUIsRUFBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1lBQzVELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSwwQ0FBcUIsRUFBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDN0QsUUFBUTtnQkFDUixnQkFBZ0IsRUFBRSxTQUFTO2FBQzVCLENBQUMsQ0FBQTtZQUNGLE1BQU0sT0FBTyxHQUEwQjtnQkFDckMsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsTUFBTTthQUNQLENBQUE7WUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ2pCLE9BQU07UUFDUixDQUFDO1FBRUQsZ0ZBQWdGO1FBQ2hGLE1BQU0sYUFBYSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3hFLE1BQU0sa0JBQWtCLEdBQTRDLGFBQWE7WUFDL0UsQ0FBQyxDQUFDO2dCQUNFLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDcEIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVO2dCQUNwQyxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVc7Z0JBQ3RDLFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVztnQkFDdEMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO2dCQUM1QixPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87YUFDL0I7WUFDSCxDQUFDLENBQUMsSUFBSSxDQUFBO1FBRVIseUJBQXlCO1FBQ3pCLElBQUksa0JBQWtCLEdBQTRDLElBQUksQ0FBQTtRQUN0RSxtR0FBbUc7UUFDbkcsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFdkQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3RCLHVGQUF1RjtnQkFDdkYsNEZBQTRGO2dCQUM1RixJQUFJLENBQUM7b0JBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFjLENBQUMsVUFBVyxFQUFFLGVBQWUsQ0FBQyxDQUFBO29CQUN2RyxrQkFBa0IsR0FBRzt3QkFDbkIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO3dCQUNiLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTt3QkFDakIsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQTRCO3dCQUNsRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7d0JBQzdCLE1BQU0sRUFBRSxXQUFXO3FCQUNwQixDQUFBO2dCQUNILENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLGdGQUFnRjtnQkFDbEYsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixzRUFBc0U7Z0JBQ3RFLElBQUksQ0FBQztvQkFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyw0QkFBNEIsQ0FDOUUsZUFBZSxFQUNmLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUNaLENBQUE7b0JBQ0QsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDbkYsSUFBSSxhQUFhLEVBQUUsQ0FBQzt3QkFDbEIsa0JBQWtCLEdBQUc7NEJBQ25CLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRTs0QkFDcEIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJOzRCQUN4QixXQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBNEI7NEJBQ3pFLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVTs0QkFDcEMsTUFBTSxFQUFFLFNBQVM7eUJBQ2xCLENBQUE7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE1BQU0sQ0FBQztvQkFDUCxrQ0FBa0M7Z0JBQ3BDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSw0Q0FBdUIsRUFBQztZQUMvQyxNQUFNLEVBQUUsS0FBSztZQUNiLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxJQUFJO1NBQ3ZDLENBQUMsQ0FBQTtRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSwwQ0FBcUIsRUFBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRTtZQUM3RCxRQUFRO1lBQ1IsZ0JBQWdCO1NBQ2pCLENBQUMsQ0FBQTtRQUVGLE1BQU0sT0FBTyxHQUEwQjtZQUNyQyxNQUFNLEVBQUUsS0FBSztZQUNiLFNBQVMsRUFBRSxRQUFRO1lBQ25CLGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxNQUFNO1NBQ1AsQ0FBQTtRQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbkIsQ0FBQztJQUFDLE9BQU8sR0FBWSxFQUFFLENBQUM7UUFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO1FBQ3BFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSwrQkFBK0I7WUFDeEMsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDIn0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9bb3JkZXJfaWRdL3JlZnVuZC1jb250ZXh0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBOERBLGtCQXlNQztBQXRRRCxxREFBOEU7QUFFOUUsMEZBQTZGO0FBRTdGLDBFQUE2RTtBQUU3RSxrRUFHMEM7QUFDMUMsa0ZBSWtEO0FBQ2xELHNGQUF1RjtBQWtDdkY7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQWtCLENBQUE7SUFFN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixJQUFJLEVBQUUsY0FBYztTQUNyQixDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFhLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzVFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsMEJBQTBCLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDbkUsSUFBQSxtQ0FBc0IsRUFBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXNCLGVBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN2RSxDQUFDLENBQUE7UUFDRixNQUFNLGtCQUFrQixHQUFHLDBCQUEwQixDQUFBO1FBQ3JELE1BQU0sS0FBSyxHQUFHLFlBQVksRUFB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
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST = POST;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const refund_payment_mapping_1 = require("../../../../../modules/refund-payment-mapping");
6
+ const refund_receive_guard_1 = require("../../../../../helpers/refund-receive-guard");
6
7
  /**
7
8
  * POST /admin/refund-payment-mapping/:return_id/mark-refunded
8
9
  * Admin-only: set is_refunded = true for the mapping. Idempotent.
10
+ * Rejected with 400 NOT_ALLOWED while the return is still unreceived.
9
11
  */
10
12
  async function POST(req, res) {
11
13
  const returnId = req.params.return_id;
@@ -18,6 +20,34 @@ async function POST(req, res) {
18
20
  }
19
21
  try {
20
22
  const mappingService = req.scope.resolve(refund_payment_mapping_1.REFUND_PAYMENT_MAPPING_MODULE);
23
+ const existing = await mappingService.getByReturnId(returnId);
24
+ if (!existing) {
25
+ res.status(404).json({
26
+ message: "Refund payment mapping not found for this return",
27
+ type: "NOT_FOUND",
28
+ });
29
+ return;
30
+ }
31
+ if (existing.is_refunded) {
32
+ res.status(200).json({
33
+ refund_payment_mapping: existing,
34
+ is_refunded: existing.is_refunded,
35
+ });
36
+ return;
37
+ }
38
+ const orderModule = req.scope.resolve(utils_1.Modules.ORDER);
39
+ const ret = await orderModule.retrieveReturn(returnId).catch(() => null);
40
+ if (!ret) {
41
+ res.status(404).json({
42
+ message: "Return not found",
43
+ type: "NOT_FOUND",
44
+ });
45
+ return;
46
+ }
47
+ (0, refund_receive_guard_1.assertReturnReceivedForRefund)({
48
+ id: ret.id,
49
+ status: ret.status,
50
+ });
21
51
  const updated = await mappingService.markRefunded(returnId);
22
52
  res.status(200).json({
23
53
  refund_payment_mapping: updated,
@@ -34,6 +64,13 @@ async function POST(req, res) {
34
64
  });
35
65
  return;
36
66
  }
67
+ if (type === utils_1.MedusaError.Types.NOT_ALLOWED) {
68
+ res.status(400).json({
69
+ message: msg,
70
+ type: "NOT_ALLOWED",
71
+ });
72
+ return;
73
+ }
37
74
  res.status(500).json({
38
75
  message: "Failed to mark refund payment mapping as refunded",
39
76
  error: msg,
@@ -41,4 +78,4 @@ async function POST(req, res) {
41
78
  });
42
79
  }
43
80
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JlZnVuZC1wYXltZW50LW1hcHBpbmcvW3JldHVybl9pZF0vbWFyay1yZWZ1bmRlZC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLG9CQXVDQztBQS9DRCxxREFBdUQ7QUFDdkQsMEZBQTZGO0FBRzdGOzs7R0FHRztBQUNJLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQWtCLEVBQ2xCLEdBQW1CO0lBRW5CLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBbUIsQ0FBQTtJQUUvQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQW9DLHNEQUE2QixDQUFDLENBQUE7UUFDMUcsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzNELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLHNCQUFzQixFQUFFLE9BQU87WUFDL0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1NBQ2pDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUNoRSxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFFLEdBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFFekcsSUFBSSxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxrREFBa0Q7Z0JBQzNELElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLG1EQUFtRDtZQUM1RCxLQUFLLEVBQUUsR0FBRztZQUNWLElBQUksRUFBRSxnQkFBZ0I7U0FDdkIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JlZnVuZC1wYXltZW50LW1hcHBpbmcvW3JldHVybl9pZF0vbWFyay1yZWZ1bmRlZC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLG9CQTZFQztBQXZGRCxxREFBZ0U7QUFDaEUsMEZBQTZGO0FBRTdGLHNGQUEyRjtBQUUzRjs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFtQixDQUFBO0lBRS9DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBb0Msc0RBQTZCLENBQUMsQ0FBQTtRQUMxRyxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDN0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxrREFBa0Q7Z0JBQzNELElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLHNCQUFzQixFQUFFLFFBQVE7Z0JBQ2hDLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVzthQUNsQyxDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFzQixlQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekUsTUFBTSxHQUFHLEdBQUcsTUFBTSxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4RSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsSUFBSSxFQUFFLFdBQVc7YUFDbEIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFDRCxJQUFBLG9EQUE2QixFQUFDO1lBQzVCLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNWLE1BQU0sRUFBRyxHQUEyQixDQUFDLE1BQU07U0FDNUMsQ0FBQyxDQUFBO1FBRUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzNELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLHNCQUFzQixFQUFFLE9BQU87WUFDL0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1NBQ2pDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUNoRSxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFFLEdBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFFekcsSUFBSSxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxrREFBa0Q7Z0JBQzNELElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxHQUFHO2dCQUNaLElBQUksRUFBRSxhQUFhO2FBQ3BCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLG1EQUFtRDtZQUM1RCxLQUFLLEVBQUUsR0FBRztZQUNWLElBQUksRUFBRSxnQkFBZ0I7U0FDdkIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
@@ -4,6 +4,7 @@ exports.GET = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const returns_1 = require("../../../../helpers/returns");
6
6
  const refund_calculation_1 = require("../../../../helpers/refund-calculation");
7
+ const detect_cod_1 = require("../../../../helpers/detect-cod");
7
8
  const GET = async (req, res) => {
8
9
  const { id } = req.params;
9
10
  if (!id) {
@@ -24,6 +25,7 @@ const GET = async (req, res) => {
24
25
  const returnData = returnOrder;
25
26
  const orderId = returnData.order_id;
26
27
  let order = null;
28
+ let orderPayment = null;
27
29
  if (orderId) {
28
30
  try {
29
31
  order = await orderModuleService.retrieveOrder(orderId, {
@@ -33,6 +35,13 @@ const GET = async (req, res) => {
33
35
  catch {
34
36
  // Order may be deleted or from another tenant/DB
35
37
  }
38
+ try {
39
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
40
+ orderPayment = await (0, detect_cod_1.loadOrderPaymentMethod)(orderId, query);
41
+ }
42
+ catch {
43
+ orderPayment = null;
44
+ }
36
45
  }
37
46
  const orderData = order;
38
47
  const items = (0, returns_1.normalizeReturnItemsForDashboard)(returnData.return_items ?? returnData.items);
@@ -63,6 +72,7 @@ const GET = async (req, res) => {
63
72
  shipping_address: orderData.shipping_address,
64
73
  billing_address: orderData.billing_address,
65
74
  items: orderData.items,
75
+ order_payment: orderPayment,
66
76
  }
67
77
  : null,
68
78
  },
@@ -78,4 +88,4 @@ const GET = async (req, res) => {
78
88
  }
79
89
  };
80
90
  exports.GET = GET;
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldHVybi9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFtRDtBQUVuRCx5REFBNkc7QUFDN0csK0VBQThFO0FBRXZFLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUE7UUFDMUQsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFzQixlQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFaEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxrQkFBa0I7YUFDekMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7YUFDaEUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQjthQUMvQyxDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLFdBY2xCLENBQUE7UUFFRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsUUFBUSxD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
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldHVybi9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUE4RTtBQUU5RSx5REFBNkc7QUFDN0csK0VBQThFO0FBQzlFLCtEQUF1RTtBQUVoRSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxDQUFBO1FBQzFELE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBc0IsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRWhGLE1BQU0sV0FBVyxHQUFHLE1BQU0sa0JBQWtCO2FBQ3pDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2FBQ2hFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0I7YUFDL0MsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxXQWNsQixDQUFBO1FBRUQsTUFBTSxPQUFPLEdBQUcsVUFB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
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blockRefundUntilReturnReceived = blockRefundUntilReturnReceived;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const refund_receive_guard_1 = require("../../helpers/refund-receive-guard");
6
+ function paymentIdFromRequest(req) {
7
+ const raw = req.params?.id;
8
+ const id = typeof raw === "string" ? raw.trim() : "";
9
+ return id || undefined;
10
+ }
11
+ async function resolveOrderIdForPayment(paymentId, req) {
12
+ const paymentModule = req.scope.resolve(utils_1.Modules.PAYMENT);
13
+ const payments = await paymentModule.listPayments({ id: [paymentId] }, { relations: ["payment_session"], take: 1 });
14
+ const paymentList = Array.isArray(payments) ? payments : [];
15
+ const paymentRow = paymentList[0];
16
+ if (!paymentRow) {
17
+ return null;
18
+ }
19
+ const sessionObj = paymentRow.payment_session;
20
+ let collectionId = paymentRow.payment_collection_id?.trim() ||
21
+ sessionObj?.payment_collection_id?.trim() ||
22
+ null;
23
+ if (!collectionId && typeof paymentRow.payment_session_id === "string") {
24
+ const sessionId = paymentRow.payment_session_id.trim();
25
+ if (sessionId) {
26
+ const sessions = await paymentModule.listPaymentSessions({ id: [sessionId] }).catch(() => []);
27
+ const sessionList = Array.isArray(sessions) ? sessions : [];
28
+ const session = sessionList[0];
29
+ if (session?.payment_collection_id) {
30
+ collectionId = session.payment_collection_id;
31
+ }
32
+ }
33
+ }
34
+ if (!collectionId) {
35
+ return null;
36
+ }
37
+ const remoteQuery = req.scope.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
38
+ const pcQuery = (0, utils_1.remoteQueryObjectFromString)({
39
+ entryPoint: "payment_collection",
40
+ fields: ["id", "order.id"],
41
+ filters: { id: [collectionId] },
42
+ });
43
+ const pcRows = await remoteQuery(pcQuery);
44
+ const pcList = Array.isArray(pcRows) ? pcRows : pcRows ? [pcRows] : [];
45
+ const firstPc = pcList[0];
46
+ let orderId = firstPc?.order?.id ?? null;
47
+ if (!orderId) {
48
+ const orderQuery = (0, utils_1.remoteQueryObjectFromString)({
49
+ entryPoint: "order",
50
+ fields: ["id", "payment_collections.id"],
51
+ filters: { payment_collections: { id: [collectionId] } },
52
+ });
53
+ const orderRows = await remoteQuery(orderQuery).catch(() => []);
54
+ const orderList = Array.isArray(orderRows) ? orderRows : orderRows ? [orderRows] : [];
55
+ const firstOrder = orderList[0];
56
+ orderId = firstOrder?.id ?? null;
57
+ }
58
+ return orderId;
59
+ }
60
+ /**
61
+ * Block Medusa core POST /admin/payments/:id/refund while any return on the order
62
+ * is still unreceived. Receive-and-refund inside core workflows is not HTTP and is unaffected.
63
+ */
64
+ async function blockRefundUntilReturnReceived(req, res, next) {
65
+ const paymentId = paymentIdFromRequest(req);
66
+ if (!paymentId) {
67
+ return next();
68
+ }
69
+ try {
70
+ const orderId = await resolveOrderIdForPayment(paymentId, req);
71
+ if (!orderId) {
72
+ return next();
73
+ }
74
+ const orderModule = req.scope.resolve(utils_1.Modules.ORDER);
75
+ const returns = await orderModule.listReturns({ order_id: orderId }, { take: 100 });
76
+ const returnList = Array.isArray(returns) ? returns : [];
77
+ const blocking = (0, refund_receive_guard_1.getUnreceivedReturnBlockingRefund)(returnList.map((row) => ({
78
+ id: row.id,
79
+ status: row.status,
80
+ })));
81
+ if (!blocking) {
82
+ return next();
83
+ }
84
+ res.status(400).json({
85
+ message: (0, refund_receive_guard_1.refundBlockedByReturnMessage)(blocking.status ?? "requested"),
86
+ type: "NOT_ALLOWED",
87
+ });
88
+ }
89
+ catch (err) {
90
+ const message = err instanceof Error ? err.message : "Failed to validate refund against return status";
91
+ res.status(500).json({
92
+ message,
93
+ type: "INTERNAL_ERROR",
94
+ });
95
+ }
96
+ }
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcmVmdW5kLXVudGlsLXJldHVybi1yZWNlaXZlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvbWlkZGxld2FyZXMvYmxvY2stcmVmdW5kLXVudGlsLXJldHVybi1yZWNlaXZlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJGQSx3RUE0Q0M7QUE3SEQscURBQTJHO0FBQzNHLDZFQUcyQztBQUUzQyxTQUFTLG9CQUFvQixDQUFDLEdBQWtCO0lBQzlDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFBO0lBQzFCLE1BQU0sRUFBRSxHQUFHLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDcEQsT0FBTyxFQUFFLElBQUksU0FBUyxDQUFBO0FBQ3hCLENBQUM7QUFFRCxLQUFLLFVBQVUsd0JBQXdCLENBQ3JDLFNBQWlCLEVBQ2pCLEdBQWtCO0lBRWxCLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUF3QixlQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDL0UsTUFBTSxRQUFRLEdBQUcsTUFBTSxhQUFhLENBQUMsWUFBWSxDQUMvQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQ25CLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQzVDLENBQUE7SUFDRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMzRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFtRCxDQUFBO0lBQ25GLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FB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
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const http_1 = require("@medusajs/framework/http");
4
+ const block_refund_until_return_received_1 = require("./middlewares/block-refund-until-return-received");
4
5
  const validators_1 = require("./store/returns/validators");
5
6
  const cancel_order_1 = require("./store/validators/cancel-order");
6
7
  exports.default = (0, http_1.defineMiddlewares)({
7
8
  routes: [
9
+ {
10
+ matcher: "/admin/payments/:id/refund",
11
+ method: "POST",
12
+ middlewares: [block_refund_until_return_received_1.blockRefundUntilReturnReceived],
13
+ },
8
14
  {
9
15
  matcher: "/store/returns",
10
16
  method: "POST",
@@ -22,4 +28,4 @@ exports.default = (0, http_1.defineMiddlewares)({
22
28
  },
23
29
  ],
24
30
  });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBR2lDO0FBQ2pDLDJEQUFvRTtBQUNwRSxrRUFBNEU7QUFFNUUsa0JBQWUsSUFBQSx3QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTjtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLG9DQUF1QixDQUFDLENBQUM7U0FDakU7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLHlDQUEwQixDQUFDLENBQUM7U0FDcEU7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLHlDQUEwQixDQUFDLENBQUM7U0FDcEU7S0FDRjtDQUNGLENBQUMsQ0FBQSJ9
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBR2lDO0FBQ2pDLHlHQUFpRztBQUNqRywyREFBb0U7QUFDcEUsa0VBQTRFO0FBRTVFLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsNEJBQTRCO1lBQ3JDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLENBQUMsbUVBQThCLENBQUM7U0FDOUM7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLG9DQUF1QixDQUFDLENBQUM7U0FDakU7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLHlDQUEwQixDQUFDLENBQUM7U0FDcEU7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLHlDQUEwQixDQUFDLENBQUM7U0FDcEU7S0FDRjtDQUNGLENBQUMsQ0FBQSJ9
@@ -1,13 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCodProviderId = isCodProviderId;
4
+ exports.formatPaymentProviderLabel = formatPaymentProviderLabel;
5
+ exports.loadOrderPaymentMethod = loadOrderPaymentMethod;
3
6
  exports.detectCodOrder = detectCodOrder;
4
7
  /**
5
- * Returns true if the order was placed using a cash-on-delivery payment provider.
6
- *
7
- * provider_id lives on the `payment` table. We first fetch the order's
8
- * payment_collection IDs, then query the payment entity directly.
8
+ * True when the Medusa payment provider is cash-on-delivery.
9
9
  */
10
- async function detectCodOrder(orderId, query) {
10
+ function isCodProviderId(providerId) {
11
+ const id = providerId.toLowerCase();
12
+ return id === "pp_system_default" || id.includes("cod") || id.includes("cash");
13
+ }
14
+ /**
15
+ * Human-readable label for a Medusa payment provider_id (e.g. pp_razorpay_razorpay).
16
+ */
17
+ function formatPaymentProviderLabel(providerId) {
18
+ const raw = providerId.trim();
19
+ if (!raw) {
20
+ return "Unknown";
21
+ }
22
+ if (isCodProviderId(raw)) {
23
+ return "Cash on Delivery";
24
+ }
25
+ const withoutPrefix = raw.replace(/^pp_/i, "");
26
+ const parts = withoutPrefix.split(/[_-]+/).filter(Boolean);
27
+ const unique = [];
28
+ for (const part of parts) {
29
+ const lower = part.toLowerCase();
30
+ if (!unique.includes(lower)) {
31
+ unique.push(lower);
32
+ }
33
+ }
34
+ const pretty = unique
35
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
36
+ .join(" ");
37
+ if (pretty.toLowerCase() === "paypal") {
38
+ return "PayPal";
39
+ }
40
+ return pretty || raw;
41
+ }
42
+ function toProviderRows(rows) {
43
+ return Array.isArray(rows) ? rows : [];
44
+ }
45
+ /**
46
+ * Load the checkout payment used on an order (payment row, then payment_session).
47
+ */
48
+ async function loadOrderPaymentMethod(orderId, query) {
11
49
  try {
12
50
  const { data: orderData } = await query.graph({
13
51
  entity: "order",
@@ -16,20 +54,50 @@ async function detectCodOrder(orderId, query) {
16
54
  });
17
55
  const collections = (orderData?.[0]?.payment_collections ?? []);
18
56
  const collectionIds = collections.map((pc) => pc.id).filter(Boolean);
19
- if (!collectionIds.length)
20
- return false;
57
+ if (!collectionIds.length) {
58
+ return null;
59
+ }
21
60
  const { data: payments } = await query.graph({
22
61
  entity: "payment",
23
62
  fields: ["id", "provider_id"],
24
63
  filters: { payment_collection_id: collectionIds },
25
64
  });
26
- return payments.some((p) => {
27
- const id = (p.provider_id ?? "").toLowerCase();
28
- return id === "pp_system_default" || id.includes("cod") || id.includes("cash");
29
- });
65
+ let rows = toProviderRows(payments).filter((row) => (row.provider_id ?? "").trim().length > 0);
66
+ if (!rows.length) {
67
+ const { data: sessions } = await query.graph({
68
+ entity: "payment_session",
69
+ fields: ["id", "provider_id"],
70
+ filters: { payment_collection_id: collectionIds },
71
+ });
72
+ rows = toProviderRows(sessions).filter((row) => (row.provider_id ?? "").trim().length > 0);
73
+ }
74
+ if (!rows.length) {
75
+ return null;
76
+ }
77
+ const primary = rows.find((row) => !isCodProviderId(row.provider_id ?? "")) ?? rows[0];
78
+ const providerId = (primary?.provider_id ?? "").trim();
79
+ if (!providerId) {
80
+ return null;
81
+ }
82
+ return {
83
+ payment_id: typeof primary?.id === "string" ? primary.id : null,
84
+ provider_id: providerId,
85
+ label: formatPaymentProviderLabel(providerId),
86
+ is_cod: isCodProviderId(providerId),
87
+ };
30
88
  }
31
89
  catch {
32
- return false;
90
+ return null;
33
91
  }
34
92
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0LWNvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oZWxwZXJzL2RldGVjdC1jb2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFjQSx3Q0F5QkM7QUEvQkQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFDLE9BQWUsRUFBRSxLQUFpQjtJQUNyRSxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUM1QyxNQUFNLEVBQUUsT0FBTztZQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSx3QkFBd0IsQ0FBQztZQUN4QyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO1NBQ3pCLENBQUMsQ0FBQTtRQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLElBQUksRUFBRSxDQUEwQixDQUFBO1FBQ3hGLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDcEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFdkMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDM0MsTUFBTSxFQUFFLFNBQVM7WUFDakIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQztZQUM3QixPQUFPLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUU7U0FDbEQsQ0FBQyxDQUFBO1FBRUYsT0FBUSxRQUE0QyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzlELE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUM5QyxPQUFPLEVBQUUsS0FBSyxtQkFBbUIsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEYsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0FBQ0gsQ0FBQyJ9
93
+ /**
94
+ * Returns true if the order was placed using a cash-on-delivery payment provider.
95
+ *
96
+ * provider_id lives on the `payment` table. We first fetch the order's
97
+ * payment_collection IDs, then query the payment entity directly.
98
+ */
99
+ async function detectCodOrder(orderId, query) {
100
+ const method = await loadOrderPaymentMethod(orderId, query);
101
+ return method?.is_cod ?? false;
102
+ }
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0LWNvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oZWxwZXJzL2RldGVjdC1jb2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1QkEsMENBR0M7QUFLRCxnRUF3QkM7QUFTRCx3REFzREM7QUFRRCx3Q0FHQztBQTdHRDs7R0FFRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxVQUFrQjtJQUNoRCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDbkMsT0FBTyxFQUFFLEtBQUssbUJBQW1CLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ2hGLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDBCQUEwQixDQUFDLFVBQWtCO0lBQzNELE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBQ0QsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLGtCQUFrQixDQUFBO0lBQzNCLENBQUM7SUFDRCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUM5QyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMxRCxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUE7SUFDM0IsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FB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
@@ -19,4 +19,5 @@ __exportStar(require("./order-exchange-data"), exports);
19
19
  __exportStar(require("./return-exchange-guard"), exports);
20
20
  __exportStar(require("./order-line-presentation"), exports);
21
21
  __exportStar(require("./refund-calculation"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLHdEQUFxQztBQUNyQywwREFBdUM7QUFDdkMsNERBQXlDO0FBQ3pDLHVEQUFvQyJ9
22
+ __exportStar(require("./refund-receive-guard"), exports);
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLHdEQUFxQztBQUNyQywwREFBdUM7QUFDdkMsNERBQXlDO0FBQ3pDLHVEQUFvQztBQUNwQyx5REFBc0MifQ==