order-management 0.0.55 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/admin/index.js +151 -1
- package/.medusa/server/src/admin/index.mjs +153 -3
- package/.medusa/server/src/api/admin/orders/[order_id]/refund-context/route.js +4 -1
- package/.medusa/server/src/api/admin/refund-payment-mapping/[return_id]/route.js +73 -0
- package/.medusa/server/src/api/admin/refund-payment-mapping/validators.js +10 -0
- package/.medusa/server/src/api/store/orders/[order_id]/refund-payment-mappings/route.js +74 -0
- package/.medusa/server/src/api/store/refund-payment-mapping/[return_id]/route.js +11 -1
- package/.medusa/server/src/modules/refund-payment-mapping/migrations/Migration20260217100000.js +18 -0
- package/.medusa/server/src/modules/refund-payment-mapping/models/refund-payment-mapping.js +4 -1
- package/.medusa/server/src/modules/refund-payment-mapping/service.js +38 -1
- package/package.json +1 -1
|
@@ -11,13 +11,19 @@ function getOrderIdFromPath() {
|
|
|
11
11
|
return m ? m[1] : void 0;
|
|
12
12
|
}
|
|
13
13
|
const OrderRefundContextWidget = (props) => {
|
|
14
|
-
var _a, _b, _c, _d, _e;
|
|
14
|
+
var _a, _b, _c, _d, _e, _f;
|
|
15
15
|
const orderId = ((_a = props.order) == null ? void 0 : _a.id) ?? ((_c = (_b = props.data) == null ? void 0 : _b.order) == null ? void 0 : _c.id) ?? getOrderIdFromPath();
|
|
16
16
|
const [context, setContext] = react.useState(null);
|
|
17
17
|
const [loading, setLoading] = react.useState(!!orderId);
|
|
18
18
|
const [error, setError] = react.useState(null);
|
|
19
19
|
const [marking, setMarking] = react.useState(false);
|
|
20
20
|
const [markError, setMarkError] = react.useState(null);
|
|
21
|
+
const [editing, setEditing] = react.useState(false);
|
|
22
|
+
const [editRefundMode, setEditRefundMode] = react.useState("");
|
|
23
|
+
const [editDetails, setEditDetails] = react.useState("");
|
|
24
|
+
const [editImages, setEditImages] = react.useState("");
|
|
25
|
+
const [saving, setSaving] = react.useState(false);
|
|
26
|
+
const [saveError, setSaveError] = react.useState(null);
|
|
21
27
|
react.useEffect(() => {
|
|
22
28
|
if (!orderId) {
|
|
23
29
|
setLoading(false);
|
|
@@ -73,6 +79,45 @@ const OrderRefundContextWidget = (props) => {
|
|
|
73
79
|
setMarking(false);
|
|
74
80
|
}
|
|
75
81
|
};
|
|
82
|
+
const handleEditClick = () => {
|
|
83
|
+
const mapping = context == null ? void 0 : context.refund_mapping;
|
|
84
|
+
setEditRefundMode((mapping == null ? void 0 : mapping.refund_mode) ?? "");
|
|
85
|
+
setEditDetails((mapping == null ? void 0 : mapping.details) ?? "");
|
|
86
|
+
setEditImages(((mapping == null ? void 0 : mapping.images) ?? []).join("\n"));
|
|
87
|
+
setSaveError(null);
|
|
88
|
+
setEditing(true);
|
|
89
|
+
};
|
|
90
|
+
const handleSaveAdminFields = async () => {
|
|
91
|
+
if (!(context == null ? void 0 : context.return_id)) return;
|
|
92
|
+
setSaving(true);
|
|
93
|
+
setSaveError(null);
|
|
94
|
+
try {
|
|
95
|
+
const imagesArray = editImages.split("\n").map((s) => s.trim()).filter(Boolean);
|
|
96
|
+
const res = await fetch(`/admin/refund-payment-mapping/${context.return_id}`, {
|
|
97
|
+
method: "PUT",
|
|
98
|
+
headers: { "Content-Type": "application/json" },
|
|
99
|
+
credentials: "include",
|
|
100
|
+
body: JSON.stringify({
|
|
101
|
+
refund_mode: editRefundMode.trim() || null,
|
|
102
|
+
details: editDetails.trim() || null,
|
|
103
|
+
images: imagesArray
|
|
104
|
+
})
|
|
105
|
+
});
|
|
106
|
+
if (!res.ok) {
|
|
107
|
+
const data2 = await res.json().catch(() => ({}));
|
|
108
|
+
throw new Error(data2.message || "Failed to update");
|
|
109
|
+
}
|
|
110
|
+
const data = await res.json();
|
|
111
|
+
setContext(
|
|
112
|
+
(prev) => prev && prev.refund_mapping && data.refund_payment_mapping ? { ...prev, refund_mapping: data.refund_payment_mapping } : prev
|
|
113
|
+
);
|
|
114
|
+
setEditing(false);
|
|
115
|
+
} catch (e) {
|
|
116
|
+
setSaveError(e instanceof Error ? e.message : "Failed to save");
|
|
117
|
+
} finally {
|
|
118
|
+
setSaving(false);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
76
121
|
if (!orderId) return null;
|
|
77
122
|
if (loading) {
|
|
78
123
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.Container, { className: "mt-6 divide-y p-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-4", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-subtle", children: "Loading refund context..." }) }) });
|
|
@@ -109,6 +154,111 @@ const OrderRefundContextWidget = (props) => {
|
|
|
109
154
|
] }, k)) })
|
|
110
155
|
] }),
|
|
111
156
|
!paymentDetail && ((_e = context.refund_mapping) == null ? void 0 : _e.payment_id) && /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "mt-2 text-ui-fg-muted", children: "Payment detail not found or not accessible." }),
|
|
157
|
+
(context == null ? void 0 : context.refund_mapping) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 space-y-3 border-t border-ui-border-base pt-3", children: [
|
|
158
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
159
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", weight: "plus", className: "text-ui-fg-subtle", children: "Refund mode, details & images" }),
|
|
160
|
+
!editing ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
161
|
+
ui.Button,
|
|
162
|
+
{
|
|
163
|
+
size: "small",
|
|
164
|
+
variant: "secondary",
|
|
165
|
+
onClick: handleEditClick,
|
|
166
|
+
type: "button",
|
|
167
|
+
children: [
|
|
168
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.PencilSquareSolid, {}),
|
|
169
|
+
"Edit"
|
|
170
|
+
]
|
|
171
|
+
}
|
|
172
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
173
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
174
|
+
ui.Button,
|
|
175
|
+
{
|
|
176
|
+
size: "small",
|
|
177
|
+
variant: "secondary",
|
|
178
|
+
onClick: () => setEditing(false),
|
|
179
|
+
type: "button",
|
|
180
|
+
children: "Cancel"
|
|
181
|
+
}
|
|
182
|
+
),
|
|
183
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
184
|
+
ui.Button,
|
|
185
|
+
{
|
|
186
|
+
size: "small",
|
|
187
|
+
onClick: handleSaveAdminFields,
|
|
188
|
+
disabled: saving,
|
|
189
|
+
isLoading: saving,
|
|
190
|
+
type: "button",
|
|
191
|
+
children: "Save"
|
|
192
|
+
}
|
|
193
|
+
)
|
|
194
|
+
] })
|
|
195
|
+
] }),
|
|
196
|
+
editing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [
|
|
197
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
198
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { size: "xsmall", children: "Refund mode" }),
|
|
199
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
200
|
+
ui.Input,
|
|
201
|
+
{
|
|
202
|
+
size: "small",
|
|
203
|
+
value: editRefundMode,
|
|
204
|
+
onChange: (e) => setEditRefundMode(e.target.value),
|
|
205
|
+
placeholder: "e.g. bank_transfer, original_payment"
|
|
206
|
+
}
|
|
207
|
+
)
|
|
208
|
+
] }),
|
|
209
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
210
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { size: "xsmall", children: "Details" }),
|
|
211
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
212
|
+
ui.Textarea,
|
|
213
|
+
{
|
|
214
|
+
value: editDetails,
|
|
215
|
+
onChange: (e) => setEditDetails(e.target.value),
|
|
216
|
+
placeholder: "Admin notes or details",
|
|
217
|
+
rows: 3
|
|
218
|
+
}
|
|
219
|
+
)
|
|
220
|
+
] }),
|
|
221
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
222
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { size: "xsmall", children: "Images (one URL per line)" }),
|
|
223
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
224
|
+
ui.Textarea,
|
|
225
|
+
{
|
|
226
|
+
value: editImages,
|
|
227
|
+
onChange: (e) => setEditImages(e.target.value),
|
|
228
|
+
placeholder: "https://...",
|
|
229
|
+
rows: 2
|
|
230
|
+
}
|
|
231
|
+
)
|
|
232
|
+
] }),
|
|
233
|
+
saveError && /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-error", children: saveError })
|
|
234
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
235
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
236
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "xsmall", weight: "plus", className: "text-ui-fg-muted", children: "Refund mode" }),
|
|
237
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "block", children: context.refund_mapping.refund_mode || "—" })
|
|
238
|
+
] }),
|
|
239
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
240
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "xsmall", weight: "plus", className: "text-ui-fg-muted", children: "Details" }),
|
|
241
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "block", children: context.refund_mapping.details || "—" })
|
|
242
|
+
] }),
|
|
243
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
244
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "xsmall", weight: "plus", className: "text-ui-fg-muted", children: "Images" }),
|
|
245
|
+
((_f = context.refund_mapping.images) == null ? void 0 : _f.length) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex flex-wrap gap-2", children: context.refund_mapping.images.map((url, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
246
|
+
"a",
|
|
247
|
+
{
|
|
248
|
+
href: url,
|
|
249
|
+
target: "_blank",
|
|
250
|
+
rel: "noopener noreferrer",
|
|
251
|
+
className: "text-xs text-ui-fg-interactive hover:underline",
|
|
252
|
+
children: [
|
|
253
|
+
"Image ",
|
|
254
|
+
i + 1
|
|
255
|
+
]
|
|
256
|
+
},
|
|
257
|
+
i
|
|
258
|
+
)) }) : /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "block", children: "—" })
|
|
259
|
+
] })
|
|
260
|
+
] })
|
|
261
|
+
] }),
|
|
112
262
|
canMarkRefunded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4", children: [
|
|
113
263
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
114
264
|
ui.Button,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect, useCallback, useMemo } from "react";
|
|
3
3
|
import { defineWidgetConfig, defineRouteConfig } from "@medusajs/admin-sdk";
|
|
4
|
-
import { Container, Text, Heading, Badge, Button, Input } from "@medusajs/ui";
|
|
5
|
-
import { CashSolid, ArrowPath, CheckCircle, ArrowLeft } from "@medusajs/icons";
|
|
4
|
+
import { Container, Text, Heading, Badge, Button, Label, Input, Textarea } from "@medusajs/ui";
|
|
5
|
+
import { CashSolid, PencilSquareSolid, ArrowPath, CheckCircle, ArrowLeft } from "@medusajs/icons";
|
|
6
6
|
import { useNavigate, useParams } from "react-router-dom";
|
|
7
7
|
function getOrderIdFromPath() {
|
|
8
8
|
if (typeof window === "undefined") return void 0;
|
|
@@ -10,13 +10,19 @@ function getOrderIdFromPath() {
|
|
|
10
10
|
return m ? m[1] : void 0;
|
|
11
11
|
}
|
|
12
12
|
const OrderRefundContextWidget = (props) => {
|
|
13
|
-
var _a, _b, _c, _d, _e;
|
|
13
|
+
var _a, _b, _c, _d, _e, _f;
|
|
14
14
|
const orderId = ((_a = props.order) == null ? void 0 : _a.id) ?? ((_c = (_b = props.data) == null ? void 0 : _b.order) == null ? void 0 : _c.id) ?? getOrderIdFromPath();
|
|
15
15
|
const [context, setContext] = useState(null);
|
|
16
16
|
const [loading, setLoading] = useState(!!orderId);
|
|
17
17
|
const [error, setError] = useState(null);
|
|
18
18
|
const [marking, setMarking] = useState(false);
|
|
19
19
|
const [markError, setMarkError] = useState(null);
|
|
20
|
+
const [editing, setEditing] = useState(false);
|
|
21
|
+
const [editRefundMode, setEditRefundMode] = useState("");
|
|
22
|
+
const [editDetails, setEditDetails] = useState("");
|
|
23
|
+
const [editImages, setEditImages] = useState("");
|
|
24
|
+
const [saving, setSaving] = useState(false);
|
|
25
|
+
const [saveError, setSaveError] = useState(null);
|
|
20
26
|
useEffect(() => {
|
|
21
27
|
if (!orderId) {
|
|
22
28
|
setLoading(false);
|
|
@@ -72,6 +78,45 @@ const OrderRefundContextWidget = (props) => {
|
|
|
72
78
|
setMarking(false);
|
|
73
79
|
}
|
|
74
80
|
};
|
|
81
|
+
const handleEditClick = () => {
|
|
82
|
+
const mapping = context == null ? void 0 : context.refund_mapping;
|
|
83
|
+
setEditRefundMode((mapping == null ? void 0 : mapping.refund_mode) ?? "");
|
|
84
|
+
setEditDetails((mapping == null ? void 0 : mapping.details) ?? "");
|
|
85
|
+
setEditImages(((mapping == null ? void 0 : mapping.images) ?? []).join("\n"));
|
|
86
|
+
setSaveError(null);
|
|
87
|
+
setEditing(true);
|
|
88
|
+
};
|
|
89
|
+
const handleSaveAdminFields = async () => {
|
|
90
|
+
if (!(context == null ? void 0 : context.return_id)) return;
|
|
91
|
+
setSaving(true);
|
|
92
|
+
setSaveError(null);
|
|
93
|
+
try {
|
|
94
|
+
const imagesArray = editImages.split("\n").map((s) => s.trim()).filter(Boolean);
|
|
95
|
+
const res = await fetch(`/admin/refund-payment-mapping/${context.return_id}`, {
|
|
96
|
+
method: "PUT",
|
|
97
|
+
headers: { "Content-Type": "application/json" },
|
|
98
|
+
credentials: "include",
|
|
99
|
+
body: JSON.stringify({
|
|
100
|
+
refund_mode: editRefundMode.trim() || null,
|
|
101
|
+
details: editDetails.trim() || null,
|
|
102
|
+
images: imagesArray
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
if (!res.ok) {
|
|
106
|
+
const data2 = await res.json().catch(() => ({}));
|
|
107
|
+
throw new Error(data2.message || "Failed to update");
|
|
108
|
+
}
|
|
109
|
+
const data = await res.json();
|
|
110
|
+
setContext(
|
|
111
|
+
(prev) => prev && prev.refund_mapping && data.refund_payment_mapping ? { ...prev, refund_mapping: data.refund_payment_mapping } : prev
|
|
112
|
+
);
|
|
113
|
+
setEditing(false);
|
|
114
|
+
} catch (e) {
|
|
115
|
+
setSaveError(e instanceof Error ? e.message : "Failed to save");
|
|
116
|
+
} finally {
|
|
117
|
+
setSaving(false);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
75
120
|
if (!orderId) return null;
|
|
76
121
|
if (loading) {
|
|
77
122
|
return /* @__PURE__ */ jsx(Container, { className: "mt-6 divide-y p-0", children: /* @__PURE__ */ jsx("div", { className: "py-4", children: /* @__PURE__ */ jsx(Text, { className: "text-ui-fg-subtle", children: "Loading refund context..." }) }) });
|
|
@@ -108,6 +153,111 @@ const OrderRefundContextWidget = (props) => {
|
|
|
108
153
|
] }, k)) })
|
|
109
154
|
] }),
|
|
110
155
|
!paymentDetail && ((_e = context.refund_mapping) == null ? void 0 : _e.payment_id) && /* @__PURE__ */ jsx(Text, { size: "small", className: "mt-2 text-ui-fg-muted", children: "Payment detail not found or not accessible." }),
|
|
156
|
+
(context == null ? void 0 : context.refund_mapping) && /* @__PURE__ */ jsxs("div", { className: "mt-3 space-y-3 border-t border-ui-border-base pt-3", children: [
|
|
157
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
158
|
+
/* @__PURE__ */ jsx(Text, { size: "small", weight: "plus", className: "text-ui-fg-subtle", children: "Refund mode, details & images" }),
|
|
159
|
+
!editing ? /* @__PURE__ */ jsxs(
|
|
160
|
+
Button,
|
|
161
|
+
{
|
|
162
|
+
size: "small",
|
|
163
|
+
variant: "secondary",
|
|
164
|
+
onClick: handleEditClick,
|
|
165
|
+
type: "button",
|
|
166
|
+
children: [
|
|
167
|
+
/* @__PURE__ */ jsx(PencilSquareSolid, {}),
|
|
168
|
+
"Edit"
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
) : /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
172
|
+
/* @__PURE__ */ jsx(
|
|
173
|
+
Button,
|
|
174
|
+
{
|
|
175
|
+
size: "small",
|
|
176
|
+
variant: "secondary",
|
|
177
|
+
onClick: () => setEditing(false),
|
|
178
|
+
type: "button",
|
|
179
|
+
children: "Cancel"
|
|
180
|
+
}
|
|
181
|
+
),
|
|
182
|
+
/* @__PURE__ */ jsx(
|
|
183
|
+
Button,
|
|
184
|
+
{
|
|
185
|
+
size: "small",
|
|
186
|
+
onClick: handleSaveAdminFields,
|
|
187
|
+
disabled: saving,
|
|
188
|
+
isLoading: saving,
|
|
189
|
+
type: "button",
|
|
190
|
+
children: "Save"
|
|
191
|
+
}
|
|
192
|
+
)
|
|
193
|
+
] })
|
|
194
|
+
] }),
|
|
195
|
+
editing ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
|
|
196
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
197
|
+
/* @__PURE__ */ jsx(Label, { size: "xsmall", children: "Refund mode" }),
|
|
198
|
+
/* @__PURE__ */ jsx(
|
|
199
|
+
Input,
|
|
200
|
+
{
|
|
201
|
+
size: "small",
|
|
202
|
+
value: editRefundMode,
|
|
203
|
+
onChange: (e) => setEditRefundMode(e.target.value),
|
|
204
|
+
placeholder: "e.g. bank_transfer, original_payment"
|
|
205
|
+
}
|
|
206
|
+
)
|
|
207
|
+
] }),
|
|
208
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
209
|
+
/* @__PURE__ */ jsx(Label, { size: "xsmall", children: "Details" }),
|
|
210
|
+
/* @__PURE__ */ jsx(
|
|
211
|
+
Textarea,
|
|
212
|
+
{
|
|
213
|
+
value: editDetails,
|
|
214
|
+
onChange: (e) => setEditDetails(e.target.value),
|
|
215
|
+
placeholder: "Admin notes or details",
|
|
216
|
+
rows: 3
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
] }),
|
|
220
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
221
|
+
/* @__PURE__ */ jsx(Label, { size: "xsmall", children: "Images (one URL per line)" }),
|
|
222
|
+
/* @__PURE__ */ jsx(
|
|
223
|
+
Textarea,
|
|
224
|
+
{
|
|
225
|
+
value: editImages,
|
|
226
|
+
onChange: (e) => setEditImages(e.target.value),
|
|
227
|
+
placeholder: "https://...",
|
|
228
|
+
rows: 2
|
|
229
|
+
}
|
|
230
|
+
)
|
|
231
|
+
] }),
|
|
232
|
+
saveError && /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-error", children: saveError })
|
|
233
|
+
] }) : /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
234
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
235
|
+
/* @__PURE__ */ jsx(Text, { size: "xsmall", weight: "plus", className: "text-ui-fg-muted", children: "Refund mode" }),
|
|
236
|
+
/* @__PURE__ */ jsx(Text, { size: "small", className: "block", children: context.refund_mapping.refund_mode || "—" })
|
|
237
|
+
] }),
|
|
238
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
239
|
+
/* @__PURE__ */ jsx(Text, { size: "xsmall", weight: "plus", className: "text-ui-fg-muted", children: "Details" }),
|
|
240
|
+
/* @__PURE__ */ jsx(Text, { size: "small", className: "block", children: context.refund_mapping.details || "—" })
|
|
241
|
+
] }),
|
|
242
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
243
|
+
/* @__PURE__ */ jsx(Text, { size: "xsmall", weight: "plus", className: "text-ui-fg-muted", children: "Images" }),
|
|
244
|
+
((_f = context.refund_mapping.images) == null ? void 0 : _f.length) ? /* @__PURE__ */ jsx("div", { className: "mt-1 flex flex-wrap gap-2", children: context.refund_mapping.images.map((url, i) => /* @__PURE__ */ jsxs(
|
|
245
|
+
"a",
|
|
246
|
+
{
|
|
247
|
+
href: url,
|
|
248
|
+
target: "_blank",
|
|
249
|
+
rel: "noopener noreferrer",
|
|
250
|
+
className: "text-xs text-ui-fg-interactive hover:underline",
|
|
251
|
+
children: [
|
|
252
|
+
"Image ",
|
|
253
|
+
i + 1
|
|
254
|
+
]
|
|
255
|
+
},
|
|
256
|
+
i
|
|
257
|
+
)) }) : /* @__PURE__ */ jsx(Text, { size: "small", className: "block", children: "—" })
|
|
258
|
+
] })
|
|
259
|
+
] })
|
|
260
|
+
] }),
|
|
111
261
|
canMarkRefunded && /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [
|
|
112
262
|
/* @__PURE__ */ jsx(
|
|
113
263
|
Button,
|
|
@@ -70,6 +70,9 @@ async function GET(req, res) {
|
|
|
70
70
|
id: mapping.id,
|
|
71
71
|
payment_id: mapping.payment_id,
|
|
72
72
|
is_refunded: mapping.is_refunded,
|
|
73
|
+
refund_mode: mapping.refund_mode,
|
|
74
|
+
images: mapping.images,
|
|
75
|
+
details: mapping.details,
|
|
73
76
|
};
|
|
74
77
|
if (!mapping.payment_id) {
|
|
75
78
|
res.json({
|
|
@@ -119,4 +122,4 @@ async function GET(req, res) {
|
|
|
119
122
|
});
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9bb3JkZXJfaWRdL3JlZnVuZC1jb250ZXh0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK0JBLGtCQStIQztBQTdKRCxxREFBbUQ7QUFFbkQsMEZBQTZGO0FBRTdGLDBFQUE2RTtBQXFCN0U7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CO0lBRW5CLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBa0IsQ0FBQTtJQUU3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBc0IsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hGLE1BQU0sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsSUFBSSxFQUFFLFdBQVc7YUFDbEIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxtQkFB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
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PUT = PUT;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const refund_payment_mapping_1 = require("../../../../modules/refund-payment-mapping");
|
|
6
|
+
const validators_1 = require("../validators");
|
|
7
|
+
/**
|
|
8
|
+
* PUT /admin/refund-payment-mapping/:return_id
|
|
9
|
+
* Admin-only: update refund_mode, images, details. Partial update; only provided keys are applied.
|
|
10
|
+
*/
|
|
11
|
+
async function PUT(req, res) {
|
|
12
|
+
const returnId = req.params.return_id;
|
|
13
|
+
if (!returnId) {
|
|
14
|
+
res.status(400).json({
|
|
15
|
+
message: "return_id is required",
|
|
16
|
+
type: "INVALID_DATA",
|
|
17
|
+
});
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const parseResult = validators_1.UpdateRefundPaymentMappingAdminSchema.safeParse(req.body ?? {});
|
|
21
|
+
if (!parseResult.success) {
|
|
22
|
+
res.status(400).json({
|
|
23
|
+
message: "Invalid request data",
|
|
24
|
+
errors: parseResult.error.flatten(),
|
|
25
|
+
type: "INVALID_DATA",
|
|
26
|
+
});
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const data = parseResult.data;
|
|
30
|
+
const updateData = {};
|
|
31
|
+
if (data.refund_mode !== undefined)
|
|
32
|
+
updateData.refund_mode = data.refund_mode ?? null;
|
|
33
|
+
if (data.images !== undefined)
|
|
34
|
+
updateData.images = data.images;
|
|
35
|
+
if (data.details !== undefined)
|
|
36
|
+
updateData.details = data.details ?? null;
|
|
37
|
+
if (Object.keys(updateData).length === 0) {
|
|
38
|
+
const mappingService = req.scope.resolve(refund_payment_mapping_1.REFUND_PAYMENT_MAPPING_MODULE);
|
|
39
|
+
const mapping = await mappingService.getByReturnId(returnId);
|
|
40
|
+
if (!mapping) {
|
|
41
|
+
res.status(404).json({
|
|
42
|
+
message: "Refund payment mapping not found for this return",
|
|
43
|
+
type: "NOT_FOUND",
|
|
44
|
+
});
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
res.status(200).json({ refund_payment_mapping: mapping });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const mappingService = req.scope.resolve(refund_payment_mapping_1.REFUND_PAYMENT_MAPPING_MODULE);
|
|
52
|
+
const updated = await mappingService.updateAdminFields(returnId, updateData);
|
|
53
|
+
res.status(200).json({ refund_payment_mapping: updated });
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
57
|
+
const type = err && typeof err === "object" && "type" in err ? err.type : undefined;
|
|
58
|
+
if (type === utils_1.MedusaError.Types.NOT_FOUND) {
|
|
59
|
+
res.status(404).json({
|
|
60
|
+
message: "Refund payment mapping not found for this return",
|
|
61
|
+
type: "NOT_FOUND",
|
|
62
|
+
});
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
console.error("Update refund payment mapping admin fields error:", err);
|
|
66
|
+
res.status(500).json({
|
|
67
|
+
message: "Failed to update refund payment mapping",
|
|
68
|
+
error: msg,
|
|
69
|
+
type: "INTERNAL_ERROR",
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JlZnVuZC1wYXltZW50LW1hcHBpbmcvW3JldHVybl9pZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFVQSxrQkFtRUM7QUE1RUQscURBQXVEO0FBQ3ZELHVGQUEwRjtBQUUxRiw4Q0FBcUU7QUFFckU7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFtQixDQUFBO0lBRS9DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxrREFBcUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNuRixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxzQkFBc0I7WUFDL0IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ25DLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQTtJQUM3QixNQUFNLFVBQVUsR0FBZ0YsRUFBRSxDQUFBO0lBQ2xHLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTO1FBQUUsVUFBVSxD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
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateRefundPaymentMappingAdminSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.UpdateRefundPaymentMappingAdminSchema = zod_1.z.object({
|
|
6
|
+
refund_mode: zod_1.z.string().nullish(),
|
|
7
|
+
images: zod_1.z.array(zod_1.z.string()).optional(),
|
|
8
|
+
details: zod_1.z.string().nullish(),
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vcmVmdW5kLXBheW1lbnQtbWFwcGluZy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF1QjtBQUVWLFFBQUEscUNBQXFDLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1RCxXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUNqQyxNQUFNLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDdEMsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Q0FDOUIsQ0FBQyxDQUFBIn0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const refund_payment_mapping_1 = require("../../../../../modules/refund-payment-mapping");
|
|
6
|
+
/**
|
|
7
|
+
* GET /store/orders/:order_id/refund-payment-mappings
|
|
8
|
+
* Customer can list refund payment mappings for their order's returns.
|
|
9
|
+
* Use to show "all refunds successful" vs "some pending" (check is_refunded on each).
|
|
10
|
+
*/
|
|
11
|
+
async function GET(req, res) {
|
|
12
|
+
const authContext = req.auth_context;
|
|
13
|
+
const customerId = authContext?.actor_id;
|
|
14
|
+
const actorType = authContext?.actor_type;
|
|
15
|
+
const orderId = req.params.order_id;
|
|
16
|
+
if (!customerId || actorType !== "customer") {
|
|
17
|
+
res.status(401).json({
|
|
18
|
+
message: "Unauthorized: Customer authentication is required",
|
|
19
|
+
type: "UNAUTHORIZED",
|
|
20
|
+
});
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!orderId) {
|
|
24
|
+
res.status(400).json({
|
|
25
|
+
message: "order_id is required",
|
|
26
|
+
type: "INVALID_DATA",
|
|
27
|
+
});
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const orderModuleService = req.scope.resolve(utils_1.Modules.ORDER);
|
|
32
|
+
const order = await orderModuleService.retrieveOrder(orderId).catch(() => null);
|
|
33
|
+
if (!order) {
|
|
34
|
+
res.status(404).json({
|
|
35
|
+
message: "Order not found",
|
|
36
|
+
type: "NOT_FOUND",
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (order.customer_id !== customerId) {
|
|
41
|
+
res.status(404).json({
|
|
42
|
+
message: "Order not found or access denied",
|
|
43
|
+
type: "NOT_FOUND",
|
|
44
|
+
});
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const [returnsList] = await orderModuleService.listAndCountReturns({ order_id: [orderId] }, { take: 100 });
|
|
48
|
+
const returns = Array.isArray(returnsList) ? returnsList : [];
|
|
49
|
+
const returnIds = returns.map((r) => r.id).filter(Boolean);
|
|
50
|
+
if (returnIds.length === 0) {
|
|
51
|
+
res.json({ refund_payment_mappings: [] });
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const mappingService = req.scope.resolve(refund_payment_mapping_1.REFUND_PAYMENT_MAPPING_MODULE);
|
|
55
|
+
const refund_payment_mappings = [];
|
|
56
|
+
for (const returnId of returnIds) {
|
|
57
|
+
const mapping = await mappingService.getByReturnId(returnId);
|
|
58
|
+
if (mapping) {
|
|
59
|
+
refund_payment_mappings.push({ ...mapping, return_id: returnId });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
res.json({ refund_payment_mappings });
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
const message = err instanceof Error ? err.message : "Unknown error";
|
|
66
|
+
console.error("Get refund payment mappings for order error:", err);
|
|
67
|
+
res.status(500).json({
|
|
68
|
+
message: "Failed to get refund payment mappings",
|
|
69
|
+
error: message,
|
|
70
|
+
type: "INTERNAL_ERROR",
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9bb3JkZXJfaWRdL3JlZnVuZC1wYXltZW50LW1hcHBpbmdzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0JBLGtCQTJFQztBQTFGRCxxREFBbUQ7QUFFbkQsMEZBQTZGO0FBUTdGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixNQUFNLFdBQVcsR0FBSSxHQUFxRSxDQUFDLFlBQVksQ0FBQTtJQUN2RyxNQUFNLFVBQVUsR0FBRyxXQUFXLEVBQUUsUUFBUSxDQUFBO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLFdBQVcsRUFBRSxVQUFVLENBQUE7SUFDekMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFrQixDQUFBO0lBRTdDLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBc0IsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hGLE1BQU0sS0FBSyxH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
|
|
@@ -89,6 +89,16 @@ async function PUT(req, res) {
|
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
91
|
const body = req.body;
|
|
92
|
+
const adminOnlyKeys = ["refund_mode", "images", "details"];
|
|
93
|
+
const hasAdminOnly = adminOnlyKeys.some((key) => key in (body ?? {}));
|
|
94
|
+
if (hasAdminOnly) {
|
|
95
|
+
res.status(400).json({
|
|
96
|
+
message: "Only payment_id can be updated by customer. refund_mode, images, and details are admin-only.",
|
|
97
|
+
type: "INVALID_DATA",
|
|
98
|
+
code: "ADMIN_ONLY_FIELDS",
|
|
99
|
+
});
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
92
102
|
const paymentId = typeof body?.payment_id === "string" ? body.payment_id.trim() : undefined;
|
|
93
103
|
if (paymentId === undefined || paymentId === "") {
|
|
94
104
|
res.status(400).json({
|
|
@@ -137,4 +147,4 @@ async function PUT(req, res) {
|
|
|
137
147
|
});
|
|
138
148
|
}
|
|
139
149
|
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3JlZnVuZC1wYXltZW50LW1hcHBpbmcvW3JldHVybl9pZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3QkEsa0JBNkNDO0FBT0Qsa0JBa0ZDO0FBN0pELHFEQUFnRTtBQUVoRSx1RkFBMEY7QUFHMUYsS0FBSyxVQUFVLHFCQUFxQixDQUNsQyxRQUFnQixFQUNoQixVQUFrQixFQUNsQixrQkFBdUM7SUFFdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RGLElBQUksQ0FBQyxVQUFVO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDN0IsTUFBTSxPQUFPLEdBQUksVUFBb0MsQ0FBQyxRQUFRLENBQUE7SUFDOUQsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUMxQixNQUFNLEtBQUssR0FBRyxNQUFNLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0UsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN4QixPQUFRLEtBQWtDLENBQUMsV0FBVyxLQUFLLFVBQVUsQ0FBQTtBQUN2RSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELE1BQU0sV0FBVyxHQUFJLEdBQXFFLENBQUMsWUFBWSxDQUFBO0lBQ3ZHLE1BQU0sVUFBVSxHQUFHLFdBQVcsRUFBRSxRQUFRLENBQUE7SUFDeEMsTUFBTSxTQUFTLEdBQUcsV0FBVyxFQUFFLFVBQVUsQ0FBQTtJQUN6QyxNQUFNLFFBQVEsR0FBRyxH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
|
package/.medusa/server/src/modules/refund-payment-mapping/migrations/Migration20260217100000.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260217100000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260217100000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`ALTER TABLE "refund_payment_mapping" ADD COLUMN IF NOT EXISTS "refund_mode" text NULL;`);
|
|
8
|
+
this.addSql(`ALTER TABLE "refund_payment_mapping" ADD COLUMN IF NOT EXISTS "images" jsonb NOT NULL DEFAULT '[]';`);
|
|
9
|
+
this.addSql(`ALTER TABLE "refund_payment_mapping" ADD COLUMN IF NOT EXISTS "details" text NULL;`);
|
|
10
|
+
}
|
|
11
|
+
async down() {
|
|
12
|
+
this.addSql(`ALTER TABLE "refund_payment_mapping" DROP COLUMN IF EXISTS "refund_mode";`);
|
|
13
|
+
this.addSql(`ALTER TABLE "refund_payment_mapping" DROP COLUMN IF EXISTS "images";`);
|
|
14
|
+
this.addSql(`ALTER TABLE "refund_payment_mapping" DROP COLUMN IF EXISTS "details";`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.Migration20260217100000 = Migration20260217100000;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjAyMTcxMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9yZWZ1bmQtcGF5bWVudC1tYXBwaW5nL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNjAyMTcxMDAwMDAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQW9FO0FBRXBFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFDcEQsS0FBSyxDQUFDLEVBQUU7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLHdGQUF3RixDQUFDLENBQUE7UUFDckcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxR0FBcUcsQ0FBQyxDQUFBO1FBQ2xILElBQUksQ0FBQyxNQUFNLENBQUMsb0ZBQW9GLENBQUMsQ0FBQTtJQUNuRyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLDJFQUEyRSxDQUFDLENBQUE7UUFDeEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzRUFBc0UsQ0FBQyxDQUFBO1FBQ25GLElBQUksQ0FBQyxNQUFNLENBQUMsdUVBQXVFLENBQUMsQ0FBQTtJQUN0RixDQUFDO0NBQ0Y7QUFaRCwwREFZQyJ9
|
|
@@ -6,6 +6,9 @@ const RefundPaymentMapping = utils_1.model.define("refund_payment_mapping", {
|
|
|
6
6
|
return_id: utils_1.model.text().unique().searchable(),
|
|
7
7
|
payment_id: utils_1.model.text().searchable().nullable(),
|
|
8
8
|
is_refunded: utils_1.model.boolean().default(false),
|
|
9
|
+
refund_mode: utils_1.model.text().nullable(),
|
|
10
|
+
images: utils_1.model.json(),
|
|
11
|
+
details: utils_1.model.text().nullable(),
|
|
9
12
|
});
|
|
10
13
|
exports.default = RefundPaymentMapping;
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kLXBheW1lbnQtbWFwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3JlZnVuZC1wYXltZW50LW1hcHBpbmcvbW9kZWxzL3JlZnVuZC1wYXltZW50LW1hcHBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUQ7QUFFakQsTUFBTSxvQkFBb0IsR0FBRyxhQUFLLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFO0lBQ2xFLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQzNCLFNBQVMsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQzdDLFVBQVUsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hELFdBQVcsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMzQyxXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUNwQixPQUFPLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNqQyxDQUFDLENBQUE7QUFFRixrQkFBZSxvQkFBb0IsQ0FBQSJ9
|
|
@@ -24,11 +24,18 @@ class RefundPaymentMappingModuleService extends (0, utils_1.MedusaService)({
|
|
|
24
24
|
throw new Error("Invalid refund payment mapping data");
|
|
25
25
|
}
|
|
26
26
|
const row = raw;
|
|
27
|
+
const imagesRaw = row.images;
|
|
28
|
+
const images = Array.isArray(imagesRaw)
|
|
29
|
+
? imagesRaw.filter((x) => typeof x === "string")
|
|
30
|
+
: [];
|
|
27
31
|
return {
|
|
28
32
|
id: row.id,
|
|
29
33
|
return_id: row.return_id,
|
|
30
34
|
payment_id: row.payment_id ?? null,
|
|
31
35
|
is_refunded: Boolean(row.is_refunded),
|
|
36
|
+
refund_mode: row.refund_mode ?? null,
|
|
37
|
+
images,
|
|
38
|
+
details: row.details ?? null,
|
|
32
39
|
created_at: new Date(row.created_at ?? new Date()),
|
|
33
40
|
updated_at: new Date(row.updated_at ?? new Date()),
|
|
34
41
|
deleted_at: row.deleted_at ? new Date(row.deleted_at) : null,
|
|
@@ -40,10 +47,14 @@ class RefundPaymentMappingModuleService extends (0, utils_1.MedusaService)({
|
|
|
40
47
|
if (list.length > 0) {
|
|
41
48
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Mapping already exists for return_id ${input.return_id}`);
|
|
42
49
|
}
|
|
50
|
+
const imagesValue = Array.isArray(input.images) ? input.images : [];
|
|
43
51
|
const created = await this.createRefundPaymentMappings({
|
|
44
52
|
return_id: input.return_id,
|
|
45
53
|
payment_id: input.payment_id ?? null,
|
|
46
54
|
is_refunded: false,
|
|
55
|
+
refund_mode: input.refund_mode ?? null,
|
|
56
|
+
images: imagesValue,
|
|
57
|
+
details: input.details ?? null,
|
|
47
58
|
});
|
|
48
59
|
const arr = Array.isArray(created) ? created : [created];
|
|
49
60
|
const first = arr[0];
|
|
@@ -107,6 +118,32 @@ class RefundPaymentMappingModuleService extends (0, utils_1.MedusaService)({
|
|
|
107
118
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Mapping not found after update");
|
|
108
119
|
return updated;
|
|
109
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Admin-only: update refund_mode, images, details. Partial update; only provided keys are updated.
|
|
123
|
+
*/
|
|
124
|
+
async updateAdminFields(returnId, data) {
|
|
125
|
+
const mapping = await this.getByReturnId(returnId);
|
|
126
|
+
if (!mapping) {
|
|
127
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Refund payment mapping for return_id ${returnId} not found`);
|
|
128
|
+
}
|
|
129
|
+
const updateData = {};
|
|
130
|
+
if (data.refund_mode !== undefined)
|
|
131
|
+
updateData.refund_mode = data.refund_mode;
|
|
132
|
+
if (data.images !== undefined)
|
|
133
|
+
updateData.images = Array.isArray(data.images) ? data.images : [];
|
|
134
|
+
if (data.details !== undefined)
|
|
135
|
+
updateData.details = data.details;
|
|
136
|
+
if (Object.keys(updateData).length === 0)
|
|
137
|
+
return mapping;
|
|
138
|
+
await this.updateRefundPaymentMappings({
|
|
139
|
+
selector: { id: mapping.id },
|
|
140
|
+
data: updateData,
|
|
141
|
+
});
|
|
142
|
+
const updated = await this.getByReturnId(returnId);
|
|
143
|
+
if (!updated)
|
|
144
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Mapping not found after update");
|
|
145
|
+
return updated;
|
|
146
|
+
}
|
|
110
147
|
}
|
|
111
148
|
exports.default = RefundPaymentMappingModuleService;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3JlZnVuZC1wYXltZW50LW1hcHBpbmcvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFzRTtBQUV0RSxtQ0FBdUQ7QUFDdkQsNkZBQWtFO0FBZWxFLE1BQXFCLGlDQUFrQyxTQUFRLElBQUEscUJBQWEsRUFBQztJQUMzRSxvQkFBb0IsRUFBcEIsZ0NBQW9CO0NBQ3JCLENBQUM7SUFHQSxZQUFZLFNBQStCO1FBQ3pDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUE7SUFDbkMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8scUNBQTZCLENBQUE7SUFDdEMsQ0FBQztJQUVTLFNBQVMsQ0FBQyxHQUFZO1FBQzlCLElBQ0UsQ0FBQyxHQUFHO1lBQ0osT0FBTyxHQUFHLEtBQUssUUFBUTtZQUN2QixDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUNkLENBQUMsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLEVBQ3JCLENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7UUFDeEQsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLEdBV1gsQ0FBQTtRQUNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7UUFDNUIsTUFBTSxNQUFNLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDL0MsQ0FBQyxDQUFFLFNBQXVCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7WUFDNUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUNOLE9BQU87WUFDTCxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDVixT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
|