order-management 0.0.91 → 0.0.93

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.
Files changed (34) hide show
  1. package/.medusa/server/src/admin/index.js +154 -103
  2. package/.medusa/server/src/admin/index.mjs +154 -103
  3. package/.medusa/server/src/api/admin/orders/[order_id]/refund-context/route.js +203 -27
  4. package/.medusa/server/src/api/admin/payment-transactions/validators.js +2 -2
  5. package/.medusa/server/src/api/admin/refund-payment-mapping/[return_id]/mark-refunded/route.js +38 -1
  6. package/.medusa/server/src/api/admin/refund-payment-mapping/validators.js +2 -2
  7. package/.medusa/server/src/api/admin/refunds/validators.js +2 -2
  8. package/.medusa/server/src/api/admin/return/[id]/reject/route.js +3 -3
  9. package/.medusa/server/src/api/admin/return/[id]/route.js +20 -5
  10. package/.medusa/server/src/api/admin/return/route.js +4 -10
  11. package/.medusa/server/src/api/admin/return/validators.js +2 -2
  12. package/.medusa/server/src/api/admin/swaps/validators.js +3 -3
  13. package/.medusa/server/src/api/middlewares/block-refund-until-return-received.js +97 -0
  14. package/.medusa/server/src/api/middlewares.js +7 -1
  15. package/.medusa/server/src/api/store/guest-orders/[id]/payment-details/route.js +161 -0
  16. package/.medusa/server/src/api/store/guest-orders/[id]/returns/[return_id]/refund-payment/route.js +132 -0
  17. package/.medusa/server/src/api/store/guest-orders/[id]/returns/route.js +132 -12
  18. package/.medusa/server/src/api/store/guest-orders/[id]/swaps/route.js +2 -2
  19. package/.medusa/server/src/api/store/orders/[order_id]/refund-payment-mappings/route.js +9 -4
  20. package/.medusa/server/src/api/store/payment-details/validators.js +63 -31
  21. package/.medusa/server/src/api/store/returns/[id]/route.js +16 -9
  22. package/.medusa/server/src/api/store/returns/route.js +39 -15
  23. package/.medusa/server/src/api/store/returns/validators.js +15 -3
  24. package/.medusa/server/src/api/store/swaps/route.js +2 -2
  25. package/.medusa/server/src/api/store/validators/cancel-order.js +2 -2
  26. package/.medusa/server/src/helpers/detect-cod.js +81 -13
  27. package/.medusa/server/src/helpers/index.js +2 -1
  28. package/.medusa/server/src/helpers/refund-calculation.js +3 -2
  29. package/.medusa/server/src/helpers/refund-receive-guard.js +48 -0
  30. package/.medusa/server/src/helpers/resolve-return-refund-payment.js +66 -0
  31. package/.medusa/server/src/helpers/returns.js +140 -2
  32. package/.medusa/server/src/modules/payment-detail/service.js +9 -1
  33. package/README.md +52 -10
  34. package/package.json +17 -17
@@ -1,5 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RETURN_SHIPPING_GRAPH_FIELDS = exports.RETURN_DETAIL_GRAPH_FIELDS = exports.RETURN_LIST_GRAPH_FIELDS = void 0;
4
+ exports.sortReturnsByCreatedAtDesc = sortReturnsByCreatedAtDesc;
5
+ exports.loadReturnsViaQuery = loadReturnsViaQuery;
6
+ exports.loadReturnByIdViaQuery = loadReturnByIdViaQuery;
7
+ exports.attachReturnShippingMethods = attachReturnShippingMethods;
3
8
  exports.checkDeliveryReturnWindow = checkDeliveryReturnWindow;
4
9
  exports.getOrderReturnData = getOrderReturnData;
5
10
  exports.validateReturnWindow = validateReturnWindow;
@@ -12,17 +17,150 @@ exports.enrichStoreReturnWithItemReasons = enrichStoreReturnWithItemReasons;
12
17
  exports.normalizeOrderModuleReturnForDashboard = normalizeOrderModuleReturnForDashboard;
13
18
  const utils_1 = require("@medusajs/framework/utils");
14
19
  const DEFAULT_RETURN_EXCHANGE_WINDOW_DAYS = 7;
20
+ function isRecord(value) {
21
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
22
+ }
23
+ function graphRows(data) {
24
+ const rows = Array.isArray(data) ? data : data != null ? [data] : [];
25
+ return rows.filter(isRecord);
26
+ }
27
+ /**
28
+ * Scalar + item fields only. Do not request `shipping_methods` here:
29
+ * Medusa 2.21 ReturnRepository.loadShippingAdjustments throws
30
+ * `Cannot read properties of undefined (reading 'isInitialized')`
31
+ * when an `order_shipping` row has a missing nested `shipping_method`.
32
+ */
33
+ exports.RETURN_LIST_GRAPH_FIELDS = [
34
+ "id",
35
+ "order_id",
36
+ "status",
37
+ "display_id",
38
+ "created_at",
39
+ "updated_at",
40
+ "canceled_at",
41
+ "requested_at",
42
+ "received_at",
43
+ "refund_amount",
44
+ "created_by",
45
+ "location_id",
46
+ "metadata",
47
+ "exchange_id",
48
+ "items.*",
49
+ "items.item_id",
50
+ "items.quantity",
51
+ "items.reason_id",
52
+ "items.note",
53
+ ];
54
+ exports.RETURN_DETAIL_GRAPH_FIELDS = [
55
+ ...exports.RETURN_LIST_GRAPH_FIELDS,
56
+ "items.reason.*",
57
+ ];
58
+ exports.RETURN_SHIPPING_GRAPH_FIELDS = [
59
+ "id",
60
+ "shipping_methods.*",
61
+ "shipping_methods.amount",
62
+ "shipping_methods.total",
63
+ ];
64
+ const RETURN_QUERY_PAGE_SIZE = 200;
65
+ const RETURN_QUERY_MAX = 5000;
66
+ function sortReturnsByCreatedAtDesc(returns) {
67
+ return [...returns].sort((a, b) => {
68
+ const aTime = new Date(String(a.created_at ?? 0)).getTime();
69
+ const bTime = new Date(String(b.created_at ?? 0)).getTime();
70
+ const aSafe = Number.isNaN(aTime) ? 0 : aTime;
71
+ const bSafe = Number.isNaN(bTime) ? 0 : bTime;
72
+ return bSafe - aSafe;
73
+ });
74
+ }
75
+ /**
76
+ * List returns via Query Graph instead of OrderModule.listAndCountReturns.
77
+ * Avoids the 2.21 shipping-adjustment crash on orphan shipping_method links.
78
+ */
79
+ async function loadReturnsViaQuery(container, filters, fields = exports.RETURN_LIST_GRAPH_FIELDS) {
80
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
81
+ const out = [];
82
+ let skip = 0;
83
+ const graphFilters = filters && Object.keys(filters).length > 0 ? filters : undefined;
84
+ for (;;) {
85
+ const result = await query.graph({
86
+ entity: "return",
87
+ fields: [...fields],
88
+ filters: graphFilters ?? {},
89
+ pagination: { skip, take: RETURN_QUERY_PAGE_SIZE },
90
+ });
91
+ const page = graphRows(result?.data);
92
+ out.push(...page);
93
+ if (page.length < RETURN_QUERY_PAGE_SIZE) {
94
+ break;
95
+ }
96
+ skip += RETURN_QUERY_PAGE_SIZE;
97
+ if (skip >= RETURN_QUERY_MAX) {
98
+ break;
99
+ }
100
+ }
101
+ return sortReturnsByCreatedAtDesc(out);
102
+ }
103
+ async function loadReturnByIdViaQuery(container, id, fields = exports.RETURN_DETAIL_GRAPH_FIELDS) {
104
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
105
+ const result = await query
106
+ .graph({
107
+ entity: "return",
108
+ fields: [...fields],
109
+ filters: { id },
110
+ })
111
+ .catch(() => ({ data: [] }));
112
+ return graphRows(result?.data)[0] ?? null;
113
+ }
114
+ /**
115
+ * Best-effort shipping methods for refund charges. Isolated so a 2.21
116
+ * shipping_method hydrate failure cannot take down the returns list.
117
+ */
118
+ async function attachReturnShippingMethods(container, returns) {
119
+ const ids = returns
120
+ .map((row) => row.id)
121
+ .filter((id) => typeof id === "string" && id.length > 0);
122
+ if (ids.length === 0) {
123
+ return returns;
124
+ }
125
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
126
+ try {
127
+ const result = await query.graph({
128
+ entity: "return",
129
+ fields: [...exports.RETURN_SHIPPING_GRAPH_FIELDS],
130
+ filters: { id: ids },
131
+ });
132
+ const byId = new Map();
133
+ for (const row of graphRows(result?.data)) {
134
+ if (typeof row.id === "string" && Array.isArray(row.shipping_methods)) {
135
+ byId.set(row.id, row.shipping_methods);
136
+ }
137
+ }
138
+ return returns.map((row) => ({
139
+ ...row,
140
+ shipping_methods: typeof row.id === "string" ? (byId.get(row.id) ?? []) : [],
141
+ }));
142
+ }
143
+ catch {
144
+ return returns.map((row) => ({
145
+ ...row,
146
+ shipping_methods: Array.isArray(row.shipping_methods)
147
+ ? row.shipping_methods
148
+ : [],
149
+ }));
150
+ }
151
+ }
15
152
  async function checkDeliveryReturnWindow(orderId, windowDays = DEFAULT_RETURN_EXCHANGE_WINDOW_DAYS, container, requestType = "return") {
16
153
  // Use remote query so `delivered_at` is explicitly fetched —
17
154
  // retrieveOrder with relations does not select it by default.
18
155
  const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
19
- const { data: orders } = await query
156
+ const result = await query
20
157
  .graph({
21
158
  entity: "order",
22
159
  fields: ["id", "fulfillments.id", "fulfillments.delivered_at"],
23
160
  filters: { id: orderId },
24
161
  })
25
162
  .catch(() => ({ data: [] }));
163
+ const orders = graphRows(result?.data);
26
164
  if (!orders.length) {
27
165
  return { allowed: true };
28
166
  }
@@ -239,4 +377,4 @@ function normalizeOrderModuleReturnForDashboard(r) {
239
377
  items,
240
378
  };
241
379
  }
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oZWxwZXJzL3JldHVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEwQkEsOERBNkRDO0FBS0QsZ0RBNENDO0FBS0Qsb0RBU0M7QUFLRCxzREFxQkM7QUFLRCxnREFLQztBQUtELDBDQUVDO0FBUUQsNEVBNkJDO0FBbUJELHNFQUlDO0FBc0NELDRFQW1DQztBQUVELHdGQXNDQztBQTdXRCxxREFBOEU7QUFFOUUsTUFBTSxtQ0FBbUMsR0FBRyxDQUFDLENBQUE7QUF1QnRDLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsT0FBZSxFQUNmLGFBQXFCLG1DQUFtQyxFQUN4RCxTQUF3QixFQUN4QixjQUFxQyxRQUFRO0lBRTdDLDZEQUE2RDtJQUM3RCw4REFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYSxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUU1RSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sS0FBSztTQUNqQyxLQUFLLENBQUM7UUFDTCxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSwyQkFBMkIsQ0FBQztRQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO0tBQ3pCLENBQUM7U0FDRCxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFBO0lBQzFCLENBQUM7SUFHRCxNQUFNLFlBQVksR0FBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBaUMsSUFBSSxFQUFFLENBQUE7SUFFdkUsSUFB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
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oZWxwZXJzL3JldHVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBK0VBLGdFQVVDO0FBTUQsa0RBOEJDO0FBRUQsd0RBY0M7QUFNRCxrRUFxQ0M7QUFFRCw4REE4REM7QUFLRCxnREE0Q0M7QUFLRCxvREFTQztBQUtELHNEQXFCQztBQUtELGdEQUtDO0FBS0QsMENBRUM7QUFRRCw0RUE2QkM7QUFtQkQsc0VBSUM7QUFzQ0QsNEVBbUNDO0FBRUQsd0ZBc0NDO0FBOWdCRCxxREFBOEU7QUFFOUUsTUFBTSxtQ0FBbUMsR0FBRyxDQUFDLENBQUE7QUF3QjdDLFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsT0FBTyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUM3RSxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBYTtJQUM5QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNwRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDOUIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRztJQUN0QyxJQUFJO0lBQ0osVUFBVTtJQUNWLFFBQVE7SUFDUixZQUFZO0lBQ1osWUFBWTtJQUNaLFlBQVk7SUFDWixhQUFhO0lBQ2IsY0FBYztJQUNkLGFBQWE7SUFDYixlQUFlO0lBQ2YsWUFBWTtJQUNaLGFBQWE7SUFDYixVQUFVO0lBQ1YsYUFBYTtJQUNiLFNBQVM7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
@@ -252,6 +252,14 @@ class PaymentDetailModuleService extends (0, utils_1.MedusaService)({
252
252
  }
253
253
  return normalized;
254
254
  }
255
+ /**
256
+ * Admin lookup by id only. Guest returns may store a payment_id whose
257
+ * customer_id does not match order.customer_id.
258
+ */
259
+ async getPaymentDetailById(id) {
260
+ const existing = await this.retrievePaymentDetail(id).catch(() => null);
261
+ return existing ? this.normalizePaymentDetail(existing) : null;
262
+ }
255
263
  }
256
264
  exports.default = PaymentDetailModuleService;
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3BheW1lbnQtZGV0YWlsL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBc0U7QUFFdEUsd0JBQXlDO0FBQ3pDLDZFQUFtRDtBQU9uRCw2Q0FHcUI7QUFVckIsTUFBcUIsMEJBQTJCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQ3BFLGFBQWEsRUFBYix3QkFBYTtDQUNkLENBQUM7SUFHQSxZQUFZLFNBQStCO1FBQ3pDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUE7SUFDbkMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sd0JBQXFCLENBQUE7SUFDOUIsQ0FBQztJQUVTLE9BQU87UUFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFXcEIsQ0FBQTtRQUNELElBQUksT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMseURBQXlELENBQzFELENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUVTLHNCQUFzQixDQUFDLEdBQVk7UUFDM0MsSUFDRSxDQUFDLEdBQUc7WUFDSixPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUM7WUFDdkIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFDaEIsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtRQUNoRCxDQUFDO1FBQ0Qs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
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3BheW1lbnQtZGV0YWlsL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBc0U7QUFFdEUsd0JBQXlDO0FBQ3pDLDZFQUFtRDtBQU9uRCw2Q0FHcUI7QUFVckIsTUFBcUIsMEJBQTJCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQ3BFLGFBQWEsRUFBYix3QkFBYTtDQUNkLENBQUM7SUFHQSxZQUFZLFNBQStCO1FBQ3pDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUE7SUFDbkMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sd0JBQXFCLENBQUE7SUFDOUIsQ0FBQztJQUVTLE9BQU87UUFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFXcEIsQ0FBQTtRQUNELElBQUksT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMseURBQXlELENBQzFELENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUVTLHNCQUFzQixDQUFDLEdBQVk7UUFDM0MsSUFDRSxDQUFDLEdBQUc7WUFDSixPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUM7WUFDdkIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFDaEIsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtRQUNoRCxDQUFDO1FBQ0Qs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
package/README.md CHANGED
@@ -150,7 +150,9 @@ Most production values are expected to be supplied via plugin options in `medusa
150
150
  | GET | `/store/guest-orders/:id` | Guest JWT | Get guest order. |
151
151
  | POST | `/store/guest-orders/:id/cancel` | Guest JWT | Cancel guest order. |
152
152
  | POST | `/store/guest-orders/:id/reorder` | Guest JWT | Reorder guest order. |
153
- | POST | `/store/guest-orders/:id/returns` | Guest JWT | Create guest return. |
153
+ | POST | `/store/guest-orders/:id/returns` | Guest JWT | Create guest return (optional `refund_payment` / `refund_payment_id`). |
154
+ | GET/POST | `/store/guest-orders/:id/payment-details` | Guest JWT | List / create guest refund destinations. |
155
+ | PUT | `/store/guest-orders/:id/returns/:return_id/refund-payment` | Guest JWT | Link payment_detail to return mapping. |
154
156
  | GET | `/store/guest-orders/:id/swaps` | Guest JWT | List guest exchange requests. |
155
157
  | POST | `/store/guest-orders/:id/swaps` | Guest JWT | Create guest exchange request. |
156
158
  | GET | `/store/guest-orders/:id/swaps/:swap_id` | Guest JWT | Get guest exchange request. |
@@ -173,10 +175,10 @@ Most production values are expected to be supplied via plugin options in `medusa
173
175
  | GET | `/admin/payment-transactions/:id` | Admin JWT | Payment session details. |
174
176
  | GET | `/admin/refunds` | Admin JWT | List refunds. |
175
177
  | GET | `/admin/refunds/:id` | Admin JWT | Refund detail + computed summary. |
176
- | GET | `/admin/orders/:order_id/refund-context` | Admin JWT | Aggregated order refund context. |
178
+ | GET | `/admin/orders/:order_id/refund-context` | Admin JWT | Aggregated order refund context (`return_status`, `can_process_refund`). |
177
179
  | GET | `/admin/orders/:order_id/cancel-reason-mapping` | Admin JWT | Cancel reason mapping for order. |
178
180
  | PUT | `/admin/refund-payment-mapping/:return_id` | Admin JWT | Update `refund_mode`, `images`, `details`. |
179
- | POST | `/admin/refund-payment-mapping/:return_id/mark-refunded` | Admin JWT | Set `is_refunded=true`. |
181
+ | POST | `/admin/refund-payment-mapping/:return_id/mark-refunded` | Admin JWT | Set `is_refunded=true` (requires return `received`; 400 `NOT_ALLOWED` otherwise). |
180
182
 
181
183
  Important endpoint examples:
182
184
 
@@ -243,7 +245,7 @@ curl "http://localhost:9000/admin/orders/order_123/refund-context" \
243
245
  | Swaps routes | `/swaps`, `/swaps/:id` | Exchange listing/detail pages | Search, filters, reject/cancel exchange; uses `/admin/swaps*`. |
244
246
  | Payments routes | `/payments`, `/payments/:id` | Transaction list + detail pages | Filter transactions and inspect gateway payload. |
245
247
  | Refunds routes | `/refunds`, `/refunds/:id` | Refund list + detail pages | Filter by status/provider/date/amount; view computed refund context. |
246
- | `order-refund-context-widget` | `order.details.after` | Refund context panel | Refund calculation (product amount, return charge, processed final refund), edit refund mode/details/images, upload images, mark refunded. |
248
+ | `order-refund-context-widget` | `order.details.after` | Refund context panel | Order checkout payment method (including guest orders), refund calculation (product amount, return charge, processed final refund), edit refund mode/details/images, upload images, mark refunded. |
247
249
  | `order-gift-items-widget` | `order.details.side.after` | Gift item widget | Reads gift metadata and downloads generated gift card image. |
248
250
 
249
251
  ## Models & Entities
@@ -270,6 +272,7 @@ curl "http://localhost:9000/admin/orders/order_123/refund-context" \
270
272
  | Guest JWT endpoints return unauthorized | Invalid/expired token or `jwtSecret` mismatch | Re-run OTP verify and ensure same `jwtSecret` is used in runtime config. |
271
273
  | Return/exchange blocked with `RETURN_WINDOW_EXPIRED` | Delivery date outside configured window | Increase `returnValidInDays`/`exchangeValidInDays` or update storefront UX for expiry handling. |
272
274
  | Refund mapping routes fail | `refund-payment-mapping` module not registered/migrated | Register module and run migrations. |
275
+ | Guest return shows no payment method in Admin | Guest COD returns previously stored `payment_id=null` and guests could not create/link payment details | Upgrade this plugin. Pass `refund_payment` / `refund_payment_id` on guest return create, or use `POST /store/guest-orders/:id/payment-details` + `PUT .../returns/:return_id/refund-payment`. |
273
276
  | Cannot set default payment via create/update | API intentionally blocks `is_default` in request body | Use `POST /store/payment-details/:id/make-default`. |
274
277
  | No development stack traces in API errors | `NODE_ENV` not `development` | Set `NODE_ENV=development` locally when debugging. |
275
278
 
@@ -327,6 +330,7 @@ This plugin is compatible with Medusa v2 (e.g. `@medusajs/framework` and `@medus
327
330
  - **Medusa workflows**: Customer returns use `createAndCompleteReturnOrderWorkflow`; customer exchanges use `beginExchangeOrderWorkflow`, `orderExchangeRequestItemReturnWorkflow`, `orderExchangeAddNewItemWorkflow`, `confirmExchangeRequestWorkflow`, and `cancelBeginOrderExchangeWorkflow`. Admin actions use `confirmReturnReceiveWorkflow`, `cancelReturnWorkflow`, and `cancelBeginOrderExchangeWorkflow`.
328
331
  - **Payment details**: Custom module `payment_detail` for customer payment methods (UPI, bank, card). Store CRUD at `/store/payment-details`. Type-driven validation — UPI requires `upi_id`; bank requires `account_holder_name`, `bank_name`, `account_number`, `ifsc` (optional `branch_name`); card requires `card_holder_name`, `card_number`, `expiry_date`, `cvv`. One default per customer; return creation requires at least one default payment method.
329
332
  - **Refund payment mapping**: Table `refund_payment_mapping` (one row per return: `return_id`, `payment_id`, `is_refunded`, `refund_mode`, `images`, `details`). A mapping is created automatically when a return is created. Customer can GET mapping (read-only for all fields) and PUT `payment_id` only while `is_refunded = false`; customer can also GET all mappings for an order to see if all refunds are successful. Only admin can set `is_refunded`, `refund_mode` (offline/online), `images`, and `details`.
333
+ - **Receive-before-refund**: Admin payment refunds (`POST /admin/payments/:id/refund`) and `POST /admin/refund-payment-mapping/:return_id/mark-refunded` are rejected with `400 NOT_ALLOWED` while any return on the order is `open`, `requested`, or `partially_received` (including exchange-linked returns). Receive items first. Refunds with no unreceived return (order cancel / goodwill) still work. Receive-and-refund inside Medusa’s receive workflow is not blocked.
330
334
 
331
335
  ### Plugin structure (high level)
332
336
 
@@ -378,9 +382,9 @@ This plugin is compatible with Medusa v2 (e.g. `@medusajs/framework` and `@medus
378
382
  | GET | `/admin/swaps/:id` | Admin | Get swap |
379
383
  | POST | `/admin/swaps/:id/reject` | Admin | Reject swap |
380
384
  | POST | `/admin/swaps/:id/cancel` | Admin | Cancel exchange |
381
- | GET | `/admin/orders/:order_id/refund-context` | Admin | Refund context (return + mapping + payment_detail) |
385
+ | GET | `/admin/orders/:order_id/refund-context` | Admin | Refund context (return + `return_status` + `can_process_refund` + mapping + payment_detail + order checkout payment) |
382
386
  | PUT | `/admin/refund-payment-mapping/:return_id` | Admin | Update refund_mode, images, details |
383
- | POST | `/admin/refund-payment-mapping/:return_id/mark-refunded` | Admin | Mark mapping as refunded |
387
+ | POST | `/admin/refund-payment-mapping/:return_id/mark-refunded` | Admin | Mark mapping as refunded (requires return `received`) |
384
388
  | POST | `/admin/uploads` | Admin | Upload file (Medusa core; used by widget for refund images) |
385
389
 
386
390
  ## Configuration
@@ -581,8 +585,9 @@ The plugin includes a `refund_payment_mapping` module: one row per return linkin
581
585
  - `GET /store/orders/:order_id/refund-payment-mappings` — list all refund payment mappings for the order’s returns (customer must own the order). Use to show “all refunds successful” vs “some pending” (check `is_refunded` on each).
582
586
  - **Admin API**:
583
587
  - `PUT /admin/refund-payment-mapping/:return_id` — update admin-only fields. Body: `{ refund_mode?: "offline" | "online" | null, images?: string[], details?: string | null }` (partial; only provided keys are updated).
584
- - `POST /admin/refund-payment-mapping/:return_id/mark-refunded` — set `is_refunded = true` (idempotent).
585
- - **Order detail integration**: `GET /admin/orders/:order_id/refund-context` — aggregated read returning `return_id`, `refund_mapping` (id, payment_id, is_refunded, refund_mode, images, details), `payment_detail` (id, type, detail_json, is_default) resolved from the customer's specified or default payment detail, and `refund` (product_amount, return_charge, expected_net_amount, final_refund_amount, currency_code, is_processed, breakdown_matches, destination_label). `final_refund_amount` is the processed payment refund (or COD/offline `return.refund_amount` after mark-refunded), not `product_amount - return_charge`. Returns null blocks when no return or mapping exists. An admin widget at `order.details.after` shows **Refund calculation**, refund payment method, **Refund mode** (Offline/Online), **Details**, **Images** (with upload via Medusa `POST /admin/uploads`), and **Mark refunded** (when `is_refunded = false`). Only admin can change refund_mode, images, and details.
588
+ - `POST /admin/refund-payment-mapping/:return_id/mark-refunded` — set `is_refunded = true` (idempotent). Requires Medusa return status `received`; otherwise `400 NOT_ALLOWED`. Already-refunded mappings still succeed without re-checking receive status.
589
+ - **Receive-before-refund guard**: Middleware on Medusa core `POST /admin/payments/:id/refund` rejects the request with `400 NOT_ALLOWED` when the order has any return in `open`, `requested`, or `partially_received` (including exchange-linked returns). Message: `Cannot process a refund while the return is {status}. Receive the returned items first.` Orders with no return, or only `received` / `canceled` returns, are not blocked.
590
+ - **Order detail integration**: `GET /admin/orders/:order_id/refund-context` — aggregated read returning `return_id`, `return_status`, `can_process_refund` (`true` only when status is `received` and the mapping exists and is not already refunded), `order_payment` (checkout `provider_id`, human-readable `label`, `is_cod` — used for guest orders that have no saved `payment_detail`), `refund_mapping` (id, payment_id, is_refunded, refund_mode, images, details), `payment_detail` (id, type, detail_json, is_default) resolved from the customer's specified or default payment detail, and `refund` (product_amount, return_charge, expected_net_amount, final_refund_amount, currency_code, is_processed, breakdown_matches, destination_label). `final_refund_amount` is the processed payment refund (or COD/offline `return.refund_amount` after mark-refunded), not `product_amount - return_charge`. Returns null blocks when no return or mapping exists. An admin widget at `order.details.after` shows **Order payment method** (the provider used at checkout, including guest orders), **Refund calculation**, refund payment method, **Refund mode** (Offline/Online), **Details**, **Images** (with upload via Medusa `POST /admin/uploads`), and **Mark refunded** only when `can_process_refund` is true. While the return is unreceived the widget tells admins to receive items first and not refund from Payments. Only admin can change refund_mode, images, and details.
586
591
  - **Store return payload**: `GET /store/returns` and `GET /store/returns/:id` attach the same `refund` object so the storefront can render the breakdown. `GET /store/orders/:order_id/refund-payment-mappings` includes `refund` per mapping.
587
592
  - **Registration**: Add the module in `medusa-config.js` (e.g. `orderManagement.modules["refund-payment-mapping"]`) and run migrations.
588
593
 
@@ -598,7 +603,7 @@ The plugin includes a dedicated section in the Medusa Admin Panel for managing c
598
603
  - **Filtering**: Filter returns by status (requested, received, requires_action, completed, canceled)
599
604
  - **Detail Pages**: View detailed information for each return order including:
600
605
  - Return information (ID, status, refund amount, reason, note)
601
- - Related order information (order ID, customer, totals)
606
+ - Related order information (order ID, customer, payment method used at checkout, totals)
602
607
  - Return items with quantities
603
608
  - Status history timeline
604
609
  - Metadata
@@ -678,7 +683,11 @@ The plugin provides the following store API endpoints for the Guest Order Portal
678
683
 
679
684
  #### Guest Order Actions
680
685
  - `GET /store/guest-orders/:id` - Get full details for a specific guest order (requires guest JWT).
681
- - `POST /store/guest-orders/:id/returns` - Initiate a return request for a guest order.
686
+ - `POST /store/guest-orders/:id/returns` - Initiate a return request for a guest order. Optional body fields: `refund_payment_id`, or inline `refund_payment: { type, detail_json }` (e.g. UPI). COD guest returns require a refund destination.
687
+ - `GET/POST /store/guest-orders/:id/payment-details` - List / create refund destinations (UPI/bank/card) for the guest order's customer.
688
+ - `PUT /store/guest-orders/:id/returns/:return_id/refund-payment` - Link a `payment_id` to the return's refund mapping.
689
+
690
+ Guest prepaid refunds still default to the original checkout method when no destination is specified. Guest COD refunds store the provided UPI/bank/card on `refund_payment_mapping` so Admin Refund Payment can display it.
682
691
  - `POST /store/guest-orders/:id/cancel` - Cancel a guest order.
683
692
  - `POST /store/guest-orders/:id/reorder` - Reorder a guest order (creates a new cart with the same items).
684
693
  - `GET /store/guest-orders/:id/swaps` - List exchange requests for the guest order.
@@ -1466,6 +1475,7 @@ Returns are validated for:
1466
1475
  - **Default Payment Method**: Customer must have a default payment method before creating a return
1467
1476
  - **Delivery Window**: Return is blocked if more than `returnValidInDays` days have passed since `fulfillment.delivered_at`. If the fulfillment has no `delivered_at` the check is skipped. Configure in plugin options (default: 7 days)
1468
1477
  - **Exchange Window**: Exchange is blocked if more than `exchangeValidInDays` days have passed since `fulfillment.delivered_at` (default: 7 days)
1478
+ - **Receive before refund**: Payment refunds and **Mark refunded** are blocked while any return on the order is `open` | `requested` | `partially_received`. Receive items (`status === "received"`) first. This does not apply to refunds when there is no unreceived return.
1469
1479
  - **Mutual exclusion (order-level)**: While any **active** return or exchange exists on the order, neither a second return nor a cross-type request may be created (intentional: one open RMA per order). Active return statuses are `open` | `requested` | `partially_received` (not `received` / `canceled`). Exchange-linked returns do not count as standalone refund returns. Enforced by:
1470
1480
  - Medusa entity allowlists (`assertNoActiveConflictingRma`)
1471
1481
  - `order_rma_gate` row with `UNIQUE (order_id) WHERE deleted_at IS NULL` (race-safe create)
@@ -1560,6 +1570,38 @@ Returns store rich metadata for audit trails:
1560
1570
  }
1561
1571
  ```
1562
1572
 
1573
+ ## Known Issues & Fixes
1574
+
1575
+ ### Issue: Admin/store return lists crash with `isInitialized` on Medusa 2.21
1576
+
1577
+ **Problem:**
1578
+ `GET /admin/return` (and store return list/detail) threw `Cannot read properties of undefined (reading 'isInitialized')` from `@medusajs/order` `ReturnRepository.loadShippingAdjustments`. The Admin Returns page returned HTTP 500.
1579
+
1580
+ **Root Cause:**
1581
+ Medusa 2.21 `listAndCountReturns` / `retrieveReturn` with `shipping_methods` hydrates the parent order's `order_shipping` rows and reads `shipping_method.adjustments.isInitialized`. Orphan join rows (missing nested `shipping_method`) crash the whole list.
1582
+
1583
+ **Solution:**
1584
+ Return list/detail routes load returns through Query Graph (`loadReturnsViaQuery` / `loadReturnByIdViaQuery`) without `shipping_methods`. Shipping methods for refund charges are attached in a separate try/catch (`attachReturnShippingMethods`) so a hydrate failure cannot take down the list.
1585
+
1586
+ **Prevention:**
1587
+ - Do not call `OrderModule.listAndCountReturns` / `retrieveReturn` with `shipping_methods` on Medusa 2.21
1588
+ - Keep list Graph fields free of `shipping_methods*`
1589
+
1590
+ ### Issue: Storefront return tracking can show items as received after a premature refund
1591
+
1592
+ **Problem:**
1593
+ If an admin refunds from Payments before Receive items, some storefronts mark Return Tracking steps such as Partially Received / Return Received complete even though Medusa `return.status` is still `requested` and admin still shows Receive items.
1594
+
1595
+ **Root Cause:**
1596
+ Receive status (`return.status` / `received_at`) and payment refund (`payment_status` / `refund.is_processed`) are independent. This plugin never sets a return to received when a refund is issued. Storefront steppers that linear-fill from payment status will paint receive steps incorrectly.
1597
+
1598
+ **Solution:**
1599
+ This plugin now rejects `POST /admin/payments/:id/refund` and `POST /admin/refund-payment-mapping/:return_id/mark-refunded` until the return is `received`. Storefronts should still drive receive steps only from `return.status` / `received_at`. Orders already refunded before this guard (and storefronts that ignore return status) can still show the wrong stepper.
1600
+
1601
+ **Prevention:**
1602
+ - Receive returned items before processing a refund
1603
+ - Drive storefront receive steps from `return.status`, not from `payment_status` or `refund.is_processed`
1604
+
1563
1605
  ## Getting Started
1564
1606
 
1565
1607
  Visit the [Quickstart Guide](https://docs.medusajs.com/learn/installation) to set up a server.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "order-management",
3
- "version": "0.0.91",
3
+ "version": "0.0.93",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",
@@ -35,27 +35,27 @@
35
35
  "prepublishOnly": "medusa plugin:build"
36
36
  },
37
37
  "devDependencies": {
38
- "@medusajs/admin-sdk": "2.11.2",
39
- "@medusajs/cli": "2.11.2",
40
- "@medusajs/framework": "2.11.2",
41
- "@medusajs/icons": "2.11.2",
42
- "@medusajs/medusa": "2.11.2",
43
- "@medusajs/test-utils": "2.11.2",
44
- "@medusajs/ui": "4.0.25",
45
- "@swc/core": "1.5.7",
38
+ "@medusajs/admin-sdk": "2.21.0",
39
+ "@medusajs/cli": "2.21.0",
40
+ "@medusajs/framework": "2.21.0",
41
+ "@medusajs/icons": "2.21.0",
42
+ "@medusajs/medusa": "2.21.0",
43
+ "@medusajs/test-utils": "2.21.0",
44
+ "@medusajs/ui": "4.2.4",
45
+ "@swc/core": "1.16.2",
46
46
  "@types/jsonwebtoken": "^9.0.10",
47
- "@types/node": "^20.0.0",
48
- "@types/react": "^18.3.2",
49
- "@types/react-dom": "^18.2.25",
47
+ "@types/node": "^22.20.3",
48
+ "@types/react": "^19.3.0",
49
+ "@types/react-dom": "^19.3.0",
50
50
  "jsonwebtoken": "^9.0.3",
51
51
  "medusa-plugin-dynamic-config": "0.0.36",
52
52
  "prop-types": "^15.8.1",
53
- "react": "^18.2.0",
54
- "react-dom": "^18.2.0",
53
+ "react": "^19.3.0",
54
+ "react-dom": "^19.3.0",
55
55
  "ts-node": "^10.9.2",
56
- "typescript": "^5.6.2",
57
- "vite": "^5.2.11",
58
- "vitest": "^2.0.0",
56
+ "typescript": "^5.9.3",
57
+ "vite": "^8.3.0",
58
+ "vitest": "^5.0.1",
59
59
  "yalc": "^1.0.0-pre.53"
60
60
  },
61
61
  "peerDependencies": {