@chevre/domain 21.29.0-alpha.9 → 21.29.0
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/migrateCancelReservationObject.ts +71 -0
- package/example/src/chevre/{migrateOrderAcceptedOfferSerialNumber.ts → migrateOrderAcceptedOfferReservedTicketIdentifier.ts} +27 -16
- package/example/src/chevre/migratePayTransactionReservedTicketIdentifier.ts +95 -0
- package/example/src/chevre/searchAssetTransactions.ts +38 -0
- package/example/src/chevre/searchOrders.ts +6 -1
- package/lib/chevre/repo/acceptedOffer.d.ts +7 -2
- package/lib/chevre/repo/acceptedOffer.js +8 -4
- package/lib/chevre/repo/account.js +1 -1
- package/lib/chevre/repo/aggregateOffer.js +1 -1
- package/lib/chevre/repo/assetTransaction.d.ts +24 -3
- package/lib/chevre/repo/assetTransaction.js +96 -72
- package/lib/chevre/repo/creativeWork.js +1 -1
- package/lib/chevre/repo/event.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/assetTransaction.d.ts +1 -1
- package/lib/chevre/repo/mongoose/schemas/assetTransaction.js +31 -23
- package/lib/chevre/repo/mongoose/schemas/order.js +12 -3
- package/lib/chevre/repo/order.js +14 -5
- package/lib/chevre/repo/paymentServiceProvider.js +1 -1
- package/lib/chevre/repo/product.js +1 -1
- package/lib/chevre/repo/productModel.d.ts +22 -3
- package/lib/chevre/repo/productModel.js +40 -3
- package/lib/chevre/repo/seller.js +1 -1
- package/lib/chevre/repo/serviceOutput.js +1 -1
- package/lib/chevre/repo/transaction.js +1 -1
- package/lib/chevre/service/assetTransaction/cancelReservation/factory.js +8 -1
- package/lib/chevre/service/assetTransaction/pay/potentialActions/createPayObjectServiceOutput.d.ts +4 -0
- package/lib/chevre/service/assetTransaction/pay/potentialActions/createPayObjectServiceOutput.js +36 -28
- package/lib/chevre/service/payment/any/factory.d.ts +1 -0
- package/lib/chevre/service/payment/any/factory.js +2 -1
- package/lib/chevre/service/payment/any.js +2 -1
- package/lib/chevre/service/report/telemetry.js +1 -1
- package/lib/chevre/service/task/onResourceUpdated/onCategoryCodeUpdated.d.ts +15 -0
- package/lib/chevre/service/task/onResourceUpdated/onCategoryCodeUpdated.js +26 -0
- package/lib/chevre/service/task/onResourceUpdated/onResourceDeleted.d.ts +2 -0
- package/lib/chevre/service/task/onResourceUpdated/onResourceDeleted.js +9 -0
- package/lib/chevre/service/task/onResourceUpdated/syncCategoryCode.d.ts +15 -0
- package/lib/chevre/service/task/onResourceUpdated/syncCategoryCode.js +54 -0
- package/lib/chevre/service/task/onResourceUpdated.js +11 -0
- package/lib/chevre/service/transaction/deleteTransaction.js +25 -3
- package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.d.ts +1 -5
- package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js +60 -57
- package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +1 -1
- package/lib/chevre/service/validation/validateOrder.js +13 -1
- package/lib/chevre/settings.d.ts +0 -4
- package/lib/chevre/settings.js +1 -8
- package/package.json +2 -2
- package/example/src/chevre/migrateOrderSeller.ts +0 -65
- package/example/src/chevre/migrateScreeningEventSeriesOffers.ts +0 -87
- package/example/src/chevre/playAroundProductModel.ts +0 -64
|
@@ -109,7 +109,7 @@ class MongoRepository {
|
|
|
109
109
|
let doc;
|
|
110
110
|
if (typeof params.id === 'string') {
|
|
111
111
|
// 上書き禁止属性を除外
|
|
112
|
-
const _a = params.$set, { id, project, typeOf
|
|
112
|
+
const _a = params.$set, { category, id, project, typeOf } = _a, setFields = __rest(_a, ["category", "id", "project", "typeOf"]);
|
|
113
113
|
doc = yield this.productModelModel.findOneAndUpdate({ _id: { $eq: params.id } }, {
|
|
114
114
|
$set: setFields
|
|
115
115
|
// $unset: params.$unset
|
|
@@ -126,10 +126,47 @@ class MongoRepository {
|
|
|
126
126
|
return doc.toObject();
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
|
-
|
|
129
|
+
/**
|
|
130
|
+
* 区分から同期する
|
|
131
|
+
*/
|
|
132
|
+
upsertByCategory(params) {
|
|
133
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
134
|
+
const upsertingProductModel = {
|
|
135
|
+
project: { id: params.category.project.id, typeOf: factory.organizationType.Project },
|
|
136
|
+
typeOf: 'ProductModel',
|
|
137
|
+
category: {
|
|
138
|
+
codeValue: params.category.codeValue,
|
|
139
|
+
inCodeSet: params.category.inCodeSet,
|
|
140
|
+
id: params.category.id
|
|
141
|
+
},
|
|
142
|
+
name: params.category.name,
|
|
143
|
+
offers: [{
|
|
144
|
+
typeOf: factory.offerType.Offer
|
|
145
|
+
}]
|
|
146
|
+
};
|
|
147
|
+
const { id, project, typeOf, offers, category } = upsertingProductModel, setFields = __rest(upsertingProductModel, ["id", "project", "typeOf", "offers", "category"]);
|
|
148
|
+
const doc = yield this.productModelModel.findOneAndUpdate({
|
|
149
|
+
'project.id': { $eq: upsertingProductModel.project.id },
|
|
150
|
+
'category.id': { $exists: true, $eq: upsertingProductModel.category.id }
|
|
151
|
+
}, {
|
|
152
|
+
$setOnInsert: { project, typeOf, offers, category },
|
|
153
|
+
$set: setFields
|
|
154
|
+
}, { new: true, upsert: true, projection: { _id: 1 } })
|
|
155
|
+
.exec();
|
|
156
|
+
if (doc === null) {
|
|
157
|
+
throw new factory.errors.NotFound(this.productModelModel.modelName);
|
|
158
|
+
}
|
|
159
|
+
return doc.toObject();
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 区分から削除する
|
|
164
|
+
*/
|
|
165
|
+
deleteByCategory(params) {
|
|
130
166
|
return __awaiter(this, void 0, void 0, function* () {
|
|
131
167
|
yield this.productModelModel.deleteMany({
|
|
132
|
-
'project.id': { $eq: params.project.id }
|
|
168
|
+
'project.id': { $eq: params.category.project.id },
|
|
169
|
+
'category.id': { $exists: true, $eq: params.category.id }
|
|
133
170
|
})
|
|
134
171
|
.exec();
|
|
135
172
|
});
|
|
@@ -316,7 +316,7 @@ class MongoRepository {
|
|
|
316
316
|
}
|
|
317
317
|
unsetUnnecessaryFields(params) {
|
|
318
318
|
return __awaiter(this, void 0, void 0, function* () {
|
|
319
|
-
return this.organizationModel.updateMany(params.filter, { $unset: params.$unset })
|
|
319
|
+
return this.organizationModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
|
|
320
320
|
.exec();
|
|
321
321
|
});
|
|
322
322
|
}
|
|
@@ -172,7 +172,7 @@ class MongoRepository {
|
|
|
172
172
|
}
|
|
173
173
|
unsetUnnecessaryFields(params) {
|
|
174
174
|
return __awaiter(this, void 0, void 0, function* () {
|
|
175
|
-
return this.serviceOutputModel.updateMany(params.filter, { $unset: params.$unset })
|
|
175
|
+
return this.serviceOutputModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
|
|
176
176
|
.exec();
|
|
177
177
|
});
|
|
178
178
|
}
|
|
@@ -755,7 +755,7 @@ class MongoRepository {
|
|
|
755
755
|
}
|
|
756
756
|
unsetUnnecessaryFields(params) {
|
|
757
757
|
return __awaiter(this, void 0, void 0, function* () {
|
|
758
|
-
return this.transactionModel.updateMany(params.filter, { $unset: params.$unset })
|
|
758
|
+
return this.transactionModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
|
|
759
759
|
.exec();
|
|
760
760
|
});
|
|
761
761
|
}
|
|
@@ -9,6 +9,7 @@ function createStartParams(params) {
|
|
|
9
9
|
var _a;
|
|
10
10
|
let reserveTransactionAsObject;
|
|
11
11
|
let eventReservationsAsObject;
|
|
12
|
+
let reservationNumber;
|
|
12
13
|
if (typeof ((_a = params.transaction) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') {
|
|
13
14
|
const reservationFor = params.transaction.object.reservationFor;
|
|
14
15
|
if (typeof (reservationFor === null || reservationFor === void 0 ? void 0 : reservationFor.typeOf) !== 'string') {
|
|
@@ -25,6 +26,7 @@ function createStartParams(params) {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
};
|
|
29
|
+
reservationNumber = params.transaction.transactionNumber;
|
|
28
30
|
}
|
|
29
31
|
if (Array.isArray(params.reservations)) {
|
|
30
32
|
eventReservationsAsObject = params.reservations.map((r) => {
|
|
@@ -36,8 +38,13 @@ function createStartParams(params) {
|
|
|
36
38
|
typeOf: r.typeOf
|
|
37
39
|
};
|
|
38
40
|
});
|
|
41
|
+
reservationNumber = eventReservationsAsObject[0].reservationNumber;
|
|
39
42
|
}
|
|
40
|
-
|
|
43
|
+
if (typeof reservationNumber !== 'string') {
|
|
44
|
+
throw new factory.errors.Argument('object', 'reservationNumber must be specified');
|
|
45
|
+
}
|
|
46
|
+
const cancelReservationObject = Object.assign(Object.assign(Object.assign({ clientUser: params.paramsWithoutDetail.object.clientUser }, (typeof (reserveTransactionAsObject === null || reserveTransactionAsObject === void 0 ? void 0 : reserveTransactionAsObject.typeOf) === 'string') ? { transaction: reserveTransactionAsObject } : undefined), (Array.isArray(eventReservationsAsObject)) ? { reservations: eventReservationsAsObject } : undefined), { reservationNumber, typeOf: factory.reservationType.ReservationPackage // 拡張(2024-04-18~)
|
|
47
|
+
});
|
|
41
48
|
return {
|
|
42
49
|
project: { id: params.project.id, typeOf: params.project.typeOf },
|
|
43
50
|
transactionNumber: params.transactionNumber,
|
package/lib/chevre/service/assetTransaction/pay/potentialActions/createPayObjectServiceOutput.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import * as factory from '../../../../factory';
|
|
2
|
+
/**
|
|
3
|
+
* PayAction.object.serviceOutputを作成する
|
|
4
|
+
* 決済カード決済の場合のみ、対象予約情報をserviceOutputに持つ決済カード情報として存在する
|
|
5
|
+
*/
|
|
2
6
|
declare function createPayObjectServiceOutput(params: {
|
|
3
7
|
transaction: factory.assetTransaction.ITransaction<factory.assetTransactionType.Pay>;
|
|
4
8
|
order: {
|
package/lib/chevre/service/assetTransaction/pay/potentialActions/createPayObjectServiceOutput.js
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createPayObjectServiceOutput = void 0;
|
|
4
4
|
const factory = require("../../../../factory");
|
|
5
|
+
const settings_1 = require("../../../../settings");
|
|
6
|
+
/**
|
|
7
|
+
* PayAction.object.serviceOutputを作成する
|
|
8
|
+
* 決済カード決済の場合のみ、対象予約情報をserviceOutputに持つ決済カード情報として存在する
|
|
9
|
+
*/
|
|
5
10
|
function createPayObjectServiceOutput(params) {
|
|
6
11
|
const transaction = params.transaction;
|
|
7
12
|
const paymentMethod = transaction.object.paymentMethod;
|
|
@@ -19,7 +24,7 @@ function createPayObjectServiceOutput(params) {
|
|
|
19
24
|
paymentServiceOutput = movieTickets.map((movieTicket) => {
|
|
20
25
|
var _a;
|
|
21
26
|
const amount = movieTicket2amount(transaction, movieTicket);
|
|
22
|
-
const reservation4invoice = movieTicket2reservation4invoice(movieTicket, order, String(paymentMethodType));
|
|
27
|
+
const reservation4invoice = movieTicket2reservation4invoice(movieTicket, order, String(paymentMethodType), transaction.transactionNumber);
|
|
23
28
|
return Object.assign(Object.assign({ identifier: movieTicket.identifier }, (typeof (amount === null || amount === void 0 ? void 0 : amount.value) === 'number') ? { amount } : undefined), (typeof ((_a = reservation4invoice.priceSpecification) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string')
|
|
24
29
|
? { serviceOutput: reservation4invoice }
|
|
25
30
|
: undefined);
|
|
@@ -88,11 +93,11 @@ function reservationPriceComponent2invoicePriceComponent(component) {
|
|
|
88
93
|
throw new factory.errors.NotImplemented(`unexpected priceComponent: ${component.typeOf}`);
|
|
89
94
|
}
|
|
90
95
|
}
|
|
91
|
-
|
|
96
|
+
/**
|
|
97
|
+
* 決済カードの対象予約情報を作成する
|
|
98
|
+
*/
|
|
99
|
+
function movieTicket2reservation4invoice(movieTicket, order, paymentMethodType, payTransactionNumber) {
|
|
92
100
|
var _a;
|
|
93
|
-
let ticketToken;
|
|
94
|
-
let reservationNumber = '';
|
|
95
|
-
let priceComponents4invoice = [];
|
|
96
101
|
// Orderから対象予約を取得
|
|
97
102
|
const reservationOffer = order.acceptedOffersMovieTicketUsed.find(({ itemOffered, priceSpecification }) => {
|
|
98
103
|
var _a, _b;
|
|
@@ -101,9 +106,6 @@ function movieTicket2reservation4invoice(movieTicket, order, paymentMethodType)
|
|
|
101
106
|
if ((priceSpecification === null || priceSpecification === void 0 ? void 0 : priceSpecification.typeOf) === factory.priceSpecificationType.CompoundPriceSpecification) {
|
|
102
107
|
// 適用購入管理番号が一致、かつ、決済方法区分が一致、の単価仕様を検索
|
|
103
108
|
mvtkUnitPriceSpec = (_a = priceSpecification === null || priceSpecification === void 0 ? void 0 : priceSpecification.priceComponent) === null || _a === void 0 ? void 0 : _a.find((p) => {
|
|
104
|
-
// if (p.typeOf !== factory.priceSpecificationType.UnitPriceSpecification) {
|
|
105
|
-
// return false;
|
|
106
|
-
// }
|
|
107
109
|
return p.typeOf === factory.priceSpecificationType.UnitPriceSpecification
|
|
108
110
|
&& Array.isArray(p.appliesToMovieTicket)
|
|
109
111
|
&& p.appliesToMovieTicket.some((appliesToMovieTicket) => {
|
|
@@ -112,32 +114,38 @@ function movieTicket2reservation4invoice(movieTicket, order, paymentMethodType)
|
|
|
112
114
|
});
|
|
113
115
|
});
|
|
114
116
|
}
|
|
115
|
-
|
|
116
|
-
|| itemOffered.typeOf === factory.reservationType.BusReservation)
|
|
117
|
-
&& mvtkUnitPriceSpec !== undefined
|
|
117
|
+
let isMovieTicketServiceOutput = mvtkUnitPriceSpec !== undefined
|
|
118
118
|
&& itemOffered.reservationFor.id === movieTicket.serviceOutput.reservationFor.id
|
|
119
119
|
&& ((_b = itemOffered.reservedTicket.ticketedSeat) === null || _b === void 0 ? void 0 : _b.seatNumber) === movieTicket.serviceOutput.reservedTicket.ticketedSeat.seatNumber
|
|
120
120
|
&& itemOffered.reservedTicket.ticketedSeat.seatSection === movieTicket.serviceOutput.reservedTicket.ticketedSeat.seatSection;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
// }
|
|
127
|
-
const ticketTokenByReservationOffer = reservationOffer.itemOffered.reservedTicket.ticketToken;
|
|
128
|
-
if (typeof ticketTokenByReservationOffer === 'string' && ticketTokenByReservationOffer.length > 0) {
|
|
129
|
-
ticketToken = ticketTokenByReservationOffer;
|
|
130
|
-
}
|
|
131
|
-
reservationNumber = reservationOffer.itemOffered.reservationNumber;
|
|
132
|
-
const priceComponent = (_a = reservationOffer.priceSpecification) === null || _a === void 0 ? void 0 : _a.priceComponent;
|
|
133
|
-
if (Array.isArray(priceComponent)) {
|
|
134
|
-
priceComponents4invoice = priceComponent.map(reservationPriceComponent2invoicePriceComponent);
|
|
121
|
+
// チケット識別子で照合(2024-04-17~)
|
|
122
|
+
if (settings_1.USE_VALIDATE_MOVIE_TICKET_BY_TICKET_IDENTIFIER) {
|
|
123
|
+
isMovieTicketServiceOutput = isMovieTicketServiceOutput
|
|
124
|
+
&& typeof itemOffered.reservedTicket.identifier === 'string'
|
|
125
|
+
&& itemOffered.reservedTicket.identifier === movieTicket.serviceOutput.reservedTicket.identifier;
|
|
135
126
|
}
|
|
127
|
+
return isMovieTicketServiceOutput;
|
|
128
|
+
});
|
|
129
|
+
// 対象予約は存在必須(2024-04-17~)
|
|
130
|
+
if (reservationOffer === undefined) {
|
|
131
|
+
throw new factory.errors.NotFound(factory.offerType.Offer, `acceptedOffer for the movieTicket not found at movieTicket2reservation4invoice. [movieTicket.identifier:${movieTicket.identifier} movieTicket.serviceType:${movieTicket.serviceType} paymentMethodType:${paymentMethodType} payTransactionNumber:${payTransactionNumber}]`);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* COAの場合のみ予約のチケットトークンが存在
|
|
135
|
+
*/
|
|
136
|
+
let ticketToken;
|
|
137
|
+
const ticketTokenByReservationOffer = reservationOffer.itemOffered.reservedTicket.ticketToken;
|
|
138
|
+
if (typeof ticketTokenByReservationOffer === 'string' && ticketTokenByReservationOffer.length > 0) {
|
|
139
|
+
ticketToken = ticketTokenByReservationOffer;
|
|
140
|
+
}
|
|
141
|
+
const reservationNumber = reservationOffer.itemOffered.reservationNumber;
|
|
142
|
+
let priceComponents4invoice = [];
|
|
143
|
+
const priceComponent = (_a = reservationOffer.priceSpecification) === null || _a === void 0 ? void 0 : _a.priceComponent;
|
|
144
|
+
if (Array.isArray(priceComponent)) {
|
|
145
|
+
priceComponents4invoice = priceComponent.map(reservationPriceComponent2invoicePriceComponent);
|
|
136
146
|
}
|
|
137
147
|
return Object.assign({ priceSpecification: {
|
|
138
148
|
typeOf: factory.priceSpecificationType.CompoundPriceSpecification,
|
|
139
149
|
priceComponent: priceComponents4invoice
|
|
140
|
-
},
|
|
141
|
-
// add reservationNumber(2023-03-20~)
|
|
142
|
-
reservationNumber }, (typeof ticketToken === 'string') ? { reservedTicket: { ticketToken } } : undefined);
|
|
150
|
+
}, reservationNumber }, (typeof ticketToken === 'string') ? { reservedTicket: { ticketToken } } : undefined);
|
|
143
151
|
}
|
|
@@ -18,6 +18,7 @@ export declare function creatPayTransactionStartParams(params: {
|
|
|
18
18
|
transactionNumber: string;
|
|
19
19
|
location?: factory.action.trade.pay.ILocation;
|
|
20
20
|
}): factory.assetTransaction.pay.IStartParamsWithoutDetail;
|
|
21
|
+
export declare function createMovieTicket(params: factory.action.trade.pay.IMovieTicket): factory.action.trade.pay.IMovieTicket;
|
|
21
22
|
export declare function createAuthorizeResult(params: {
|
|
22
23
|
object: factory.action.authorize.paymentMethod.any.IObject;
|
|
23
24
|
payTransaction: factory.assetTransaction.pay.ITransaction;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.optimizeAction4inform = exports.createAuthorizeResult = exports.creatPayTransactionStartParams = void 0;
|
|
3
|
+
exports.optimizeAction4inform = exports.createAuthorizeResult = exports.createMovieTicket = exports.creatPayTransactionStartParams = void 0;
|
|
4
4
|
const moment = require("moment");
|
|
5
5
|
const util = require("util");
|
|
6
6
|
const factory = require("../../../factory");
|
|
@@ -96,6 +96,7 @@ function createMovieTicket(params) {
|
|
|
96
96
|
serviceOutput
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
|
+
exports.createMovieTicket = createMovieTicket;
|
|
99
100
|
function createAuthorizeResult(params) {
|
|
100
101
|
var _a, _b, _c, _d, _e, _f;
|
|
101
102
|
const payTransactionObject = params.payTransaction.object;
|
|
@@ -329,11 +329,12 @@ function authorize(params) {
|
|
|
329
329
|
const publishTransactionNumberResult = yield repos.transactionNumber.publishByTimestamp({ startDate: new Date() });
|
|
330
330
|
transactionNumber = publishTransactionNumberResult.transactionNumber;
|
|
331
331
|
}
|
|
332
|
+
const movieTickets = (Array.isArray(params.object.movieTickets)) ? params.object.movieTickets.map(factory_1.createMovieTicket) : undefined;
|
|
332
333
|
const { accountId } = yield fixAccountIdIfPossible({
|
|
333
334
|
object: params.object,
|
|
334
335
|
project: { id: transaction.project.id }
|
|
335
336
|
})({ action: repos.action });
|
|
336
|
-
const authorizeObject = Object.assign(Object.assign(Object.assign({}, params.object), { accountId, paymentMethodId: transactionNumber, typeOf: factory.action.authorize.paymentMethod.any.ResultType.Payment }), (creditCard !== undefined) ? { creditCard } : undefined);
|
|
337
|
+
const authorizeObject = Object.assign(Object.assign(Object.assign(Object.assign({}, params.object), { accountId, paymentMethodId: transactionNumber, typeOf: factory.action.authorize.paymentMethod.any.ResultType.Payment }), (creditCard !== undefined) ? { creditCard } : undefined), (Array.isArray(movieTickets)) ? { movieTickets } : undefined);
|
|
337
338
|
// 承認アクションを開始する
|
|
338
339
|
const actionAttributes = {
|
|
339
340
|
project: transaction.project,
|
|
@@ -184,7 +184,7 @@ function createSellerFlow(measuredFrom, measuredThrough, sellerId) {
|
|
|
184
184
|
}, [], []);
|
|
185
185
|
debug(actionsOnExpiredTransactions.length, 'actionsOnExpiredTransactions found.');
|
|
186
186
|
const numbersOfActionsOnExpired = expiredTransactionIds.map((transactionId) => {
|
|
187
|
-
return actionsOnExpiredTransactions.filter((action) => action.purpose.id === transactionId).length;
|
|
187
|
+
return actionsOnExpiredTransactions.filter((action) => { var _a; return ((_a = action.purpose) === null || _a === void 0 ? void 0 : _a.id) === transactionId; }).length;
|
|
188
188
|
});
|
|
189
189
|
const totalNumberOfActionsOnExpired = numbersOfActionsOnExpired.reduce((a, b) => a + b, 0);
|
|
190
190
|
const maxNumberOfActionsOnExpired = numbersOfActionsOnExpired.reduce((a, b) => Math.max(a, b), 0);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MongoRepository as CategoryCodeRepo } from '../../../repo/categoryCode';
|
|
2
|
+
import type { MongoRepository as ProductModelRepo } from '../../../repo/productModel';
|
|
3
|
+
/**
|
|
4
|
+
* 区分変更時処理
|
|
5
|
+
*/
|
|
6
|
+
export declare function onCategoryCodeUpdated(params: {
|
|
7
|
+
project: {
|
|
8
|
+
id: string;
|
|
9
|
+
};
|
|
10
|
+
ids: string[];
|
|
11
|
+
isDeleted: boolean;
|
|
12
|
+
}): (repos: {
|
|
13
|
+
categoryCode: CategoryCodeRepo;
|
|
14
|
+
productModel: ProductModelRepo;
|
|
15
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.onCategoryCodeUpdated = void 0;
|
|
13
|
+
const syncCategoryCode_1 = require("./syncCategoryCode");
|
|
14
|
+
/**
|
|
15
|
+
* 区分変更時処理
|
|
16
|
+
*/
|
|
17
|
+
function onCategoryCodeUpdated(params) {
|
|
18
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
yield (0, syncCategoryCode_1.syncCategoryCode)({
|
|
20
|
+
project: { id: params.project.id },
|
|
21
|
+
ids: params.ids,
|
|
22
|
+
isDeleted: false
|
|
23
|
+
})(repos);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
exports.onCategoryCodeUpdated = onCategoryCodeUpdated;
|
|
@@ -14,6 +14,7 @@ import type { MongoRepository as HasPOSRepo } from '../../../repo/place/hasPOS';
|
|
|
14
14
|
import type { MongoRepository as MovieTheaterRepo } from '../../../repo/place/movieTheater';
|
|
15
15
|
import type { MongoRepository as ScreeningRoomRepo } from '../../../repo/place/screeningRoom';
|
|
16
16
|
import type { MongoRepository as ProductRepo } from '../../../repo/product';
|
|
17
|
+
import type { MongoRepository as ProductModelRepo } from '../../../repo/productModel';
|
|
17
18
|
import type { MongoRepository as ProductOfferRepo } from '../../../repo/productOffer';
|
|
18
19
|
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
19
20
|
export declare function onResourceDeleted(params: factory.task.onResourceUpdated.IData): (repos: {
|
|
@@ -32,6 +33,7 @@ export declare function onResourceDeleted(params: factory.task.onResourceUpdated
|
|
|
32
33
|
offerCatalogItem: OfferCatalogItemRepo;
|
|
33
34
|
screeningRoom: ScreeningRoomRepo;
|
|
34
35
|
product: ProductRepo;
|
|
36
|
+
productModel: ProductModelRepo;
|
|
35
37
|
productOffer: ProductOfferRepo;
|
|
36
38
|
task: TaskRepo;
|
|
37
39
|
}) => Promise<void>;
|
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.onResourceDeleted = void 0;
|
|
13
13
|
const factory = require("../../../factory");
|
|
14
14
|
const onHasPOSUpdated_1 = require("./onHasPOSUpdated");
|
|
15
|
+
const syncCategoryCode_1 = require("./syncCategoryCode");
|
|
15
16
|
const syncOfferCatalog_1 = require("./syncOfferCatalog");
|
|
16
17
|
// tslint:disable-next-line:max-func-body-length
|
|
17
18
|
function onResourceDeleted(params) {
|
|
@@ -89,6 +90,14 @@ function onResourceDeleted(params) {
|
|
|
89
90
|
typeOf: params.typeOf
|
|
90
91
|
})(repos);
|
|
91
92
|
break;
|
|
93
|
+
// 区分削除に対応(2024-04-18~)
|
|
94
|
+
case 'CategoryCode':
|
|
95
|
+
yield (0, syncCategoryCode_1.syncCategoryCode)({
|
|
96
|
+
project: { id: params.project.id },
|
|
97
|
+
ids: params.id,
|
|
98
|
+
isDeleted: true
|
|
99
|
+
})(repos);
|
|
100
|
+
break;
|
|
92
101
|
default:
|
|
93
102
|
// no op
|
|
94
103
|
throw new factory.errors.NotImplemented(`${params.typeOf} onDeleted not implemented`);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MongoRepository as CategoryCodeRepo } from '../../../repo/categoryCode';
|
|
2
|
+
import type { MongoRepository as ProductModelRepo } from '../../../repo/productModel';
|
|
3
|
+
/**
|
|
4
|
+
* 区分を他リソースへ同期する
|
|
5
|
+
*/
|
|
6
|
+
export declare function syncCategoryCode(params: {
|
|
7
|
+
project: {
|
|
8
|
+
id: string;
|
|
9
|
+
};
|
|
10
|
+
ids: string[];
|
|
11
|
+
isDeleted: boolean;
|
|
12
|
+
}): (repos: {
|
|
13
|
+
categoryCode: CategoryCodeRepo;
|
|
14
|
+
productModel: ProductModelRepo;
|
|
15
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.syncCategoryCode = void 0;
|
|
13
|
+
const factory = require("../../../factory");
|
|
14
|
+
/**
|
|
15
|
+
* 区分を他リソースへ同期する
|
|
16
|
+
*/
|
|
17
|
+
function syncCategoryCode(params) {
|
|
18
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
if (params.isDeleted) {
|
|
20
|
+
for (const categoryCodeId of params.ids) {
|
|
21
|
+
// プロダクトモデルを削除
|
|
22
|
+
yield repos.productModel.deleteByCategory({
|
|
23
|
+
category: {
|
|
24
|
+
project: { id: params.project.id, typeOf: factory.organizationType.Project },
|
|
25
|
+
id: categoryCodeId
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
for (const categoryCodeId of params.ids) {
|
|
32
|
+
const syncingCategoryCode = (yield repos.categoryCode.search({
|
|
33
|
+
limit: 1,
|
|
34
|
+
page: 1,
|
|
35
|
+
project: { id: { $eq: params.project.id } },
|
|
36
|
+
id: { $eq: categoryCodeId }
|
|
37
|
+
}, ['codeValue', 'inCodeSet', 'name', 'project', 'id'], [])).shift();
|
|
38
|
+
if (syncingCategoryCode !== undefined) {
|
|
39
|
+
switch (syncingCategoryCode.inCodeSet.identifier) {
|
|
40
|
+
case factory.categoryCode.CategorySetIdentifier.SeatingType:
|
|
41
|
+
// プロダクトモデルへ同期
|
|
42
|
+
yield repos.productModel.upsertByCategory({
|
|
43
|
+
category: Object.assign(Object.assign({}, syncingCategoryCode), { id: categoryCodeId })
|
|
44
|
+
});
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
// no op
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
exports.syncCategoryCode = syncCategoryCode;
|
|
@@ -27,9 +27,11 @@ const hasPOS_1 = require("../../repo/place/hasPOS");
|
|
|
27
27
|
const movieTheater_1 = require("../../repo/place/movieTheater");
|
|
28
28
|
const screeningRoom_1 = require("../../repo/place/screeningRoom");
|
|
29
29
|
const product_1 = require("../../repo/product");
|
|
30
|
+
const productModel_1 = require("../../repo/productModel");
|
|
30
31
|
const productOffer_1 = require("../../repo/productOffer");
|
|
31
32
|
const task_1 = require("../../repo/task");
|
|
32
33
|
const onAggregateOfferUpdated_1 = require("./onResourceUpdated/onAggregateOfferUpdated");
|
|
34
|
+
const onCategoryCodeUpdated_1 = require("./onResourceUpdated/onCategoryCodeUpdated");
|
|
33
35
|
const onHasPOSUpdated_1 = require("./onResourceUpdated/onHasPOSUpdated");
|
|
34
36
|
const onOfferCatalogUpdated_1 = require("./onResourceUpdated/onOfferCatalogUpdated");
|
|
35
37
|
const onResourceDeleted_1 = require("./onResourceUpdated/onResourceDeleted");
|
|
@@ -57,6 +59,7 @@ function call(data) {
|
|
|
57
59
|
paymentServiceProvider: new paymentServiceProvider_1.MongoRepository(connection),
|
|
58
60
|
screeningRoom: new screeningRoom_1.MongoRepository(connection),
|
|
59
61
|
product: new product_1.MongoRepository(connection),
|
|
62
|
+
productModel: new productModel_1.MongoRepository(connection),
|
|
60
63
|
productOffer: new productOffer_1.MongoRepository(connection),
|
|
61
64
|
task: new task_1.MongoRepository(connection)
|
|
62
65
|
});
|
|
@@ -162,6 +165,14 @@ function onResourceUpdated(params) {
|
|
|
162
165
|
isOfferCatalogItem: params.isOfferCatalogItem === true
|
|
163
166
|
})(repos);
|
|
164
167
|
break;
|
|
168
|
+
// 区分に対応(2024-04-18~)
|
|
169
|
+
case 'CategoryCode':
|
|
170
|
+
yield (0, onCategoryCodeUpdated_1.onCategoryCodeUpdated)({
|
|
171
|
+
project: { id: params.project.id },
|
|
172
|
+
ids: params.id,
|
|
173
|
+
isDeleted: false
|
|
174
|
+
})(repos);
|
|
175
|
+
break;
|
|
165
176
|
default:
|
|
166
177
|
// no op
|
|
167
178
|
}
|
|
@@ -151,6 +151,7 @@ function deleteTransactionById(params) {
|
|
|
151
151
|
let payTransactionNumbers = [];
|
|
152
152
|
let deleteReservationsResult;
|
|
153
153
|
let deleteReserveTransactionResult;
|
|
154
|
+
let deleteCancelReservationTransactionResult;
|
|
154
155
|
let deletedReservationNumbers = [];
|
|
155
156
|
let deleteActionResult;
|
|
156
157
|
const action = yield repos.action.start(actionAttributes);
|
|
@@ -192,6 +193,8 @@ function deleteTransactionById(params) {
|
|
|
192
193
|
const deleteReservationsByPlaceOrderResult = yield deleteReservationsByPlaceOrder({ authorizeActions, transaction })(repos);
|
|
193
194
|
deleteReservationsResult = deleteReservationsByPlaceOrderResult.deleteResult;
|
|
194
195
|
deleteReserveTransactionResult = deleteReservationsByPlaceOrderResult.deleteReserveTransactionResult;
|
|
196
|
+
deleteCancelReservationTransactionResult =
|
|
197
|
+
deleteReservationsByPlaceOrderResult.deleteCancelReservationTransactionResult;
|
|
195
198
|
deletedReservationNumbers = deleteReservationsByPlaceOrderResult.reserveTransactionNumbers;
|
|
196
199
|
// アクション削除(2023-05-19~)
|
|
197
200
|
deleteActionResult = yield repos.action.deleteByPurpose({
|
|
@@ -239,6 +242,7 @@ function deleteTransactionById(params) {
|
|
|
239
242
|
payTransactionNumbers,
|
|
240
243
|
deleteReservationsResult,
|
|
241
244
|
deleteReserveTransactionResult,
|
|
245
|
+
deleteCancelReservationTransactionResult,
|
|
242
246
|
deletedReservationNumbers,
|
|
243
247
|
deleteActionResult
|
|
244
248
|
};
|
|
@@ -249,6 +253,7 @@ function deleteReservationsByPlaceOrder(params) {
|
|
|
249
253
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
250
254
|
let deleteResult;
|
|
251
255
|
let deleteReserveTransactionResult;
|
|
256
|
+
let deleteCancelReservationTransactionResult;
|
|
252
257
|
const authorizeActions = params.authorizeActions;
|
|
253
258
|
// 予約取引番号を抽出
|
|
254
259
|
const authorizeReservationOfferActions = authorizeActions
|
|
@@ -283,10 +288,27 @@ function deleteReservationsByPlaceOrder(params) {
|
|
|
283
288
|
ok: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.ok,
|
|
284
289
|
deletedCount: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.deletedCount
|
|
285
290
|
};
|
|
286
|
-
//
|
|
287
|
-
|
|
291
|
+
// 予約番号で予約取消取引を検索
|
|
292
|
+
const deletingCancelReservationTransactions = yield repos.assetTransaction.search({
|
|
293
|
+
project: { id: { $eq: params.transaction.project.id } },
|
|
294
|
+
object: { reservationNumber: { $in: reserveTransactionNumbers } },
|
|
295
|
+
typeOf: factory.assetTransactionType.CancelReservation
|
|
296
|
+
}, ['transactionNumber'], []);
|
|
297
|
+
if (deletingCancelReservationTransactions.length > 0) {
|
|
298
|
+
// 予約取消取引も削除(2024-04-18~)
|
|
299
|
+
const deleteCancelReservationResult = yield repos.assetTransaction.deleteByTransactionNumber({
|
|
300
|
+
project: { id: params.transaction.project.id },
|
|
301
|
+
transactionNumbers: deletingCancelReservationTransactions.map(({ transactionNumber }) => String(transactionNumber)),
|
|
302
|
+
typeOf: factory.assetTransactionType.CancelReservation
|
|
303
|
+
});
|
|
304
|
+
deleteCancelReservationTransactionResult = {
|
|
305
|
+
n: deleteCancelReservationResult === null || deleteCancelReservationResult === void 0 ? void 0 : deleteCancelReservationResult.n,
|
|
306
|
+
ok: deleteCancelReservationResult === null || deleteCancelReservationResult === void 0 ? void 0 : deleteCancelReservationResult.ok,
|
|
307
|
+
deletedCount: deleteCancelReservationResult === null || deleteCancelReservationResult === void 0 ? void 0 : deleteCancelReservationResult.deletedCount
|
|
308
|
+
};
|
|
309
|
+
}
|
|
288
310
|
}
|
|
289
|
-
return { deleteResult, deleteReserveTransactionResult, reserveTransactionNumbers };
|
|
311
|
+
return { deleteResult, deleteReserveTransactionResult, deleteCancelReservationTransactionResult, reserveTransactionNumbers };
|
|
290
312
|
});
|
|
291
313
|
}
|
|
292
314
|
function deletePayTransactionsByPlaceOrder(params) {
|
package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as factory from '../../../../factory';
|
|
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
|
-
};
|
|
6
|
-
};
|
|
2
|
+
export type IMovieTicket4validate = Pick<factory.paymentMethod.paymentCard.movieTicket.IMovieTicketPaymentCard, 'identifier' | 'serviceOutput' | 'serviceType' | 'typeOf'>;
|
|
7
3
|
/**
|
|
8
4
|
* 興行オファー承認に対して決済承認条件が整っているかどうか検証する
|
|
9
5
|
* 決済方法区分ごとに検証
|