order-management 0.0.23 → 0.0.24
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 +128 -20
- package/.medusa/server/src/admin/index.mjs +128 -20
- package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +44 -23
- package/.medusa/server/src/api/admin/swaps/[id]/confirm-exchange/route.js +46 -10
- package/.medusa/server/src/api/admin/swaps/[id]/route.js +10 -1
- package/.medusa/server/src/helpers/index.js +2 -1
- package/.medusa/server/src/helpers/order-exchange-data.js +59 -0
- package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +8 -5
- package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +10 -6
- package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +4 -4
- package/.medusa/server/src/workflows/swaps/confirm-exchange-workflow.js +5 -5
- package/package.json +1 -1
|
@@ -459,6 +459,10 @@ const SwapDetailPage = () => {
|
|
|
459
459
|
const [isUpdating, setIsUpdating] = react.useState(false);
|
|
460
460
|
const [isApproving, setIsApproving] = react.useState(false);
|
|
461
461
|
const [isRejecting, setIsRejecting] = react.useState(false);
|
|
462
|
+
const [isCreatingExchange, setIsCreatingExchange] = react.useState(false);
|
|
463
|
+
const [sendNotification, setSendNotification] = react.useState(false);
|
|
464
|
+
const [exchangeError, setExchangeError] = react.useState(null);
|
|
465
|
+
const [exchangeSuccess, setExchangeSuccess] = react.useState(false);
|
|
462
466
|
const [error, setError] = react.useState(null);
|
|
463
467
|
const [updateError, setUpdateError] = react.useState(null);
|
|
464
468
|
const [updateSuccess, setUpdateSuccess] = react.useState(false);
|
|
@@ -555,9 +559,6 @@ const SwapDetailPage = () => {
|
|
|
555
559
|
setSwap(payload.swap);
|
|
556
560
|
setUpdateSuccess(true);
|
|
557
561
|
setTimeout(() => setUpdateSuccess(false), 5e3);
|
|
558
|
-
if (payload.show_exchange_form && payload.order_id) {
|
|
559
|
-
window.open(`/app/orders/${payload.order_id}/exchanges?swap_id=${id}`, "_blank");
|
|
560
|
-
}
|
|
561
562
|
const detailResponse = await fetch(`/admin/swaps/${id}`, {
|
|
562
563
|
credentials: "include"
|
|
563
564
|
});
|
|
@@ -612,6 +613,47 @@ const SwapDetailPage = () => {
|
|
|
612
613
|
setIsRejecting(false);
|
|
613
614
|
}
|
|
614
615
|
};
|
|
616
|
+
const handleCreateExchange = async () => {
|
|
617
|
+
if (!id) {
|
|
618
|
+
return;
|
|
619
|
+
}
|
|
620
|
+
try {
|
|
621
|
+
setIsCreatingExchange(true);
|
|
622
|
+
setExchangeError(null);
|
|
623
|
+
setExchangeSuccess(false);
|
|
624
|
+
const response = await fetch(`/admin/swaps/${id}/confirm-exchange`, {
|
|
625
|
+
method: "POST",
|
|
626
|
+
headers: {
|
|
627
|
+
"Content-Type": "application/json"
|
|
628
|
+
},
|
|
629
|
+
credentials: "include",
|
|
630
|
+
body: JSON.stringify({
|
|
631
|
+
send_notification: sendNotification
|
|
632
|
+
})
|
|
633
|
+
});
|
|
634
|
+
if (!response.ok) {
|
|
635
|
+
const errorData = await response.json().catch(() => ({ message: "Failed to create exchange" }));
|
|
636
|
+
throw new Error(errorData.message || errorData.error || "Failed to create exchange");
|
|
637
|
+
}
|
|
638
|
+
const result = await response.json();
|
|
639
|
+
setSwap(result.swap);
|
|
640
|
+
setExchangeSuccess(true);
|
|
641
|
+
setTimeout(() => setExchangeSuccess(false), 5e3);
|
|
642
|
+
const detailResponse = await fetch(`/admin/swaps/${id}`, {
|
|
643
|
+
credentials: "include"
|
|
644
|
+
});
|
|
645
|
+
if (detailResponse.ok) {
|
|
646
|
+
const detailPayload = await detailResponse.json();
|
|
647
|
+
setSwap(detailPayload.swap);
|
|
648
|
+
setOrder(detailPayload.order || null);
|
|
649
|
+
}
|
|
650
|
+
} catch (createErr) {
|
|
651
|
+
const message = createErr instanceof Error ? createErr.message : "Unable to create exchange";
|
|
652
|
+
setExchangeError(message);
|
|
653
|
+
} finally {
|
|
654
|
+
setIsCreatingExchange(false);
|
|
655
|
+
}
|
|
656
|
+
};
|
|
615
657
|
if (isLoading) {
|
|
616
658
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full p-6", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Container, { className: "mx-auto flex w-full max-w-5xl flex-col gap-6 p-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center py-16", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { children: "Loading swap..." }) }) }) });
|
|
617
659
|
}
|
|
@@ -723,19 +765,85 @@ const SwapDetailPage = () => {
|
|
|
723
765
|
children: "View Exchange"
|
|
724
766
|
}
|
|
725
767
|
) })
|
|
726
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-
|
|
727
|
-
/* @__PURE__ */ jsxRuntime.
|
|
768
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
769
|
+
swap.return_items && swap.return_items.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
770
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h3", className: "mb-3 text-base", children: "Return Items (Inbound)" }),
|
|
771
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden rounded-xl border border-ui-border-base", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "min-w-full divide-y divide-ui-border-base", children: [
|
|
772
|
+
/* @__PURE__ */ jsxRuntime.jsx("thead", { className: "bg-ui-bg-subtle", children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
773
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Item" }),
|
|
774
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Quantity" }),
|
|
775
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Reason" })
|
|
776
|
+
] }) }),
|
|
777
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-ui-border-subtle bg-ui-bg-base", children: swap.return_items.map((item, index) => {
|
|
778
|
+
var _a2;
|
|
779
|
+
const orderItem = (_a2 = order == null ? void 0 : order.items) == null ? void 0 : _a2.find((oi) => oi.id === item.id);
|
|
780
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
781
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-4 font-medium text-ui-fg-base", children: (orderItem == null ? void 0 : orderItem.title) || item.id }),
|
|
782
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-4 text-ui-fg-subtle", children: item.quantity }),
|
|
783
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-4 text-ui-fg-subtle", children: item.reason || "—" })
|
|
784
|
+
] }, item.id || index);
|
|
785
|
+
}) })
|
|
786
|
+
] }) })
|
|
787
|
+
] }),
|
|
788
|
+
swap.new_items && swap.new_items.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
789
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h3", className: "mb-3 text-base", children: "New Items (Outbound)" }),
|
|
790
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden rounded-xl border border-ui-border-base", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "min-w-full divide-y divide-ui-border-base", children: [
|
|
791
|
+
/* @__PURE__ */ jsxRuntime.jsx("thead", { className: "bg-ui-bg-subtle", children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
792
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Product/Variant" }),
|
|
793
|
+
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Quantity" })
|
|
794
|
+
] }) }),
|
|
795
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-ui-border-subtle bg-ui-bg-base", children: swap.new_items.map((item, index) => {
|
|
796
|
+
var _a2;
|
|
797
|
+
const orderItem = (_a2 = order == null ? void 0 : order.items) == null ? void 0 : _a2.find((oi) => oi.variant_id === item.variant_id);
|
|
798
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
799
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-4 font-medium text-ui-fg-base", children: (orderItem == null ? void 0 : orderItem.title) || item.variant_id }),
|
|
800
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-4 text-ui-fg-subtle", children: item.quantity })
|
|
801
|
+
] }, item.variant_id || index);
|
|
802
|
+
}) })
|
|
803
|
+
] }) })
|
|
804
|
+
] }),
|
|
805
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 rounded-lg border border-ui-border-base bg-ui-bg-subtle p-4", children: [
|
|
806
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h3", className: "text-base", children: "Exchange Details" }),
|
|
807
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-3 md:grid-cols-2", children: [
|
|
808
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
809
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Return Location" }),
|
|
810
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "font-medium", children: swap.return_location_id || "—" })
|
|
811
|
+
] }),
|
|
812
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
813
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Return Shipping Method" }),
|
|
814
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "font-medium", children: swap.return_shipping_method_id || "—" })
|
|
815
|
+
] }),
|
|
816
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
817
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Outbound Shipping Method" }),
|
|
818
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "font-medium", children: swap.outbound_shipping_method_id || "—" })
|
|
819
|
+
] })
|
|
820
|
+
] })
|
|
821
|
+
] }),
|
|
822
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
823
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
824
|
+
"input",
|
|
825
|
+
{
|
|
826
|
+
type: "checkbox",
|
|
827
|
+
id: "send-notification",
|
|
828
|
+
checked: sendNotification,
|
|
829
|
+
onChange: (e) => setSendNotification(e.target.checked),
|
|
830
|
+
className: "h-4 w-4 rounded border-ui-border-base text-ui-fg-interactive focus:ring-2 focus:ring-ui-fg-interactive"
|
|
831
|
+
}
|
|
832
|
+
),
|
|
833
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "send-notification", className: "cursor-pointer", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", children: "Send notification to customer about exchange" }) })
|
|
834
|
+
] }),
|
|
835
|
+
exchangeError && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-ui-border-error bg-ui-bg-error-subtle p-3", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-error", children: exchangeError }) }),
|
|
836
|
+
exchangeSuccess && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-ui-border-success bg-ui-bg-success-subtle p-3", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-success", children: "Exchange created successfully!" }) }),
|
|
728
837
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
729
838
|
ui.Button,
|
|
730
839
|
{
|
|
731
840
|
variant: "primary",
|
|
732
|
-
onClick:
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
children: "Create Exchange"
|
|
841
|
+
onClick: handleCreateExchange,
|
|
842
|
+
disabled: isCreatingExchange,
|
|
843
|
+
isLoading: isCreatingExchange,
|
|
844
|
+
children: "Confirm & Create Exchange"
|
|
736
845
|
}
|
|
737
|
-
) })
|
|
738
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "The exchange will be automatically linked to this swap once created." })
|
|
846
|
+
) })
|
|
739
847
|
] })
|
|
740
848
|
] }),
|
|
741
849
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [
|
|
@@ -1197,12 +1305,6 @@ const routeModule = {
|
|
|
1197
1305
|
};
|
|
1198
1306
|
const menuItemModule = {
|
|
1199
1307
|
menuItems: [
|
|
1200
|
-
{
|
|
1201
|
-
label: config$2.label,
|
|
1202
|
-
icon: config$2.icon,
|
|
1203
|
-
path: "/returns",
|
|
1204
|
-
nested: void 0
|
|
1205
|
-
},
|
|
1206
1308
|
{
|
|
1207
1309
|
label: config$3.label,
|
|
1208
1310
|
icon: config$3.icon,
|
|
@@ -1210,9 +1312,9 @@ const menuItemModule = {
|
|
|
1210
1312
|
nested: void 0
|
|
1211
1313
|
},
|
|
1212
1314
|
{
|
|
1213
|
-
label: config.label,
|
|
1214
|
-
icon: config.icon,
|
|
1215
|
-
path: "/returns
|
|
1315
|
+
label: config$2.label,
|
|
1316
|
+
icon: config$2.icon,
|
|
1317
|
+
path: "/returns",
|
|
1216
1318
|
nested: void 0
|
|
1217
1319
|
},
|
|
1218
1320
|
{
|
|
@@ -1220,6 +1322,12 @@ const menuItemModule = {
|
|
|
1220
1322
|
icon: config$1.icon,
|
|
1221
1323
|
path: "/swaps/:id",
|
|
1222
1324
|
nested: void 0
|
|
1325
|
+
},
|
|
1326
|
+
{
|
|
1327
|
+
label: config.label,
|
|
1328
|
+
icon: config.icon,
|
|
1329
|
+
path: "/returns/:id",
|
|
1330
|
+
nested: void 0
|
|
1223
1331
|
}
|
|
1224
1332
|
]
|
|
1225
1333
|
};
|
|
@@ -458,6 +458,10 @@ const SwapDetailPage = () => {
|
|
|
458
458
|
const [isUpdating, setIsUpdating] = useState(false);
|
|
459
459
|
const [isApproving, setIsApproving] = useState(false);
|
|
460
460
|
const [isRejecting, setIsRejecting] = useState(false);
|
|
461
|
+
const [isCreatingExchange, setIsCreatingExchange] = useState(false);
|
|
462
|
+
const [sendNotification, setSendNotification] = useState(false);
|
|
463
|
+
const [exchangeError, setExchangeError] = useState(null);
|
|
464
|
+
const [exchangeSuccess, setExchangeSuccess] = useState(false);
|
|
461
465
|
const [error, setError] = useState(null);
|
|
462
466
|
const [updateError, setUpdateError] = useState(null);
|
|
463
467
|
const [updateSuccess, setUpdateSuccess] = useState(false);
|
|
@@ -554,9 +558,6 @@ const SwapDetailPage = () => {
|
|
|
554
558
|
setSwap(payload.swap);
|
|
555
559
|
setUpdateSuccess(true);
|
|
556
560
|
setTimeout(() => setUpdateSuccess(false), 5e3);
|
|
557
|
-
if (payload.show_exchange_form && payload.order_id) {
|
|
558
|
-
window.open(`/app/orders/${payload.order_id}/exchanges?swap_id=${id}`, "_blank");
|
|
559
|
-
}
|
|
560
561
|
const detailResponse = await fetch(`/admin/swaps/${id}`, {
|
|
561
562
|
credentials: "include"
|
|
562
563
|
});
|
|
@@ -611,6 +612,47 @@ const SwapDetailPage = () => {
|
|
|
611
612
|
setIsRejecting(false);
|
|
612
613
|
}
|
|
613
614
|
};
|
|
615
|
+
const handleCreateExchange = async () => {
|
|
616
|
+
if (!id) {
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
619
|
+
try {
|
|
620
|
+
setIsCreatingExchange(true);
|
|
621
|
+
setExchangeError(null);
|
|
622
|
+
setExchangeSuccess(false);
|
|
623
|
+
const response = await fetch(`/admin/swaps/${id}/confirm-exchange`, {
|
|
624
|
+
method: "POST",
|
|
625
|
+
headers: {
|
|
626
|
+
"Content-Type": "application/json"
|
|
627
|
+
},
|
|
628
|
+
credentials: "include",
|
|
629
|
+
body: JSON.stringify({
|
|
630
|
+
send_notification: sendNotification
|
|
631
|
+
})
|
|
632
|
+
});
|
|
633
|
+
if (!response.ok) {
|
|
634
|
+
const errorData = await response.json().catch(() => ({ message: "Failed to create exchange" }));
|
|
635
|
+
throw new Error(errorData.message || errorData.error || "Failed to create exchange");
|
|
636
|
+
}
|
|
637
|
+
const result = await response.json();
|
|
638
|
+
setSwap(result.swap);
|
|
639
|
+
setExchangeSuccess(true);
|
|
640
|
+
setTimeout(() => setExchangeSuccess(false), 5e3);
|
|
641
|
+
const detailResponse = await fetch(`/admin/swaps/${id}`, {
|
|
642
|
+
credentials: "include"
|
|
643
|
+
});
|
|
644
|
+
if (detailResponse.ok) {
|
|
645
|
+
const detailPayload = await detailResponse.json();
|
|
646
|
+
setSwap(detailPayload.swap);
|
|
647
|
+
setOrder(detailPayload.order || null);
|
|
648
|
+
}
|
|
649
|
+
} catch (createErr) {
|
|
650
|
+
const message = createErr instanceof Error ? createErr.message : "Unable to create exchange";
|
|
651
|
+
setExchangeError(message);
|
|
652
|
+
} finally {
|
|
653
|
+
setIsCreatingExchange(false);
|
|
654
|
+
}
|
|
655
|
+
};
|
|
614
656
|
if (isLoading) {
|
|
615
657
|
return /* @__PURE__ */ jsx("div", { className: "w-full p-6", children: /* @__PURE__ */ jsx(Container, { className: "mx-auto flex w-full max-w-5xl flex-col gap-6 p-6", children: /* @__PURE__ */ jsx("div", { className: "flex justify-center py-16", children: /* @__PURE__ */ jsx(Text, { children: "Loading swap..." }) }) }) });
|
|
616
658
|
}
|
|
@@ -722,19 +764,85 @@ const SwapDetailPage = () => {
|
|
|
722
764
|
children: "View Exchange"
|
|
723
765
|
}
|
|
724
766
|
) })
|
|
725
|
-
] }) : /* @__PURE__ */ jsxs("div", { className: "space-y-
|
|
726
|
-
/* @__PURE__ */
|
|
767
|
+
] }) : /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
|
|
768
|
+
swap.return_items && swap.return_items.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
769
|
+
/* @__PURE__ */ jsx(Heading, { level: "h3", className: "mb-3 text-base", children: "Return Items (Inbound)" }),
|
|
770
|
+
/* @__PURE__ */ jsx("div", { className: "overflow-hidden rounded-xl border border-ui-border-base", children: /* @__PURE__ */ jsxs("table", { className: "min-w-full divide-y divide-ui-border-base", children: [
|
|
771
|
+
/* @__PURE__ */ jsx("thead", { className: "bg-ui-bg-subtle", children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
772
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Item" }),
|
|
773
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Quantity" }),
|
|
774
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Reason" })
|
|
775
|
+
] }) }),
|
|
776
|
+
/* @__PURE__ */ jsx("tbody", { className: "divide-y divide-ui-border-subtle bg-ui-bg-base", children: swap.return_items.map((item, index) => {
|
|
777
|
+
var _a2;
|
|
778
|
+
const orderItem = (_a2 = order == null ? void 0 : order.items) == null ? void 0 : _a2.find((oi) => oi.id === item.id);
|
|
779
|
+
return /* @__PURE__ */ jsxs("tr", { children: [
|
|
780
|
+
/* @__PURE__ */ jsx("td", { className: "px-4 py-4 font-medium text-ui-fg-base", children: (orderItem == null ? void 0 : orderItem.title) || item.id }),
|
|
781
|
+
/* @__PURE__ */ jsx("td", { className: "px-4 py-4 text-ui-fg-subtle", children: item.quantity }),
|
|
782
|
+
/* @__PURE__ */ jsx("td", { className: "px-4 py-4 text-ui-fg-subtle", children: item.reason || "—" })
|
|
783
|
+
] }, item.id || index);
|
|
784
|
+
}) })
|
|
785
|
+
] }) })
|
|
786
|
+
] }),
|
|
787
|
+
swap.new_items && swap.new_items.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
788
|
+
/* @__PURE__ */ jsx(Heading, { level: "h3", className: "mb-3 text-base", children: "New Items (Outbound)" }),
|
|
789
|
+
/* @__PURE__ */ jsx("div", { className: "overflow-hidden rounded-xl border border-ui-border-base", children: /* @__PURE__ */ jsxs("table", { className: "min-w-full divide-y divide-ui-border-base", children: [
|
|
790
|
+
/* @__PURE__ */ jsx("thead", { className: "bg-ui-bg-subtle", children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
791
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Product/Variant" }),
|
|
792
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-ui-fg-muted", children: "Quantity" })
|
|
793
|
+
] }) }),
|
|
794
|
+
/* @__PURE__ */ jsx("tbody", { className: "divide-y divide-ui-border-subtle bg-ui-bg-base", children: swap.new_items.map((item, index) => {
|
|
795
|
+
var _a2;
|
|
796
|
+
const orderItem = (_a2 = order == null ? void 0 : order.items) == null ? void 0 : _a2.find((oi) => oi.variant_id === item.variant_id);
|
|
797
|
+
return /* @__PURE__ */ jsxs("tr", { children: [
|
|
798
|
+
/* @__PURE__ */ jsx("td", { className: "px-4 py-4 font-medium text-ui-fg-base", children: (orderItem == null ? void 0 : orderItem.title) || item.variant_id }),
|
|
799
|
+
/* @__PURE__ */ jsx("td", { className: "px-4 py-4 text-ui-fg-subtle", children: item.quantity })
|
|
800
|
+
] }, item.variant_id || index);
|
|
801
|
+
}) })
|
|
802
|
+
] }) })
|
|
803
|
+
] }),
|
|
804
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3 rounded-lg border border-ui-border-base bg-ui-bg-subtle p-4", children: [
|
|
805
|
+
/* @__PURE__ */ jsx(Heading, { level: "h3", className: "text-base", children: "Exchange Details" }),
|
|
806
|
+
/* @__PURE__ */ jsxs("div", { className: "grid gap-3 md:grid-cols-2", children: [
|
|
807
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
808
|
+
/* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "Return Location" }),
|
|
809
|
+
/* @__PURE__ */ jsx(Text, { className: "font-medium", children: swap.return_location_id || "—" })
|
|
810
|
+
] }),
|
|
811
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
812
|
+
/* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "Return Shipping Method" }),
|
|
813
|
+
/* @__PURE__ */ jsx(Text, { className: "font-medium", children: swap.return_shipping_method_id || "—" })
|
|
814
|
+
] }),
|
|
815
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
816
|
+
/* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "Outbound Shipping Method" }),
|
|
817
|
+
/* @__PURE__ */ jsx(Text, { className: "font-medium", children: swap.outbound_shipping_method_id || "—" })
|
|
818
|
+
] })
|
|
819
|
+
] })
|
|
820
|
+
] }),
|
|
821
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
822
|
+
/* @__PURE__ */ jsx(
|
|
823
|
+
"input",
|
|
824
|
+
{
|
|
825
|
+
type: "checkbox",
|
|
826
|
+
id: "send-notification",
|
|
827
|
+
checked: sendNotification,
|
|
828
|
+
onChange: (e) => setSendNotification(e.target.checked),
|
|
829
|
+
className: "h-4 w-4 rounded border-ui-border-base text-ui-fg-interactive focus:ring-2 focus:ring-ui-fg-interactive"
|
|
830
|
+
}
|
|
831
|
+
),
|
|
832
|
+
/* @__PURE__ */ jsx("label", { htmlFor: "send-notification", className: "cursor-pointer", children: /* @__PURE__ */ jsx(Text, { size: "small", children: "Send notification to customer about exchange" }) })
|
|
833
|
+
] }),
|
|
834
|
+
exchangeError && /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-ui-border-error bg-ui-bg-error-subtle p-3", children: /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-error", children: exchangeError }) }),
|
|
835
|
+
exchangeSuccess && /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-ui-border-success bg-ui-bg-success-subtle p-3", children: /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-success", children: "Exchange created successfully!" }) }),
|
|
727
836
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
728
837
|
Button,
|
|
729
838
|
{
|
|
730
839
|
variant: "primary",
|
|
731
|
-
onClick:
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
children: "Create Exchange"
|
|
840
|
+
onClick: handleCreateExchange,
|
|
841
|
+
disabled: isCreatingExchange,
|
|
842
|
+
isLoading: isCreatingExchange,
|
|
843
|
+
children: "Confirm & Create Exchange"
|
|
735
844
|
}
|
|
736
|
-
) })
|
|
737
|
-
/* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "The exchange will be automatically linked to this swap once created." })
|
|
845
|
+
) })
|
|
738
846
|
] })
|
|
739
847
|
] }),
|
|
740
848
|
/* @__PURE__ */ jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [
|
|
@@ -1196,12 +1304,6 @@ const routeModule = {
|
|
|
1196
1304
|
};
|
|
1197
1305
|
const menuItemModule = {
|
|
1198
1306
|
menuItems: [
|
|
1199
|
-
{
|
|
1200
|
-
label: config$2.label,
|
|
1201
|
-
icon: config$2.icon,
|
|
1202
|
-
path: "/returns",
|
|
1203
|
-
nested: void 0
|
|
1204
|
-
},
|
|
1205
1307
|
{
|
|
1206
1308
|
label: config$3.label,
|
|
1207
1309
|
icon: config$3.icon,
|
|
@@ -1209,9 +1311,9 @@ const menuItemModule = {
|
|
|
1209
1311
|
nested: void 0
|
|
1210
1312
|
},
|
|
1211
1313
|
{
|
|
1212
|
-
label: config.label,
|
|
1213
|
-
icon: config.icon,
|
|
1214
|
-
path: "/returns
|
|
1314
|
+
label: config$2.label,
|
|
1315
|
+
icon: config$2.icon,
|
|
1316
|
+
path: "/returns",
|
|
1215
1317
|
nested: void 0
|
|
1216
1318
|
},
|
|
1217
1319
|
{
|
|
@@ -1219,6 +1321,12 @@ const menuItemModule = {
|
|
|
1219
1321
|
icon: config$1.icon,
|
|
1220
1322
|
path: "/swaps/:id",
|
|
1221
1323
|
nested: void 0
|
|
1324
|
+
},
|
|
1325
|
+
{
|
|
1326
|
+
label: config.label,
|
|
1327
|
+
icon: config.icon,
|
|
1328
|
+
path: "/returns/:id",
|
|
1329
|
+
nested: void 0
|
|
1222
1330
|
}
|
|
1223
1331
|
]
|
|
1224
1332
|
};
|
|
@@ -5,6 +5,7 @@ const utils_1 = require("@medusajs/framework/utils");
|
|
|
5
5
|
const approve_swap_workflow_1 = require("../../../../../workflows/swaps/approve-swap-workflow");
|
|
6
6
|
const validators_1 = require("../../validators");
|
|
7
7
|
const swap_1 = require("../../../../../modules/swap");
|
|
8
|
+
const order_exchange_data_1 = require("../../../../../helpers/order-exchange-data");
|
|
8
9
|
const zod_1 = require("zod");
|
|
9
10
|
const POST = async (req, res) => {
|
|
10
11
|
const { id } = req.params;
|
|
@@ -16,38 +17,58 @@ const POST = async (req, res) => {
|
|
|
16
17
|
const authContext = req.auth_context;
|
|
17
18
|
const adminId = authContext?.actor_id || authContext?.user_id || "admin";
|
|
18
19
|
try {
|
|
19
|
-
// Parse and validate request body for exchange details
|
|
20
|
+
// Parse and validate request body for exchange details (all fields optional now)
|
|
20
21
|
const exchangeDetails = validators_1.ApproveSwapSchema.parse(req.body || {});
|
|
21
|
-
//
|
|
22
|
-
|
|
22
|
+
// Get swap to retrieve order_id
|
|
23
|
+
const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
|
|
24
|
+
const swap = await swapService.retrieveSwap(id);
|
|
25
|
+
const swapData = swap;
|
|
26
|
+
// Auto-populate location and shipping methods from order data
|
|
27
|
+
let returnLocationId = exchangeDetails.return_location_id;
|
|
28
|
+
let returnShippingMethodId = exchangeDetails.return_shipping_method_id;
|
|
29
|
+
let outboundShippingMethodId = exchangeDetails.outbound_shipping_method_id;
|
|
30
|
+
if (swapData.order_id) {
|
|
31
|
+
try {
|
|
32
|
+
const orderExchangeData = await (0, order_exchange_data_1.getOrderExchangeData)(swapData.order_id, req.scope);
|
|
33
|
+
// Use order's fulfillment location if not provided
|
|
34
|
+
if (!returnLocationId && orderExchangeData.location_id) {
|
|
35
|
+
returnLocationId = orderExchangeData.location_id;
|
|
36
|
+
}
|
|
37
|
+
// Use Standard Shipping for return if not provided
|
|
38
|
+
if (!returnShippingMethodId && orderExchangeData.standard_shipping_method_id) {
|
|
39
|
+
returnShippingMethodId = orderExchangeData.standard_shipping_method_id;
|
|
40
|
+
}
|
|
41
|
+
// Use last shipping method for outbound (or Standard if last was Standard)
|
|
42
|
+
if (!outboundShippingMethodId) {
|
|
43
|
+
if (orderExchangeData.last_shipping_method_id) {
|
|
44
|
+
outboundShippingMethodId = orderExchangeData.last_shipping_method_id;
|
|
45
|
+
}
|
|
46
|
+
else if (orderExchangeData.standard_shipping_method_id) {
|
|
47
|
+
// Fallback to Standard Shipping if no last shipping method found
|
|
48
|
+
outboundShippingMethodId = orderExchangeData.standard_shipping_method_id;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// Log warning but continue - use provided values or null
|
|
54
|
+
console.warn("[Approve Swap] Failed to fetch order exchange data:", error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Store exchange details and approve swap
|
|
23
58
|
const { result: approvalResult } = await (0, approve_swap_workflow_1.approveSwapWorkflow)(req.scope).run({
|
|
24
59
|
input: {
|
|
25
60
|
swap_id: id,
|
|
26
61
|
admin_id: adminId,
|
|
27
|
-
return_location_id:
|
|
28
|
-
return_shipping_method_id:
|
|
29
|
-
outbound_shipping_method_id:
|
|
62
|
+
return_location_id: returnLocationId,
|
|
63
|
+
return_shipping_method_id: returnShippingMethodId,
|
|
64
|
+
outbound_shipping_method_id: outboundShippingMethodId,
|
|
30
65
|
send_notification: exchangeDetails.send_notification,
|
|
31
66
|
},
|
|
32
67
|
});
|
|
33
|
-
//
|
|
34
|
-
const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
|
|
35
|
-
const swap = await swapService.retrieveSwap(id);
|
|
36
|
-
const swapData = swap;
|
|
37
|
-
// Return response with flag to show exchange form
|
|
68
|
+
// Return response with swap data
|
|
38
69
|
res.json({
|
|
39
70
|
swap: approvalResult.swap,
|
|
40
|
-
|
|
41
|
-
order_id: swapData.order_id,
|
|
42
|
-
exchange_details: {
|
|
43
|
-
return_items: swapData.return_items,
|
|
44
|
-
new_items: swapData.new_items,
|
|
45
|
-
return_location_id: exchangeDetails.return_location_id,
|
|
46
|
-
return_shipping_method_id: exchangeDetails.return_shipping_method_id,
|
|
47
|
-
outbound_shipping_method_id: exchangeDetails.outbound_shipping_method_id,
|
|
48
|
-
send_notification: exchangeDetails.send_notification,
|
|
49
|
-
},
|
|
50
|
-
message: "Please create the exchange using the form below.",
|
|
71
|
+
message: "Swap approved successfully. You can now create the exchange.",
|
|
51
72
|
});
|
|
52
73
|
}
|
|
53
74
|
catch (error) {
|
|
@@ -121,4 +142,4 @@ const POST = async (req, res) => {
|
|
|
121
142
|
}
|
|
122
143
|
};
|
|
123
144
|
exports.POST = POST;
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vYXBwcm92ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsZ0dBQTBGO0FBQzFGLGlEQUFvRDtBQUNwRCxzREFBeUQ7QUFFekQsb0ZBQWlGO0FBQ2pGLDZCQUF1QjtBQUVoQixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUE7UUFDeEQsT0FBTTtJQUNSLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsTUFBTSxXQUFXLEdBQUksR0FFbkIsQ0FBQyxZQUFZLENBQUE7SUFFZixNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxPQUFPLElBQUksT0FBTyxDQUFBO0lBRXhFLElBQUksQ0FBQztRQUNILGlGQUFpRjtRQUNqRixNQUFNLGVBQWUsR0FBRyw4QkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUUvRCxnQ0FBZ0M7UUFDaEMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQWMsa0JBQVcsQ0FBQyxDQUFBO1FBQy9ELE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUloQixDQUFBO1FBRUQsOERBQThEO1FBQzlE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
|
|
@@ -3,17 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.POST = void 0;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const confirm_exchange_workflow_1 = require("../../../../../workflows/swaps/confirm-exchange-workflow");
|
|
6
|
+
const swap_1 = require("../../../../../modules/swap");
|
|
6
7
|
const zod_1 = require("zod");
|
|
7
8
|
const ConfirmExchangeSchema = zod_1.z.object({
|
|
8
9
|
return_items: zod_1.z.array(zod_1.z.object({
|
|
9
10
|
item_id: zod_1.z.string(),
|
|
10
11
|
quantity: zod_1.z.number().positive(),
|
|
11
12
|
reason_id: zod_1.z.string().optional(),
|
|
12
|
-
})),
|
|
13
|
+
})).optional(),
|
|
13
14
|
new_items: zod_1.z.array(zod_1.z.object({
|
|
14
15
|
variant_id: zod_1.z.string(),
|
|
15
16
|
quantity: zod_1.z.number().positive(),
|
|
16
|
-
})),
|
|
17
|
+
})).optional(),
|
|
17
18
|
return_location_id: zod_1.z.string().optional(),
|
|
18
19
|
return_shipping_method_id: zod_1.z.string().optional(),
|
|
19
20
|
outbound_shipping_method_id: zod_1.z.string().optional(),
|
|
@@ -29,18 +30,53 @@ const POST = async (req, res) => {
|
|
|
29
30
|
const authContext = req.auth_context;
|
|
30
31
|
const adminId = authContext?.actor_id || authContext?.user_id || "admin";
|
|
31
32
|
try {
|
|
32
|
-
// Parse and validate request body
|
|
33
|
+
// Parse and validate request body (items are now optional - will use swap data)
|
|
33
34
|
const exchangeData = ConfirmExchangeSchema.parse(req.body || {});
|
|
34
|
-
//
|
|
35
|
+
// Retrieve swap to get stored items and shipping details
|
|
36
|
+
const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
|
|
37
|
+
const swap = await swapService.retrieveSwap(id);
|
|
38
|
+
const swapData = swap;
|
|
39
|
+
// Convert swap return_items to ConfirmExchange format if needed
|
|
40
|
+
let returnItems = exchangeData.return_items;
|
|
41
|
+
if (!returnItems && swapData.return_items) {
|
|
42
|
+
if (Array.isArray(swapData.return_items)) {
|
|
43
|
+
returnItems = swapData.return_items.map((item) => {
|
|
44
|
+
const itemData = item;
|
|
45
|
+
return {
|
|
46
|
+
item_id: itemData.id || itemData.item_id || "",
|
|
47
|
+
quantity: itemData.quantity || 0,
|
|
48
|
+
reason_id: itemData.reason_id || itemData.reason,
|
|
49
|
+
};
|
|
50
|
+
}).filter(item => item.item_id && item.quantity > 0);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Convert swap new_items to ConfirmExchange format if needed
|
|
54
|
+
let newItems = exchangeData.new_items;
|
|
55
|
+
if (!newItems && swapData.new_items) {
|
|
56
|
+
if (Array.isArray(swapData.new_items)) {
|
|
57
|
+
newItems = swapData.new_items.map((item) => {
|
|
58
|
+
const itemData = item;
|
|
59
|
+
return {
|
|
60
|
+
variant_id: itemData.variant_id || "",
|
|
61
|
+
quantity: itemData.quantity || 0,
|
|
62
|
+
};
|
|
63
|
+
}).filter(item => item.variant_id && item.quantity > 0);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Always use swap's location and shipping method IDs (ignore form input)
|
|
67
|
+
const returnLocationId = swapData.return_location_id || exchangeData.return_location_id;
|
|
68
|
+
const returnShippingMethodId = swapData.return_shipping_method_id || exchangeData.return_shipping_method_id;
|
|
69
|
+
const outboundShippingMethodId = swapData.outbound_shipping_method_id || exchangeData.outbound_shipping_method_id;
|
|
70
|
+
// Create exchange and approve swap using swap data
|
|
35
71
|
const { result } = await (0, confirm_exchange_workflow_1.confirmExchangeWorkflow)(req.scope).run({
|
|
36
72
|
input: {
|
|
37
73
|
swap_id: id,
|
|
38
74
|
admin_id: adminId,
|
|
39
|
-
return_items:
|
|
40
|
-
new_items:
|
|
41
|
-
return_location_id:
|
|
42
|
-
return_shipping_method_id:
|
|
43
|
-
outbound_shipping_method_id:
|
|
75
|
+
return_items: returnItems,
|
|
76
|
+
new_items: newItems,
|
|
77
|
+
return_location_id: returnLocationId,
|
|
78
|
+
return_shipping_method_id: returnShippingMethodId,
|
|
79
|
+
outbound_shipping_method_id: outboundShippingMethodId,
|
|
44
80
|
send_notification: exchangeData.send_notification,
|
|
45
81
|
},
|
|
46
82
|
});
|
|
@@ -106,4 +142,4 @@ const POST = async (req, res) => {
|
|
|
106
142
|
}
|
|
107
143
|
};
|
|
108
144
|
exports.POST = POST;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vY29uZmlybS1leGNoYW5nZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsd0dBQWtHO0FBQ2xHLHNEQUF5RDtBQUV6RCw2QkFBdUI7QUFFdkIsTUFBTSxxQkFBcUIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3JDLFlBQVksRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNuQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDbkIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDL0IsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDakMsQ0FBQyxDQUNILENBQUMsUUFBUSxFQUFFO0lBQ1osU0FBUyxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ2hCLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUN0QixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtLQUNoQyxDQUFDLENBQ0gsQ0FBQyxRQUFRLEVBQUU7SUFDWixrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pDLHlCQUF5QixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEQsMkJBQTJCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsRCxpQkFBaUIsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztDQUN6RCxDQUFD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
|
|
@@ -28,9 +28,18 @@ const GET = async (req, res) => {
|
|
|
28
28
|
"customer_id",
|
|
29
29
|
"customer.*",
|
|
30
30
|
"items.*",
|
|
31
|
+
"items.id",
|
|
32
|
+
"items.title",
|
|
33
|
+
"items.variant_id",
|
|
34
|
+
"items.quantity",
|
|
31
35
|
"total",
|
|
32
36
|
"currency_code",
|
|
33
37
|
"created_at",
|
|
38
|
+
"fulfillments.*",
|
|
39
|
+
"fulfillments.location_id",
|
|
40
|
+
"shipping_methods.*",
|
|
41
|
+
"shipping_methods.id",
|
|
42
|
+
"shipping_methods.name",
|
|
34
43
|
],
|
|
35
44
|
filters: {
|
|
36
45
|
id: [swapData.order_id],
|
|
@@ -67,4 +76,4 @@ const GET = async (req, res) => {
|
|
|
67
76
|
}
|
|
68
77
|
};
|
|
69
78
|
exports.GET = GET;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXVEO0FBQ3ZELHFEQUFrRztBQUVsRyxtREFBc0Q7QUFHL0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNKLEVBQUU7SUFDakIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFBO1FBQ3hELE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQWMsa0JBQVcsQ0FBQyxDQUFBO1FBRS9ELE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUE2QixDQUFBO1FBRTlDLGtDQUFrQztRQUNsQyxJQUFJLEtBQUssR0FBWSxJQUFJLENBQUE7UUFDekIsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDO2dCQUNILE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNuQyxpQ0FBeUIsQ0FBQyxZQUFZLENBQ3ZDLENBQUE7Z0JBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSxtQ0FBMkIsRUFBQztvQkFDOUMsVUFBVSxFQUFFLE9BQU87b0JBQ25CLE1BQU0sRUFBRTt3QkFDTixJQUFJO3dCQUNKLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxVQUFVO3dCQUNWLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3dCQUMxQixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3FCQUN4QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztxQkFDeEI7aUJBQ0YsQ0FBQyxDQUFBO2dCQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUM3QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO2dCQUMxRSxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtZQUMvQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixzREFBc0Q7Z0JBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDeEQsQ0FBQztRQUNILENBQUM7UUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsSUFBSTtZQUNKLEtBQUs7U0FDTixDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLG1CQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFVBQVUsR0FDZCxLQUFLLENBQUMsSUFBSSxLQUFLLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUE7WUFFeEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO1FBQzdFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsS0FBSyxFQUFFLFlBQVk7U0FDcEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQTtBQW5GWSxRQUFBLEdBQUcsT0FtRmYifQ==
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./swaps"), exports);
|
|
18
|
-
|
|
18
|
+
__exportStar(require("./order-exchange-data"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLHdEQUFxQyJ9
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrderExchangeData = getOrderExchangeData;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
/**
|
|
6
|
+
* Retrieves order exchange data including location and shipping methods
|
|
7
|
+
* @param order_id - The order ID to retrieve data for
|
|
8
|
+
* @param container - The Medusa container for resolving services
|
|
9
|
+
* @returns Order exchange data with location_id, standard_shipping_method_id, and last_shipping_method_id
|
|
10
|
+
*/
|
|
11
|
+
async function getOrderExchangeData(order_id, container) {
|
|
12
|
+
const remoteQuery = container.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
|
|
13
|
+
const queryObject = (0, utils_1.remoteQueryObjectFromString)({
|
|
14
|
+
entryPoint: "order",
|
|
15
|
+
fields: [
|
|
16
|
+
"id",
|
|
17
|
+
"fulfillments.*",
|
|
18
|
+
"fulfillments.location_id",
|
|
19
|
+
"shipping_methods.*",
|
|
20
|
+
"shipping_methods.id",
|
|
21
|
+
"shipping_methods.name",
|
|
22
|
+
],
|
|
23
|
+
filters: {
|
|
24
|
+
id: [order_id],
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
const orders = await remoteQuery(queryObject);
|
|
28
|
+
const orderArray = Array.isArray(orders) ? orders : orders ? [orders] : [];
|
|
29
|
+
const order = orderArray[0];
|
|
30
|
+
if (!order) {
|
|
31
|
+
return {};
|
|
32
|
+
}
|
|
33
|
+
const result = {};
|
|
34
|
+
// Extract location_id from first fulfillment
|
|
35
|
+
if (order.fulfillments && order.fulfillments.length > 0) {
|
|
36
|
+
const firstFulfillment = order.fulfillments[0];
|
|
37
|
+
if (firstFulfillment.location_id) {
|
|
38
|
+
result.location_id = firstFulfillment.location_id;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Find Standard Shipping method and get last shipping method
|
|
42
|
+
if (order.shipping_methods && order.shipping_methods.length > 0) {
|
|
43
|
+
// Get last shipping method (most recent)
|
|
44
|
+
const lastShippingMethod = order.shipping_methods[order.shipping_methods.length - 1];
|
|
45
|
+
if (lastShippingMethod?.id) {
|
|
46
|
+
result.last_shipping_method_id = lastShippingMethod.id;
|
|
47
|
+
}
|
|
48
|
+
// Find Standard Shipping method (case-insensitive search)
|
|
49
|
+
const standardShipping = order.shipping_methods.find((method) => {
|
|
50
|
+
const name = method.name?.toLowerCase() || "";
|
|
51
|
+
return name.includes("standard");
|
|
52
|
+
});
|
|
53
|
+
if (standardShipping?.id) {
|
|
54
|
+
result.standard_shipping_method_id = standardShipping.id;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZXhjaGFuZ2UtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oZWxwZXJzL29yZGVyLWV4Y2hhbmdlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsb0RBZ0VDO0FBaEZELHFEQUFrRztBQVVsRzs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsUUFBZ0IsRUFDaEIsU0FBd0I7SUFFeEIsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDbkMsaUNBQXlCLENBQUMsWUFBWSxDQUN2QyxDQUFBO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSxtQ0FBMkIsRUFBQztRQUM5QyxVQUFVLEVBQUUsT0FBTztRQUNuQixNQUFNLEVBQUU7WUFDTixJQUFJO1lBQ0osZ0JBQWdCO1lBQ2hCLDBCQUEwQjtZQUMxQixvQkFBb0I7WUFDcEIscUJBQXFCO1lBQ3JCLHVCQUF1QjtTQUN4QjtRQUNELE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQztTQUNmO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0MsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMxRSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUdsQixDQUFBO0lBRVIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQXNCLEVBQUUsQ0FBQTtJQUVwQyw2Q0FBNkM7SUFDN0MsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5QyxJQUFJLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFBO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEUseUNBQXlDO1FBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDcEYsSUFBSSxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMzQixNQUFNLENBQUMsdUJBQXVCLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFBO1FBQ3hELENBQUM7UUFFRCwwREFBMEQ7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDOUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUE7WUFDN0MsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2xDLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUN6QixNQUFNLENBQUMsMkJBQTJCLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFBO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDIn0=
|
|
@@ -124,16 +124,19 @@ exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medus
|
|
|
124
124
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNKNOWN_MODULES, `Failed to create exchange via workflow and service: Workflow error: ${errorMessage}, Service error: ${serviceErrorMessage}`);
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
|
+
// Use swap's outbound_shipping_method_id as fallback if not provided in input
|
|
128
|
+
const finalOutboundShippingMethodId = outbound_shipping_method_id ||
|
|
129
|
+
(swapData.outbound_shipping_method_id);
|
|
127
130
|
// Add outbound shipping method if provided
|
|
128
131
|
// Note: This may need to be done via Medusa's exchange API after creation
|
|
129
132
|
// depending on Medusa v2 API structure
|
|
130
|
-
if (
|
|
133
|
+
if (finalOutboundShippingMethodId) {
|
|
131
134
|
try {
|
|
132
135
|
const exchangeService = container.resolve("exchange");
|
|
133
136
|
if (exchangeService?.addShippingMethod) {
|
|
134
137
|
await exchangeService.addShippingMethod({
|
|
135
138
|
exchange_id: exchangeId,
|
|
136
|
-
shipping_method_id:
|
|
139
|
+
shipping_method_id: finalOutboundShippingMethodId,
|
|
137
140
|
});
|
|
138
141
|
}
|
|
139
142
|
}
|
|
@@ -193,7 +196,7 @@ exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medus
|
|
|
193
196
|
selector: { id: swap_id },
|
|
194
197
|
data: {
|
|
195
198
|
exchange_id: exchangeId,
|
|
196
|
-
outbound_shipping_method_id:
|
|
199
|
+
outbound_shipping_method_id: finalOutboundShippingMethodId || null,
|
|
197
200
|
send_notification: send_notification || false,
|
|
198
201
|
metadata: {
|
|
199
202
|
...swapMetadata,
|
|
@@ -202,7 +205,7 @@ exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medus
|
|
|
202
205
|
exchange_id: exchangeId,
|
|
203
206
|
exchange_created_at: new Date().toISOString(),
|
|
204
207
|
exchange_creation_method: creationMethod,
|
|
205
|
-
outbound_shipping_method_id,
|
|
208
|
+
outbound_shipping_method_id: finalOutboundShippingMethodId,
|
|
206
209
|
notification_sent: send_notification || false,
|
|
207
210
|
},
|
|
208
211
|
},
|
|
@@ -214,4 +217,4 @@ exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medus
|
|
|
214
217
|
swap: finalSwap || swap,
|
|
215
218
|
});
|
|
216
219
|
});
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lZHVzYS1leGNoYW5nZS1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9zd2FwL2NyZWF0ZS1tZWR1c2EtZXhjaGFuZ2Utc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBK0c7QUFDL0cscUVBQTRFO0FBRTVFLGdEQUFtRDtBQWlCdEMsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELHdCQUF3QixFQUN4QixLQUFLLEVBQ0gsS0FBb0MsRUFDcEMsRUFBRSxTQUFTLEVBQUUsRUFDMEMsRUFBRTtJQUN6RCxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRTlHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHFCQUFxQixDQUN0QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDBDQUEwQyxDQUMzQyxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQWMsa0JBQVcsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUtOLENBQUE7SUFFWCxJQUFLLFFBQXFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkQsMkJBQTJCO1FBQzNCLE9BQU8sSUFBSSw0QkFBWSxDQUFpQztZQUN0RCxXQUFXLEVBQUcsUUFBcUMs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
|
|
@@ -83,23 +83,27 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
|
|
|
83
83
|
quantity: item.quantity,
|
|
84
84
|
reason_id: item.reason, // Assuming reason is the reason_id
|
|
85
85
|
}));
|
|
86
|
+
// Use swap's location_id as fallback if not provided in input
|
|
87
|
+
const finalLocationId = return_location_id || swapData.return_location_id;
|
|
86
88
|
const medusaReturn = await orderService.createReturn({
|
|
87
89
|
order_id: swapData.order_id,
|
|
88
90
|
items: returnItemsForMedusa,
|
|
89
|
-
location_id:
|
|
91
|
+
location_id: finalLocationId,
|
|
90
92
|
});
|
|
91
93
|
returnId = medusaReturn.id;
|
|
94
|
+
// Use swap's return_shipping_method_id as fallback if not provided in input
|
|
95
|
+
const finalReturnShippingMethodId = return_shipping_method_id || swapData.return_shipping_method_id;
|
|
92
96
|
// Add return shipping method if provided
|
|
93
97
|
// Note: This may need to be done via Medusa's return API after creation
|
|
94
98
|
// depending on Medusa v2 API structure
|
|
95
|
-
if (
|
|
99
|
+
if (finalReturnShippingMethodId) {
|
|
96
100
|
// Try to resolve return service to add shipping method
|
|
97
101
|
try {
|
|
98
102
|
const returnService = container.resolve("return");
|
|
99
103
|
if (returnService?.addShippingMethod) {
|
|
100
104
|
await returnService.addShippingMethod({
|
|
101
105
|
return_id: returnId,
|
|
102
|
-
shipping_method_id:
|
|
106
|
+
shipping_method_id: finalReturnShippingMethodId,
|
|
103
107
|
});
|
|
104
108
|
}
|
|
105
109
|
}
|
|
@@ -132,8 +136,8 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
|
|
|
132
136
|
...medusaIntegration,
|
|
133
137
|
return_id: returnId,
|
|
134
138
|
return_created_at: new Date().toISOString(),
|
|
135
|
-
return_location_id,
|
|
136
|
-
return_shipping_method_id,
|
|
139
|
+
return_location_id: return_location_id || null,
|
|
140
|
+
return_shipping_method_id: return_shipping_method_id || null,
|
|
137
141
|
},
|
|
138
142
|
},
|
|
139
143
|
},
|
|
@@ -144,4 +148,4 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
|
|
|
144
148
|
swap: finalSwap || swap,
|
|
145
149
|
});
|
|
146
150
|
});
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lZHVzYS1yZXR1cm4tc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC9jcmVhdGUtbWVkdXNhLXJldHVybi1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQWtHO0FBRWxHLGdEQUFtRDtBQWdCdEMsUUFBQSxzQkFBc0IsR0FBRyxJQUFBLDBCQUFVLEVBQzlDLHNCQUFzQixFQUN0QixLQUFLLEVBQ0gsS0FBa0MsRUFDbEMsRUFBRSxTQUFTLEVBQUUsRUFDd0MsRUFBRTtJQUN2RCxNQUFNLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV4RyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQkFBcUIsQ0FDdEIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFjLGtCQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFPaEIsQ0FBQTtJQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsNEJBQTRCLENBQzdCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkIseUJBQXlCO1FBQ3pCLE9BQU8sSUFBSSw0QkFBWSxDQUErQjtZQUNwRCxTQUFT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
|
|
@@ -5,12 +5,12 @@ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
|
5
5
|
const swap_1 = require("../steps/swap");
|
|
6
6
|
exports.approveSwapWorkflow = (0, workflows_sdk_1.createWorkflow)("approve-swap", (input) => {
|
|
7
7
|
const { swap_id, admin_id, return_location_id, return_shipping_method_id, outbound_shipping_method_id, send_notification, } = input;
|
|
8
|
-
//
|
|
9
|
-
// Status
|
|
8
|
+
// Approve the swap and store exchange details
|
|
9
|
+
// Status changes to "approved" when admin approves
|
|
10
10
|
// Store exchange details in metadata for audit trail
|
|
11
11
|
const { swap: approvedSwap } = (0, swap_1.updateSwapStatusStep)({
|
|
12
12
|
swap_id,
|
|
13
|
-
status: "
|
|
13
|
+
status: "approved", // Change status to approved
|
|
14
14
|
metadata: {
|
|
15
15
|
approved_at: new Date().toISOString(),
|
|
16
16
|
approved_by: admin_id,
|
|
@@ -37,4 +37,4 @@ exports.approveSwapWorkflow = (0, workflows_sdk_1.createWorkflow)("approve-swap"
|
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
39
|
exports.default = exports.approveSwapWorkflow;
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92ZS1zd2FwLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zd2Fwcy9hcHByb3ZlLXN3YXAtd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHdDQUdzQjtBQU1ULFFBQUEsbUJBQW1CLEdBQUcsSUFBQSw4QkFBYyxFQUMvQyxjQUFjLEVBQ2QsQ0FDRSxLQUErQixFQUNjLEVBQUU7SUFDL0MsTUFBTSxFQUNKLE9BQU8sRUFDUCxRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IsaUJBQWlCLEdBQ2xCLEdBQUcsS0FBSyxDQUFBO0lBRVQsOENBQThDO0lBQzlDLG1EQUFtRDtJQUNuRCxxREFBcUQ7SUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFBLDJCQUFvQixFQUFDO1FBQ2xELE9BQU87UUFDUCxNQUFNLEVBQUUsVUFBVSxFQUFFLDRCQUE0QjtRQUNoRCxRQUFRLEVBQUU7WUFDUixXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDckMsV0FBVyxFQUFFLFFBQVE7WUFDckIseUJBQXlCLEVBQUUsSUFBSTtZQUMvQixnQkFBZ0IsRUFBRTtnQkFDaEIsa0JBQWtCO2dCQUNsQix5QkFBeUI7Z0JBQ3pCLDJCQUEyQjtnQkFDM0IsaUJBQWlCO2dCQUNqQixhQUFhLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7YUFDeEM7U0FDRjtLQUNGLENBQUMsQ0FBQTtJQUVGLHVEQUF1RDtJQUN2RCxNQUFNLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEdBQUcsSUFBQSxvQ0FBNkIsRUFBQztRQUN0RSxPQUFPO1FBQ1Asa0JBQWtCO1FBQ2xCLHlCQUF5QjtRQUN6QiwyQkFBMkI7UUFDM0IsaUJBQWlCO0tBQ2xCLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBNEI7UUFDckQsSUFBSSxFQUFFLHVCQUF1QjtLQUM5QixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLDJCQUFtQixDQUFBIn0=
|
|
@@ -10,15 +10,15 @@ exports.confirmExchangeWorkflow = (0, workflows_sdk_1.createWorkflow)("confirm-e
|
|
|
10
10
|
swap_id,
|
|
11
11
|
});
|
|
12
12
|
// Step 2: Create Medusa Return
|
|
13
|
-
//
|
|
13
|
+
// Use return_items from input if provided, otherwise step will use swap data
|
|
14
14
|
const { return_id, swap: swapWithReturn } = (0, swap_1.createMedusaReturnStep)({
|
|
15
15
|
swap_id,
|
|
16
16
|
return_location_id,
|
|
17
17
|
return_shipping_method_id,
|
|
18
|
-
return_items: return_items,
|
|
18
|
+
return_items: return_items, // Optional - step will fallback to swap data
|
|
19
19
|
});
|
|
20
20
|
// Step 3: Create Medusa Exchange linked to return
|
|
21
|
-
//
|
|
21
|
+
// Use new_items from input if provided, otherwise step will use swap data
|
|
22
22
|
// This will trigger Medusa's native exchange workflow which handles:
|
|
23
23
|
// - Fulfillment creation for new items
|
|
24
24
|
// - Payment Collection creation if difference_due > 0 (customer owes)
|
|
@@ -29,7 +29,7 @@ exports.confirmExchangeWorkflow = (0, workflows_sdk_1.createWorkflow)("confirm-e
|
|
|
29
29
|
return_id,
|
|
30
30
|
outbound_shipping_method_id,
|
|
31
31
|
send_notification,
|
|
32
|
-
new_items: new_items,
|
|
32
|
+
new_items: new_items, // Optional - step will fallback to swap data
|
|
33
33
|
});
|
|
34
34
|
// Step 4: Update swap status to "approved" after successful exchange creation
|
|
35
35
|
const { swap: finalSwap } = (0, swap_1.updateSwapStatusStep)({
|
|
@@ -48,4 +48,4 @@ exports.confirmExchangeWorkflow = (0, workflows_sdk_1.createWorkflow)("confirm-e
|
|
|
48
48
|
});
|
|
49
49
|
});
|
|
50
50
|
exports.default = exports.confirmExchangeWorkflow;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1leGNoYW5nZS13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3dhcHMvY29uZmlybS1leGNoYW5nZS13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFHMEM7QUFDMUMsd0NBS3NCO0FBTVQsUUFBQSx1QkFBdUIsR0FBRyxJQUFBLDhCQUFjLEVBQ25ELGtCQUFrQixFQUNsQixDQUNFLEtBQW1DLEVBQ2MsRUFBRTtJQUNuRCxNQUFNLEVBQ0osT0FBTyxFQUNQLFFBQVEsRUFDUixZQUFZLEVBQ1osU0FBUyxFQUNULGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzNCLGlCQUFpQixHQUNsQixHQUFHLEtBQUssQ0FBQTtJQUVULDZEQUE2RDtJQUM3RCxNQUFNLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUEsdUJBQWdCLEVBQUM7UUFDL0MsT0FBTztLQUNSLENBQUMsQ0FBQTtJQUVGLCtCQUErQjtJQUMvQiw2RUFBNkU7SUFDN0UsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBQSw2QkFBc0IsRUFBQztRQUNqRSxPQUFPO1FBQ1Asa0JBQWtCO1FBQ2xCLHlCQUF5QjtRQUN6QixZQUFZLEVBQUUsWUFBWSxFQUFFLDZDQUE2QztLQUMxRSxDQUFDLENBQUE7SUFFRixrREFBa0Q7SUFDbEQsMEVBQTBFO0lBQzFFLHFFQUFxRTtJQUNyRSx1Q0FBdUM7SUFDdkMsc0VBQXNFO0lBQ3RFLG1FQUFtRTtJQUNuRSxvRUFBb0U7SUFDcEUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFBLCtCQUF3QixFQUFDO1FBQ3ZFLE9BQU87UUFDUCxTQUFTO1FBQ1QsMkJBQTJCO1FBQzNCLGlCQUFpQjtRQUNqQixTQUFTLEVBQUUsU0FBUyxFQUFFLDZDQUE2QztLQUNwRSxDQUFDLENBQUE7SUFFRiw4RUFBOEU7SUFDOUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDJCQUFvQixFQUFDO1FBQy9DLE9BQU87UUFDUCxNQUFNLEVBQUUsVUFBVTtRQUNsQixRQUFRLEVBQUU7WUFDUixxQkFBcUIsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtZQUMvQyxxQkFBcUIsRUFBRSxRQUFRO1lBQy9CLHlCQUF5QixFQUFFLEtBQUs7U0FDakM7S0FDRixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQWdDO1FBQ3pELElBQUksRUFBRSxTQUFTO1FBQ2YsU0FBUztRQUNULFdBQVc7S0FDWixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLCtCQUF1QixDQUFBIn0=
|