@chevre/domain 24.1.0-alpha.43 → 24.1.0-alpha.45

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.
@@ -58,13 +58,7 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
58
58
  $in?: string[];
59
59
  };
60
60
  };
61
- reservedTicket?: {
62
- ticketedSeat?: {
63
- seatNumber?: {
64
- $in?: string[];
65
- };
66
- };
67
- };
61
+ reservedTicket?: never;
68
62
  };
69
63
  };
70
64
  }, options: {
@@ -128,9 +128,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
128
128
  /**
129
129
  * 注文オファーを展開して検索する
130
130
  */
131
- async searchAcceptedOffersByOrderNumber(filter,
132
- // inclusion?: (keyof IAcceptedOffer)[], // 分かりにくいので廃止(2026-05-17~)
133
- options) {
131
+ async searchAcceptedOffersByOrderNumber(filter, options) {
134
132
  /**
135
133
  * unwind前に1ドキュメントを特定するためのstage
136
134
  */
@@ -142,21 +140,11 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
142
140
  /**
143
141
  * unwind後にオファー内容で絞るstage
144
142
  */
145
- const matchStages = [
146
- // { $match: { orderNumber: { $eq: filter.orderNumber.$eq } } }, // matchStagesOneDocumentへ移行(2026-05-12~)
147
- // { $match: { 'project.id': { $eq: filter.project.id.$eq } } }, // matchStagesOneDocumentへ移行(2026-05-12~)
148
- // { $match: { typeOf: { $eq: factory.order.OrderType.Order } } } // matchStagesOneDocumentへ移行(2026-05-12~)
149
- ];
143
+ const matchStages = [];
150
144
  const itemOfferedIdEq = filter.acceptedOffers?.itemOffered?.id?.$eq;
151
145
  if (typeof itemOfferedIdEq === 'string') {
152
146
  matchStages.push({ $match: { 'acceptedOffers.itemOffered.id': { $exists: true, $eq: itemOfferedIdEq } } });
153
147
  }
154
- // const itemOfferedTypeOfIn = filter.acceptedOffers?.itemOffered?.typeOf?.$in;
155
- // if (Array.isArray(itemOfferedTypeOfIn)) {
156
- // matchStages.push({
157
- // $match: { 'acceptedOffers.itemOffered.typeOf': { $exists: true, $in: itemOfferedTypeOfIn } }
158
- // });
159
- // }
160
148
  const resevationForIdIn = filter.acceptedOffers?.itemOffered?.reservationFor?.id?.$in;
161
149
  if (Array.isArray(resevationForIdIn)) {
162
150
  matchStages.push({
@@ -165,14 +153,15 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
165
153
  }
166
154
  });
167
155
  }
168
- const ticketedSeatNumberIn = filter.acceptedOffers?.itemOffered?.reservedTicket?.ticketedSeat?.seatNumber?.$in;
169
- if (Array.isArray(ticketedSeatNumberIn)) {
170
- matchStages.push({
171
- $match: {
172
- 'acceptedOffers.itemOffered.reservedTicket.ticketedSeat.seatNumber': { $exists: true, $in: ticketedSeatNumberIn }
173
- }
174
- });
175
- }
156
+ // 座席番号による検索は廃止(2026-06-01~)
157
+ // const ticketedSeatNumberIn = filter.acceptedOffers?.itemOffered?.reservedTicket?.ticketedSeat?.seatNumber?.$in;
158
+ // if (Array.isArray(ticketedSeatNumberIn)) {
159
+ // matchStages.push({
160
+ // $match: {
161
+ // 'acceptedOffers.itemOffered.reservedTicket.ticketedSeat.seatNumber': { $exists: true, $in: ticketedSeatNumberIn }
162
+ // }
163
+ // });
164
+ // }
176
165
  const aggregate = this.orderModel.aggregate([
177
166
  ...matchStagesOneDocument,
178
167
  {
@@ -183,26 +172,6 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
183
172
  },
184
173
  ...matchStages
185
174
  ]);
186
- // if (Array.isArray(inclusion) && inclusion.length > 0) {
187
- // const specifiedProjection: Record<string, string | 0> = {
188
- // _id: 0
189
- // };
190
- // inclusion.forEach((key) => {
191
- // specifiedProjection[key] = `$acceptedOffers.${key}`;
192
- // });
193
- // aggregate.project(specifiedProjection);
194
- // } else {
195
- // aggregate.project({
196
- // _id: 0,
197
- // itemOffered: '$acceptedOffers.itemOffered',
198
- // priceSpecification: '$acceptedOffers.priceSpecification',
199
- // typeOf: '$acceptedOffers.typeOf',
200
- // id: '$acceptedOffers.id',
201
- // offeredThrough: '$acceptedOffers.offeredThrough',
202
- // name: '$acceptedOffers.name',
203
- // serialNumber: '$acceptedOffers.serialNumber'
204
- // });
205
- // }
206
175
  aggregate.project({
207
176
  _id: 0,
208
177
  itemOffered: '$acceptedOffers.itemOffered',
@@ -216,8 +185,6 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
216
185
  if (typeof filter.limit === 'number' && filter.limit > 0) {
217
186
  const page = (typeof filter.page === 'number' && filter.page > 0) ? filter.page : 1;
218
187
  // support skip -> limit(2026-05-12~)
219
- // aggregate.limit(filter.limit * page)
220
- // .skip(filter.limit * (page - 1));
221
188
  aggregate.skip(filter.limit * (page - 1))
222
189
  .limit(filter.limit);
223
190
  }
@@ -5,7 +5,7 @@ import type { AssetTransactionRepo } from '../../../repo/assetTransaction';
5
5
  import type { AuthorizationRepo } from '../../../repo/authorization';
6
6
  import type { EventRepo } from '../../../repo/event';
7
7
  import type { EventOfferRepo } from '../../../repo/eventOffer';
8
- import { EventSeriesRepo } from '../../../repo/eventSeries';
8
+ import type { EventSeriesRepo } from '../../../repo/eventSeries';
9
9
  import type { IssuerRepo } from '../../../repo/issuer';
10
10
  import type { MemberRepo } from '../../../repo/member';
11
11
  import type { MemberProgramRepo } from '../../../repo/memberProgram';
@@ -71,7 +71,12 @@ interface IAuthorizeOptions {
71
71
  * acceptedOfferのitemOfferedを最小化するかどうか
72
72
  * 2026-05-25~
73
73
  */
74
- useAcceptedOfferItemOfferedMinimized?: boolean;
74
+ useAcceptedOfferItemOfferedMinimized: boolean;
75
+ /**
76
+ * ticketedSeatなしのacceptedOfferを採用するかどうか
77
+ * 2026-06-01~
78
+ */
79
+ useAcceptedOfferNoTicketedSeat: boolean;
75
80
  }
76
81
  /**
77
82
  * 興行オファー承認
@@ -12,11 +12,7 @@ const searchOffersByIds_1 = require("./searchOffersByIds");
12
12
  * 興行オファー承認
13
13
  */
14
14
  function authorize(params, options) {
15
- return async (repos, settings
16
- // credentials: {
17
- // jwt: JWTCredentials;
18
- // }
19
- ) => {
15
+ return async (repos, settings) => {
20
16
  const { noOfferSpecified } = options;
21
17
  const { transaction, event } = await validateCreateRequest(params)(repos);
22
18
  const { acceptedOffers, ticketOffers, unitPriceOffers } = await validateAcceptedOffers({
@@ -51,13 +47,12 @@ function authorize(params, options) {
51
47
  validateEventOfferPeriod: params.validateEventOfferPeriod === true,
52
48
  orderNumber,
53
49
  instrument: params.instrument,
54
- // useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, // discontinue(2024-07-02~)
55
- // stockHoldUntilDaysAfterEventEnd,
56
50
  ...(typeof params.object.broker?.typeOf === 'string') ? { broker: params.object.broker } : undefined
57
51
  }, options)(repos, settings);
58
52
  acceptedOffers4result = processStartReserveResult.acceptedOffers4result;
59
53
  if (!noOfferSpecified) {
60
54
  const useAcceptedOfferItemOfferedMinimized = options.useAcceptedOfferItemOfferedMinimized === true;
55
+ const useAcceptedOfferNoTicketedSeat = options.useAcceptedOfferNoTicketedSeat === true;
61
56
  await (0, any_1.acceptOffer)({
62
57
  orderNumber,
63
58
  project: transaction.project,
@@ -67,7 +62,7 @@ function authorize(params, options) {
67
62
  return {
68
63
  ...acceptOfferNoPriceSpec,
69
64
  itemOffered: (useAcceptedOfferItemOfferedMinimized) // support useAcceptedOfferItemOfferedMinimized(2026-05-25~)
70
- ? minimizeItemOffered(itemOffered)
65
+ ? minimizeItemOffered(itemOffered, { useAcceptedOfferNoTicketedSeat })
71
66
  : itemOffered
72
67
  };
73
68
  })
@@ -92,7 +87,8 @@ function authorize(params, options) {
92
87
  * 注文ドキュメントに保管するitemOfferedを最小化する
93
88
  * 2026-05-25~
94
89
  */
95
- function minimizeItemOffered(itemOffered) {
90
+ function minimizeItemOffered(itemOffered, options) {
91
+ const { useAcceptedOfferNoTicketedSeat } = options;
96
92
  const { id, reservationNumber, typeOf, reservationFor, reservedTicket } = itemOffered;
97
93
  const minimizedReservation = {
98
94
  id: reservationFor.id,
@@ -123,7 +119,8 @@ function minimizeItemOffered(itemOffered) {
123
119
  reservationFor: minimizedReservation,
124
120
  reservedTicket: {
125
121
  typeOf: reservedTicket.typeOf,
126
- ...((typeof reservedTicket.ticketedSeat?.typeOf === 'string') && { ticketedSeat: reservedTicket.ticketedSeat }),
122
+ // useAcceptedOfferNoTicketedSeatでない場合のみ座席保管(2026-06-01~)
123
+ ...((!useAcceptedOfferNoTicketedSeat && typeof reservedTicket.ticketedSeat?.typeOf === 'string') && { ticketedSeat: reservedTicket.ticketedSeat }),
127
124
  ...((typeof reservedTicket.identifier === 'string') && { identifier: reservedTicket.identifier })
128
125
  }
129
126
  };
@@ -65,7 +65,7 @@ function fixOrderAsPurpose(params, transaction) {
65
65
  const movieTickets = transaction.object.paymentMethod.movieTickets;
66
66
  if (Array.isArray(movieTickets) && movieTickets.length > 0) {
67
67
  const reservationForId = movieTickets[0].serviceOutput.reservationFor.id; // イベントIDは決済取引ごとにひとつのみ許可なので、これで問題ない
68
- const seatNumbers = movieTickets.map(({ serviceOutput }) => serviceOutput.reservedTicket.ticketedSeat.seatNumber);
68
+ // const seatNumbers = movieTickets.map(({ serviceOutput }) => serviceOutput.reservedTicket.ticketedSeat.seatNumber);
69
69
  acceptedOffersMovieTicketUsed = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
70
70
  orderNumber: { $eq: orderWithoutAcceptedOffers.orderNumber },
71
71
  project: { id: { $eq: transaction.project.id } },
@@ -74,7 +74,7 @@ function fixOrderAsPurpose(params, transaction) {
74
74
  // typeOf: { $in: [factory.reservationType.EventReservation] }, // EventReservationしか存在しないので不要(2026-05-12~)
75
75
  // movieTicketsに結合されたイベントID,座席コードで絞る
76
76
  reservationFor: { id: { $in: [reservationForId] } },
77
- reservedTicket: { ticketedSeat: { seatNumber: { $in: seatNumbers } } }
77
+ // reservedTicket: { ticketedSeat: { seatNumber: { $in: seatNumbers } } } // 座席番号により絞りは廃止(2026-06-01~)
78
78
  }
79
79
  }
80
80
  }, {
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.43"
94
+ "version": "24.1.0-alpha.45"
95
95
  }