@chevre/domain 24.1.0-alpha.52 → 24.1.0-alpha.54
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/acceptedOffer.js +5 -16
- package/lib/chevre/repo/acceptedOfferInReserve.js +3 -3
- package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.d.ts +1 -1
- package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.js +2 -1
- package/lib/chevre/repo/mongoose/schemas/order.js +20 -18
- package/lib/chevre/repo/order.d.ts +1 -0
- package/lib/chevre/repo/order.js +4 -1
- package/lib/chevre/repo/orderInTransaction.d.ts +1 -1
- 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.d.ts +4 -0
- package/lib/chevre/service/offer/event/authorize.js +8 -97
- package/lib/chevre/service/payment/any/factory.js +7 -6
- package/package.json +2 -2
|
@@ -24,9 +24,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
24
24
|
/**
|
|
25
25
|
* 索条件を最小化(2026-06-05~)
|
|
26
26
|
*/
|
|
27
|
-
params,
|
|
28
|
-
// params: factory.order.ISearchConditions,
|
|
29
|
-
projection) {
|
|
27
|
+
params, projection) {
|
|
30
28
|
const conditions = order_2.OrderRepo.CREATE_MONGO_CONDITIONS(params);
|
|
31
29
|
const aggregate = this.orderModel.aggregate();
|
|
32
30
|
// unwind->matchでは遅い
|
|
@@ -61,7 +59,6 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
61
59
|
// 予約取引を参照(2026-05-17~)
|
|
62
60
|
const offeredThroughIdentifier = orders.at(0)?.acceptedOffers[0].offeredThrough?.identifier;
|
|
63
61
|
const useReserveTransaction = offeredThroughIdentifier !== factory_1.factory.service.webAPI.Identifier.COA; // COAでは予約取引を参照しない
|
|
64
|
-
// const { useItemOfferedByReserve } = options;
|
|
65
62
|
if (useReserveTransaction) {
|
|
66
63
|
const reservationNumbers = [...new Set(orders.map((order) => String(order.acceptedOffers[0].serialNumber)))];
|
|
67
64
|
let acceptedOffersByReserveTransaction = [];
|
|
@@ -85,16 +82,17 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
85
82
|
if (itemOfferedByReserve === undefined) {
|
|
86
83
|
console.error('repo:acceptedOffer: searchWithUnwoundAcceptedOffers: itemOfferedByReserve: undefined!!!', acceptedOffer.itemOffered.id);
|
|
87
84
|
}
|
|
85
|
+
const nameByReserveTransaction = acceptedOfferByReserveTransaction?.name;
|
|
88
86
|
const { priceSpecification: _originalPriceSpec, // 注文ドキュメントのpriceSpecificationはもう採用しない(2026-05-21~)
|
|
87
|
+
name: _originalName, // 注文ドキュメントのnameはもう採用しない(2026-06-09~)
|
|
89
88
|
itemOffered, ...acceptedOfferWithoutPrice } = acceptedOffer;
|
|
90
89
|
return {
|
|
91
90
|
...order,
|
|
92
91
|
acceptedOffers: [
|
|
93
92
|
{
|
|
94
93
|
...acceptedOfferWithoutPrice,
|
|
94
|
+
...((nameByReserveTransaction !== undefined) && { name: nameByReserveTransaction }), // 予約取引参照の値で上書き(2026-06-09~)
|
|
95
95
|
...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }), // 予約取引参照の値で上書き
|
|
96
|
-
// useItemOfferedByReserve: always true(2026-06-03~)
|
|
97
|
-
// ...(useItemOfferedByReserve && itemOfferedByReserve !== undefined))
|
|
98
96
|
...(itemOfferedByReserve !== undefined)
|
|
99
97
|
? { itemOffered: itemOfferedByReserve } // 予約取引参照の値で上書き(2026-05-25~)
|
|
100
98
|
: { itemOffered }
|
|
@@ -155,15 +153,6 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
155
153
|
if (typeof itemOfferedIdEq === 'string') {
|
|
156
154
|
matchStages.push({ $match: { 'acceptedOffers.itemOffered.id': { $exists: true, $eq: itemOfferedIdEq } } });
|
|
157
155
|
}
|
|
158
|
-
// reservationForによる検索は廃止(reservationForが全オファーに存在しなくても成立させる)(2026-06-04~)
|
|
159
|
-
// const resevationForIdIn = filter.acceptedOffers?.itemOffered?.reservationFor?.id?.$in;
|
|
160
|
-
// if (Array.isArray(resevationForIdIn)) {
|
|
161
|
-
// matchStages.push({
|
|
162
|
-
// $match: {
|
|
163
|
-
// 'acceptedOffers.itemOffered.reservationFor.id': { $exists: true, $in: resevationForIdIn }
|
|
164
|
-
// }
|
|
165
|
-
// });
|
|
166
|
-
// }
|
|
167
156
|
const aggregate = this.orderModel.aggregate([
|
|
168
157
|
...matchStagesOneDocument,
|
|
169
158
|
{
|
|
@@ -181,7 +170,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
181
170
|
typeOf: '$acceptedOffers.typeOf',
|
|
182
171
|
id: '$acceptedOffers.id',
|
|
183
172
|
offeredThrough: '$acceptedOffers.offeredThrough',
|
|
184
|
-
name: '$acceptedOffers.name',
|
|
173
|
+
// name: '$acceptedOffers.name', // 名称はaddAcceptedOffersDetailsメソッドにて予約取引から参照される(2026-06-09~)
|
|
185
174
|
serialNumber: '$acceptedOffers.serialNumber'
|
|
186
175
|
});
|
|
187
176
|
if (typeof filter.limit === 'number' && filter.limit > 0) {
|
|
@@ -52,7 +52,6 @@ class AcceptedOfferInReserveRepo {
|
|
|
52
52
|
if (reservationNumbers.length > 0) {
|
|
53
53
|
acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
|
|
54
54
|
}
|
|
55
|
-
// const { useItemOfferedByReserve } = options;
|
|
56
55
|
return acceptedOffers.map((acceptedOffer) => {
|
|
57
56
|
const acceptedOfferByReserveTransaction = acceptedOffersByReserveTransaction.find(((offer) => offer.itemOffered.id === acceptedOffer.itemOffered.id));
|
|
58
57
|
// 予約は必ず存在するはず
|
|
@@ -69,13 +68,14 @@ class AcceptedOfferInReserveRepo {
|
|
|
69
68
|
if (itemOfferedByReserve === undefined) {
|
|
70
69
|
console.error('repo:acceptedOffer: addAcceptedOffersDetails: itemOfferedByReserve: undefined!!!', acceptedOffer.itemOffered.id);
|
|
71
70
|
}
|
|
71
|
+
const nameByReserveTransaction = acceptedOfferByReserveTransaction?.name;
|
|
72
72
|
const { priceSpecification: _originalPriceSpec, // 注文ドキュメントのpriceSpecificationはもう採用しない(2026-05-21~)
|
|
73
|
+
name: _originalName, // 注文ドキュメントのnameはもう採用しない(2026-06-09~)
|
|
73
74
|
itemOffered, ...acceptedOfferWithoutPrice } = acceptedOffer;
|
|
74
75
|
return {
|
|
75
76
|
...acceptedOfferWithoutPrice,
|
|
77
|
+
...((nameByReserveTransaction !== undefined) && { name: nameByReserveTransaction }), // 予約取引参照の値で上書き(2026-06-09~)
|
|
76
78
|
...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }), // 予約取引参照の値で上書き
|
|
77
|
-
// useItemOfferedByReserve: always true(2026-06-03~)
|
|
78
|
-
// ...(useItemOfferedByReserve && itemOfferedByReserve !== undefined)
|
|
79
79
|
...(itemOfferedByReserve !== undefined)
|
|
80
80
|
? { itemOffered: itemOfferedByReserve } // 予約取引参照の値で上書き
|
|
81
81
|
: { itemOffered }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { factory } from '../../../factory';
|
|
2
|
-
type IAcceptedOfferByReserveTransaction = Pick<factory.order.IOptimizedAcceptedOffer, 'itemOffered' | 'priceSpecification'>;
|
|
2
|
+
type IAcceptedOfferByReserveTransaction = Pick<factory.order.IOptimizedAcceptedOffer, 'itemOffered' | 'priceSpecification' | 'name'>;
|
|
3
3
|
/**
|
|
4
4
|
* 予約取引を注文のitemOfferedへ変換する
|
|
5
5
|
*/
|
|
@@ -68,7 +68,8 @@ function reserveTransaction2itemOffered(params) {
|
|
|
68
68
|
};
|
|
69
69
|
return {
|
|
70
70
|
itemOffered: reservationByReserveTransaction,
|
|
71
|
-
...((price !== undefined) && { priceSpecification: price })
|
|
71
|
+
...((price !== undefined) && { priceSpecification: price }),
|
|
72
|
+
...((reservedTicket.ticketType.name !== undefined) && { name: reservedTicket.ticketType.name })
|
|
72
73
|
};
|
|
73
74
|
});
|
|
74
75
|
}
|
|
@@ -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
|
{
|
|
@@ -154,6 +154,7 @@ export declare class OrderRepo {
|
|
|
154
154
|
unsetUnnecessaryFields(params: {
|
|
155
155
|
filter: FilterQuery<factory.order.IOrder>;
|
|
156
156
|
$unset: any;
|
|
157
|
+
arrayFilters?: any[];
|
|
157
158
|
}): Promise<import("mongoose").UpdateWriteOpResult>;
|
|
158
159
|
aggregateOrder(params: {
|
|
159
160
|
project?: {
|
package/lib/chevre/repo/order.js
CHANGED
|
@@ -832,7 +832,10 @@ class OrderRepo {
|
|
|
832
832
|
.cursor();
|
|
833
833
|
}
|
|
834
834
|
async unsetUnnecessaryFields(params) {
|
|
835
|
-
return this.orderModel.updateMany(params.filter, { $unset: params.$unset }, {
|
|
835
|
+
return this.orderModel.updateMany(params.filter, { $unset: params.$unset }, {
|
|
836
|
+
timestamps: false,
|
|
837
|
+
...((Array.isArray(params.arrayFilters)) && { arrayFilters: params.arrayFilters })
|
|
838
|
+
})
|
|
836
839
|
.exec();
|
|
837
840
|
}
|
|
838
841
|
async aggregateOrder(params) {
|
|
@@ -59,7 +59,7 @@ export declare class OrderInTransactionRepo extends AcceptedOfferInReserveRepo {
|
|
|
59
59
|
project: {
|
|
60
60
|
id: string;
|
|
61
61
|
};
|
|
62
|
-
}): Promise<(
|
|
62
|
+
}): Promise<(Pick<factory.order.IAcceptedOffer, 'id' | 'itemOffered' | 'offeredThrough' | 'serialNumber' | 'typeOf'> & {
|
|
63
63
|
priceSpecification?: factory.order.ITicketPriceSpecification;
|
|
64
64
|
})[]>;
|
|
65
65
|
/**
|
|
@@ -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
|
|
@@ -52,15 +52,17 @@ function authorize(params, options) {
|
|
|
52
52
|
acceptedOffers4result = processStartReserveResult.acceptedOffers4result;
|
|
53
53
|
if (!noOfferSpecified) {
|
|
54
54
|
const useAcceptedOfferNoReservationFor = options.useAcceptedOfferNoReservationFor === true;
|
|
55
|
+
const useAcceptedOfferNoName = options.useAcceptedOfferNoName === true;
|
|
55
56
|
await (0, any_1.acceptOffer)({
|
|
56
57
|
orderNumber,
|
|
57
58
|
project: transaction.project,
|
|
58
59
|
acceptedOffers: acceptedOffers4result.map((acceptOffer4result, offerIndex) => {
|
|
59
|
-
const { priceSpecification: _priceSpecification, itemOffered, ...acceptOfferNoPriceSpec } = acceptOffer4result;
|
|
60
|
+
const { priceSpecification: _priceSpecification, itemOffered, name, ...acceptOfferNoPriceSpec } = acceptOffer4result;
|
|
60
61
|
const includeReservationFor = !useAcceptedOfferNoReservationFor
|
|
61
62
|
|| (useAcceptedOfferNoReservationFor && offerIndex === 0); // useAcceptedOfferNoReservationForの場合、ひとつめのオファーのみ含む(2026-06-04~)
|
|
62
63
|
return {
|
|
63
64
|
...acceptOfferNoPriceSpec,
|
|
65
|
+
...((!useAcceptedOfferNoName) && { name }), // 名称非保管に対応(2026-06-09~)
|
|
64
66
|
itemOffered: minimizeItemOffered(itemOffered, {
|
|
65
67
|
includeReservationFor
|
|
66
68
|
})
|
|
@@ -237,51 +239,6 @@ function validateAcceptedOffers(params) {
|
|
|
237
239
|
})();
|
|
238
240
|
}))
|
|
239
241
|
: [];
|
|
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
242
|
return { acceptedOffers, ticketOffers, unitPriceOffers };
|
|
286
243
|
};
|
|
287
244
|
}
|
|
@@ -293,27 +250,7 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
293
250
|
if (offer === undefined) {
|
|
294
251
|
throw new factory_1.factory.errors.NotFound('Ticket Offer', `Ticket Offer ${offerWithoutDetail.id} not found`);
|
|
295
252
|
}
|
|
296
|
-
// // ポイント特典入金先の指定があれば入金識別子を発行
|
|
297
|
-
// const pointAward = createPointAwardByOfferWithoutDetail({
|
|
298
|
-
// offerWithoutDetail,
|
|
299
|
-
// transaction: params.transaction
|
|
300
|
-
// });
|
|
301
253
|
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
254
|
const priceSpecification = {
|
|
318
255
|
// appliesToMovieTicket.identifierを連携する
|
|
319
256
|
...(Array.isArray(acceptedAppliesToMovieTicket) || typeof acceptedAppliesToMovieTicket?.identifier === 'string')
|
|
@@ -339,7 +276,7 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
339
276
|
// itemOfferedServiceOutputを最適化(2024-04-08~)
|
|
340
277
|
let itemOfferedServiceOutput;
|
|
341
278
|
if (typeof serviceOutputByOfferWithoutDetail?.typeOf === 'string') {
|
|
342
|
-
const { typeOf,
|
|
279
|
+
const { typeOf, additionalTicketText, programMembershipUsed, reservedTicket, subReservation } = serviceOutputByOfferWithoutDetail;
|
|
343
280
|
let ticketedSeat;
|
|
344
281
|
if (typeof reservedTicket?.ticketedSeat?.typeOf === 'string') {
|
|
345
282
|
ticketedSeat = {
|
|
@@ -353,36 +290,19 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
353
290
|
};
|
|
354
291
|
}
|
|
355
292
|
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
293
|
case factory_1.factory.reservationType.EventReservation: {
|
|
375
294
|
const serviceOutputAsEventReservation = {
|
|
376
295
|
typeOf,
|
|
377
|
-
...(Array.isArray(additionalProperty)) ? { additionalProperty } : undefined,
|
|
296
|
+
// ...(Array.isArray(additionalProperty)) ? { additionalProperty } : undefined, // 追加特性指定を廃止(2026-06-08~)
|
|
378
297
|
...(typeof additionalTicketText === 'string') ? { additionalTicketText } : undefined,
|
|
379
298
|
...(programMembershipUsed !== undefined) ? { programMembershipUsed } : undefined,
|
|
380
299
|
...(Array.isArray(subReservation)) ? { subReservation } : undefined,
|
|
381
300
|
...(reservedTicket !== undefined) ? {
|
|
382
301
|
reservedTicket: {
|
|
383
302
|
typeOf: 'Ticket',
|
|
384
|
-
//
|
|
385
|
-
|
|
303
|
+
// チケット識別子のカスタム指定を廃止(2026-06-08~)
|
|
304
|
+
// // チケット識別子指定拡張(2024-04-15~)
|
|
305
|
+
// ...(typeof reservedTicket.identifier === 'string') ? { identifier: reservedTicket.identifier } : undefined,
|
|
386
306
|
...(typeof ticketedSeat?.typeOf === 'string') ? { ticketedSeat } : undefined
|
|
387
307
|
}
|
|
388
308
|
} : undefined
|
|
@@ -398,15 +318,9 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
398
318
|
return {
|
|
399
319
|
// オファーの中身を最適化する(必要最低限の情報のみに)
|
|
400
320
|
id: String(offer.id),
|
|
401
|
-
// identifier: offer.identifier,
|
|
402
321
|
priceSpecification,
|
|
403
|
-
// typeOf: offer.typeOf,
|
|
404
|
-
// priceCurrency: offer.priceCurrency,
|
|
405
322
|
itemOffered: {
|
|
406
|
-
// typeOf: factory.product.ProductType.EventService,
|
|
407
323
|
...(itemOfferedServiceOutput !== undefined) ? { serviceOutput: itemOfferedServiceOutput } : undefined,
|
|
408
|
-
// discontinue(2026-04-18~)
|
|
409
|
-
// ...(pointAward !== undefined) ? { pointAward } : undefined
|
|
410
324
|
},
|
|
411
325
|
addOn: acceptedAddOns,
|
|
412
326
|
// 追加属性をマージ
|
|
@@ -414,9 +328,6 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
414
328
|
...(Array.isArray(offerWithoutDetail.additionalProperty)) ? offerWithoutDetail.additionalProperty : [],
|
|
415
329
|
...(Array.isArray(offer.additionalProperty)) ? offer.additionalProperty : []
|
|
416
330
|
]
|
|
417
|
-
// ...(Array.isArray(offer.acceptedPaymentMethod)) // discontinue(2024-07-03~)
|
|
418
|
-
// ? { acceptedPaymentMethod: offer.acceptedPaymentMethod }
|
|
419
|
-
// : undefined
|
|
420
331
|
};
|
|
421
332
|
};
|
|
422
333
|
}
|
|
@@ -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.54"
|
|
95
95
|
}
|