@chevre/domain 20.2.0-alpha.31 → 20.2.0-alpha.32
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/example/src/chevre/searchEventTicketOffers.ts +2 -3
- package/example/src/chevre/searchOffersByCatalog.ts +26 -0
- package/example/src/chevre/updateTransaction.ts +2 -2
- package/lib/chevre/repo/mongoose/model/offer.js +2 -1
- package/lib/chevre/repo/offer.d.ts +4 -0
- package/lib/chevre/repo/offer.js +39 -13
- package/lib/chevre/service/assetTransaction/reserve.js +44 -33
- package/lib/chevre/service/offer/event/authorize.js +8 -4
- package/lib/chevre/service/offer/event/searchEventTicketOffers.d.ts +8 -1
- package/lib/chevre/service/offer/event/searchEventTicketOffers.js +19 -6
- package/lib/chevre/service/offer/factory.js +10 -3
- package/package.json +2 -2
|
@@ -21,7 +21,7 @@ async function main() {
|
|
|
21
21
|
const offerRateLimitRepo = new chevre.repository.rateLimit.Offer(client);
|
|
22
22
|
const productRepo = new chevre.repository.Product(mongoose.connection);
|
|
23
23
|
|
|
24
|
-
const
|
|
24
|
+
const { ticketOffers } = await chevre.service.offer.event.searchEventTicketOffers({
|
|
25
25
|
event: { id: 'al9ew43f5' },
|
|
26
26
|
onlyValid: true
|
|
27
27
|
// ...(typeof sellerId === 'string') ? { seller: { id: sellerId } } : undefined,
|
|
@@ -33,8 +33,7 @@ async function main() {
|
|
|
33
33
|
priceSpecification: priceSpecificationRepo,
|
|
34
34
|
product: productRepo
|
|
35
35
|
});
|
|
36
|
-
|
|
37
|
-
console.log(offers.length);
|
|
36
|
+
console.log(ticketOffers.length);
|
|
38
37
|
}
|
|
39
38
|
|
|
40
39
|
main()
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
// import * as redis from 'redis';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { chevre } from '../../../lib/index';
|
|
6
|
+
|
|
7
|
+
async function main() {
|
|
8
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI);
|
|
9
|
+
|
|
10
|
+
const offerRepo = new chevre.repository.Offer(mongoose.connection);
|
|
11
|
+
|
|
12
|
+
const offers = await offerRepo.findOffersByOfferCatalogId({
|
|
13
|
+
ids: ['al96nqj7z', 'xxx', '1001'],
|
|
14
|
+
// ids: ['xx', 'xxx'],
|
|
15
|
+
offerCatalog: {
|
|
16
|
+
id: '0001'
|
|
17
|
+
// id: 'xxx'
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
console.log(offers.map((o) => o.id));
|
|
21
|
+
console.log(offers.length);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
main()
|
|
25
|
+
.then(console.log)
|
|
26
|
+
.catch(console.error);
|
|
@@ -10,7 +10,7 @@ async function main() {
|
|
|
10
10
|
const transactionRepo = new chevre.repository.Transaction(mongoose.connection);
|
|
11
11
|
const transactionId = '63ce4d501c45c2000bdb2f9d';
|
|
12
12
|
let update = {
|
|
13
|
-
'object.modifiedTime': new Date()
|
|
13
|
+
$set: { 'object.modifiedTime': new Date() }
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
let now = moment();
|
|
@@ -22,7 +22,7 @@ async function main() {
|
|
|
22
22
|
.diff(now));
|
|
23
23
|
|
|
24
24
|
update = {
|
|
25
|
-
'object.modifiedTime': new Date()
|
|
25
|
+
$set: { 'object.modifiedTime': new Date() }
|
|
26
26
|
};
|
|
27
27
|
now = moment();
|
|
28
28
|
// await transactionRepo.updateById({
|
|
@@ -41,7 +41,8 @@ const schema = new mongoose.Schema({
|
|
|
41
41
|
eligibleRegion: mongoose.SchemaTypes.Mixed,
|
|
42
42
|
eligibleSeatingType: mongoose.SchemaTypes.Mixed,
|
|
43
43
|
eligibleSubReservation: mongoose.SchemaTypes.Mixed,
|
|
44
|
-
//
|
|
44
|
+
// settings追加(2023-01-26~)
|
|
45
|
+
settings: mongoose.SchemaTypes.Mixed,
|
|
45
46
|
validFrom: Date,
|
|
46
47
|
validThrough: Date,
|
|
47
48
|
validRateLimit: mongoose.SchemaTypes.Mixed
|
package/lib/chevre/repo/offer.js
CHANGED
|
@@ -302,21 +302,47 @@ class MongoRepository {
|
|
|
302
302
|
*/
|
|
303
303
|
findOffersByOfferCatalogId(params) {
|
|
304
304
|
return __awaiter(this, void 0, void 0, function* () {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
305
|
+
// aggregateで再実装(2023-01-26~)
|
|
306
|
+
const matchStages = [{ $match: { _id: { $eq: params.offerCatalog.id } } }];
|
|
307
|
+
if (Array.isArray(params.ids)) {
|
|
308
|
+
matchStages.push({
|
|
309
|
+
$match: { 'itemListElement.id': { $exists: true, $in: params.ids } }
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
const aggregate = this.offerCatalogModel.aggregate([
|
|
313
|
+
{ $unwind: '$itemListElement' },
|
|
314
|
+
...matchStages,
|
|
315
|
+
{
|
|
316
|
+
$project: {
|
|
317
|
+
_id: 0,
|
|
318
|
+
id: '$itemListElement.id'
|
|
319
|
+
}
|
|
314
320
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
const sortedOfferIds = (Array.isArray(
|
|
318
|
-
?
|
|
321
|
+
]);
|
|
322
|
+
const itemListElements = yield aggregate.exec();
|
|
323
|
+
const sortedOfferIds = (Array.isArray(itemListElements))
|
|
324
|
+
? itemListElements.map((element) => element.id)
|
|
319
325
|
: [];
|
|
326
|
+
// const offerCatalog = await this.offerCatalogModel.findById(
|
|
327
|
+
// params.offerCatalog.id,
|
|
328
|
+
// {
|
|
329
|
+
// itemListElement: 1
|
|
330
|
+
// }
|
|
331
|
+
// )
|
|
332
|
+
// .exec()
|
|
333
|
+
// .then((doc) => {
|
|
334
|
+
// if (doc === null) {
|
|
335
|
+
// throw new factory.errors.NotFound(this.offerCatalogModel.modelName);
|
|
336
|
+
// }
|
|
337
|
+
// return <Pick<factory.offerCatalog.IOfferCatalog, 'itemListElement'>>doc.toObject();
|
|
338
|
+
// });
|
|
339
|
+
// let sortedOfferIds: string[] = (Array.isArray(offerCatalog.itemListElement))
|
|
340
|
+
// ? offerCatalog.itemListElement.map((element) => element.id)
|
|
341
|
+
// : [];
|
|
342
|
+
// const filteredIds = params.ids;
|
|
343
|
+
// if (Array.isArray(filteredIds)) {
|
|
344
|
+
// sortedOfferIds = sortedOfferIds.filter((id) => filteredIds.includes(id));
|
|
345
|
+
// }
|
|
320
346
|
let offers = [];
|
|
321
347
|
if (sortedOfferIds.length > 0) {
|
|
322
348
|
offers = yield this.search({ id: { $in: sortedOfferIds } });
|
|
@@ -64,7 +64,7 @@ exports.start = start;
|
|
|
64
64
|
function addReservations(params) {
|
|
65
65
|
// tslint:disable-next-line:max-func-body-length
|
|
66
66
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
67
|
-
var _a
|
|
67
|
+
var _a;
|
|
68
68
|
const now = new Date();
|
|
69
69
|
let transaction = yield repos.assetTransaction.findById({ typeOf: factory.assetTransactionType.Reserve, id: params.id });
|
|
70
70
|
// イベント存在確認
|
|
@@ -88,26 +88,33 @@ function addReservations(params) {
|
|
|
88
88
|
if (event.typeOf === factory.eventType.ScreeningEvent || event.typeOf === factory.eventType.Event) {
|
|
89
89
|
validateEvent({ now, event });
|
|
90
90
|
}
|
|
91
|
+
// 受け入れたオファーIDだけ取得する(2023-01-26~)
|
|
92
|
+
const acceptedOfferIds = [...new Set(acceptedOffers.map((o) => String(o.id)))];
|
|
91
93
|
// イベントオファー検索
|
|
92
|
-
const ticketOffers = yield OfferService.event.searchEventTicketOffers({
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
94
|
+
const { ticketOffers, unitPriceOffers } = yield OfferService.event.searchEventTicketOffers({
|
|
95
|
+
ids: acceptedOfferIds,
|
|
96
|
+
event: { id: event.id }
|
|
97
|
+
})(repos);
|
|
98
|
+
// 冗長なfindOffersByOfferCatalogId処理を削除(2023-01-26~)
|
|
99
|
+
const availableOffers = unitPriceOffers;
|
|
100
|
+
// let availableOffers: factory.unitPriceOffer.IUnitPriceOffer[] = [];
|
|
101
|
+
// // 興行設定があれば興行のカタログを参照する(2022-08-31~)
|
|
102
|
+
// const eventOffers = <factory.event.screeningEvent.IOffer | undefined>event.offers;
|
|
103
|
+
// if (typeof eventOffers?.itemOffered?.id === 'string') {
|
|
104
|
+
// const eventService = <factory.product.IProduct>await repos.product.findById({ id: eventOffers.itemOffered.id });
|
|
105
|
+
// if (typeof eventService.hasOfferCatalog?.id === 'string') {
|
|
106
|
+
// availableOffers = await repos.offer.findOffersByOfferCatalogId({
|
|
107
|
+
// offerCatalog: { id: eventService.hasOfferCatalog.id }
|
|
108
|
+
// });
|
|
109
|
+
// }
|
|
110
|
+
// } else {
|
|
111
|
+
// throw new factory.errors.NotFound('event.offers.itemOffered.id');
|
|
112
|
+
// }
|
|
107
113
|
const availableSeatOffers = yield searchAvailableSeatOffers({ acceptedOffers, event: { id: event.id } })(repos);
|
|
108
114
|
// 仮予約作成
|
|
109
115
|
const { acceptedOffers4transactionObject, objectSubReservations } = yield createAcceptedOffers4transactionObject({
|
|
110
|
-
acceptedOffers,
|
|
116
|
+
acceptedOffers,
|
|
117
|
+
ticketOffers,
|
|
111
118
|
availableOffers, now,
|
|
112
119
|
event, availableSeatOffers,
|
|
113
120
|
transaction,
|
|
@@ -221,10 +228,10 @@ function createAcceptedOffers4transactionObject(params) {
|
|
|
221
228
|
return { acceptedOffers4transactionObject, objectSubReservations };
|
|
222
229
|
});
|
|
223
230
|
}
|
|
224
|
-
// tslint:disable-next-line:max-func-body-length
|
|
225
231
|
function createReservations4transactionObject(params) {
|
|
232
|
+
// tslint:disable-next-line:max-func-body-length
|
|
226
233
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
227
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
234
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
228
235
|
// 予約番号
|
|
229
236
|
const reservationNumber = params.transaction.object.reservationNumber;
|
|
230
237
|
if (typeof reservationNumber !== 'string') {
|
|
@@ -264,18 +271,22 @@ function createReservations4transactionObject(params) {
|
|
|
264
271
|
const additionalProperty = (0, factory_1.createAdditionalProperty)({ acceptedOffer });
|
|
265
272
|
// 座席指定であれば、座席タイプチャージを検索する
|
|
266
273
|
const seatPriceComponent = [];
|
|
267
|
-
|
|
268
|
-
const
|
|
269
|
-
if (
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
if (Array.isArray(
|
|
278
|
-
|
|
274
|
+
// 区分加算料金を適用しないオプションを追加(2023-01-26~)
|
|
275
|
+
const ignoreCategoryCodeChargeSpec = ((_c = ticketType.settings) === null || _c === void 0 ? void 0 : _c.ignoreCategoryCodeChargeSpec) === true;
|
|
276
|
+
if (!ignoreCategoryCodeChargeSpec) {
|
|
277
|
+
const seatSection = (_d = reservedTicket.ticketedSeat) === null || _d === void 0 ? void 0 : _d.seatSection;
|
|
278
|
+
const seatNumber = (_e = reservedTicket.ticketedSeat) === null || _e === void 0 ? void 0 : _e.seatNumber;
|
|
279
|
+
if (typeof seatSection === 'string' && typeof seatNumber === 'string') {
|
|
280
|
+
const offersOnSeat = (_f = params.availableSeatOffers.find((o) => {
|
|
281
|
+
var _a;
|
|
282
|
+
return o.branchCode === seatNumber && ((_a = o.containedInPlace) === null || _a === void 0 ? void 0 : _a.branchCode) === seatSection;
|
|
283
|
+
})) === null || _f === void 0 ? void 0 : _f.offers;
|
|
284
|
+
if (Array.isArray(offersOnSeat)) {
|
|
285
|
+
const availableSeatOffer = offersOnSeat[0];
|
|
286
|
+
const seatPriceSpecs = (_g = availableSeatOffer === null || availableSeatOffer === void 0 ? void 0 : availableSeatOffer.priceSpecification) === null || _g === void 0 ? void 0 : _g.priceComponent;
|
|
287
|
+
if (Array.isArray(seatPriceSpecs)) {
|
|
288
|
+
seatPriceComponent.push(...seatPriceSpecs);
|
|
289
|
+
}
|
|
279
290
|
}
|
|
280
291
|
}
|
|
281
292
|
}
|
|
@@ -286,7 +297,7 @@ function createReservations4transactionObject(params) {
|
|
|
286
297
|
if (Array.isArray(availableAddOns) && Array.isArray(acceptedAddOnParams)) {
|
|
287
298
|
acceptedAddOns = availableAddOns.filter((availableAddOn) => acceptedAddOnParams.some((acceptedAddOn) => availableAddOn.id === acceptedAddOn.id));
|
|
288
299
|
}
|
|
289
|
-
const subReservation = (
|
|
300
|
+
const subReservation = (_j = (_h = acceptedOffer.itemOffered) === null || _h === void 0 ? void 0 : _h.serviceOutput) === null || _j === void 0 ? void 0 : _j.subReservation;
|
|
290
301
|
const reservationId = `${reservationNumber}-${reservationIndex}`;
|
|
291
302
|
reservations.push((0, factory_1.createReservation)({
|
|
292
303
|
project: params.transaction.project,
|
|
@@ -305,7 +316,7 @@ function createReservations4transactionObject(params) {
|
|
|
305
316
|
subReservation: subReservation,
|
|
306
317
|
programMembershipUsed,
|
|
307
318
|
availableOffer: ticketType,
|
|
308
|
-
appliesToMovieTicket: (
|
|
319
|
+
appliesToMovieTicket: (_k = acceptedOffer.priceSpecification) === null || _k === void 0 ? void 0 : _k.appliesToMovieTicket,
|
|
309
320
|
validateAppliesToMovieTicket: params.validateAppliesToMovieTicket
|
|
310
321
|
}));
|
|
311
322
|
}
|
|
@@ -278,18 +278,23 @@ function validateEvent(params) {
|
|
|
278
278
|
*/
|
|
279
279
|
function validateAcceptedOffers(params) {
|
|
280
280
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
281
|
+
const acceptedOffersWithoutDetail = params.object.acceptedOffer;
|
|
282
|
+
const offerIds = (Array.isArray(acceptedOffersWithoutDetail))
|
|
283
|
+
? [...new Set(acceptedOffersWithoutDetail.map((o) => o.id))]
|
|
284
|
+
: [];
|
|
281
285
|
// 利用可能なチケットオファーを検索
|
|
282
|
-
const
|
|
286
|
+
const { ticketOffers } = yield (0, searchEventTicketOffers_1.searchEventTicketOffers)({
|
|
287
|
+
// 受け入れたオファーIDだけ取得する(2023-01-26~)
|
|
288
|
+
ids: offerIds,
|
|
283
289
|
event: { id: params.event.id },
|
|
284
290
|
seller: params.seller,
|
|
285
291
|
store: params.store
|
|
286
292
|
})(repos);
|
|
287
|
-
const acceptedOffersWithoutDetail = params.object.acceptedOffer;
|
|
288
293
|
// 利用可能なチケットオファーであれば受け入れる
|
|
289
294
|
const acceptedOffers = (Array.isArray(acceptedOffersWithoutDetail))
|
|
290
295
|
? yield Promise.all(acceptedOffersWithoutDetail.map((offerWithoutDetail) => __awaiter(this, void 0, void 0, function* () {
|
|
291
296
|
return acceptedOfferWithoutDetail2acceptedOffer({
|
|
292
|
-
availableTicketOffers,
|
|
297
|
+
availableTicketOffers: ticketOffers,
|
|
293
298
|
offerWithoutDetail,
|
|
294
299
|
event: params.event,
|
|
295
300
|
transaction: params.transaction,
|
|
@@ -298,7 +303,6 @@ function validateAcceptedOffers(params) {
|
|
|
298
303
|
})))
|
|
299
304
|
: [];
|
|
300
305
|
// オファーIDごとにオファー適用条件を確認
|
|
301
|
-
const offerIds = [...new Set(acceptedOffers.map((o) => o.id))];
|
|
302
306
|
offerIds.forEach((offerId) => {
|
|
303
307
|
var _a;
|
|
304
308
|
const acceptedOffersByOfferId = acceptedOffers.filter((o) => o.id === offerId);
|
|
@@ -17,6 +17,10 @@ declare type IAcceptedPaymentMethod = factory.paymentMethod.paymentCard.movieTic
|
|
|
17
17
|
* 興行オファー検索
|
|
18
18
|
*/
|
|
19
19
|
declare function searchEventTicketOffers(params: {
|
|
20
|
+
/**
|
|
21
|
+
* 指定したIDのオファーだけ取得する場合
|
|
22
|
+
*/
|
|
23
|
+
ids?: string[];
|
|
20
24
|
/**
|
|
21
25
|
* どのイベントに対して
|
|
22
26
|
*/
|
|
@@ -72,5 +76,8 @@ declare function searchEventTicketOffers(params: {
|
|
|
72
76
|
*/
|
|
73
77
|
kbnEisyahousiki: string;
|
|
74
78
|
};
|
|
75
|
-
}): ISearchEventTicketOffersOperation<
|
|
79
|
+
}): ISearchEventTicketOffersOperation<{
|
|
80
|
+
ticketOffers: factory.product.ITicketOffer[];
|
|
81
|
+
unitPriceOffers: factory.unitPriceOffer.IUnitPriceOffer[];
|
|
82
|
+
}>;
|
|
76
83
|
export { searchEventTicketOffers };
|
|
@@ -30,6 +30,7 @@ function searchTransportationEventTicketOffers(params) {
|
|
|
30
30
|
const transportation = yield repos.product.findById({ id: eventOffers.itemOffered.id });
|
|
31
31
|
if (typeof ((_b = transportation.hasOfferCatalog) === null || _b === void 0 ? void 0 : _b.id) === 'string') {
|
|
32
32
|
availableOffers = yield repos.offer.findOffersByOfferCatalogId({
|
|
33
|
+
ids: params.ids,
|
|
33
34
|
offerCatalog: { id: transportation.hasOfferCatalog.id }
|
|
34
35
|
});
|
|
35
36
|
}
|
|
@@ -116,7 +117,10 @@ function searchTransportationEventTicketOffers(params) {
|
|
|
116
117
|
}
|
|
117
118
|
offer.addOn = offerAddOn;
|
|
118
119
|
}
|
|
119
|
-
return
|
|
120
|
+
return {
|
|
121
|
+
ticketOffers: offers4event,
|
|
122
|
+
unitPriceOffers: availableOffers
|
|
123
|
+
};
|
|
120
124
|
});
|
|
121
125
|
}
|
|
122
126
|
/**
|
|
@@ -140,6 +144,7 @@ function searchScreeningEventTicketOffers(params) {
|
|
|
140
144
|
const eventService = yield repos.product.findById({ id: eventOffers.itemOffered.id });
|
|
141
145
|
if (typeof ((_b = eventService.hasOfferCatalog) === null || _b === void 0 ? void 0 : _b.id) === 'string') {
|
|
142
146
|
availableOffers = yield repos.offer.findOffersByOfferCatalogId({
|
|
147
|
+
ids: params.ids,
|
|
143
148
|
offerCatalog: { id: eventService.hasOfferCatalog.id }
|
|
144
149
|
});
|
|
145
150
|
}
|
|
@@ -226,7 +231,10 @@ function searchScreeningEventTicketOffers(params) {
|
|
|
226
231
|
}
|
|
227
232
|
offer.addOn = offerAddOn;
|
|
228
233
|
}
|
|
229
|
-
return
|
|
234
|
+
return {
|
|
235
|
+
ticketOffers: offers4event,
|
|
236
|
+
unitPriceOffers: availableOffers
|
|
237
|
+
};
|
|
230
238
|
});
|
|
231
239
|
}
|
|
232
240
|
function getUnacceptedPaymentMethodByEvent(params) {
|
|
@@ -342,8 +350,8 @@ function searchAddOns(params) {
|
|
|
342
350
|
/**
|
|
343
351
|
* 興行オファー検索
|
|
344
352
|
*/
|
|
345
|
-
// tslint:disable-next-line:max-func-body-length
|
|
346
353
|
function searchEventTicketOffers(params) {
|
|
354
|
+
// tslint:disable-next-line:max-func-body-length
|
|
347
355
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
348
356
|
var _a;
|
|
349
357
|
const now = moment();
|
|
@@ -354,6 +362,7 @@ function searchEventTicketOffers(params) {
|
|
|
354
362
|
id: params.event.id
|
|
355
363
|
});
|
|
356
364
|
let offers;
|
|
365
|
+
let unitPriceOffers;
|
|
357
366
|
const eventOffers = event.offers;
|
|
358
367
|
if (eventOffers === undefined) {
|
|
359
368
|
throw new factory.errors.NotFound('EventOffers', 'Event offers undefined');
|
|
@@ -367,10 +376,14 @@ function searchEventTicketOffers(params) {
|
|
|
367
376
|
default:
|
|
368
377
|
// Chevreで券種オファーを検索
|
|
369
378
|
if (event.typeOf === factory.eventType.ScreeningEvent) {
|
|
370
|
-
|
|
379
|
+
const searchOffersResult = yield searchScreeningEventTicketOffers({ ids: params.ids, event })(repos);
|
|
380
|
+
offers = searchOffersResult.ticketOffers;
|
|
381
|
+
unitPriceOffers = searchOffersResult.unitPriceOffers;
|
|
371
382
|
}
|
|
372
383
|
else if (event.typeOf === factory.eventType.Event) {
|
|
373
|
-
|
|
384
|
+
const searchOffersResult = yield searchTransportationEventTicketOffers({ ids: params.ids, event })(repos);
|
|
385
|
+
offers = searchOffersResult.ticketOffers;
|
|
386
|
+
unitPriceOffers = searchOffersResult.unitPriceOffers;
|
|
374
387
|
}
|
|
375
388
|
else {
|
|
376
389
|
throw new factory.errors.NotImplemented(`'${event.typeOf}' not implemented`);
|
|
@@ -426,7 +439,7 @@ function searchEventTicketOffers(params) {
|
|
|
426
439
|
}
|
|
427
440
|
}
|
|
428
441
|
}
|
|
429
|
-
return offers;
|
|
442
|
+
return { ticketOffers: offers, unitPriceOffers };
|
|
430
443
|
});
|
|
431
444
|
}
|
|
432
445
|
exports.searchEventTicketOffers = searchEventTicketOffers;
|
|
@@ -22,13 +22,20 @@ function mvtkChargePriceSpec2component(params) {
|
|
|
22
22
|
return Object.assign({ id: params.id, typeOf: params.typeOf, name: params.name, price: params.price, priceCurrency: params.priceCurrency, valueAddedTaxIncluded: params.valueAddedTaxIncluded, appliesToVideoFormat: params.appliesToVideoFormat, appliesToMovieTicket: params.appliesToMovieTicket }, (typeof ((_a = params.accounting) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { accounting: params.accounting } : undefined);
|
|
23
23
|
}
|
|
24
24
|
function createCompoundPriceSpec4event(params) {
|
|
25
|
+
var _a;
|
|
25
26
|
// priceSpecificationはマスタ管理の仕様上必ず存在するはず
|
|
26
27
|
if (params.offer.priceSpecification === undefined) {
|
|
27
28
|
throw new factory.errors.NotFound(`priceSpecification of the offer: ${params.offer.id}`);
|
|
28
29
|
}
|
|
29
30
|
const unitPriceSpec = Object.assign(Object.assign({}, params.offer.priceSpecification), { name: params.offer.name });
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
let videoFormatChargeSpecComponents = [];
|
|
32
|
+
let soundFormatChargeSpecComponents = [];
|
|
33
|
+
// 区分加算料金を適用しないオプションを追加(2023-01-26~)
|
|
34
|
+
const ignoreCategoryCodeChargeSpec = ((_a = params.offer.settings) === null || _a === void 0 ? void 0 : _a.ignoreCategoryCodeChargeSpec) === true;
|
|
35
|
+
if (!ignoreCategoryCodeChargeSpec) {
|
|
36
|
+
videoFormatChargeSpecComponents = params.videoFormatChargeSpecifications.map(categoryCodeChargePriceSpec2component);
|
|
37
|
+
soundFormatChargeSpecComponents = params.soundFormatChargeSpecifications.map(categoryCodeChargePriceSpec2component);
|
|
38
|
+
}
|
|
32
39
|
const mvtkPriceComponents = [];
|
|
33
40
|
// 複数決済カード対応(2022-07-11~)
|
|
34
41
|
if (Array.isArray(unitPriceSpec.appliesToMovieTicket)) {
|
|
@@ -62,7 +69,7 @@ function createCompoundPriceSpec4event(params) {
|
|
|
62
69
|
priceComponent
|
|
63
70
|
};
|
|
64
71
|
// 不要な属性を除外(2022-11-07~)
|
|
65
|
-
const
|
|
72
|
+
const _b = params.offer, { project } = _b, unitOfferFields4ticketOffer = __rest(_b, ["project"]);
|
|
66
73
|
return Object.assign(Object.assign({}, unitOfferFields4ticketOffer), { eligibleQuantity: params.eligibleQuantity, priceSpecification: compoundPriceSpecification });
|
|
67
74
|
}
|
|
68
75
|
exports.createCompoundPriceSpec4event = createCompoundPriceSpec4event;
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
}
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@chevre/factory": "4.
|
|
12
|
+
"@chevre/factory": "4.284.0-alpha.0",
|
|
13
13
|
"@cinerino/sdk": "3.136.0",
|
|
14
14
|
"@motionpicture/coa-service": "9.2.0",
|
|
15
15
|
"@motionpicture/gmo-service": "5.2.0",
|
|
@@ -120,5 +120,5 @@
|
|
|
120
120
|
"postversion": "git push origin --tags",
|
|
121
121
|
"prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
|
|
122
122
|
},
|
|
123
|
-
"version": "20.2.0-alpha.
|
|
123
|
+
"version": "20.2.0-alpha.32"
|
|
124
124
|
}
|