@chevre/domain 21.29.0-alpha.0 → 21.29.0-alpha.10
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/unsetUnnecessaryFields.ts +8 -7
- package/lib/chevre/repo/mongoose/schemas/order.js +2 -14
- package/lib/chevre/repo/order.js +1 -1
- package/lib/chevre/repo/transaction.d.ts +6 -0
- package/lib/chevre/repo/transaction.js +6 -7
- package/lib/chevre/service/assetTransaction/reserve/factory.d.ts +4 -0
- package/lib/chevre/service/assetTransaction/reserve/factory.js +21 -1
- package/lib/chevre/service/assetTransaction/reserve.js +3 -2
- package/lib/chevre/service/offer/event/authorize.js +2 -2
- package/lib/chevre/service/offer/event/factory.js +4 -2
- package/lib/chevre/service/offer/eventServiceByCOA/factory.js +5 -1
- package/lib/chevre/service/order/placeOrder.js +3 -1
- package/lib/chevre/service/payment/any/factory.js +8 -2
- package/lib/chevre/service/reserve/cancelReservation.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/confirm.js +2 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/publishConfirmationNumberIfNotExist.d.ts +4 -0
- package/lib/chevre/service/transaction/placeOrderInProgress/publishConfirmationNumberIfNotExist.js +9 -4
- package/lib/chevre/service/transaction/placeOrderInProgress/result.js +4 -2
- package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.d.ts +3 -3
- package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js +56 -19
- package/lib/chevre/service/transaction/placeOrderInProgress/validation.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +39 -3
- package/lib/chevre/settings.d.ts +1 -0
- package/lib/chevre/settings.js +2 -1
- package/package.json +2 -2
|
@@ -8,22 +8,23 @@ async function main() {
|
|
|
8
8
|
|
|
9
9
|
let updateResult: any;
|
|
10
10
|
|
|
11
|
-
const
|
|
12
|
-
updateResult = await
|
|
11
|
+
const orderRepo = await chevre.repository.Order.createInstance(mongoose.connection);
|
|
12
|
+
updateResult = await orderRepo.unsetUnnecessaryFields({
|
|
13
13
|
filter: {
|
|
14
|
-
|
|
14
|
+
additionalProperty: { $exists: true }
|
|
15
15
|
},
|
|
16
16
|
$unset: {
|
|
17
|
-
|
|
17
|
+
additionalProperty: 1
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
console.log('unset processed.', updateResult);
|
|
21
|
-
|
|
21
|
+
|
|
22
|
+
updateResult = await orderRepo.unsetUnnecessaryFields({
|
|
22
23
|
filter: {
|
|
23
|
-
|
|
24
|
+
orderNumber: { $exists: true }
|
|
24
25
|
},
|
|
25
26
|
$unset: {
|
|
26
|
-
|
|
27
|
+
discounts: 1
|
|
27
28
|
}
|
|
28
29
|
});
|
|
29
30
|
console.log('unset processed.', updateResult);
|
|
@@ -9,10 +9,7 @@ exports.modelName = modelName;
|
|
|
9
9
|
const schemaDefinition = {
|
|
10
10
|
broker: mongoose_1.SchemaTypes.Mixed,
|
|
11
11
|
project: mongoose_1.SchemaTypes.Mixed,
|
|
12
|
-
typeOf: {
|
|
13
|
-
type: String,
|
|
14
|
-
required: true
|
|
15
|
-
},
|
|
12
|
+
typeOf: { type: String, required: true },
|
|
16
13
|
identifier: [mongoose_1.SchemaTypes.Mixed],
|
|
17
14
|
name: String,
|
|
18
15
|
seller: mongoose_1.SchemaTypes.Mixed,
|
|
@@ -24,7 +21,7 @@ const schemaDefinition = {
|
|
|
24
21
|
priceCurrency: String,
|
|
25
22
|
acceptedOffers: [mongoose_1.SchemaTypes.Mixed],
|
|
26
23
|
paymentMethods: [mongoose_1.SchemaTypes.Mixed],
|
|
27
|
-
discounts:
|
|
24
|
+
discounts: mongoose_1.SchemaTypes.Mixed,
|
|
28
25
|
url: String,
|
|
29
26
|
orderStatus: String,
|
|
30
27
|
previousOrderStatus: String,
|
|
@@ -455,15 +452,6 @@ const indexes = [
|
|
|
455
452
|
}
|
|
456
453
|
}
|
|
457
454
|
],
|
|
458
|
-
[
|
|
459
|
-
{ additionalProperty: 1, orderDate: -1 },
|
|
460
|
-
{
|
|
461
|
-
name: 'searchByAdditionalProperty',
|
|
462
|
-
partialFilterExpression: {
|
|
463
|
-
additionalProperty: { $exists: true }
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
],
|
|
467
455
|
[
|
|
468
456
|
{ typeOf: 1, orderDate: -1 },
|
|
469
457
|
{ name: 'searchByTypeOf' }
|
package/lib/chevre/repo/order.js
CHANGED
|
@@ -1016,7 +1016,7 @@ class MongoRepository {
|
|
|
1016
1016
|
}
|
|
1017
1017
|
unsetUnnecessaryFields(params) {
|
|
1018
1018
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1019
|
-
return this.orderModel.updateMany(params.filter, { $unset: params.$unset })
|
|
1019
|
+
return this.orderModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
|
|
1020
1020
|
.exec();
|
|
1021
1021
|
});
|
|
1022
1022
|
}
|
|
@@ -86,6 +86,9 @@ export declare class MongoRepository {
|
|
|
86
86
|
*/
|
|
87
87
|
findInProgressConfirmationNumberById(params: {
|
|
88
88
|
id: string;
|
|
89
|
+
status: {
|
|
90
|
+
$in: factory.transactionStatusType[];
|
|
91
|
+
};
|
|
89
92
|
}): Promise<string | undefined>;
|
|
90
93
|
/**
|
|
91
94
|
* 取引進行者プロフィールを更新
|
|
@@ -209,6 +212,9 @@ export declare class MongoRepository {
|
|
|
209
212
|
}): Promise<void>;
|
|
210
213
|
saveConfirmationNumberIfNotExist(params: {
|
|
211
214
|
id: string;
|
|
215
|
+
status: {
|
|
216
|
+
$in: factory.transactionStatusType[];
|
|
217
|
+
};
|
|
212
218
|
confirmationNumber: string;
|
|
213
219
|
}): Promise<void>;
|
|
214
220
|
findByIdAndDelete(params: {
|
|
@@ -323,8 +323,7 @@ class MongoRepository {
|
|
|
323
323
|
if (doc === null) {
|
|
324
324
|
throw new factory.errors.NotFound(this.transactionModel.modelName);
|
|
325
325
|
}
|
|
326
|
-
|
|
327
|
-
return transaction.object.orderNumber;
|
|
326
|
+
return doc.toObject().object.orderNumber;
|
|
328
327
|
});
|
|
329
328
|
}
|
|
330
329
|
/**
|
|
@@ -335,14 +334,13 @@ class MongoRepository {
|
|
|
335
334
|
const doc = yield this.transactionModel.findOne({
|
|
336
335
|
_id: { $eq: params.id },
|
|
337
336
|
typeOf: { $eq: factory.transactionType.PlaceOrder },
|
|
338
|
-
status: { $
|
|
337
|
+
status: { $in: params.status.$in }
|
|
339
338
|
}, { 'object.confirmationNumber': 1 })
|
|
340
339
|
.exec();
|
|
341
340
|
if (doc === null) {
|
|
342
341
|
throw new factory.errors.NotFound(this.transactionModel.modelName);
|
|
343
342
|
}
|
|
344
|
-
|
|
345
|
-
return transaction.object.confirmationNumber;
|
|
343
|
+
return doc.toObject().object.confirmationNumber;
|
|
346
344
|
});
|
|
347
345
|
}
|
|
348
346
|
/**
|
|
@@ -742,9 +740,10 @@ class MongoRepository {
|
|
|
742
740
|
return __awaiter(this, void 0, void 0, function* () {
|
|
743
741
|
yield this.transactionModel.updateOne({
|
|
744
742
|
_id: { $eq: params.id },
|
|
745
|
-
status: { $eq: factory.transactionStatusType.InProgress },
|
|
743
|
+
// status: { $eq: factory.transactionStatusType.InProgress },
|
|
744
|
+
status: { $in: params.status.$in },
|
|
746
745
|
'object.confirmationNumber': { $exists: false }
|
|
747
|
-
}, { 'object.confirmationNumber': params.confirmationNumber })
|
|
746
|
+
}, { $set: { 'object.confirmationNumber': params.confirmationNumber } })
|
|
748
747
|
.exec();
|
|
749
748
|
});
|
|
750
749
|
}
|
|
@@ -25,9 +25,13 @@ export declare function createPointAward(params: {
|
|
|
25
25
|
assetTransaction: factory.assetTransaction.reserve.ITransaction;
|
|
26
26
|
}): factory.action.transfer.moneyTransfer.IPointAward | undefined;
|
|
27
27
|
export declare function createReservedTicket(params: {
|
|
28
|
+
id: string;
|
|
28
29
|
acceptedOffer: factory.assetTransaction.reserve.IAcceptedTicketOfferWithoutDetail;
|
|
29
30
|
availableOffer: factory.unitPriceOffer.IUnitPriceOffer;
|
|
30
31
|
dateIssued: Date;
|
|
32
|
+
reservationFor: {
|
|
33
|
+
id: string;
|
|
34
|
+
};
|
|
31
35
|
reservedSeatsOnly: boolean;
|
|
32
36
|
screeningRoomSections?: factory.place.screeningRoomSection.IPlace[];
|
|
33
37
|
availableSeatOffers: factory.place.seat.IPlaceWithOffer[];
|
|
@@ -5,6 +5,7 @@ exports.createCancelPendingReservationAction = exports.createPotentialActions =
|
|
|
5
5
|
* 予約取引ファクトリー
|
|
6
6
|
*/
|
|
7
7
|
const moment = require("moment");
|
|
8
|
+
const util = require("util");
|
|
8
9
|
const factory = require("../../../factory");
|
|
9
10
|
const accountTransactionIdentifier_1 = require("../../../factory/accountTransactionIdentifier");
|
|
10
11
|
const settings_1 = require("../../../settings");
|
|
@@ -64,6 +65,19 @@ function createPointAward(params) {
|
|
|
64
65
|
return pointAward;
|
|
65
66
|
}
|
|
66
67
|
exports.createPointAward = createPointAward;
|
|
68
|
+
function createTicketIdentifier(params) {
|
|
69
|
+
var _a, _b, _c, _d;
|
|
70
|
+
// チケット識別子の規定値を作成
|
|
71
|
+
let ticketIdentifier = (typeof ((_a = params.ticketedSeat) === null || _a === void 0 ? void 0 : _a.seatNumber) === 'string')
|
|
72
|
+
? util.format('%s:%s:%s', params.reservationFor.id, params.ticketedSeat.seatSection, params.ticketedSeat.seatNumber)
|
|
73
|
+
: util.format('%s:%s', params.reservationFor.id, params.id);
|
|
74
|
+
// 指定があれば採用
|
|
75
|
+
const ticketIdentifierByRequest = (_d = (_c = (_b = params.acceptedOffer.itemOffered) === null || _b === void 0 ? void 0 : _b.serviceOutput) === null || _c === void 0 ? void 0 : _c.reservedTicket) === null || _d === void 0 ? void 0 : _d.identifier;
|
|
76
|
+
if (typeof ticketIdentifierByRequest === 'string' && ticketIdentifierByRequest.length > 0) {
|
|
77
|
+
ticketIdentifier = ticketIdentifierByRequest;
|
|
78
|
+
}
|
|
79
|
+
return ticketIdentifier;
|
|
80
|
+
}
|
|
67
81
|
function createReservedTicket(params) {
|
|
68
82
|
var _a, _b, _c;
|
|
69
83
|
let acceptedTicketedSeat;
|
|
@@ -120,7 +134,13 @@ function createReservedTicket(params) {
|
|
|
120
134
|
}
|
|
121
135
|
const ticketType = createTicketType({ availableOffer: params.availableOffer });
|
|
122
136
|
const issuedBy = createIssuedBy({ acceptedOffer: params.acceptedOffer, availableOffer: params.availableOffer });
|
|
123
|
-
|
|
137
|
+
const ticketIdentifier = createTicketIdentifier({
|
|
138
|
+
acceptedOffer: params.acceptedOffer,
|
|
139
|
+
id: params.id,
|
|
140
|
+
reservationFor: params.reservationFor,
|
|
141
|
+
ticketedSeat
|
|
142
|
+
});
|
|
143
|
+
return Object.assign({ dateIssued: params.dateIssued, identifier: ticketIdentifier, issuedBy,
|
|
124
144
|
ticketType, typeOf: 'Ticket' }, (ticketedSeat !== undefined) ? { ticketedSeat } : {});
|
|
125
145
|
}
|
|
126
146
|
exports.createReservedTicket = createReservedTicket;
|
|
@@ -352,6 +352,7 @@ function createReservations4transactionObject(params) {
|
|
|
352
352
|
let reservationIndex = -1;
|
|
353
353
|
for (const acceptedOffer of params.acceptedOffers) {
|
|
354
354
|
reservationIndex += 1;
|
|
355
|
+
const reservationId = `${reservationNumber}-${reservationIndex}`;
|
|
355
356
|
const ticketOffer = params.ticketOffers.find((t) => t.id === acceptedOffer.id);
|
|
356
357
|
if (ticketOffer === undefined) {
|
|
357
358
|
throw new factory.errors.NotFound('Ticket Offer');
|
|
@@ -372,10 +373,11 @@ function createReservations4transactionObject(params) {
|
|
|
372
373
|
})(repos);
|
|
373
374
|
// チケット作成
|
|
374
375
|
const reservedTicket = (0, factory_1.createReservedTicket)({
|
|
376
|
+
id: reservationId,
|
|
375
377
|
acceptedOffer: acceptedOffer,
|
|
376
378
|
availableOffer: ticketType,
|
|
377
379
|
dateIssued: params.now,
|
|
378
|
-
|
|
380
|
+
reservationFor: { id: params.event.id },
|
|
379
381
|
reservedSeatsOnly,
|
|
380
382
|
availableSeatOffers: params.availableSeatOffers,
|
|
381
383
|
ticketOffer: ticketOffer,
|
|
@@ -463,7 +465,6 @@ function createReservations4transactionObject(params) {
|
|
|
463
465
|
// );
|
|
464
466
|
}
|
|
465
467
|
const subReservation = (_j = (_h = acceptedOffer.itemOffered) === null || _h === void 0 ? void 0 : _h.serviceOutput) === null || _j === void 0 ? void 0 : _j.subReservation;
|
|
466
|
-
const reservationId = `${reservationNumber}-${reservationIndex}`;
|
|
467
468
|
reservations.push((0, factory_1.createReservation)({
|
|
468
469
|
project: params.transaction.project,
|
|
469
470
|
id: reservationId,
|
|
@@ -290,13 +290,13 @@ function acceptedOfferWithoutDetail2acceptedOffer(params) {
|
|
|
290
290
|
switch (typeOf) {
|
|
291
291
|
case factory.reservationType.BusReservation:
|
|
292
292
|
const serviceOutputAsBusReservation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ typeOf }, (Array.isArray(additionalProperty)) ? { additionalProperty } : undefined), (typeof additionalTicketText === 'string') ? { additionalTicketText } : undefined), (programMembershipUsed !== undefined) ? { programMembershipUsed } : undefined), (Array.isArray(subReservation)) ? { subReservation } : undefined), (reservedTicket !== undefined) ? {
|
|
293
|
-
reservedTicket: Object.assign({ typeOf: 'Ticket' }, (typeof (ticketedSeat === null || ticketedSeat === void 0 ? void 0 : ticketedSeat.typeOf) === 'string') ? { ticketedSeat } : undefined)
|
|
293
|
+
reservedTicket: Object.assign(Object.assign({ typeOf: 'Ticket' }, (typeof reservedTicket.identifier === 'string') ? { identifier: reservedTicket.identifier } : undefined), (typeof (ticketedSeat === null || ticketedSeat === void 0 ? void 0 : ticketedSeat.typeOf) === 'string') ? { ticketedSeat } : undefined)
|
|
294
294
|
} : undefined);
|
|
295
295
|
itemOfferedServiceOutput = serviceOutputAsBusReservation;
|
|
296
296
|
break;
|
|
297
297
|
case factory.reservationType.EventReservation:
|
|
298
298
|
const serviceOutputAsEventReservation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ typeOf }, (Array.isArray(additionalProperty)) ? { additionalProperty } : undefined), (typeof additionalTicketText === 'string') ? { additionalTicketText } : undefined), (programMembershipUsed !== undefined) ? { programMembershipUsed } : undefined), (Array.isArray(subReservation)) ? { subReservation } : undefined), (reservedTicket !== undefined) ? {
|
|
299
|
-
reservedTicket: Object.assign({ typeOf: 'Ticket' }, (typeof (ticketedSeat === null || ticketedSeat === void 0 ? void 0 : ticketedSeat.typeOf) === 'string') ? { ticketedSeat } : undefined)
|
|
299
|
+
reservedTicket: Object.assign(Object.assign({ typeOf: 'Ticket' }, (typeof reservedTicket.identifier === 'string') ? { identifier: reservedTicket.identifier } : undefined), (typeof (ticketedSeat === null || ticketedSeat === void 0 ? void 0 : ticketedSeat.typeOf) === 'string') ? { ticketedSeat } : undefined)
|
|
300
300
|
} : undefined);
|
|
301
301
|
itemOfferedServiceOutput = serviceOutputAsEventReservation;
|
|
302
302
|
break;
|
|
@@ -208,14 +208,16 @@ function createReservation(params) {
|
|
|
208
208
|
const itemOffered = params.itemOffered;
|
|
209
209
|
const event = params.event;
|
|
210
210
|
let reservationItem;
|
|
211
|
-
const reservedTicket = Object.assign({ typeOf: itemOffered.reservedTicket.typeOf, ticketType: {
|
|
211
|
+
const reservedTicket = Object.assign(Object.assign({ typeOf: itemOffered.reservedTicket.typeOf, ticketType: {
|
|
212
212
|
typeOf: itemOffered.reservedTicket.ticketType.typeOf,
|
|
213
213
|
id: itemOffered.reservedTicket.ticketType.id,
|
|
214
214
|
identifier: itemOffered.reservedTicket.ticketType.identifier,
|
|
215
215
|
name: itemOffered.reservedTicket.ticketType.name,
|
|
216
216
|
description: itemOffered.reservedTicket.ticketType.description,
|
|
217
217
|
additionalProperty: itemOffered.reservedTicket.ticketType.additionalProperty
|
|
218
|
-
} }, (itemOffered.reservedTicket.
|
|
218
|
+
} }, (typeof itemOffered.reservedTicket.identifier === 'string')
|
|
219
|
+
? { identifier: itemOffered.reservedTicket.identifier }
|
|
220
|
+
: undefined), (itemOffered.reservedTicket.ticketedSeat !== undefined)
|
|
219
221
|
? { ticketedSeat: itemOffered.reservedTicket.ticketedSeat }
|
|
220
222
|
: undefined);
|
|
221
223
|
if (itemOffered.typeOf === factory.reservationType.EventReservation
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.responseBody2acceptedOffers4result = exports.offers2resultPrice = exports.createAuthorizeSeatReservationActionAttributes = exports.WebAPIIdentifier = void 0;
|
|
4
4
|
const moment = require("moment");
|
|
5
|
+
const util = require("util");
|
|
5
6
|
const factory = require("../../../factory");
|
|
6
7
|
exports.WebAPIIdentifier = factory.service.webAPI.Identifier;
|
|
7
8
|
function createAuthorizeSeatReservationActionAttributes(params) {
|
|
@@ -131,6 +132,7 @@ function responseBody2acceptedOffers4result(params) {
|
|
|
131
132
|
duration: event.superEvent.duration,
|
|
132
133
|
coaInfo: event.superEvent.coaInfo
|
|
133
134
|
}, id: event.id });
|
|
135
|
+
const ticketNumber = util.format('%s:%s:%s', reservationFor.id, tmpReserve.seatSection, tmpReserve.seatNum);
|
|
134
136
|
const reservedTicket = {
|
|
135
137
|
typeOf: 'Ticket',
|
|
136
138
|
coaTicketInfo: requestedOffer.ticketInfo,
|
|
@@ -143,7 +145,9 @@ function responseBody2acceptedOffers4result(params) {
|
|
|
143
145
|
seatRow: '',
|
|
144
146
|
seatSection: tmpReserve.seatSection
|
|
145
147
|
},
|
|
146
|
-
|
|
148
|
+
identifier: ticketNumber,
|
|
149
|
+
// ticketNumber: ticketToken,
|
|
150
|
+
ticketNumber,
|
|
147
151
|
ticketToken: ticketToken,
|
|
148
152
|
ticketType: {
|
|
149
153
|
typeOf: factory.offerType.Offer,
|
|
@@ -92,7 +92,9 @@ function placeOrderWithoutTransaction(params) {
|
|
|
92
92
|
};
|
|
93
93
|
const action = yield repos.action.start(orderActionAttributes);
|
|
94
94
|
try {
|
|
95
|
-
yield repos.order.createIfNotExist(Object.assign(Object.assign({}, order), {
|
|
95
|
+
yield repos.order.createIfNotExist(Object.assign(Object.assign({}, order), {
|
|
96
|
+
// discounts: [], // 廃止(2024-04-16~)
|
|
97
|
+
acceptedOffers: [] }));
|
|
96
98
|
}
|
|
97
99
|
catch (error) {
|
|
98
100
|
try {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.optimizeAction4inform = exports.createAuthorizeResult = exports.creatPayTransactionStartParams = void 0;
|
|
4
4
|
const moment = require("moment");
|
|
5
|
+
const util = require("util");
|
|
5
6
|
const factory = require("../../../factory");
|
|
6
7
|
function creatPayTransactionStartParams(params) {
|
|
7
8
|
var _a, _b, _c, _d;
|
|
@@ -65,12 +66,19 @@ function creatPayTransactionStartParams(params) {
|
|
|
65
66
|
exports.creatPayTransactionStartParams = creatPayTransactionStartParams;
|
|
66
67
|
function createMovieTicket(params) {
|
|
67
68
|
var _a;
|
|
69
|
+
let ticketIdentifier = util.format('%s:%s:%s', params.serviceOutput.reservationFor.id, params.serviceOutput.reservedTicket.ticketedSeat.seatSection, params.serviceOutput.reservedTicket.ticketedSeat.seatNumber);
|
|
70
|
+
// 指定があれば採用(2024-04-16~)
|
|
71
|
+
const ticketIdentifierByRequest = params.serviceOutput.reservedTicket.identifier;
|
|
72
|
+
if (typeof ticketIdentifierByRequest === 'string' && ticketIdentifierByRequest.length > 0) {
|
|
73
|
+
ticketIdentifier = ticketIdentifierByRequest;
|
|
74
|
+
}
|
|
68
75
|
const serviceOutput = {
|
|
69
76
|
reservationFor: {
|
|
70
77
|
typeOf: params.serviceOutput.reservationFor.typeOf,
|
|
71
78
|
id: params.serviceOutput.reservationFor.id
|
|
72
79
|
},
|
|
73
80
|
reservedTicket: {
|
|
81
|
+
identifier: ticketIdentifier,
|
|
74
82
|
ticketedSeat: {
|
|
75
83
|
typeOf: factory.placeType.Seat,
|
|
76
84
|
seatNumber: params.serviceOutput.reservedTicket.ticketedSeat.seatNumber,
|
|
@@ -80,8 +88,6 @@ function createMovieTicket(params) {
|
|
|
80
88
|
}
|
|
81
89
|
};
|
|
82
90
|
return {
|
|
83
|
-
// optimize(2023-03-06~)
|
|
84
|
-
// project: { id: params.project.id, typeOf: factory.organizationType.Project },
|
|
85
91
|
typeOf: params.typeOf,
|
|
86
92
|
identifier: params.identifier,
|
|
87
93
|
accessCode: params.accessCode,
|
|
@@ -30,7 +30,7 @@ declare function cancelReservation(actionAttributesList: factory.action.cancel.r
|
|
|
30
30
|
declare function processUnlockOfferRateLimit(params: {
|
|
31
31
|
reservation: {
|
|
32
32
|
reservationNumber: string;
|
|
33
|
-
reservedTicket: factory.
|
|
33
|
+
reservedTicket: factory.reservation.ITicket;
|
|
34
34
|
};
|
|
35
35
|
reservationFor: factory.assetTransaction.reserve.IReservationFor;
|
|
36
36
|
}): (repos: {
|
|
@@ -32,6 +32,7 @@ function confirm(params) {
|
|
|
32
32
|
// 確認番号を事前発行
|
|
33
33
|
yield (0, publishConfirmationNumberIfNotExist_1.publishConfirmationNumberIfNotExist)({
|
|
34
34
|
id: params.id,
|
|
35
|
+
status: { $in: [factory.transactionStatusType.Confirmed, factory.transactionStatusType.InProgress] },
|
|
35
36
|
object: { orderDate: params.result.order.orderDate }
|
|
36
37
|
})(repos);
|
|
37
38
|
const transaction = yield repos.transaction.findById({
|
|
@@ -260,7 +261,7 @@ function createResult(params) {
|
|
|
260
261
|
authorizeEventServiceOfferActions: params.authorizeEventServiceOfferActions
|
|
261
262
|
});
|
|
262
263
|
// 注文オファー検証
|
|
263
|
-
(0, validation_1.
|
|
264
|
+
(0, validation_1.validateAcceptedOffers)({
|
|
264
265
|
result: params.result,
|
|
265
266
|
acceptedOffers: params.acceptedOffers
|
|
266
267
|
});
|
package/lib/chevre/service/transaction/placeOrderInProgress/publishConfirmationNumberIfNotExist.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { RedisRepository as ConfirmationNumberRepo } from '../../../repo/confirmationNumber';
|
|
2
2
|
import type { MongoRepository as TransactionRepo } from '../../../repo/transaction';
|
|
3
|
+
import * as factory from '../../../factory';
|
|
3
4
|
/**
|
|
4
5
|
* 未発行であれば、注文の確認番号を発行して取引に保管する
|
|
5
6
|
*/
|
|
@@ -8,6 +9,9 @@ declare function publishConfirmationNumberIfNotExist(params: {
|
|
|
8
9
|
* 取引ID
|
|
9
10
|
*/
|
|
10
11
|
id: string;
|
|
12
|
+
status: {
|
|
13
|
+
$in: factory.transactionStatusType[];
|
|
14
|
+
};
|
|
11
15
|
object: {
|
|
12
16
|
orderDate: Date;
|
|
13
17
|
};
|
package/lib/chevre/service/transaction/placeOrderInProgress/publishConfirmationNumberIfNotExist.js
CHANGED
|
@@ -16,8 +16,10 @@ const factory = require("../../../factory");
|
|
|
16
16
|
*/
|
|
17
17
|
function publishConfirmationNumberIfNotExist(params) {
|
|
18
18
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
let confirmationNumber = yield repos.transaction.findInProgressConfirmationNumberById({
|
|
20
|
+
id: params.id,
|
|
21
|
+
status: { $in: params.status.$in }
|
|
22
|
+
});
|
|
21
23
|
// すでに発行済であれば何もしない
|
|
22
24
|
if (typeof confirmationNumber === 'string') {
|
|
23
25
|
return confirmationNumber;
|
|
@@ -27,11 +29,14 @@ function publishConfirmationNumberIfNotExist(params) {
|
|
|
27
29
|
// 取引に存在しなければ保管
|
|
28
30
|
yield repos.transaction.saveConfirmationNumberIfNotExist({
|
|
29
31
|
id: params.id,
|
|
32
|
+
status: { $in: params.status.$in },
|
|
30
33
|
confirmationNumber
|
|
31
34
|
});
|
|
32
35
|
// 確認番号を取引から再取得
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
confirmationNumber = yield repos.transaction.findInProgressConfirmationNumberById({
|
|
37
|
+
id: params.id,
|
|
38
|
+
status: { $in: params.status.$in }
|
|
39
|
+
});
|
|
35
40
|
// 万が一処理が想定通りでない場合confirmationNumberが存在しない
|
|
36
41
|
if (typeof confirmationNumber !== 'string') {
|
|
37
42
|
throw new factory.errors.ServiceUnavailable('transaction.object.confirmationNumber not found');
|
|
@@ -15,10 +15,12 @@ function createOrder(params) {
|
|
|
15
15
|
const { paymentMethods, price } = createPaymentMethods({
|
|
16
16
|
authorizePaymentActions: params.authorizePaymentActions
|
|
17
17
|
});
|
|
18
|
-
const discounts = [];
|
|
18
|
+
// const discounts: factory.order.IDiscount[] = [];
|
|
19
19
|
const name = (typeof params.transaction.object.name === 'string') ? params.transaction.object.name : undefined;
|
|
20
20
|
const broker = (typeof ((_a = params.transaction.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? params.transaction.object.broker : undefined;
|
|
21
|
-
return Object.assign(Object.assign({ project: params.transaction.project, typeOf: factory.order.OrderType.Order, seller: seller, customer: customer, price: price, priceCurrency: factory.priceCurrency.JPY, paymentMethods: paymentMethods,
|
|
21
|
+
return Object.assign(Object.assign({ project: params.transaction.project, typeOf: factory.order.OrderType.Order, seller: seller, customer: customer, price: price, priceCurrency: factory.priceCurrency.JPY, paymentMethods: paymentMethods,
|
|
22
|
+
// discounts: discounts, // 廃止(2024-04-16~)
|
|
23
|
+
confirmationNumber: '', orderNumber: params.orderNumber, orderedItem: orderedItems,
|
|
22
24
|
// acceptedOffers: acceptedOffers,
|
|
23
25
|
url: '', orderStatus: params.orderStatus, orderDate: params.orderDate, identifier: [], isGift: params.isGift }, (typeof name === 'string') ? { name } : undefined), (typeof (broker === null || broker === void 0 ? void 0 : broker.typeOf) === 'string') ? { broker } : undefined);
|
|
24
26
|
}
|
package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as factory from '../../../../factory';
|
|
2
|
-
export type IMovieTicket4validate = Pick<factory.paymentMethod.paymentCard.movieTicket.
|
|
3
|
-
serviceOutput: factory.paymentMethod.paymentCard.movieTicket.
|
|
4
|
-
reservationFor: factory.paymentMethod.paymentCard.movieTicket.
|
|
2
|
+
export type IMovieTicket4validate = Pick<factory.paymentMethod.paymentCard.movieTicket.IMovieTicketPaymentCard, 'identifier' | 'serviceOutput' | 'serviceType' | 'typeOf'> & {
|
|
3
|
+
serviceOutput: factory.paymentMethod.paymentCard.movieTicket.IMovieTicketServiceOutput & {
|
|
4
|
+
reservationFor: factory.paymentMethod.paymentCard.movieTicket.IMovieTicketReservationFor;
|
|
5
5
|
};
|
|
6
6
|
};
|
|
7
7
|
/**
|
package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.validateMovieTicket = void 0;
|
|
|
6
6
|
*/
|
|
7
7
|
const createDebug = require("debug");
|
|
8
8
|
const factory = require("../../../../factory");
|
|
9
|
+
const settings_1 = require("../../../../settings");
|
|
9
10
|
const debug = createDebug('chevre-domain:service:validateMovieTicket');
|
|
10
11
|
/**
|
|
11
12
|
* 興行オファー承認に対して決済承認条件が整っているかどうか検証する
|
|
@@ -58,9 +59,11 @@ eventReservationAcceptedOffers) {
|
|
|
58
59
|
// イベントとムビチケ券種区分ごとに枚数OK?
|
|
59
60
|
const eventIds = [...new Set(requiredMovieTickets.map((t) => t.serviceOutput.reservationFor.id))];
|
|
60
61
|
debug('movie ticket event ids:', eventIds, 'transaction:', transaction.id);
|
|
62
|
+
// tslint:disable-next-line:max-func-body-length
|
|
61
63
|
eventIds.forEach((eventId) => {
|
|
62
64
|
const requiredMovieTicketsByEvent = requiredMovieTickets.filter((t) => t.serviceOutput.reservationFor.id === eventId);
|
|
63
65
|
const authorizedMovieTicketsByEvent = authorizedMovieTickets.filter((t) => t.serviceOutput.reservationFor.id === eventId);
|
|
66
|
+
debug('validating authorizedMovieTicketsByEvent,requiredMovieTicketsByEvent by eventId...', eventId, authorizedMovieTicketsByEvent, requiredMovieTicketsByEvent);
|
|
64
67
|
// 合計枚数OK?
|
|
65
68
|
if (requiredMovieTicketsByEvent.length !== authorizedMovieTicketsByEvent.length) {
|
|
66
69
|
throw new factory.errors.Argument('transactionId', `required movie tickets for the event '${eventId}' not satisfied`);
|
|
@@ -77,6 +80,22 @@ eventReservationAcceptedOffers) {
|
|
|
77
80
|
if (!authorizedMovieTicketExists) {
|
|
78
81
|
throw new factory.errors.Argument('transactionId', `required movie tickets for the event '${eventId}' not satisfied`);
|
|
79
82
|
}
|
|
83
|
+
// チケット識別子での検証に対応(2024-04-16)
|
|
84
|
+
if (settings_1.USE_VALIDATE_MOVIE_TICKET_BY_TICKET_IDENTIFIER) {
|
|
85
|
+
const authorizedMovieTicketByTicketIdentifierExists = authorizedMovieTicketsByEvent.some((authorizedMovieTicket) => {
|
|
86
|
+
return authorizedMovieTicket.serviceType === requiredMovieTicket.serviceType
|
|
87
|
+
&& authorizedMovieTicket.serviceOutput.reservedTicket.ticketedSeat.seatNumber
|
|
88
|
+
=== requiredMovieTicket.serviceOutput.reservedTicket.ticketedSeat.seatNumber
|
|
89
|
+
&& authorizedMovieTicket.serviceOutput.reservedTicket.ticketedSeat.seatSection
|
|
90
|
+
=== requiredMovieTicket.serviceOutput.reservedTicket.ticketedSeat.seatSection
|
|
91
|
+
&& typeof authorizedMovieTicket.serviceOutput.reservedTicket.identifier === 'string'
|
|
92
|
+
&& authorizedMovieTicket.serviceOutput.reservedTicket.identifier
|
|
93
|
+
=== requiredMovieTicket.serviceOutput.reservedTicket.identifier;
|
|
94
|
+
});
|
|
95
|
+
if (!authorizedMovieTicketByTicketIdentifierExists) {
|
|
96
|
+
throw new factory.errors.Argument('transactionId', `required movie tickets(reservedTicket.identifier) for the event '${eventId}' not satisfied`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
80
99
|
});
|
|
81
100
|
// 券種ごとに枚数が適切か確認
|
|
82
101
|
const serviceTypesAuthorized = [...new Set(authorizedMovieTicketsByEvent.map(({ serviceType }) => serviceType))];
|
|
@@ -109,6 +128,26 @@ eventReservationAcceptedOffers) {
|
|
|
109
128
|
throw new factory.errors.Argument('transactionId', `required movie tickets for seatNumber '${seatNumber}' not satisfied`);
|
|
110
129
|
}
|
|
111
130
|
});
|
|
131
|
+
if (settings_1.USE_VALIDATE_MOVIE_TICKET_BY_TICKET_IDENTIFIER) {
|
|
132
|
+
// チケット識別子リストが一致しているか確認
|
|
133
|
+
const reservedTicketIdentifierAuthorized = authorizedMovieTicketsByEvent.map(({ serviceOutput }) => serviceOutput.reservedTicket.identifier);
|
|
134
|
+
const reservedTicketIdentifiers = requiredMovieTicketsByEvent.map(({ serviceOutput }) => serviceOutput.reservedTicket.identifier);
|
|
135
|
+
if (reservedTicketIdentifierAuthorized.length !== reservedTicketIdentifiers.length) {
|
|
136
|
+
throw new factory.errors.Argument('transactionId', `required movie tickets(reservedTicket.identifier) for event '${eventId}' not satisfied`);
|
|
137
|
+
}
|
|
138
|
+
reservedTicketIdentifiers.forEach((reservedTicketIdentifier) => {
|
|
139
|
+
if (typeof reservedTicketIdentifier !== 'string') {
|
|
140
|
+
throw new factory.errors.Argument('transactionId', `reservedTicket.identifier for event '${eventId}' required`);
|
|
141
|
+
}
|
|
142
|
+
const requiredMovieTicketsByReservedTicketIdentifier = requiredMovieTicketsByEvent.filter((t) => t.serviceOutput.reservedTicket.identifier === reservedTicketIdentifier);
|
|
143
|
+
const authorizedMovieTicketsByReservedTicketIdentifier = authorizedMovieTicketsByEvent.filter((t) => {
|
|
144
|
+
return t.serviceOutput.reservedTicket.identifier === reservedTicketIdentifier;
|
|
145
|
+
});
|
|
146
|
+
if (requiredMovieTicketsByReservedTicketIdentifier.length !== authorizedMovieTicketsByReservedTicketIdentifier.length) {
|
|
147
|
+
throw new factory.errors.Argument('transactionId', `required movie tickets for reservedTicket.identifier '${reservedTicketIdentifier}' not satisfied`);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
112
151
|
validateAppliesToMovieTicketIdentifiers({
|
|
113
152
|
requiredMovieTicketsByEvent,
|
|
114
153
|
authorizedMovieTicketsByEvent,
|
|
@@ -145,30 +184,24 @@ function authorizeSeatReservationActions2requiredMovieTickets(params) {
|
|
|
145
184
|
// });
|
|
146
185
|
if (Array.isArray(params.acceptedOffers)) {
|
|
147
186
|
params.acceptedOffers.forEach((offer) => {
|
|
148
|
-
var _a, _b, _c
|
|
187
|
+
var _a, _b, _c;
|
|
149
188
|
let offeredTicketedSeat;
|
|
150
189
|
const acceptedTicketedSeatByItemOffered = (_b = (_a = offer.itemOffered) === null || _a === void 0 ? void 0 : _a.reservedTicket) === null || _b === void 0 ? void 0 : _b.ticketedSeat;
|
|
151
190
|
if (typeof (acceptedTicketedSeatByItemOffered === null || acceptedTicketedSeatByItemOffered === void 0 ? void 0 : acceptedTicketedSeatByItemOffered.typeOf) === 'string') {
|
|
152
191
|
offeredTicketedSeat = acceptedTicketedSeatByItemOffered;
|
|
153
192
|
}
|
|
193
|
+
// シンプルに単価仕様のappliesToMovieTicketを参照してrequiredMovieTicketsを作成する(2022-07-28~)
|
|
194
|
+
const unitPriceSpec = (_c = offer.priceSpecification) === null || _c === void 0 ? void 0 : _c.priceComponent.find((component) => {
|
|
195
|
+
return component.typeOf === factory.priceSpecificationType.UnitPriceSpecification
|
|
196
|
+
&& (!Array.isArray(component.appliesToAddOn));
|
|
197
|
+
});
|
|
198
|
+
// tslint:disable-next-line:no-single-line-block-comment
|
|
199
|
+
/* istanbul ignore if */
|
|
200
|
+
if (unitPriceSpec === undefined) {
|
|
201
|
+
throw new factory.errors.NotFound('UnitPriceSpecification of acceptedOffer');
|
|
202
|
+
}
|
|
154
203
|
if (typeof (offeredTicketedSeat === null || offeredTicketedSeat === void 0 ? void 0 : offeredTicketedSeat.typeOf) === 'string') {
|
|
155
204
|
const ticketedSeat4MovieTicket = offeredTicketedSeat;
|
|
156
|
-
const eventOfferedThroughIdentifier = (_c = offer.offeredThrough) === null || _c === void 0 ? void 0 : _c.identifier;
|
|
157
|
-
// tslint:disable-next-line:no-single-line-block-comment
|
|
158
|
-
/* istanbul ignore if */
|
|
159
|
-
if (typeof eventOfferedThroughIdentifier !== 'string') {
|
|
160
|
-
throw new factory.errors.NotFound('offer.offeredThrough.identifier', `offer.offeredThrough.identifier undefined [serialNumber:${offer.serialNumber}]`);
|
|
161
|
-
}
|
|
162
|
-
// シンプルに単価仕様のappliesToMovieTicketを参照してrequiredMovieTicketsを作成する(2022-07-28~)
|
|
163
|
-
const unitPriceSpec = (_d = offer.priceSpecification) === null || _d === void 0 ? void 0 : _d.priceComponent.find((component) => {
|
|
164
|
-
return component.typeOf === factory.priceSpecificationType.UnitPriceSpecification
|
|
165
|
-
&& (!Array.isArray(component.appliesToAddOn));
|
|
166
|
-
});
|
|
167
|
-
// tslint:disable-next-line:no-single-line-block-comment
|
|
168
|
-
/* istanbul ignore if */
|
|
169
|
-
if (unitPriceSpec === undefined) {
|
|
170
|
-
throw new factory.errors.NotFound('UnitPriceSpecification of acceptedOffer');
|
|
171
|
-
}
|
|
172
205
|
// tslint:disable-next-line:no-single-line-block-comment
|
|
173
206
|
/* istanbul ignore if */
|
|
174
207
|
if (offer.itemOffered.reservationFor.typeOf !== factory.eventType.ScreeningEvent) {
|
|
@@ -177,7 +210,6 @@ function authorizeSeatReservationActions2requiredMovieTickets(params) {
|
|
|
177
210
|
const reservationFor4movieTicket = {
|
|
178
211
|
typeOf: offer.itemOffered.reservationFor.typeOf,
|
|
179
212
|
id: offer.itemOffered.reservationFor.id
|
|
180
|
-
// offers: { offeredThrough: { identifier: eventOfferedThroughIdentifier } }
|
|
181
213
|
};
|
|
182
214
|
// 指定された決済方法の適用決済カードリスト
|
|
183
215
|
let appliesToMovieTickets4paymentMethod = [];
|
|
@@ -195,7 +227,12 @@ function authorizeSeatReservationActions2requiredMovieTickets(params) {
|
|
|
195
227
|
serviceType: appliesToMovieTicket.serviceType,
|
|
196
228
|
serviceOutput: {
|
|
197
229
|
reservationFor: reservationFor4movieTicket,
|
|
198
|
-
reservedTicket: {
|
|
230
|
+
reservedTicket: {
|
|
231
|
+
identifier: (typeof offer.itemOffered.reservedTicket.identifier === 'string')
|
|
232
|
+
? offer.itemOffered.reservedTicket.identifier
|
|
233
|
+
: offer.itemOffered.id,
|
|
234
|
+
ticketedSeat: ticketedSeat4MovieTicket
|
|
235
|
+
}
|
|
199
236
|
}
|
|
200
237
|
});
|
|
201
238
|
});
|
|
@@ -12,7 +12,7 @@ export type IOrderURLGenerator = (order: factory.order.IOrder) => string;
|
|
|
12
12
|
/**
|
|
13
13
|
* 注文オファー数検証
|
|
14
14
|
*/
|
|
15
|
-
export declare function
|
|
15
|
+
export declare function validateAcceptedOffers(params: {
|
|
16
16
|
result: {
|
|
17
17
|
order: PlaceOrderFactory.IResultOrderParams;
|
|
18
18
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateEventOffers = exports.validatePaymentMethods = exports.validateOrderedItem = exports.
|
|
3
|
+
exports.validateEventOffers = exports.validatePaymentMethods = exports.validateOrderedItem = exports.validateAcceptedOffers = exports.validateTransaction = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* 注文取引バリデーション
|
|
6
6
|
*/
|
|
@@ -202,7 +202,7 @@ function validateMonetaryAmount(authorizePaymentActions, authorizeEventServiceOf
|
|
|
202
202
|
/**
|
|
203
203
|
* 注文オファー数検証
|
|
204
204
|
*/
|
|
205
|
-
function
|
|
205
|
+
function validateAcceptedOffers(params) {
|
|
206
206
|
var _a, _b, _c;
|
|
207
207
|
if (!Array.isArray(params.acceptedOffers)) {
|
|
208
208
|
throw new factory.errors.Argument('order.acceptedOffers', 'must be array');
|
|
@@ -241,8 +241,44 @@ function validateNumItems(params) {
|
|
|
241
241
|
throw new factory.errors.Argument('Transaction', (0, util_1.format)('Number of reservationNumbers must be less than or equal to %s', maxNumCOAReservationNumbers));
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
|
+
// チケット識別子ユニークネス検証(2024-04-16~)
|
|
245
|
+
let ticketIdentifiers = [];
|
|
246
|
+
params.acceptedOffers.forEach(({ itemOffered }) => {
|
|
247
|
+
if (itemOffered.typeOf === factory.reservationType.BusReservation
|
|
248
|
+
|| itemOffered.typeOf === factory.reservationType.EventReservation) {
|
|
249
|
+
if (typeof itemOffered.reservedTicket.identifier === 'string') {
|
|
250
|
+
ticketIdentifiers.push(itemOffered.reservedTicket.identifier);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
if (ticketIdentifiers.length > 0) {
|
|
255
|
+
ticketIdentifiers = [...new Set(ticketIdentifiers)];
|
|
256
|
+
debug('ticketIdentifiers unique?', ticketIdentifiers.join(' '), 'numAcceptedOffers:', numAcceptedOffers);
|
|
257
|
+
// チケット識別子が注文内ユニークなので、注文オファー数に一致するはず
|
|
258
|
+
if (ticketIdentifiers.length !== numAcceptedOffers) {
|
|
259
|
+
throw new factory.errors.Argument('Transaction', 'ticketNumbers must be unique');
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// チケット識別子ユニークネス検証(2024-04-15~)
|
|
263
|
+
let ticketNumbers = [];
|
|
264
|
+
params.acceptedOffers.forEach(({ itemOffered }) => {
|
|
265
|
+
if (itemOffered.typeOf === factory.reservationType.BusReservation
|
|
266
|
+
|| itemOffered.typeOf === factory.reservationType.EventReservation) {
|
|
267
|
+
if (typeof itemOffered.reservedTicket.ticketNumber === 'string') {
|
|
268
|
+
ticketNumbers.push(itemOffered.reservedTicket.ticketNumber);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
if (ticketNumbers.length > 0) {
|
|
273
|
+
ticketNumbers = [...new Set(ticketNumbers)];
|
|
274
|
+
debug('ticketNumbers unique?', ticketNumbers.join(' '), 'numAcceptedOffers:', numAcceptedOffers);
|
|
275
|
+
// チケット識別子が注文内ユニークなので、注文オファー数に一致するはず
|
|
276
|
+
if (ticketNumbers.length !== numAcceptedOffers) {
|
|
277
|
+
throw new factory.errors.Argument('Transaction', 'ticketNumbers must be unique');
|
|
278
|
+
}
|
|
279
|
+
}
|
|
244
280
|
}
|
|
245
|
-
exports.
|
|
281
|
+
exports.validateAcceptedOffers = validateAcceptedOffers;
|
|
246
282
|
function validateOrderedItem(params) {
|
|
247
283
|
var _a, _b;
|
|
248
284
|
if (!Array.isArray(params.order.orderedItem)) {
|
package/lib/chevre/settings.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ export declare const USE_OWNERSHIP_INFO_BY_WEB_APPLICATION: boolean;
|
|
|
43
43
|
export declare const USE_CHECK_RESOURCE_TASK: boolean;
|
|
44
44
|
export declare const USE_OPTIMIZE_RESERVATION_EXCEPTIONS: string[];
|
|
45
45
|
export declare const USE_OPTIMIZE_INFORM_EVENT: boolean;
|
|
46
|
+
export declare const USE_VALIDATE_MOVIE_TICKET_BY_TICKET_IDENTIFIER: boolean;
|
|
46
47
|
export declare const MONGO_MAX_TIME_MS: number;
|
|
47
48
|
export declare const MONGO_READ_PREFERENCE: string;
|
|
48
49
|
export declare const MONGO_AUTO_INDEX: boolean;
|
package/lib/chevre/settings.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_OPTIMIZE_INFORM_EVENT = exports.USE_OPTIMIZE_RESERVATION_EXCEPTIONS = exports.USE_CHECK_RESOURCE_TASK = exports.USE_OWNERSHIP_INFO_BY_WEB_APPLICATION = exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = exports.USE_FETCH_API = exports.USE_OPTIMIZE_TICKET_OFFER = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = exports.DEFAULT_SENDER_EMAIL = exports.TRANSACTION_CANCELED_STORAGE_PERIOD_IN_DAYS = exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = exports.MAX_NUM_CREDIT_CARD_PAYMENT_METHOD = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.MAXIMUM_RESERVATION_GRACE_PERIOD_IN_DAYS = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
|
|
3
|
+
exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_VALIDATE_MOVIE_TICKET_BY_TICKET_IDENTIFIER = exports.USE_OPTIMIZE_INFORM_EVENT = exports.USE_OPTIMIZE_RESERVATION_EXCEPTIONS = exports.USE_CHECK_RESOURCE_TASK = exports.USE_OWNERSHIP_INFO_BY_WEB_APPLICATION = exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = exports.USE_FETCH_API = exports.USE_OPTIMIZE_TICKET_OFFER = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = exports.DEFAULT_SENDER_EMAIL = exports.TRANSACTION_CANCELED_STORAGE_PERIOD_IN_DAYS = exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = exports.MAX_NUM_CREDIT_CARD_PAYMENT_METHOD = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.MAXIMUM_RESERVATION_GRACE_PERIOD_IN_DAYS = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
|
|
4
4
|
const factory = require("./factory");
|
|
5
5
|
const transactionWebhookUrls = (typeof process.env.INFORM_TRANSACTION_URL === 'string')
|
|
6
6
|
? process.env.INFORM_TRANSACTION_URL.split(' ')
|
|
@@ -69,6 +69,7 @@ exports.USE_OPTIMIZE_RESERVATION_EXCEPTIONS = (typeof process.env.USE_OPTIMIZE_R
|
|
|
69
69
|
? process.env.USE_OPTIMIZE_RESERVATION_EXCEPTIONS.split(' ')
|
|
70
70
|
: [];
|
|
71
71
|
exports.USE_OPTIMIZE_INFORM_EVENT = process.env.USE_OPTIMIZE_INFORM_EVENT === '1';
|
|
72
|
+
exports.USE_VALIDATE_MOVIE_TICKET_BY_TICKET_IDENTIFIER = process.env.USE_VALIDATE_MOVIE_TICKET_BY_TICKET_IDENTIFIER === '1';
|
|
72
73
|
exports.MONGO_MAX_TIME_MS = (typeof process.env.MONGO_MAX_TIME_MS === 'string')
|
|
73
74
|
? Number(process.env.MONGO_MAX_TIME_MS)
|
|
74
75
|
// tslint:disable-next-line:no-magic-numbers
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@aws-sdk/credential-providers": "3.433.0",
|
|
13
|
-
"@chevre/factory": "4.367.0-alpha.
|
|
13
|
+
"@chevre/factory": "4.367.0-alpha.6",
|
|
14
14
|
"@cinerino/sdk": "5.17.1",
|
|
15
15
|
"@motionpicture/coa-service": "9.4.0",
|
|
16
16
|
"@motionpicture/gmo-service": "5.3.0",
|
|
@@ -110,5 +110,5 @@
|
|
|
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.29.0-alpha.
|
|
113
|
+
"version": "21.29.0-alpha.10"
|
|
114
114
|
}
|