order-management 0.0.21 → 0.0.22

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 (34) hide show
  1. package/.medusa/server/src/admin/index.js +49 -23
  2. package/.medusa/server/src/admin/index.mjs +49 -23
  3. package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +69 -31
  4. package/.medusa/server/src/api/admin/swaps/health/route.js +150 -0
  5. package/.medusa/server/src/api/admin/swaps/route.js +6 -12
  6. package/.medusa/server/src/api/admin/swaps/validators.js +9 -13
  7. package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +47 -2
  8. package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +8 -1
  9. package/.medusa/server/src/api/store/swaps/[id]/route.js +15 -4
  10. package/.medusa/server/src/api/store/swaps/route.js +53 -10
  11. package/.medusa/server/src/helpers/swaps.js +1 -1
  12. package/.medusa/server/src/modules/swap/migrations/Migration20260123144734.js +29 -0
  13. package/.medusa/server/src/modules/swap/migrations/Migration20260123162423.js +48 -0
  14. package/.medusa/server/src/modules/swap/migrations/Migration20260126114640.js +48 -0
  15. package/.medusa/server/src/modules/swap/models/swap.js +7 -2
  16. package/.medusa/server/src/modules/swap/service.js +259 -32
  17. package/.medusa/server/src/subscribers/exchange-created.js +171 -0
  18. package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +153 -19
  19. package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +62 -6
  20. package/.medusa/server/src/workflows/steps/swap/create-swap-step.js +7 -12
  21. package/.medusa/server/src/workflows/steps/swap/index.js +6 -4
  22. package/.medusa/server/src/workflows/steps/swap/rollback-return-step.js +70 -0
  23. package/.medusa/server/src/workflows/steps/swap/sync-medusa-status-step.js +49 -3
  24. package/.medusa/server/src/workflows/steps/swap/update-swap-exchange-details-step.js +27 -0
  25. package/.medusa/server/src/workflows/steps/swap/validate-eligibility-step.js +9 -4
  26. package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +24 -1
  27. package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +19 -3
  28. package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +3 -1
  29. package/.medusa/server/src/workflows/swaps/execute-swap-workflow.js +26 -4
  30. package/package.json +1 -1
  31. package/.medusa/server/src/api/admin/swaps/[id]/process-payment/route.js +0 -152
  32. package/.medusa/server/src/api/admin/swaps/[id]/status/route.js +0 -45
  33. package/.medusa/server/src/api/admin/swaps/[id]/sync/route.js +0 -148
  34. package/.medusa/server/src/workflows/steps/swap/handle-payment-difference-step.js +0 -102
@@ -5,7 +5,7 @@ const utils_1 = require("@medusajs/framework/utils");
5
5
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
6
  const swap_1 = require("../../../modules/swap");
7
7
  exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medusa-exchange", async (input, { container }) => {
8
- const { swap_id, return_id } = input;
8
+ const { swap_id, return_id, outbound_shipping_method_id, send_notification } = input;
9
9
  if (!swap_id) {
10
10
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "swap_id is required");
11
11
  }
@@ -26,38 +26,172 @@ exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medus
26
26
  if (newItems.length === 0) {
27
27
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Swap must have new items to create exchange");
28
28
  }
29
- // Resolve order service
30
- const orderService = container.resolve("order");
31
- if (!orderService) {
32
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Order service is not available");
33
- }
34
- // Create exchange using Medusa's Order Module
29
+ // Try to resolve Medusa's exchange workflow first (preferred method)
30
+ // This ensures exchange follows Medusa's native workflow with automatic fulfillment creation
35
31
  let exchangeId;
36
- if (orderService.createExchange) {
37
- const exchange = await orderService.createExchange({
38
- return_id,
39
- items: newItems,
40
- });
41
- exchangeId = exchange.id;
32
+ let creationMethod = "service";
33
+ try {
34
+ // Try to resolve exchange workflow from container
35
+ // Common workflow names: "createExchangeWorkflow", "exchange.create", etc.
36
+ // Workflows in Medusa v2 are functions that take a scope and return an object with a run method
37
+ const possibleWorkflowNames = [
38
+ "createExchangeWorkflow",
39
+ "exchange.create",
40
+ "createExchange",
41
+ ];
42
+ let workflowInstance = null;
43
+ for (const workflowName of possibleWorkflowNames) {
44
+ try {
45
+ const workflow = container.resolve(workflowName);
46
+ if (workflow && typeof workflow === "function") {
47
+ const instance = workflow(container);
48
+ if (instance &&
49
+ typeof instance === "object" &&
50
+ "run" in instance &&
51
+ typeof instance.run === "function") {
52
+ workflowInstance = instance;
53
+ break;
54
+ }
55
+ }
56
+ }
57
+ catch {
58
+ // Workflow not found or not in expected format, try next name
59
+ continue;
60
+ }
61
+ }
62
+ if (workflowInstance) {
63
+ // Use Medusa's exchange workflow (triggers fulfillment workflow automatically)
64
+ // Workflows are executed with scope and run method
65
+ try {
66
+ const { result } = await workflowInstance.run({
67
+ input: {
68
+ return_id,
69
+ items: newItems,
70
+ },
71
+ });
72
+ if (!result || !result.exchange || !result.exchange.id) {
73
+ throw new Error("Workflow executed but did not return valid exchange ID");
74
+ }
75
+ exchangeId = result.exchange.id;
76
+ creationMethod = "workflow";
77
+ }
78
+ catch (executionError) {
79
+ // Workflow execution failed, fall through to service call fallback
80
+ throw executionError;
81
+ }
82
+ }
83
+ else {
84
+ throw new Error("Exchange workflow not found");
85
+ }
86
+ }
87
+ catch (workflowError) {
88
+ // Log workflow error for debugging, then fallback to service call
89
+ const errorMessage = workflowError instanceof Error ? workflowError.message : String(workflowError);
90
+ console.log(`[Create Medusa Exchange] Workflow resolution/execution failed, falling back to service call: ${errorMessage}`);
91
+ // Fallback to direct service call if workflow not available
92
+ try {
93
+ const orderService = container.resolve("order");
94
+ if (!orderService) {
95
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Order service is not available");
96
+ }
97
+ if (orderService.createExchange) {
98
+ const exchange = await orderService.createExchange({
99
+ return_id,
100
+ items: newItems,
101
+ });
102
+ exchangeId = exchange.id;
103
+ creationMethod = "service";
104
+ }
105
+ else {
106
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNKNOWN_MODULES, `Exchange creation is not available. Workflow error: ${errorMessage}. Order service createExchange method also not found.`);
107
+ }
108
+ }
109
+ catch (serviceError) {
110
+ // If service call also fails, throw with both errors
111
+ const serviceErrorMessage = serviceError instanceof Error ? serviceError.message : String(serviceError);
112
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNKNOWN_MODULES, `Failed to create exchange via workflow and service: Workflow error: ${errorMessage}, Service error: ${serviceErrorMessage}`);
113
+ }
114
+ }
115
+ // Add outbound shipping method if provided
116
+ // Note: This may need to be done via Medusa's exchange API after creation
117
+ // depending on Medusa v2 API structure
118
+ if (outbound_shipping_method_id) {
119
+ try {
120
+ const exchangeService = container.resolve("exchange");
121
+ if (exchangeService?.addShippingMethod) {
122
+ await exchangeService.addShippingMethod({
123
+ exchange_id: exchangeId,
124
+ shipping_method_id: outbound_shipping_method_id,
125
+ });
126
+ }
127
+ }
128
+ catch (error) {
129
+ // Log but don't fail if shipping method addition fails
130
+ // Shipping method can be added manually via admin UI if needed
131
+ console.warn("[Create Medusa Exchange] Failed to add outbound shipping method:", error);
132
+ }
42
133
  }
43
- else {
44
- // Fallback: Use remote query or workflow
45
- // In production, you'd use Medusa's exchange workflow or API
46
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNKNOWN_MODULES, "Exchange creation via Order Module is not directly available. Please use Medusa's exchange workflow.");
134
+ // Send notification if requested
135
+ if (send_notification) {
136
+ try {
137
+ // Resolve notification service if available
138
+ const notificationService = container.resolve("notification");
139
+ if (notificationService?.send) {
140
+ const orderId = swapData.order_id;
141
+ // Get order email from remote query if needed
142
+ const remoteQuery = container.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
143
+ if (orderId && remoteQuery) {
144
+ try {
145
+ const orderQuery = (0, utils_1.remoteQueryObjectFromString)({
146
+ entryPoint: "order",
147
+ fields: ["id", "email"],
148
+ filters: { id: [orderId] },
149
+ });
150
+ const orders = await remoteQuery(orderQuery);
151
+ const orderArray = Array.isArray(orders) ? orders : orders ? [orders] : [];
152
+ const order = orderArray[0];
153
+ if (order?.email) {
154
+ await notificationService.send({
155
+ to: order.email,
156
+ channel: "email",
157
+ template: "exchange-created",
158
+ data: {
159
+ exchange_id: exchangeId,
160
+ swap_id: swap_id,
161
+ order_id: orderId,
162
+ },
163
+ });
164
+ }
165
+ }
166
+ catch (notificationError) {
167
+ console.warn("[Create Medusa Exchange] Failed to send notification:", notificationError);
168
+ }
169
+ }
170
+ }
171
+ }
172
+ catch (error) {
173
+ // Log but don't fail if notification fails
174
+ console.warn("[Create Medusa Exchange] Notification service not available:", error);
175
+ }
47
176
  }
48
- // Update swap with exchange_id
177
+ // Update swap with exchange_id, exchange details, and creation method
49
178
  const swapMetadata = swapData.metadata || {};
50
179
  const medusaIntegration = swapMetadata.medusa_integration || {};
51
180
  const updatedSwap = await swapService.updateSwaps({
52
181
  selector: { id: swap_id },
53
182
  data: {
54
183
  exchange_id: exchangeId,
184
+ outbound_shipping_method_id: outbound_shipping_method_id || null,
185
+ send_notification: send_notification || false,
55
186
  metadata: {
56
187
  ...swapMetadata,
57
188
  medusa_integration: {
58
189
  ...medusaIntegration,
59
190
  exchange_id: exchangeId,
60
191
  exchange_created_at: new Date().toISOString(),
192
+ exchange_creation_method: creationMethod,
193
+ outbound_shipping_method_id,
194
+ notification_sent: send_notification || false,
61
195
  },
62
196
  },
63
197
  },
@@ -68,4 +202,4 @@ exports.createMedusaExchangeStep = (0, workflows_sdk_1.createStep)("create-medus
68
202
  swap: finalSwap || swap,
69
203
  });
70
204
  });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lZHVzYS1leGNoYW5nZS1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9zd2FwL2NyZWF0ZS1tZWR1c2EtZXhjaGFuZ2Utc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLGdEQUFtRDtBQWN0QyxRQUFBLHdCQUF3QixHQUFHLElBQUEsMEJBQVUsRUFDaEQsd0JBQXdCLEVBQ3hCLEtBQUssRUFDSCxLQUFvQyxFQUNwQyxFQUFFLFNBQVMsRUFBRSxFQUMwQyxFQUFFO0lBQ3pELE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRXBDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHFCQUFxQixDQUN0QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDBDQUEwQyxDQUMzQyxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQWMsa0JBQVcsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUlOLENBQUE7SUFFWCxJQUFLLFFBQXFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkQsMkJBQTJCO1FBQzNCLE9BQU8sSUFBSSw0QkFBWSxDQUFpQztZQUN0RCxXQUFXLEVBQUcsUUFBcUMsQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNyRSxJQUFJO1NBQ0wsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFJLFFBQTRFLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQTtJQUU5RyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsNkNBQTZDLENBQzlDLENBQUE7SUFDSCxDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBS25DLE9BQU8sQ0FBQyxDQUFBO0lBRVgsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGdDQUFnQyxDQUNqQyxDQUFBO0lBQ0gsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxJQUFJLFVBQWtCLENBQUE7SUFFdEIsSUFBSSxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxZQUFZLENBQUMsY0FBYyxDQUFDO1lBQ2pELFNBQVM7WUFDVCxLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFDLENBQUE7UUFFRixVQUFVLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQTtJQUMxQixDQUFDO1NBQU0sQ0FBQztRQUNOLHlDQUF5QztRQUN6Qyw2REFBNkQ7UUFDN0QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFDakMsc0dBQXNHLENBQ3ZHLENBQUE7SUFDSCxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLE1BQU0sWUFBWSxHQUFJLFFBQW1ELENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQTtJQUN4RixNQUFNLGlCQUFpQixHQUFJLFlBQVksQ0FBQyxrQkFBOEMsSUFBSSxFQUFFLENBQUE7SUFFNUYsTUFBTSxXQUFXLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQ2hELFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUU7UUFDekIsSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUFFLFVBQVU7WUFDdkIsUUFBUSxFQUFFO2dCQUNSLEdBQUcsWUFBWTtnQkFDZixrQkFBa0IsRUFBRTtvQkFDbEIsR0FBRyxpQkFBaUI7b0JBQ3BCLFdBQVcsRUFBRSxVQUFVO29CQUN2QixtQkFBbUIsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtpQkFDOUM7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUE7SUFFM0UsT0FBTyxJQUFJLDRCQUFZLENBQWlDO1FBQ3RELFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLElBQUksRUFBRSxTQUFTLElBQUksSUFBSTtLQUN4QixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQSJ9
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lZHVzYS1leGNoYW5nZS1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9zd2FwL2NyZWF0ZS1tZWR1c2EtZXhjaGFuZ2Utc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBK0c7QUFDL0cscUVBQTRFO0FBRTVFLGdEQUFtRDtBQWdCdEMsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELHdCQUF3QixFQUN4QixLQUFLLEVBQ0gsS0FBb0MsRUFDcEMsRUFBRSxTQUFTLEVBQUUsRUFDMEMsRUFBRTtJQUN6RCxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUVwRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQkFBcUIsQ0FDdEIsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwwQ0FBMEMsQ0FDM0MsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFjLGtCQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFJTixDQUFBO0lBRVgsSUFBSyxRQUFxQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZELDJCQUEyQjtRQUMzQixPQUFPLElBQUksNEJBQVksQ0FBaUM7WUFDdEQsV0FBVyxFQUFHLFFBQXFDLENBQUMsV0FBVyxJQUFJLEVBQUU7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
@@ -6,7 +6,7 @@ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
6
  const utils_2 = require("@medusajs/framework/utils");
7
7
  const swap_1 = require("../../../modules/swap");
8
8
  exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-return", async (input, { container }) => {
9
- const { swap_id } = input;
9
+ const { swap_id, return_location_id, return_shipping_method_id } = input;
10
10
  if (!swap_id) {
11
11
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "swap_id is required");
12
12
  }
@@ -26,7 +26,33 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
26
26
  if (swapData.status !== "approved") {
27
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
28
  }
29
- const returnItems = swapData.return_items || [];
29
+ // Parse return_items from JSONB format
30
+ // return_items is stored as JSONB and may be an array or JSON string
31
+ let returnItems = [];
32
+ if (swapData.return_items) {
33
+ if (Array.isArray(swapData.return_items)) {
34
+ returnItems = swapData.return_items.map((item) => ({
35
+ id: String(item.id || item.item_id || ""),
36
+ quantity: Number(item.quantity || 0),
37
+ reason: item.reason,
38
+ }));
39
+ }
40
+ else if (typeof swapData.return_items === "string") {
41
+ try {
42
+ const parsed = JSON.parse(swapData.return_items);
43
+ if (Array.isArray(parsed)) {
44
+ returnItems = parsed.map((item) => ({
45
+ id: String(item.id || item.item_id || ""),
46
+ quantity: Number(item.quantity || 0),
47
+ reason: item.reason,
48
+ }));
49
+ }
50
+ }
51
+ catch {
52
+ // Invalid JSON, will throw error below
53
+ }
54
+ }
55
+ }
30
56
  if (returnItems.length === 0) {
31
57
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Swap must have return items");
32
58
  }
@@ -38,16 +64,38 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
38
64
  // Create return using Medusa's Order Module
39
65
  let returnId;
40
66
  if (orderService.createReturn) {
67
+ // Map SwapItem format (id) to Medusa return format (item_id)
41
68
  const returnItemsForMedusa = returnItems.map((item) => ({
42
- item_id: item.item_id,
69
+ item_id: item.id,
43
70
  quantity: item.quantity,
44
- reason_id: item.reason_id,
71
+ reason_id: item.reason, // Assuming reason is the reason_id
45
72
  }));
46
73
  const medusaReturn = await orderService.createReturn({
47
74
  order_id: swapData.order_id,
48
75
  items: returnItemsForMedusa,
76
+ location_id: return_location_id,
49
77
  });
50
78
  returnId = medusaReturn.id;
79
+ // Add return shipping method if provided
80
+ // Note: This may need to be done via Medusa's return API after creation
81
+ // depending on Medusa v2 API structure
82
+ if (return_shipping_method_id) {
83
+ // Try to resolve return service to add shipping method
84
+ try {
85
+ const returnService = container.resolve("return");
86
+ if (returnService?.addShippingMethod) {
87
+ await returnService.addShippingMethod({
88
+ return_id: returnId,
89
+ shipping_method_id: return_shipping_method_id,
90
+ });
91
+ }
92
+ }
93
+ catch (error) {
94
+ // Log but don't fail if shipping method addition fails
95
+ // Shipping method can be added manually via admin UI if needed
96
+ console.warn("[Create Medusa Return] Failed to add return shipping method:", error);
97
+ }
98
+ }
51
99
  }
52
100
  else {
53
101
  // Fallback: Use remote query to create return via API
@@ -57,15 +105,23 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
57
105
  // In production, you'd use Medusa's return workflow or API
58
106
  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
107
  }
60
- // Update swap with return_id
108
+ // Update swap with return_id and exchange details
109
+ const swapMetadata = swapData.metadata || {};
110
+ const medusaIntegration = swapMetadata.medusa_integration || {};
61
111
  const updatedSwap = await swapService.updateSwaps({
62
112
  selector: { id: swap_id },
63
113
  data: {
64
114
  return_id: returnId,
115
+ return_location_id: return_location_id || null,
116
+ return_shipping_method_id: return_shipping_method_id || null,
65
117
  metadata: {
118
+ ...swapMetadata,
66
119
  medusa_integration: {
120
+ ...medusaIntegration,
67
121
  return_id: returnId,
68
122
  return_created_at: new Date().toISOString(),
123
+ return_location_id,
124
+ return_shipping_method_id,
69
125
  },
70
126
  },
71
127
  },
@@ -76,4 +132,4 @@ exports.createMedusaReturnStep = (0, workflows_sdk_1.createStep)("create-medusa-
76
132
  swap: finalSwap || swap,
77
133
  });
78
134
  });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lZHVzYS1yZXR1cm4tc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC9jcmVhdGUtbWVkdXNhLXJldHVybi1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQWtHO0FBRWxHLGdEQUFtRDtBQWF0QyxRQUFBLHNCQUFzQixHQUFHLElBQUEsMEJBQVUsRUFDOUMsc0JBQXNCLEVBQ3RCLEtBQUssRUFDSCxLQUFrQyxFQUNsQyxFQUFFLFNBQVMsRUFBRSxFQUN3QyxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUJBQXFCLENBQ3RCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BELE1BQU0sUUFBUSxHQUFHLElBS2hCLENBQUE7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDRCQUE0QixDQUM3QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLHlCQUF5QjtRQUN6QixPQUFPLElBQUksNEJBQVksQ0FBK0I7WUFDcEQsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO1lBQzdCLElBQUk7U0FDTCxDQUFDLENBQUE7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
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lZHVzYS1yZXR1cm4tc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC9jcmVhdGUtbWVkdXNhLXJldHVybi1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUN2RCxxRUFBNEU7QUFDNUUscURBQWtHO0FBRWxHLGdEQUFtRDtBQWV0QyxRQUFBLHNCQUFzQixHQUFHLElBQUEsMEJBQVUsRUFDOUMsc0JBQXNCLEVBQ3RCLEtBQUssRUFDSCxLQUFrQyxFQUNsQyxFQUFFLFNBQVMsRUFBRSxFQUN3QyxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFeEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUJBQXFCLENBQ3RCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BELE1BQU0sUUFBUSxHQUFHLElBS2hCLENBQUE7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDRCQUE0QixDQUM3QixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLHlCQUF5QjtRQUN6QixPQUFPLElBQUksNEJBQVksQ0FBK0I7WUFDcEQsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO1lB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
@@ -4,26 +4,21 @@ exports.createSwapStep = void 0;
4
4
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
5
  const swap_1 = require("../../../modules/swap");
6
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;
7
+ const { order_id, customer_id, return_items, new_items, difference_due, reason, note } = input;
8
8
  const swapService = container.resolve(swap_1.SWAP_MODULE);
9
+ // Create swap atomically with difference_due and customer_id included
10
+ // This ensures consistency - swap is created with correct difference_due and customer_id in single operation
9
11
  const swap = await swapService.createSwap({
10
12
  order_id,
13
+ customer_id,
11
14
  return_items,
12
15
  new_items,
16
+ difference_due, // Include difference_due during creation
13
17
  reason,
14
18
  note,
15
19
  });
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
20
  return new workflows_sdk_1.StepResponse({
26
- swap: updatedSwap,
21
+ swap,
27
22
  });
28
23
  });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN3YXAtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC9jcmVhdGUtc3dhcC1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFFQUE0RTtBQUM1RSxnREFBbUQ7QUFrQnRDLFFBQUEsY0FBYyxHQUFHLElBQUEsMEJBQVUsRUFDdEMsYUFBYSxFQUNiLEtBQUssRUFDSCxLQUEwQixFQUMxQixFQUFFLFNBQVMsRUFBRSxFQUNnQyxFQUFFO0lBQy9DLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUVqRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFjLGtCQUFXLENBQUMsQ0FBQTtJQUUvRCxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDeEMsUUFBUTtRQUNSLFlBQVk7UUFDWixTQUFTO1FBQ1QsTUFBTTtRQUNOLElBQUk7S0FDTCxDQUFDLENBQUE7SUFFRix1Q0FBdUM7SUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBc0IsQ0FBQTtJQUN2QyxNQUFNLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDNUIsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7UUFDN0IsSUFBSSxFQUFFO1lBQ0osY0FBYztTQUNmO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxXQUFXLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUUvRCxPQUFPLElBQUksNEJBQVksQ0FBdUI7UUFDNUMsSUFBSSxFQUFFLFdBQVc7S0FDbEIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUEifQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN3YXAtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvc3dhcC9jcmVhdGUtc3dhcC1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFFQUE0RTtBQUM1RSxnREFBbUQ7QUFtQnRDLFFBQUEsY0FBYyxHQUFHLElBQUEsMEJBQVUsRUFDdEMsYUFBYSxFQUNiLEtBQUssRUFDSCxLQUEwQixFQUMxQixFQUFFLFNBQVMsRUFBRSxFQUNnQyxFQUFFO0lBQy9DLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFOUYsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7SUFFL0Qsc0VBQXNFO0lBQ3RFLDZHQUE2RztJQUM3RyxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDeEMsUUFBUTtRQUNSLFdBQVc7UUFDWCxZQUFZO1FBQ1osU0FBUztRQUNULGNBQWMsRUFBRSx5Q0FBeUM7UUFDekQsTUFBTTtRQUNOLElBQUk7S0FDTCxDQUFDLENBQUE7SUFFRixPQUFPLElBQUksNEJBQVksQ0FBdUI7UUFDNUMsSUFBSTtLQUNMLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
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;
3
+ exports.updateSwapExchangeDetailsStep = exports.rollbackReturnStep = exports.syncMedusaStatusStep = 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");
@@ -19,8 +19,10 @@ var create_medusa_return_step_1 = require("./create-medusa-return-step");
19
19
  Object.defineProperty(exports, "createMedusaReturnStep", { enumerable: true, get: function () { return create_medusa_return_step_1.createMedusaReturnStep; } });
20
20
  var create_medusa_exchange_step_1 = require("./create-medusa-exchange-step");
21
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
22
  var sync_medusa_status_step_1 = require("./sync-medusa-status-step");
25
23
  Object.defineProperty(exports, "syncMedusaStatusStep", { enumerable: true, get: function () { return sync_medusa_status_step_1.syncMedusaStatusStep; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXlEO0FBQWhELHdIQUFBLGlCQUFpQixPQUFBO0FBRzFCLHVFQUFrRTtBQUF6RCxpSUFBQSxxQkFBcUIsT0FBQTtBQUc5Qix5RUFBcUU7QUFBNUQsb0lBQUEsdUJBQXVCLE9BQUE7QUFHaEMsdURBQW1EO0FBQTFDLGtIQUFBLGNBQWMsT0FBQTtBQUd2QiwyREFBdUQ7QUFBOUMsc0hBQUEsZ0JBQWdCLE9BQUE7QUFHekIscUVBQWdFO0FBQXZELCtIQUFBLG9CQUFvQixPQUFBO0FBRzdCLHlFQUFxRTtBQUE1RCxvSUFBQSx1QkFBdUIsT0FBQTtBQUdoQyx5RUFBb0U7QUFBM0QsbUlBQUEsc0JBQXNCLE9BQUE7QUFHL0IsNkVBQXdFO0FBQS9ELHVJQUFBLHdCQUF3QixPQUFBO0FBR2pDLG1GQUE4RTtBQUFyRSw2SUFBQSwyQkFBMkIsT0FBQTtBQUdwQyxxRUFBZ0U7QUFBdkQsK0hBQUEsb0JBQW9CLE9BQUEifQ==
24
+ var rollback_return_step_1 = require("./rollback-return-step");
25
+ Object.defineProperty(exports, "rollbackReturnStep", { enumerable: true, get: function () { return rollback_return_step_1.rollbackReturnStep; } });
26
+ var update_swap_exchange_details_step_1 = require("./update-swap-exchange-details-step");
27
+ Object.defineProperty(exports, "updateSwapExchangeDetailsStep", { enumerable: true, get: function () { return update_swap_exchange_details_step_1.updateSwapExchangeDetailsStep; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXlEO0FBQWhELHdIQUFBLGlCQUFpQixPQUFBO0FBRzFCLHVFQUFrRTtBQUF6RCxpSUFBQSxxQkFBcUIsT0FBQTtBQUc5Qix5RUFBcUU7QUFBNUQsb0lBQUEsdUJBQXVCLE9BQUE7QUFHaEMsdURBQW1EO0FBQTFDLGtIQUFBLGNBQWMsT0FBQTtBQUd2QiwyREFBdUQ7QUFBOUMsc0hBQUEsZ0JBQWdCLE9BQUE7QUFHekIscUVBQWdFO0FBQXZELCtIQUFBLG9CQUFvQixPQUFBO0FBRzdCLHlFQUFxRTtBQUE1RCxvSUFBQSx1QkFBdUIsT0FBQTtBQUdoQyx5RUFBb0U7QUFBM0QsbUlBQUEsc0JBQXNCLE9BQUE7QUFHL0IsNkVBQXdFO0FBQS9ELHVJQUFBLHdCQUF3QixPQUFBO0FBR2pDLHFFQUFnRTtBQUF2RCwrSEFBQSxvQkFBb0IsT0FBQTtBQUc3QiwrREFBMkQ7QUFBbEQsMEhBQUEsa0JBQWtCLE9BQUE7QUFHM0IseUZBQW1GO0FBQTFFLGtKQUFBLDZCQUE2QixPQUFBIn0=
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rollbackReturnStep = 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
+ /**
8
+ * Rollback step to clean up orphaned return if exchange creation fails
9
+ * This step removes the return_id from swap and logs the rollback reason
10
+ * Note: We don't delete the Medusa return itself as it may have dependencies
11
+ * The return will remain in Medusa but won't be linked to the swap
12
+ */
13
+ exports.rollbackReturnStep = (0, workflows_sdk_1.createStep)("rollback-return", async (input, { container }) => {
14
+ const { swap_id, return_id, reason } = input;
15
+ if (!swap_id) {
16
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "swap_id is required for rollback");
17
+ }
18
+ if (!return_id) {
19
+ // No return to rollback
20
+ return new workflows_sdk_1.StepResponse({
21
+ success: true,
22
+ swap: null,
23
+ });
24
+ }
25
+ const swapService = container.resolve(swap_1.SWAP_MODULE);
26
+ const swap = await swapService.retrieveSwap(swap_id);
27
+ const swapData = swap;
28
+ // Only rollback if return_id matches
29
+ if (swapData.return_id !== return_id) {
30
+ // Return already changed or doesn't match
31
+ return new workflows_sdk_1.StepResponse({
32
+ success: false,
33
+ swap,
34
+ });
35
+ }
36
+ const swapMetadata = swapData.metadata || {};
37
+ const medusaIntegration = swapMetadata.medusa_integration || {};
38
+ const rollbackHistory = swapMetadata.rollback_history || [];
39
+ // Remove return_id from swap and log rollback
40
+ const updatedSwap = await swapService.updateSwaps({
41
+ selector: { id: swap_id },
42
+ data: {
43
+ return_id: null,
44
+ metadata: {
45
+ ...swapMetadata,
46
+ medusa_integration: {
47
+ ...medusaIntegration,
48
+ return_id: null,
49
+ return_rollback_at: new Date().toISOString(),
50
+ return_rollback_reason: reason,
51
+ },
52
+ rollback_history: [
53
+ ...rollbackHistory,
54
+ {
55
+ action: "rollback_return",
56
+ return_id,
57
+ reason,
58
+ timestamp: new Date().toISOString(),
59
+ },
60
+ ],
61
+ },
62
+ },
63
+ });
64
+ const finalSwap = Array.isArray(updatedSwap) ? updatedSwap[0] : updatedSwap;
65
+ return new workflows_sdk_1.StepResponse({
66
+ success: true,
67
+ swap: finalSwap || swap,
68
+ });
69
+ });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbGJhY2stcmV0dXJuLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvcm9sbGJhY2stcmV0dXJuLXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBQ3ZELHFFQUE0RTtBQUM1RSxnREFBbUQ7QUFjbkQ7Ozs7O0dBS0c7QUFDVSxRQUFBLGtCQUFrQixHQUFHLElBQUEsMEJBQVUsRUFDMUMsaUJBQWlCLEVBQ2pCLEtBQUssRUFDSCxLQUE4QixFQUM5QixFQUFFLFNBQVMsRUFBRSxFQUNvQyxFQUFFO0lBQ25ELE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUU1QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixrQ0FBa0MsQ0FDbkMsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZix3QkFBd0I7UUFDeEIsT0FBTyxJQUFJLDRCQUFZLENBQTJCO1lBQ2hELE9BQU8sRUFBRSxJQUFJO1lBQ2IsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BELE1BQU0sUUFBUSxHQUFHLElBR2hCLENBQUE7SUFFRCxxQ0FBcUM7SUFDckMsSUFBSSxRQUFRLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLDBDQUEwQztRQUMxQyxPQUFPLElBQUksNEJBQVksQ0FBMkI7WUFDaEQsT0FBTyxFQUFFLEtBQUs7WUFDZCxJQUFJO1NBQ0wsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFBO0lBQzVDLE1BQU0saUJBQWlCLEdBQUksWUFBWSxDQUFDLGtCQUE4QyxJQUFJLEVBQUUsQ0FBQTtJQUM1RixNQUFNLGVBQWUsR0FBSSxZQUFZLENBQUMsZ0JBQW1ELElBQUksRUFBRSxDQUFBO0lBRS9GLDhDQUE4QztJQUM5QyxNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDaEQsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRTtRQUN6QixJQUFJLEVBQUU7WUFDSixTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRTtnQkFDUixHQUFHLFlBQVk7Z0JBQ2Ysa0JBQWtCLEVBQUU7b0JBQ2xCLEdBQUcsaUJBQWlCO29CQUNwQixTQUFTLEVBQUUsSUFBSTtvQkFDZixrQkFBa0IsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtvQkFDNUMsc0JBQXNCLEVBQUUsTUFBTTtpQkFDL0I7Z0JBQ0QsZ0JBQWdCLEVBQUU7b0JBQ2hCLEdBQUcsZUFBZTtvQkFDbEI7d0JBQ0UsTUFBTSxFQUFFLGlCQUFpQjt3QkFDekIsU0FBUzt3QkFDVCxNQUFNO3dCQUNOLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtxQkFDcEM7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUE7SUFFM0UsT0FBTyxJQUFJLDRCQUFZLENBQTJCO1FBQ2hELE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJO0tBQ3hCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
@@ -20,6 +20,10 @@ exports.syncMedusaStatusStep = (0, workflows_sdk_1.createStep)("sync-medusa-stat
20
20
  status_synced: false,
21
21
  });
22
22
  }
23
+ // Check if exchange was created via workflow (preferred) or service call
24
+ const swapMetadata = swapData.metadata || {};
25
+ const medusaIntegration = swapMetadata.medusa_integration || {};
26
+ const creationMethod = medusaIntegration.exchange_creation_method;
23
27
  const remoteQuery = container.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
24
28
  let medusaStatus;
25
29
  let updatedStatus;
@@ -55,13 +59,24 @@ exports.syncMedusaStatusStep = (0, workflows_sdk_1.createStep)("sync-medusa-stat
55
59
  cancelled: "cancelled",
56
60
  };
57
61
  updatedStatus = statusMap[medusaStatus || ""];
62
+ if (!updatedStatus && medusaStatus) {
63
+ // Unknown exchange status - log for debugging
64
+ console.debug(`[Sync Medusa Status] Unknown exchange status "${medusaStatus}" for exchange ${swapData.exchange_id}`);
65
+ }
66
+ }
67
+ else {
68
+ // Exchange not found - might have been deleted or ID is invalid
69
+ console.warn(`[Sync Medusa Status] Exchange ${swapData.exchange_id} not found in Medusa`);
58
70
  }
59
71
  }
60
72
  catch (error) {
73
+ const errorMessage = error instanceof Error ? error.message : String(error);
74
+ console.error(`[Sync Medusa Status] Failed to query exchange ${swapData.exchange_id}:`, errorMessage);
61
75
  // If exchange query fails, continue with return status
62
76
  }
63
77
  }
64
78
  // Query Medusa return status if return_id exists and exchange status not found
79
+ // This provides fallback status tracking when exchange status is not available
65
80
  if (!medusaStatus && swapData.return_id) {
66
81
  try {
67
82
  const returnQuery = (0, utils_2.remoteQueryObjectFromString)({
@@ -88,17 +103,26 @@ exports.syncMedusaStatusStep = (0, workflows_sdk_1.createStep)("sync-medusa-stat
88
103
  };
89
104
  if (!updatedStatus) {
90
105
  updatedStatus = statusMap[medusaStatus || ""];
106
+ if (!updatedStatus && medusaStatus) {
107
+ // Unknown return status - log for debugging
108
+ console.debug(`[Sync Medusa Status] Unknown return status "${medusaStatus}" for return ${swapData.return_id}`);
109
+ }
91
110
  }
92
111
  }
112
+ else {
113
+ // Return not found - might have been deleted or ID is invalid
114
+ console.warn(`[Sync Medusa Status] Return ${swapData.return_id} not found in Medusa`);
115
+ }
93
116
  }
94
117
  catch (error) {
118
+ const errorMessage = error instanceof Error ? error.message : String(error);
119
+ console.error(`[Sync Medusa Status] Failed to query return ${swapData.return_id}:`, errorMessage);
95
120
  // If return query fails, cannot sync
96
121
  }
97
122
  }
98
123
  // Update swap status if it differs from Medusa status
99
124
  let statusSynced = false;
100
125
  if (updatedStatus && updatedStatus !== swapData.status) {
101
- const swapMetadata = swapData.metadata || {};
102
126
  const statusHistory = swapMetadata.status_history || [];
103
127
  await swapService.updateSwaps({
104
128
  selector: { id: swap_id },
@@ -106,6 +130,12 @@ exports.syncMedusaStatusStep = (0, workflows_sdk_1.createStep)("sync-medusa-stat
106
130
  status: updatedStatus,
107
131
  metadata: {
108
132
  ...swapMetadata,
133
+ medusa_integration: {
134
+ ...medusaIntegration,
135
+ last_synced_at: new Date().toISOString(),
136
+ last_synced_status: medusaStatus,
137
+ creation_method: creationMethod || "unknown",
138
+ },
109
139
  status_history: [
110
140
  ...statusHistory,
111
141
  {
@@ -113,14 +143,30 @@ exports.syncMedusaStatusStep = (0, workflows_sdk_1.createStep)("sync-medusa-stat
113
143
  timestamp: new Date().toISOString(),
114
144
  synced_from_medusa: true,
115
145
  medusa_status: medusaStatus,
146
+ sync_method: "manual", // This is manual sync, subscribers handle automatic sync
116
147
  },
117
148
  ],
118
- last_synced_at: new Date().toISOString(),
119
149
  },
120
150
  },
121
151
  });
122
152
  statusSynced = true;
123
153
  }
154
+ else if (updatedStatus && updatedStatus === swapData.status) {
155
+ // Status already matches, but update last_synced_at timestamp
156
+ await swapService.updateSwaps({
157
+ selector: { id: swap_id },
158
+ data: {
159
+ metadata: {
160
+ ...swapMetadata,
161
+ medusa_integration: {
162
+ ...medusaIntegration,
163
+ last_synced_at: new Date().toISOString(),
164
+ last_synced_status: medusaStatus,
165
+ },
166
+ },
167
+ },
168
+ });
169
+ }
124
170
  // Retrieve the latest swap data after update
125
171
  const finalSwap = await swapService.retrieveSwap(swap_id);
126
172
  return new workflows_sdk_1.StepResponse({
@@ -129,4 +175,4 @@ exports.syncMedusaStatusStep = (0, workflows_sdk_1.createStep)("sync-medusa-stat
129
175
  medusa_status: medusaStatus,
130
176
  });
131
177
  });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1tZWR1c2Etc3RhdHVzLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvc3luYy1tZWR1c2Etc3RhdHVzLXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBQ3ZELHFFQUE0RTtBQUM1RSxxREFBa0c7QUFFbEcsZ0RBQW1EO0FBYXRDLFFBQUEsb0JBQW9CLEdBQUcsSUFBQSwwQkFBVSxFQUM1QyxvQkFBb0IsRUFDcEIsS0FBSyxFQUNILEtBQWdDLEVBQ2hDLEVBQUUsU0FBUyxFQUFFLEVBQ3NDLEVBQUU7SUFDckQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQkFBcUIsQ0FDdEIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFjLGtCQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFLaEIsQ0FBQTtJQUVELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pELDZDQUE2QztRQUM3QyxPQUFPLElBQUksNEJBQVksQ0FBNkI7WUFDbEQsSUFBSTtZQUNKLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUNuQyxpQ0FBeUIsQ0FBQyxZQUFZLENBQ3ZDLENBQUE7SUFFRCxJQUFJLFlBQWdDLENBQUE7SUFDcEMsSUFBSSxh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
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1tZWR1c2Etc3RhdHVzLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3N3YXAvc3luYy1tZWR1c2Etc3RhdHVzLXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBQ3ZELHFFQUE0RTtBQUM1RSxxREFBa0c7QUFFbEcsZ0RBQW1EO0FBYXRDLFFBQUEsb0JBQW9CLEdBQUcsSUFBQSwwQkFBVSxFQUM1QyxvQkFBb0IsRUFDcEIsS0FBSyxFQUNILEtBQWdDLEVBQ2hDLEVBQUUsU0FBUyxFQUFFLEVBQ3NDLEVBQUU7SUFDckQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQkFBcUIsQ0FDdEIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFjLGtCQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFLaEIsQ0FBQTtJQUVELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pELDZDQUE2QztRQUM3QyxPQUFPLElBQUksNEJBQVksQ0FBNkI7WUFDbEQsSUFBSTtZQUNKLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCx5RUFBeUU7SUFDekUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUE7SUFDNUMsTUFBTSxpQkFBaUIsR0FBSSxZQUFZLENBQUMsa0JBQThD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