order-management 0.0.21 → 0.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/.medusa/server/src/admin/index.js +513 -484
  2. package/.medusa/server/src/admin/index.mjs +513 -484
  3. package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +81 -31
  4. package/.medusa/server/src/api/admin/swaps/[id]/confirm-exchange/route.js +109 -0
  5. package/.medusa/server/src/api/admin/swaps/health/route.js +150 -0
  6. package/.medusa/server/src/api/admin/swaps/route.js +6 -12
  7. package/.medusa/server/src/api/admin/swaps/validators.js +9 -13
  8. package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +47 -2
  9. package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +8 -1
  10. package/.medusa/server/src/api/store/swaps/[id]/route.js +15 -4
  11. package/.medusa/server/src/api/store/swaps/route.js +53 -10
  12. package/.medusa/server/src/helpers/swaps.js +1 -1
  13. package/.medusa/server/src/modules/swap/migrations/Migration20260123144734.js +29 -0
  14. package/.medusa/server/src/modules/swap/migrations/Migration20260123162423.js +48 -0
  15. package/.medusa/server/src/modules/swap/migrations/Migration20260126114640.js +48 -0
  16. package/.medusa/server/src/modules/swap/models/swap.js +7 -2
  17. package/.medusa/server/src/modules/swap/service.js +259 -32
  18. package/.medusa/server/src/subscribers/exchange-created.js +207 -0
  19. package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +166 -20
  20. package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +76 -8
  21. package/.medusa/server/src/workflows/steps/swap/create-swap-step.js +7 -12
  22. package/.medusa/server/src/workflows/steps/swap/index.js +6 -4
  23. package/.medusa/server/src/workflows/steps/swap/rollback-return-step.js +70 -0
  24. package/.medusa/server/src/workflows/steps/swap/sync-medusa-status-step.js +49 -3
  25. package/.medusa/server/src/workflows/steps/swap/update-swap-exchange-details-step.js +27 -0
  26. package/.medusa/server/src/workflows/steps/swap/validate-eligibility-step.js +9 -4
  27. package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +24 -1
  28. package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +23 -5
  29. package/.medusa/server/src/workflows/swaps/confirm-exchange-workflow.js +51 -0
  30. package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +3 -1
  31. package/.medusa/server/src/workflows/swaps/execute-swap-workflow.js +26 -4
  32. package/package.json +1 -1
  33. package/.medusa/server/src/api/admin/swaps/[id]/process-payment/route.js +0 -152
  34. package/.medusa/server/src/api/admin/swaps/[id]/status/route.js +0 -45
  35. package/.medusa/server/src/api/admin/swaps/[id]/sync/route.js +0 -148
  36. package/.medusa/server/src/workflows/steps/swap/handle-payment-difference-step.js +0 -102
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.POST = void 0;
4
- const utils_1 = require("@medusajs/framework/utils");
5
- const update_swap_status_workflow_1 = require("../../../../../workflows/swaps/update-swap-status-workflow");
6
- const validators_1 = require("../../validators");
7
- const POST = async (req, res) => {
8
- const { id } = req.params;
9
- if (!id) {
10
- res.status(400).json({ message: "Swap ID is required" });
11
- return;
12
- }
13
- try {
14
- const body = validators_1.UpdateSwapStatusSchema.parse(req.body);
15
- const { result } = await (0, update_swap_status_workflow_1.updateSwapStatusWorkflow)(req.scope).run({
16
- input: {
17
- swap_id: id,
18
- status: body.status,
19
- metadata: body.metadata,
20
- },
21
- });
22
- res.json(result);
23
- }
24
- catch (error) {
25
- if (error instanceof utils_1.MedusaError) {
26
- const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
27
- ? 404
28
- : error.type === utils_1.MedusaError.Types.INVALID_DATA
29
- ? 400
30
- : 500;
31
- res.status(statusCode).json({
32
- message: error.message,
33
- type: error.type,
34
- });
35
- return;
36
- }
37
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
38
- res.status(500).json({
39
- message: "Failed to update swap status",
40
- error: errorMessage,
41
- });
42
- }
43
- };
44
- exports.POST = POST;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vc3RhdHVzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCw0R0FBcUc7QUFDckcsaURBQXlEO0FBRWxELE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNSLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQTtRQUN4RCxPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLG1DQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFbkQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxzREFBd0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQy9ELEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QjtTQUNGLENBQUMsQ0FBQTtRQUVGLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxtQkFBVyxFQUFFLENBQUM7WUFDakMsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTO2dCQUN4QyxDQUFDLENBQUMsR0FBRztnQkFDTCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZO29CQUMvQyxDQUFDLENBQUMsR0FBRztvQkFDTCxDQUFDLENBQUMsR0FBRyxDQUFBO1lBRVQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO1FBQzdFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSw4QkFBOEI7WUFDdkMsS0FBSyxFQUFFLFlBQVk7U0FDcEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQTtBQTdDWSxRQUFBLElBQUksUUE2Q2hCIn0=
@@ -1,148 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.POST = void 0;
4
- const utils_1 = require("@medusajs/framework/utils");
5
- const swap_1 = require("../../../../../modules/swap");
6
- const utils_2 = require("@medusajs/framework/utils");
7
- const POST = async (req, res) => {
8
- const { id } = req.params;
9
- if (!id) {
10
- res.status(400).json({ message: "Swap ID is required" });
11
- return;
12
- }
13
- try {
14
- const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
15
- const swap = await swapService.retrieveSwap(id);
16
- const swapData = swap;
17
- if (!swapData.exchange_id && !swapData.return_id) {
18
- res.json({
19
- swap,
20
- status_synced: false,
21
- });
22
- return;
23
- }
24
- const remoteQuery = req.scope.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
25
- let medusaStatus;
26
- let updatedStatus;
27
- // Query Medusa exchange status if exchange_id exists
28
- if (swapData.exchange_id) {
29
- try {
30
- const exchangeQuery = (0, utils_2.remoteQueryObjectFromString)({
31
- entryPoint: "exchange",
32
- fields: ["id", "status"],
33
- filters: {
34
- id: [swapData.exchange_id],
35
- },
36
- });
37
- const exchanges = await remoteQuery(exchangeQuery);
38
- const exchangeArray = Array.isArray(exchanges) ? exchanges : exchanges ? [exchanges] : [];
39
- const exchange = exchangeArray.find((e) => {
40
- const eData = e;
41
- return eData?.id === swapData.exchange_id;
42
- });
43
- if (exchange) {
44
- const exchangeData = exchange;
45
- medusaStatus = exchangeData.status;
46
- const statusMap = {
47
- requested: "return_started",
48
- received: "return_received",
49
- shipped: "new_items_shipped",
50
- delivered: "completed",
51
- cancelled: "cancelled",
52
- };
53
- updatedStatus = statusMap[medusaStatus || ""];
54
- }
55
- }
56
- catch (error) {
57
- // If exchange query fails, continue
58
- }
59
- }
60
- // Query Medusa return status if return_id exists and exchange status not found
61
- if (!medusaStatus && swapData.return_id) {
62
- try {
63
- const returnQuery = (0, utils_2.remoteQueryObjectFromString)({
64
- entryPoint: "return",
65
- fields: ["id", "status"],
66
- filters: {
67
- id: [swapData.return_id],
68
- },
69
- });
70
- const returns = await remoteQuery(returnQuery);
71
- const returnArray = Array.isArray(returns) ? returns : returns ? [returns] : [];
72
- const returnData = returnArray.find((r) => {
73
- const rData = r;
74
- return rData?.id === swapData.return_id;
75
- });
76
- if (returnData) {
77
- const returnDataTyped = returnData;
78
- medusaStatus = returnDataTyped.status;
79
- const statusMap = {
80
- requested: "return_started",
81
- received: "return_received",
82
- cancelled: "cancelled",
83
- };
84
- if (!updatedStatus) {
85
- updatedStatus = statusMap[medusaStatus || ""];
86
- }
87
- }
88
- }
89
- catch (error) {
90
- // If return query fails, cannot sync
91
- }
92
- }
93
- // Update swap status if it differs from Medusa status
94
- let statusSynced = false;
95
- if (updatedStatus && updatedStatus !== swapData.status) {
96
- const swapMetadata = swapData.metadata || {};
97
- const statusHistory = swapMetadata.status_history || [];
98
- await swapService.updateSwaps({
99
- selector: { id },
100
- data: {
101
- status: updatedStatus,
102
- metadata: {
103
- ...swapMetadata,
104
- status_history: [
105
- ...statusHistory,
106
- {
107
- status: updatedStatus,
108
- timestamp: new Date().toISOString(),
109
- synced_from_medusa: true,
110
- medusa_status: medusaStatus,
111
- },
112
- ],
113
- last_synced_at: new Date().toISOString(),
114
- },
115
- },
116
- });
117
- statusSynced = true;
118
- }
119
- // Retrieve the latest swap data
120
- const finalSwap = await swapService.retrieveSwap(id);
121
- res.json({
122
- swap: finalSwap,
123
- status_synced: statusSynced,
124
- medusa_status: medusaStatus,
125
- });
126
- }
127
- catch (error) {
128
- if (error instanceof utils_1.MedusaError) {
129
- const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
130
- ? 404
131
- : error.type === utils_1.MedusaError.Types.INVALID_DATA
132
- ? 400
133
- : 500;
134
- res.status(statusCode).json({
135
- message: error.message,
136
- type: error.type,
137
- });
138
- return;
139
- }
140
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
141
- res.status(500).json({
142
- message: "Failed to sync swap status",
143
- error: errorMessage,
144
- });
145
- }
146
- };
147
- exports.POST = POST;
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vc3luYy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsc0RBQXlEO0FBRXpELHFEQUFrRztBQUczRixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUE7UUFDeEQsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBS2hCLENBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqRCxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNQLElBQUk7Z0JBQ0osYUFBYSxFQUFFLEtBQUs7YUFDckIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDbkMsaUNBQXlCLENBQUMsWUFBWSxDQUN2QyxDQUFBO1FBRUQsSUFBSSxZQUFnQyxDQUFBO1FBQ3BDLElBQUksYUFBaUMsQ0FBQTtRQUVyQyxx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
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handlePaymentDifferenceStep = void 0;
4
- const utils_1 = require("@medusajs/framework/utils");
5
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
- const swap_1 = require("../../../modules/swap");
7
- exports.handlePaymentDifferenceStep = (0, workflows_sdk_1.createStep)("handle-payment-difference", async (input, { container }) => {
8
- const { swap_id } = input;
9
- if (!swap_id) {
10
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "swap_id is required");
11
- }
12
- const swapService = container.resolve(swap_1.SWAP_MODULE);
13
- const swap = await swapService.retrieveSwap(swap_id);
14
- const swapData = swap;
15
- const differenceDue = swapData.difference_due || 0;
16
- let paymentStatus = swapData.payment_status || "pending";
17
- let paymentIntentId;
18
- let refundId;
19
- // Resolve payment service (if available)
20
- const paymentService = container.resolve("payment");
21
- if (differenceDue > 0) {
22
- // Customer owes money - create payment intent (requires admin approval)
23
- paymentStatus = "pending";
24
- // Store payment intent creation in metadata
25
- // Actual payment capture will be done via admin endpoint after review
26
- const swapMetadata = swapData.metadata || {};
27
- const medusaIntegration = swapMetadata.medusa_integration || {};
28
- await swapService.updateSwaps({
29
- selector: { id: swap_id },
30
- data: {
31
- payment_status: "pending",
32
- metadata: {
33
- ...swapMetadata,
34
- medusa_integration: {
35
- ...medusaIntegration,
36
- payment_difference: differenceDue,
37
- payment_requires_review: true,
38
- payment_created_at: new Date().toISOString(),
39
- },
40
- },
41
- },
42
- });
43
- }
44
- else if (differenceDue < 0) {
45
- // Customer gets refund - schedule refund
46
- paymentStatus = "refund_pending";
47
- if (paymentService?.createRefund && swapData.order_id) {
48
- try {
49
- const refund = await paymentService.createRefund({
50
- order_id: swapData.order_id,
51
- amount: Math.abs(differenceDue),
52
- });
53
- refundId = refund.id;
54
- paymentStatus = "refunded";
55
- }
56
- catch (error) {
57
- // If refund creation fails, mark as pending manual review
58
- paymentStatus = "refund_pending";
59
- // Log error would be handled by workflow error handling
60
- }
61
- }
62
- else {
63
- // Mark for manual refund processing
64
- paymentStatus = "refund_pending";
65
- }
66
- const swapMetadata = swapData.metadata || {};
67
- const medusaIntegration = swapMetadata.medusa_integration || {};
68
- await swapService.updateSwaps({
69
- selector: { id: swap_id },
70
- data: {
71
- payment_status: paymentStatus,
72
- metadata: {
73
- ...swapMetadata,
74
- medusa_integration: {
75
- ...medusaIntegration,
76
- refund_id: refundId,
77
- refund_amount: Math.abs(differenceDue),
78
- refund_created_at: refundId ? new Date().toISOString() : undefined,
79
- },
80
- },
81
- },
82
- });
83
- }
84
- else {
85
- // No payment difference
86
- paymentStatus = "no_payment_required";
87
- await swapService.updateSwaps({
88
- selector: { id: swap_id },
89
- data: {
90
- payment_status: paymentStatus,
91
- },
92
- });
93
- }
94
- const updatedSwap = await swapService.retrieveSwap(swap_id);
95
- return new workflows_sdk_1.StepResponse({
96
- payment_status: paymentStatus,
97
- payment_intent_id: paymentIntentId,
98
- refund_id: refundId,
99
- swap: updatedSwap,
100
- });
101
- });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLXBheW1lbnQtZGlmZmVyZW5jZS1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9zd2FwL2hhbmRsZS1wYXltZW50LWRpZmZlcmVuY2Utc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLGdEQUFtRDtBQWV0QyxRQUFBLDJCQUEyQixHQUFHLElBQUEsMEJBQVUsRUFDbkQsMkJBQTJCLEVBQzNCLEtBQUssRUFDSCxLQUF1QyxFQUN2QyxFQUFFLFNBQVMsRUFBRSxFQUM2QyxFQUFFO0lBQzVELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUJBQXFCLENBQ3RCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BELE1BQU0sUUFBUSxHQUFHLElBSWhCLENBQUE7SUFFRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQTtJQUNsRCxJQUFJLGFBQWEsR0FBRyxRQUFRLENBQUMsY0FBYyxJQUFJLFNBQVMsQ0FBQTtJQUN4RCxJQUFJLGVBQW1DLENBQUE7SUFDdkMsSUFBSSxRQUE0QixDQUFBO0lBRWhDLHlDQUF5QztJQUN6QyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQVNyQyxTQUFTLENBQUMsQ0FBQTtJQUViLElBQUksYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RCLHdFQUF3RTtR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