@vendure/core 3.7.4-master-202610040244 → 3.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/config/catalog/default-stock-location-strategy.d.ts +57 -2
  2. package/dist/config/catalog/default-stock-location-strategy.js +101 -5
  3. package/dist/config/catalog/default-stock-location-strategy.js.map +1 -1
  4. package/dist/config/catalog/multi-channel-stock-location-strategy.d.ts +0 -5
  5. package/dist/config/catalog/multi-channel-stock-location-strategy.js +13 -27
  6. package/dist/config/catalog/multi-channel-stock-location-strategy.js.map +1 -1
  7. package/dist/config/order/default-order-process.js +13 -1
  8. package/dist/config/order/default-order-process.js.map +1 -1
  9. package/dist/config/order/stock-allocation-strategy.d.ts +4 -0
  10. package/dist/entity/order-line/order-line.entity.d.ts +3 -29
  11. package/dist/entity/order-line/order-line.entity.js +20 -66
  12. package/dist/entity/order-line/order-line.entity.js.map +1 -1
  13. package/dist/event-bus/events/stock-shortfall-event.d.ts +40 -0
  14. package/dist/event-bus/events/stock-shortfall-event.js +29 -0
  15. package/dist/event-bus/events/stock-shortfall-event.js.map +1 -0
  16. package/dist/event-bus/index.d.ts +1 -0
  17. package/dist/event-bus/index.js +1 -0
  18. package/dist/event-bus/index.js.map +1 -1
  19. package/dist/migration-utils/index.d.ts +0 -1
  20. package/dist/migration-utils/index.js +1 -3
  21. package/dist/migration-utils/index.js.map +1 -1
  22. package/dist/service/helpers/order-modifier/order-modifier.d.ts +15 -2
  23. package/dist/service/helpers/order-modifier/order-modifier.js +37 -12
  24. package/dist/service/helpers/order-modifier/order-modifier.js.map +1 -1
  25. package/dist/service/helpers/utils/stock-lock-order.d.ts +11 -0
  26. package/dist/service/helpers/utils/stock-lock-order.js +22 -0
  27. package/dist/service/helpers/utils/stock-lock-order.js.map +1 -0
  28. package/dist/service/services/product-variant.service.d.ts +9 -2
  29. package/dist/service/services/product-variant.service.js +18 -2
  30. package/dist/service/services/product-variant.service.js.map +1 -1
  31. package/dist/service/services/stock-level.service.d.ts +124 -2
  32. package/dist/service/services/stock-level.service.js +181 -12
  33. package/dist/service/services/stock-level.service.js.map +1 -1
  34. package/dist/service/services/stock-movement.service.d.ts +9 -0
  35. package/dist/service/services/stock-movement.service.js +143 -50
  36. package/dist/service/services/stock-movement.service.js.map +1 -1
  37. package/package.json +2 -2
  38. package/dist/migration-utils/v3_8_orderline_promotion_rescale.d.ts +0 -57
  39. package/dist/migration-utils/v3_8_orderline_promotion_rescale.js +0 -232
  40. package/dist/migration-utils/v3_8_orderline_promotion_rescale.js.map +0 -1
@@ -22,8 +22,8 @@ const channel_entity_1 = require("../channel/channel.entity");
22
22
  const custom_entity_fields_1 = require("../custom-entity-fields");
23
23
  const entity_id_decorator_1 = require("../entity-id.decorator");
24
24
  const money_decorator_1 = require("../money.decorator");
25
- const order_line_reference_entity_1 = require("../order-line-reference/order-line-reference.entity");
26
25
  const order_entity_1 = require("../order/order.entity");
26
+ const order_line_reference_entity_1 = require("../order-line-reference/order-line-reference.entity");
27
27
  const product_variant_entity_1 = require("../product-variant/product-variant.entity");
28
28
  const shipping_line_entity_1 = require("../shipping-line/shipping-line.entity");
29
29
  const allocation_entity_1 = require("../stock-movement/allocation.entity");
@@ -155,21 +155,18 @@ let OrderLine = class OrderLine extends base_entity_1.VendureEntity {
155
155
  // Group discounts together, so that it does not list a new
156
156
  // discount row for each item in the line
157
157
  const groupedDiscounts = new Map();
158
- // See `getUnitAdjustmentsTotal()` for the quantity basis used per adjustment type. A
159
- // quantity of 0 (e.g. a fully-cancelled line added by an OrderModification, which keeps
160
- // `orderPlacedQuantity` at 0 too, per #5097) has no units left to hold a discount,
161
- // regardless of what the stored adjustment amount is.
158
+ // A line added by an OrderModification keeps an orderPlacedQuantity of 0, so once it is
159
+ // cancelled there are no units left to prorate the adjustment over.
160
+ const proratedOverQuantity = Math.max(this.orderPlacedQuantity, this.quantity);
162
161
  for (const adjustment of this.adjustments) {
163
162
  const discountGroup = groupedDiscounts.get(adjustment.adjustmentSource);
164
- const lineAdjustmentAmount = this.quantity === 0
165
- ? 0
166
- : (adjustment.amount / this.quantityBasisFor(adjustment)) * this.quantity;
163
+ const unitAdjustmentAmount = proratedOverQuantity === 0 ? 0 : (adjustment.amount / proratedOverQuantity) * this.quantity;
167
164
  const amount = priceIncludesTax
168
- ? (0, tax_utils_1.netPriceOf)(lineAdjustmentAmount, this.taxRate)
169
- : lineAdjustmentAmount;
165
+ ? (0, tax_utils_1.netPriceOf)(unitAdjustmentAmount, this.taxRate)
166
+ : unitAdjustmentAmount;
170
167
  const amountWithTax = priceIncludesTax
171
- ? lineAdjustmentAmount
172
- : (0, tax_utils_1.grossPriceOf)(lineAdjustmentAmount, this.taxRate);
168
+ ? unitAdjustmentAmount
169
+ : (0, tax_utils_1.grossPriceOf)(unitAdjustmentAmount, this.taxRate);
173
170
  if (discountGroup) {
174
171
  discountGroup.amount += amount;
175
172
  discountGroup.amountWithTax += amountWithTax;
@@ -217,26 +214,6 @@ let OrderLine = class OrderLine extends base_entity_1.VendureEntity {
217
214
  this.adjustments = this.adjustments.concat(limitedAdjustment);
218
215
  }
219
216
  }
220
- /**
221
- * @description
222
- * Sets this line's quantity to `newQuantity`, rescaling its `PROMOTION`-type adjustments to
223
- * match. Used where a quantity reduction bypasses `OrderCalculator` recalculation (see
224
- * `OrderModifier.cancelOrderByOrderLines()`), to preserve the invariant that `PROMOTION`
225
- * amounts are stored scaled to the current quantity.
226
- *
227
- * A `newQuantity` of 0 sets the quantity but leaves the adjustments untouched: the getters
228
- * short-circuit on an empty line either way, so scaling them to zero would only erase the
229
- * record of the discount that had applied, which plugins and accounting exports read back.
230
- */
231
- setQuantityRescalingAdjustments(newQuantity) {
232
- var _a;
233
- if (0 < newQuantity) {
234
- const scaleFactor = newQuantity / this.quantity;
235
- this.adjustments = ((_a = this.adjustments) !== null && _a !== void 0 ? _a : []).map(adjustment => adjustment.type === generated_types_1.AdjustmentType.PROMOTION
236
- ? Object.assign(Object.assign({}, adjustment), { amount: (0, round_money_1.roundMoney)(adjustment.amount * scaleFactor) }) : adjustment);
237
- }
238
- this.quantity = newQuantity;
239
- }
240
217
  /**
241
218
  * Clears Adjustments from all OrderItems of the given type. If no type
242
219
  * is specified, then all adjustments are removed.
@@ -285,9 +262,7 @@ let OrderLine = class OrderLine extends base_entity_1.VendureEntity {
285
262
  }
286
263
  /**
287
264
  * @description
288
- * The total of all price adjustments, expressed per unit. Will typically be a negative
289
- * number due to discounts. See `quantityBasisFor()` for the quantity basis used per
290
- * adjustment, which differs by `AdjustmentType`.
265
+ * The total of all price adjustments. Will typically be a negative number due to discounts.
291
266
  */
292
267
  getUnitAdjustmentsTotal(type) {
293
268
  if (!this.adjustments || this.quantity === 0) {
@@ -295,13 +270,12 @@ let OrderLine = class OrderLine extends base_entity_1.VendureEntity {
295
270
  }
296
271
  return this.adjustments
297
272
  .filter(adjustment => (type ? adjustment.type === type : true))
298
- .map(adjustment => adjustment.amount / this.quantityBasisFor(adjustment))
273
+ .map(adjustment => adjustment.amount / Math.max(this.orderPlacedQuantity, this.quantity))
299
274
  .reduce((total, a) => total + a, 0);
300
275
  }
301
276
  /**
302
277
  * @description
303
- * The total of all price adjustments for the whole line. Will typically be a negative number
304
- * due to discounts. See `quantityBasisFor()` for the quantity basis used per adjustment.
278
+ * The total of all price adjustments. Will typically be a negative number due to discounts.
305
279
  */
306
280
  getLineAdjustmentsTotal(withTax, type) {
307
281
  if (!this.adjustments || this.quantity === 0) {
@@ -309,40 +283,20 @@ let OrderLine = class OrderLine extends base_entity_1.VendureEntity {
309
283
  }
310
284
  const sum = this.adjustments
311
285
  .filter(adjustment => (type ? adjustment.type === type : true))
312
- .map(adjustment => (adjustment.amount / this.quantityBasisFor(adjustment)) * this.quantity)
286
+ .map(adjustment => adjustment.amount)
313
287
  .reduce((total, a) => total + a, 0);
288
+ const adjustedForQuantityChanges = sum * (this.quantity / Math.max(this.orderPlacedQuantity, this.quantity));
314
289
  if (withTax) {
315
- return this.listPriceIncludesTax ? sum : (0, tax_utils_1.grossPriceOf)(sum, this.taxRate);
290
+ return this.listPriceIncludesTax
291
+ ? adjustedForQuantityChanges
292
+ : (0, tax_utils_1.grossPriceOf)(adjustedForQuantityChanges, this.taxRate);
316
293
  }
317
294
  else {
318
- return this.listPriceIncludesTax ? (0, tax_utils_1.netPriceOf)(sum, this.taxRate) : sum;
295
+ return this.listPriceIncludesTax
296
+ ? (0, tax_utils_1.netPriceOf)(adjustedForQuantityChanges, this.taxRate)
297
+ : adjustedForQuantityChanges;
319
298
  }
320
299
  }
321
- /**
322
- * @description
323
- * The quantity that `adjustment.amount` (a line total) should be divided by to get a correct
324
- * per-unit share. `PROMOTION` adjustments are always freshly recomputed against the current
325
- * `this.quantity`, so that is their basis. Other types (`DISTRIBUTED_ORDER_PROMOTION`, `OTHER`)
326
- * are a per-line share of an order-level amount that is redistributed by weight on every
327
- * recalculation, so their basis is pinned to `orderPlacedQuantity` - otherwise a partially
328
- * cancelled/refunded line's surviving units could absorb a bigger share than they're due. See
329
- * #5127 for the full reasoning.
330
- */
331
- quantityBasisFor(adjustment) {
332
- const basis = (() => {
333
- switch (adjustment.type) {
334
- case generated_types_1.AdjustmentType.PROMOTION:
335
- return this.quantity;
336
- case generated_types_1.AdjustmentType.DISTRIBUTED_ORDER_PROMOTION:
337
- case generated_types_1.AdjustmentType.OTHER:
338
- default:
339
- return Math.max(this.orderPlacedQuantity, this.quantity);
340
- }
341
- })();
342
- // An empty line has no units to divide across; every caller discards the result in that
343
- // case, and 1 keeps a future caller that forgets from producing NaN (cf. #5101).
344
- return basis === 0 ? 1 : basis;
345
- }
346
300
  };
347
301
  exports.OrderLine = OrderLine;
348
302
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"order-line.entity.js","sourceRoot":"","sources":["../../../src/entity/order-line/order-line.entity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order-line.entity.js","sourceRoot":"","sources":["../../../src/entity/order-line/order-line.entity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { ID } from '@vendure/common/lib/shared-types';
2
+ import { RequestContext } from '../../api/common/request-context';
3
+ import { Order } from '../../entity/order/order.entity';
4
+ import { VendureEvent } from '../vendure-event';
5
+ /**
6
+ * @description
7
+ * Describes a single order line whose requested quantity could not be fully allocated
8
+ * from available stock.
9
+ *
10
+ * @since 3.7.4
11
+ * @docsCategory events
12
+ * @docsPage Event Types
13
+ */
14
+ export interface StockShortfall {
15
+ productVariantId: ID;
16
+ orderLineId: ID;
17
+ requested: number;
18
+ allocated: number;
19
+ }
20
+ /**
21
+ * @description
22
+ * This event is fired when stock allocation for an Order cannot fully satisfy the requested
23
+ * quantities — i.e. the available stock was depleted (e.g. by concurrent orders) between the time
24
+ * the cart passed the checkout stock check and the time stock was actually allocated. Because the
25
+ * payment may already have been captured, allocation is capped to the available quantity rather than
26
+ * failing, and this event is published so that plugins can react (refund, backorder, notify).
27
+ *
28
+ * The `order` carries only its own columns: no relations (lines, customer, payments) are loaded.
29
+ * Fetch them via the {@link OrderService} if needed.
30
+ *
31
+ * @since 3.7.4
32
+ * @docsCategory events
33
+ * @docsPage Event Types
34
+ */
35
+ export declare class StockShortfallEvent extends VendureEvent {
36
+ ctx: RequestContext;
37
+ order: Order;
38
+ shortfalls: StockShortfall[];
39
+ constructor(ctx: RequestContext, order: Order, shortfalls: StockShortfall[]);
40
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StockShortfallEvent = void 0;
4
+ const vendure_event_1 = require("../vendure-event");
5
+ /**
6
+ * @description
7
+ * This event is fired when stock allocation for an Order cannot fully satisfy the requested
8
+ * quantities — i.e. the available stock was depleted (e.g. by concurrent orders) between the time
9
+ * the cart passed the checkout stock check and the time stock was actually allocated. Because the
10
+ * payment may already have been captured, allocation is capped to the available quantity rather than
11
+ * failing, and this event is published so that plugins can react (refund, backorder, notify).
12
+ *
13
+ * The `order` carries only its own columns: no relations (lines, customer, payments) are loaded.
14
+ * Fetch them via the {@link OrderService} if needed.
15
+ *
16
+ * @since 3.7.4
17
+ * @docsCategory events
18
+ * @docsPage Event Types
19
+ */
20
+ class StockShortfallEvent extends vendure_event_1.VendureEvent {
21
+ constructor(ctx, order, shortfalls) {
22
+ super();
23
+ this.ctx = ctx;
24
+ this.order = order;
25
+ this.shortfalls = shortfalls;
26
+ }
27
+ }
28
+ exports.StockShortfallEvent = StockShortfallEvent;
29
+ //# sourceMappingURL=stock-shortfall-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stock-shortfall-event.js","sourceRoot":"","sources":["../../../src/event-bus/events/stock-shortfall-event.ts"],"names":[],"mappings":";;;AAIA,oDAAgD;AAkBhD;;;;;;;;;;;;;;GAcG;AACH,MAAa,mBAAoB,SAAQ,4BAAY;IACjD,YACW,GAAmB,EACnB,KAAY,EACZ,UAA4B;QAEnC,KAAK,EAAE,CAAC;QAJD,QAAG,GAAH,GAAG,CAAgB;QACnB,UAAK,GAAL,KAAK,CAAO;QACZ,eAAU,GAAV,UAAU,CAAkB;IAGvC,CAAC;CACJ;AARD,kDAQC"}
@@ -58,6 +58,7 @@ export * from './events/seller-event';
58
58
  export * from './events/shipping-method-event';
59
59
  export * from './events/stock-location-event';
60
60
  export * from './events/stock-movement-event';
61
+ export * from './events/stock-shortfall-event';
61
62
  export * from './events/tax-category-event';
62
63
  export * from './events/tax-rate-event';
63
64
  export * from './events/tax-rate-modification-event';
@@ -74,6 +74,7 @@ __exportStar(require("./events/seller-event"), exports);
74
74
  __exportStar(require("./events/shipping-method-event"), exports);
75
75
  __exportStar(require("./events/stock-location-event"), exports);
76
76
  __exportStar(require("./events/stock-movement-event"), exports);
77
+ __exportStar(require("./events/stock-shortfall-event"), exports);
77
78
  __exportStar(require("./events/tax-category-event"), exports);
78
79
  __exportStar(require("./events/tax-rate-event"), exports);
79
80
  __exportStar(require("./events/tax-rate-modification-event"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC;AACnC,yDAAuC;AACvC,kDAAgC;AAEhC,sEAAoD;AACpD,kEAAgD;AAChD,+DAA6C;AAC7C,yDAAuC;AACvC,+DAA6C;AAC7C,uDAAqC;AACrC,iEAA+C;AAC/C,8DAA4C;AAC5C,gEAA8C;AAC9C,yDAAuC;AACvC,4DAA0C;AAC1C,yEAAuD;AACvD,yDAAuC;AACvC,6DAA2C;AAC3C,kEAAgD;AAChD,0DAAwC;AACxC,uEAAqD;AACrD,gEAA8C;AAC9C,uDAAqC;AACrC,6DAA2C;AAC3C,6DAA2C;AAC3C,8EAA4D;AAC5D,iEAA+C;AAC/C,+DAA6C;AAC7C,mEAAiD;AACjD,2EAAyD;AACzD,6DAA2C;AAC3C,uDAAqC;AACrC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,8DAA4C;AAC5C,wEAAsD;AACtD,gEAA8C;AAC9C,yEAAuD;AACvD,gEAA8C;AAC9C,0EAAwD;AACxD,iEAA+C;AAC/C,yDAAuC;AACvC,gEAA8C;AAC9C,6EAA2D;AAC3D,sEAAoD;AACpD,yEAAuD;AACvD,iEAA+C;AAC/C,uEAAqD;AACrD,2DAAyC;AACzC,0DAAwC;AACxC,wDAAsC;AACtC,yEAAuD;AACvD,6DAA2C;AAC3C,sDAAoC;AACpC,wDAAsC;AACtC,wDAAsC;AACtC,iEAA+C;AAC/C,gEAA8C;AAC9C,gEAA8C;AAC9C,8DAA4C;AAC5C,0DAAwC;AACxC,uEAAqD;AACrD,sDAAoC;AACpC,8DAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC;AACnC,yDAAuC;AACvC,kDAAgC;AAEhC,sEAAoD;AACpD,kEAAgD;AAChD,+DAA6C;AAC7C,yDAAuC;AACvC,+DAA6C;AAC7C,uDAAqC;AACrC,iEAA+C;AAC/C,8DAA4C;AAC5C,gEAA8C;AAC9C,yDAAuC;AACvC,4DAA0C;AAC1C,yEAAuD;AACvD,yDAAuC;AACvC,6DAA2C;AAC3C,kEAAgD;AAChD,0DAAwC;AACxC,uEAAqD;AACrD,gEAA8C;AAC9C,uDAAqC;AACrC,6DAA2C;AAC3C,6DAA2C;AAC3C,8EAA4D;AAC5D,iEAA+C;AAC/C,+DAA6C;AAC7C,mEAAiD;AACjD,2EAAyD;AACzD,6DAA2C;AAC3C,uDAAqC;AACrC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,8DAA4C;AAC5C,wEAAsD;AACtD,gEAA8C;AAC9C,yEAAuD;AACvD,gEAA8C;AAC9C,0EAAwD;AACxD,iEAA+C;AAC/C,yDAAuC;AACvC,gEAA8C;AAC9C,6EAA2D;AAC3D,sEAAoD;AACpD,yEAAuD;AACvD,iEAA+C;AAC/C,uEAAqD;AACrD,2DAAyC;AACzC,0DAAwC;AACxC,wDAAsC;AACtC,yEAAuD;AACvD,6DAA2C;AAC3C,sDAAoC;AACpC,wDAAsC;AACtC,wDAAsC;AACtC,iEAA+C;AAC/C,gEAA8C;AAC9C,gEAA8C;AAC9C,iEAA+C;AAC/C,8DAA4C;AAC5C,0DAAwC;AACxC,uEAAqD;AACrD,sDAAoC;AACpC,8DAA4C"}
@@ -1,3 +1,2 @@
1
1
  export { migrateAssetTranslationData } from './v3_6_asset_translations';
2
2
  export { migrateProductOptionGroupData } from './v3_6_shared_option_groups';
3
- export { RescaleOrderLinePromotionAdjustmentsOptions, rescaleOrderLinePromotionAdjustments, } from './v3_8_orderline_promotion_rescale';
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rescaleOrderLinePromotionAdjustments = exports.migrateProductOptionGroupData = exports.migrateAssetTranslationData = void 0;
3
+ exports.migrateProductOptionGroupData = exports.migrateAssetTranslationData = void 0;
4
4
  var v3_6_asset_translations_1 = require("./v3_6_asset_translations");
5
5
  Object.defineProperty(exports, "migrateAssetTranslationData", { enumerable: true, get: function () { return v3_6_asset_translations_1.migrateAssetTranslationData; } });
6
6
  var v3_6_shared_option_groups_1 = require("./v3_6_shared_option_groups");
7
7
  Object.defineProperty(exports, "migrateProductOptionGroupData", { enumerable: true, get: function () { return v3_6_shared_option_groups_1.migrateProductOptionGroupData; } });
8
- var v3_8_orderline_promotion_rescale_1 = require("./v3_8_orderline_promotion_rescale");
9
- Object.defineProperty(exports, "rescaleOrderLinePromotionAdjustments", { enumerable: true, get: function () { return v3_8_orderline_promotion_rescale_1.rescaleOrderLinePromotionAdjustments; } });
10
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migration-utils/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AAA/D,sIAAA,2BAA2B,OAAA;AACpC,yEAA4E;AAAnE,0IAAA,6BAA6B,OAAA;AACtC,uFAG4C;AADxC,wJAAA,oCAAoC,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migration-utils/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AAA/D,sIAAA,2BAA2B,OAAA;AACpC,yEAA4E;AAAnE,0IAAA,6BAA6B,OAAA"}
@@ -16,6 +16,7 @@ import { HistoryService } from '../../services/history.service';
16
16
  import { PaymentService } from '../../services/payment.service';
17
17
  import { ProductVariantService } from '../../services/product-variant.service';
18
18
  import { PromotionService } from '../../services/promotion.service';
19
+ import { StockLevelReadOptions, StockLevelService } from '../../services/stock-level.service';
19
20
  import { StockMovementService } from '../../services/stock-movement.service';
20
21
  import { CustomFieldRelationService } from '../custom-field-relation/custom-field-relation.service';
21
22
  import { OrderCalculator } from '../order-calculator/order-calculator';
@@ -48,7 +49,8 @@ export declare class OrderModifier {
48
49
  private shippingCalculator;
49
50
  private historyService;
50
51
  private translator;
51
- constructor(connection: TransactionalConnection, configService: ConfigService, orderCalculator: OrderCalculator, paymentService: PaymentService, countryService: CountryService, stockMovementService: StockMovementService, productVariantService: ProductVariantService, customFieldRelationService: CustomFieldRelationService, promotionService: PromotionService, eventBus: EventBus, shippingCalculator: ShippingCalculator, historyService: HistoryService, translator: TranslatorService);
52
+ private stockLevelService;
53
+ constructor(connection: TransactionalConnection, configService: ConfigService, orderCalculator: OrderCalculator, paymentService: PaymentService, countryService: CountryService, stockMovementService: StockMovementService, productVariantService: ProductVariantService, customFieldRelationService: CustomFieldRelationService, promotionService: PromotionService, eventBus: EventBus, shippingCalculator: ShippingCalculator, historyService: HistoryService, translator: TranslatorService, stockLevelService: StockLevelService);
52
54
  /**
53
55
  * @description
54
56
  * Ensure that the ProductVariant has sufficient saleable stock to add the given
@@ -61,8 +63,13 @@ export declare class OrderModifier {
61
63
  * have differing values for one or more custom fields. In this case, we need to take _all_ of these
62
64
  * OrderLines into account when constraining the quantity. See https://github.com/vendurehq/vendure/issues/2702
63
65
  * for more on this.
66
+ * - `options.lockStockLevels` must be `true` when the caller allocates stock in the same
67
+ * transaction based on the result, so that the check and the allocation cannot be interleaved
68
+ * with another transaction for the same ProductVariant. See {@link StockLevelService.getAvailableStock}.
69
+ *
70
+ * @since 3.7.4 - Added the `options` parameter
64
71
  */
65
- constrainQuantityToSaleable(ctx: RequestContext, variant: ProductVariant, quantity: number, existingOrderLineQuantity?: number, quantityInOtherOrderLines?: number): Promise<number>;
72
+ constrainQuantityToSaleable(ctx: RequestContext, variant: ProductVariant, quantity: number, existingOrderLineQuantity?: number, quantityInOtherOrderLines?: number, options?: StockLevelReadOptions): Promise<number>;
66
73
  /**
67
74
  * @description
68
75
  * Given a ProductVariant ID and optional custom fields, this method will return an existing OrderLine that
@@ -112,4 +119,10 @@ export declare class OrderModifier {
112
119
  */
113
120
  private coerceValue;
114
121
  private getProductVariantOrThrow;
122
+ /**
123
+ * modifyOrder allocates, releases and cancels stock in one transaction, visiting the lines in
124
+ * the caller's order. Locking every affected variant up front, in the shared order, means it
125
+ * cannot deadlock with a concurrent modification or settlement.
126
+ */
127
+ private lockStockLevelsForModification;
115
128
  }
@@ -43,6 +43,7 @@ const history_service_1 = require("../../services/history.service");
43
43
  const payment_service_1 = require("../../services/payment.service");
44
44
  const product_variant_service_1 = require("../../services/product-variant.service");
45
45
  const promotion_service_1 = require("../../services/promotion.service");
46
+ const stock_level_service_1 = require("../../services/stock-level.service");
46
47
  const stock_movement_service_1 = require("../../services/stock-movement.service");
47
48
  const custom_field_relation_service_1 = require("../custom-field-relation/custom-field-relation.service");
48
49
  const order_calculator_1 = require("../order-calculator/order-calculator");
@@ -65,7 +66,7 @@ const patch_entity_1 = require("../utils/patch-entity");
65
66
  * @docsCategory service-helpers
66
67
  */
67
68
  let OrderModifier = class OrderModifier {
68
- constructor(connection, configService, orderCalculator, paymentService, countryService, stockMovementService, productVariantService, customFieldRelationService, promotionService, eventBus, shippingCalculator, historyService, translator) {
69
+ constructor(connection, configService, orderCalculator, paymentService, countryService, stockMovementService, productVariantService, customFieldRelationService, promotionService, eventBus, shippingCalculator, historyService, translator, stockLevelService) {
69
70
  this.connection = connection;
70
71
  this.configService = configService;
71
72
  this.orderCalculator = orderCalculator;
@@ -79,6 +80,7 @@ let OrderModifier = class OrderModifier {
79
80
  this.shippingCalculator = shippingCalculator;
80
81
  this.historyService = historyService;
81
82
  this.translator = translator;
83
+ this.stockLevelService = stockLevelService;
82
84
  }
83
85
  /**
84
86
  * @description
@@ -92,10 +94,15 @@ let OrderModifier = class OrderModifier {
92
94
  * have differing values for one or more custom fields. In this case, we need to take _all_ of these
93
95
  * OrderLines into account when constraining the quantity. See https://github.com/vendurehq/vendure/issues/2702
94
96
  * for more on this.
97
+ * - `options.lockStockLevels` must be `true` when the caller allocates stock in the same
98
+ * transaction based on the result, so that the check and the allocation cannot be interleaved
99
+ * with another transaction for the same ProductVariant. See {@link StockLevelService.getAvailableStock}.
100
+ *
101
+ * @since 3.7.4 - Added the `options` parameter
95
102
  */
96
- async constrainQuantityToSaleable(ctx, variant, quantity, existingOrderLineQuantity = 0, quantityInOtherOrderLines = 0) {
103
+ async constrainQuantityToSaleable(ctx, variant, quantity, existingOrderLineQuantity = 0, quantityInOtherOrderLines = 0, options) {
97
104
  let correctedQuantity = quantity + existingOrderLineQuantity;
98
- const saleableStockLevel = await this.productVariantService.getSaleableStockLevel(ctx, variant);
105
+ const saleableStockLevel = await this.productVariantService.getSaleableStockLevel(ctx, variant, options);
99
106
  if (saleableStockLevel < correctedQuantity + quantityInOtherOrderLines) {
100
107
  correctedQuantity = Math.max(saleableStockLevel - existingOrderLineQuantity - quantityInOtherOrderLines, 0);
101
108
  }
@@ -270,18 +277,18 @@ let OrderModifier = class OrderModifier {
270
277
  });
271
278
  }
272
279
  }
280
+ // Cancellations and releases touch different sets of variants, so lock their union once,
281
+ // in the shared order, rather than letting each call lock its own set.
282
+ await this.stockLevelService.lockStockLevelsForVariants(ctx, [...fulfilledLines, ...allocatedLines]
283
+ .map(line => { var _a; return (_a = fullOrder.lines.find(l => (0, utils_1.idsAreEqual)(l.id, line.orderLineId))) === null || _a === void 0 ? void 0 : _a.productVariantId; })
284
+ .filter((id) => id != null));
273
285
  await this.stockMovementService.createCancellationsForOrderLines(ctx, fulfilledLines);
274
286
  await this.stockMovementService.createReleasesForOrderLines(ctx, allocatedLines);
275
287
  for (const line of lineInputs) {
276
288
  const orderLine = fullOrder.lines.find(l => (0, utils_1.idsAreEqual)(l.id, line.orderLineId));
277
289
  if (orderLine) {
278
- // A partial cancellation bypasses `OrderCalculator` recalculation entirely, so the
279
- // `PROMOTION` adjustments are rescaled here to preserve the invariant that they are
280
- // stored scaled to the current quantity.
281
- orderLine.setQuantityRescalingAdjustments(orderLine.quantity - line.quantity);
282
290
  await this.connection.getRepository(ctx, order_line_entity_1.OrderLine).update(line.orderLineId, {
283
- quantity: orderLine.quantity,
284
- adjustments: orderLine.adjustments,
291
+ quantity: orderLine.quantity - line.quantity,
285
292
  });
286
293
  await this.eventBus.publish(new order_line_event_1.OrderLineEvent(ctx, order, orderLine, 'cancelled'));
287
294
  }
@@ -351,6 +358,7 @@ let OrderModifier = class OrderModifier {
351
358
  amount: refund.amount,
352
359
  reason: refund.reason || input.note,
353
360
  }));
361
+ await this.lockStockLevelsForModification(ctx, order, input);
354
362
  for (const row of (_a = input.addItems) !== null && _a !== void 0 ? _a : []) {
355
363
  const { productVariantId, quantity } = row;
356
364
  if (quantity < 0) {
@@ -358,7 +366,9 @@ let OrderModifier = class OrderModifier {
358
366
  }
359
367
  const customFields = row.customFields || {};
360
368
  const orderLine = await this.getOrCreateOrderLine(ctx, order, productVariantId, customFields);
361
- const correctedQuantity = await this.constrainQuantityToSaleable(ctx, orderLine.productVariant, quantity);
369
+ // The allocation in updateOrderLineQuantity runs in this transaction, so the check
370
+ // re-reads the rows locked by lockStockLevelsForModification() above.
371
+ const correctedQuantity = await this.constrainQuantityToSaleable(ctx, orderLine.productVariant, quantity, 0, 0, { lockStockLevels: true });
362
372
  if (orderItemsLimit < currentItemsCount + correctedQuantity) {
363
373
  return new generated_graphql_shop_errors_1.OrderLimitError({ maxItems: orderItemsLimit });
364
374
  }
@@ -388,7 +398,8 @@ let OrderModifier = class OrderModifier {
388
398
  const initialLineQuantity = orderLine.quantity;
389
399
  let correctedQuantity = quantity;
390
400
  if (initialLineQuantity < quantity) {
391
- const additionalQuantity = await this.constrainQuantityToSaleable(ctx, orderLine.productVariant, quantity - initialLineQuantity);
401
+ // See the comment on the addItems loop above.
402
+ const additionalQuantity = await this.constrainQuantityToSaleable(ctx, orderLine.productVariant, quantity - initialLineQuantity, 0, 0, { lockStockLevels: true });
392
403
  correctedQuantity = initialLineQuantity + additionalQuantity;
393
404
  }
394
405
  const resultingOrderTotalQuantity = currentItemsCount + correctedQuantity - orderLine.quantity;
@@ -776,6 +787,19 @@ let OrderModifier = class OrderModifier {
776
787
  throw new errors_1.EntityNotFoundError('ProductVariant', productVariantId);
777
788
  }
778
789
  }
790
+ /**
791
+ * modifyOrder allocates, releases and cancels stock in one transaction, visiting the lines in
792
+ * the caller's order. Locking every affected variant up front, in the shared order, means it
793
+ * cannot deadlock with a concurrent modification or settlement.
794
+ */
795
+ async lockStockLevelsForModification(ctx, order, input) {
796
+ var _a, _b;
797
+ const variantIds = [
798
+ ...((_a = input.addItems) !== null && _a !== void 0 ? _a : []).map(row => row.productVariantId),
799
+ ...((_b = input.adjustOrderLines) !== null && _b !== void 0 ? _b : []).map(row => { var _a; return (_a = order.lines.find(line => (0, utils_1.idsAreEqual)(line.id, row.orderLineId))) === null || _a === void 0 ? void 0 : _a.productVariantId; }),
800
+ ].filter((id) => id != null);
801
+ await this.stockLevelService.lockStockLevelsForVariants(ctx, variantIds);
802
+ }
779
803
  };
780
804
  exports.OrderModifier = OrderModifier;
781
805
  exports.OrderModifier = OrderModifier = __decorate([
@@ -793,6 +817,7 @@ exports.OrderModifier = OrderModifier = __decorate([
793
817
  event_bus_2.EventBus,
794
818
  shipping_calculator_1.ShippingCalculator,
795
819
  history_service_1.HistoryService,
796
- translator_service_1.TranslatorService])
820
+ translator_service_1.TranslatorService,
821
+ stock_level_service_1.StockLevelService])
797
822
  ], OrderModifier);
798
823
  //# sourceMappingURL=order-modifier.js.map