@chevre/domain 24.1.0-alpha.33 → 24.1.0-alpha.35

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.
@@ -18,8 +18,8 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
18
18
  /**
19
19
  * オファー展開の注文検索
20
20
  */
21
- searchWithUnwoundAcceptedOffers(params: factory.order.ISearchConditions, projection: IProjection4searchWithUnwoundAcceptedOffers, _options: {
22
- useItemOfferedByReserve?: boolean;
21
+ searchWithUnwoundAcceptedOffers(params: factory.order.ISearchConditions, projection: IProjection4searchWithUnwoundAcceptedOffers, options: {
22
+ useItemOfferedByReserve: boolean;
23
23
  }): Promise<(factory.order.IOrder & {
24
24
  acceptedOffers: [IAcceptedOffer];
25
25
  _id?: never;
@@ -67,8 +67,8 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
67
67
  };
68
68
  };
69
69
  };
70
- }, _options: {
71
- useItemOfferedByReserve?: boolean;
70
+ }, options: {
71
+ useItemOfferedByReserve: boolean;
72
72
  }): Promise<IAcceptedOffer[]>;
73
73
  /**
74
74
  * 注文オファーをsliceして検索する(2024-01-10~)
@@ -83,8 +83,8 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
83
83
  $eq: string;
84
84
  };
85
85
  };
86
- }, _options: {
87
- useItemOfferedByReserve?: boolean;
86
+ }, options: {
87
+ useItemOfferedByReserve: boolean;
88
88
  }): Promise<ISearchSlicedAcceptedOffersResult>;
89
89
  countByOrderNumber(filter: {
90
90
  orderNumber: {
@@ -19,7 +19,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
19
19
  /**
20
20
  * オファー展開の注文検索
21
21
  */
22
- async searchWithUnwoundAcceptedOffers(params, projection, _options) {
22
+ async searchWithUnwoundAcceptedOffers(params, projection, options) {
23
23
  const conditions = order_2.OrderRepo.CREATE_MONGO_CONDITIONS(params);
24
24
  const aggregate = this.orderModel.aggregate();
25
25
  // unwind->matchでは遅い
@@ -54,6 +54,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
54
54
  // 予約取引を参照(2026-05-17~)
55
55
  const offeredThroughIdentifier = orders.at(0)?.acceptedOffers[0].offeredThrough?.identifier;
56
56
  const useReserveTransaction = offeredThroughIdentifier !== factory_1.factory.service.webAPI.Identifier.COA; // COAでは予約取引を参照しない
57
+ const { useItemOfferedByReserve } = options;
57
58
  if (useReserveTransaction) {
58
59
  const reservationNumbers = [...new Set(orders.map((order) => String(order.acceptedOffers[0].serialNumber)))];
59
60
  let acceptedOffersByReserveTransaction = [];
@@ -72,17 +73,22 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
72
73
  if (priceSpecByReserveTransaction === undefined) {
73
74
  console.error('repo:acceptedOffer: searchWithUnwoundAcceptedOffers: priceSpecByReserveTransaction: undefined!!!', acceptedOffer.itemOffered.id);
74
75
  }
76
+ const itemOfferedByReserve = acceptedOfferByReserveTransaction?.itemOffered;
77
+ // itemOfferedByReserveは必ず存在するはず
78
+ if (itemOfferedByReserve === undefined) {
79
+ console.error('repo:acceptedOffer: searchWithUnwoundAcceptedOffers: itemOfferedByReserve: undefined!!!', acceptedOffer.itemOffered.id);
80
+ }
75
81
  const { priceSpecification: _originalPriceSpec, // 注文ドキュメントのpriceSpecificationはもう採用しない(2026-05-21~)
76
- ...acceptedOfferWithoutPrice } = acceptedOffer;
82
+ itemOffered, ...acceptedOfferWithoutPrice } = acceptedOffer;
77
83
  return {
78
84
  ...order,
79
85
  acceptedOffers: [
80
86
  {
81
87
  ...acceptedOfferWithoutPrice,
82
- ...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }) // 予約取引参照の値で上書き
83
- // ...(priceSpecByReserveTransaction !== undefined)
84
- // ? { priceSpecification: priceSpecByReserveTransaction } // 予約取引参照の値で上書き
85
- // : { priceSpecification } // 万が一予約取引に存在しなければ注文ドキュメントの値を採用
88
+ ...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }), // 予約取引参照の値で上書き
89
+ ...(useItemOfferedByReserve && itemOfferedByReserve !== undefined)
90
+ ? { itemOffered: itemOfferedByReserve } // 予約取引参照の値で上書き(2026-05-25~)
91
+ : { itemOffered }
86
92
  }
87
93
  ]
88
94
  };
@@ -124,7 +130,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
124
130
  */
125
131
  async searchAcceptedOffersByOrderNumber(filter,
126
132
  // inclusion?: (keyof IAcceptedOffer)[], // 分かりにくいので廃止(2026-05-17~)
127
- _options) {
133
+ options) {
128
134
  /**
129
135
  * unwind前に1ドキュメントを特定するためのstage
130
136
  */
@@ -219,12 +225,12 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
219
225
  .option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
220
226
  .exec();
221
227
  // 予約取引を参照(2026-05-18~)
222
- return this.addAcceptedOffersDetails(acceptedOffers);
228
+ return this.addAcceptedOffersDetails(acceptedOffers, options);
223
229
  }
224
230
  /**
225
231
  * 注文オファーをsliceして検索する(2024-01-10~)
226
232
  */
227
- async searchSlicedAcceptedOffersByOrderNumber(filter, _options) {
233
+ async searchSlicedAcceptedOffersByOrderNumber(filter, options) {
228
234
  const aggregate = this.orderModel.aggregate([
229
235
  { $match: { orderNumber: { $eq: filter.orderNumber.$eq } } },
230
236
  { $match: { 'project.id': { $eq: filter.project.id.$eq } } },
@@ -246,7 +252,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
246
252
  const { acceptedOffers, numAcceptedOffers } = result;
247
253
  // 予約取引を参照(2026-05-18~)
248
254
  return {
249
- acceptedOffers: await this.addAcceptedOffersDetails(acceptedOffers),
255
+ acceptedOffers: await this.addAcceptedOffersDetails(acceptedOffers, options),
250
256
  numAcceptedOffers
251
257
  };
252
258
  }
@@ -26,5 +26,7 @@ export declare class AcceptedOfferInReserveRepo {
26
26
  /**
27
27
  * 予約取引からオファー詳細情報を付加する
28
28
  */
29
- protected addAcceptedOffersDetails(acceptedOffers: IAcceptedOffer[]): Promise<IAcceptedOffer[]>;
29
+ protected addAcceptedOffersDetails(acceptedOffers: IAcceptedOffer[], options: {
30
+ useItemOfferedByReserve: boolean;
31
+ }): Promise<IAcceptedOffer[]>;
30
32
  }
@@ -41,7 +41,7 @@ class AcceptedOfferInReserveRepo {
41
41
  /**
42
42
  * 予約取引からオファー詳細情報を付加する
43
43
  */
44
- async addAcceptedOffersDetails(acceptedOffers) {
44
+ async addAcceptedOffersDetails(acceptedOffers, options) {
45
45
  const offeredThroughIdentifier = acceptedOffers.at(0)?.offeredThrough?.identifier;
46
46
  if (offeredThroughIdentifier === factory_1.factory.service.webAPI.Identifier.COA) {
47
47
  // COAでは予約取引を参照しない
@@ -52,6 +52,7 @@ class AcceptedOfferInReserveRepo {
52
52
  if (reservationNumbers.length > 0) {
53
53
  acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
54
54
  }
55
+ const { useItemOfferedByReserve } = options;
55
56
  return acceptedOffers.map((acceptedOffer) => {
56
57
  const acceptedOfferByReserveTransaction = acceptedOffersByReserveTransaction.find(((offer) => offer.itemOffered.id === acceptedOffer.itemOffered.id));
57
58
  // 予約は必ず存在するはず
@@ -63,14 +64,19 @@ class AcceptedOfferInReserveRepo {
63
64
  if (priceSpecByReserveTransaction === undefined) {
64
65
  console.error('repo:acceptedOffer: addAcceptedOffersDetails: priceSpecByReserveTransaction: undefined!!!', acceptedOffer.itemOffered.id);
65
66
  }
67
+ const itemOfferedByReserve = acceptedOfferByReserveTransaction?.itemOffered;
68
+ // itemOfferedByReserveは必ず存在するはず
69
+ if (itemOfferedByReserve === undefined) {
70
+ console.error('repo:acceptedOffer: addAcceptedOffersDetails: itemOfferedByReserve: undefined!!!', acceptedOffer.itemOffered.id);
71
+ }
66
72
  const { priceSpecification: _originalPriceSpec, // 注文ドキュメントのpriceSpecificationはもう採用しない(2026-05-21~)
67
- ...acceptedOfferWithoutPrice } = acceptedOffer;
73
+ itemOffered, ...acceptedOfferWithoutPrice } = acceptedOffer;
68
74
  return {
69
75
  ...acceptedOfferWithoutPrice,
70
- ...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }) // 予約取引参照の値で上書き
71
- // ...(priceSpecByReserveTransaction !== undefined)
72
- // ? { priceSpecification: priceSpecByReserveTransaction } // 予約取引参照の値で上書き
73
- // : { priceSpecification } // 万が一予約取引に存在しなければ注文ドキュメントの値を採用
76
+ ...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }), // 予約取引参照の値で上書き
77
+ ...(useItemOfferedByReserve && itemOfferedByReserve !== undefined)
78
+ ? { itemOffered: itemOfferedByReserve } // 予約取引参照の値で上書き
79
+ : { itemOffered }
74
80
  };
75
81
  });
76
82
  }
@@ -26,6 +26,20 @@ export type IPlacingOrder = Pick<factory.order.IOrder, 'broker' | 'confirmationN
26
26
  */
27
27
  customer?: never;
28
28
  };
29
+ export type IMinimizedReservationFor = Pick<factory.order.IEventAsReservationFor, 'endDate' | 'id' | 'startDate' | 'typeOf'> & {
30
+ location: Pick<factory.order.IEventAsReservationFor['location'], 'branchCode' | 'typeOf'>;
31
+ superEvent: Pick<factory.order.ISuperEvent, 'id' | 'typeOf'> & {
32
+ location: Pick<factory.order.ISuperEvent['location'], 'branchCode' | 'typeOf'>;
33
+ workPerformed: Pick<factory.order.ISuperEvent['workPerformed'], 'identifier' | 'typeOf'>;
34
+ };
35
+ };
36
+ export type IMinimizedItemOffered = Pick<factory.order.IEventReservation, 'id' | 'reservationNumber' | 'typeOf'> & {
37
+ reservedTicket: Pick<factory.order.IReservedTicket, 'identifier' | 'ticketedSeat' | 'typeOf'>;
38
+ reservationFor: IMinimizedReservationFor;
39
+ };
40
+ export type IMinimizedAcceptedOffer = Pick<factory.order.IOptimizedAcceptedOffer, 'id' | 'name' | 'offeredThrough' | 'priceSpecification' | 'serialNumber' | 'typeOf'> & {
41
+ itemOffered: IMinimizedItemOffered;
42
+ };
29
43
  /**
30
44
  * 取引中注文リポジトリ
31
45
  */
@@ -44,14 +58,6 @@ export declare class OrderInTransactionRepo extends AcceptedOfferInReserveRepo {
44
58
  }): Promise<(Omit<factory.order.IAcceptedOffer, 'priceSpecification'> & {
45
59
  priceSpecification?: factory.order.ITicketPriceSpecification;
46
60
  })[]>;
47
- /**
48
- * 取引進行中の注文からacceptedOffersを検索する
49
- */
50
- findAcceptedOffersByOrderNumber(params: {
51
- orderNumber: {
52
- $eq: string;
53
- };
54
- }): Promise<Pick<factory.order.IAcceptedOffer, 'itemOffered' | 'serialNumber'>[]>;
55
61
  /**
56
62
  * 注文を受注する
57
63
  * typeOf: PlaceOrder -> typeOf: Order
@@ -62,7 +68,7 @@ export declare class OrderInTransactionRepo extends AcceptedOfferInReserveRepo {
62
68
  * このメソッドでdocumentが初めて生成される(typeOf:PlaceOrderとして)
63
69
  */
64
70
  acceptOffer(params: Pick<IOrderInTransaction, 'orderNumber' | 'project'> & {
65
- acceptedOffers: (Omit<IAcceptedOffer, 'priceSpecification'> & {
71
+ acceptedOffers: IMinimizedAcceptedOffer[] | (Omit<IAcceptedOffer, 'priceSpecification'> & {
66
72
  /**
67
73
  * COA以外では注文ドキュメントにpriceSpecificationが存在しないのでIFを補完
68
74
  */
@@ -41,32 +41,44 @@ class OrderInTransactionRepo extends acceptedOfferInReserve_1.AcceptedOfferInRes
41
41
  acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
42
42
  }
43
43
  return doc.acceptedOffers.map((acceptedOffer) => {
44
- const priceSpecification = acceptedOffersByReserveTransaction.find((acceptedOfferByReserveTransaction) => acceptedOfferByReserveTransaction.itemOffered.id === acceptedOffer.itemOffered.id)?.priceSpecification;
44
+ const acceptedOfferByReserve = acceptedOffersByReserveTransaction.find((acceptedOfferByReserveTransaction) => acceptedOfferByReserveTransaction.itemOffered.id === acceptedOffer.itemOffered.id);
45
+ const priceSpecification = acceptedOfferByReserve?.priceSpecification;
45
46
  // COA予約でなければ、予約取引の価格は必ず存在するはず(2026-05-20~)
46
47
  if (priceSpecification === undefined) {
47
48
  throw new factory_1.factory.errors.Internal(`findAcceptedOffersWithPriceByOrderNumber: priceSpecification undefined. ${acceptedOffer.itemOffered.id}`);
48
49
  }
50
+ const itemOffered = acceptedOfferByReserve?.itemOffered;
51
+ // COA予約でなければ、予約取引のitemOfferedは必ず存在するはず(2026-05-25~)
52
+ if (itemOffered === undefined) {
53
+ throw new factory_1.factory.errors.Internal(`findAcceptedOffersWithPriceByOrderNumber: itemOffered undefined. ${acceptedOffer.itemOffered.id}`);
54
+ }
49
55
  return {
50
56
  ...acceptedOffer,
57
+ itemOffered,
51
58
  priceSpecification
52
59
  };
53
60
  });
54
61
  }
55
- /**
56
- * 取引進行中の注文からacceptedOffersを検索する
57
- */
58
- async findAcceptedOffersByOrderNumber(params) {
59
- const doc = await this.orderModel.findOne({
60
- orderNumber: { $eq: params.orderNumber.$eq },
61
- typeOf: { $eq: factory_1.factory.transactionType.PlaceOrder }
62
- }, { acceptedOffers: 1 })
63
- .lean()
64
- .exec();
65
- if (doc === null) {
66
- throw new factory_1.factory.errors.NotFound('orderInTransaction');
67
- }
68
- return doc.acceptedOffers;
69
- }
62
+ // /**
63
+ // * 取引進行中の注文からacceptedOffersを検索する
64
+ // */
65
+ // public async findAcceptedOffersByOrderNumber(
66
+ // params: { orderNumber: { $eq: string } }
67
+ // ): Promise<Pick<factory.order.IAcceptedOffer, 'itemOffered' | 'serialNumber'>[]> {
68
+ // const doc = await this.orderModel.findOne<HydratedDocument<Pick<factory.order.IAcceptedOffer, 'itemOffered' | 'serialNumber'>>>(
69
+ // {
70
+ // orderNumber: { $eq: params.orderNumber.$eq },
71
+ // typeOf: { $eq: factory.transactionType.PlaceOrder }
72
+ // },
73
+ // { acceptedOffers: 1 }
74
+ // )
75
+ // .lean<Pick<IOrderInTransaction, 'acceptedOffers'>>()
76
+ // .exec();
77
+ // if (doc === null) {
78
+ // throw new factory.errors.NotFound('orderInTransaction');
79
+ // }
80
+ // return doc.acceptedOffers;
81
+ // }
70
82
  /**
71
83
  * 注文を受注する
72
84
  * typeOf: PlaceOrder -> typeOf: Order
@@ -1,5 +1,5 @@
1
1
  import { factory } from '../../factory';
2
- import type { OrderInTransactionRepo } from '../../repo/orderInTransaction';
2
+ import type { IMinimizedAcceptedOffer, OrderInTransactionRepo } from '../../repo/orderInTransaction';
3
3
  interface IAcceptOfferOperationRepos {
4
4
  orderInTransaction: OrderInTransactionRepo;
5
5
  }
@@ -10,7 +10,7 @@ export declare function acceptOffer(params: {
10
10
  project: {
11
11
  id: string;
12
12
  };
13
- acceptedOffers: (Omit<factory.order.IAcceptedOffer, 'priceSpecification'> & {
13
+ acceptedOffers: IMinimizedAcceptedOffer[] | (Omit<factory.order.IAcceptedOffer, 'priceSpecification'> & {
14
14
  /**
15
15
  * COA以外では注文ドキュメントにpriceSpecificationが存在しないのでIFを補完
16
16
  */
@@ -32,7 +32,7 @@ declare function acceptedOffers2authorizeResult(params: {
32
32
  ticketOffers: factory.product.ITicketOffer[];
33
33
  }): factory.action.authorize.offer.eventService.IResult;
34
34
  type IObjectSubReservation = factory.assetTransaction.reserve.IObjectSubReservation;
35
- export type IResultAcceptedOffer = Omit<factory.order.IAcceptedOffer, 'priceSpecification'> & {
35
+ export type IResultAcceptedOffer = Omit<factory.order.IOptimizedAcceptedOffer, 'priceSpecification'> & {
36
36
  itemOffered: factory.order.IEventReservation;
37
37
  offeredThrough: factory.offer.IOfferedThrough;
38
38
  serialNumber: string;
@@ -305,16 +305,17 @@ function createReservation(params) {
305
305
  const { itemOffered } = params;
306
306
  const event = params.reservationFor;
307
307
  let reservationItem;
308
+ const ticketType = {
309
+ typeOf: itemOffered.reservedTicket.ticketType.typeOf,
310
+ id: itemOffered.reservedTicket.ticketType.id,
311
+ identifier: itemOffered.reservedTicket.ticketType.identifier,
312
+ name: itemOffered.reservedTicket.ticketType.name,
313
+ description: itemOffered.reservedTicket.ticketType.description,
314
+ ...((Array.isArray(itemOffered.reservedTicket.ticketType.additionalProperty)) && { additionalProperty: itemOffered.reservedTicket.ticketType.additionalProperty })
315
+ };
308
316
  const reservedTicket = {
309
317
  typeOf: itemOffered.reservedTicket.typeOf,
310
- ticketType: {
311
- typeOf: itemOffered.reservedTicket.ticketType.typeOf,
312
- id: itemOffered.reservedTicket.ticketType.id,
313
- identifier: itemOffered.reservedTicket.ticketType.identifier,
314
- name: itemOffered.reservedTicket.ticketType.name,
315
- description: itemOffered.reservedTicket.ticketType.description,
316
- additionalProperty: itemOffered.reservedTicket.ticketType.additionalProperty
317
- },
318
+ ticketType,
318
319
  ...(typeof itemOffered.reservedTicket.identifier === 'string')
319
320
  ? { identifier: itemOffered.reservedTicket.identifier }
320
321
  : undefined, // チケット識別子追加(2024-04-15~)
@@ -68,11 +68,10 @@ interface IAuthorizeOptions {
68
68
  */
69
69
  maxReservationGracePeriodInDays: number;
70
70
  /**
71
- * 価格仕様なしのacceptedOfferを採用するかどうか
72
- * 実験的に導入
73
- * 2026-005-19~
71
+ * acceptedOfferのitemOfferedを最小化するかどうか
72
+ * 2026-05-25~
74
73
  */
75
- useAcceptedOfferNoPriceSpec?: boolean;
74
+ useAcceptedOfferItemOfferedMinimized?: boolean;
76
75
  }
77
76
  /**
78
77
  * 興行オファー承認
@@ -56,21 +56,20 @@ function authorize(params, options) {
56
56
  ...(typeof params.object.broker?.typeOf === 'string') ? { broker: params.object.broker } : undefined
57
57
  }, options)(repos, settings);
58
58
  acceptedOffers4result = processStartReserveResult.acceptedOffers4result;
59
- // add orderInTransaction(2024-01-15~)
60
59
  if (!noOfferSpecified) {
61
- const useAcceptedOfferNoPriceSpec = options.useAcceptedOfferNoPriceSpec === true;
60
+ const useAcceptedOfferItemOfferedMinimized = options.useAcceptedOfferItemOfferedMinimized === true;
62
61
  await (0, any_1.acceptOffer)({
63
62
  orderNumber,
64
63
  project: transaction.project,
65
64
  acceptedOffers: acceptedOffers4result.map((acceptOffer4result) => {
66
65
  // support useAcceptedOfferNoPriceSpec(2026-05-19~)
67
- if (useAcceptedOfferNoPriceSpec) {
68
- const { priceSpecification: _priceSpecification, ...acceptOfferNoPriceSpec } = acceptOffer4result;
69
- return acceptOfferNoPriceSpec;
70
- }
71
- else {
72
- return acceptOffer4result;
73
- }
66
+ const { priceSpecification: _priceSpecification, itemOffered, ...acceptOfferNoPriceSpec } = acceptOffer4result;
67
+ return {
68
+ ...acceptOfferNoPriceSpec,
69
+ itemOffered: (useAcceptedOfferItemOfferedMinimized) // support useAcceptedOfferItemOfferedMinimized(2026-05-25~)
70
+ ? minimizeItemOffered(itemOffered)
71
+ : itemOffered
72
+ };
74
73
  })
75
74
  })(repos);
76
75
  }
@@ -89,6 +88,46 @@ function authorize(params, options) {
89
88
  return { id: action.id, result };
90
89
  };
91
90
  }
91
+ /**
92
+ * 注文ドキュメントに保管するitemOfferedを最小化する
93
+ * 2026-05-25~
94
+ */
95
+ function minimizeItemOffered(itemOffered) {
96
+ const { id, reservationNumber, typeOf, reservationFor, reservedTicket } = itemOffered;
97
+ const minimizedReservation = {
98
+ id: reservationFor.id,
99
+ typeOf: reservationFor.typeOf,
100
+ location: {
101
+ branchCode: reservationFor.location.branchCode,
102
+ typeOf: reservationFor.location.typeOf
103
+ },
104
+ superEvent: {
105
+ id: reservationFor.superEvent.id,
106
+ typeOf: reservationFor.superEvent.typeOf,
107
+ location: {
108
+ branchCode: reservationFor.superEvent.location.branchCode,
109
+ typeOf: reservationFor.superEvent.location.typeOf
110
+ },
111
+ workPerformed: {
112
+ identifier: reservationFor.superEvent.workPerformed.identifier,
113
+ typeOf: reservationFor.superEvent.workPerformed.typeOf
114
+ }
115
+ },
116
+ startDate: reservationFor.startDate,
117
+ endDate: reservationFor.endDate
118
+ };
119
+ return {
120
+ id,
121
+ reservationNumber,
122
+ typeOf,
123
+ reservationFor: minimizedReservation,
124
+ reservedTicket: {
125
+ typeOf: reservedTicket.typeOf,
126
+ ...((typeof reservedTicket.ticketedSeat?.typeOf === 'string') && { ticketedSeat: reservedTicket.ticketedSeat }),
127
+ ...((typeof reservedTicket.identifier === 'string') && { identifier: reservedTicket.identifier })
128
+ }
129
+ };
130
+ }
92
131
  function validateCreateRequest(params) {
93
132
  return async (repos) => {
94
133
  const transaction = await repos.placeOrder.findPlaceOrderInProgressById({
@@ -96,7 +96,9 @@ function deleteReservationsByOrder(order) {
96
96
  acceptedOffers: {
97
97
  // itemOffered: { typeOf: { $in: [factory.reservationType.EventReservation] } }
98
98
  }
99
- }, {} // 予約取引参照(2026-05-18~)
99
+ }, {
100
+ useItemOfferedByReserve: true // 2026-05-25~
101
+ } // 予約取引参照(2026-05-18~)
100
102
  );
101
103
  const reservationIds = acceptedOffers.map((o) => String(o.itemOffered.id));
102
104
  if (reservationIds.length > 0) {
@@ -80,7 +80,10 @@ function createPlacingOrderFromExistingTransaction(params) {
80
80
  .map(({ instrument }) => String(instrument.transactionNumber));
81
81
  try {
82
82
  // すでにtypeOf: Orderに変更済の場合acceptedOffersは空になるが、そもそもorderedItemはその後上書きされないので、空のまま処理して問題なし
83
- acceptedOffers = (await repos.orderInTransaction.findAcceptedOffersByOrderNumber({ orderNumber: { $eq: orderNumber } }))
83
+ acceptedOffers = (await repos.orderInTransaction.findAcceptedOffersWithPriceByOrderNumber({
84
+ orderNumber,
85
+ project: { id: params.project.id }
86
+ }))
84
87
  .filter(({ serialNumber }) => typeof serialNumber === 'string' && serialNumbers.includes(serialNumber));
85
88
  }
86
89
  catch (error) {
@@ -101,7 +101,9 @@ function sendOrder(params) {
101
101
  $slice: [offerIndexBase, limit],
102
102
  orderNumber: { $eq: order.orderNumber },
103
103
  project: { id: { $eq: order.project.id } }
104
- }, {} // 予約取引参照(2026-05-18~)
104
+ }, {
105
+ useItemOfferedByReserve: true // 2026-05-25~
106
+ } // 予約取引参照(2026-05-18~)
105
107
  );
106
108
  acceptedOffers = searchSlicedAcceptedOffersResult.acceptedOffers;
107
109
  debug('delivering...', order.orderNumber, acceptedOffers.map((offer) => `${offer.itemOffered.id}`), // eslint-disable-line @typescript-eslint/no-explicit-any
@@ -39,7 +39,9 @@ function findByCode(params) {
39
39
  // typeOf?: { $in?: factory.order.IItemOffered['typeOf'][] };
40
40
  }
41
41
  }
42
- }, {} // 予約取引参照(2026-05-18~)
42
+ }, {
43
+ useItemOfferedByReserve: true // 2026-05-25~
44
+ } // 予約取引参照(2026-05-18~)
43
45
  )).shift();
44
46
  if (acceptedOffer === undefined) {
45
47
  throw new factory_1.factory.errors.NotFound('acceptedOffer');
@@ -16,7 +16,9 @@ function searchByOrder(params) {
16
16
  // typeOf: { $in: [reservationType] }
17
17
  }
18
18
  }
19
- }, {} // 予約取引参照(2026-05-18~)
19
+ }, {
20
+ useItemOfferedByReserve: true // 2026-05-25~
21
+ } // 予約取引参照(2026-05-18~)
20
22
  );
21
23
  const reservationIds = acceptedOffers.map((offer) => {
22
24
  if (offer.itemOffered.typeOf === reservationType) {
@@ -137,7 +137,9 @@ function fixOrderAsPurpose(params) {
137
137
  const acceptedOffers = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
138
138
  orderNumber: { $eq: order.orderNumber },
139
139
  project: { id: { $eq: params.project.id } }
140
- }, {} // 予約取引参照(2026-05-18~)
140
+ }, {
141
+ useItemOfferedByReserve: true // 2026-05-25~
142
+ } // 予約取引参照(2026-05-18~)
141
143
  );
142
144
  return {
143
145
  ...order,
@@ -77,7 +77,9 @@ function fixOrderAsPurpose(params, transaction) {
77
77
  reservedTicket: { ticketedSeat: { seatNumber: { $in: seatNumbers } } }
78
78
  }
79
79
  }
80
- }, {} // 予約取引参照(2026-05-18~)
80
+ }, {
81
+ useItemOfferedByReserve: true // 2026-05-25~
82
+ } // 予約取引参照(2026-05-18~)
81
83
  );
82
84
  }
83
85
  return {
@@ -144,7 +144,9 @@ function fixOrders(params) {
144
144
  const acceptedOffers = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
145
145
  orderNumber: { $eq: params.object.order[0].orderNumber },
146
146
  project: { id: { $eq: params.project.id } }
147
- }, {} // 予約取引参照(2026-05-18~)
147
+ }, {
148
+ useItemOfferedByReserve: true // 2026-05-25~
149
+ } // 予約取引参照(2026-05-18~)
148
150
  );
149
151
  return { acceptedOffers, eventIds, offerIds, orders };
150
152
  };
@@ -22,7 +22,9 @@ function validateOrder(params) {
22
22
  const acceptedOffers = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
23
23
  orderNumber: { $eq: params.orderNumber },
24
24
  project: { id: { $eq: params.project.id } }
25
- }, {} // 予約取引参照(2026-05-18~)
25
+ }, {
26
+ useItemOfferedByReserve: true // 2026-05-25~
27
+ } // 予約取引参照(2026-05-18~)
26
28
  );
27
29
  let payTransactions = [];
28
30
  if (order.paymentMethods.length > 0) {
package/package.json CHANGED
@@ -91,5 +91,5 @@
91
91
  "postversion": "git push origin --tags",
92
92
  "prepublishOnly": "npm run clean && npm run build"
93
93
  },
94
- "version": "24.1.0-alpha.33"
94
+ "version": "24.1.0-alpha.35"
95
95
  }