order-management 0.0.18 → 0.0.20
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 +9 -9
- package/.medusa/server/src/admin/index.mjs +9 -9
- package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +32 -3
- package/.medusa/server/src/api/admin/swaps/[id]/process-payment/route.js +152 -0
- package/.medusa/server/src/api/admin/swaps/[id]/sync/route.js +148 -0
- package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +39 -2
- package/.medusa/server/src/api/store/swaps/route.js +14 -2
- package/.medusa/server/src/modules/swap/service.js +71 -1
- package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +71 -0
- package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +79 -0
- package/.medusa/server/src/workflows/steps/swap/handle-payment-difference-step.js +102 -0
- package/.medusa/server/src/workflows/steps/swap/index.js +12 -2
- package/.medusa/server/src/workflows/steps/swap/sync-medusa-status-step.js +132 -0
- package/.medusa/server/src/workflows/steps/swap/validate-eligibility-step.js +25 -0
- package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +23 -1
- package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +2 -18
- package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +7 -1
- package/.medusa/server/src/workflows/swaps/execute-swap-workflow.js +36 -0
- package/README.md +10 -0
- package/package.json +1 -1
|
@@ -5,16 +5,7 @@ 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 } = input;
|
|
8
|
-
//
|
|
9
|
-
const { swap: retrievedSwap } = (0, swap_1.retrieveSwapStep)({
|
|
10
|
-
swap_id,
|
|
11
|
-
});
|
|
12
|
-
const swapData = retrievedSwap;
|
|
13
|
-
// Step 2: Validate status is "requested"
|
|
14
|
-
if (swapData.status !== "requested") {
|
|
15
|
-
throw new Error(`Swap cannot be approved. Current status: ${swapData.status}`);
|
|
16
|
-
}
|
|
17
|
-
// Step 3: Update to "approved"
|
|
8
|
+
// Update to "approved" (validation happens in updateSwapStatusStep)
|
|
18
9
|
const { swap: approvedSwap } = (0, swap_1.updateSwapStatusStep)({
|
|
19
10
|
swap_id,
|
|
20
11
|
status: "approved",
|
|
@@ -23,16 +14,9 @@ exports.approveSwapWorkflow = (0, workflows_sdk_1.createWorkflow)("approve-swap"
|
|
|
23
14
|
approved_by: admin_id,
|
|
24
15
|
},
|
|
25
16
|
});
|
|
26
|
-
// Step 4: Update to "return_started" (after return label is created)
|
|
27
|
-
// This would typically happen after creating a return shipping label
|
|
28
|
-
// For now, we'll just approve - return_started can be set manually later
|
|
29
|
-
// const { swap: returnStartedSwap } = updateSwapStatusStep({
|
|
30
|
-
// swap_id,
|
|
31
|
-
// status: "return_started",
|
|
32
|
-
// })
|
|
33
17
|
return new workflows_sdk_1.WorkflowResponse({
|
|
34
18
|
swap: approvedSwap,
|
|
35
19
|
});
|
|
36
20
|
});
|
|
37
21
|
exports.default = exports.approveSwapWorkflow;
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92ZS1zd2FwLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zd2Fwcy9hcHByb3ZlLXN3YXAtd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHdDQUVzQjtBQU1ULFFBQUEsbUJBQW1CLEdBQUcsSUFBQSw4QkFBYyxFQUMvQyxjQUFjLEVBQ2QsQ0FDRSxLQUErQixFQUNjLEVBQUU7SUFDL0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFbkMsb0VBQW9FO0lBQ3BFLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBQSwyQkFBb0IsRUFBQztRQUNsRCxPQUFPO1FBQ1AsTUFBTSxFQUFFLFVBQVU7UUFDbEIsUUFBUSxFQUFFO1lBQ1IsV0FBVyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQ3JDLFdBQVcsRUFBRSxRQUFRO1NBQ3RCO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLGdDQUFnQixDQUE0QjtRQUNyRCxJQUFJLEVBQUUsWUFBWTtLQUNuQixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLDJCQUFtQixDQUFBIn0=
|
|
@@ -16,6 +16,12 @@ exports.createSwapWorkflow = (0, workflows_sdk_1.createWorkflow)("create-swap",
|
|
|
16
16
|
return_items,
|
|
17
17
|
new_items,
|
|
18
18
|
});
|
|
19
|
+
// Step 2.5: Validate eligibility and rate limits
|
|
20
|
+
(0, swap_1.validateEligibilityStep)({
|
|
21
|
+
order,
|
|
22
|
+
return_items: validatedReturnItems,
|
|
23
|
+
customer_id,
|
|
24
|
+
});
|
|
19
25
|
// Step 3: Calculate price difference
|
|
20
26
|
const { difference_due } = (0, swap_1.calculateDifferenceStep)({
|
|
21
27
|
order,
|
|
@@ -43,4 +49,4 @@ exports.createSwapWorkflow = (0, workflows_sdk_1.createWorkflow)("create-swap",
|
|
|
43
49
|
});
|
|
44
50
|
});
|
|
45
51
|
exports.default = exports.createSwapWorkflow;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN3YXAtd29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N3YXBzL2NyZWF0ZS1zd2FwLXdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUcwQztBQUMxQyx3Q0FNc0I7QUFPVCxRQUFBLGtCQUFrQixHQUFHLElBQUEsOEJBQWMsRUFDOUMsYUFBYSxFQUNiLENBQ0UsS0FBd0QsRUFDWixFQUFFO0lBQzlDLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUU5RSx3REFBd0Q7SUFDeEQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUEsd0JBQWlCLEVBQUM7UUFDbEMsUUFBUTtRQUNSLFdBQVc7S0FDWixDQUFDLENBQUE7SUFFRiw4QkFBOEI7SUFDOUIsTUFBTSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsR0FDeEUsSUFBQSw0QkFBcUIsRUFBQztRQUNwQixLQUFLO1FBQ0wsWUFBWTtRQUNaLFNBQVM7S0FDVixDQUFDLENBQUE7SUFFSixpREFBaUQ7SUFDakQsSUFBQSw4QkFBdUIsRUFBQztRQUN0QixLQUFLO1FBQ0wsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxXQUFXO0tBQ1osQ0FBQyxDQUFBO0lBRUYscUNBQXFDO0lBQ3JDLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFBLDhCQUF1QixFQUFDO1FBQ2pELEtBQUs7UUFDTCxZQUFZLEVBQUUsb0JBQW9CO1FBQ2xDLFNBQVMsRUFBRSxpQkFBaUI7S0FDN0IsQ0FBQyxDQUFBO0lBRUYsNkJBQTZCO0lBQzdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFBLHFCQUFjLEVBQUM7UUFDOUIsUUFBUTtRQUNSLFlBQVksRUFBRSxvQkFBb0I7UUFDbEMsU0FBUyxFQUFFLGlCQUFpQjtRQUM1QixjQUFjO1FBQ2QsTUFBTTtRQUNOLElBQUk7S0FDTCxDQUFDLENBQUE7SUFFRiw2RUFBNkU7SUFDN0UseUJBQXlCO0lBQ3pCLDJCQUEyQjtJQUMzQixxQ0FBcUM7SUFDckMsd0RBQXdEO0lBQ3hELHNCQUFzQjtJQUN0QixLQUFLO0lBRUwsT0FBTyxJQUFJLGdDQUFnQixDQUEyQjtRQUNwRCxJQUFJO0tBQ0wsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUE7QUFFRCxrQkFBZSwwQkFBa0IsQ0FBQSJ9
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeSwapWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const swap_1 = require("../steps/swap");
|
|
6
|
+
exports.executeSwapWorkflow = (0, workflows_sdk_1.createWorkflow)("execute-swap", (input) => {
|
|
7
|
+
const { swap_id } = input;
|
|
8
|
+
// Step 1: Retrieve swap to validate it's approved
|
|
9
|
+
const { swap: retrievedSwap } = (0, swap_1.retrieveSwapStep)({
|
|
10
|
+
swap_id,
|
|
11
|
+
});
|
|
12
|
+
// Step 2: Create Medusa Return
|
|
13
|
+
const { return_id, swap: swapWithReturn } = (0, swap_1.createMedusaReturnStep)({
|
|
14
|
+
swap_id,
|
|
15
|
+
});
|
|
16
|
+
// Step 3: Create Medusa Exchange linked to return
|
|
17
|
+
const { exchange_id, swap: swapWithExchange } = (0, swap_1.createMedusaExchangeStep)({
|
|
18
|
+
swap_id,
|
|
19
|
+
return_id,
|
|
20
|
+
});
|
|
21
|
+
// Step 4: Update swap status to return_started
|
|
22
|
+
const { swap: finalSwap } = (0, swap_1.updateSwapStatusStep)({
|
|
23
|
+
swap_id,
|
|
24
|
+
status: "return_started",
|
|
25
|
+
metadata: {
|
|
26
|
+
medusa_integration_completed_at: new Date().toISOString(),
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
return new workflows_sdk_1.WorkflowResponse({
|
|
30
|
+
swap: finalSwap,
|
|
31
|
+
return_id,
|
|
32
|
+
exchange_id,
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
exports.default = exports.executeSwapWorkflow;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1zd2FwLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zd2Fwcy9leGVjdXRlLXN3YXAtd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHdDQUtzQjtBQU1ULFFBQUEsbUJBQW1CLEdBQUcsSUFBQSw4QkFBYyxFQUMvQyxjQUFjLEVBQ2QsQ0FDRSxLQUErQixFQUNjLEVBQUU7SUFDL0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV6QixrREFBa0Q7SUFDbEQsTUFBTSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFBLHVCQUFnQixFQUFDO1FBQy9DLE9BQU87S0FDUixDQUFDLENBQUE7SUFFRiwrQkFBK0I7SUFDL0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBQSw2QkFBc0IsRUFBQztRQUNqRSxPQUFPO0tBQ1IsQ0FBQyxDQUFBO0lBRUYsa0RBQWtEO0lBQ2xELE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBQSwrQkFBd0IsRUFBQztRQUN2RSxPQUFPO1FBQ1AsU0FBUztLQUNWLENBQUMsQ0FBQTtJQUVGLCtDQUErQztJQUMvQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEsMkJBQW9CLEVBQUM7UUFDL0MsT0FBTztRQUNQLE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsUUFBUSxFQUFFO1lBQ1IsK0JBQStCLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7U0FDMUQ7S0FDRixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQTRCO1FBQ3JELElBQUksRUFBRSxTQUFTO1FBQ2YsU0FBUztRQUNULFdBQVc7S0FDWixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLDJCQUFtQixDQUFBIn0=
|
package/README.md
CHANGED
|
@@ -265,6 +265,16 @@ requested → approved → return_started → return_shipped → return_received
|
|
|
265
265
|
↘ cancelled (from any status except completed)
|
|
266
266
|
```
|
|
267
267
|
|
|
268
|
+
### Storefront Implementation Guide
|
|
269
|
+
|
|
270
|
+
For detailed implementation instructions on integrating exchange functionality into your storefront, see the [Storefront Exchange Implementation Guide](./docs/STOREFRONT_EXCHANGE_IMPLEMENTATION.md). This guide includes:
|
|
271
|
+
|
|
272
|
+
- Complete API documentation with request/response examples
|
|
273
|
+
- React/TypeScript implementation examples
|
|
274
|
+
- Error handling best practices
|
|
275
|
+
- Status flow diagrams
|
|
276
|
+
- Integration checklist
|
|
277
|
+
|
|
268
278
|
### Storefront API Endpoints
|
|
269
279
|
|
|
270
280
|
#### Create Swap Request
|