@devx-commerce/plugin-gati 0.0.34-beta.75 → 0.0.34-beta.76
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.
|
@@ -17,7 +17,9 @@ exports.applyGoldRatePriceChange = applyGoldRatePriceChange;
|
|
|
17
17
|
*
|
|
18
18
|
* There is no Medusa guard blocking this on completed/fulfilled orders. It will
|
|
19
19
|
* throw if the order already has an active (pending/requested) change, so call
|
|
20
|
-
* sites should wrap this in try/catch and treat failures as non-fatal.
|
|
20
|
+
* sites should wrap this in try/catch and treat failures as non-fatal. On any
|
|
21
|
+
* failure mid-flight it declines the change it created, so a failed reprice
|
|
22
|
+
* never leaves a dangling active change that would block the order.
|
|
21
23
|
*
|
|
22
24
|
* `orderService` is the resolved Order Module service (Modules.ORDER).
|
|
23
25
|
*/
|
|
@@ -31,19 +33,40 @@ async function applyGoldRatePriceChange(orderService, input) {
|
|
|
31
33
|
created_by: "system",
|
|
32
34
|
metadata: input.history_metadata ?? {},
|
|
33
35
|
});
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
// createOrderChange → confirmOrderChange is NOT atomic: createOrderChange
|
|
37
|
+
// immediately persists a PENDING change (and bumps order.version). Medusa
|
|
38
|
+
// allows only ONE active (pending/requested) change per order, so if either
|
|
39
|
+
// step below throws, the dangling PENDING change permanently blocks EVERY
|
|
40
|
+
// future order change on this order — repricing AND fulfillment alike. The
|
|
41
|
+
// call sites here swallow the throw as non-fatal, which would otherwise brick
|
|
42
|
+
// the order silently. Decline the change on failure so it can never linger.
|
|
43
|
+
try {
|
|
44
|
+
// One ITEM_UPDATE action per repriced item, all under the same order change.
|
|
45
|
+
await orderService.addOrderAction(input.items.map((it) => ({
|
|
46
|
+
order_change_id: orderChange.id,
|
|
47
|
+
action: "item_update",
|
|
48
|
+
details: {
|
|
49
|
+
reference_id: it.item_id,
|
|
50
|
+
quantity: it.quantity,
|
|
51
|
+
unit_price: it.new_unit_price,
|
|
52
|
+
},
|
|
53
|
+
})));
|
|
54
|
+
await orderService.confirmOrderChange({
|
|
55
|
+
id: orderChange.id,
|
|
56
|
+
confirmed_by: "system",
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
// Best-effort rollback: declining moves it out of the active
|
|
61
|
+
// (pending/requested) set so it stops blocking the order. Keep the original
|
|
62
|
+
// error as the thrown one even if cleanup also fails.
|
|
63
|
+
try {
|
|
64
|
+
await orderService.declineOrderChange(orderChange.id);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// swallow cleanup failure; rethrow the real error below
|
|
68
|
+
}
|
|
69
|
+
throw err;
|
|
70
|
+
}
|
|
48
71
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktZ29sZC1yYXRlLXByaWNlLWNoYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvb3JkZXJzL3V0aWxzL2FwcGx5LWdvbGQtcmF0ZS1wcmljZS1jaGFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnREEsNERBa0RDO0FBeEVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSSxLQUFLLFVBQVUsd0JBQXdCLENBQzVDLFlBQWlCLEVBQ2pCLEtBQW9DO0lBRXBDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU07UUFBRSxPQUFPO0lBRWpDLE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixXQUFXLEVBQUUsY0FBYztRQUMzQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxrQkFBa0I7UUFDcEQsVUFBVSxFQUFFLFFBQVE7UUFDcEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFO0tBQ3ZDLENBQUMsQ0FBQztJQUVILDBFQUEwRTtJQUMxRSwwRUFBMEU7SUFDMUUsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSwyRUFBMkU7SUFDM0UsOEVBQThFO0lBQzlFLDRFQUE0RTtJQUM1RSxJQUFJLENBQUM7UUFDSCw2RUFBNkU7UUFDN0UsTUFBTSxZQUFZLENBQUMsY0FBYyxDQUMvQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QixlQUFlLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDL0IsTUFBTSxFQUFFLGFBQWE7WUFDckIsT0FBTyxFQUFFO2dCQUNQLFlBQVksRUFBRSxFQUFFLENBQUMsT0FBTztnQkFDeEIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO2dCQUNyQixVQUFVLEVBQUUsRUFBRSxDQUFDLGNBQWM7YUFDOUI7U0FDRixDQUFDLENBQUMsQ0FDSixDQUFDO1FBRUYsTUFBTSxZQUFZLENBQUMsa0JBQWtCLENBQUM7WUFDcEMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFO1lBQ2xCLFlBQVksRUFBRSxRQUFRO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsNkRBQTZEO1FBQzdELDRFQUE0RTtRQUM1RSxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxZQUFZLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCx3REFBd0Q7UUFDMUQsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQztBQUNILENBQUMifQ==
|