@chevre/domain 24.1.0-alpha.52 → 24.1.0-alpha.53
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.
- package/lib/chevre/repo/mongoose/schemas/order.js +20 -18
- package/lib/chevre/service/assetTransaction/reserve/start/createSubReservations.js +2 -2
- package/lib/chevre/service/assetTransaction/reserve/start/factory/createReservation.d.ts +1 -8
- package/lib/chevre/service/assetTransaction/reserve/start/factory/createReservation.js +19 -17
- package/lib/chevre/service/offer/event/authorize/factory.js +4 -3
- package/lib/chevre/service/offer/event/authorize.js +5 -96
- package/lib/chevre/service/payment/any/factory.js +7 -6
- package/package.json +2 -2
|
@@ -412,24 +412,26 @@ const indexes = [
|
|
|
412
412
|
}
|
|
413
413
|
}
|
|
414
414
|
],
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
415
|
+
// discontinue(2026-06-08~)
|
|
416
|
+
// [
|
|
417
|
+
// { 'acceptedOffers.itemOffered.reservedTicket.ticketedSeat.seatNumber': 1, orderDate: -1 },
|
|
418
|
+
// {
|
|
419
|
+
// name: 'searchByReservedTicketTicketedSeatSeatNumber',
|
|
420
|
+
// partialFilterExpression: {
|
|
421
|
+
// 'acceptedOffers.itemOffered.reservedTicket.ticketedSeat.seatNumber': { $exists: true }
|
|
422
|
+
// }
|
|
423
|
+
// }
|
|
424
|
+
// ],
|
|
425
|
+
// discontinue(2026-06-08~)
|
|
426
|
+
// [
|
|
427
|
+
// { 'acceptedOffers.itemOffered.reservedTicket.identifier': 1, orderDate: -1 },
|
|
428
|
+
// {
|
|
429
|
+
// name: 'searchByReservedTicketIdentifier',
|
|
430
|
+
// partialFilterExpression: {
|
|
431
|
+
// 'acceptedOffers.itemOffered.reservedTicket.identifier': { $exists: true }
|
|
432
|
+
// }
|
|
433
|
+
// }
|
|
434
|
+
// ],
|
|
433
435
|
[
|
|
434
436
|
{ 'acceptedOffers.serialNumber': 1, orderDate: -1 },
|
|
435
437
|
{
|
|
@@ -80,7 +80,7 @@ function createSubReservations(params) {
|
|
|
80
80
|
ticketOffer: ticketOffer
|
|
81
81
|
});
|
|
82
82
|
const additionalTicketText = (0, createReservation_1.createAdditionalTicketText)({ acceptedOffer, reservedTicket });
|
|
83
|
-
const additionalProperty =
|
|
83
|
+
// const additionalProperty = createAdditionalProperty({ acceptedOffer });
|
|
84
84
|
// 座席指定であれば、座席タイプチャージを検索する
|
|
85
85
|
const seatPriceComponent = [];
|
|
86
86
|
// 区分加算料金を適用しないオプションを追加(2023-01-26~)
|
|
@@ -179,7 +179,7 @@ function createSubReservations(params) {
|
|
|
179
179
|
id: reservationId,
|
|
180
180
|
reservationFor: params.event,
|
|
181
181
|
reservedTicket: reservedTicket,
|
|
182
|
-
additionalProperty: additionalProperty,
|
|
182
|
+
// additionalProperty: additionalProperty,
|
|
183
183
|
additionalTicketText: additionalTicketText,
|
|
184
184
|
ticketOffer: ticketOffer,
|
|
185
185
|
seatPriceComponent: seatPriceComponent,
|
|
@@ -20,12 +20,6 @@ declare function validateAppliesToMovieTicket(params: {
|
|
|
20
20
|
availableOffer: factory.unitPriceOffer.IUnitPriceOffer;
|
|
21
21
|
appliesToMovieTicket?: factory.assetTransaction.reserve.IAcceptedAppliesToMovieTicket;
|
|
22
22
|
}): void;
|
|
23
|
-
/**
|
|
24
|
-
* 追加特性を生成する
|
|
25
|
-
*/
|
|
26
|
-
declare function createAdditionalProperty(params: {
|
|
27
|
-
acceptedOffer: factory.assetTransaction.reserve.IAcceptedTicketOfferWithoutDetail;
|
|
28
|
-
}): factory.propertyValue.IPropertyValue<string>[];
|
|
29
23
|
/**
|
|
30
24
|
* 追加チケットテキストを生成する
|
|
31
25
|
*/
|
|
@@ -41,7 +35,6 @@ declare function createReservation(params: {
|
|
|
41
35
|
id: string;
|
|
42
36
|
reservationFor: IMinimizedIndividualEvent;
|
|
43
37
|
reservedTicket: factory.assetTransaction.reserve.ISubReservationReservedTicket;
|
|
44
|
-
additionalProperty?: factory.propertyValue.IPropertyValue<string>[];
|
|
45
38
|
additionalTicketText?: string;
|
|
46
39
|
ticketOffer: factory.product.ITicketOffer;
|
|
47
40
|
seatPriceComponent: factory.place.seat.IPriceComponent[];
|
|
@@ -52,4 +45,4 @@ declare function createReservation(params: {
|
|
|
52
45
|
appliesToMovieTicket?: factory.assetTransaction.reserve.IAcceptedAppliesToMovieTicket;
|
|
53
46
|
validateAppliesToMovieTicket: boolean;
|
|
54
47
|
}): IObjectSubReservation;
|
|
55
|
-
export {
|
|
48
|
+
export { createAdditionalTicketText, createReservation, createReservedTicket, IAcceptedAddOn, validateAppliesToMovieTicket };
|
|
@@ -3,7 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createAdditionalProperty = createAdditionalProperty;
|
|
7
6
|
exports.createAdditionalTicketText = createAdditionalTicketText;
|
|
8
7
|
exports.createReservation = createReservation;
|
|
9
8
|
exports.createReservedTicket = createReservedTicket;
|
|
@@ -16,14 +15,15 @@ const price_1 = require("./price");
|
|
|
16
15
|
const debug = (0, debug_1.default)('chevre-domain:service:assetTransaction');
|
|
17
16
|
function createTicketIdentifier(params) {
|
|
18
17
|
// チケット識別子の規定値を作成
|
|
19
|
-
|
|
18
|
+
const ticketIdentifier = (typeof params.ticketedSeat?.seatNumber === 'string')
|
|
20
19
|
? (0, util_1.format)('%s:%s:%s', params.reservationFor.id, params.ticketedSeat.seatSection, params.ticketedSeat.seatNumber)
|
|
21
20
|
: (0, util_1.format)('%s:%s', params.reservationFor.id, params.id);
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
// チケット識別子のカスタム指定を廃止(2026-06-08~)
|
|
22
|
+
// // 指定があれば採用
|
|
23
|
+
// const ticketIdentifierByRequest = params.acceptedOffer.itemOffered?.serviceOutput?.reservedTicket?.identifier;
|
|
24
|
+
// if (typeof ticketIdentifierByRequest === 'string' && ticketIdentifierByRequest.length > 0) {
|
|
25
|
+
// ticketIdentifier = ticketIdentifierByRequest;
|
|
26
|
+
// }
|
|
27
27
|
return ticketIdentifier;
|
|
28
28
|
}
|
|
29
29
|
function createReservedTicket(params) {
|
|
@@ -295,16 +295,18 @@ function validateAppliesToMovieTicket(params) {
|
|
|
295
295
|
// Arrayでないケースは廃止(2022-09-10~)
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
|
-
/**
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
function createAdditionalProperty(params
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
}
|
|
298
|
+
// /**
|
|
299
|
+
// * 追加特性を生成する
|
|
300
|
+
// */
|
|
301
|
+
// function createAdditionalProperty(params: {
|
|
302
|
+
// acceptedOffer: factory.assetTransaction.reserve.IAcceptedTicketOfferWithoutDetail;
|
|
303
|
+
// }): factory.propertyValue.IPropertyValue<string>[] {
|
|
304
|
+
// let additionalProperty = params.acceptedOffer.itemOffered?.serviceOutput?.additionalProperty;
|
|
305
|
+
// if (!Array.isArray(additionalProperty)) {
|
|
306
|
+
// additionalProperty = [];
|
|
307
|
+
// }
|
|
308
|
+
// return additionalProperty;
|
|
309
|
+
// }
|
|
308
310
|
/**
|
|
309
311
|
* 追加チケットテキストを生成する
|
|
310
312
|
*/
|
|
@@ -316,9 +316,10 @@ function createReservation(params) {
|
|
|
316
316
|
const reservedTicket = {
|
|
317
317
|
typeOf: itemOffered.reservedTicket.typeOf,
|
|
318
318
|
ticketType,
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
319
|
+
identifier: itemOffered.reservedTicket.identifier, // チケット識別子必須化(2026-06-08~)
|
|
320
|
+
// ...(typeof itemOffered.reservedTicket.identifier === 'string')
|
|
321
|
+
// ? { identifier: itemOffered.reservedTicket.identifier }
|
|
322
|
+
// : undefined, // チケット識別子追加(2024-04-15~)
|
|
322
323
|
...(itemOffered.reservedTicket.ticketedSeat !== undefined)
|
|
323
324
|
? { ticketedSeat: itemOffered.reservedTicket.ticketedSeat }
|
|
324
325
|
: undefined
|
|
@@ -237,51 +237,6 @@ function validateAcceptedOffers(params) {
|
|
|
237
237
|
})();
|
|
238
238
|
}))
|
|
239
239
|
: [];
|
|
240
|
-
// reserveTransaction.startへ処理を移行(2024-07-03~)
|
|
241
|
-
// オファーIDごとにオファー適用条件を確認
|
|
242
|
-
// offerIds.forEach((offerId) => {
|
|
243
|
-
// const acceptedOffersByOfferId = acceptedOffers.filter((o) => o.id === offerId);
|
|
244
|
-
// const numAcceptedOffersByOfferId = acceptedOffersByOfferId.length;
|
|
245
|
-
// let referenceQuantityValue = 1;
|
|
246
|
-
// // 単価仕様を取り出す
|
|
247
|
-
// const unitPriceSpec = acceptedOffersByOfferId[0].priceSpecification.priceComponent.find(
|
|
248
|
-
// (spec) => spec.typeOf === factory.priceSpecificationType.UnitPriceSpecification && (!Array.isArray(spec.appliesToAddOn))
|
|
249
|
-
// );
|
|
250
|
-
// // 単価仕様は必ず存在するはず
|
|
251
|
-
// if (unitPriceSpec?.typeOf !== factory.priceSpecificationType.UnitPriceSpecification) {
|
|
252
|
-
// throw new factory.errors.Internal(`unitPriceSpec of the offer '${offerId}' not found`);
|
|
253
|
-
// }
|
|
254
|
-
// const unitPriceSpecReferenceQuantityValue = unitPriceSpec.referenceQuantity?.value;
|
|
255
|
-
// if (typeof unitPriceSpecReferenceQuantityValue === 'number') {
|
|
256
|
-
// referenceQuantityValue = unitPriceSpecReferenceQuantityValue;
|
|
257
|
-
// }
|
|
258
|
-
// // アイテム数が適用単位要件を満たしていなければエラー
|
|
259
|
-
// if (numAcceptedOffersByOfferId % referenceQuantityValue !== 0) {
|
|
260
|
-
// throw new factory.errors.Argument(
|
|
261
|
-
// 'acceptedOffers',
|
|
262
|
-
// `Offer ${offerId} requires reference quantity value ${referenceQuantityValue}`
|
|
263
|
-
// );
|
|
264
|
-
// }
|
|
265
|
-
// // 適用数量要件を満たしていなければエラー
|
|
266
|
-
// const maxValue = unitPriceSpec.eligibleQuantity?.maxValue;
|
|
267
|
-
// if (typeof maxValue === 'number') {
|
|
268
|
-
// if (numAcceptedOffersByOfferId > maxValue) {
|
|
269
|
-
// throw new factory.errors.Argument(
|
|
270
|
-
// 'acceptedOffers',
|
|
271
|
-
// `Number of offer:${offerId} must be less than or equal to ${maxValue}`
|
|
272
|
-
// );
|
|
273
|
-
// }
|
|
274
|
-
// }
|
|
275
|
-
// const minValue = unitPriceSpec.eligibleQuantity?.minValue;
|
|
276
|
-
// if (typeof minValue === 'number') {
|
|
277
|
-
// if (numAcceptedOffersByOfferId < minValue) {
|
|
278
|
-
// throw new factory.errors.Argument(
|
|
279
|
-
// 'acceptedOffers',
|
|
280
|
-
// `Number of offer:${offerId} must be more than or equal to ${minValue}`
|
|
281
|
-
// );
|
|
282
|
-
// }
|
|
283
|
-
// }
|
|
284
|
-
// });
|
|
285
240
|
return { acceptedOffers, ticketOffers, unitPriceOffers };
|
|
286
241
|
};
|
|
287
242
|
}
|
|
@@ -293,27 +248,7 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
293
248
|
if (offer === undefined) {
|
|
294
249
|
throw new factory_1.factory.errors.NotFound('Ticket Offer', `Ticket Offer ${offerWithoutDetail.id} not found`);
|
|
295
250
|
}
|
|
296
|
-
// // ポイント特典入金先の指定があれば入金識別子を発行
|
|
297
|
-
// const pointAward = createPointAwardByOfferWithoutDetail({
|
|
298
|
-
// offerWithoutDetail,
|
|
299
|
-
// transaction: params.transaction
|
|
300
|
-
// });
|
|
301
251
|
const acceptedAppliesToMovieTicket = offerWithoutDetail.priceSpecification?.appliesToMovieTicket;
|
|
302
|
-
// 承認アクションオブジェクトのacceptedOfferにappliesToMovieTicketを連携する(2022-08-02~)
|
|
303
|
-
// const priceSpecification: IAcceptedOfferPriceSpecification = {
|
|
304
|
-
// // 必要な属性のみに最適化(2024-04-09~)
|
|
305
|
-
// // ...offer.priceSpecification,
|
|
306
|
-
// typeOf: offer.priceSpecification.typeOf,
|
|
307
|
-
// priceCurrency: offer.priceSpecification.priceCurrency,
|
|
308
|
-
// // valueAddedTaxIncluded: offer.priceSpecification.valueAddedTaxIncluded,
|
|
309
|
-
// priceComponent: offer.priceSpecification.priceComponent.map(({
|
|
310
|
-
// name, accounting, id, priceCurrency, valueAddedTaxIncluded, ...necessaryComponentFields
|
|
311
|
-
// }) => necessaryComponentFields),
|
|
312
|
-
// // appliesToMovieTicket.identifierを連携する
|
|
313
|
-
// ...(Array.isArray(acceptedAppliesToMovieTicket) || typeof acceptedAppliesToMovieTicket?.identifier === 'string')
|
|
314
|
-
// ? { appliesToMovieTicket: acceptedAppliesToMovieTicket }
|
|
315
|
-
// : undefined
|
|
316
|
-
// };
|
|
317
252
|
const priceSpecification = {
|
|
318
253
|
// appliesToMovieTicket.identifierを連携する
|
|
319
254
|
...(Array.isArray(acceptedAppliesToMovieTicket) || typeof acceptedAppliesToMovieTicket?.identifier === 'string')
|
|
@@ -339,7 +274,7 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
339
274
|
// itemOfferedServiceOutputを最適化(2024-04-08~)
|
|
340
275
|
let itemOfferedServiceOutput;
|
|
341
276
|
if (typeof serviceOutputByOfferWithoutDetail?.typeOf === 'string') {
|
|
342
|
-
const { typeOf,
|
|
277
|
+
const { typeOf, additionalTicketText, programMembershipUsed, reservedTicket, subReservation } = serviceOutputByOfferWithoutDetail;
|
|
343
278
|
let ticketedSeat;
|
|
344
279
|
if (typeof reservedTicket?.ticketedSeat?.typeOf === 'string') {
|
|
345
280
|
ticketedSeat = {
|
|
@@ -353,36 +288,19 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
353
288
|
};
|
|
354
289
|
}
|
|
355
290
|
switch (typeOf) {
|
|
356
|
-
// case factory.reservationType.BusReservation:
|
|
357
|
-
// const serviceOutputAsBusReservation: factory.assetTransaction.reserve.IBusReservatonAsItemOfferedServiceOutput = {
|
|
358
|
-
// typeOf,
|
|
359
|
-
// ...(Array.isArray(additionalProperty)) ? { additionalProperty } : undefined,
|
|
360
|
-
// ...(typeof additionalTicketText === 'string') ? { additionalTicketText } : undefined,
|
|
361
|
-
// ...(programMembershipUsed !== undefined) ? { programMembershipUsed } : undefined,
|
|
362
|
-
// ...(Array.isArray(subReservation)) ? { subReservation } : undefined,
|
|
363
|
-
// ...(reservedTicket !== undefined) ? {
|
|
364
|
-
// reservedTicket: {
|
|
365
|
-
// typeOf: 'Ticket',
|
|
366
|
-
// // チケット識別子指定拡張(2024-04-15~)
|
|
367
|
-
// ...(typeof reservedTicket.identifier === 'string') ? { identifier: reservedTicket.identifier } : undefined,
|
|
368
|
-
// ...(typeof ticketedSeat?.typeOf === 'string') ? { ticketedSeat } : undefined
|
|
369
|
-
// }
|
|
370
|
-
// } : undefined
|
|
371
|
-
// };
|
|
372
|
-
// itemOfferedServiceOutput = serviceOutputAsBusReservation;
|
|
373
|
-
// break;
|
|
374
291
|
case factory_1.factory.reservationType.EventReservation: {
|
|
375
292
|
const serviceOutputAsEventReservation = {
|
|
376
293
|
typeOf,
|
|
377
|
-
...(Array.isArray(additionalProperty)) ? { additionalProperty } : undefined,
|
|
294
|
+
// ...(Array.isArray(additionalProperty)) ? { additionalProperty } : undefined, // 追加特性指定を廃止(2026-06-08~)
|
|
378
295
|
...(typeof additionalTicketText === 'string') ? { additionalTicketText } : undefined,
|
|
379
296
|
...(programMembershipUsed !== undefined) ? { programMembershipUsed } : undefined,
|
|
380
297
|
...(Array.isArray(subReservation)) ? { subReservation } : undefined,
|
|
381
298
|
...(reservedTicket !== undefined) ? {
|
|
382
299
|
reservedTicket: {
|
|
383
300
|
typeOf: 'Ticket',
|
|
384
|
-
//
|
|
385
|
-
|
|
301
|
+
// チケット識別子のカスタム指定を廃止(2026-06-08~)
|
|
302
|
+
// // チケット識別子指定拡張(2024-04-15~)
|
|
303
|
+
// ...(typeof reservedTicket.identifier === 'string') ? { identifier: reservedTicket.identifier } : undefined,
|
|
386
304
|
...(typeof ticketedSeat?.typeOf === 'string') ? { ticketedSeat } : undefined
|
|
387
305
|
}
|
|
388
306
|
} : undefined
|
|
@@ -398,15 +316,9 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
398
316
|
return {
|
|
399
317
|
// オファーの中身を最適化する(必要最低限の情報のみに)
|
|
400
318
|
id: String(offer.id),
|
|
401
|
-
// identifier: offer.identifier,
|
|
402
319
|
priceSpecification,
|
|
403
|
-
// typeOf: offer.typeOf,
|
|
404
|
-
// priceCurrency: offer.priceCurrency,
|
|
405
320
|
itemOffered: {
|
|
406
|
-
// typeOf: factory.product.ProductType.EventService,
|
|
407
321
|
...(itemOfferedServiceOutput !== undefined) ? { serviceOutput: itemOfferedServiceOutput } : undefined,
|
|
408
|
-
// discontinue(2026-04-18~)
|
|
409
|
-
// ...(pointAward !== undefined) ? { pointAward } : undefined
|
|
410
322
|
},
|
|
411
323
|
addOn: acceptedAddOns,
|
|
412
324
|
// 追加属性をマージ
|
|
@@ -414,9 +326,6 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
414
326
|
...(Array.isArray(offerWithoutDetail.additionalProperty)) ? offerWithoutDetail.additionalProperty : [],
|
|
415
327
|
...(Array.isArray(offer.additionalProperty)) ? offer.additionalProperty : []
|
|
416
328
|
]
|
|
417
|
-
// ...(Array.isArray(offer.acceptedPaymentMethod)) // discontinue(2024-07-03~)
|
|
418
|
-
// ? { acceptedPaymentMethod: offer.acceptedPaymentMethod }
|
|
419
|
-
// : undefined
|
|
420
329
|
};
|
|
421
330
|
};
|
|
422
331
|
}
|
|
@@ -162,12 +162,13 @@ function creatPayTransactionStartParams(params) {
|
|
|
162
162
|
};
|
|
163
163
|
}
|
|
164
164
|
function createMovieTicket(params) {
|
|
165
|
-
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
165
|
+
const ticketIdentifier = (0, util_1.format)('%s:%s:%s', params.serviceOutput.reservationFor.id, params.serviceOutput.reservedTicket.ticketedSeat.seatSection, params.serviceOutput.reservedTicket.ticketedSeat.seatNumber);
|
|
166
|
+
// カスタム指定は廃止(2026-06-08~)
|
|
167
|
+
// // 指定があれば採用(2024-04-16~)
|
|
168
|
+
// const ticketIdentifierByRequest = params.serviceOutput.reservedTicket.identifier;
|
|
169
|
+
// if (typeof ticketIdentifierByRequest === 'string' && ticketIdentifierByRequest.length > 0) {
|
|
170
|
+
// ticketIdentifier = ticketIdentifierByRequest;
|
|
171
|
+
// }
|
|
171
172
|
const serviceOutput = {
|
|
172
173
|
reservationFor: {
|
|
173
174
|
typeOf: params.serviceOutput.reservationFor.typeOf,
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@aws-sdk/client-cognito-identity-provider": "3.600.0",
|
|
13
13
|
"@aws-sdk/credential-providers": "3.600.0",
|
|
14
|
-
"@chevre/factory": "8.2.0-alpha.
|
|
14
|
+
"@chevre/factory": "8.2.0-alpha.7",
|
|
15
15
|
"@motionpicture/coa-service": "10.0.0",
|
|
16
16
|
"@motionpicture/gmo-service": "6.1.0-alpha.0",
|
|
17
17
|
"@sendgrid/client": "8.1.4",
|
|
@@ -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.
|
|
94
|
+
"version": "24.1.0-alpha.53"
|
|
95
95
|
}
|