order-management 0.0.75 → 0.0.77

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.
@@ -2732,9 +2732,9 @@ const routeModule = {
2732
2732
  const menuItemModule = {
2733
2733
  menuItems: [
2734
2734
  {
2735
- label: config$6.label,
2736
- icon: config$6.icon,
2737
- path: "/refunds",
2735
+ label: config$7.label,
2736
+ icon: config$7.icon,
2737
+ path: "/payments",
2738
2738
  nested: void 0
2739
2739
  },
2740
2740
  {
@@ -2744,21 +2744,21 @@ const menuItemModule = {
2744
2744
  nested: void 0
2745
2745
  },
2746
2746
  {
2747
- label: config$4.label,
2748
- icon: config$4.icon,
2749
- path: "/swaps",
2747
+ label: config$6.label,
2748
+ icon: config$6.icon,
2749
+ path: "/refunds",
2750
2750
  nested: void 0
2751
2751
  },
2752
2752
  {
2753
- label: config$7.label,
2754
- icon: config$7.icon,
2755
- path: "/payments",
2753
+ label: config$4.label,
2754
+ icon: config$4.icon,
2755
+ path: "/swaps",
2756
2756
  nested: void 0
2757
2757
  },
2758
2758
  {
2759
- label: config$2.label,
2760
- icon: config$2.icon,
2761
- path: "/refunds/:id",
2759
+ label: config$3.label,
2760
+ icon: config$3.icon,
2761
+ path: "/payments/:id",
2762
2762
  nested: void 0
2763
2763
  },
2764
2764
  {
@@ -2768,15 +2768,15 @@ const menuItemModule = {
2768
2768
  nested: void 0
2769
2769
  },
2770
2770
  {
2771
- label: config.label,
2772
- icon: config.icon,
2773
- path: "/swaps/:id",
2771
+ label: config$2.label,
2772
+ icon: config$2.icon,
2773
+ path: "/refunds/:id",
2774
2774
  nested: void 0
2775
2775
  },
2776
2776
  {
2777
- label: config$3.label,
2778
- icon: config$3.icon,
2779
- path: "/payments/:id",
2777
+ label: config.label,
2778
+ icon: config.icon,
2779
+ path: "/swaps/:id",
2780
2780
  nested: void 0
2781
2781
  }
2782
2782
  ]
@@ -2731,9 +2731,9 @@ const routeModule = {
2731
2731
  const menuItemModule = {
2732
2732
  menuItems: [
2733
2733
  {
2734
- label: config$6.label,
2735
- icon: config$6.icon,
2736
- path: "/refunds",
2734
+ label: config$7.label,
2735
+ icon: config$7.icon,
2736
+ path: "/payments",
2737
2737
  nested: void 0
2738
2738
  },
2739
2739
  {
@@ -2743,21 +2743,21 @@ const menuItemModule = {
2743
2743
  nested: void 0
2744
2744
  },
2745
2745
  {
2746
- label: config$4.label,
2747
- icon: config$4.icon,
2748
- path: "/swaps",
2746
+ label: config$6.label,
2747
+ icon: config$6.icon,
2748
+ path: "/refunds",
2749
2749
  nested: void 0
2750
2750
  },
2751
2751
  {
2752
- label: config$7.label,
2753
- icon: config$7.icon,
2754
- path: "/payments",
2752
+ label: config$4.label,
2753
+ icon: config$4.icon,
2754
+ path: "/swaps",
2755
2755
  nested: void 0
2756
2756
  },
2757
2757
  {
2758
- label: config$2.label,
2759
- icon: config$2.icon,
2760
- path: "/refunds/:id",
2758
+ label: config$3.label,
2759
+ icon: config$3.icon,
2760
+ path: "/payments/:id",
2761
2761
  nested: void 0
2762
2762
  },
2763
2763
  {
@@ -2767,15 +2767,15 @@ const menuItemModule = {
2767
2767
  nested: void 0
2768
2768
  },
2769
2769
  {
2770
- label: config.label,
2771
- icon: config.icon,
2772
- path: "/swaps/:id",
2770
+ label: config$2.label,
2771
+ icon: config$2.icon,
2772
+ path: "/refunds/:id",
2773
2773
  nested: void 0
2774
2774
  },
2775
2775
  {
2776
- label: config$3.label,
2777
- icon: config$3.icon,
2778
- path: "/payments/:id",
2776
+ label: config.label,
2777
+ icon: config.icon,
2778
+ path: "/swaps/:id",
2779
2779
  nested: void 0
2780
2780
  }
2781
2781
  ]
@@ -3,8 +3,63 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const reorder_workflow_1 = require("../../../../../workflows/reorder-workflow");
6
+ const parseBooleanQueryParam = (value) => {
7
+ if (typeof value === "string") {
8
+ return value.toLowerCase() === "true";
9
+ }
10
+ if (Array.isArray(value)) {
11
+ return value.some((item) => typeof item === "string" && item.toLowerCase() === "true");
12
+ }
13
+ return false;
14
+ };
15
+ const INVENTORY_ERROR_PREFIX = "Inventory check failed for reorder items:";
16
+ const parseInventoryIssuesFromMessage = (message) => {
17
+ if (!message || !message.startsWith(INVENTORY_ERROR_PREFIX)) {
18
+ return null;
19
+ }
20
+ const rawIssues = message.slice(INVENTORY_ERROR_PREFIX.length).trim();
21
+ if (!rawIssues) {
22
+ return null;
23
+ }
24
+ try {
25
+ const parsed = JSON.parse(rawIssues);
26
+ if (!Array.isArray(parsed)) {
27
+ return null;
28
+ }
29
+ return parsed
30
+ .filter((issue) => typeof issue === "object" &&
31
+ issue !== null &&
32
+ typeof issue.variant_id === "string" &&
33
+ (typeof issue.variant_name ===
34
+ "string" ||
35
+ issue.variant_name === null ||
36
+ issue.variant_name === undefined) &&
37
+ (typeof issue.product_name ===
38
+ "string" ||
39
+ issue.product_name === null ||
40
+ issue.product_name === undefined) &&
41
+ typeof issue.requested_quantity ===
42
+ "number" &&
43
+ (typeof issue.available_quantity ===
44
+ "number" ||
45
+ issue.available_quantity === null) &&
46
+ typeof issue.reason === "string")
47
+ .map((issue) => ({
48
+ variant_id: issue.variant_id,
49
+ variant_name: issue.variant_name ?? null,
50
+ product_name: issue.product_name ?? null,
51
+ requested_quantity: issue.requested_quantity,
52
+ available_quantity: issue.available_quantity,
53
+ reason: issue.reason,
54
+ }));
55
+ }
56
+ catch {
57
+ return null;
58
+ }
59
+ };
6
60
  const POST = async (req, res) => {
7
61
  const { order_id } = req.params;
62
+ const forceReorder = parseBooleanQueryParam(req.query?.force_reorder);
8
63
  if (!order_id) {
9
64
  res.status(400).json({
10
65
  message: "order_id is required in path parameter",
@@ -17,12 +72,6 @@ const POST = async (req, res) => {
17
72
  const actorType = authContext?.actor_type;
18
73
  const isCustomer = actorType === "customer";
19
74
  if (!actorId || !isCustomer) {
20
- console.warn("[Order Management] Authentication failed:", {
21
- order_id,
22
- actor_id: actorId,
23
- actor_type: actorType,
24
- reason: !actorId ? "Missing actor_id" : "Invalid actor_type",
25
- });
26
75
  res.status(401).json({
27
76
  message: "Unauthorized: Customer authentication is required",
28
77
  });
@@ -33,17 +82,27 @@ const POST = async (req, res) => {
33
82
  input: {
34
83
  order_id,
35
84
  customer_id: actorId,
85
+ force_reorder: forceReorder,
36
86
  },
37
87
  });
38
88
  res.json(result);
39
89
  }
40
90
  catch (error) {
41
- // Log error for debugging
42
- console.error("Reorder workflow error:", error);
43
- if (error instanceof utils_1.MedusaError) {
44
- res.status(error.type === utils_1.MedusaError.Types.NOT_FOUND ? 404 : 400).json({
45
- message: error.message,
46
- type: error.type,
91
+ const medusaError = error;
92
+ const isMedusaLikeError = error instanceof utils_1.MedusaError || medusaError?.__isMedusaError === true;
93
+ if (isMedusaLikeError) {
94
+ const errorType = medusaError?.type;
95
+ const statusCode = errorType === utils_1.MedusaError.Types.NOT_FOUND ? 404 : 400;
96
+ const inventoryIssues = parseInventoryIssuesFromMessage(medusaError?.message);
97
+ if (inventoryIssues) {
98
+ res.status(409).json({
99
+ inventory_issues: inventoryIssues,
100
+ });
101
+ return;
102
+ }
103
+ res.status(statusCode).json({
104
+ message: medusaError?.message || "An error occurred",
105
+ type: errorType,
47
106
  });
48
107
  return;
49
108
  }
@@ -57,4 +116,4 @@ const POST = async (req, res) => {
57
116
  }
58
117
  };
59
118
  exports.POST = POST;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9yZW9yZGVyL1tvcmRlcl9pZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXVEO0FBQ3ZELGdGQUEyRTtBQUVwRSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUUvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsd0NBQXdDO1NBQ2xELENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFBO0lBRWYsTUFBTSxPQUFPLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQTtJQUNyQyxNQUFNLFNBQVMsR0FBRyxXQUFXLEVBQUUsVUFBVSxDQUFBO0lBQ3pDLE1BQU0sVUFBVSxHQUFHLFNBQVMsS0FBSyxVQUFVLENBQUE7SUFFM0MsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLEVBQUU7WUFDeEQsUUFBUTtZQUNSLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtTQUM3RCxDQUFDLENBQUE7UUFDRixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsbURBQW1EO1NBQzdELENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxrQ0FBZSxFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDdEQsS0FBSyxFQUFFO2dCQUNMLFFBQVE7Z0JBQ1IsV0FBVyxFQUFFLE9BQWlCO2FBQy9CO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLDBCQUEwQjtRQUMxQixPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFBO1FBRS9DLElBQUksS0FBSyxZQUFZLG1CQUFXLEVBQUUsQ0FBQztZQUNqQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDdEUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7YUFDakIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUE7UUFDakYsTUFBTSxVQUFVLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1FBRW5FLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxhQUFhLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUM7U0FDckUsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQTtBQWpFWSxRQUFBLElBQUksUUFpRWhCIn0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9yZW9yZGVyL1tvcmRlcl9pZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXVEO0FBQ3ZELGdGQUEyRTtBQVEzRSxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7SUFDekQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUE7SUFDdkMsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQTtJQUN4RixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDLENBQUE7QUFFRCxNQUFNLHNCQUFzQixHQUFHLDJDQUEyQyxDQUFBO0FBRTFFLE1BQU0sK0JBQStCLEdBQUcsQ0FDdEMsT0FBMkIsRUFRbkIsRUFBRTtJQUNWLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3JFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxH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
@@ -43,6 +43,7 @@ function normalizeOrderManagementOptions(input) {
43
43
  enabled: input.notifications?.enabled ?? false,
44
44
  statusConfig: input.notifications?.statusConfig ?? {},
45
45
  },
46
+ capture_payment_on_delivered: input.capture_payment_on_delivered ?? true,
46
47
  returnValidInDays,
47
48
  exchangeValidInDays,
48
49
  };
@@ -63,4 +64,4 @@ function resolveOrderManagementOptions(configModule) {
63
64
  }
64
65
  throw new Error("order-management: Plugin not found in configuration. Please add the plugin to medusa-config.ts");
65
66
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQXFDSCwwRUFtREM7QUFFRCxzRUF3QkM7QUFoSEQscURBQW9EO0FBc0JwRCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQTtBQWF0QyxTQUFnQiwrQkFBK0IsQ0FDN0MsS0FBMkM7SUFFM0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQ3JCLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQztRQUN4RSxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRVAsTUFBTSxtQkFBbUIsR0FDdkIsT0FBTyxLQUFLLENBQUMsbUJBQW1CLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFUCxPQUFPO1FBQ0wsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1FBQ2xDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixLQUFLLEVBQUU7WUFDTCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLG9CQUFvQixJQUFJLElBQUk7WUFDL0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUk7U0FDOUM7UUFDRCxJQUFJLEVBQUU7WUFDSixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksS0FBSztZQUNyQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1lBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUk7WUFDdEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUk7WUFDbEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSTtZQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1NBQ3ZCO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLEtBQUs7WUFDOUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsWUFBWSxJQUFJLEVBQUU7U0FDdEQ7UUFDRCxpQkFBaUI7UUFDakIsbUJBQW1CO0tBQ3BCLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsNkJBQTZCLENBQzNDLFlBQWdDO0lBRWhDLE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFBO0lBRTNDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFBLGdCQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0Isd0VBQXdFO2dCQUN4RSxNQUFNLElBQUksS0FBSyxDQUNiLDZGQUE2RixDQUM5RixDQUFBO1lBQ0gsQ0FBQztZQUNELFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxNQUFNLEVBQUUsT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sK0JBQStCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtBQUNILENBQUMifQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQXFDSCwwRUFvREM7QUFFRCxzRUF3QkM7QUFqSEQscURBQW9EO0FBc0JwRCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQTtBQWF0QyxTQUFnQiwrQkFBK0IsQ0FDN0MsS0FBMkM7SUFFM0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQ3JCLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQztRQUN4RSxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRVAsTUFBTSxtQkFBbUIsR0FDdkIsT0FBTyxLQUFLLENBQUMsbUJBQW1CLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFUCxPQUFPO1FBQ0wsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1FBQ2xDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixLQUFLLEVBQUU7WUFDTCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLG9CQUFvQixJQUFJLElBQUk7WUFDL0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUk7U0FDOUM7UUFDRCxJQUFJLEVBQUU7WUFDSixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksS0FBSztZQUNyQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1lBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUk7WUFDdEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUk7WUFDbEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSTtZQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1NBQ3ZCO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLEtBQUs7WUFDOUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsWUFBWSxJQUFJLEVBQUU7U0FDdEQ7UUFDRCw0QkFBNEIsRUFBRSxLQUFLLENBQUMsNEJBQTRCLElBQUksSUFBSTtRQUN4RSxpQkFBaUI7UUFDakIsbUJBQW1CO0tBQ3BCLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsNkJBQTZCLENBQzNDLFlBQWdDO0lBRWhDLE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFBO0lBRTNDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFBLGdCQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0Isd0VBQXdFO2dCQUN4RSxNQUFNLElBQUksS0FBSyxDQUNiLDZGQUE2RixDQUM5RixDQUFBO1lBQ0gsQ0FBQztZQUNELFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxNQUFNLEVBQUUsT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sK0JBQStCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtBQUNILENBQUMifQ==
@@ -5,7 +5,237 @@ exports.getOrderIdFromFulfillment = getOrderIdFromFulfillment;
5
5
  exports.default = orderFulfilledHandler;
6
6
  const utils_1 = require("@medusajs/framework/utils");
7
7
  const utils_2 = require("@medusajs/framework/utils");
8
+ const core_flows_1 = require("@medusajs/core-flows");
8
9
  const template_1 = require("../utils/template");
10
+ const config_1 = require("../config");
11
+ function toNumber(value) {
12
+ if (typeof value === "number" && Number.isFinite(value))
13
+ return value;
14
+ if (typeof value === "string" && value.trim().length > 0) {
15
+ const parsed = Number(value);
16
+ return Number.isFinite(parsed) ? parsed : 0;
17
+ }
18
+ if (value && typeof value === "object" && "value" in value) {
19
+ const nested = value.value;
20
+ return toNumber(nested);
21
+ }
22
+ return 0;
23
+ }
24
+ function resolveCapturePayload(payment) {
25
+ const paymentId = typeof payment.id === "string" ? payment.id : "";
26
+ if (!paymentId)
27
+ return null;
28
+ const totalAmount = toNumber(payment.amount);
29
+ const capturedAmount = toNumber(payment.captured_amount);
30
+ const remaining = Math.max(0, totalAmount - capturedAmount);
31
+ if (remaining <= 0)
32
+ return null;
33
+ const status = typeof payment.status === "string" ? payment.status.toLowerCase() : "";
34
+ const capturableStatuses = new Set([
35
+ "authorized",
36
+ "partially_captured",
37
+ "requires_capture",
38
+ "pending",
39
+ ]);
40
+ if (status && !capturableStatuses.has(status)) {
41
+ return null;
42
+ }
43
+ return {
44
+ payment_id: paymentId,
45
+ amount: remaining,
46
+ };
47
+ }
48
+ async function executeCapture(container, paymentModuleService, payload, logger) {
49
+ logger?.info?.(`[Order Fulfilled] Triggering capture workflow for payment ${payload.payment_id} with amount ${payload.amount}.`);
50
+ await (0, core_flows_1.capturePaymentWorkflow)(container).run({
51
+ input: {
52
+ payment_id: payload.payment_id,
53
+ amount: payload.amount,
54
+ captured_by: "system-auto-delivery",
55
+ },
56
+ });
57
+ logger?.info?.(`[Order Fulfilled] Auto-captured payment ${payload.payment_id} for amount ${payload.amount}.`);
58
+ try {
59
+ const payments = await paymentModuleService.listPayments({ id: [payload.payment_id] });
60
+ const paymentList = Array.isArray(payments) ? payments : payments ? [payments] : [];
61
+ const payment = paymentList[0];
62
+ if (!payment) {
63
+ logger?.info?.(`[Order Fulfilled] Could not reload payment ${payload.payment_id} after capture for reconciliation.`);
64
+ return;
65
+ }
66
+ const totalAmount = toNumber(payment.amount);
67
+ const capturedAt = payment.captured_at;
68
+ const captures = await paymentModuleService.listCaptures({ payment_id: [payload.payment_id] });
69
+ const captureRows = Array.isArray(captures) ? captures : captures ? [captures] : [];
70
+ const capturedTotal = captureRows.reduce((sum, capture) => {
71
+ return sum + toNumber(capture.amount);
72
+ }, 0);
73
+ if (!capturedAt && totalAmount > 0 && capturedTotal >= totalAmount) {
74
+ logger?.info?.(`[Order Fulfilled] Payment ${payload.payment_id} has captured_total=${capturedTotal} and null captured_at; running reconciliation capture workflow.`);
75
+ await (0, core_flows_1.capturePaymentWorkflow)(container).run({
76
+ input: {
77
+ payment_id: payload.payment_id,
78
+ captured_by: "system-auto-delivery-finalize",
79
+ },
80
+ });
81
+ const finalized = await paymentModuleService.listPayments({ id: [payload.payment_id] });
82
+ const finalizedList = Array.isArray(finalized) ? finalized : finalized ? [finalized] : [];
83
+ const finalizedPayment = finalizedList[0];
84
+ logger?.info?.(`[Order Fulfilled] Reconciliation complete for payment ${payload.payment_id}; captured_at=${String(finalizedPayment?.captured_at ?? null)}.`);
85
+ }
86
+ }
87
+ catch (reconcileError) {
88
+ const reconcileErrorMessage = reconcileError instanceof Error
89
+ ? `${reconcileError.message}\n${reconcileError.stack ?? ""}`
90
+ : String(reconcileError);
91
+ logger?.error?.(`[Order Fulfilled] Reconciliation failed for payment ${payload.payment_id}: ${reconcileErrorMessage}`);
92
+ }
93
+ }
94
+ async function autoCaptureOrderPayments(container, orderId, remoteQuery, paymentModuleService, logger) {
95
+ logger?.info?.(`[Order Fulfilled] Resolving payment collections for order ${orderId}.`);
96
+ const orderQuery = (0, utils_1.remoteQueryObjectFromString)({
97
+ entryPoint: "order",
98
+ fields: ["id", "payment_collections.id"],
99
+ filters: { id: [orderId] },
100
+ });
101
+ const orders = await remoteQuery(orderQuery);
102
+ const orderList = Array.isArray(orders) ? orders : orders ? [orders] : [];
103
+ const order = orderList.find((row) => row.id === orderId);
104
+ let collectionIds = (order?.payment_collections ?? []).map((collection) => collection.id);
105
+ logger?.info?.(`[Order Fulfilled] Order query returned ${collectionIds.length} payment collection(s) for order ${orderId}.`);
106
+ if (collectionIds.length === 0) {
107
+ const attemptPaymentCollectionQueries = [
108
+ (0, utils_1.remoteQueryObjectFromString)({
109
+ entryPoint: "payment_collection",
110
+ fields: ["id", "order.id"],
111
+ filters: { order: { id: [orderId] } },
112
+ }),
113
+ (0, utils_1.remoteQueryObjectFromString)({
114
+ entryPoint: "payment_collection",
115
+ fields: ["id", "order.id"],
116
+ filters: { order_id: [orderId] },
117
+ }),
118
+ ];
119
+ for (const query of attemptPaymentCollectionQueries) {
120
+ try {
121
+ const collections = await remoteQuery(query);
122
+ const list = Array.isArray(collections) ? collections : collections ? [collections] : [];
123
+ const ids = list
124
+ .map((row) => row.id)
125
+ .filter((id) => typeof id === "string" && id.length > 0);
126
+ if (ids.length > 0) {
127
+ collectionIds = ids;
128
+ logger?.info?.(`[Order Fulfilled] Fallback query resolved ${collectionIds.length} payment collection(s) for order ${orderId}.`);
129
+ break;
130
+ }
131
+ }
132
+ catch {
133
+ logger?.info?.(`[Order Fulfilled] Fallback payment collection query failed for order ${orderId}; trying next strategy.`);
134
+ }
135
+ }
136
+ }
137
+ if (collectionIds.length === 0) {
138
+ logger?.info?.(`[Order Fulfilled] No payment collections found for order ${orderId}; skipping auto-capture.`);
139
+ return;
140
+ }
141
+ const sessions = await paymentModuleService.listPaymentSessions({
142
+ payment_collection_id: collectionIds,
143
+ });
144
+ const sessionListRaw = Array.isArray(sessions) ? sessions : sessions ? [sessions] : [];
145
+ const sessionList = sessionListRaw.filter((session) => {
146
+ const row = session;
147
+ return (typeof row.payment_collection_id === "string" &&
148
+ collectionIds.includes(row.payment_collection_id));
149
+ });
150
+ const sessionIds = sessionList.map((session) => session.id).filter((id) => typeof id === "string");
151
+ logger?.info?.(`[Order Fulfilled] Found ${sessionIds.length} payment session(s) for order ${orderId}.`);
152
+ if (sessionIds.length === 0) {
153
+ logger?.info?.(`[Order Fulfilled] No payment sessions found for order ${orderId}; skipping auto-capture.`);
154
+ return;
155
+ }
156
+ const paymentCollectionQuery = (0, utils_1.remoteQueryObjectFromString)({
157
+ entryPoint: "payment_collection",
158
+ fields: [
159
+ "id",
160
+ "payments.id",
161
+ "payments.amount",
162
+ "payments.captured_amount",
163
+ "payments.status",
164
+ "payments.captured_at",
165
+ "payments.payment_session_id",
166
+ "payments.payment_collection_id",
167
+ ],
168
+ filters: { id: collectionIds },
169
+ });
170
+ const paymentCollectionRows = await remoteQuery(paymentCollectionQuery).catch(() => []);
171
+ const paymentCollectionListRaw = Array.isArray(paymentCollectionRows)
172
+ ? paymentCollectionRows
173
+ : paymentCollectionRows
174
+ ? [paymentCollectionRows]
175
+ : [];
176
+ const paymentCollectionList = paymentCollectionListRaw.filter((row) => {
177
+ const collectionId = row.id;
178
+ return typeof collectionId === "string" && collectionIds.includes(collectionId);
179
+ });
180
+ let paymentList = paymentCollectionList.flatMap((row) => {
181
+ const collection = row;
182
+ const collectionId = typeof collection.id === "string" ? collection.id : undefined;
183
+ const payments = Array.isArray(collection.payments) ? collection.payments : [];
184
+ return payments.map((payment) => {
185
+ const raw = payment;
186
+ return {
187
+ ...raw,
188
+ payment_collection_id: raw.payment_collection_id ?? collectionId,
189
+ };
190
+ });
191
+ });
192
+ paymentList = paymentList.filter((payment) => {
193
+ const row = payment;
194
+ const byCollection = typeof row.payment_collection_id === "string" &&
195
+ collectionIds.includes(row.payment_collection_id);
196
+ const bySession = typeof row.payment_session_id === "string" && sessionIds.includes(row.payment_session_id);
197
+ return byCollection || bySession;
198
+ });
199
+ logger?.info?.(`[Order Fulfilled] remoteQuery(payment_collection.payments) returned ${paymentList.length} payment(s) for order ${orderId}.`);
200
+ logger?.info?.(`[Order Fulfilled] Candidate payment IDs for order ${orderId}: ${paymentList
201
+ .map((p) => p.id)
202
+ .filter((id) => typeof id === "string")
203
+ .join(", ") || "none"}.`);
204
+ if (paymentList.length === 0) {
205
+ // Fallback for environments where payment_collection.payments is not expanded
206
+ const fallbackPayments = await paymentModuleService
207
+ .listPayments({
208
+ payment_collection_id: collectionIds,
209
+ })
210
+ .catch(() => []);
211
+ paymentList = Array.isArray(fallbackPayments)
212
+ ? fallbackPayments
213
+ : fallbackPayments
214
+ ? [fallbackPayments]
215
+ : [];
216
+ paymentList = paymentList.filter((payment) => {
217
+ const row = payment;
218
+ return (typeof row.payment_collection_id === "string" &&
219
+ collectionIds.includes(row.payment_collection_id));
220
+ });
221
+ logger?.info?.(`[Order Fulfilled] Fallback listPayments(payment_collection_id) returned ${paymentList.length} payment(s) for order ${orderId}.`);
222
+ logger?.info?.(`[Order Fulfilled] Fallback candidate payment IDs for order ${orderId}: ${paymentList
223
+ .map((p) => p.id)
224
+ .filter((id) => typeof id === "string")
225
+ .join(", ") || "none"}.`);
226
+ }
227
+ const capturable = paymentList
228
+ .map((payment) => resolveCapturePayload(payment))
229
+ .filter((value) => value !== null);
230
+ logger?.info?.(`[Order Fulfilled] Computed ${capturable.length} capturable payment(s) for order ${orderId}.`);
231
+ if (capturable.length === 0) {
232
+ logger?.info?.(`[Order Fulfilled] No capturable payments for order ${orderId}; skipping auto-capture.`);
233
+ return;
234
+ }
235
+ for (const capture of capturable) {
236
+ await executeCapture(container, paymentModuleService, capture, logger);
237
+ }
238
+ }
9
239
  /**
10
240
  * Resolve order_id from a fulfillment id using remote query.
11
241
  * Tries direct fulfillment.order_id first; falls back to querying orders with fulfillments
@@ -71,15 +301,44 @@ async function orderFulfilledHandler({ event, container, }) {
71
301
  return;
72
302
  }
73
303
  try {
304
+ logger?.info?.(`[Order Fulfilled] Received event ${event.name} with payload: ${JSON.stringify(data)}`);
74
305
  const remoteQuery = container.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
75
306
  const orderModuleService = container.resolve(utils_2.Modules.ORDER);
307
+ const paymentModuleService = container.resolve(utils_2.Modules.PAYMENT);
308
+ if (!orderId && typeof data.id === "string" && data.id.startsWith("order_")) {
309
+ orderId = data.id;
310
+ logger?.info?.(`[Order Fulfilled] Resolved order ID directly from event payload id: ${orderId}.`);
311
+ }
76
312
  if (!orderId && fulfillmentId) {
77
313
  orderId = await getOrderIdFromFulfillment(fulfillmentId, remoteQuery) ?? undefined;
314
+ logger?.info?.(`[Order Fulfilled] Resolved order ID from fulfillment ${fulfillmentId}: ${orderId ?? "not-found"}.`);
78
315
  }
79
316
  if (!orderId) {
80
317
  logger?.info?.("[Order Fulfilled] No order_id found for delivery event; skipping order status update.");
81
318
  return;
82
319
  }
320
+ let captureOnDelivered = true;
321
+ try {
322
+ const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
323
+ const config = (0, config_1.resolveOrderManagementOptions)(configModule);
324
+ captureOnDelivered = config.capture_payment_on_delivered;
325
+ logger?.info?.(`[Order Fulfilled] capture_payment_on_delivered resolved to ${String(captureOnDelivered)} for order ${orderId}.`);
326
+ }
327
+ catch {
328
+ logger?.info?.(`[Order Fulfilled] Could not resolve plugin config for order ${orderId}; defaulting capture_payment_on_delivered=true.`);
329
+ }
330
+ if (captureOnDelivered) {
331
+ try {
332
+ await autoCaptureOrderPayments(container, orderId, remoteQuery, paymentModuleService, logger);
333
+ }
334
+ catch (captureError) {
335
+ const captureErrorMessage = captureError instanceof Error ? `${captureError.message}\n${captureError.stack ?? ""}` : String(captureError);
336
+ logger?.error?.(`[Order Fulfilled] Failed to auto-capture payments for order ${orderId}: ${captureErrorMessage}`);
337
+ }
338
+ }
339
+ else {
340
+ logger?.info?.(`[Order Fulfilled] Auto-capture disabled for order ${orderId}; skipping payment capture.`);
341
+ }
83
342
  let displaySuffix = "";
84
343
  try {
85
344
  const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
@@ -114,4 +373,4 @@ exports.config = {
114
373
  "fulfillment.shipment_delivered",
115
374
  ],
116
375
  };
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZnVsZmlsbGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL29yZGVyLWZ1bGZpbGxlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQkEsOERBd0NDO0FBVUQsd0NBMERDO0FBL0hELHFEQUFrRztBQUVsRyxxREFBbUQ7QUFDbkQsZ0RBQTJEO0FBVTNEOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLHlCQUF5QixDQUM3QyxhQUFxQixFQUNyQixXQUFnQztJQUVoQyxJQUFJLENBQUM7UUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUEsbUNBQTJCLEVBQUM7WUFDbkQsVUFBVSxFQUFFLGFBQWE7WUFDekIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztZQUMxQixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRTtTQUNqQyxDQUFDLENBQUE7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ3hELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDNUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssYUFBYSxDQUFzQyxDQUFBO1FBQ25ILElBQUksV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQTtRQUM3QixDQUFDO1FBQ0QsMkZBQTJGO1FBQzNGLE1BQU0sVUFBVSxHQUFHLElBQUEsbUNBQTJCLEVBQUM7WUFDN0MsVUFBVSxFQUFFLE9B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
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZnVsZmlsbGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL29yZGVyLWZ1bGZpbGxlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4VUEsOERBd0NDO0FBVUQsd0NBZ0dDO0FBL2RELHFEQUFrRztBQUVsRyxxREFBbUQ7QUFDbkQscURBQTZEO0FBQzdELGdEQUEyRDtBQUMzRCxzQ0FBaUY7QUFrQmpGLFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUNyRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM1QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFJLEtBQTZCLENBQUMsS0FBSyxDQUFBO1FBQ25ELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUM1QixPQUFnQztJQUVoQyxNQUFNLFNBQVMsR0FBRyxPQUFPLE9BQU8sQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7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
@@ -4,7 +4,7 @@ exports.reorderWorkflow = void 0;
4
4
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
5
  const steps_1 = require("./steps");
6
6
  exports.reorderWorkflow = (0, workflows_sdk_1.createWorkflow)("reorder", (input) => {
7
- const { order_id, customer_id } = input;
7
+ const { order_id, customer_id, force_reorder } = input;
8
8
  // Step 1: Retrieve and validate order
9
9
  const { order } = (0, steps_1.retrieveOrderStep)({
10
10
  order_id,
@@ -13,6 +13,7 @@ exports.reorderWorkflow = (0, workflows_sdk_1.createWorkflow)("reorder", (input)
13
13
  // Step 2: Transform order to cart input
14
14
  const { cartInput } = (0, steps_1.transformOrderToCartStep)({
15
15
  order,
16
+ force_reorder,
16
17
  });
17
18
  // Step 3: Create cart from order
18
19
  const { cart } = (0, steps_1.createCartFromOrderStep)({
@@ -24,4 +25,4 @@ exports.reorderWorkflow = (0, workflows_sdk_1.createWorkflow)("reorder", (input)
24
25
  });
25
26
  });
26
27
  exports.default = exports.reorderWorkflow;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVvcmRlci13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcmVvcmRlci13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFHMEM7QUFDMUMsbUNBSWdCO0FBTUgsUUFBQSxlQUFlLEdBQUcsSUFBQSw4QkFBYyxFQUMzQyxTQUFTLEVBQ1QsQ0FDRSxLQUEyQixFQUNjLEVBQUU7SUFDM0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFdkMsc0NBQXNDO0lBQ3RDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFBLHlCQUFpQixFQUFDO1FBQ2xDLFFBQVE7UUFDUixXQUFXO0tBQ1osQ0FBQyxDQUFBO0lBRUYsd0NBQXdDO0lBQ3hDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLGdDQUF3QixFQUFDO1FBQzdDLEtBQUs7S0FDTixDQUFDLENBQUE7SUFFRixpQ0FBaUM7SUFDakMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsK0JBQXVCLEVBQUM7UUFDdkMsU0FBUztLQUNWLENBQUMsQ0FBQTtJQUVGLDBDQUEwQztJQUMxQyxPQUFPLElBQUksZ0NBQWdCLENBQUM7UUFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFO0tBQ2pCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBO0FBRUQsa0JBQWUsdUJBQWUsQ0FBQSJ9
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVvcmRlci13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcmVvcmRlci13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFHMEM7QUFDMUMsbUNBSWdCO0FBTUgsUUFBQSxlQUFlLEdBQUcsSUFBQSw4QkFBYyxFQUMzQyxTQUFTLEVBQ1QsQ0FDRSxLQUEyQixFQUNjLEVBQUU7SUFDM0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRXRELHNDQUFzQztJQUN0QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBQSx5QkFBaUIsRUFBQztRQUNsQyxRQUFRO1FBQ1IsV0FBVztLQUNaLENBQUMsQ0FBQTtJQUVGLHdDQUF3QztJQUN4QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBQSxnQ0FBd0IsRUFBQztRQUM3QyxLQUFLO1FBQ0wsYUFBYTtLQUNkLENBQUMsQ0FBQTtJQUVGLGlDQUFpQztJQUNqQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBQSwrQkFBdUIsRUFBQztRQUN2QyxTQUFTO0tBQ1YsQ0FBQyxDQUFBO0lBRUYsMENBQTBDO0lBQzFDLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQztRQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7S0FDakIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUE7QUFFRCxrQkFBZSx1QkFBZSxDQUFBIn0=
@@ -15,7 +15,6 @@ exports.retrieveOrderStep = (0, workflows_sdk_1.createStep)("retrieve-order", as
15
15
  const remoteQuery = container.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
16
16
  let orders;
17
17
  try {
18
- // Fix: Use array format for id filter to ensure proper filtering
19
18
  const queryObject = (0, utils_2.remoteQueryObjectFromString)({
20
19
  entryPoint: "order",
21
20
  fields: [
@@ -25,178 +24,52 @@ exports.retrieveOrderStep = (0, workflows_sdk_1.createStep)("retrieve-order", as
25
24
  "billing_address.*",
26
25
  "region_id",
27
26
  "sales_channel_id",
28
- "customer_id", // Explicitly request customer_id
29
- "customer.*", // Also get customer object for fallback
27
+ "customer_id",
28
+ "customer.*",
30
29
  "email",
31
30
  ],
32
31
  filters: {
33
- id: [order_id], // Use array format for proper filtering
32
+ id: [order_id],
34
33
  },
35
34
  });
36
35
  orders = await remoteQuery(queryObject);
37
- // Detailed logging: Raw remoteQuery result
38
- console.log("[Order Management] Raw remoteQuery result:", {
39
- order_id_requested: order_id,
40
- orders_type: Array.isArray(orders) ? 'array' : typeof orders,
41
- orders_length: Array.isArray(orders) ? orders.length : 'N/A',
42
- orders_is_array: Array.isArray(orders),
43
- first_order_exists: Array.isArray(orders) ? !!orders[0] : !!orders,
44
- first_order_id: Array.isArray(orders) && orders[0] ? orders[0].id : orders?.id,
45
- first_few_order_ids: Array.isArray(orders) ? orders.slice(0, 5).map((o) => o?.id) : 'N/A',
46
- timestamp: new Date().toISOString(),
47
- });
48
36
  }
49
37
  catch (queryError) {
50
- console.error("[Order Management] Remote query error:", {
51
- order_id,
52
- error: queryError,
53
- error_message: queryError instanceof Error ? queryError.message : "Unknown error",
54
- error_stack: queryError instanceof Error ? queryError.stack : undefined,
55
- });
56
38
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to retrieve order: ${queryError instanceof Error ? queryError.message : "Unknown error"}`);
57
39
  }
58
- // Fix: Find the correct order from results, don't just take first one
59
40
  let order = null;
60
41
  if (Array.isArray(orders)) {
61
- // If multiple orders returned, find the one matching our order_id
62
42
  order = orders.find((o) => o && o.id === order_id);
63
- if (!order && orders.length > 0) {
64
- console.warn("[Order Management] Order ID mismatch - multiple orders returned:", {
65
- order_id_requested: order_id,
66
- orders_returned: orders.length,
67
- first_order_id: orders[0]?.id,
68
- first_few_order_ids: orders.slice(0, 5).map((o) => o?.id),
69
- timestamp: new Date().toISOString(),
70
- });
71
- }
72
43
  }
73
44
  else {
74
45
  order = orders;
75
46
  }
76
- // Validate we got the correct order
77
47
  if (!order) {
78
- console.error("[Order Management] Order not found after query:", {
79
- order_id_requested: order_id,
80
- orders_result: orders,
81
- orders_type: typeof orders,
82
- orders_count: Array.isArray(orders) ? orders.length : orders ? 1 : 0,
83
- timestamp: new Date().toISOString(),
84
- });
85
48
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Order with id ${order_id} not found`);
86
49
  }
87
- // Critical validation: Ensure we got the correct order
88
50
  if (order.id !== order_id) {
89
- console.error("[Order Management] Order ID mismatch - wrong order returned:", {
90
- order_id_requested: order_id,
91
- order_id_received: order.id,
92
- orders_count: Array.isArray(orders) ? orders.length : 1,
93
- orders_array_ids: Array.isArray(orders) ? orders.map((o) => o?.id).slice(0, 10) : [order.id],
94
- timestamp: new Date().toISOString(),
95
- });
96
51
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Order with id ${order_id} not found. Query returned order ${order.id} instead.`);
97
52
  }
98
- console.log("[Order Management] Correct order found:", {
99
- order_id_requested: order_id,
100
- order_id_received: order.id,
101
- order_ids_match: order.id === order_id,
102
- timestamp: new Date().toISOString(),
103
- });
104
- // Detailed logging: Full order object structure
105
- console.log("[Order Management] Full order object structure:", {
106
- order_id,
107
- order_keys: Object.keys(order),
108
- order_id_value: order.id,
109
- order_customer_id_direct: order.customer_id,
110
- order_customer_id_type: typeof order.customer_id,
111
- order_customer_id_value: order.customer_id,
112
- // Check for nested customer objects
113
- has_customer_object: !!order.customer,
114
- customer_object_type: typeof order.customer,
115
- customer_object_keys: order.customer && typeof order.customer === 'object' ? Object.keys(order.customer) : 'N/A',
116
- customer_object_id: order.customer && typeof order.customer === 'object' ? order.customer.id : 'N/A',
117
- // Check for cart relationship
118
- has_cart: !!order.cart,
119
- cart_customer_id: order.cart?.customer_id,
120
- // Full order JSON (truncated for large objects)
121
- order_json: JSON.stringify(order, null, 2).substring(0, 2000),
122
- timestamp: new Date().toISOString(),
123
- });
124
- // Debug: Log what customer_id we actually got from the query
125
- console.log("[Order Management] Customer ID retrieval debug:", {
126
- order_id,
127
- order_customer_id_direct: order.customer_id,
128
- order_customer_id_type: typeof order.customer_id,
129
- order_customer_id_is_null: order.customer_id === null,
130
- order_customer_id_is_undefined: order.customer_id === undefined,
131
- order_customer_id_is_empty_string: order.customer_id === "",
132
- order_has_customer_object: !!order.customer,
133
- order_customer_object_id: order.customer?.id,
134
- // Don't log cart - we're not using it anymore
135
- timestamp: new Date().toISOString(),
136
- });
137
- // Get customer_id - prioritize order.customer_id as source of truth
138
- // Use nullish coalescing (??) instead of || to only fallback on null/undefined
139
53
  let orderCustomerId = null;
140
54
  if (order.customer_id) {
141
- // Direct field is the most reliable
142
55
  orderCustomerId = order.customer_id;
143
56
  }
144
57
  else if (order.customer && typeof order.customer === 'object' && order.customer.id) {
145
- // Try customer object if direct field is missing
146
58
  orderCustomerId = order.customer.id;
147
59
  }
148
60
  else {
149
- // No fallback to cart - it might be outdated
150
- // If customer_id is truly missing, we need to fail explicitly
151
61
  orderCustomerId = null;
152
62
  }
153
- // Validate that we have a customer_id
154
63
  if (!orderCustomerId) {
155
- console.error("[Order Management] Order missing customer_id:", {
156
- order_id,
157
- order_has_customer_id: !!order.customer_id,
158
- order_has_customer_object: !!order.customer,
159
- order_customer_object_id: order.customer?.id,
160
- order_has_cart: !!order.cart,
161
- cart_customer_id: order.cart?.customer_id,
162
- warning: "Order should have customer_id - this indicates a data integrity issue",
163
- timestamp: new Date().toISOString(),
164
- });
165
64
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Order ${order_id} is missing customer_id. Cannot validate ownership.`);
166
65
  }
167
66
  const authCustomerId = customer_id;
168
67
  const customerIdsMatch = orderCustomerId === authCustomerId;
169
- console.log("[Order Management] Customer ID comparison (fixed):", {
170
- order_id,
171
- order_customer_id: orderCustomerId,
172
- order_customer_id_source: order.customer_id ? 'direct' :
173
- (order.customer?.id ? 'customer_object' : 'missing'),
174
- authentication_customer_id: authCustomerId,
175
- match: customerIdsMatch,
176
- strings_equal: String(orderCustomerId) === String(authCustomerId),
177
- // Type safety check
178
- both_are_strings: typeof orderCustomerId === 'string' && typeof authCustomerId === 'string',
179
- timestamp: new Date().toISOString(),
180
- });
181
- // Validate customer ownership
182
68
  if (!customerIdsMatch) {
183
- console.warn("[Order Management] Customer ID mismatch - Access denied:", {
184
- order_id,
185
- order_customer_id: orderCustomerId,
186
- order_customer_id_source: order.customer_id ? 'direct' : 'customer_object',
187
- authentication_customer_id: authCustomerId,
188
- reason: "Order customer_id does not match authenticated customer_id",
189
- timestamp: new Date().toISOString(),
190
- });
191
69
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "You can only reorder your own orders");
192
70
  }
193
- console.log("[Order Management] Customer ID validation passed:", {
194
- order_id,
195
- customer_id: authCustomerId,
196
- timestamp: new Date().toISOString(),
197
- });
198
71
  return new workflows_sdk_1.StepResponse({
199
72
  order: order,
200
73
  });
201
74
  });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmlldmUtb3JkZXItc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvcmV0cmlldmUtb3JkZXItc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLHFEQUFrRztBQWtEckYsUUFBQSxpQkFBaUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3pDLGdCQUFnQixFQUNoQixLQUFLLEVBQ0gsS0FBNkIsRUFDN0IsRUFBRSxTQUFTLEVBQUUsRUFDbUMsRUFBRTtJQUNsRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV2QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixzQkFBc0IsQ0FDdkIsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUNBQXFDLENBQ3RDLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDbkMsaUNBQXlCLENBQUMsWUFBWSxDQUN2QyxDQUFBO0lBRUQsSUFBSSxNQUFNLENBQUE7SUFDVixJQUFJLENBQUM7UUFDSCxpRUFBaUU7UUFDakUsTUFBTSxXQUFXLEdBQUcsSUFBQSxtQ0FBMkIsRUFBQztZQUM5QyxVQUFVLEVBQUUsT0FBTztZQUNuQixNQUFNLEVBQUU7Z0JBQ04sSUFBSTtnQkFDSixTQUFTO2dCQUNULG9CQUFvQjtnQkFDcEIsbUJBQW1CO2dCQUNuQixXQUFXO2dCQUNYLGtCQUFrQjtnQkFDbEIsYUFBYSxFQUFHLGlDQUFpQztnQkFDakQsWUFBWSxFQUFJLHdDQUF3Qztn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
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmlldmUtb3JkZXItc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvcmV0cmlldmUtb3JkZXItc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFDdkQscUVBQTRFO0FBQzVFLHFEQUFrRztBQWtEckYsUUFBQSxpQkFBaUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3pDLGdCQUFnQixFQUNoQixLQUFLLEVBQ0gsS0FBNkIsRUFDN0IsRUFBRSxTQUFTLEVBQUUsRUFDbUMsRUFBRTtJQUNsRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV2QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixzQkFBc0IsQ0FDdkIsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUNBQXFDLENBQ3RDLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDbkMsaUNBQXlCLENBQUMsWUFBWSxDQUN2QyxDQUFBO0lBRUQsSUFBSSxNQUFNLENBQUE7SUFDVixJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFBLG1DQUEyQixFQUFDO1lBQzlDLFVBQVUsRUFBRSxPQUFPO1lBQ25CLE1BQU0sRUFBRTtnQkFDTixJQUFJO2dCQUNKLFNBQVM7Z0JBQ1Qsb0JBQW9CO2dCQUNwQixtQkFBbUI7Z0JBQ25CLFdBQVc7Z0JBQ1gsa0JBQWtCO2dCQUNsQixhQUFhO2dCQUNiLFlBQVk7Z0JBQ1osT0FBTzthQUNSO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEVB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
@@ -1,14 +1,203 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.transformOrderToCartStep = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
4
5
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- exports.transformOrderToCartStep = (0, workflows_sdk_1.createStep)("transform-order-to-cart", async (input) => {
6
- const { order } = input;
6
+ const getVariantAvailableQuantity = (variant) => {
7
+ const directQuantity = [
8
+ variant.calculated_inventory_quantity,
9
+ variant.inventory_quantity,
10
+ ].find((quantity) => typeof quantity === "number");
11
+ if (typeof directQuantity === "number") {
12
+ return directQuantity;
13
+ }
14
+ const inventoryItems = variant.inventory_items ?? [];
15
+ if (!inventoryItems.length) {
16
+ return null;
17
+ }
18
+ // For variants linked to multiple inventory items, sellable quantity is
19
+ // limited by the "bottleneck" item after accounting for required quantity.
20
+ const availableByItem = inventoryItems
21
+ .map((item) => {
22
+ const requiredQuantity = typeof item.required_quantity === "number" && item.required_quantity > 0
23
+ ? item.required_quantity
24
+ : 1;
25
+ const levels = item.inventory?.location_levels ?? [];
26
+ const totalAvailable = levels.reduce((sum, level) => {
27
+ if (typeof level.available_quantity === "number") {
28
+ return sum + level.available_quantity;
29
+ }
30
+ if (typeof level.stocked_quantity === "number" &&
31
+ typeof level.reserved_quantity === "number") {
32
+ return sum + (level.stocked_quantity - level.reserved_quantity);
33
+ }
34
+ return sum;
35
+ }, 0);
36
+ return Math.floor(totalAvailable / requiredQuantity);
37
+ })
38
+ .filter((value) => Number.isFinite(value));
39
+ if (!availableByItem.length) {
40
+ return null;
41
+ }
42
+ return Math.min(...availableByItem);
43
+ };
44
+ exports.transformOrderToCartStep = (0, workflows_sdk_1.createStep)("transform-order-to-cart", async (input, { container }) => {
45
+ const { order, force_reorder = false } = input;
46
+ const variantDetailsById = new Map();
47
+ for (const item of order.items || []) {
48
+ if (!item.variant_id || variantDetailsById.has(item.variant_id)) {
49
+ continue;
50
+ }
51
+ const orderItem = item;
52
+ variantDetailsById.set(item.variant_id, {
53
+ variant_name: orderItem.variant_title ?? null,
54
+ product_name: orderItem.product_title ?? null,
55
+ });
56
+ }
7
57
  // Map order items to cart items
8
58
  const items = (order.items || []).map((item) => ({
9
59
  variant_id: item.variant_id,
10
60
  quantity: item.quantity,
11
61
  }));
62
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
63
+ const requestedQuantityByVariant = new Map();
64
+ for (const item of items) {
65
+ if (!item.variant_id) {
66
+ continue;
67
+ }
68
+ const existingQuantity = requestedQuantityByVariant.get(item.variant_id) ?? 0;
69
+ requestedQuantityByVariant.set(item.variant_id, existingQuantity + item.quantity);
70
+ }
71
+ const variantIds = Array.from(requestedQuantityByVariant.keys());
72
+ if (!variantIds.length) {
73
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Cannot reorder: no valid variants found in order items.");
74
+ }
75
+ const { data: variants } = await query.graph({
76
+ entity: "product_variant",
77
+ fields: [
78
+ "id",
79
+ "inventory_quantity",
80
+ "calculated_inventory_quantity",
81
+ "allow_backorder",
82
+ "manage_inventory",
83
+ "inventory_items.required_quantity",
84
+ "inventory_items.inventory.location_levels.available_quantity",
85
+ "inventory_items.inventory.location_levels.stocked_quantity",
86
+ "inventory_items.inventory.location_levels.reserved_quantity",
87
+ ],
88
+ filters: {
89
+ id: variantIds,
90
+ },
91
+ });
92
+ const variantsById = new Map();
93
+ for (const variant of variants) {
94
+ variantsById.set(variant.id, variant);
95
+ }
96
+ const inventoryIssues = [];
97
+ const forceModeSkippedIssues = [];
98
+ const maxAllowedByVariant = new Map();
99
+ for (const [variantId, requestedQuantity] of requestedQuantityByVariant.entries()) {
100
+ const variant = variantsById.get(variantId);
101
+ const variantDetails = variantDetailsById.get(variantId);
102
+ if (!variant) {
103
+ const issue = {
104
+ variant_id: variantId,
105
+ variant_name: variantDetails?.variant_name ?? null,
106
+ product_name: variantDetails?.product_name ?? null,
107
+ requested_quantity: requestedQuantity,
108
+ available_quantity: null,
109
+ reason: "Variant not found",
110
+ };
111
+ inventoryIssues.push(issue);
112
+ forceModeSkippedIssues.push(issue);
113
+ continue;
114
+ }
115
+ // If inventory management is explicitly disabled or backorders are explicitly allowed,
116
+ // this variant should not block reorder creation.
117
+ if (variant.manage_inventory === false || variant.allow_backorder === true) {
118
+ maxAllowedByVariant.set(variantId, requestedQuantity);
119
+ continue;
120
+ }
121
+ const availableQuantity = getVariantAvailableQuantity(variant);
122
+ if (availableQuantity === null) {
123
+ const issue = {
124
+ variant_id: variantId,
125
+ variant_name: variantDetails?.variant_name ?? null,
126
+ product_name: variantDetails?.product_name ?? null,
127
+ requested_quantity: requestedQuantity,
128
+ available_quantity: null,
129
+ reason: "Inventory quantity is unavailable",
130
+ };
131
+ inventoryIssues.push(issue);
132
+ forceModeSkippedIssues.push(issue);
133
+ continue;
134
+ }
135
+ if (availableQuantity <= 0) {
136
+ const issue = {
137
+ variant_id: variantId,
138
+ variant_name: variantDetails?.variant_name ?? null,
139
+ product_name: variantDetails?.product_name ?? null,
140
+ requested_quantity: requestedQuantity,
141
+ available_quantity: availableQuantity,
142
+ reason: "Out of stock",
143
+ };
144
+ inventoryIssues.push(issue);
145
+ forceModeSkippedIssues.push(issue);
146
+ continue;
147
+ }
148
+ maxAllowedByVariant.set(variantId, Math.min(requestedQuantity, Math.floor(availableQuantity)));
149
+ if (availableQuantity < requestedQuantity) {
150
+ inventoryIssues.push({
151
+ variant_id: variantId,
152
+ variant_name: variantDetails?.variant_name ?? null,
153
+ product_name: variantDetails?.product_name ?? null,
154
+ requested_quantity: requestedQuantity,
155
+ available_quantity: availableQuantity,
156
+ reason: availableQuantity <= 0 ? "Out of stock" : "Insufficient inventory",
157
+ });
158
+ }
159
+ }
160
+ if (!force_reorder && inventoryIssues.length) {
161
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Inventory check failed for reorder items: ${JSON.stringify(inventoryIssues)}`);
162
+ }
163
+ const finalItems = force_reorder
164
+ ? (() => {
165
+ const remainingByVariant = new Map(maxAllowedByVariant);
166
+ const adjustedItems = [];
167
+ for (const item of items) {
168
+ const remaining = remainingByVariant.get(item.variant_id) ?? 0;
169
+ if (remaining <= 0) {
170
+ continue;
171
+ }
172
+ const itemQuantity = Math.min(item.quantity, remaining);
173
+ if (itemQuantity <= 0) {
174
+ continue;
175
+ }
176
+ adjustedItems.push({
177
+ variant_id: item.variant_id,
178
+ quantity: itemQuantity,
179
+ });
180
+ remainingByVariant.set(item.variant_id, remaining - itemQuantity);
181
+ }
182
+ return adjustedItems;
183
+ })()
184
+ : items;
185
+ if (force_reorder && finalItems.length === 0) {
186
+ const fallbackIssues = forceModeSkippedIssues.length > 0
187
+ ? forceModeSkippedIssues
188
+ : Array.from(requestedQuantityByVariant.entries()).map(([variantId, requestedQuantity]) => {
189
+ const variantDetails = variantDetailsById.get(variantId);
190
+ return {
191
+ variant_id: variantId,
192
+ variant_name: variantDetails?.variant_name ?? null,
193
+ product_name: variantDetails?.product_name ?? null,
194
+ requested_quantity: requestedQuantity,
195
+ available_quantity: 0,
196
+ reason: "Out of stock",
197
+ };
198
+ });
199
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Inventory check failed for reorder items: ${JSON.stringify(fallbackIssues)}`);
200
+ }
12
201
  // Extract billing address
13
202
  const billingAddress = order.billing_address
14
203
  ? {
@@ -44,10 +233,10 @@ exports.transformOrderToCartStep = (0, workflows_sdk_1.createStep)("transform-or
44
233
  email: order.email,
45
234
  billing_address: billingAddress,
46
235
  shipping_address: shippingAddress,
47
- items,
236
+ items: finalItems,
48
237
  };
49
238
  return new workflows_sdk_1.StepResponse({
50
239
  cartInput,
51
240
  });
52
241
  });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLW9yZGVyLXRvLWNhcnQtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvdHJhbnNmb3JtLW9yZGVyLXRvLWNhcnQtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUEwQy9ELFFBQUEsd0JBQXdCLEdBQUcsSUFBQSwwQkFBVSxFQUNoRCx5QkFBeUIsRUFDekIsS0FBSyxFQUNILEtBQW9DLEVBQ21CLEVBQUU7SUFDekQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUV2QixnQ0FBZ0M7SUFDaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7UUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO0tBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBRUgsMEJBQTBCO0lBQzFCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxlQUFlO1FBQzFDLENBQUMsQ0FBQztZQUNFLFVBQVUsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFVBQVU7WUFDNUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUztZQUMxQyxTQUFTLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUFTO1lBQzFDLFNBQVMsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQVM7WUFDMUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSTtZQUNoQyxZQUFZLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZO1lBQ2hELFFBQVEsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVE7WUFDeEMsV0FBVyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVztZQUM5QyxLQUFLLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUFLO1NBQ25DO1FBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUViLDJCQUEyQjtJQUMzQixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZ0JBQWdCO1FBQzVDLENBQUMsQ0FBQztZQUNFLFVBQVUsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBVTtZQUM3QyxTQUFTLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVM7WUFDM0MsU0FBUyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTO1lBQzNDLFNBQVMsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUztZQUMzQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUk7WUFDakMsWUFBWSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUTtZQUN6QyxXQUFXLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFdBQVc7WUFDL0MsS0FBSyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO1NBQ3BDO1FBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUViLE1BQU0sU0FBUyxHQUFnRDtRQUM3RCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtRQUN4QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLGVBQWUsRUFBRSxjQUFjO1FBQy9CLGdCQUFnQixFQUFFLGVBQWU7UUFDakMsS0FBSztLQUNOLENBQUE7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBaUM7UUFDdEQsU0FBUztLQUNWLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLW9yZGVyLXRvLWNhcnQtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvdHJhbnNmb3JtLW9yZGVyLXRvLWNhcnQtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBa0Y7QUFDbEYscUVBQTRFO0FBMEU1RSxNQUFNLDJCQUEyQixHQUFHLENBQ2xDLE9BQStCLEVBQ2hCLEVBQUU7SUFDakIsTUFBTSxjQUFjLEdBQUc7UUFDckIsT0FBTyxDQUFDLDZCQUE2QjtRQUNyQyxPQUFPLENBQUMsa0JBQWtCO0tBQzNCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFzQixFQUFFLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUE7SUFFdEUsSUFBSSxPQUFPLGNBQWMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxPQUFPLGNBQWMsQ0FBQTtJQUN2QixDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUE7SUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsMkVBQTJFO0lBQzNFLE1BQU0sZUFBZSxHQUFHLGNBQWM7U0FDbkMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDWixNQUFNLGdCQUFnQixHQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUM7WUFDdEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUVQLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQTtRQUNwRCxNQUFNLGNBQWMsR0FB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
package/README.md CHANGED
@@ -188,6 +188,9 @@ module.exports = defineConfig({
188
188
  ]
189
189
  }
190
190
  },
191
+
192
+ // Optional: auto-capture payment on delivered events (default: true)
193
+ capture_payment_on_delivered: true,
191
194
  },
192
195
  },
193
196
  ],
@@ -239,6 +242,9 @@ When the window has expired the API returns:
239
242
  - **Push channel**: For `channel: "push"`, the recipient is treated as a **customer_id**. The code loads all active device tokens for that customer from the `notification_tokens` module (e.g. when using the `medusa-notification-token-management` plugin) and sends one push notification to each token. If the token module is not installed or the customer has no tokens, no push is sent.
240
243
  - **SMS channel**: The plugin sends the SMS body in a form compatible with **medusa-twilio-sms** (`content.text`) and as `text`/`body`/`data.text` for other adapters. If you use medusa-twilio-sms and patch it to also accept string `content` or `data.text`, use `npx patch-package medusa-twilio-sms` after editing so the fix persists across installs.
241
244
 
245
+ **Optional Delivery Payment Capture Option:**
246
+ - `capture_payment_on_delivered` - Automatically captures the remaining authorized payment amount when delivery events are received (default: `true`). Set to `false` to disable auto-capture.
247
+
242
248
  **Notes**:
243
249
  - `storefrontUrl` and `jwtSecret` are required. All other options are optional.
244
250
  - Order confirmation emails are only sent if a template path is provided. If no template is configured, emails will not be sent.
@@ -246,6 +252,7 @@ When the window has expired the API returns:
246
252
  - OTP templates should include `{{otp}}` placeholder for the verification code.
247
253
  - SMTP configuration is optional. If not enabled, emails will use Medusa's default email provider.
248
254
  - Status-based notifications are optional. If enabled, notifications will be sent whenever an order reaches a configured status.
255
+ - Payment auto-capture on delivery is enabled by default and captures only the remaining uncaptured amount, skipping already captured payments.
249
256
 
250
257
  ### Payment detail module
251
258
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "order-management",
3
- "version": "0.0.75",
3
+ "version": "0.0.77",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",