order-management 0.0.17 → 0.0.18

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 (40) hide show
  1. package/.medusa/server/src/admin/index.js +638 -5
  2. package/.medusa/server/src/admin/index.mjs +638 -5
  3. package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +45 -0
  4. package/.medusa/server/src/api/admin/swaps/[id]/reject/route.js +43 -0
  5. package/.medusa/server/src/api/admin/swaps/[id]/route.js +70 -0
  6. package/.medusa/server/src/api/admin/swaps/[id]/status/route.js +45 -0
  7. package/.medusa/server/src/api/admin/swaps/route.js +51 -0
  8. package/.medusa/server/src/api/admin/swaps/validators.js +22 -0
  9. package/.medusa/server/src/api/store/guest-orders/[id]/invoice/route.js +17 -5
  10. package/.medusa/server/src/api/store/guest-orders/[id]/returns/route.js +17 -5
  11. package/.medusa/server/src/api/store/guest-orders/[id]/route.js +17 -5
  12. package/.medusa/server/src/api/store/guest-orders/route.js +17 -5
  13. package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +107 -0
  14. package/.medusa/server/src/api/store/otp/request/route.js +12 -5
  15. package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +64 -0
  16. package/.medusa/server/src/api/store/swaps/[id]/route.js +112 -0
  17. package/.medusa/server/src/api/store/swaps/route.js +117 -0
  18. package/.medusa/server/src/helpers/index.js +18 -0
  19. package/.medusa/server/src/helpers/swaps.js +88 -0
  20. package/.medusa/server/src/modules/swap/index.js +13 -0
  21. package/.medusa/server/src/modules/swap/migrations/Migration20260121164326.js +49 -0
  22. package/.medusa/server/src/modules/swap/models/swap.js +21 -0
  23. package/.medusa/server/src/modules/swap/service.js +154 -0
  24. package/.medusa/server/src/services/otp-service.js +16 -5
  25. package/.medusa/server/src/subscribers/send-order-email.js +27 -8
  26. package/.medusa/server/src/workflows/index.js +8 -2
  27. package/.medusa/server/src/workflows/steps/swap/calculate-difference-step.js +56 -0
  28. package/.medusa/server/src/workflows/steps/swap/create-swap-step.js +29 -0
  29. package/.medusa/server/src/workflows/steps/swap/index.js +16 -0
  30. package/.medusa/server/src/workflows/steps/swap/retrieve-swap-step.js +26 -0
  31. package/.medusa/server/src/workflows/steps/swap/update-swap-status-step.js +25 -0
  32. package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +47 -0
  33. package/.medusa/server/src/workflows/steps/swap/validate-swap-items-step.js +41 -0
  34. package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +38 -0
  35. package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +46 -0
  36. package/.medusa/server/src/workflows/swaps/types.js +3 -0
  37. package/.medusa/server/src/workflows/swaps/update-swap-status-workflow.js +23 -0
  38. package/README.md +208 -0
  39. package/package.json +1 -1
  40. package/.medusa/server/src/utils/resolve-options.js +0 -101
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@medusajs/framework/utils");
4
+ const swap_1 = require("./models/swap");
5
+ class SwapService extends (0, utils_1.MedusaService)({ Swap: swap_1.Swap }) {
6
+ constructor(container) {
7
+ super(container);
8
+ this.manager_ = container.manager;
9
+ this.logger_ = container.logger;
10
+ }
11
+ async createSwap(input) {
12
+ const { order_id, return_items, new_items, reason, note } = input;
13
+ if (!return_items || return_items.length === 0) {
14
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Return items are required");
15
+ }
16
+ if (!new_items || new_items.length === 0) {
17
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "New items are required");
18
+ }
19
+ const swap = await this.createSwaps({
20
+ order_id,
21
+ status: "requested",
22
+ return_items: return_items,
23
+ new_items: new_items,
24
+ difference_due: 0, // Will be calculated later
25
+ reason: reason || null,
26
+ note: note || null,
27
+ metadata: {
28
+ created_at: new Date().toISOString(),
29
+ status_history: [
30
+ {
31
+ status: "requested",
32
+ timestamp: new Date().toISOString(),
33
+ },
34
+ ],
35
+ },
36
+ });
37
+ return Array.isArray(swap) ? swap[0] : swap;
38
+ }
39
+ async approveSwap(swapId, adminId) {
40
+ const swap = await this.retrieveSwap(swapId);
41
+ const swapData = swap;
42
+ if (swapData.status !== "requested") {
43
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Swap cannot be approved. Current status: ${swapData.status}`);
44
+ }
45
+ const metadata = swapData.metadata || {};
46
+ const statusHistory = metadata.status_history || [];
47
+ await this.updateSwaps({
48
+ selector: { id: swapId },
49
+ data: {
50
+ status: "approved",
51
+ metadata: {
52
+ ...metadata,
53
+ approved_at: new Date().toISOString(),
54
+ approved_by: adminId,
55
+ status_history: [
56
+ ...statusHistory,
57
+ {
58
+ status: "approved",
59
+ timestamp: new Date().toISOString(),
60
+ admin_id: adminId,
61
+ },
62
+ ],
63
+ },
64
+ },
65
+ });
66
+ return await this.retrieveSwap(swapId);
67
+ }
68
+ async rejectSwap(swapId, adminId, reason) {
69
+ const swap = await this.retrieveSwap(swapId);
70
+ const swapData = swap;
71
+ if (swapData.status !== "requested") {
72
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Swap cannot be rejected. Current status: ${swapData.status}`);
73
+ }
74
+ const metadata = swapData.metadata || {};
75
+ const statusHistory = metadata.status_history || [];
76
+ await this.updateSwaps({
77
+ selector: { id: swapId },
78
+ data: {
79
+ status: "rejected",
80
+ metadata: {
81
+ ...metadata,
82
+ rejected_at: new Date().toISOString(),
83
+ rejected_by: adminId,
84
+ rejection_reason: reason || null,
85
+ status_history: [
86
+ ...statusHistory,
87
+ {
88
+ status: "rejected",
89
+ timestamp: new Date().toISOString(),
90
+ admin_id: adminId,
91
+ reason: reason || null,
92
+ },
93
+ ],
94
+ },
95
+ },
96
+ });
97
+ return await this.retrieveSwap(swapId);
98
+ }
99
+ async updateSwapStatus(input) {
100
+ const { swap_id, status, metadata: additionalMetadata } = input;
101
+ const swap = await this.retrieveSwap(swap_id);
102
+ const swapData = swap;
103
+ const currentStatus = swapData.status;
104
+ // Validate status transition
105
+ const validTransitions = {
106
+ requested: ["approved", "rejected", "cancelled"],
107
+ approved: ["return_started", "cancelled"],
108
+ return_started: ["return_shipped", "cancelled"],
109
+ return_shipped: ["return_received", "cancelled"],
110
+ return_received: ["new_items_shipped", "cancelled"],
111
+ new_items_shipped: ["completed", "cancelled"],
112
+ rejected: [], // Terminal state
113
+ completed: [], // Terminal state
114
+ cancelled: [], // Terminal state
115
+ };
116
+ const allowedTransitions = validTransitions[currentStatus] || [];
117
+ if (!allowedTransitions.includes(status)) {
118
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Invalid status transition from ${currentStatus} to ${status}. Allowed transitions: ${allowedTransitions.join(", ")}`);
119
+ }
120
+ const metadata = swapData.metadata || {};
121
+ const statusHistory = metadata.status_history || [];
122
+ await this.updateSwaps({
123
+ selector: { id: swap_id },
124
+ data: {
125
+ status,
126
+ metadata: {
127
+ ...metadata,
128
+ ...additionalMetadata,
129
+ status_history: [
130
+ ...statusHistory,
131
+ {
132
+ status,
133
+ timestamp: new Date().toISOString(),
134
+ },
135
+ ],
136
+ },
137
+ },
138
+ });
139
+ return await this.retrieveSwap(swap_id);
140
+ }
141
+ async calculateDifferenceDue(swapId) {
142
+ const swap = await this.retrieveSwap(swapId);
143
+ const swapData = swap;
144
+ // This is a placeholder - actual calculation would require:
145
+ // 1. Fetch order items and their prices
146
+ // 2. Calculate return items total
147
+ // 3. Calculate new items total
148
+ // 4. Return difference (new_items_total - return_items_total)
149
+ // For now, return stored value or 0 - this will be implemented in workflow step
150
+ return swapData.difference_due || 0;
151
+ }
152
+ }
153
+ exports.default = SwapService;
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3N3YXAvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUFzRTtBQUN0RSx3Q0FBb0M7QUFrQ3BDLE1BQXFCLFdBQVksU0FBUSxJQUFBLHFCQUFhLEVBQUMsRUFBRSxJQUFJLEVBQUosV0FBSSxFQUFFLENBQUM7SUFJOUQsWUFBWSxTQUErQjtRQUN6QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQTtJQUNqQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFzQjtRQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQTtRQUVqRSxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMkJBQTJCLENBQzVCLENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHdCQUF3QixDQUN6QixDQUFBO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNsQyxRQUFRO1lBQ1IsTUFBTSxFQUFFLFdBQVc7WUFDbkIsWUFBWSxFQUFFLFlBQWtEO1lBQ2hFLFNBQVMsRUFBRSxT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
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.OtpService = void 0;
7
7
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
8
- const resolve_options_1 = require("../utils/resolve-options");
9
8
  // In-memory store for OTPs.
10
9
  // NOTE: In a real production environment with multiple server instances,
11
10
  // this should be replaced with Redis or a database table.
@@ -51,9 +50,21 @@ class OtpService {
51
50
  if (!configModule) {
52
51
  throw new Error("configModule is required for generateToken");
53
52
  }
54
- const rawOptions = (0, resolve_options_1.extractOrderManagementOptions)(configModule);
55
- const options = (0, resolve_options_1.resolveOrderManagementOptions)(rawOptions);
56
- const secret = options.jwtSecret;
53
+ const plugins = configModule
54
+ ?.projectConfig?.plugins ?? [];
55
+ let secret;
56
+ for (const plugin of plugins) {
57
+ if (typeof plugin === "object" && plugin !== null && plugin?.resolve === "order-management") {
58
+ const options = plugin?.options;
59
+ if (options?.jwtSecret) {
60
+ secret = options.jwtSecret;
61
+ break;
62
+ }
63
+ }
64
+ }
65
+ if (!secret) {
66
+ throw new Error("order-management: jwtSecret is required");
67
+ }
57
68
  return jsonwebtoken_1.default.sign({
58
69
  guest_identifier: identifier,
59
70
  customer_id: customerId,
@@ -62,4 +73,4 @@ class OtpService {
62
73
  }
63
74
  }
64
75
  exports.OtpService = OtpService;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RwLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvb3RwLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQThCO0FBQzlCLDhEQUF1RztBQUV2Ryw2QkFBNkI7QUFDN0IsMEVBQTBFO0FBQzFFLDBEQUEwRDtBQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBOEMsQ0FBQTtBQUV0RSxNQUFhLFVBQVU7SUFDbkI7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFrQjtRQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7UUFFbEUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDckIsR0FBRztZQUNILFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsYUFBYTtTQUN4RCxDQUFDLENBQUE7UUFFRixPQUFPLEdBQUcsQ0FBQTtJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQWtCLEVBQUUsSUFBWTtRQUN6QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRXJDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE9BQU8sS0FBSyxDQUFBO1FBQ2hCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDOUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUMzQixPQUFPLEtBQUssQ0FBQTtRQUNoQixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BCLE9BQU8sS0FBSyxDQUFBO1FBQ2hCLENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMzQixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxVQUFrQixFQUFFLFVBQW1CLEVBQUUsWUFBc0I7UUFDekUscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUEsK0NBQTZCLEVBQUMsWUFBWSxDQUFDLENBQUE7UUFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQ0FBNkIsRUFBQyxVQUFVLENBQUMsQ0FBQTtRQUN6RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFBO1FBRWhDLE9BQU8sc0JBQUcsQ0FBQyxJQUFJLENBQ1g7WUFDSSxnQkFBZ0IsRUFBRSxVQUFVO1lBQzVCLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLEtBQUssRUFBRSxjQUFjO1NBQ3hCLEVBQ0QsTUFBTSxFQUNOLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUN0QixDQUFBO0lBQ0wsQ0FBQztDQUNKO0FBL0RELGdDQStEQyJ9
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RwLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvb3RwLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQThCO0FBRTlCLDZCQUE2QjtBQUM3QiwwRUFBMEU7QUFDMUUsMERBQTBEO0FBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUE4QyxDQUFBO0FBRXRFLE1BQWEsVUFBVTtJQUNuQjs7O09BR0c7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQWtCO1FBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUVsRSxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRTtZQUNyQixHQUFHO1lBQ0gsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxhQUFhO1NBQ3hELENBQUMsQ0FBQTtRQUVGLE9BQU8sR0FBRyxDQUFBO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBa0IsRUFBRSxJQUFZO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFckMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5QixRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQzNCLE9BQU8sS0FBSyxDQUFBO1FBQ2hCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQztRQUVELDJCQUEyQjtRQUMzQixRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzNCLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLFVBQWtCLEVBQUUsVUFBbUIsRUFBRSxZQUFzQjtRQUN6RSxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQTtRQUNqRSxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUksWUFBNEQ7WUFDM0UsRUFBRSxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQTtRQUVoQyxJQUFJLE1BQTBCLENBQUE7UUFDOUIsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFLLE1BQStCLEVBQUUsT0FBTyxLQUFLLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3RILE1BQU0sT0FBTyxHQUFJLE1BQStDLEVBQUUsT0FBTyxDQUFBO2dCQUN6RSxJQUFJLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztvQkFDdkIsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUE7b0JBQzFCLE1BQUs7Z0JBQ1AsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO1FBQzVELENBQUM7UUFFRCxPQUFPLHNCQUFHLENBQUMsSUFBSSxDQUNYO1lBQ0ksZ0JBQWdCLEVBQUUsVUFBVTtZQUM1QixXQUFXLEVBQUUsVUFBVTtZQUN2QixLQUFLLEVBQUUsY0FBYztTQUN4QixFQUNELE1BQU0sRUFDTixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FDdEIsQ0FBQTtJQUNMLENBQUM7Q0FDSjtBQTlFRCxnQ0E4RUMifQ==
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.config = void 0;
4
4
  exports.default = sendOrderEmailHandler;
5
5
  const utils_1 = require("@medusajs/framework/utils");
6
- const resolve_options_1 = require("../utils/resolve-options");
7
6
  const template_1 = require("../utils/template");
8
7
  const send_notification_step_1 = require("../workflows/steps/send-notification-step");
9
8
  /**
@@ -16,9 +15,17 @@ async function sendOrderEmailHandler({ event: { data }, container, }) {
16
15
  let templatePath = null;
17
16
  try {
18
17
  const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
19
- const pluginOptions = (0, resolve_options_1.extractOrderManagementOptions)(configModule);
20
- const options = (0, resolve_options_1.resolveOrderManagementOptions)(pluginOptions);
21
- templatePath = options.email.orderConfirmTemplate;
18
+ const plugins = configModule
19
+ ?.projectConfig?.plugins ?? [];
20
+ for (const plugin of plugins) {
21
+ if (typeof plugin === "object" && plugin !== null && plugin?.resolve === "order-management") {
22
+ const options = plugin?.options;
23
+ if (options?.email?.orderConfirmTemplate) {
24
+ templatePath = options.email.orderConfirmTemplate;
25
+ break;
26
+ }
27
+ }
28
+ }
22
29
  if (!templatePath) {
23
30
  console.log("[Order Email Subscriber] Email template path not configured, skipping email");
24
31
  return;
@@ -91,9 +98,21 @@ async function sendOrderEmailHandler({ event: { data }, container, }) {
91
98
  const isRegistered = customers.length > 0;
92
99
  // Get plugin options for storefront URL
93
100
  const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
94
- const rawOptions = (0, resolve_options_1.extractOrderManagementOptions)(configModule);
95
- const options = (0, resolve_options_1.resolveOrderManagementOptions)(rawOptions);
96
- const claimLink = `${options.storefrontUrl}/account/orders/claim?order_id=${orderData.id}`;
101
+ const plugins = configModule
102
+ ?.projectConfig?.plugins ?? [];
103
+ let storefrontUrl;
104
+ for (const plugin of plugins) {
105
+ if (typeof plugin === "object" && plugin !== null && plugin?.resolve === "order-management") {
106
+ const options = plugin?.options;
107
+ if (options?.storefrontUrl) {
108
+ storefrontUrl = options.storefrontUrl;
109
+ break;
110
+ }
111
+ }
112
+ }
113
+ const claimLink = storefrontUrl
114
+ ? `${storefrontUrl}/account/orders/claim?order_id=${orderData.id}`
115
+ : undefined;
97
116
  const templateData = {
98
117
  order_id: orderData.id || "N/A",
99
118
  order_status: orderData.status || "N/A",
@@ -141,4 +160,4 @@ async function sendOrderEmailHandler({ event: { data }, container, }) {
141
160
  exports.config = {
142
161
  event: "order.placed",
143
162
  };
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1vcmRlci1lbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9zZW5kLW9yZGVyLWVtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW9CQSx3Q0FvSkM7QUF2S0QscURBQXFFO0FBRXJFLDhEQUdpQztBQUNqQyxnREFBaUY7QUFDakYsc0ZBQTRFO0FBUTVFOzs7R0FHRztBQUNZLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxFQUNsRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQzRCO0lBQ3JDLElBQUksQ0FBQztRQUNILHdDQUF3QztRQUN4QyxJQUFJLFlBQVksR0FBa0IsSUFBSSxDQUFBO1FBQ3RDLElBQUksQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDL0UsTUFBTSxhQUFhLEdBQUcsSUFBQSwrQ0FBNkIsRUFBQyxZQUFZLENBQUMsQ0FBQTtZQUNqRSxNQUFNLE9BQU8sR0FBRyxJQUFBLCtDQUE2QixFQUFDLGFBQWEsQ0FBQyxDQUFBO1lBRTVELFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFBO1lBRWpELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2RUFBNkUsQ0FBQyxDQUFBO2dCQUMxRixPQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsaURBQWlEO1lBQ2pELE9BQU8sQ0FBQyxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQTtZQUNsRixPQUFNO1FBQ1IsQ0FBQztRQUVELG1DQUFtQztRQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO1FBRXZCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FB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
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1vcmRlci1lbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9zZW5kLW9yZGVyLWVtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdCQSx3Q0EwS0M7QUF6TEQscURBQXFFO0FBRXJFLGdEQUFpRjtBQUNqRixzRkFBNEU7QUFRNUU7OztHQUdHO0FBQ1ksS0FBSyxVQUFVLHFCQUFxQixDQUFDLEVBQ2xELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUNmLFNBQVMsR0FDNEI7SUFDckMsSUFBSSxDQUFDO1FBQ0gsd0NBQXdDO1FBQ3hDLElBQUksWUFBWSxHQUFrQixJQUFJLENBQUE7UUFDdEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUMvRSxNQUFNLE9BQU8sR0FBSSxZQUE0RDtnQkFDM0UsRUFBRSxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQTtZQUVoQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFLLE1BQStCLEVBQUUsT0FBTyxLQUFLLGtCQUFrQixFQUFFLENBQUM7b0JBQ3RILE1BQU0sT0FBTyxHQUFJLE1BQTZFLEVBQUUsT0FBTyxDQUFBO29CQUN2RyxJQUFJLE9BQU8sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQzt3QkFDekMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUE7d0JBQ2pELE1BQUs7b0JBQ1AsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2RUFBNkUsQ0FBQyxDQUFBO2dCQUMxRixP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
@@ -1,8 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cancelOrderWorkflow = exports.reorderWorkflow = void 0;
3
+ exports.updateSwapStatusWorkflow = exports.approveSwapWorkflow = exports.createSwapWorkflow = exports.cancelOrderWorkflow = exports.reorderWorkflow = void 0;
4
4
  var reorder_workflow_1 = require("./reorder-workflow");
5
5
  Object.defineProperty(exports, "reorderWorkflow", { enumerable: true, get: function () { return reorder_workflow_1.reorderWorkflow; } });
6
6
  var cancel_order_workflow_1 = require("./cancel-order-workflow");
7
7
  Object.defineProperty(exports, "cancelOrderWorkflow", { enumerable: true, get: function () { return cancel_order_workflow_1.cancelOrderWorkflow; } });
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUFvRDtBQUEzQyxtSEFBQSxlQUFlLE9BQUE7QUFDeEIsaUVBQTZEO0FBQXBELDRIQUFBLG1CQUFtQixPQUFBIn0=
8
+ var create_swap_workflow_1 = require("./swaps/create-swap-workflow");
9
+ Object.defineProperty(exports, "createSwapWorkflow", { enumerable: true, get: function () { return create_swap_workflow_1.createSwapWorkflow; } });
10
+ var approve_swap_workflow_1 = require("./swaps/approve-swap-workflow");
11
+ Object.defineProperty(exports, "approveSwapWorkflow", { enumerable: true, get: function () { return approve_swap_workflow_1.approveSwapWorkflow; } });
12
+ var update_swap_status_workflow_1 = require("./swaps/update-swap-status-workflow");
13
+ Object.defineProperty(exports, "updateSwapStatusWorkflow", { enumerable: true, get: function () { return update_swap_status_workflow_1.updateSwapStatusWorkflow; } });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUFvRDtBQUEzQyxtSEFBQSxlQUFlLE9BQUE7QUFDeEIsaUVBQTZEO0FBQXBELDRIQUFBLG1CQUFtQixPQUFBO0FBQzVCLHFFQUFpRTtBQUF4RCwwSEFBQSxrQkFBa0IsT0FBQTtBQUMzQix1RUFBbUU7QUFBMUQsNEhBQUEsbUJBQW1CLE9BQUE7QUFDNUIsbUZBQThFO0FBQXJFLHVJQUFBLHdCQUF3QixPQUFBIn0=
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateDifferenceStep = 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
+ exports.calculateDifferenceStep = (0, workflows_sdk_1.createStep)("calculate-difference", async (input, { container }) => {
8
+ const { order, return_items, new_items } = input;
9
+ const remoteQuery = container.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
10
+ // Calculate return items total
11
+ let returnTotal = 0;
12
+ for (const returnItem of return_items) {
13
+ const orderItem = order.items.find((item) => item.id === returnItem.id);
14
+ if (orderItem) {
15
+ const orderItemData = orderItem;
16
+ const unitPrice = orderItemData.unit_price || 0;
17
+ returnTotal += unitPrice * returnItem.quantity;
18
+ }
19
+ }
20
+ // Calculate new items total
21
+ let newTotal = 0;
22
+ for (const newItem of new_items) {
23
+ try {
24
+ const queryObject = (0, utils_2.remoteQueryObjectFromString)({
25
+ entryPoint: "product_variant",
26
+ fields: ["id", "calculated_price"],
27
+ filters: {
28
+ id: [newItem.variant_id],
29
+ },
30
+ });
31
+ const variants = await remoteQuery(queryObject);
32
+ const variantArray = Array.isArray(variants) ? variants : variants ? [variants] : [];
33
+ const variant = variantArray.find((v) => {
34
+ const vData = v;
35
+ return vData?.id === newItem.variant_id;
36
+ });
37
+ if (!variant) {
38
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Variant with id ${newItem.variant_id} not found`);
39
+ }
40
+ const variantData = variant;
41
+ const price = variantData.calculated_price || 0;
42
+ newTotal += price * newItem.quantity;
43
+ }
44
+ catch (error) {
45
+ // If variant lookup fails, throw error
46
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Failed to fetch variant ${newItem.variant_id}: ${error instanceof Error ? error.message : "Unknown error"}`);
47
+ }
48
+ }
49
+ // Difference = new_total - return_total
50
+ // Positive = customer owes money, negative = refund
51
+ const difference_due = newTotal - returnTotal;
52
+ return new workflows_sdk_1.StepResponse({
53
+ difference_due,
54
+ });
55
+ });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWRpZmZlcmVuY2Utc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC9jYWxjdWxhdGUtZGlmZmVyZW5jZS1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQWtHO0FBZXJGLFFBQUEsdUJBQXVCLEdBQUcsSUFBQSwwQkFBVSxFQUMvQyxzQkFBc0IsRUFDdEIsS0FBSyxFQUNILEtBQW1DLEVBQ25DLEVBQUUsU0FBUyxFQUFFLEVBQ3lDLEVBQUU7SUFDeEQsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRWhELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ25DLGlDQUF5QixDQUFDLFlBQVksQ0FDdkMsQ0FBQTtJQUVELCtCQUErQjtJQUMvQixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUE7SUFDbkIsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDaEMsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQ3JELENBQUE7UUFDRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxhQUFhLEdBQUcsU0FBb0MsQ0FBQTtZQUMxRCxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQTtZQUMvQyxXQUFXLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0lBQ2hCLEtBQUssTUFBTSxPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBQSxtQ0FBMkIsRUFBQztnQkFDOUMsVUFBVSxFQUFFLGlCQUFpQjtnQkFDN0IsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDO2dCQUNsQyxPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztpQkFDekI7YUFDRixDQUFDLENBQUE7WUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUMvQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1lBQ3BGLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQy9CLENBQUMsQ0FBVSxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxLQUFLLEdBQUcsQ0FBb0IsQ0FBQTtnQkFDbEMsT0FBTyxLQUFLLEVBQUUsRUFBRSxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQUE7WUFDekMsQ0FBQyxDQUNGLENBQUE7WUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsbUJBQW1CLE9BQU8sQ0FBQyxVQUFVLFlBQVksQ0FDbEQsQ0FBQTtZQUNILENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBRyxPQUF3QyxDQUFBO1lBQzVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUE7WUFDL0MsUUFBUSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFBO1FBQ3RDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsdUNBQXVDO1lBQ3ZDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLDJCQUEyQixPQUFPLENBQUMsVUFBVSxLQUFLLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUM3RyxDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsb0RBQW9EO0lBQ3BELE1BQU0sY0FBYyxHQUFHLFFBQVEsR0FBRyxXQUFXLENBQUE7SUFFN0MsT0FBTyxJQUFJLDRCQUFZLENBQWdDO1FBQ3JELGNBQWM7S0FDZixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQSJ9
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSwapStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const swap_1 = require("../../../modules/swap");
6
+ exports.createSwapStep = (0, workflows_sdk_1.createStep)("create-swap", async (input, { container }) => {
7
+ const { order_id, return_items, new_items, difference_due, reason, note } = input;
8
+ const swapService = container.resolve(swap_1.SWAP_MODULE);
9
+ const swap = await swapService.createSwap({
10
+ order_id,
11
+ return_items,
12
+ new_items,
13
+ reason,
14
+ note,
15
+ });
16
+ // Update difference_due after creation
17
+ const swapData = swap;
18
+ await swapService.updateSwaps({
19
+ selector: { id: swapData.id },
20
+ data: {
21
+ difference_due,
22
+ },
23
+ });
24
+ const updatedSwap = await swapService.retrieveSwap(swapData.id);
25
+ return new workflows_sdk_1.StepResponse({
26
+ swap: updatedSwap,
27
+ });
28
+ });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN3YXAtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC9jcmVhdGUtc3dhcC1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFFQUE0RTtBQUM1RSxnREFBbUQ7QUFrQnRDLFFBQUEsY0FBYyxHQUFHLElBQUEsMEJBQVUsRUFDdEMsYUFBYSxFQUNiLEtBQUssRUFDSCxLQUEwQixFQUMxQixFQUFFLFNBQVMsRUFBRSxFQUNnQyxFQUFFO0lBQy9DLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUVqRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFjLGtCQUFXLENBQUMsQ0FBQTtJQUUvRCxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDeEMsUUFBUTtRQUNSLFlBQVk7UUFDWixTQUFTO1FBQ1QsTUFBTTtRQUNOLElBQUk7S0FDTCxDQUFDLENBQUE7SUFFRix1Q0FBdUM7SUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBc0IsQ0FBQTtJQUN2QyxNQUFNLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDNUIsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7UUFDN0IsSUFBSSxFQUFFO1lBQ0osY0FBYztTQUNmO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxXQUFXLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUUvRCxPQUFPLElBQUksNEJBQVksQ0FBdUI7UUFDNUMsSUFBSSxFQUFFLFdBQVc7S0FDbEIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateSwapStatusStep = exports.retrieveSwapStep = exports.createSwapStep = exports.calculateDifferenceStep = exports.validateSwapItemsStep = exports.validateOrderStep = void 0;
4
+ var validate_order_step_1 = require("./validate-order-step");
5
+ Object.defineProperty(exports, "validateOrderStep", { enumerable: true, get: function () { return validate_order_step_1.validateOrderStep; } });
6
+ var validate_swap_items_step_1 = require("./validate-swap-items-step");
7
+ Object.defineProperty(exports, "validateSwapItemsStep", { enumerable: true, get: function () { return validate_swap_items_step_1.validateSwapItemsStep; } });
8
+ var calculate_difference_step_1 = require("./calculate-difference-step");
9
+ Object.defineProperty(exports, "calculateDifferenceStep", { enumerable: true, get: function () { return calculate_difference_step_1.calculateDifferenceStep; } });
10
+ var create_swap_step_1 = require("./create-swap-step");
11
+ Object.defineProperty(exports, "createSwapStep", { enumerable: true, get: function () { return create_swap_step_1.createSwapStep; } });
12
+ var retrieve_swap_step_1 = require("./retrieve-swap-step");
13
+ Object.defineProperty(exports, "retrieveSwapStep", { enumerable: true, get: function () { return retrieve_swap_step_1.retrieveSwapStep; } });
14
+ var update_swap_status_step_1 = require("./update-swap-status-step");
15
+ Object.defineProperty(exports, "updateSwapStatusStep", { enumerable: true, get: function () { return update_swap_status_step_1.updateSwapStatusStep; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXlEO0FBQWhELHdIQUFBLGlCQUFpQixPQUFBO0FBRzFCLHVFQUFrRTtBQUF6RCxpSUFBQSxxQkFBcUIsT0FBQTtBQUc5Qix5RUFBcUU7QUFBNUQsb0lBQUEsdUJBQXVCLE9BQUE7QUFHaEMsdURBQW1EO0FBQTFDLGtIQUFBLGNBQWMsT0FBQTtBQUd2QiwyREFBdUQ7QUFBOUMsc0hBQUEsZ0JBQWdCLE9BQUE7QUFHekIscUVBQWdFO0FBQXZELCtIQUFBLG9CQUFvQixPQUFBIn0=
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retrieveSwapStep = 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.retrieveSwapStep = (0, workflows_sdk_1.createStep)("retrieve-swap", 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
+ try {
14
+ const swap = await swapService.retrieveSwap(swap_id);
15
+ return new workflows_sdk_1.StepResponse({
16
+ swap,
17
+ });
18
+ }
19
+ catch (error) {
20
+ if (error instanceof utils_1.MedusaError && error.type === utils_1.MedusaError.Types.NOT_FOUND) {
21
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Swap with id ${swap_id} not found`);
22
+ }
23
+ throw error;
24
+ }
25
+ });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmlldmUtc3dhcC1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9zd2FwL3JldHJpZXZlLXN3YXAtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLGdEQUFtRDtBQVd0QyxRQUFBLGdCQUFnQixHQUFHLElBQUEsMEJBQVUsRUFDeEMsZUFBZSxFQUNmLEtBQUssRUFDSCxLQUE0QixFQUM1QixFQUFFLFNBQVMsRUFBRSxFQUNrQyxFQUFFO0lBQ2pELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUJBQXFCLENBQ3RCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7SUFFL0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRXBELE9BQU8sSUFBSSw0QkFBWSxDQUF5QjtZQUM5QyxJQUFJO1NBQ0wsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxtQkFBVyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0UsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsZ0JBQWdCLE9BQU8sWUFBWSxDQUNwQyxDQUFBO1FBQ0gsQ0FBQztRQUNELE1BQU0sS0FBSyxDQUFBO0lBQ2IsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFBIn0=
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateSwapStatusStep = 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.updateSwapStatusStep = (0, workflows_sdk_1.createStep)("update-swap-status", async (input, { container }) => {
8
+ const { swap_id, status, metadata } = input;
9
+ if (!swap_id) {
10
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "swap_id is required");
11
+ }
12
+ if (!status) {
13
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "status is required");
14
+ }
15
+ const swapService = container.resolve(swap_1.SWAP_MODULE);
16
+ const swap = await swapService.updateSwapStatus({
17
+ swap_id,
18
+ status,
19
+ metadata,
20
+ });
21
+ return new workflows_sdk_1.StepResponse({
22
+ swap,
23
+ });
24
+ });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXN3YXAtc3RhdHVzLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvdXBkYXRlLXN3YXAtc3RhdHVzLXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBQ3ZELHFFQUE0RTtBQUM1RSxnREFBbUQ7QUFhdEMsUUFBQSxvQkFBb0IsR0FBRyxJQUFBLDBCQUFVLEVBQzVDLG9CQUFvQixFQUNwQixLQUFLLEVBQ0gsS0FBZ0MsRUFDaEMsRUFBRSxTQUFTLEVBQUUsRUFDc0MsRUFBRTtJQUNyRCxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUJBQXFCLENBQ3RCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsb0JBQW9CLENBQ3JCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7SUFFL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsT0FBTztRQUNQLE1BQU07UUFDTixRQUFRO0tBQ1QsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLDRCQUFZLENBQTZCO1FBQ2xELElBQUk7S0FDTCxDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQSJ9
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateOrderStep = 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
+ exports.validateOrderStep = (0, workflows_sdk_1.createStep)("validate-order", async (input, { container }) => {
8
+ const { order_id, customer_id } = input;
9
+ if (!order_id) {
10
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "order_id is required");
11
+ }
12
+ if (!customer_id) {
13
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Customer authentication is required");
14
+ }
15
+ const remoteQuery = container.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
16
+ const queryObject = (0, utils_2.remoteQueryObjectFromString)({
17
+ entryPoint: "order",
18
+ fields: [
19
+ "id",
20
+ "customer_id",
21
+ "email",
22
+ "items.*",
23
+ ],
24
+ filters: {
25
+ id: [order_id],
26
+ },
27
+ });
28
+ const orders = await remoteQuery(queryObject);
29
+ const orderArray = Array.isArray(orders) ? orders : orders ? [orders] : [];
30
+ const order = orderArray.find((o) => {
31
+ const oData = o;
32
+ return oData?.id === order_id;
33
+ });
34
+ if (!order) {
35
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Order with id ${order_id} not found`);
36
+ }
37
+ const orderData = order;
38
+ const orderCustomerId = orderData.customer_id;
39
+ // Validate customer ownership
40
+ if (!orderCustomerId || orderCustomerId !== customer_id) {
41
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "You can only create swaps for your own orders");
42
+ }
43
+ return new workflows_sdk_1.StepResponse({
44
+ order: order,
45
+ });
46
+ });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtb3JkZXItc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC92YWxpZGF0ZS1vcmRlci1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQWtHO0FBd0JyRixRQUFBLGlCQUFpQixHQUFHLElBQUEsMEJBQVUsRUFDekMsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDSCxLQUE2QixFQUM3QixFQUFFLFNBQVMsRUFBRSxFQUNtQyxFQUFFO0lBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRXZDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHNCQUFzQixDQUN2QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQ0FBcUMsQ0FDdEMsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUNuQyxpQ0FBeUIsQ0FBQyxZQUFZLENBQ3ZDLENBQUE7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFBLG1DQUEyQixFQUFDO1FBQzlDLFVBQVUsRUFBRSxPQUFPO1FBQ25CLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixhQUFhO1lBQ2IsT0FBTztZQUNQLFNBQVM7U0FDVjtRQUNELE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQztTQUNmO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0MsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMxRSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUU7UUFDM0MsTUFBTSxLQUFLLEdBQUcsQ0FBb0IsQ0FBQTtRQUNsQyxPQUFPLEtBQUssRUFBRSxFQUFFLEtBQUssUUFBUSxDQUFBO0lBQy9CLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsaUJBQWlCLFFBQVEsWUFBWSxDQUN0QyxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLEtBQWlELENBQUE7SUFDbkUsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQTtJQUU3Qyw4QkFBOEI7SUFDOUIsSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDeEQsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsK0NBQStDLENBQ2hELENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQTBCO1FBQy9DLEtBQUssRUFBRSxLQUF5QztLQUNqRCxDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQSJ9
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSwapItemsStep = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
+ exports.validateSwapItemsStep = (0, workflows_sdk_1.createStep)("validate-swap-items", async (input, { container }) => {
7
+ const { order, return_items, new_items } = input;
8
+ if (!return_items || return_items.length === 0) {
9
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Return items are required");
10
+ }
11
+ if (!new_items || new_items.length === 0) {
12
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "New items are required");
13
+ }
14
+ const orderItems = order.items || [];
15
+ // Validate return items exist in order
16
+ for (const returnItem of return_items) {
17
+ const orderItem = orderItems.find((item) => item.id === returnItem.id);
18
+ if (!orderItem) {
19
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Return item with id ${returnItem.id} not found in order`);
20
+ }
21
+ const orderItemData = orderItem;
22
+ const orderQuantity = orderItemData.quantity || 0;
23
+ if (returnItem.quantity > orderQuantity) {
24
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Return quantity ${returnItem.quantity} exceeds order quantity ${orderQuantity} for item ${returnItem.id}`);
25
+ }
26
+ }
27
+ // Validate new items have variant_id and quantity
28
+ for (const newItem of new_items) {
29
+ if (!newItem.variant_id) {
30
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "New item variant_id is required");
31
+ }
32
+ if (!newItem.quantity || newItem.quantity <= 0) {
33
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `New item quantity must be greater than 0 for variant ${newItem.variant_id}`);
34
+ }
35
+ }
36
+ return new workflows_sdk_1.StepResponse({
37
+ return_items,
38
+ new_items,
39
+ });
40
+ });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtc3dhcC1pdGVtcy1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9zd2FwL3ZhbGlkYXRlLXN3YXAtaXRlbXMtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBeUIvRCxRQUFBLHFCQUFxQixHQUFHLElBQUEsMEJBQVUsRUFDN0MscUJBQXFCLEVBQ3JCLEtBQUssRUFDSCxLQUFpQyxFQUNqQyxFQUFFLFNBQVMsRUFBRSxFQUN1QyxFQUFFO0lBQ3RELE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUVoRCxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMkJBQTJCLENBQzVCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHdCQUF3QixDQUN6QixDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFBO0lBRXBDLHVDQUF1QztJQUN2QyxLQUFLLE1BQU0sVUFBVSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQy9CLENBQUMsSUFBcUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsRUFBRSxDQUNyRCxDQUFBO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsdUJBQXVCLFVBQVUsQ0FBQyxFQUFFLHFCQUFxQixDQUMxRCxDQUFBO1FBQ0gsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLFNBQWtDLENBQUE7UUFDeEQsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUE7UUFFakQsSUFBSSxVQUFVLENBQUMsUUFBUSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1CQUFtQixVQUFVLENBQUMsUUFBUSwyQkFBMkIsYUFBYSxhQUFhLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FDM0csQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELEtBQUssTUFBTSxPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixpQ0FBaUMsQ0FDbEMsQ0FBQTtRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHdEQUF3RCxPQUFPLENBQUMsVUFBVSxFQUFFLENBQzdFLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUE4QjtRQUNuRCxZQUFZO1FBQ1osU0FBUztLQUNWLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.approveSwapWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const swap_1 = require("../steps/swap");
6
+ exports.approveSwapWorkflow = (0, workflows_sdk_1.createWorkflow)("approve-swap", (input) => {
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"
18
+ const { swap: approvedSwap } = (0, swap_1.updateSwapStatusStep)({
19
+ swap_id,
20
+ status: "approved",
21
+ metadata: {
22
+ approved_at: new Date().toISOString(),
23
+ approved_by: admin_id,
24
+ },
25
+ });
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
+ return new workflows_sdk_1.WorkflowResponse({
34
+ swap: approvedSwap,
35
+ });
36
+ });
37
+ exports.default = exports.approveSwapWorkflow;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92ZS1zd2FwLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zd2Fwcy9hcHByb3ZlLXN3YXAtd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHdDQUdzQjtBQU1ULFFBQUEsbUJBQW1CLEdBQUcsSUFBQSw4QkFBYyxFQUMvQyxjQUFjLEVBQ2QsQ0FDRSxLQUErQixFQUNjLEVBQUU7SUFDL0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFbkMsd0JBQXdCO0lBQ3hCLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBQSx1QkFBZ0IsRUFBQztRQUMvQyxPQUFPO0tBQ1IsQ0FBQyxDQUFBO0lBRUYsTUFBTSxRQUFRLEdBQUcsYUFBbUMsQ0FBQTtJQUVwRCx5Q0FBeUM7SUFDekMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNENBQTRDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FDOUQsQ0FBQTtJQUNILENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFBLDJCQUFvQixFQUFDO1FBQ2xELE9BQU87UUFDUCxNQUFNLEVBQUUsVUFBVTtRQUNsQixRQUFRLEVBQUU7WUFDUixXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDckMsV0FBVyxFQUFFLFFBQVE7U0FDdEI7S0FDRixDQUFDLENBQUE7SUFFRixxRUFBcUU7SUFDckUscUVBQXFFO0lBQ3JFLHlFQUF5RTtJQUN6RSw2REFBNkQ7SUFDN0QsYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixLQUFLO0lBRUwsT0FBTyxJQUFJLGdDQUFnQixDQUE0QjtRQUNyRCxJQUFJLEVBQUUsWUFBWTtLQUNuQixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLDJCQUFtQixDQUFBIn0=