@chevre/domain 21.37.0-alpha.5 → 21.37.0-alpha.7

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.
@@ -226,15 +226,15 @@ const indexes = [
226
226
  }
227
227
  }
228
228
  ],
229
- [
230
- { 'object.acceptedOffer.itemOffered.serviceOutput.reservedTicket.ticketedSeat.seatNumber': 1, startDate: -1 },
231
- {
232
- name: 'searchByObjectAcceptedOfferItemOfferedServiceOutputSeatNumber',
233
- partialFilterExpression: {
234
- 'object.acceptedOffer.itemOffered.serviceOutput.reservedTicket.ticketedSeat.seatNumber': { $exists: true }
235
- }
236
- }
237
- ],
229
+ // [
230
+ // { 'object.acceptedOffer.itemOffered.serviceOutput.reservedTicket.ticketedSeat.seatNumber': 1, startDate: -1 },
231
+ // {
232
+ // name: 'searchByObjectAcceptedOfferItemOfferedServiceOutputSeatNumber',
233
+ // partialFilterExpression: {
234
+ // 'object.acceptedOffer.itemOffered.serviceOutput.reservedTicket.ticketedSeat.seatNumber': { $exists: true }
235
+ // }
236
+ // }
237
+ // ], // discontinue(2024-07-02~)
238
238
  [
239
239
  { 'object.orderNumber': 1, startDate: -1 },
240
240
  {
@@ -60,10 +60,13 @@ const schemaOptions = {
60
60
  writeConcern: writeConcern_1.writeConcern,
61
61
  strict: true,
62
62
  strictQuery: false,
63
- timestamps: {
64
- createdAt: 'createdAt',
65
- updatedAt: 'updatedAt'
66
- },
63
+ // discontinue(2024-07-02~)
64
+ // timestamps: {
65
+ // createdAt: 'createdAt',
66
+ // updatedAt: 'updatedAt'
67
+ // },
68
+ timestamps: false,
69
+ versionKey: false,
67
70
  toJSON: {
68
71
  getters: false,
69
72
  virtuals: false,
@@ -15,7 +15,6 @@ export declare function createStartParams(params: factory.assetTransaction.reser
15
15
  id: string;
16
16
  };
17
17
  reservationNumber: string;
18
- useHoldStockByTransactionNumber: boolean;
19
18
  event: IMinimizedIndividualEvent<factory.eventType.Event | factory.eventType.ScreeningEvent>;
20
19
  }): factory.assetTransaction.IStartParams<factory.assetTransactionType.Reserve> & {
21
20
  object: IObject;
@@ -29,7 +28,9 @@ export declare function createPointAward(params: {
29
28
  reservation: {
30
29
  id: string;
31
30
  };
32
- assetTransaction: factory.assetTransaction.reserve.ITransaction;
31
+ project: {
32
+ id: string;
33
+ };
33
34
  }): factory.action.transfer.moneyTransfer.IPointAward | undefined;
34
35
  export declare function createReservedTicket(params: {
35
36
  id: string;
@@ -43,7 +44,6 @@ export declare function createReservedTicket(params: {
43
44
  screeningRoomSections?: factory.place.screeningRoomSection.IPlace[];
44
45
  availableSeatOffers: factory.place.seat.IPlaceWithOffer[];
45
46
  ticketOffer: factory.product.ITicketOffer;
46
- transaction: factory.assetTransaction.ITransaction<factory.assetTransactionType.Reserve>;
47
47
  }): factory.reservation.ITicket;
48
48
  export declare function validateAppliesToMovieTicket(params: {
49
49
  availableOffer: factory.unitPriceOffer.IUnitPriceOffer;
@@ -94,18 +94,3 @@ export declare function createPotentialActions(params: {
94
94
  potentialActions: factory.assetTransaction.reserve.IPotentialActions;
95
95
  underName?: factory.reservation.IUnderName<factory.reservationType.EventReservation>;
96
96
  };
97
- export declare function createMoneyTransferActions(params: {
98
- acceptedOffer?: factory.assetTransaction.reserve.IAcceptedOffer4object;
99
- reservation: Pick<factory.assetTransaction.reserve.IObjectSubReservation, 'reservedTicket'>;
100
- transaction: factory.assetTransaction.ITransaction<factory.assetTransactionType.Reserve>;
101
- underName?: factory.reservation.IUnderName<factory.reservationType.EventReservation>;
102
- }): import("@chevre/factory/lib/action/transfer/moneyTransfer").IAttributes[];
103
- export interface IPotentialCancelAction extends factory.action.cancel.reservation.IAttributes {
104
- purpose: {
105
- id: string;
106
- typeOf: factory.assetTransactionType.Reserve;
107
- };
108
- }
109
- export declare function createCancelPendingReservationAction(params: {
110
- transaction: factory.assetTransaction.ITransaction<factory.assetTransactionType.Reserve>;
111
- }): IPotentialCancelAction | undefined;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCancelPendingReservationAction = exports.createMoneyTransferActions = exports.createPotentialActions = exports.createReservation = exports.createIssuedThrough = exports.createReservationFor = exports.createAdditionalTicketText = exports.createAdditionalProperty = exports.validateAppliesToMovieTicket = exports.createReservedTicket = exports.createPointAward = exports.createStartParams = void 0;
3
+ exports.createPotentialActions = exports.createReservation = exports.createIssuedThrough = exports.createReservationFor = exports.createAdditionalTicketText = exports.createAdditionalProperty = exports.validateAppliesToMovieTicket = exports.createReservedTicket = exports.createPointAward = exports.createStartParams = void 0;
4
4
  /**
5
5
  * 予約取引ファクトリー
6
6
  */
@@ -21,9 +21,7 @@ function createStartParams(params) {
21
21
  const { issuedThrough } = createIssuedThrough({ reservationFor: params.event });
22
22
  const reservationPackage = Object.assign({ issuedThrough,
23
23
  provider,
24
- reservationFor, reservationNumber: reservationNumber, reservationStatus: factory.reservationStatusType.ReservationPending,
25
- // trueで固定(2023-07-19~)
26
- disablePendingReservations: true, useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, typeOf: factory.reservationType.ReservationPackage }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined);
24
+ reservationFor, reservationNumber: reservationNumber, reservationStatus: factory.reservationStatusType.ReservationPending, disablePendingReservations: true, useHoldStockByTransactionNumber: true, typeOf: factory.reservationType.ReservationPackage }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined);
27
25
  return {
28
26
  project: { id: params.project.id, typeOf: factory.organizationType.Project },
29
27
  typeOf: factory.assetTransactionType.Reserve,
@@ -53,8 +51,8 @@ function createPointAward(params) {
53
51
  && typeof pointAwardToLocationIssuedThroughId === 'string') {
54
52
  // ここで識別子を作成する(入金のユニークネスが保証される)
55
53
  const purposeIdentifier = (0, accountTransactionIdentifier_1.createPointAwardPurposeIdentifier4reservation)({
56
- assetTransaction: { typeOf: params.assetTransaction.typeOf },
57
- project: { id: params.assetTransaction.project.id },
54
+ assetTransaction: { typeOf: factory.assetTransactionType.Reserve },
55
+ project: { id: params.project.id },
58
56
  reservation: { id: params.reservation.id },
59
57
  toLocation: { identifier: pointAwardToLocationIdentifier }
60
58
  });
@@ -584,75 +582,3 @@ function ordre2reservationUnderName(params) {
584
582
  underName: createReservationUnderName({ order: params.order })
585
583
  };
586
584
  }
587
- function createMoneyTransferActions(params) {
588
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
589
- const pointAward = (_b = (_a = params.acceptedOffer) === null || _a === void 0 ? void 0 : _a.itemOffered) === null || _b === void 0 ? void 0 : _b.pointAward;
590
- const moneyTransfer = [];
591
- // ポイント特典があれば適用
592
- const pointAwardToLocationIdentifier = (_c = pointAward === null || pointAward === void 0 ? void 0 : pointAward.toLocation) === null || _c === void 0 ? void 0 : _c.identifier;
593
- const pointAwardToLocationTypeOf = (_d = pointAward === null || pointAward === void 0 ? void 0 : pointAward.toLocation) === null || _d === void 0 ? void 0 : _d.typeOf;
594
- if (typeof ((_e = pointAward === null || pointAward === void 0 ? void 0 : pointAward.amount) === null || _e === void 0 ? void 0 : _e.value) === 'number'
595
- && typeof pointAwardToLocationIdentifier === 'string'
596
- && typeof pointAwardToLocationTypeOf === 'string') {
597
- const fromLocation = {
598
- typeOf: (typeof ((_f = params.reservation.reservedTicket.issuedBy) === null || _f === void 0 ? void 0 : _f.typeOf) === 'string')
599
- ? params.reservation.reservedTicket.issuedBy.typeOf
600
- : params.transaction.typeOf,
601
- name: (typeof ((_g = params.reservation.reservedTicket.issuedBy) === null || _g === void 0 ? void 0 : _g.name) === 'string')
602
- ? params.reservation.reservedTicket.issuedBy.name
603
- : params.transaction.id
604
- };
605
- const toLocation = {
606
- identifier: pointAwardToLocationIdentifier,
607
- typeOf: factory.permit.PermitType.Permit,
608
- issuedThrough: { id: String((_j = (_h = pointAward.toLocation) === null || _h === void 0 ? void 0 : _h.issuedThrough) === null || _j === void 0 ? void 0 : _j.id) }
609
- };
610
- const recipient = {
611
- typeOf: (typeof ((_k = params.underName) === null || _k === void 0 ? void 0 : _k.typeOf) === 'string')
612
- ? (_l = params.underName) === null || _l === void 0 ? void 0 : _l.typeOf
613
- : factory.personType.Person,
614
- id: (typeof ((_m = params.underName) === null || _m === void 0 ? void 0 : _m.id) === 'string')
615
- ? (_o = params.underName) === null || _o === void 0 ? void 0 : _o.id
616
- : '',
617
- name: String((_p = params.underName) === null || _p === void 0 ? void 0 : _p.name)
618
- };
619
- moneyTransfer.push(Object.assign(Object.assign({ project: params.transaction.project, typeOf: factory.actionType.MoneyTransfer, agent: params.transaction.project, recipient, object: {
620
- typeOf: factory.account.transactionType.Deposit
621
- }, purpose: Object.assign({ typeOf: params.transaction.typeOf, id: params.transaction.id }, (typeof ((_q = pointAward.purpose) === null || _q === void 0 ? void 0 : _q.identifier) === 'string') ? { identifier: pointAward.purpose.identifier } : undefined), amount: {
622
- typeOf: 'MonetaryAmount',
623
- value: (_r = pointAward.amount) === null || _r === void 0 ? void 0 : _r.value,
624
- currency: (_s = pointAward.amount) === null || _s === void 0 ? void 0 : _s.currency
625
- }, fromLocation: fromLocation, toLocation: toLocation }, (typeof pointAward.description === 'string') ? { description: pointAward.description } : undefined), (pointAward.recipient !== undefined) ? { recipient: pointAward.recipient } : undefined));
626
- }
627
- return moneyTransfer;
628
- }
629
- exports.createMoneyTransferActions = createMoneyTransferActions;
630
- function createCancelPendingReservationAction(params) {
631
- const transaction = params.transaction;
632
- const pendingReservations = (Array.isArray(transaction.object.subReservation)) ? transaction.object.subReservation : [];
633
- let cancelActionAttributes;
634
- if (pendingReservations.length > 0) {
635
- const reservationFor = transaction.object.reservationFor;
636
- if (reservationFor === undefined) {
637
- throw new factory.errors.NotFound('transaction.object.reservationFor');
638
- }
639
- // ReservationPackageに対応(2022-12-23~)
640
- const reservationPackage = {
641
- typeOf: factory.reservationType.ReservationPackage,
642
- reservationNumber: transaction.transactionNumber,
643
- reservationFor: { typeOf: reservationFor.typeOf, id: String(reservationFor.id) },
644
- reservationStatus: (typeof params.transaction.object.reservationStatus === 'string')
645
- ? params.transaction.object.reservationStatus
646
- : factory.reservationStatusType.ReservationPending
647
- };
648
- cancelActionAttributes = {
649
- project: transaction.project,
650
- typeOf: factory.actionType.CancelAction,
651
- purpose: { typeOf: transaction.typeOf, id: transaction.id },
652
- agent: transaction.project,
653
- object: reservationPackage
654
- };
655
- }
656
- return cancelActionAttributes;
657
- }
658
- exports.createCancelPendingReservationAction = createCancelPendingReservationAction;
@@ -28,7 +28,6 @@ export interface IStartOperationRepos {
28
28
  productOffer: ProductOfferRepo;
29
29
  priceSpecification: PriceSpecificationRepo;
30
30
  project: ProjectRepo;
31
- reservation: ReservationRepo;
32
31
  seat: SeatRepo;
33
32
  task: TaskRepo;
34
33
  assetTransaction: AssetTransactionRepo;
@@ -45,12 +44,10 @@ export interface IAddReservationsOperationRepos {
45
44
  product: ProductRepo;
46
45
  productOffer: ProductOfferRepo;
47
46
  priceSpecification: PriceSpecificationRepo;
48
- reservation: ReservationRepo;
49
47
  seat: SeatRepo;
50
48
  task: TaskRepo;
51
49
  assetTransaction: AssetTransactionRepo;
52
50
  }
53
- export type IAddReservationsOperation<T> = (repos: IAddReservationsOperationRepos) => Promise<T>;
54
51
  export type ICancelOperation<T> = (repos: {
55
52
  action: ActionRepo;
56
53
  stockHolder: StockHolderRepo;
@@ -105,7 +102,6 @@ type IStartParams = factory.assetTransaction.reserve.IStartParamsWithoutDetail &
105
102
  * 取引開始
106
103
  */
107
104
  export declare function start(params: IStartParams & {
108
- useHoldStockByTransactionNumber: boolean;
109
105
  stockHoldUntilDaysAfterEventEnd: number;
110
106
  }): IStartOperation<{
111
107
  transaction: Pick<factory.assetTransaction.ITransaction<factory.assetTransactionType.Reserve>, 'id'>;
@@ -31,10 +31,9 @@ function start(params) {
31
31
  return (repos) => __awaiter(this, void 0, void 0, function* () {
32
32
  var _a, _b, _c, _d;
33
33
  const now = new Date();
34
- // 自動発行廃止(2022-05-17~)
35
34
  const reservationNumber = params.transactionNumber;
36
35
  if (typeof reservationNumber !== 'string' || reservationNumber.length === 0) {
37
- throw new factory.errors.ArgumentNull('transactionNumber');
36
+ throw new factory.errors.ArgumentNull('transactionNumber'); // 自動発行廃止(2022-05-17~)
38
37
  }
39
38
  // eventをfix
40
39
  const reservationForId = (_a = params.object.reservationFor) === null || _a === void 0 ? void 0 : _a.id;
@@ -59,18 +58,10 @@ function start(params) {
59
58
  });
60
59
  const startParams = (0, factory_1.createStartParams)(Object.assign(Object.assign({}, params), { provider: { id: event.organizer.id }, reservationNumber,
61
60
  event }));
62
- // 取引作成
63
- let transaction;
64
- try {
65
- transaction = yield repos.assetTransaction.start(startParams);
66
- }
67
- catch (error) {
68
- throw error;
69
- }
70
- let objectSubReservations = [];
71
- const addReservationsResult = yield addReservations({
72
- // id: transaction.id,
73
- transaction,
61
+ // objectに必要な情報をそろえる
62
+ const { acceptedOffers4transactionObject, objectSubReservations } = yield createObjectAttributes({
63
+ reservationFor: startParams.object.reservationFor,
64
+ transaction: { transactionNumber: reservationNumber },
74
65
  now,
75
66
  object: params.object,
76
67
  event,
@@ -80,8 +71,19 @@ function start(params) {
80
71
  validateAppliesToMovieTicket: params.validateAppliesToMovieTicket,
81
72
  stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd
82
73
  })(repos);
74
+ // 取引作成
75
+ const transaction = yield repos.assetTransaction.start(startParams);
76
+ // let objectSubReservations: IObjectSubReservation[] = [];
77
+ // const addReservationsResult = await addReservations({
78
+ yield addReservations({
79
+ reservationFor: startParams.object.reservationFor,
80
+ transaction: { id: transaction.id, transactionNumber: reservationNumber },
81
+ event,
82
+ stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd,
83
+ acceptedOffers4transactionObject, objectSubReservations
84
+ })(repos);
83
85
  // transaction = addReservationsResult.transaction;
84
- objectSubReservations = addReservationsResult.objectSubReservations;
86
+ // objectSubReservations = addReservationsResult.objectSubReservations;
85
87
  return {
86
88
  transaction: { id: transaction.id },
87
89
  objectSubReservations,
@@ -91,19 +93,12 @@ function start(params) {
91
93
  });
92
94
  }
93
95
  exports.start = start;
94
- /**
95
- * 予約追加
96
- */
97
- function addReservations(params) {
98
- // tslint:disable-next-line:max-func-body-length
96
+ function createObjectAttributes(params) {
99
97
  return (repos) => __awaiter(this, void 0, void 0, function* () {
100
98
  var _a;
101
- // const now = new Date();
102
- // const transaction = await repos.assetTransaction.findById({ typeOf: factory.assetTransactionType.Reserve, id: params.id });
103
- const now = params.now;
104
- const transaction = params.transaction;
99
+ const { event, now } = params;
100
+ const reservationNumber = params.transaction.transactionNumber;
105
101
  const acceptedOffers = (Array.isArray(params.object.acceptedOffer)) ? params.object.acceptedOffer : [];
106
- const event = params.event;
107
102
  if (event.typeOf !== factory.eventType.ScreeningEvent && event.typeOf !== factory.eventType.Event) {
108
103
  throw new factory.errors.Argument('object.reservationFor.id', `invalid event type ${event.typeOf}`);
109
104
  }
@@ -137,33 +132,34 @@ function addReservations(params) {
137
132
  availableOffers = searchEventTicketOffersResult.unitPriceOffers;
138
133
  }
139
134
  const availableSeatOffers = yield searchAvailableSeatOffers({ acceptedOffers, event })(repos);
140
- // 仮予約作成
141
- const { acceptedOffers4transactionObject, objectSubReservations } = yield createAcceptedOffers4transactionObject({
135
+ return createAcceptedOffers4transactionObject({
142
136
  acceptedOffers, ticketOffers, availableOffers, now,
143
- event, availableSeatOffers, transaction,
137
+ event, availableSeatOffers, reservationNumber,
144
138
  availableAtOrFrom: params.availableAtOrFrom,
145
139
  validateAppliesToMovieTicket: params.validateAppliesToMovieTicket
146
140
  })(repos);
147
- // const reservationFor = createReservationFor(event, true);
148
- // const { issuedThrough } = createIssuedThrough({ reservationFor: event });
149
- const reservationFor = transaction.object.reservationFor;
150
- if (reservationFor === undefined) {
151
- // 必ずstart時に保管されているはず
152
- throw new factory.errors.Internal('transaction.object.reservationFor undefined unexpectedly');
153
- }
141
+ });
142
+ }
143
+ /**
144
+ * 予約追加
145
+ */
146
+ function addReservations(params) {
147
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
148
+ const reservationNumber = params.transaction.transactionNumber;
149
+ const { event, reservationFor, acceptedOffers4transactionObject, objectSubReservations } = params;
154
150
  // 取引に予約追加
155
151
  let lockedOfferRateLimitKeys = [];
156
152
  try {
157
153
  lockedOfferRateLimitKeys = yield processLockOfferRateLimit({
158
154
  reservations: objectSubReservations,
159
155
  reservationFor,
160
- reservationNumber: transaction.object.reservationNumber
156
+ reservationNumber
161
157
  })(repos);
162
158
  // 上書きの必要なし(2024-07-01~)
163
159
  // transaction = await repos.assetTransaction.addReservations({
164
160
  yield repos.assetTransaction.addReservations({
165
161
  typeOf: factory.assetTransactionType.Reserve,
166
- id: transaction.id,
162
+ id: params.transaction.id,
167
163
  object: {
168
164
  acceptedOffer: acceptedOffers4transactionObject,
169
165
  // issuedThroughを追加(2023-06-05~)
@@ -178,7 +174,7 @@ function addReservations(params) {
178
174
  yield Promise.all(objectSubReservations.map((reservation) => __awaiter(this, void 0, void 0, function* () {
179
175
  yield (0, cancelReservation_1.processUnlockOfferRateLimit)({
180
176
  reservation: {
181
- reservationNumber: transaction.object.reservationNumber,
177
+ reservationNumber,
182
178
  reservedTicket: reservation.reservedTicket
183
179
  },
184
180
  reservationFor
@@ -193,15 +189,15 @@ function addReservations(params) {
193
189
  event: event,
194
190
  reservations: objectSubReservations,
195
191
  transaction: {
196
- id: transaction.id,
197
- transactionNumber: transaction.transactionNumber,
198
- object: { useHoldStockByTransactionNumber: transaction.object.useHoldStockByTransactionNumber === true }
192
+ id: params.transaction.id,
193
+ transactionNumber: params.transaction.transactionNumber
194
+ // object: { useHoldStockByTransactionNumber: transaction.object.useHoldStockByTransactionNumber === true }
199
195
  },
200
196
  stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd
201
197
  })(repos);
202
198
  // ストックホルダー処理(stockHolderで残席数を集計しているので必要)
203
- yield onReservationsCreated({ event, transaction: { transactionNumber: transaction.transactionNumber } })(repos);
204
- return { objectSubReservations };
199
+ yield onReservationsCreated({ event, transaction: { transactionNumber: reservationNumber } })(repos);
200
+ // return { objectSubReservations };
205
201
  });
206
202
  }
207
203
  /**
@@ -313,7 +309,8 @@ function validateEvent(params) {
313
309
  function createAcceptedOffers4transactionObject(params) {
314
310
  return (repos) => __awaiter(this, void 0, void 0, function* () {
315
311
  // 予約番号
316
- const reservationNumber = params.transaction.object.reservationNumber;
312
+ // const reservationNumber = params.transaction.object.reservationNumber;
313
+ const reservationNumber = params.reservationNumber;
317
314
  if (typeof reservationNumber !== 'string') {
318
315
  throw new factory.errors.Internal('Reservation number undefined');
319
316
  }
@@ -328,12 +325,12 @@ function createAcceptedOffers4transactionObject(params) {
328
325
  }
329
326
  const reservationId = `${reservationNumber}-${reservationIndex}`;
330
327
  // 入金先検証
331
- yield validatePointAward({ project: { id: params.transaction.project.id }, acceptedOffer })(repos);
328
+ yield validatePointAward({ project: { id: params.event.project.id }, acceptedOffer })(repos);
332
329
  const pointAward = (0, factory_1.createPointAward)({
330
+ project: { id: params.event.project.id },
333
331
  acceptedOffer: acceptedOffer,
334
332
  offer: ticketOffer,
335
- reservation: { id: reservationId },
336
- assetTransaction: params.transaction
333
+ reservation: { id: reservationId }
337
334
  });
338
335
  // acceptedOffers4transactionObjectには必要な情報のみ保管する
339
336
  acceptedOffers4transactionObject.push({
@@ -349,7 +346,8 @@ function createReservations4transactionObject(params) {
349
346
  return (repos) => __awaiter(this, void 0, void 0, function* () {
350
347
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
351
348
  // 予約番号
352
- const reservationNumber = params.transaction.object.reservationNumber;
349
+ // const reservationNumber = params.transaction.object.reservationNumber;
350
+ const reservationNumber = params.reservationNumber;
353
351
  if (typeof reservationNumber !== 'string') {
354
352
  throw new factory.errors.Internal('Reservation number undefined');
355
353
  }
@@ -377,7 +375,7 @@ function createReservations4transactionObject(params) {
377
375
  });
378
376
  const programMembershipUsed = yield validateProgramMembershipUsed({
379
377
  acceptedOffer,
380
- project: params.transaction.project
378
+ project: { id: params.event.project.id }
381
379
  })(repos);
382
380
  // チケット作成
383
381
  const reservedTicket = (0, factory_1.createReservedTicket)({
@@ -388,8 +386,7 @@ function createReservations4transactionObject(params) {
388
386
  reservationFor: { id: params.event.id },
389
387
  reservedSeatsOnly,
390
388
  availableSeatOffers: params.availableSeatOffers,
391
- ticketOffer: ticketOffer,
392
- transaction: params.transaction
389
+ ticketOffer: ticketOffer
393
390
  });
394
391
  const additionalTicketText = (0, factory_1.createAdditionalTicketText)({ acceptedOffer, reservedTicket });
395
392
  const additionalProperty = (0, factory_1.createAdditionalProperty)({ acceptedOffer });
@@ -422,7 +419,7 @@ function createReservations4transactionObject(params) {
422
419
  // アドオンオファー検索(2023-03-02~)
423
420
  availableAddOns = yield searchAvailableAddOns({
424
421
  ids: acceptedAddOnsParams.map((acceptedAddOn) => String(acceptedAddOn.id)),
425
- project: { id: params.transaction.project.id },
422
+ project: { id: params.event.project.id },
426
423
  ticketOffer,
427
424
  availableAtOrFrom: params.availableAtOrFrom
428
425
  })(repos);
@@ -474,12 +471,8 @@ function createReservations4transactionObject(params) {
474
471
  }
475
472
  const subReservation = (_j = (_h = acceptedOffer.itemOffered) === null || _h === void 0 ? void 0 : _h.serviceOutput) === null || _j === void 0 ? void 0 : _j.subReservation;
476
473
  reservations.push((0, factory_1.createReservation)({
477
- project: params.transaction.project,
474
+ project: { id: params.event.project.id, typeOf: factory.organizationType.Project },
478
475
  id: reservationId,
479
- // reserveDate: params.now,
480
- // agent: params.transaction.agent,
481
- // broker: params.transaction.object.broker,
482
- // reservationNumber: reservationNumber,
483
476
  reservationFor: params.event,
484
477
  reservedTicket: reservedTicket,
485
478
  additionalProperty: additionalProperty,
@@ -775,7 +768,7 @@ function processLockOfferRateLimit(params) {
775
768
  */
776
769
  function processLockSeats(params) {
777
770
  return (repos) => __awaiter(this, void 0, void 0, function* () {
778
- var _a, _b, _c, _d, _e;
771
+ var _a, _b, _c, _d;
779
772
  const offers = [];
780
773
  params.reservations.forEach((r) => {
781
774
  var _a, _b;
@@ -820,12 +813,13 @@ function processLockSeats(params) {
820
813
  .add(params.stockHoldUntilDaysAfterEventEnd, 'days')
821
814
  .toDate();
822
815
  // holder:取引番号に対応(2023-06-05~)
823
- let holder = params.transaction.id;
824
- if (((_a = params.transaction.object) === null || _a === void 0 ? void 0 : _a.useHoldStockByTransactionNumber) === true) {
825
- holder = params.transaction.transactionNumber;
826
- }
827
- const hasTicketedSeat = ((_d = (_c = (_b = params.event.offers.itemOffered.serviceOutput) === null || _b === void 0 ? void 0 : _b.reservedTicket) === null || _c === void 0 ? void 0 : _c.ticketedSeat) === null || _d === void 0 ? void 0 : _d.typeOf) === factory.placeType.Seat;
828
- const maximumAttendeeCapacity4event = (_e = params.event.location) === null || _e === void 0 ? void 0 : _e.maximumAttendeeCapacity;
816
+ // let holder: string = params.transaction.id;
817
+ // if (params.transaction.object?.useHoldStockByTransactionNumber === true) {
818
+ // holder = params.transaction.transactionNumber;
819
+ // }
820
+ const holder = params.transaction.transactionNumber; // fix as transactionNumber(2024-07-02~)
821
+ const hasTicketedSeat = ((_c = (_b = (_a = params.event.offers.itemOffered.serviceOutput) === null || _a === void 0 ? void 0 : _a.reservedTicket) === null || _b === void 0 ? void 0 : _b.ticketedSeat) === null || _c === void 0 ? void 0 : _c.typeOf) === factory.placeType.Seat;
822
+ const maximumAttendeeCapacity4event = (_d = params.event.location) === null || _d === void 0 ? void 0 : _d.maximumAttendeeCapacity;
829
823
  if (typeof maximumAttendeeCapacity4event === 'number') {
830
824
  yield repos.stockHolder.lockIfNotLimitExceeded({
831
825
  project: { id: params.event.project.id },
@@ -71,7 +71,6 @@ declare function authorize(params: {
71
71
  */
72
72
  id: string;
73
73
  };
74
- useHoldStockByTransactionNumber: boolean;
75
74
  stockHoldUntilDaysAfterEventEnd: number;
76
75
  /**
77
76
  * オファーID指定なしに座席をおさえる場合true
@@ -67,7 +67,9 @@ function authorize(params) {
67
67
  acceptedOffer: acceptedOffers, event,
68
68
  transactionNumber,
69
69
  transaction, availableAtOrFrom: { id: params.store.id }, ticketOffers,
70
- unitPriceOffers, validateEvent: params.validateEvent === true, validateEventOfferPeriod: params.validateEventOfferPeriod === true, useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined))(repos);
70
+ unitPriceOffers, validateEvent: params.validateEvent === true, validateEventOfferPeriod: params.validateEventOfferPeriod === true,
71
+ // useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, // discontinue(2024-07-02~)
72
+ stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined))(repos);
71
73
  acceptedOffers4result = processStartReserveResult.acceptedOffers4result;
72
74
  // add orderInTransaction(2024-01-15~)
73
75
  if (!noOfferSpecified) {
@@ -30,7 +30,6 @@ declare function processStartReserve4chevre(params: {
30
30
  unitPriceOffers: factory.unitPriceOffer.IUnitPriceOffer[];
31
31
  validateEventOfferPeriod: boolean;
32
32
  validateEvent: boolean;
33
- useHoldStockByTransactionNumber: boolean;
34
33
  stockHoldUntilDaysAfterEventEnd: number;
35
34
  }): (repos: {
36
35
  action: ActionRepo;
@@ -28,7 +28,9 @@ function processStartReserve4chevre(params) {
28
28
  transactionNumber }, (params.broker !== undefined) ? { broker: params.broker } : undefined));
29
29
  const startParamObject = yield validateObjectWithoutDetail(startParams)(repos);
30
30
  // 予約取引開始
31
- const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true, useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }))(repos);
31
+ const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true,
32
+ // useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, // discontinue(2024-07-02~)
33
+ stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }))(repos);
32
34
  // responseBody = startReserveTransactionResult.transaction; // responseBody参照必要なし(2024-07-01~)
33
35
  // 予約取引からオファー情報を生成する
34
36
  acceptedOffers4result = (0, factory_1.responseBody2acceptedOffers4result)({
@@ -15,7 +15,7 @@ exports.processUnlockOfferRateLimit = exports.cancelReservation = exports.cancel
15
15
  */
16
16
  const moment = require("moment");
17
17
  const factory = require("../../factory");
18
- const factory_1 = require("../assetTransaction/reserve/factory");
18
+ const factory_1 = require("./factory");
19
19
  const onReservationCanceled_1 = require("./potentialActions/onReservationCanceled");
20
20
  /**
21
21
  * 進行中の予約をキャンセルする
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.reserveTransaction2action = exports.confirmReservation = void 0;
13
13
  const createDebug = require("debug");
14
14
  const factory = require("../../factory");
15
- const factory_1 = require("../assetTransaction/reserve/factory");
15
+ const factory_1 = require("./factory");
16
16
  const onReservationConfirmed_1 = require("./potentialActions/onReservationConfirmed");
17
17
  const debug = createDebug('chevre-domain:service:reserve:confirmReservation');
18
18
  /**
@@ -64,4 +64,19 @@ export interface IPotentialInformReservationAction extends factory.task.triggerW
64
64
  object: IInformObject;
65
65
  }
66
66
  export declare const NUM_TRY_INFORM_RESERVATION: number;
67
+ export declare function createMoneyTransferActions(params: {
68
+ acceptedOffer?: factory.assetTransaction.reserve.IAcceptedOffer4object;
69
+ reservation: Pick<factory.assetTransaction.reserve.IObjectSubReservation, 'reservedTicket'>;
70
+ transaction: factory.assetTransaction.ITransaction<factory.assetTransactionType.Reserve>;
71
+ underName?: factory.reservation.IUnderName<factory.reservationType.EventReservation>;
72
+ }): import("@chevre/factory/lib/action/transfer/moneyTransfer").IAttributes[];
73
+ export interface IPotentialCancelAction extends factory.action.cancel.reservation.IAttributes {
74
+ purpose: {
75
+ id: string;
76
+ typeOf: factory.assetTransactionType.Reserve;
77
+ };
78
+ }
79
+ export declare function createCancelPendingReservationAction(params: {
80
+ transaction: factory.assetTransaction.ITransaction<factory.assetTransactionType.Reserve>;
81
+ }): IPotentialCancelAction | undefined;
67
82
  export {};
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NUM_TRY_INFORM_RESERVATION = exports.optimizeUnderName4inform = void 0;
3
+ exports.createCancelPendingReservationAction = exports.createMoneyTransferActions = exports.NUM_TRY_INFORM_RESERVATION = exports.optimizeUnderName4inform = void 0;
4
+ const factory = require("../../factory");
4
5
  function optimizeUnderName4inform(params) {
5
6
  // ReservationPackage通知アクションのobject.underNameを最小化(2024-03-19~)
6
7
  // ? {
@@ -17,3 +18,75 @@ function optimizeUnderName4inform(params) {
17
18
  }
18
19
  exports.optimizeUnderName4inform = optimizeUnderName4inform;
19
20
  exports.NUM_TRY_INFORM_RESERVATION = 10;
21
+ function createMoneyTransferActions(params) {
22
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
23
+ const pointAward = (_b = (_a = params.acceptedOffer) === null || _a === void 0 ? void 0 : _a.itemOffered) === null || _b === void 0 ? void 0 : _b.pointAward;
24
+ const moneyTransfer = [];
25
+ // ポイント特典があれば適用
26
+ const pointAwardToLocationIdentifier = (_c = pointAward === null || pointAward === void 0 ? void 0 : pointAward.toLocation) === null || _c === void 0 ? void 0 : _c.identifier;
27
+ const pointAwardToLocationTypeOf = (_d = pointAward === null || pointAward === void 0 ? void 0 : pointAward.toLocation) === null || _d === void 0 ? void 0 : _d.typeOf;
28
+ if (typeof ((_e = pointAward === null || pointAward === void 0 ? void 0 : pointAward.amount) === null || _e === void 0 ? void 0 : _e.value) === 'number'
29
+ && typeof pointAwardToLocationIdentifier === 'string'
30
+ && typeof pointAwardToLocationTypeOf === 'string') {
31
+ const fromLocation = {
32
+ typeOf: (typeof ((_f = params.reservation.reservedTicket.issuedBy) === null || _f === void 0 ? void 0 : _f.typeOf) === 'string')
33
+ ? params.reservation.reservedTicket.issuedBy.typeOf
34
+ : params.transaction.typeOf,
35
+ name: (typeof ((_g = params.reservation.reservedTicket.issuedBy) === null || _g === void 0 ? void 0 : _g.name) === 'string')
36
+ ? params.reservation.reservedTicket.issuedBy.name
37
+ : params.transaction.id
38
+ };
39
+ const toLocation = {
40
+ identifier: pointAwardToLocationIdentifier,
41
+ typeOf: factory.permit.PermitType.Permit,
42
+ issuedThrough: { id: String((_j = (_h = pointAward.toLocation) === null || _h === void 0 ? void 0 : _h.issuedThrough) === null || _j === void 0 ? void 0 : _j.id) }
43
+ };
44
+ const recipient = {
45
+ typeOf: (typeof ((_k = params.underName) === null || _k === void 0 ? void 0 : _k.typeOf) === 'string')
46
+ ? (_l = params.underName) === null || _l === void 0 ? void 0 : _l.typeOf
47
+ : factory.personType.Person,
48
+ id: (typeof ((_m = params.underName) === null || _m === void 0 ? void 0 : _m.id) === 'string')
49
+ ? (_o = params.underName) === null || _o === void 0 ? void 0 : _o.id
50
+ : '',
51
+ name: String((_p = params.underName) === null || _p === void 0 ? void 0 : _p.name)
52
+ };
53
+ moneyTransfer.push(Object.assign(Object.assign({ project: params.transaction.project, typeOf: factory.actionType.MoneyTransfer, agent: params.transaction.project, recipient, object: {
54
+ typeOf: factory.account.transactionType.Deposit
55
+ }, purpose: Object.assign({ typeOf: params.transaction.typeOf, id: params.transaction.id }, (typeof ((_q = pointAward.purpose) === null || _q === void 0 ? void 0 : _q.identifier) === 'string') ? { identifier: pointAward.purpose.identifier } : undefined), amount: {
56
+ typeOf: 'MonetaryAmount',
57
+ value: (_r = pointAward.amount) === null || _r === void 0 ? void 0 : _r.value,
58
+ currency: (_s = pointAward.amount) === null || _s === void 0 ? void 0 : _s.currency
59
+ }, fromLocation: fromLocation, toLocation: toLocation }, (typeof pointAward.description === 'string') ? { description: pointAward.description } : undefined), (pointAward.recipient !== undefined) ? { recipient: pointAward.recipient } : undefined));
60
+ }
61
+ return moneyTransfer;
62
+ }
63
+ exports.createMoneyTransferActions = createMoneyTransferActions;
64
+ function createCancelPendingReservationAction(params) {
65
+ const transaction = params.transaction;
66
+ const pendingReservations = (Array.isArray(transaction.object.subReservation)) ? transaction.object.subReservation : [];
67
+ let cancelActionAttributes;
68
+ if (pendingReservations.length > 0) {
69
+ const reservationFor = transaction.object.reservationFor;
70
+ if (reservationFor === undefined) {
71
+ throw new factory.errors.NotFound('transaction.object.reservationFor');
72
+ }
73
+ // ReservationPackageに対応(2022-12-23~)
74
+ const reservationPackage = {
75
+ typeOf: factory.reservationType.ReservationPackage,
76
+ reservationNumber: transaction.transactionNumber,
77
+ reservationFor: { typeOf: reservationFor.typeOf, id: String(reservationFor.id) },
78
+ reservationStatus: (typeof params.transaction.object.reservationStatus === 'string')
79
+ ? params.transaction.object.reservationStatus
80
+ : factory.reservationStatusType.ReservationPending
81
+ };
82
+ cancelActionAttributes = {
83
+ project: transaction.project,
84
+ typeOf: factory.actionType.CancelAction,
85
+ purpose: { typeOf: transaction.typeOf, id: transaction.id },
86
+ agent: transaction.project,
87
+ object: reservationPackage
88
+ };
89
+ }
90
+ return cancelActionAttributes;
91
+ }
92
+ exports.createCancelPendingReservationAction = createCancelPendingReservationAction;
package/package.json CHANGED
@@ -10,8 +10,8 @@
10
10
  ],
11
11
  "dependencies": {
12
12
  "@aws-sdk/credential-providers": "3.433.0",
13
- "@chevre/factory": "4.377.0-alpha.3",
14
- "@cinerino/sdk": "8.0.0",
13
+ "@chevre/factory": "4.377.0-alpha.4",
14
+ "@cinerino/sdk": "8.1.0",
15
15
  "@motionpicture/coa-service": "9.4.0",
16
16
  "@motionpicture/gmo-service": "5.3.0",
17
17
  "@sendgrid/mail": "6.4.0",
@@ -103,12 +103,12 @@
103
103
  "mocha": "mocha",
104
104
  "nyc": "nyc mocha \"src/**/*.spec.ts\"",
105
105
  "coverage": "npm run nyc && nyc report --reporter=text-lcov | coveralls",
106
- "test": "npm run check && npm run coverage",
106
+ "test": "npm run check",
107
107
  "tslint": "tslint --project tsconfig.json -c tslint.json --exclude \"**/*.spec.ts\" \"src/**/*.ts\"",
108
108
  "preversion": "npm run clean && npm run build && npm test && npm run doc",
109
109
  "version": "git add -A",
110
110
  "postversion": "git push origin --tags",
111
111
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
112
112
  },
113
- "version": "21.37.0-alpha.5"
113
+ "version": "21.37.0-alpha.7"
114
114
  }