@chevre/domain 24.1.0-alpha.33 → 24.1.0-alpha.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/chevre/repo/acceptedOffer.d.ts +6 -6
- package/lib/chevre/repo/acceptedOffer.js +16 -10
- package/lib/chevre/repo/acceptedOfferInReserve.d.ts +3 -1
- package/lib/chevre/repo/acceptedOfferInReserve.js +12 -6
- package/lib/chevre/repo/orderInTransaction.d.ts +7 -9
- package/lib/chevre/repo/orderInTransaction.js +28 -16
- package/lib/chevre/service/offer/any.d.ts +2 -2
- package/lib/chevre/service/offer/event/authorize/factory.d.ts +1 -1
- package/lib/chevre/service/offer/event/authorize/factory.js +9 -8
- package/lib/chevre/service/offer/event/authorize.d.ts +3 -4
- package/lib/chevre/service/offer/event/authorize.js +26 -9
- package/lib/chevre/service/order/deleteOrder.js +3 -1
- package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +4 -1
- package/lib/chevre/service/order/sendOrder.js +3 -1
- package/lib/chevre/service/reserve/findByCode.js +3 -1
- package/lib/chevre/service/reserve/searchByOrder.js +3 -1
- package/lib/chevre/service/task/confirmReserveTransaction.js +3 -1
- package/lib/chevre/service/task/payment/payByTask.js +3 -1
- package/lib/chevre/service/transaction/returnOrder/preStart.js +3 -1
- package/lib/chevre/service/validation/validateOrder.js +3 -1
- package/package.json +1 -1
|
@@ -18,8 +18,8 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
|
|
|
18
18
|
/**
|
|
19
19
|
* オファー展開の注文検索
|
|
20
20
|
*/
|
|
21
|
-
searchWithUnwoundAcceptedOffers(params: factory.order.ISearchConditions, projection: IProjection4searchWithUnwoundAcceptedOffers,
|
|
22
|
-
useItemOfferedByReserve
|
|
21
|
+
searchWithUnwoundAcceptedOffers(params: factory.order.ISearchConditions, projection: IProjection4searchWithUnwoundAcceptedOffers, options: {
|
|
22
|
+
useItemOfferedByReserve: boolean;
|
|
23
23
|
}): Promise<(factory.order.IOrder & {
|
|
24
24
|
acceptedOffers: [IAcceptedOffer];
|
|
25
25
|
_id?: never;
|
|
@@ -67,8 +67,8 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
|
|
|
67
67
|
};
|
|
68
68
|
};
|
|
69
69
|
};
|
|
70
|
-
},
|
|
71
|
-
useItemOfferedByReserve
|
|
70
|
+
}, options: {
|
|
71
|
+
useItemOfferedByReserve: boolean;
|
|
72
72
|
}): Promise<IAcceptedOffer[]>;
|
|
73
73
|
/**
|
|
74
74
|
* 注文オファーをsliceして検索する(2024-01-10~)
|
|
@@ -83,8 +83,8 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
|
|
|
83
83
|
$eq: string;
|
|
84
84
|
};
|
|
85
85
|
};
|
|
86
|
-
},
|
|
87
|
-
useItemOfferedByReserve
|
|
86
|
+
}, options: {
|
|
87
|
+
useItemOfferedByReserve: boolean;
|
|
88
88
|
}): Promise<ISearchSlicedAcceptedOffersResult>;
|
|
89
89
|
countByOrderNumber(filter: {
|
|
90
90
|
orderNumber: {
|
|
@@ -19,7 +19,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
19
19
|
/**
|
|
20
20
|
* オファー展開の注文検索
|
|
21
21
|
*/
|
|
22
|
-
async searchWithUnwoundAcceptedOffers(params, projection,
|
|
22
|
+
async searchWithUnwoundAcceptedOffers(params, projection, options) {
|
|
23
23
|
const conditions = order_2.OrderRepo.CREATE_MONGO_CONDITIONS(params);
|
|
24
24
|
const aggregate = this.orderModel.aggregate();
|
|
25
25
|
// unwind->matchでは遅い
|
|
@@ -54,6 +54,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
54
54
|
// 予約取引を参照(2026-05-17~)
|
|
55
55
|
const offeredThroughIdentifier = orders.at(0)?.acceptedOffers[0].offeredThrough?.identifier;
|
|
56
56
|
const useReserveTransaction = offeredThroughIdentifier !== factory_1.factory.service.webAPI.Identifier.COA; // COAでは予約取引を参照しない
|
|
57
|
+
const { useItemOfferedByReserve } = options;
|
|
57
58
|
if (useReserveTransaction) {
|
|
58
59
|
const reservationNumbers = [...new Set(orders.map((order) => String(order.acceptedOffers[0].serialNumber)))];
|
|
59
60
|
let acceptedOffersByReserveTransaction = [];
|
|
@@ -72,17 +73,22 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
72
73
|
if (priceSpecByReserveTransaction === undefined) {
|
|
73
74
|
console.error('repo:acceptedOffer: searchWithUnwoundAcceptedOffers: priceSpecByReserveTransaction: undefined!!!', acceptedOffer.itemOffered.id);
|
|
74
75
|
}
|
|
76
|
+
const itemOfferedByReserve = acceptedOfferByReserveTransaction?.itemOffered;
|
|
77
|
+
// itemOfferedByReserveは必ず存在するはず
|
|
78
|
+
if (itemOfferedByReserve === undefined) {
|
|
79
|
+
console.error('repo:acceptedOffer: searchWithUnwoundAcceptedOffers: itemOfferedByReserve: undefined!!!', acceptedOffer.itemOffered.id);
|
|
80
|
+
}
|
|
75
81
|
const { priceSpecification: _originalPriceSpec, // 注文ドキュメントのpriceSpecificationはもう採用しない(2026-05-21~)
|
|
76
|
-
...acceptedOfferWithoutPrice } = acceptedOffer;
|
|
82
|
+
itemOffered, ...acceptedOfferWithoutPrice } = acceptedOffer;
|
|
77
83
|
return {
|
|
78
84
|
...order,
|
|
79
85
|
acceptedOffers: [
|
|
80
86
|
{
|
|
81
87
|
...acceptedOfferWithoutPrice,
|
|
82
|
-
...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }) // 予約取引参照の値で上書き
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }), // 予約取引参照の値で上書き
|
|
89
|
+
...(useItemOfferedByReserve && itemOfferedByReserve !== undefined)
|
|
90
|
+
? { itemOffered: itemOfferedByReserve } // 予約取引参照の値で上書き(2026-05-25~)
|
|
91
|
+
: { itemOffered }
|
|
86
92
|
}
|
|
87
93
|
]
|
|
88
94
|
};
|
|
@@ -124,7 +130,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
124
130
|
*/
|
|
125
131
|
async searchAcceptedOffersByOrderNumber(filter,
|
|
126
132
|
// inclusion?: (keyof IAcceptedOffer)[], // 分かりにくいので廃止(2026-05-17~)
|
|
127
|
-
|
|
133
|
+
options) {
|
|
128
134
|
/**
|
|
129
135
|
* unwind前に1ドキュメントを特定するためのstage
|
|
130
136
|
*/
|
|
@@ -219,12 +225,12 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
219
225
|
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
220
226
|
.exec();
|
|
221
227
|
// 予約取引を参照(2026-05-18~)
|
|
222
|
-
return this.addAcceptedOffersDetails(acceptedOffers);
|
|
228
|
+
return this.addAcceptedOffersDetails(acceptedOffers, options);
|
|
223
229
|
}
|
|
224
230
|
/**
|
|
225
231
|
* 注文オファーをsliceして検索する(2024-01-10~)
|
|
226
232
|
*/
|
|
227
|
-
async searchSlicedAcceptedOffersByOrderNumber(filter,
|
|
233
|
+
async searchSlicedAcceptedOffersByOrderNumber(filter, options) {
|
|
228
234
|
const aggregate = this.orderModel.aggregate([
|
|
229
235
|
{ $match: { orderNumber: { $eq: filter.orderNumber.$eq } } },
|
|
230
236
|
{ $match: { 'project.id': { $eq: filter.project.id.$eq } } },
|
|
@@ -246,7 +252,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
246
252
|
const { acceptedOffers, numAcceptedOffers } = result;
|
|
247
253
|
// 予約取引を参照(2026-05-18~)
|
|
248
254
|
return {
|
|
249
|
-
acceptedOffers: await this.addAcceptedOffersDetails(acceptedOffers),
|
|
255
|
+
acceptedOffers: await this.addAcceptedOffersDetails(acceptedOffers, options),
|
|
250
256
|
numAcceptedOffers
|
|
251
257
|
};
|
|
252
258
|
}
|
|
@@ -26,5 +26,7 @@ export declare class AcceptedOfferInReserveRepo {
|
|
|
26
26
|
/**
|
|
27
27
|
* 予約取引からオファー詳細情報を付加する
|
|
28
28
|
*/
|
|
29
|
-
protected addAcceptedOffersDetails(acceptedOffers: IAcceptedOffer[]
|
|
29
|
+
protected addAcceptedOffersDetails(acceptedOffers: IAcceptedOffer[], options: {
|
|
30
|
+
useItemOfferedByReserve: boolean;
|
|
31
|
+
}): Promise<IAcceptedOffer[]>;
|
|
30
32
|
}
|
|
@@ -41,7 +41,7 @@ class AcceptedOfferInReserveRepo {
|
|
|
41
41
|
/**
|
|
42
42
|
* 予約取引からオファー詳細情報を付加する
|
|
43
43
|
*/
|
|
44
|
-
async addAcceptedOffersDetails(acceptedOffers) {
|
|
44
|
+
async addAcceptedOffersDetails(acceptedOffers, options) {
|
|
45
45
|
const offeredThroughIdentifier = acceptedOffers.at(0)?.offeredThrough?.identifier;
|
|
46
46
|
if (offeredThroughIdentifier === factory_1.factory.service.webAPI.Identifier.COA) {
|
|
47
47
|
// COAでは予約取引を参照しない
|
|
@@ -52,6 +52,7 @@ class AcceptedOfferInReserveRepo {
|
|
|
52
52
|
if (reservationNumbers.length > 0) {
|
|
53
53
|
acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
|
|
54
54
|
}
|
|
55
|
+
const { useItemOfferedByReserve } = options;
|
|
55
56
|
return acceptedOffers.map((acceptedOffer) => {
|
|
56
57
|
const acceptedOfferByReserveTransaction = acceptedOffersByReserveTransaction.find(((offer) => offer.itemOffered.id === acceptedOffer.itemOffered.id));
|
|
57
58
|
// 予約は必ず存在するはず
|
|
@@ -63,14 +64,19 @@ class AcceptedOfferInReserveRepo {
|
|
|
63
64
|
if (priceSpecByReserveTransaction === undefined) {
|
|
64
65
|
console.error('repo:acceptedOffer: addAcceptedOffersDetails: priceSpecByReserveTransaction: undefined!!!', acceptedOffer.itemOffered.id);
|
|
65
66
|
}
|
|
67
|
+
const itemOfferedByReserve = acceptedOfferByReserveTransaction?.itemOffered;
|
|
68
|
+
// itemOfferedByReserveは必ず存在するはず
|
|
69
|
+
if (itemOfferedByReserve === undefined) {
|
|
70
|
+
console.error('repo:acceptedOffer: addAcceptedOffersDetails: itemOfferedByReserve: undefined!!!', acceptedOffer.itemOffered.id);
|
|
71
|
+
}
|
|
66
72
|
const { priceSpecification: _originalPriceSpec, // 注文ドキュメントのpriceSpecificationはもう採用しない(2026-05-21~)
|
|
67
|
-
...acceptedOfferWithoutPrice } = acceptedOffer;
|
|
73
|
+
itemOffered, ...acceptedOfferWithoutPrice } = acceptedOffer;
|
|
68
74
|
return {
|
|
69
75
|
...acceptedOfferWithoutPrice,
|
|
70
|
-
...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }) // 予約取引参照の値で上書き
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }), // 予約取引参照の値で上書き
|
|
77
|
+
...(useItemOfferedByReserve && itemOfferedByReserve !== undefined)
|
|
78
|
+
? { itemOffered: itemOfferedByReserve } // 予約取引参照の値で上書き
|
|
79
|
+
: { itemOffered }
|
|
74
80
|
};
|
|
75
81
|
});
|
|
76
82
|
}
|
|
@@ -26,6 +26,12 @@ export type IPlacingOrder = Pick<factory.order.IOrder, 'broker' | 'confirmationN
|
|
|
26
26
|
*/
|
|
27
27
|
customer?: never;
|
|
28
28
|
};
|
|
29
|
+
export type IMinimizedItemOffered = Pick<factory.order.IEventReservation, 'id' | 'reservationFor' | 'reservationNumber' | 'typeOf'> & {
|
|
30
|
+
reservedTicket: Pick<factory.order.IReservedTicket, 'identifier' | 'ticketedSeat' | 'typeOf'>;
|
|
31
|
+
};
|
|
32
|
+
export type IMinimizedAcceptedOffer = Pick<factory.order.IOptimizedAcceptedOffer, 'id' | 'name' | 'offeredThrough' | 'priceSpecification' | 'serialNumber' | 'typeOf'> & {
|
|
33
|
+
itemOffered: IMinimizedItemOffered;
|
|
34
|
+
};
|
|
29
35
|
/**
|
|
30
36
|
* 取引中注文リポジトリ
|
|
31
37
|
*/
|
|
@@ -44,14 +50,6 @@ export declare class OrderInTransactionRepo extends AcceptedOfferInReserveRepo {
|
|
|
44
50
|
}): Promise<(Omit<factory.order.IAcceptedOffer, 'priceSpecification'> & {
|
|
45
51
|
priceSpecification?: factory.order.ITicketPriceSpecification;
|
|
46
52
|
})[]>;
|
|
47
|
-
/**
|
|
48
|
-
* 取引進行中の注文からacceptedOffersを検索する
|
|
49
|
-
*/
|
|
50
|
-
findAcceptedOffersByOrderNumber(params: {
|
|
51
|
-
orderNumber: {
|
|
52
|
-
$eq: string;
|
|
53
|
-
};
|
|
54
|
-
}): Promise<Pick<factory.order.IAcceptedOffer, 'itemOffered' | 'serialNumber'>[]>;
|
|
55
53
|
/**
|
|
56
54
|
* 注文を受注する
|
|
57
55
|
* typeOf: PlaceOrder -> typeOf: Order
|
|
@@ -62,7 +60,7 @@ export declare class OrderInTransactionRepo extends AcceptedOfferInReserveRepo {
|
|
|
62
60
|
* このメソッドでdocumentが初めて生成される(typeOf:PlaceOrderとして)
|
|
63
61
|
*/
|
|
64
62
|
acceptOffer(params: Pick<IOrderInTransaction, 'orderNumber' | 'project'> & {
|
|
65
|
-
acceptedOffers: (Omit<IAcceptedOffer, 'priceSpecification'> & {
|
|
63
|
+
acceptedOffers: IMinimizedAcceptedOffer[] | (Omit<IAcceptedOffer, 'priceSpecification'> & {
|
|
66
64
|
/**
|
|
67
65
|
* COA以外では注文ドキュメントにpriceSpecificationが存在しないのでIFを補完
|
|
68
66
|
*/
|
|
@@ -41,32 +41,44 @@ class OrderInTransactionRepo extends acceptedOfferInReserve_1.AcceptedOfferInRes
|
|
|
41
41
|
acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
|
|
42
42
|
}
|
|
43
43
|
return doc.acceptedOffers.map((acceptedOffer) => {
|
|
44
|
-
const
|
|
44
|
+
const acceptedOfferByReserve = acceptedOffersByReserveTransaction.find((acceptedOfferByReserveTransaction) => acceptedOfferByReserveTransaction.itemOffered.id === acceptedOffer.itemOffered.id);
|
|
45
|
+
const priceSpecification = acceptedOfferByReserve?.priceSpecification;
|
|
45
46
|
// COA予約でなければ、予約取引の価格は必ず存在するはず(2026-05-20~)
|
|
46
47
|
if (priceSpecification === undefined) {
|
|
47
48
|
throw new factory_1.factory.errors.Internal(`findAcceptedOffersWithPriceByOrderNumber: priceSpecification undefined. ${acceptedOffer.itemOffered.id}`);
|
|
48
49
|
}
|
|
50
|
+
const itemOffered = acceptedOfferByReserve?.itemOffered;
|
|
51
|
+
// COA予約でなければ、予約取引のitemOfferedは必ず存在するはず(2026-05-25~)
|
|
52
|
+
if (itemOffered === undefined) {
|
|
53
|
+
throw new factory_1.factory.errors.Internal(`findAcceptedOffersWithPriceByOrderNumber: itemOffered undefined. ${acceptedOffer.itemOffered.id}`);
|
|
54
|
+
}
|
|
49
55
|
return {
|
|
50
56
|
...acceptedOffer,
|
|
57
|
+
itemOffered,
|
|
51
58
|
priceSpecification
|
|
52
59
|
};
|
|
53
60
|
});
|
|
54
61
|
}
|
|
55
|
-
/**
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
async findAcceptedOffersByOrderNumber(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
// /**
|
|
63
|
+
// * 取引進行中の注文からacceptedOffersを検索する
|
|
64
|
+
// */
|
|
65
|
+
// public async findAcceptedOffersByOrderNumber(
|
|
66
|
+
// params: { orderNumber: { $eq: string } }
|
|
67
|
+
// ): Promise<Pick<factory.order.IAcceptedOffer, 'itemOffered' | 'serialNumber'>[]> {
|
|
68
|
+
// const doc = await this.orderModel.findOne<HydratedDocument<Pick<factory.order.IAcceptedOffer, 'itemOffered' | 'serialNumber'>>>(
|
|
69
|
+
// {
|
|
70
|
+
// orderNumber: { $eq: params.orderNumber.$eq },
|
|
71
|
+
// typeOf: { $eq: factory.transactionType.PlaceOrder }
|
|
72
|
+
// },
|
|
73
|
+
// { acceptedOffers: 1 }
|
|
74
|
+
// )
|
|
75
|
+
// .lean<Pick<IOrderInTransaction, 'acceptedOffers'>>()
|
|
76
|
+
// .exec();
|
|
77
|
+
// if (doc === null) {
|
|
78
|
+
// throw new factory.errors.NotFound('orderInTransaction');
|
|
79
|
+
// }
|
|
80
|
+
// return doc.acceptedOffers;
|
|
81
|
+
// }
|
|
70
82
|
/**
|
|
71
83
|
* 注文を受注する
|
|
72
84
|
* typeOf: PlaceOrder -> typeOf: Order
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { factory } from '../../factory';
|
|
2
|
-
import type { OrderInTransactionRepo } from '../../repo/orderInTransaction';
|
|
2
|
+
import type { IMinimizedAcceptedOffer, OrderInTransactionRepo } from '../../repo/orderInTransaction';
|
|
3
3
|
interface IAcceptOfferOperationRepos {
|
|
4
4
|
orderInTransaction: OrderInTransactionRepo;
|
|
5
5
|
}
|
|
@@ -10,7 +10,7 @@ export declare function acceptOffer(params: {
|
|
|
10
10
|
project: {
|
|
11
11
|
id: string;
|
|
12
12
|
};
|
|
13
|
-
acceptedOffers: (Omit<factory.order.IAcceptedOffer, 'priceSpecification'> & {
|
|
13
|
+
acceptedOffers: IMinimizedAcceptedOffer[] | (Omit<factory.order.IAcceptedOffer, 'priceSpecification'> & {
|
|
14
14
|
/**
|
|
15
15
|
* COA以外では注文ドキュメントにpriceSpecificationが存在しないのでIFを補完
|
|
16
16
|
*/
|
|
@@ -32,7 +32,7 @@ declare function acceptedOffers2authorizeResult(params: {
|
|
|
32
32
|
ticketOffers: factory.product.ITicketOffer[];
|
|
33
33
|
}): factory.action.authorize.offer.eventService.IResult;
|
|
34
34
|
type IObjectSubReservation = factory.assetTransaction.reserve.IObjectSubReservation;
|
|
35
|
-
export type IResultAcceptedOffer = Omit<factory.order.
|
|
35
|
+
export type IResultAcceptedOffer = Omit<factory.order.IOptimizedAcceptedOffer, 'priceSpecification'> & {
|
|
36
36
|
itemOffered: factory.order.IEventReservation;
|
|
37
37
|
offeredThrough: factory.offer.IOfferedThrough;
|
|
38
38
|
serialNumber: string;
|
|
@@ -305,16 +305,17 @@ function createReservation(params) {
|
|
|
305
305
|
const { itemOffered } = params;
|
|
306
306
|
const event = params.reservationFor;
|
|
307
307
|
let reservationItem;
|
|
308
|
+
const ticketType = {
|
|
309
|
+
typeOf: itemOffered.reservedTicket.ticketType.typeOf,
|
|
310
|
+
id: itemOffered.reservedTicket.ticketType.id,
|
|
311
|
+
identifier: itemOffered.reservedTicket.ticketType.identifier,
|
|
312
|
+
name: itemOffered.reservedTicket.ticketType.name,
|
|
313
|
+
description: itemOffered.reservedTicket.ticketType.description,
|
|
314
|
+
...((Array.isArray(itemOffered.reservedTicket.ticketType.additionalProperty)) && { additionalProperty: itemOffered.reservedTicket.ticketType.additionalProperty })
|
|
315
|
+
};
|
|
308
316
|
const reservedTicket = {
|
|
309
317
|
typeOf: itemOffered.reservedTicket.typeOf,
|
|
310
|
-
ticketType
|
|
311
|
-
typeOf: itemOffered.reservedTicket.ticketType.typeOf,
|
|
312
|
-
id: itemOffered.reservedTicket.ticketType.id,
|
|
313
|
-
identifier: itemOffered.reservedTicket.ticketType.identifier,
|
|
314
|
-
name: itemOffered.reservedTicket.ticketType.name,
|
|
315
|
-
description: itemOffered.reservedTicket.ticketType.description,
|
|
316
|
-
additionalProperty: itemOffered.reservedTicket.ticketType.additionalProperty
|
|
317
|
-
},
|
|
318
|
+
ticketType,
|
|
318
319
|
...(typeof itemOffered.reservedTicket.identifier === 'string')
|
|
319
320
|
? { identifier: itemOffered.reservedTicket.identifier }
|
|
320
321
|
: undefined, // チケット識別子追加(2024-04-15~)
|
|
@@ -68,11 +68,10 @@ interface IAuthorizeOptions {
|
|
|
68
68
|
*/
|
|
69
69
|
maxReservationGracePeriodInDays: number;
|
|
70
70
|
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* 2026-005-19~
|
|
71
|
+
* acceptedOfferのitemOfferedを最小化するかどうか
|
|
72
|
+
* 2026-05-25~
|
|
74
73
|
*/
|
|
75
|
-
|
|
74
|
+
useAcceptedOfferItemOfferedMinimized?: boolean;
|
|
76
75
|
}
|
|
77
76
|
/**
|
|
78
77
|
* 興行オファー承認
|
|
@@ -56,21 +56,20 @@ function authorize(params, options) {
|
|
|
56
56
|
...(typeof params.object.broker?.typeOf === 'string') ? { broker: params.object.broker } : undefined
|
|
57
57
|
}, options)(repos, settings);
|
|
58
58
|
acceptedOffers4result = processStartReserveResult.acceptedOffers4result;
|
|
59
|
-
// add orderInTransaction(2024-01-15~)
|
|
60
59
|
if (!noOfferSpecified) {
|
|
61
|
-
const
|
|
60
|
+
const useAcceptedOfferItemOfferedMinimized = options.useAcceptedOfferItemOfferedMinimized === true;
|
|
62
61
|
await (0, any_1.acceptOffer)({
|
|
63
62
|
orderNumber,
|
|
64
63
|
project: transaction.project,
|
|
65
64
|
acceptedOffers: acceptedOffers4result.map((acceptOffer4result) => {
|
|
66
65
|
// support useAcceptedOfferNoPriceSpec(2026-05-19~)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
66
|
+
const { priceSpecification: _priceSpecification, itemOffered, ...acceptOfferNoPriceSpec } = acceptOffer4result;
|
|
67
|
+
return {
|
|
68
|
+
...acceptOfferNoPriceSpec,
|
|
69
|
+
itemOffered: (useAcceptedOfferItemOfferedMinimized) // support useAcceptedOfferItemOfferedMinimized(2026-05-25~)
|
|
70
|
+
? minimizeItemOffered(itemOffered)
|
|
71
|
+
: itemOffered
|
|
72
|
+
};
|
|
74
73
|
})
|
|
75
74
|
})(repos);
|
|
76
75
|
}
|
|
@@ -89,6 +88,24 @@ function authorize(params, options) {
|
|
|
89
88
|
return { id: action.id, result };
|
|
90
89
|
};
|
|
91
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* 注文ドキュメントに保管するitemOfferedを最小化する
|
|
93
|
+
* 2026-05-25~
|
|
94
|
+
*/
|
|
95
|
+
function minimizeItemOffered(itemOffered) {
|
|
96
|
+
const { id, reservationNumber, typeOf, reservationFor, reservedTicket } = itemOffered;
|
|
97
|
+
return {
|
|
98
|
+
id,
|
|
99
|
+
reservationNumber,
|
|
100
|
+
typeOf,
|
|
101
|
+
reservationFor,
|
|
102
|
+
reservedTicket: {
|
|
103
|
+
typeOf: reservedTicket.typeOf,
|
|
104
|
+
...((typeof reservedTicket.ticketedSeat?.typeOf === 'string') && { ticketedSeat: reservedTicket.ticketedSeat }),
|
|
105
|
+
...((typeof reservedTicket.identifier === 'string') && { identifier: reservedTicket.identifier })
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
92
109
|
function validateCreateRequest(params) {
|
|
93
110
|
return async (repos) => {
|
|
94
111
|
const transaction = await repos.placeOrder.findPlaceOrderInProgressById({
|
|
@@ -96,7 +96,9 @@ function deleteReservationsByOrder(order) {
|
|
|
96
96
|
acceptedOffers: {
|
|
97
97
|
// itemOffered: { typeOf: { $in: [factory.reservationType.EventReservation] } }
|
|
98
98
|
}
|
|
99
|
-
}, {
|
|
99
|
+
}, {
|
|
100
|
+
useItemOfferedByReserve: true // 2026-05-25~
|
|
101
|
+
} // 予約取引参照(2026-05-18~)
|
|
100
102
|
);
|
|
101
103
|
const reservationIds = acceptedOffers.map((o) => String(o.itemOffered.id));
|
|
102
104
|
if (reservationIds.length > 0) {
|
|
@@ -80,7 +80,10 @@ function createPlacingOrderFromExistingTransaction(params) {
|
|
|
80
80
|
.map(({ instrument }) => String(instrument.transactionNumber));
|
|
81
81
|
try {
|
|
82
82
|
// すでにtypeOf: Orderに変更済の場合acceptedOffersは空になるが、そもそもorderedItemはその後上書きされないので、空のまま処理して問題なし
|
|
83
|
-
acceptedOffers = (await repos.orderInTransaction.
|
|
83
|
+
acceptedOffers = (await repos.orderInTransaction.findAcceptedOffersWithPriceByOrderNumber({
|
|
84
|
+
orderNumber,
|
|
85
|
+
project: { id: params.project.id }
|
|
86
|
+
}))
|
|
84
87
|
.filter(({ serialNumber }) => typeof serialNumber === 'string' && serialNumbers.includes(serialNumber));
|
|
85
88
|
}
|
|
86
89
|
catch (error) {
|
|
@@ -101,7 +101,9 @@ function sendOrder(params) {
|
|
|
101
101
|
$slice: [offerIndexBase, limit],
|
|
102
102
|
orderNumber: { $eq: order.orderNumber },
|
|
103
103
|
project: { id: { $eq: order.project.id } }
|
|
104
|
-
}, {
|
|
104
|
+
}, {
|
|
105
|
+
useItemOfferedByReserve: true // 2026-05-25~
|
|
106
|
+
} // 予約取引参照(2026-05-18~)
|
|
105
107
|
);
|
|
106
108
|
acceptedOffers = searchSlicedAcceptedOffersResult.acceptedOffers;
|
|
107
109
|
debug('delivering...', order.orderNumber, acceptedOffers.map((offer) => `${offer.itemOffered.id}`), // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
@@ -39,7 +39,9 @@ function findByCode(params) {
|
|
|
39
39
|
// typeOf?: { $in?: factory.order.IItemOffered['typeOf'][] };
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
}, {
|
|
42
|
+
}, {
|
|
43
|
+
useItemOfferedByReserve: true // 2026-05-25~
|
|
44
|
+
} // 予約取引参照(2026-05-18~)
|
|
43
45
|
)).shift();
|
|
44
46
|
if (acceptedOffer === undefined) {
|
|
45
47
|
throw new factory_1.factory.errors.NotFound('acceptedOffer');
|
|
@@ -16,7 +16,9 @@ function searchByOrder(params) {
|
|
|
16
16
|
// typeOf: { $in: [reservationType] }
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
}, {
|
|
19
|
+
}, {
|
|
20
|
+
useItemOfferedByReserve: true // 2026-05-25~
|
|
21
|
+
} // 予約取引参照(2026-05-18~)
|
|
20
22
|
);
|
|
21
23
|
const reservationIds = acceptedOffers.map((offer) => {
|
|
22
24
|
if (offer.itemOffered.typeOf === reservationType) {
|
|
@@ -137,7 +137,9 @@ function fixOrderAsPurpose(params) {
|
|
|
137
137
|
const acceptedOffers = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
|
|
138
138
|
orderNumber: { $eq: order.orderNumber },
|
|
139
139
|
project: { id: { $eq: params.project.id } }
|
|
140
|
-
}, {
|
|
140
|
+
}, {
|
|
141
|
+
useItemOfferedByReserve: true // 2026-05-25~
|
|
142
|
+
} // 予約取引参照(2026-05-18~)
|
|
141
143
|
);
|
|
142
144
|
return {
|
|
143
145
|
...order,
|
|
@@ -77,7 +77,9 @@ function fixOrderAsPurpose(params, transaction) {
|
|
|
77
77
|
reservedTicket: { ticketedSeat: { seatNumber: { $in: seatNumbers } } }
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
-
}, {
|
|
80
|
+
}, {
|
|
81
|
+
useItemOfferedByReserve: true // 2026-05-25~
|
|
82
|
+
} // 予約取引参照(2026-05-18~)
|
|
81
83
|
);
|
|
82
84
|
}
|
|
83
85
|
return {
|
|
@@ -144,7 +144,9 @@ function fixOrders(params) {
|
|
|
144
144
|
const acceptedOffers = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
|
|
145
145
|
orderNumber: { $eq: params.object.order[0].orderNumber },
|
|
146
146
|
project: { id: { $eq: params.project.id } }
|
|
147
|
-
}, {
|
|
147
|
+
}, {
|
|
148
|
+
useItemOfferedByReserve: true // 2026-05-25~
|
|
149
|
+
} // 予約取引参照(2026-05-18~)
|
|
148
150
|
);
|
|
149
151
|
return { acceptedOffers, eventIds, offerIds, orders };
|
|
150
152
|
};
|
|
@@ -22,7 +22,9 @@ function validateOrder(params) {
|
|
|
22
22
|
const acceptedOffers = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
|
|
23
23
|
orderNumber: { $eq: params.orderNumber },
|
|
24
24
|
project: { id: { $eq: params.project.id } }
|
|
25
|
-
}, {
|
|
25
|
+
}, {
|
|
26
|
+
useItemOfferedByReserve: true // 2026-05-25~
|
|
27
|
+
} // 予約取引参照(2026-05-18~)
|
|
26
28
|
);
|
|
27
29
|
let payTransactions = [];
|
|
28
30
|
if (order.paymentMethods.length > 0) {
|
package/package.json
CHANGED