order-management 0.0.18 → 0.0.19

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.
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMedusaReturnStep = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
+ const utils_2 = require("@medusajs/framework/utils");
7
+ const swap_1 = require("../../../modules/swap");
8
+ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-return", async (input, { container }) => {
9
+ const { swap_id } = input;
10
+ if (!swap_id) {
11
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "swap_id is required");
12
+ }
13
+ const swapService = container.resolve(swap_1.SWAP_MODULE);
14
+ const swap = await swapService.retrieveSwap(swap_id);
15
+ const swapData = swap;
16
+ if (!swapData.order_id) {
17
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Swap must have an order_id");
18
+ }
19
+ if (swapData.return_id) {
20
+ // Return already created
21
+ return new workflows_sdk_1.StepResponse({
22
+ return_id: swapData.return_id,
23
+ swap,
24
+ });
25
+ }
26
+ if (swapData.status !== "approved") {
27
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Swap must be approved before creating Medusa return. Current status: ${swapData.status}`);
28
+ }
29
+ const returnItems = swapData.return_items || [];
30
+ if (returnItems.length === 0) {
31
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Swap must have return items");
32
+ }
33
+ // Resolve order service
34
+ const orderService = container.resolve("order");
35
+ if (!orderService) {
36
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Order service is not available");
37
+ }
38
+ // Create return using Medusa's Order Module
39
+ let returnId;
40
+ if (orderService.createReturn) {
41
+ const returnItemsForMedusa = returnItems.map((item) => ({
42
+ item_id: item.item_id,
43
+ quantity: item.quantity,
44
+ reason_id: item.reason_id,
45
+ }));
46
+ const medusaReturn = await orderService.createReturn({
47
+ order_id: swapData.order_id,
48
+ items: returnItemsForMedusa,
49
+ });
50
+ returnId = medusaReturn.id;
51
+ }
52
+ else {
53
+ // Fallback: Use remote query to create return via API
54
+ // This is a workaround if createReturn is not directly available
55
+ const remoteQuery = container.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
56
+ // For now, we'll use a placeholder approach
57
+ // In production, you'd use Medusa's return workflow or API
58
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNKNOWN_MODULES, "Return creation via Order Module is not directly available. Please use Medusa's return workflow.");
59
+ }
60
+ // Update swap with return_id
61
+ const updatedSwap = await swapService.updateSwaps({
62
+ selector: { id: swap_id },
63
+ data: {
64
+ return_id: returnId,
65
+ metadata: {
66
+ medusa_integration: {
67
+ return_id: returnId,
68
+ return_created_at: new Date().toISOString(),
69
+ },
70
+ },
71
+ },
72
+ });
73
+ const finalSwap = Array.isArray(updatedSwap) ? updatedSwap[0] : updatedSwap;
74
+ return new workflows_sdk_1.StepResponse({
75
+ return_id: returnId,
76
+ swap: finalSwap || swap,
77
+ });
78
+ });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lZHVzYS1yZXR1cm4tc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC9jcmVhdGUtbWVkdXNhLXJldHVybi1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQWtHO0FBRWxHLGdEQUFtRDtBQWF0QyxRQUFBLHNCQUFzQixHQUFHLElBQUEsMEJBQVUsRUFDOUMsc0JBQXNCLEVBQ3RCLEtBQUssRUFDSCxLQUFrQyxFQUNsQyxFQUFFLFNBQVMsRUFBRSxFQUN3QyxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUJBQXFCLENBQ3RCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BELE1BQU0sUUFBUSxHQUFHLElBS2hCLENBQUE7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDRCQUE0QixDQUM3QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLHlCQUF5QjtRQUN6QixPQUFPLElBQUksNEJBQVksQ0FBK0I7WUFDcEQsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO1lBQzdCLElBQUk7U0FDTCxDQUFDLENBQUE7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
@@ -0,0 +1,102 @@
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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
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateSwapStatusStep = exports.retrieveSwapStep = exports.createSwapStep = exports.calculateDifferenceStep = exports.validateSwapItemsStep = exports.validateOrderStep = void 0;
3
+ exports.syncMedusaStatusStep = exports.handlePaymentDifferenceStep = exports.createMedusaExchangeStep = exports.createMedusaReturnStep = exports.validateEligibilityStep = exports.updateSwapStatusStep = exports.retrieveSwapStep = exports.createSwapStep = exports.calculateDifferenceStep = exports.validateSwapItemsStep = exports.validateOrderStep = void 0;
4
4
  var validate_order_step_1 = require("./validate-order-step");
5
5
  Object.defineProperty(exports, "validateOrderStep", { enumerable: true, get: function () { return validate_order_step_1.validateOrderStep; } });
6
6
  var validate_swap_items_step_1 = require("./validate-swap-items-step");
@@ -13,4 +13,14 @@ var retrieve_swap_step_1 = require("./retrieve-swap-step");
13
13
  Object.defineProperty(exports, "retrieveSwapStep", { enumerable: true, get: function () { return retrieve_swap_step_1.retrieveSwapStep; } });
14
14
  var update_swap_status_step_1 = require("./update-swap-status-step");
15
15
  Object.defineProperty(exports, "updateSwapStatusStep", { enumerable: true, get: function () { return update_swap_status_step_1.updateSwapStatusStep; } });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXlEO0FBQWhELHdIQUFBLGlCQUFpQixPQUFBO0FBRzFCLHVFQUFrRTtBQUF6RCxpSUFBQSxxQkFBcUIsT0FBQTtBQUc5Qix5RUFBcUU7QUFBNUQsb0lBQUEsdUJBQXVCLE9BQUE7QUFHaEMsdURBQW1EO0FBQTFDLGtIQUFBLGNBQWMsT0FBQTtBQUd2QiwyREFBdUQ7QUFBOUMsc0hBQUEsZ0JBQWdCLE9BQUE7QUFHekIscUVBQWdFO0FBQXZELCtIQUFBLG9CQUFvQixPQUFBIn0=
16
+ var validate_eligibility_step_1 = require("./validate-eligibility-step");
17
+ Object.defineProperty(exports, "validateEligibilityStep", { enumerable: true, get: function () { return validate_eligibility_step_1.validateEligibilityStep; } });
18
+ var create_medusa_return_step_1 = require("./create-medusa-return-step");
19
+ Object.defineProperty(exports, "createMedusaReturnStep", { enumerable: true, get: function () { return create_medusa_return_step_1.createMedusaReturnStep; } });
20
+ var create_medusa_exchange_step_1 = require("./create-medusa-exchange-step");
21
+ Object.defineProperty(exports, "createMedusaExchangeStep", { enumerable: true, get: function () { return create_medusa_exchange_step_1.createMedusaExchangeStep; } });
22
+ var handle_payment_difference_step_1 = require("./handle-payment-difference-step");
23
+ Object.defineProperty(exports, "handlePaymentDifferenceStep", { enumerable: true, get: function () { return handle_payment_difference_step_1.handlePaymentDifferenceStep; } });
24
+ var sync_medusa_status_step_1 = require("./sync-medusa-status-step");
25
+ Object.defineProperty(exports, "syncMedusaStatusStep", { enumerable: true, get: function () { return sync_medusa_status_step_1.syncMedusaStatusStep; } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXlEO0FBQWhELHdIQUFBLGlCQUFpQixPQUFBO0FBRzFCLHVFQUFrRTtBQUF6RCxpSUFBQSxxQkFBcUIsT0FBQTtBQUc5Qix5RUFBcUU7QUFBNUQsb0lBQUEsdUJBQXVCLE9BQUE7QUFHaEMsdURBQW1EO0FBQTFDLGtIQUFBLGNBQWMsT0FBQTtBQUd2QiwyREFBdUQ7QUFBOUMsc0hBQUEsZ0JBQWdCLE9BQUE7QUFHekIscUVBQWdFO0FBQXZELCtIQUFBLG9CQUFvQixPQUFBO0FBRzdCLHlFQUFxRTtBQUE1RCxvSUFBQSx1QkFBdUIsT0FBQTtBQUdoQyx5RUFBb0U7QUFBM0QsbUlBQUEsc0JBQXNCLE9BQUE7QUFHL0IsNkVBQXdFO0FBQS9ELHVJQUFBLHdCQUF3QixPQUFBO0FBR2pDLG1GQUE4RTtBQUFyRSw2SUFBQSwyQkFBMkIsT0FBQTtBQUdwQyxxRUFBZ0U7QUFBdkQsK0hBQUEsb0JBQW9CLE9BQUEifQ==
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncMedusaStatusStep = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
+ const utils_2 = require("@medusajs/framework/utils");
7
+ const swap_1 = require("../../../modules/swap");
8
+ exports.syncMedusaStatusStep = (0, workflows_sdk_1.createStep)("sync-medusa-status", async (input, { container }) => {
9
+ const { swap_id } = input;
10
+ if (!swap_id) {
11
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "swap_id is required");
12
+ }
13
+ const swapService = container.resolve(swap_1.SWAP_MODULE);
14
+ const swap = await swapService.retrieveSwap(swap_id);
15
+ const swapData = swap;
16
+ if (!swapData.exchange_id && !swapData.return_id) {
17
+ // No Medusa integration yet, nothing to sync
18
+ return new workflows_sdk_1.StepResponse({
19
+ swap,
20
+ status_synced: false,
21
+ });
22
+ }
23
+ const remoteQuery = container.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
24
+ let medusaStatus;
25
+ let updatedStatus;
26
+ // Query Medusa exchange status if exchange_id exists
27
+ if (swapData.exchange_id) {
28
+ try {
29
+ const exchangeQuery = (0, utils_2.remoteQueryObjectFromString)({
30
+ entryPoint: "exchange",
31
+ fields: ["id", "status"],
32
+ filters: {
33
+ id: [swapData.exchange_id],
34
+ },
35
+ });
36
+ const exchanges = await remoteQuery(exchangeQuery);
37
+ const exchangeArray = Array.isArray(exchanges)
38
+ ? exchanges
39
+ : exchanges
40
+ ? [exchanges]
41
+ : [];
42
+ const exchange = exchangeArray.find((e) => {
43
+ const eData = e;
44
+ return eData?.id === swapData.exchange_id;
45
+ });
46
+ if (exchange) {
47
+ const exchangeData = exchange;
48
+ medusaStatus = exchangeData.status;
49
+ // Map Medusa exchange status to swap status
50
+ const statusMap = {
51
+ requested: "return_started",
52
+ received: "return_received",
53
+ shipped: "new_items_shipped",
54
+ delivered: "completed",
55
+ cancelled: "cancelled",
56
+ };
57
+ updatedStatus = statusMap[medusaStatus || ""];
58
+ }
59
+ }
60
+ catch (error) {
61
+ // If exchange query fails, continue with return status
62
+ }
63
+ }
64
+ // Query Medusa return status if return_id exists and exchange status not found
65
+ if (!medusaStatus && swapData.return_id) {
66
+ try {
67
+ const returnQuery = (0, utils_2.remoteQueryObjectFromString)({
68
+ entryPoint: "return",
69
+ fields: ["id", "status"],
70
+ filters: {
71
+ id: [swapData.return_id],
72
+ },
73
+ });
74
+ const returns = await remoteQuery(returnQuery);
75
+ const returnArray = Array.isArray(returns) ? returns : returns ? [returns] : [];
76
+ const returnData = returnArray.find((r) => {
77
+ const rData = r;
78
+ return rData?.id === swapData.return_id;
79
+ });
80
+ if (returnData) {
81
+ const returnDataTyped = returnData;
82
+ medusaStatus = returnDataTyped.status;
83
+ // Map Medusa return status to swap status
84
+ const statusMap = {
85
+ requested: "return_started",
86
+ received: "return_received",
87
+ cancelled: "cancelled",
88
+ };
89
+ if (!updatedStatus) {
90
+ updatedStatus = statusMap[medusaStatus || ""];
91
+ }
92
+ }
93
+ }
94
+ catch (error) {
95
+ // If return query fails, cannot sync
96
+ }
97
+ }
98
+ // Update swap status if it differs from Medusa status
99
+ let statusSynced = false;
100
+ if (updatedStatus && updatedStatus !== swapData.status) {
101
+ const swapMetadata = swapData.metadata || {};
102
+ const statusHistory = swapMetadata.status_history || [];
103
+ await swapService.updateSwaps({
104
+ selector: { id: swap_id },
105
+ data: {
106
+ status: updatedStatus,
107
+ metadata: {
108
+ ...swapMetadata,
109
+ status_history: [
110
+ ...statusHistory,
111
+ {
112
+ status: updatedStatus,
113
+ timestamp: new Date().toISOString(),
114
+ synced_from_medusa: true,
115
+ medusa_status: medusaStatus,
116
+ },
117
+ ],
118
+ last_synced_at: new Date().toISOString(),
119
+ },
120
+ },
121
+ });
122
+ statusSynced = true;
123
+ }
124
+ // Retrieve the latest swap data after update
125
+ const finalSwap = await swapService.retrieveSwap(swap_id);
126
+ return new workflows_sdk_1.StepResponse({
127
+ swap: finalSwap,
128
+ status_synced: statusSynced,
129
+ medusa_status: medusaStatus,
130
+ });
131
+ });
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1tZWR1c2Etc3RhdHVzLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvc3luYy1tZWR1c2Etc3RhdHVzLXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBQ3ZELHFFQUE0RTtBQUM1RSxxREFBa0c7QUFFbEcsZ0RBQW1EO0FBYXRDLFFBQUEsb0JBQW9CLEdBQUcsSUFBQSwwQkFBVSxFQUM1QyxvQkFBb0IsRUFDcEIsS0FBSyxFQUNILEtBQWdDLEVBQ2hDLEVBQUUsU0FBUyxFQUFFLEVBQ3NDLEVBQUU7SUFDckQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQkFBcUIsQ0FDdEIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFjLGtCQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFLaEIsQ0FBQTtJQUVELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pELDZDQUE2QztRQUM3QyxPQUFPLElBQUksNEJBQVksQ0FBNkI7WUFDbEQsSUFBSTtZQUNKLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUNuQyxpQ0FBeUIsQ0FBQyxZQUFZLENBQ3ZDLENBQUE7SUFFRCxJQUFJLFlBQWdDLENBQUE7SUFDcEMsSUFBSSxh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
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateEligibilityStep = 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.validateEligibilityStep = (0, workflows_sdk_1.createStep)("validate-eligibility", async (input, { container }) => {
8
+ const { order, return_items, customer_id } = input;
9
+ const swapService = container.resolve(swap_1.SWAP_MODULE);
10
+ // Check rate limits
11
+ await swapService.checkRateLimit(customer_id, order.id);
12
+ // Validate eligibility
13
+ await swapService.validateEligibility(order.id, return_items);
14
+ // Validate item eligibility
15
+ for (const returnItem of return_items) {
16
+ const isEligible = await swapService.validateItemEligibility(returnItem.id);
17
+ if (!isEligible) {
18
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Item ${returnItem.id} is not eligible for exchange`);
19
+ }
20
+ }
21
+ return new workflows_sdk_1.StepResponse({
22
+ eligible: true,
23
+ });
24
+ });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZWxpZ2liaWxpdHktc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC92YWxpZGF0ZS1lbGlnaWJpbGl0eS1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUsZ0RBQW1EO0FBZXRDLFFBQUEsdUJBQXVCLEdBQUcsSUFBQSwwQkFBVSxFQUMvQyxzQkFBc0IsRUFDdEIsS0FBSyxFQUNILEtBQW1DLEVBQ25DLEVBQUUsU0FBUyxFQUFFLEVBQ3lDLEVBQUU7SUFDeEQsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRWxELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQWMsa0JBQVcsQ0FBQyxDQUFBO0lBRS9ELG9CQUFvQjtJQUNwQixNQUFNLFdBQVcsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUV2RCx1QkFBdUI7SUFDdkIsTUFBTSxXQUFXLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQTtJQUU3RCw0QkFBNEI7SUFDNUIsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDM0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLFFBQVEsVUFBVSxDQUFDLEVBQUUsK0JBQStCLENBQ3JELENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFnQztRQUNyRCxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
@@ -19,6 +19,9 @@ exports.validateOrderStep = (0, workflows_sdk_1.createStep)("validate-order", as
19
19
  "id",
20
20
  "customer_id",
21
21
  "email",
22
+ "status",
23
+ "fulfilled_at",
24
+ "created_at",
22
25
  "items.*",
23
26
  ],
24
27
  filters: {
@@ -40,8 +43,27 @@ exports.validateOrderStep = (0, workflows_sdk_1.createStep)("validate-order", as
40
43
  if (!orderCustomerId || orderCustomerId !== customer_id) {
41
44
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "You can only create swaps for your own orders");
42
45
  }
46
+ // Eligibility validation: Order status must be fulfilled or partially_fulfilled
47
+ const orderStatus = orderData.status;
48
+ const allowedStatuses = ["fulfilled", "partially_fulfilled"];
49
+ if (!orderStatus || !allowedStatuses.includes(orderStatus)) {
50
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order must be fulfilled or partially fulfilled to create a swap. Current status: ${orderStatus || "unknown"}`);
51
+ }
52
+ // Eligibility validation: Check order age (30 days from fulfillment or creation)
53
+ const fulfillmentDate = orderData.fulfilled_at
54
+ ? new Date(orderData.fulfilled_at)
55
+ : orderData.created_at
56
+ ? new Date(orderData.created_at)
57
+ : null;
58
+ if (fulfillmentDate) {
59
+ const daysSinceFulfillment = Math.floor((Date.now() - fulfillmentDate.getTime()) / (1000 * 60 * 60 * 24));
60
+ const maxDays = 30; // Configurable eligibility window
61
+ if (daysSinceFulfillment > maxDays) {
62
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order is too old to create a swap. Maximum ${maxDays} days allowed since fulfillment.`);
63
+ }
64
+ }
43
65
  return new workflows_sdk_1.StepResponse({
44
66
  order: order,
45
67
  });
46
68
  });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtb3JkZXItc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC92YWxpZGF0ZS1vcmRlci1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQWtHO0FBd0JyRixRQUFBLGlCQUFpQixHQUFHLElBQUEsMEJBQVUsRUFDekMsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDSCxLQUE2QixFQUM3QixFQUFFLFNBQVMsRUFBRSxFQUNtQyxFQUFFO0lBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRXZDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHNCQUFzQixDQUN2QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQ0FBcUMsQ0FDdEMsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUNuQyxpQ0FBeUIsQ0FBQyxZQUFZLENBQ3ZDLENBQUE7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFBLG1DQUEyQixFQUFDO1FBQzlDLFVBQVUsRUFBRSxPQUFPO1FBQ25CLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixhQUFhO1lBQ2IsT0FBTztZQUNQLFNBQVM7U0FDVjtRQUNELE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQztTQUNmO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0MsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMxRSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUU7UUFDM0MsTUFBTSxLQUFLLEdBQUcsQ0FBb0IsQ0FBQTtRQUNsQyxPQUFPLEtBQUssRUFBRSxFQUFFLEtBQUssUUFBUSxDQUFBO0lBQy9CLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsaUJBQWlCLFFBQVEsWUFBWSxDQUN0QyxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLEtBQWlELENBQUE7SUFDbkUsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQTtJQUU3Qyw4QkFBOEI7SUFDOUIsSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDeEQsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsK0NBQStDLENBQ2hELENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQTBCO1FBQy9DLEtBQUssRUFBRSxLQUF5QztLQUNqRCxDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQSJ9
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtb3JkZXItc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC92YWxpZGF0ZS1vcmRlci1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQWtHO0FBd0JyRixRQUFBLGlCQUFpQixHQUFHLElBQUEsMEJBQVUsRUFDekMsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDSCxLQUE2QixFQUM3QixFQUFFLFNBQVMsRUFBRSxFQUNtQyxFQUFFO0lBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRXZDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHNCQUFzQixDQUN2QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQ0FBcUMsQ0FDdEMsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUNuQyxpQ0FBeUIsQ0FBQyxZQUFZLENBQ3ZDLENBQUE7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFBLG1DQUEyQixFQUFDO1FBQzlDLFVBQVUsRUFBRSxPQUFPO1FBQ25CLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixhQUFhO1lBQ2IsT0FBTztZQUNQLFFBQVE7WUFDUixjQUFjO1lBQ2QsWUFBWTtZQUNaLFNBQVM7U0FDVjtRQUNELE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQztTQUNmO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxNQUFNLEdBQUcsTUFB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
@@ -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
- // Step 1: Retrieve swap
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92ZS1zd2FwLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zd2Fwcy9hcHByb3ZlLXN3YXAtd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHdDQUdzQjtBQU1ULFFBQUEsbUJBQW1CLEdBQUcsSUFBQSw4QkFBYyxFQUMvQyxjQUFjLEVBQ2QsQ0FDRSxLQUErQixFQUNjLEVBQUU7SUFDL0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFbkMsd0JBQXdCO0lBQ3hCLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBQSx1QkFBZ0IsRUFBQztRQUMvQyxPQUFPO0tBQ1IsQ0FBQyxDQUFBO0lBRUYsTUFBTSxRQUFRLEdBQUcsYUFBbUMsQ0FBQTtJQUVwRCx5Q0FBeUM7SUFDekMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNENBQTRDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FDOUQsQ0FBQTtJQUNILENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFBLDJCQUFvQixFQUFDO1FBQ2xELE9BQU87UUFDUCxNQUFNLEVBQUUsVUFBVTtRQUNsQixRQUFRLEVBQUU7WUFDUixXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDckMsV0FBVyxFQUFFLFFBQVE7U0FDdEI7S0FDRixDQUFDLENBQUE7SUFFRixxRUFBcUU7SUFDckUscUVBQXFFO0lBQ3JFLHlFQUF5RTtJQUN6RSw2REFBNkQ7SUFDN0QsYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixLQUFLO0lBRUwsT0FBTyxJQUFJLGdDQUFnQixDQUE0QjtRQUNyRCxJQUFJLEVBQUUsWUFBWTtLQUNuQixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLDJCQUFtQixDQUFBIn0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN3YXAtd29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N3YXBzL2NyZWF0ZS1zd2FwLXdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUcwQztBQUMxQyx3Q0FLc0I7QUFPVCxRQUFBLGtCQUFrQixHQUFHLElBQUEsOEJBQWMsRUFDOUMsYUFBYSxFQUNiLENBQ0UsS0FBd0QsRUFDWixFQUFFO0lBQzlDLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUU5RSx3REFBd0Q7SUFDeEQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUEsd0JBQWlCLEVBQUM7UUFDbEMsUUFBUTtRQUNSLFdBQVc7S0FDWixDQUFDLENBQUE7SUFFRiw4QkFBOEI7SUFDOUIsTUFBTSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsR0FDeEUsSUFBQSw0QkFBcUIsRUFBQztRQUNwQixLQUFLO1FBQ0wsWUFBWTtRQUNaLFNBQVM7S0FDVixDQUFDLENBQUE7SUFFSixxQ0FBcUM7SUFDckMsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLElBQUEsOEJBQXVCLEVBQUM7UUFDakQsS0FBSztRQUNMLFlBQVksRUFBRSxvQkFBb0I7UUFDbEMsU0FBUyxFQUFFLGlCQUFpQjtLQUM3QixDQUFDLENBQUE7SUFFRiw2QkFBNkI7SUFDN0IsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEscUJBQWMsRUFBQztRQUM5QixRQUFRO1FBQ1IsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxTQUFTLEVBQUUsaUJBQWlCO1FBQzVCLGNBQWM7UUFDZCxNQUFNO1FBQ04sSUFBSTtLQUNMLENBQUMsQ0FBQTtJQUVGLDZFQUE2RTtJQUM3RSx5QkFBeUI7SUFDekIsMkJBQTJCO0lBQzNCLHFDQUFxQztJQUNyQyx3REFBd0Q7SUFDeEQsc0JBQXNCO0lBQ3RCLEtBQUs7SUFFTCxPQUFPLElBQUksZ0NBQWdCLENBQTJCO1FBQ3BELElBQUk7S0FDTCxDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLDBCQUFrQixDQUFBIn0=
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "order-management",
3
- "version": "0.0.18",
3
+ "version": "0.0.19",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",