@chevre/domain 24.1.0-alpha.4 → 24.1.0-alpha.40
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/README.md +0 -2
- package/lib/chevre/credentials.d.ts +4 -16
- package/lib/chevre/credentials.js +11 -39
- package/lib/chevre/emailMessageBuilder.js +4 -12
- package/lib/chevre/index.d.ts +1 -1
- package/lib/chevre/index.js +2 -2
- package/lib/chevre/repo/acceptedOffer.d.ts +14 -13
- package/lib/chevre/repo/acceptedOffer.js +128 -51
- package/lib/chevre/repo/acceptedOfferInReserve.d.ts +32 -0
- package/lib/chevre/repo/acceptedOfferInReserve.js +84 -0
- package/lib/chevre/repo/accountingReport.d.ts +9 -2
- package/lib/chevre/repo/accountingReport.js +6 -34
- package/lib/chevre/repo/action/actionProcess.d.ts +1 -1
- package/lib/chevre/repo/assetTransaction/reserve.d.ts +0 -1
- package/lib/chevre/repo/assetTransaction/reserve.js +4 -50
- package/lib/chevre/repo/event.js +12 -8
- package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.d.ts +7 -0
- package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.js +74 -0
- package/lib/chevre/repo/factory/reservation/createMongoConditions.d.ts +1 -1
- package/lib/chevre/repo/factory/reservation/createMongoConditions.js +171 -362
- package/lib/chevre/repo/mongoose/schemas/accountingReport.js +42 -42
- package/lib/chevre/repo/mongoose/schemas/order.js +108 -108
- package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +3 -1
- package/lib/chevre/repo/mongoose/schemas/reservation.js +128 -146
- package/lib/chevre/repo/mongoose/schemas/setting.d.ts +45 -0
- package/lib/chevre/repo/mongoose/schemas/setting.js +2 -1
- package/lib/chevre/repo/order.d.ts +2 -83
- package/lib/chevre/repo/order.js +171 -364
- package/lib/chevre/repo/orderInTransaction.d.ts +48 -6
- package/lib/chevre/repo/orderInTransaction.js +58 -4
- package/lib/chevre/repo/place/hasPOS.js +2 -1
- package/lib/chevre/repo/reservation.d.ts +20 -7
- package/lib/chevre/repo/reservation.js +16 -12
- package/lib/chevre/repo/role.d.ts +1 -15
- package/lib/chevre/repo/role.js +7 -14
- package/lib/chevre/repo/setting/integration.d.ts +25 -0
- package/lib/chevre/repo/setting/integration.js +86 -0
- package/lib/chevre/repo/transaction.d.ts +6 -6
- package/lib/chevre/repository.d.ts +5 -0
- package/lib/chevre/repository.js +11 -0
- package/lib/chevre/service/aggregation/event/aggregateOffers.js +6 -1
- package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +0 -1
- package/lib/chevre/service/assetTransaction/cancelReservation/factory.js +14 -11
- package/lib/chevre/service/assetTransaction/cancelReservation/start.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/cancelReservation/start.js +1 -1
- package/lib/chevre/service/assetTransaction/pay/check.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/pay/searchGMOTrade.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/pay/start/processAuthorize.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeCreditCard.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/pay/start.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/reserve/cancel.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/reserve/confirm.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/reserve/start/factory/createReservation.js +0 -12
- package/lib/chevre/service/assetTransaction/reserve/start/factory/price.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/reserve/start.d.ts +1 -1
- package/lib/chevre/service/delivery/factory.d.ts +6 -1
- package/lib/chevre/service/delivery/factory.js +1 -1
- package/lib/chevre/service/delivery/reservation/factory.d.ts +1 -3
- package/lib/chevre/service/delivery/reservation/factory.js +0 -17
- package/lib/chevre/service/notification/notifyAbortedTasksByEmail.d.ts +2 -2
- package/lib/chevre/service/notification/notifyAbortedTasksByEmail.js +1 -1
- package/lib/chevre/service/notification/notifyByEmail.js +0 -6
- package/lib/chevre/service/offer/any.d.ts +7 -2
- package/lib/chevre/service/offer/event/authorize/factory.d.ts +6 -3
- package/lib/chevre/service/offer/event/authorize/factory.js +13 -15
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +1 -1
- package/lib/chevre/service/offer/event/authorize.d.ts +6 -1
- package/lib/chevre/service/offer/event/authorize.js +51 -4
- package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.d.ts +1 -1
- package/lib/chevre/service/offer/event/voidTransaction.d.ts +1 -1
- package/lib/chevre/service/offer/event/voidTransactionByActionId.d.ts +1 -1
- package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.d.ts +1 -3
- package/lib/chevre/service/order/createAccountingReportIfNotExist.d.ts +1 -3
- package/lib/chevre/service/order/createAccountingReportIfNotExist.js +67 -72
- package/lib/chevre/service/order/deleteOrder.js +23 -44
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.d.ts +1 -1
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.d.ts +1 -1
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.d.ts +1 -1
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.js +9 -11
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/processing2inTransit.d.ts +1 -1
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.js +0 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.d.ts +6 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.js +0 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +2 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned.js +0 -1
- package/lib/chevre/service/order/onOrderUpdated.js +0 -1
- package/lib/chevre/service/order/payOrder.d.ts +1 -1
- package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +4 -1
- package/lib/chevre/service/order/placeOrder/factory/orderedItem.d.ts +1 -1
- package/lib/chevre/service/order/placeOrder/factory/orderedItem.js +0 -5
- package/lib/chevre/service/order/placeOrder/factory.d.ts +1 -1
- package/lib/chevre/service/order/placeOrder.d.ts +1 -1
- package/lib/chevre/service/order/returnOrder.js +0 -1
- package/lib/chevre/service/order/sendOrder.js +4 -5
- package/lib/chevre/service/payment/any/authorize.d.ts +1 -1
- package/lib/chevre/service/payment/any/person2username.js +0 -1
- package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +1 -1
- package/lib/chevre/service/payment/creditCard/authorize.d.ts +1 -1
- package/lib/chevre/service/payment/creditCard/authorize.js +4 -3
- package/lib/chevre/service/payment/creditCard/payCreditCard.d.ts +1 -1
- package/lib/chevre/service/payment/creditCard/payCreditCard.js +1 -1
- package/lib/chevre/service/payment/creditCard/refundCreditCard.d.ts +1 -1
- package/lib/chevre/service/payment/creditCard/refundCreditCard.js +1 -1
- package/lib/chevre/service/payment/creditCard/searchGMOTrade.d.ts +1 -1
- package/lib/chevre/service/payment/creditCard/searchGMOTrade.js +1 -1
- package/lib/chevre/service/payment/creditCard/voidTransaction.d.ts +1 -1
- package/lib/chevre/service/payment/creditCard/voidTransaction.js +1 -1
- package/lib/chevre/service/payment/factory/createPayObjectServiceOutput.d.ts +8 -1
- package/lib/chevre/service/payment/factory/createPayObjectServiceOutput.js +1 -1
- package/lib/chevre/service/payment/movieTicket/authorize.d.ts +1 -1
- package/lib/chevre/service/payment/movieTicket/checkMovieTicket.d.ts +1 -1
- package/lib/chevre/service/payment/movieTicket/payMovieTicket.d.ts +1 -1
- package/lib/chevre/service/payment/movieTicket/payMovieTicket.js +1 -1
- package/lib/chevre/service/payment/movieTicket/processPurchaseNumberAuth.d.ts +1 -1
- package/lib/chevre/service/payment/movieTicket/processPurchaseNumberAuth.js +1 -1
- package/lib/chevre/service/payment/movieTicket/refundMovieTicket.d.ts +1 -1
- package/lib/chevre/service/payment/movieTicket/refundMovieTicket.js +2 -2
- package/lib/chevre/service/payment/movieTicket/voidTransaction.d.ts +1 -1
- package/lib/chevre/service/reserve/confirmReservation.js +7 -7
- package/lib/chevre/service/reserve/factory.js +2 -1
- package/lib/chevre/service/reserve/findByCode.d.ts +1 -1
- package/lib/chevre/service/reserve/findByCode.js +4 -1
- package/lib/chevre/service/reserve/findReservations.d.ts +4 -4
- package/lib/chevre/service/reserve/findReservations.js +16 -26
- package/lib/chevre/service/reserve/potentialActions/onPendingReservationCanceled.js +0 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +0 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.d.ts +4 -3
- package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +1 -10
- package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +0 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationsCreated.js +0 -1
- package/lib/chevre/service/reserve/searchByOrder.js +10 -3
- package/lib/chevre/service/reserve/useReservation.d.ts +1 -1
- package/lib/chevre/service/task/acceptCOAOffer.js +3 -2
- package/lib/chevre/service/task/authorizePayment.js +1 -1
- package/lib/chevre/service/task/cancelPendingReservation.js +1 -1
- package/lib/chevre/service/task/checkMovieTicket.js +1 -1
- package/lib/chevre/service/task/confirmReserveTransaction.d.ts +1 -1
- package/lib/chevre/service/task/confirmReserveTransaction.js +5 -2
- package/lib/chevre/service/task/createAccountingReport.js +7 -9
- package/lib/chevre/service/task/importEventCapacitiesFromCOA.js +1 -1
- package/lib/chevre/service/task/importEventsFromCOA.js +1 -1
- package/lib/chevre/service/task/importOffersFromCOA.js +1 -1
- package/lib/chevre/service/task/onResourceUpdated/onHasPOSUpdated.js +0 -1
- package/lib/chevre/service/task/pay.js +1 -1
- package/lib/chevre/service/task/payment/invalidatePaymentUrlByTask.d.ts +1 -1
- package/lib/chevre/service/task/payment/payByTask.d.ts +1 -1
- package/lib/chevre/service/task/payment/payByTask.js +5 -2
- package/lib/chevre/service/task/payment/refundByTask.d.ts +1 -1
- package/lib/chevre/service/task/payment/voidPaymentByTask.d.ts +1 -1
- package/lib/chevre/service/task/refund.js +1 -1
- package/lib/chevre/service/task/returnReserveTransaction.js +1 -1
- package/lib/chevre/service/task/syncResourcesFromCOA.js +1 -1
- package/lib/chevre/service/task/useReservation.d.ts +2 -2
- package/lib/chevre/service/task/useReservation.js +5 -16
- package/lib/chevre/service/task/voidPayment.js +1 -1
- package/lib/chevre/service/task/voidReserveTransaction.js +1 -1
- package/lib/chevre/service/task.d.ts +0 -2
- package/lib/chevre/service/task.js +10 -2
- package/lib/chevre/service/taskHandler.js +1 -0
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.js +0 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.js +0 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateInvoiceReferencesOrder.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateMovieTicket.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/validation.d.ts +2 -2
- package/lib/chevre/service/transaction/placeOrder/confirm.js +5 -3
- package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +0 -1
- package/lib/chevre/service/transaction/placeOrder/updateAgent.js +0 -1
- package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +0 -1
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +0 -1
- package/lib/chevre/service/transaction/returnOrder/potentialActions.js +0 -1
- package/lib/chevre/service/transaction/returnOrder/preStart.js +4 -4
- package/lib/chevre/service/validation/validateOrder.js +7 -79
- package/lib/chevre/settings.d.ts +0 -55
- package/lib/chevre/settings.js +1 -29
- package/lib/chevre/taskSettings.d.ts +5 -2
- package/package.json +2 -2
- package/lib/chevre/credentials/customSearch.d.ts +0 -13
- package/lib/chevre/credentials/customSearch.js +0 -16
- package/lib/chevre/credentials/lineNotify.d.ts +0 -17
- package/lib/chevre/credentials/lineNotify.js +0 -20
package/README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# Chevre Domain Library for Node.js
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@chevre/domain)
|
|
4
|
-
[](https://circleci.com/gh/chevre-jp/domain)
|
|
5
|
-
[](https://coveralls.io/github/chevre-jp/domain?branch=master)
|
|
6
4
|
[](https://snyk.io/test/github/chevre-jp/domain)
|
|
7
5
|
[](https://nodei.co/npm/@chevre/domain/)
|
|
8
6
|
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
import type { CustomSearchCredentials } from './credentials/customSearch';
|
|
2
|
-
import type { LINENotifyCredentials } from './credentials/lineNotify';
|
|
3
|
-
import type { SendGridCredentials } from './credentials/sendGrid';
|
|
4
1
|
/**
|
|
5
2
|
* 外部サービス認証情報
|
|
6
3
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
type LINENotify = LINENotifyCredentials;
|
|
13
|
-
namespace LINENotify {
|
|
14
|
-
function createInstance(...params: ConstructorParameters<typeof LINENotifyCredentials>): Promise<LINENotifyCredentials>;
|
|
15
|
-
}
|
|
16
|
-
type SendGrid = SendGridCredentials;
|
|
17
|
-
namespace SendGrid {
|
|
18
|
-
function createInstance(...params: ConstructorParameters<typeof SendGridCredentials>): Promise<SendGridCredentials>;
|
|
19
|
-
}
|
|
4
|
+
import type { SendGridCredentials } from './credentials/sendGrid';
|
|
5
|
+
export type SendGrid = SendGridCredentials;
|
|
6
|
+
export declare namespace SendGrid {
|
|
7
|
+
function createInstance(...params: ConstructorParameters<typeof SendGridCredentials>): Promise<SendGridCredentials>;
|
|
20
8
|
}
|
|
@@ -1,42 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
(
|
|
9
|
-
|
|
10
|
-
(function (CustomSearch) {
|
|
11
|
-
let cred;
|
|
12
|
-
async function createInstance(...params) {
|
|
13
|
-
if (cred === undefined) {
|
|
14
|
-
cred = (await import('./credentials/customSearch.js')).CustomSearchCredentials;
|
|
15
|
-
}
|
|
16
|
-
return new cred(...params);
|
|
3
|
+
exports.SendGrid = void 0;
|
|
4
|
+
var SendGrid;
|
|
5
|
+
(function (SendGrid) {
|
|
6
|
+
let cred;
|
|
7
|
+
async function createInstance(...params) {
|
|
8
|
+
if (cred === undefined) {
|
|
9
|
+
cred = (await import('./credentials/sendGrid.js')).SendGridCredentials;
|
|
17
10
|
}
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
let cred;
|
|
23
|
-
async function createInstance(...params) {
|
|
24
|
-
if (cred === undefined) {
|
|
25
|
-
cred = (await import('./credentials/lineNotify.js')).LINENotifyCredentials;
|
|
26
|
-
}
|
|
27
|
-
return new cred(...params);
|
|
28
|
-
}
|
|
29
|
-
LINENotify.createInstance = createInstance;
|
|
30
|
-
})(LINENotify = credentials.LINENotify || (credentials.LINENotify = {}));
|
|
31
|
-
let SendGrid;
|
|
32
|
-
(function (SendGrid) {
|
|
33
|
-
let cred;
|
|
34
|
-
async function createInstance(...params) {
|
|
35
|
-
if (cred === undefined) {
|
|
36
|
-
cred = (await import('./credentials/sendGrid.js')).SendGridCredentials;
|
|
37
|
-
}
|
|
38
|
-
return new cred(...params);
|
|
39
|
-
}
|
|
40
|
-
SendGrid.createInstance = createInstance;
|
|
41
|
-
})(SendGrid = credentials.SendGrid || (credentials.SendGrid = {}));
|
|
42
|
-
})(credentials || (exports.credentials = credentials = {}));
|
|
11
|
+
return new cred(...params);
|
|
12
|
+
}
|
|
13
|
+
SendGrid.createInstance = createInstance;
|
|
14
|
+
})(SendGrid || (exports.SendGrid = SendGrid = {}));
|
|
@@ -93,9 +93,7 @@ async function createEmailMessageAbout(params) {
|
|
|
93
93
|
}
|
|
94
94
|
return about;
|
|
95
95
|
}
|
|
96
|
-
function createEmailMessageSender(params,
|
|
97
|
-
// settings: Settings
|
|
98
|
-
setting) {
|
|
96
|
+
function createEmailMessageSender(params, setting) {
|
|
99
97
|
if (typeof setting.defaultSenderEmail !== 'string') {
|
|
100
98
|
throw new factory_1.factory.errors.NotFound('setting.defaultSenderEmail');
|
|
101
99
|
}
|
|
@@ -113,9 +111,7 @@ setting) {
|
|
|
113
111
|
/**
|
|
114
112
|
* 注文配送メッセージを作成する
|
|
115
113
|
*/
|
|
116
|
-
async function createSendOrderMessage(params,
|
|
117
|
-
// settings: Settings
|
|
118
|
-
setting) {
|
|
114
|
+
async function createSendOrderMessage(params, setting) {
|
|
119
115
|
const emailMessageText = await createEmailMessageText({
|
|
120
116
|
order: params.order,
|
|
121
117
|
email: params.email,
|
|
@@ -169,9 +165,7 @@ setting) {
|
|
|
169
165
|
/**
|
|
170
166
|
* 注文返品メッセージを作成する
|
|
171
167
|
*/
|
|
172
|
-
async function createReturnOrderMessage(params,
|
|
173
|
-
// settings: Settings
|
|
174
|
-
setting) {
|
|
168
|
+
async function createReturnOrderMessage(params, setting) {
|
|
175
169
|
const emailMessageText = await createEmailMessageText({
|
|
176
170
|
order: params.order,
|
|
177
171
|
email: params.email,
|
|
@@ -225,9 +219,7 @@ setting) {
|
|
|
225
219
|
/**
|
|
226
220
|
* 返金メッセージを作成する
|
|
227
221
|
*/
|
|
228
|
-
async function createRefundMessage(params,
|
|
229
|
-
// settings: Settings
|
|
230
|
-
setting) {
|
|
222
|
+
async function createRefundMessage(params, setting) {
|
|
231
223
|
const emailMessageText = await createEmailMessageText({
|
|
232
224
|
order: params.order,
|
|
233
225
|
email: params.email
|
package/lib/chevre/index.d.ts
CHANGED
package/lib/chevre/index.js
CHANGED
|
@@ -34,8 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.taskSettings = exports.settings = exports.service = exports.repository = exports.factory = exports.eventEmitter = exports.errorHandler = exports.credentials = void 0;
|
|
37
|
-
const
|
|
38
|
-
|
|
37
|
+
const credentials = __importStar(require("./credentials"));
|
|
38
|
+
exports.credentials = credentials;
|
|
39
39
|
const errorHandler = __importStar(require("./errorHandler"));
|
|
40
40
|
exports.errorHandler = errorHandler;
|
|
41
41
|
const eventEmitter = __importStar(require("./eventEmitter"));
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import type { Connection } from 'mongoose';
|
|
2
2
|
import { factory } from '../factory';
|
|
3
|
+
import { AcceptedOfferInReserveRepo, IAcceptedOffer } from './acceptedOfferInReserve';
|
|
3
4
|
type IProjection4searchWithUnwoundAcceptedOffers = {
|
|
4
5
|
[key in keyof factory.order.IOrder]?: 1;
|
|
5
|
-
} & {
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
type IDistinctField = 'acceptedOffers.id' | 'acceptedOffers.itemOffered.reservationNumber' | 'acceptedOffers.itemOffered.reservationFor.id' | 'acceptedOffers.itemOffered.issuedThrough.id' | 'acceptedOffers.itemOffered.typeOf' | 'acceptedOffers.serialNumber' | 'acceptedOffers.offeredThrough.identifier' | 'acceptedOffers.itemOffered.reservationFor.superEvent.location.branchCode' | 'acceptedOffers.itemOffered.object.pendingTransaction.transactionNumber';
|
|
9
|
-
type IAcceptedOffer = factory.order.IAcceptedOffer;
|
|
6
|
+
} & {};
|
|
7
|
+
type IDistinctField = 'acceptedOffers.id' | 'acceptedOffers.itemOffered.reservationNumber' | 'acceptedOffers.itemOffered.reservationFor.id' | 'acceptedOffers.serialNumber' | 'acceptedOffers.offeredThrough.identifier' | 'acceptedOffers.itemOffered.reservationFor.superEvent.location.branchCode';
|
|
10
8
|
interface ISearchSlicedAcceptedOffersResult {
|
|
11
9
|
acceptedOffers: IAcceptedOffer[];
|
|
12
10
|
numAcceptedOffers: number;
|
|
@@ -14,15 +12,18 @@ interface ISearchSlicedAcceptedOffersResult {
|
|
|
14
12
|
/**
|
|
15
13
|
* 注文オファーリポジトリ
|
|
16
14
|
*/
|
|
17
|
-
export declare class AcceptedOfferRepo {
|
|
15
|
+
export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
|
|
18
16
|
private readonly orderModel;
|
|
19
17
|
constructor(connection: Connection);
|
|
20
18
|
/**
|
|
21
19
|
* オファー展開の注文検索
|
|
22
20
|
*/
|
|
23
21
|
searchWithUnwoundAcceptedOffers(params: factory.order.ISearchConditions, projection: IProjection4searchWithUnwoundAcceptedOffers, options: {
|
|
24
|
-
|
|
25
|
-
}): Promise<factory.order.IOrder
|
|
22
|
+
useItemOfferedByReserve: boolean;
|
|
23
|
+
}): Promise<(factory.order.IOrder & {
|
|
24
|
+
acceptedOffers: [IAcceptedOffer];
|
|
25
|
+
_id?: never;
|
|
26
|
+
})[]>;
|
|
26
27
|
aggreateOwnershipInfosByOrder(filter: {
|
|
27
28
|
orderNumber: {
|
|
28
29
|
$eq: string;
|
|
@@ -36,7 +37,6 @@ export declare class AcceptedOfferRepo {
|
|
|
36
37
|
searchAcceptedOffersByOrderNumber(filter: {
|
|
37
38
|
limit?: number;
|
|
38
39
|
page?: number;
|
|
39
|
-
$slice?: [number, number];
|
|
40
40
|
orderNumber: {
|
|
41
41
|
$eq: string;
|
|
42
42
|
};
|
|
@@ -53,9 +53,6 @@ export declare class AcceptedOfferRepo {
|
|
|
53
53
|
id?: {
|
|
54
54
|
$eq?: string;
|
|
55
55
|
};
|
|
56
|
-
typeOf?: {
|
|
57
|
-
$in?: factory.order.IItemOffered['typeOf'][];
|
|
58
|
-
};
|
|
59
56
|
reservationFor?: {
|
|
60
57
|
id?: {
|
|
61
58
|
$in?: string[];
|
|
@@ -70,7 +67,9 @@ export declare class AcceptedOfferRepo {
|
|
|
70
67
|
};
|
|
71
68
|
};
|
|
72
69
|
};
|
|
73
|
-
},
|
|
70
|
+
}, options: {
|
|
71
|
+
useItemOfferedByReserve: boolean;
|
|
72
|
+
}): Promise<IAcceptedOffer[]>;
|
|
74
73
|
/**
|
|
75
74
|
* 注文オファーをsliceして検索する(2024-01-10~)
|
|
76
75
|
*/
|
|
@@ -84,6 +83,8 @@ export declare class AcceptedOfferRepo {
|
|
|
84
83
|
$eq: string;
|
|
85
84
|
};
|
|
86
85
|
};
|
|
86
|
+
}, options: {
|
|
87
|
+
useItemOfferedByReserve: boolean;
|
|
87
88
|
}): Promise<ISearchSlicedAcceptedOffersResult>;
|
|
88
89
|
countByOrderNumber(filter: {
|
|
89
90
|
orderNumber: {
|
|
@@ -3,23 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AcceptedOfferRepo = void 0;
|
|
4
4
|
const factory_1 = require("../factory");
|
|
5
5
|
const order_1 = require("./mongoose/schemas/order");
|
|
6
|
+
const acceptedOfferInReserve_1 = require("./acceptedOfferInReserve");
|
|
6
7
|
const order_2 = require("./order");
|
|
7
8
|
const settings_1 = require("../settings");
|
|
9
|
+
// const debug = createDebug('chevre-domain:repo:acceptedOffer');
|
|
8
10
|
/**
|
|
9
11
|
* 注文オファーリポジトリ
|
|
10
12
|
*/
|
|
11
|
-
class AcceptedOfferRepo {
|
|
13
|
+
class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveRepo {
|
|
12
14
|
orderModel;
|
|
13
15
|
constructor(connection) {
|
|
16
|
+
super(connection);
|
|
14
17
|
this.orderModel = connection.model(order_1.modelName, (0, order_1.createSchema)());
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
17
20
|
* オファー展開の注文検索
|
|
18
21
|
*/
|
|
19
22
|
async searchWithUnwoundAcceptedOffers(params, projection, options) {
|
|
20
|
-
const { useLimitAfterSkip } = options;
|
|
21
23
|
const conditions = order_2.OrderRepo.CREATE_MONGO_CONDITIONS(params);
|
|
22
24
|
const aggregate = this.orderModel.aggregate();
|
|
25
|
+
// unwind->matchでは遅い
|
|
26
|
+
// match->unwind->matchにする(2026-05-08~)
|
|
27
|
+
conditions.forEach((c) => {
|
|
28
|
+
aggregate.match(c);
|
|
29
|
+
});
|
|
23
30
|
// pipelineの順序に注意
|
|
24
31
|
// @see https://docs.mongodb.com/manual/reference/operator/aggregation/sort/
|
|
25
32
|
/* istanbul ignore else */
|
|
@@ -32,35 +39,75 @@ class AcceptedOfferRepo {
|
|
|
32
39
|
});
|
|
33
40
|
aggregate.project({
|
|
34
41
|
...projection,
|
|
42
|
+
_id: 0, // hide _id(2026-05-16~)
|
|
35
43
|
acceptedOffers: ['$acceptedOffers']
|
|
36
44
|
});
|
|
37
45
|
if (typeof params.limit === 'number' && params.limit > 0) {
|
|
38
46
|
const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
|
|
39
47
|
// support skip -> limit(2025-07-09~)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
.limit(params.limit);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
aggregate.limit(params.limit * page)
|
|
46
|
-
.skip(params.limit * (page - 1));
|
|
47
|
-
}
|
|
48
|
+
aggregate.skip(params.limit * (page - 1))
|
|
49
|
+
.limit(params.limit);
|
|
48
50
|
}
|
|
49
|
-
|
|
50
|
-
// .allowDiskUse(true) // false化(2023-11-30~)
|
|
51
|
+
const orders = await aggregate
|
|
51
52
|
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
52
53
|
.exec();
|
|
54
|
+
// 予約取引を参照(2026-05-17~)
|
|
55
|
+
const offeredThroughIdentifier = orders.at(0)?.acceptedOffers[0].offeredThrough?.identifier;
|
|
56
|
+
const useReserveTransaction = offeredThroughIdentifier !== factory_1.factory.service.webAPI.Identifier.COA; // COAでは予約取引を参照しない
|
|
57
|
+
const { useItemOfferedByReserve } = options;
|
|
58
|
+
if (useReserveTransaction) {
|
|
59
|
+
const reservationNumbers = [...new Set(orders.map((order) => String(order.acceptedOffers[0].serialNumber)))];
|
|
60
|
+
let acceptedOffersByReserveTransaction = [];
|
|
61
|
+
if (reservationNumbers.length > 0) {
|
|
62
|
+
acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
|
|
63
|
+
}
|
|
64
|
+
return orders.map((order) => {
|
|
65
|
+
const acceptedOffer = order.acceptedOffers[0];
|
|
66
|
+
const acceptedOfferByReserveTransaction = acceptedOffersByReserveTransaction.find(((offer) => offer.itemOffered.id === acceptedOffer.itemOffered.id));
|
|
67
|
+
// 予約は必ず存在するはず
|
|
68
|
+
if (acceptedOfferByReserveTransaction === undefined) {
|
|
69
|
+
console.error('repo:acceptedOffer: searchWithUnwoundAcceptedOffers: acceptedOfferByReserveTransaction: undefined!!!', acceptedOffer.itemOffered.id);
|
|
70
|
+
}
|
|
71
|
+
const priceSpecByReserveTransaction = acceptedOfferByReserveTransaction?.priceSpecification;
|
|
72
|
+
// 予約の価格は必ず存在するはず
|
|
73
|
+
if (priceSpecByReserveTransaction === undefined) {
|
|
74
|
+
console.error('repo:acceptedOffer: searchWithUnwoundAcceptedOffers: priceSpecByReserveTransaction: undefined!!!', acceptedOffer.itemOffered.id);
|
|
75
|
+
}
|
|
76
|
+
const itemOfferedByReserve = acceptedOfferByReserveTransaction?.itemOffered;
|
|
77
|
+
// itemOfferedByReserveは必ず存在するはず
|
|
78
|
+
if (itemOfferedByReserve === undefined) {
|
|
79
|
+
console.error('repo:acceptedOffer: searchWithUnwoundAcceptedOffers: itemOfferedByReserve: undefined!!!', acceptedOffer.itemOffered.id);
|
|
80
|
+
}
|
|
81
|
+
const { priceSpecification: _originalPriceSpec, // 注文ドキュメントのpriceSpecificationはもう採用しない(2026-05-21~)
|
|
82
|
+
itemOffered, ...acceptedOfferWithoutPrice } = acceptedOffer;
|
|
83
|
+
return {
|
|
84
|
+
...order,
|
|
85
|
+
acceptedOffers: [
|
|
86
|
+
{
|
|
87
|
+
...acceptedOfferWithoutPrice,
|
|
88
|
+
...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }), // 予約取引参照の値で上書き
|
|
89
|
+
...(useItemOfferedByReserve && itemOfferedByReserve !== undefined)
|
|
90
|
+
? { itemOffered: itemOfferedByReserve } // 予約取引参照の値で上書き(2026-05-25~)
|
|
91
|
+
: { itemOffered }
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return orders;
|
|
99
|
+
}
|
|
53
100
|
}
|
|
54
101
|
async aggreateOwnershipInfosByOrder(filter) {
|
|
55
102
|
const aggregate = this.orderModel.aggregate([
|
|
103
|
+
{ $match: { orderNumber: { $eq: filter.orderNumber.$eq } } },
|
|
104
|
+
{ $match: { typeOf: { $eq: factory_1.factory.order.OrderType.Order } } },
|
|
56
105
|
{
|
|
57
106
|
$unwind: {
|
|
58
107
|
path: '$acceptedOffers',
|
|
59
108
|
includeArrayIndex: 'acceptedOfferIndex'
|
|
60
109
|
}
|
|
61
110
|
},
|
|
62
|
-
{ $match: { orderNumber: { $eq: filter.orderNumber.$eq } } },
|
|
63
|
-
{ $match: { typeOf: { $eq: factory_1.factory.order.OrderType.Order } } },
|
|
64
111
|
{
|
|
65
112
|
$project: {
|
|
66
113
|
_id: 0,
|
|
@@ -81,22 +128,35 @@ class AcceptedOfferRepo {
|
|
|
81
128
|
/**
|
|
82
129
|
* 注文オファーを展開して検索する
|
|
83
130
|
*/
|
|
84
|
-
async searchAcceptedOffersByOrderNumber(filter,
|
|
85
|
-
|
|
131
|
+
async searchAcceptedOffersByOrderNumber(filter,
|
|
132
|
+
// inclusion?: (keyof IAcceptedOffer)[], // 分かりにくいので廃止(2026-05-17~)
|
|
133
|
+
options) {
|
|
134
|
+
/**
|
|
135
|
+
* unwind前に1ドキュメントを特定するためのstage
|
|
136
|
+
*/
|
|
137
|
+
const matchStagesOneDocument = [
|
|
86
138
|
{ $match: { orderNumber: { $eq: filter.orderNumber.$eq } } },
|
|
87
139
|
{ $match: { 'project.id': { $eq: filter.project.id.$eq } } },
|
|
88
140
|
{ $match: { typeOf: { $eq: factory_1.factory.order.OrderType.Order } } }
|
|
89
141
|
];
|
|
142
|
+
/**
|
|
143
|
+
* unwind後にオファー内容で絞るstage
|
|
144
|
+
*/
|
|
145
|
+
const matchStages = [
|
|
146
|
+
// { $match: { orderNumber: { $eq: filter.orderNumber.$eq } } }, // matchStagesOneDocumentへ移行(2026-05-12~)
|
|
147
|
+
// { $match: { 'project.id': { $eq: filter.project.id.$eq } } }, // matchStagesOneDocumentへ移行(2026-05-12~)
|
|
148
|
+
// { $match: { typeOf: { $eq: factory.order.OrderType.Order } } } // matchStagesOneDocumentへ移行(2026-05-12~)
|
|
149
|
+
];
|
|
90
150
|
const itemOfferedIdEq = filter.acceptedOffers?.itemOffered?.id?.$eq;
|
|
91
151
|
if (typeof itemOfferedIdEq === 'string') {
|
|
92
152
|
matchStages.push({ $match: { 'acceptedOffers.itemOffered.id': { $exists: true, $eq: itemOfferedIdEq } } });
|
|
93
153
|
}
|
|
94
|
-
const itemOfferedTypeOfIn = filter.acceptedOffers?.itemOffered?.typeOf?.$in;
|
|
95
|
-
if (Array.isArray(itemOfferedTypeOfIn)) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
154
|
+
// const itemOfferedTypeOfIn = filter.acceptedOffers?.itemOffered?.typeOf?.$in;
|
|
155
|
+
// if (Array.isArray(itemOfferedTypeOfIn)) {
|
|
156
|
+
// matchStages.push({
|
|
157
|
+
// $match: { 'acceptedOffers.itemOffered.typeOf': { $exists: true, $in: itemOfferedTypeOfIn } }
|
|
158
|
+
// });
|
|
159
|
+
// }
|
|
100
160
|
const resevationForIdIn = filter.acceptedOffers?.itemOffered?.reservationFor?.id?.$in;
|
|
101
161
|
if (Array.isArray(resevationForIdIn)) {
|
|
102
162
|
matchStages.push({
|
|
@@ -114,9 +174,7 @@ class AcceptedOfferRepo {
|
|
|
114
174
|
});
|
|
115
175
|
}
|
|
116
176
|
const aggregate = this.orderModel.aggregate([
|
|
117
|
-
|
|
118
|
-
// aggregate.sort({ orderDate: params.sort.orderDate });
|
|
119
|
-
// }
|
|
177
|
+
...matchStagesOneDocument,
|
|
120
178
|
{
|
|
121
179
|
$unwind: {
|
|
122
180
|
path: '$acceptedOffers'
|
|
@@ -125,40 +183,54 @@ class AcceptedOfferRepo {
|
|
|
125
183
|
},
|
|
126
184
|
...matchStages
|
|
127
185
|
]);
|
|
128
|
-
if (Array.isArray(inclusion) && inclusion.length > 0) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
186
|
+
// if (Array.isArray(inclusion) && inclusion.length > 0) {
|
|
187
|
+
// const specifiedProjection: Record<string, string | 0> = {
|
|
188
|
+
// _id: 0
|
|
189
|
+
// };
|
|
190
|
+
// inclusion.forEach((key) => {
|
|
191
|
+
// specifiedProjection[key] = `$acceptedOffers.${key}`;
|
|
192
|
+
// });
|
|
193
|
+
// aggregate.project(specifiedProjection);
|
|
194
|
+
// } else {
|
|
195
|
+
// aggregate.project({
|
|
196
|
+
// _id: 0,
|
|
197
|
+
// itemOffered: '$acceptedOffers.itemOffered',
|
|
198
|
+
// priceSpecification: '$acceptedOffers.priceSpecification',
|
|
199
|
+
// typeOf: '$acceptedOffers.typeOf',
|
|
200
|
+
// id: '$acceptedOffers.id',
|
|
201
|
+
// offeredThrough: '$acceptedOffers.offeredThrough',
|
|
202
|
+
// name: '$acceptedOffers.name',
|
|
203
|
+
// serialNumber: '$acceptedOffers.serialNumber'
|
|
204
|
+
// });
|
|
205
|
+
// }
|
|
206
|
+
aggregate.project({
|
|
207
|
+
_id: 0,
|
|
208
|
+
itemOffered: '$acceptedOffers.itemOffered',
|
|
209
|
+
priceSpecification: '$acceptedOffers.priceSpecification',
|
|
210
|
+
typeOf: '$acceptedOffers.typeOf',
|
|
211
|
+
id: '$acceptedOffers.id',
|
|
212
|
+
offeredThrough: '$acceptedOffers.offeredThrough',
|
|
213
|
+
name: '$acceptedOffers.name',
|
|
214
|
+
serialNumber: '$acceptedOffers.serialNumber'
|
|
215
|
+
});
|
|
149
216
|
if (typeof filter.limit === 'number' && filter.limit > 0) {
|
|
150
217
|
const page = (typeof filter.page === 'number' && filter.page > 0) ? filter.page : 1;
|
|
151
|
-
|
|
152
|
-
|
|
218
|
+
// support skip -> limit(2026-05-12~)
|
|
219
|
+
// aggregate.limit(filter.limit * page)
|
|
220
|
+
// .skip(filter.limit * (page - 1));
|
|
221
|
+
aggregate.skip(filter.limit * (page - 1))
|
|
222
|
+
.limit(filter.limit);
|
|
153
223
|
}
|
|
154
|
-
|
|
224
|
+
const acceptedOffers = await aggregate
|
|
155
225
|
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
156
226
|
.exec();
|
|
227
|
+
// 予約取引を参照(2026-05-18~)
|
|
228
|
+
return this.addAcceptedOffersDetails(acceptedOffers, options);
|
|
157
229
|
}
|
|
158
230
|
/**
|
|
159
231
|
* 注文オファーをsliceして検索する(2024-01-10~)
|
|
160
232
|
*/
|
|
161
|
-
async searchSlicedAcceptedOffersByOrderNumber(filter) {
|
|
233
|
+
async searchSlicedAcceptedOffersByOrderNumber(filter, options) {
|
|
162
234
|
const aggregate = this.orderModel.aggregate([
|
|
163
235
|
{ $match: { orderNumber: { $eq: filter.orderNumber.$eq } } },
|
|
164
236
|
{ $match: { 'project.id': { $eq: filter.project.id.$eq } } },
|
|
@@ -177,7 +249,12 @@ class AcceptedOfferRepo {
|
|
|
177
249
|
if (result === undefined) {
|
|
178
250
|
throw new factory_1.factory.errors.NotFound(factory_1.factory.order.OrderType.Order);
|
|
179
251
|
}
|
|
180
|
-
|
|
252
|
+
const { acceptedOffers, numAcceptedOffers } = result;
|
|
253
|
+
// 予約取引を参照(2026-05-18~)
|
|
254
|
+
return {
|
|
255
|
+
acceptedOffers: await this.addAcceptedOffersDetails(acceptedOffers, options),
|
|
256
|
+
numAcceptedOffers
|
|
257
|
+
};
|
|
181
258
|
}
|
|
182
259
|
async countByOrderNumber(filter) {
|
|
183
260
|
const aggregate = this.orderModel.aggregate([
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Connection } from 'mongoose';
|
|
2
|
+
import { factory } from '../factory';
|
|
3
|
+
import { IModel } from './mongoose/schemas/assetTransaction';
|
|
4
|
+
import { IAcceptedOfferByReserveTransaction } from './factory/acceptedOffer/reserveTransaction2itemOffered';
|
|
5
|
+
export type IAcceptedOffer = Omit<factory.order.IAcceptedOffer, 'priceSpecification'> & {
|
|
6
|
+
/**
|
|
7
|
+
* COA以外では注文ドキュメントにpriceSpecificationが存在しないのでIFを補完
|
|
8
|
+
*/
|
|
9
|
+
priceSpecification?: factory.order.ITicketPriceSpecification;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* 予約取引に依存した注文オファーリポジトリ
|
|
13
|
+
*/
|
|
14
|
+
export declare class AcceptedOfferInReserveRepo {
|
|
15
|
+
protected readonly reserveTransactionModel: IModel;
|
|
16
|
+
constructor(connection: Connection);
|
|
17
|
+
/**
|
|
18
|
+
* 予約番号指定で予約取引から注文オファーを生成する
|
|
19
|
+
*/
|
|
20
|
+
protected findAcceptedOffersByReservationNumbers(params: {
|
|
21
|
+
/**
|
|
22
|
+
* 予約番号リスト
|
|
23
|
+
*/
|
|
24
|
+
reservationNumbers: string[];
|
|
25
|
+
}): Promise<IAcceptedOfferByReserveTransaction[]>;
|
|
26
|
+
/**
|
|
27
|
+
* 予約取引からオファー詳細情報を付加する
|
|
28
|
+
*/
|
|
29
|
+
protected addAcceptedOffersDetails(acceptedOffers: IAcceptedOffer[], options: {
|
|
30
|
+
useItemOfferedByReserve: boolean;
|
|
31
|
+
}): Promise<IAcceptedOffer[]>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AcceptedOfferInReserveRepo = void 0;
|
|
7
|
+
const debug_1 = __importDefault(require("debug"));
|
|
8
|
+
const factory_1 = require("../factory");
|
|
9
|
+
const assetTransaction_1 = require("./mongoose/schemas/assetTransaction");
|
|
10
|
+
const reserveTransaction2itemOffered_1 = require("./factory/acceptedOffer/reserveTransaction2itemOffered");
|
|
11
|
+
const debug = (0, debug_1.default)('chevre-domain:repo:acceptedOffer');
|
|
12
|
+
/**
|
|
13
|
+
* 予約取引に依存した注文オファーリポジトリ
|
|
14
|
+
*/
|
|
15
|
+
class AcceptedOfferInReserveRepo {
|
|
16
|
+
reserveTransactionModel;
|
|
17
|
+
constructor(connection) {
|
|
18
|
+
this.reserveTransactionModel = connection.model(assetTransaction_1.modelName, (0, assetTransaction_1.createSchema)());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 予約番号指定で予約取引から注文オファーを生成する
|
|
22
|
+
*/
|
|
23
|
+
async findAcceptedOffersByReservationNumbers(params) {
|
|
24
|
+
const { reservationNumbers } = params;
|
|
25
|
+
if (!Array.isArray(reservationNumbers) || reservationNumbers.length === 0) {
|
|
26
|
+
throw new factory_1.factory.errors.ArgumentNull('reservationNumbers');
|
|
27
|
+
}
|
|
28
|
+
const reserveTransactions = await this.reserveTransactionModel.find({
|
|
29
|
+
transactionNumber: { $in: reservationNumbers },
|
|
30
|
+
typeOf: { $eq: factory_1.factory.assetTransactionType.Reserve }
|
|
31
|
+
}, {
|
|
32
|
+
object: 1
|
|
33
|
+
})
|
|
34
|
+
.lean()
|
|
35
|
+
.exec();
|
|
36
|
+
debug('findSubReservationsByReservationNumbers: reservationNumbers.length === reserveTransactions.length?', reservationNumbers.length === reserveTransactions.length);
|
|
37
|
+
return reserveTransactions.reduce((a, b) => {
|
|
38
|
+
return [...a, ...(0, reserveTransaction2itemOffered_1.reserveTransaction2itemOffered)(b)];
|
|
39
|
+
}, []);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 予約取引からオファー詳細情報を付加する
|
|
43
|
+
*/
|
|
44
|
+
async addAcceptedOffersDetails(acceptedOffers, options) {
|
|
45
|
+
const offeredThroughIdentifier = acceptedOffers.at(0)?.offeredThrough?.identifier;
|
|
46
|
+
if (offeredThroughIdentifier === factory_1.factory.service.webAPI.Identifier.COA) {
|
|
47
|
+
// COAでは予約取引を参照しない
|
|
48
|
+
return acceptedOffers;
|
|
49
|
+
}
|
|
50
|
+
const reservationNumbers = [...new Set(acceptedOffers.map((acceptedOffer) => String(acceptedOffer.serialNumber)))];
|
|
51
|
+
let acceptedOffersByReserveTransaction = [];
|
|
52
|
+
if (reservationNumbers.length > 0) {
|
|
53
|
+
acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
|
|
54
|
+
}
|
|
55
|
+
const { useItemOfferedByReserve } = options;
|
|
56
|
+
return acceptedOffers.map((acceptedOffer) => {
|
|
57
|
+
const acceptedOfferByReserveTransaction = acceptedOffersByReserveTransaction.find(((offer) => offer.itemOffered.id === acceptedOffer.itemOffered.id));
|
|
58
|
+
// 予約は必ず存在するはず
|
|
59
|
+
if (acceptedOfferByReserveTransaction === undefined) {
|
|
60
|
+
console.error('repo:acceptedOffer: addAcceptedOffersDetails: acceptedOfferByReserveTransaction: undefined!!!', acceptedOffer.itemOffered.id);
|
|
61
|
+
}
|
|
62
|
+
const priceSpecByReserveTransaction = acceptedOfferByReserveTransaction?.priceSpecification;
|
|
63
|
+
// 予約の価格は必ず存在するはず
|
|
64
|
+
if (priceSpecByReserveTransaction === undefined) {
|
|
65
|
+
console.error('repo:acceptedOffer: addAcceptedOffersDetails: priceSpecByReserveTransaction: undefined!!!', acceptedOffer.itemOffered.id);
|
|
66
|
+
}
|
|
67
|
+
const itemOfferedByReserve = acceptedOfferByReserveTransaction?.itemOffered;
|
|
68
|
+
// itemOfferedByReserveは必ず存在するはず
|
|
69
|
+
if (itemOfferedByReserve === undefined) {
|
|
70
|
+
console.error('repo:acceptedOffer: addAcceptedOffersDetails: itemOfferedByReserve: undefined!!!', acceptedOffer.itemOffered.id);
|
|
71
|
+
}
|
|
72
|
+
const { priceSpecification: _originalPriceSpec, // 注文ドキュメントのpriceSpecificationはもう採用しない(2026-05-21~)
|
|
73
|
+
itemOffered, ...acceptedOfferWithoutPrice } = acceptedOffer;
|
|
74
|
+
return {
|
|
75
|
+
...acceptedOfferWithoutPrice,
|
|
76
|
+
...((priceSpecByReserveTransaction !== undefined) && { priceSpecification: priceSpecByReserveTransaction }), // 予約取引参照の値で上書き
|
|
77
|
+
...(useItemOfferedByReserve && itemOfferedByReserve !== undefined)
|
|
78
|
+
? { itemOffered: itemOfferedByReserve } // 予約取引参照の値で上書き
|
|
79
|
+
: { itemOffered }
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.AcceptedOfferInReserveRepo = AcceptedOfferInReserveRepo;
|
|
@@ -2,6 +2,11 @@ import type { Connection, PipelineStage } from 'mongoose';
|
|
|
2
2
|
import { factory } from '../factory';
|
|
3
3
|
import { IDocType } from './mongoose/schemas/accountingReport';
|
|
4
4
|
type IMatchStage = PipelineStage.Match;
|
|
5
|
+
type IReportAsFindResult = Pick<factory.report.accountingReport.IReport, 'mainEntity'> & {
|
|
6
|
+
isPartOf: {
|
|
7
|
+
mainEntity: factory.report.accountingReport.IOrderAsMainEntity;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
5
10
|
/**
|
|
6
11
|
* 経理レポートリポジトリ
|
|
7
12
|
*/
|
|
@@ -35,11 +40,13 @@ export declare class AccountingReportRepo {
|
|
|
35
40
|
};
|
|
36
41
|
hasPart: factory.report.accountingReport.IChildReport;
|
|
37
42
|
}): Promise<void>;
|
|
38
|
-
|
|
43
|
+
findAccountingReports(params: factory.report.accountingReport.ISearchConditions & {
|
|
39
44
|
seller?: {
|
|
40
45
|
id?: string;
|
|
41
46
|
};
|
|
42
|
-
|
|
47
|
+
limit: number;
|
|
48
|
+
page: number;
|
|
49
|
+
}): Promise<IReportAsFindResult[]>;
|
|
43
50
|
unsetUnnecessaryFields(params: {
|
|
44
51
|
filter: any;
|
|
45
52
|
$unset: any;
|