@chevre/domain 25.2.0-alpha.3 → 25.2.0-alpha.30
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/factory/customerTelephone2COATelNum.d.ts +3 -0
- package/lib/chevre/factory/customerTelephone2COATelNum.js +23 -0
- package/lib/chevre/repo/action/acceptPay.d.ts +15 -0
- package/lib/chevre/repo/action/acceptPay.js +47 -19
- package/lib/chevre/repo/action/actionProcess.js +57 -57
- package/lib/chevre/repo/action.d.ts +16 -9
- package/lib/chevre/repo/action.js +99 -180
- package/lib/chevre/repo/message.d.ts +1 -1
- package/lib/chevre/repo/message.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/action.js +67 -66
- package/lib/chevre/repo/mongoose/schemas/order.d.ts +4 -0
- package/lib/chevre/repo/mongoose/schemas/order.js +10 -0
- package/lib/chevre/repo/mongoose/schemas/setting.d.ts +4 -0
- package/lib/chevre/repo/mongoose/schemas/task.js +12 -12
- package/lib/chevre/repo/order.d.ts +735 -0
- package/lib/chevre/repo/order.js +13 -20
- package/lib/chevre/repo/orderInTransaction.d.ts +45 -0
- package/lib/chevre/repo/orderInTransaction.js +175 -0
- package/lib/chevre/repo/person.d.ts +0 -15
- package/lib/chevre/repo/person.js +122 -108
- package/lib/chevre/repo/transaction/placeOrder.d.ts +2 -45
- package/lib/chevre/repo/transaction/placeOrder.js +43 -83
- package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.js +1 -1
- package/lib/chevre/service/assetTransaction/pay/start/factory.js +3 -4
- package/lib/chevre/service/offer/event/authorize/factory.d.ts +5 -5
- package/lib/chevre/service/offer/event/authorize/factory.js +30 -20
- package/lib/chevre/service/offer/event/authorize.d.ts +2 -2
- package/lib/chevre/service/offer/event/authorize.js +3 -3
- package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.d.ts +6 -7
- package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.js +10 -10
- package/lib/chevre/service/offer/eventServiceByCOA/authorize.d.ts +0 -5
- package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +17 -14
- package/lib/chevre/service/offer/eventServiceByCOA/authorizeByAcceptAction.d.ts +0 -5
- package/lib/chevre/service/offer/eventServiceByCOA/authorizeByAcceptAction.js +2 -2
- package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +1 -1
- package/lib/chevre/service/order/deleteOrder.d.ts +5 -1
- package/lib/chevre/service/order/deleteOrder.js +8 -1
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.d.ts +2 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.d.ts +2 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +2 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.d.ts +5 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.js +95 -33
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.d.ts +2 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned.js +2 -6
- package/lib/chevre/service/order/payOrder.d.ts +2 -0
- package/lib/chevre/service/order/placeOrder.d.ts +2 -0
- package/lib/chevre/service/payment/any/authorize/fixOrderAsNeeded.js +1 -2
- package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.d.ts +3 -2
- package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.d.ts +4 -3
- package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.js +3 -31
- package/lib/chevre/service/payment/any/authorize.js +13 -37
- package/lib/chevre/service/payment/any/factory.d.ts +6 -6
- package/lib/chevre/service/payment/any/factory.js +19 -22
- package/lib/chevre/service/payment/any/findAcceptAction.d.ts +3 -1
- package/lib/chevre/service/payment/any/findAcceptAction.js +14 -6
- package/lib/chevre/service/payment/any/invalidatePaymentUrl.d.ts +2 -0
- package/lib/chevre/service/payment/any/invalidatePaymentUrl.js +4 -66
- package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +4 -0
- package/lib/chevre/service/payment/any/publishPaymentUrl.js +4 -18
- package/lib/chevre/service/payment/any/voidPayTransaction.d.ts +2 -0
- package/lib/chevre/service/payment/any/voidPayTransaction.js +1 -23
- package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCard.d.ts +1 -1
- package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCard.js +5 -9
- package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +17 -8
- package/lib/chevre/service/reserve/searchByOrder.js +2 -6
- package/lib/chevre/service/task/confirmReserveTransaction.js +2 -7
- package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +2 -2
- package/lib/chevre/service/task/onOrderPaymentCompleted.js +2 -0
- package/lib/chevre/service/task/placeOrder.js +2 -2
- package/lib/chevre/service/task/publishPaymentUrl.js +7 -3
- package/lib/chevre/service/task/voidPayTransaction.js +3 -7
- package/lib/chevre/service/transaction/deleteTransaction/deletePayTransactionsByPlaceOrder.d.ts +15 -0
- package/lib/chevre/service/transaction/deleteTransaction/deletePayTransactionsByPlaceOrder.js +51 -0
- package/lib/chevre/service/transaction/deleteTransaction/deleteReservationsByPlaceOrder.d.ts +23 -0
- package/lib/chevre/service/transaction/deleteTransaction/deleteReservationsByPlaceOrder.js +64 -0
- package/lib/chevre/service/transaction/deleteTransaction.js +15 -152
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.js +0 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/prepareUnitPriceOfferConditions.d.ts +7 -2
- package/lib/chevre/service/transaction/placeOrder/confirm/prepareUnitPriceOfferConditions.js +16 -12
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/factory.d.ts +5 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/validation.d.ts +11 -2
- package/lib/chevre/service/transaction/placeOrder/confirm/validation.js +112 -91
- package/lib/chevre/service/transaction/placeOrder/confirm.d.ts +4 -0
- package/lib/chevre/service/transaction/placeOrder/confirm.js +31 -74
- package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.d.ts +4 -7
- package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.js +33 -15
- package/lib/chevre/service/transaction/placeOrder/updateAgent.d.ts +2 -0
- package/lib/chevre/service/transaction/placeOrder/updateAgent.js +19 -9
- package/package.json +5 -4
|
@@ -17,23 +17,20 @@ const factory_1 = require("../../../../factory");
|
|
|
17
17
|
const validateInvoiceReferencesOrder_1 = require("./validation/validateInvoiceReferencesOrder");
|
|
18
18
|
const validateMovieTicket_1 = require("./validation/validateMovieTicket");
|
|
19
19
|
const validatePrice_1 = require("./validation/validatePrice");
|
|
20
|
-
const debug = (0, debug_1.default)('chevre-domain:service:transaction');
|
|
20
|
+
const debug = (0, debug_1.default)('chevre-domain:service:transaction:placeOrder:confirm:validation');
|
|
21
21
|
/**
|
|
22
22
|
* 取引が確定可能な状態かどうかをチェックする
|
|
23
23
|
*/
|
|
24
|
-
function validateTransaction(transaction, acceptPayActions, authorizePaymentActions, authorizeEventServiceOfferActions,
|
|
25
|
-
|
|
26
|
-
eventReservationAcceptedOffers, payTransactions, customer) {
|
|
27
|
-
// validateProfile(transaction);
|
|
24
|
+
function validateTransaction(transaction, acceptPayActions, authorizePaymentActions, authorizeEventServiceOfferActions, eventReservationAcceptedOffers, payTransactions, customer, options) {
|
|
25
|
+
const { paymentMethodIdByTransaction } = options;
|
|
28
26
|
validateProfile({ customer });
|
|
29
27
|
(0, validatePrice_1.validatePrice)(authorizePaymentActions, authorizeEventServiceOfferActions);
|
|
30
28
|
// 請求のreferencesOrder検証(2025-11-23~)
|
|
31
29
|
(0, validateInvoiceReferencesOrder_1.validateInvoiceReferencesOrder)(authorizePaymentActions, eventReservationAcceptedOffers);
|
|
32
|
-
// 利用可能な通貨単位に対して取引検証
|
|
33
|
-
validateMonetaryAmount(authorizePaymentActions, authorizeEventServiceOfferActions);
|
|
30
|
+
// // 利用可能な通貨単位に対して取引検証
|
|
31
|
+
// validateMonetaryAmount(authorizePaymentActions, authorizeEventServiceOfferActions); // discontinue(2026-07-06~)
|
|
34
32
|
// 利用可能なMovieTicketIF決済方法タイプに対して動的にコーディング
|
|
35
33
|
const movieTicketPaymentMethodTypes = findMovieTicketPaymentMethodTypesFromTransaction(authorizePaymentActions, eventReservationAcceptedOffers);
|
|
36
|
-
debug('processing validateMovieTicket... movieTicketPaymentMethodTypes:', movieTicketPaymentMethodTypes);
|
|
37
34
|
if (Array.isArray(movieTicketPaymentMethodTypes) && movieTicketPaymentMethodTypes.length > 0) {
|
|
38
35
|
movieTicketPaymentMethodTypes.forEach((paymentMethodType) => {
|
|
39
36
|
const authorizeMovieTicketActions = authorizePaymentActions.filter((a) => {
|
|
@@ -59,13 +56,12 @@ eventReservationAcceptedOffers, payTransactions, customer) {
|
|
|
59
56
|
authorizedMovieTickets.push(...object.paymentMethod.movieTickets);
|
|
60
57
|
}
|
|
61
58
|
});
|
|
62
|
-
debug(authorizedMovieTickets.length, 'movie tickets authorized', 'transaction:', transaction.id);
|
|
63
59
|
// validateMovieTicket(paymentMethodType, { id: transaction.id }, authorizePaymentActions, eventReservationAcceptedOffers);
|
|
64
60
|
(0, validateMovieTicket_1.validateMovieTicket)(paymentMethodType, { id: transaction.id }, authorizedMovieTickets, eventReservationAcceptedOffers);
|
|
65
61
|
});
|
|
66
62
|
}
|
|
67
63
|
// 決済URLが発行されている場合、検証
|
|
68
|
-
validatePaymentUrl(
|
|
64
|
+
validatePaymentUrl({ paymentMethodIdByTransaction, acceptPayActions, authorizePaymentActions });
|
|
69
65
|
}
|
|
70
66
|
function findMovieTicketPaymentMethodTypesFromTransaction(authorizePaymentActions, eventReservationAcceptedOffers) {
|
|
71
67
|
const paymentMethodTypes = [];
|
|
@@ -95,18 +91,6 @@ function findMovieTicketPaymentMethodTypesFromTransaction(authorizePaymentAction
|
|
|
95
91
|
// ];
|
|
96
92
|
return [...new Set(paymentMethodTypes)];
|
|
97
93
|
}
|
|
98
|
-
// function validateProfile(transaction: Pick<factory.transaction.placeOrder.ITransaction, 'object'>) {
|
|
99
|
-
// // object.customerで検証(2022-05-26~)
|
|
100
|
-
// const profile = transaction.object.customer;
|
|
101
|
-
// const profileSatisfied = typeof profile?.typeOf === 'string' && profile.typeOf.length > 0
|
|
102
|
-
// && typeof profile.email === 'string' && profile.email.length > 0
|
|
103
|
-
// && typeof profile.familyName === 'string' && profile.familyName.length > 0
|
|
104
|
-
// && typeof profile.givenName === 'string' && profile.givenName.length > 0
|
|
105
|
-
// && typeof profile.telephone === 'string' && profile.telephone.length > 0;
|
|
106
|
-
// if (!profileSatisfied) {
|
|
107
|
-
// throw new factory.errors.Argument('Transaction', 'Customer Profile Required');
|
|
108
|
-
// }
|
|
109
|
-
// }
|
|
110
94
|
function validateProfile(params) {
|
|
111
95
|
const profile = params.customer;
|
|
112
96
|
const profileSatisfied = typeof profile?.typeOf === 'string' && profile.typeOf.length > 0
|
|
@@ -122,16 +106,19 @@ function validateProfile(params) {
|
|
|
122
106
|
throw new factory_1.factory.errors.Argument('Transaction', 'customer name required');
|
|
123
107
|
}
|
|
124
108
|
}
|
|
125
|
-
function validatePaymentUrl(
|
|
109
|
+
function validatePaymentUrl(params) {
|
|
110
|
+
const { paymentMethodIdByTransaction, acceptPayActions, authorizePaymentActions } = params;
|
|
126
111
|
// 決済URLが発行されている場合、検証
|
|
127
|
-
const paymentMethodId =
|
|
112
|
+
const paymentMethodId = paymentMethodIdByTransaction;
|
|
113
|
+
debug('validatePaymentUrl: paymentMethodIdByTransaction:', paymentMethodIdByTransaction);
|
|
128
114
|
if (typeof paymentMethodId === 'string' && paymentMethodId.length > 0) {
|
|
129
115
|
// check existing accept action(2025-02-26~)
|
|
130
116
|
const acceptActionExists = acceptPayActions.some(({ object, result }) => {
|
|
131
117
|
return object.transactionNumber === paymentMethodId
|
|
132
|
-
&& result?.paymentMethodId === paymentMethodId
|
|
133
|
-
|
|
118
|
+
&& result?.paymentMethodId === paymentMethodId;
|
|
119
|
+
// && typeof result?.paymentUrl === 'string'; // result.paymentUrlは廃止(2026-07-14~)
|
|
134
120
|
});
|
|
121
|
+
debug('validatePaymentUrl: acceptActionExists:', acceptActionExists);
|
|
135
122
|
if (!acceptActionExists) {
|
|
136
123
|
throw new factory_1.factory.errors.NotFound(factory_1.factory.actionType.AcceptAction);
|
|
137
124
|
}
|
|
@@ -143,68 +130,69 @@ function validatePaymentUrl(transaction, acceptPayActions, authorizePaymentActio
|
|
|
143
130
|
: undefined;
|
|
144
131
|
return resultAsInvoice?.paymentMethodId === paymentMethodId;
|
|
145
132
|
});
|
|
133
|
+
debug('validatePaymentUrl: authorizePaymentAction4paymentUrlExists:', authorizePaymentAction4paymentUrlExists);
|
|
146
134
|
if (!authorizePaymentAction4paymentUrlExists) {
|
|
147
135
|
throw new factory_1.factory.errors.Argument('Transaction', 'Payment for published payment URL required');
|
|
148
136
|
}
|
|
149
137
|
}
|
|
150
138
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
}
|
|
139
|
+
// JPY以外の通貨決済はひとまず廃止(2026-07-06~)
|
|
140
|
+
// /**
|
|
141
|
+
// * JPY以外の通貨について取引を検証する
|
|
142
|
+
// */
|
|
143
|
+
// function validateMonetaryAmount(
|
|
144
|
+
// _authorizePaymentActions: IAuthorizePaymentAction[],
|
|
145
|
+
// authorizeEventServiceOfferActions: Pick<IAuthorizeEventServiceOffer, 'result'>[]
|
|
146
|
+
// ) {
|
|
147
|
+
// // PaymentCard決済を廃止したので、JPY以外の通貨に対しての承認はありえない(2026-04-18~)
|
|
148
|
+
// const authorizeMonetaryAmountActions: IAuthorizePaymentAction[] = [];
|
|
149
|
+
// const requiredMonetaryAmountByCurrencyType: {
|
|
150
|
+
// currency: string;
|
|
151
|
+
// value: number;
|
|
152
|
+
// }[] = [];
|
|
153
|
+
// authorizeEventServiceOfferActions.forEach(
|
|
154
|
+
// (a) => {
|
|
155
|
+
// const amount = a.result?.amount;
|
|
156
|
+
// if (Array.isArray(amount)) {
|
|
157
|
+
// amount.forEach((monetaryAmount) => {
|
|
158
|
+
// if (typeof monetaryAmount.value === 'number') {
|
|
159
|
+
// requiredMonetaryAmountByCurrencyType.push({ currency: monetaryAmount.currency, value: monetaryAmount.value });
|
|
160
|
+
// }
|
|
161
|
+
// });
|
|
162
|
+
// }
|
|
163
|
+
// },
|
|
164
|
+
// 0
|
|
165
|
+
// );
|
|
166
|
+
// const requiredCurrencyTypes = [...new Set(requiredMonetaryAmountByCurrencyType.map((m) => m.currency))];
|
|
167
|
+
// const authorizedCurrencyTypes = [...new Set(authorizeMonetaryAmountActions.map(({ result }) => {
|
|
168
|
+
// const resultAsInvoice = (Array.isArray(result))
|
|
169
|
+
// ? result[0]
|
|
170
|
+
// : undefined;
|
|
171
|
+
// return resultAsInvoice?.totalPaymentDue?.currency as string;
|
|
172
|
+
// }
|
|
173
|
+
// ))];
|
|
174
|
+
// if (requiredCurrencyTypes.length !== authorizedCurrencyTypes.length) {
|
|
175
|
+
// throw new factory.errors.Argument('Transaction', 'MonetaryAmount account types not matched');
|
|
176
|
+
// }
|
|
177
|
+
// const requireMonetaryAmountSatisfied = requiredCurrencyTypes.every((currencyType) => {
|
|
178
|
+
// const requiredMonetaryAmount = requiredMonetaryAmountByCurrencyType
|
|
179
|
+
// .filter((m) => m.currency === currencyType)
|
|
180
|
+
// .reduce((a, b) => a + b.value, 0);
|
|
181
|
+
// let authorizedMonetaryAmount = 0;
|
|
182
|
+
// authorizeMonetaryAmountActions.forEach(({ result }) => {
|
|
183
|
+
// const resultAsInvoice = (Array.isArray(result))
|
|
184
|
+
// ? result[0]
|
|
185
|
+
// : undefined;
|
|
186
|
+
// if (resultAsInvoice?.totalPaymentDue?.currency === currencyType) {
|
|
187
|
+
// authorizedMonetaryAmount += resultAsInvoice.totalPaymentDue.value;
|
|
188
|
+
// }
|
|
189
|
+
// });
|
|
190
|
+
// return requiredMonetaryAmount === authorizedMonetaryAmount;
|
|
191
|
+
// });
|
|
192
|
+
// if (!requireMonetaryAmountSatisfied) {
|
|
193
|
+
// throw new factory.errors.Argument('Transaction', 'Required MonetaryAmount not satisfied');
|
|
194
|
+
// }
|
|
195
|
+
// }
|
|
208
196
|
/**
|
|
209
197
|
* 注文オファー数検証
|
|
210
198
|
*/
|
|
@@ -257,7 +245,6 @@ function validateAcceptedOffers(params) {
|
|
|
257
245
|
});
|
|
258
246
|
if (ticketIdentifiers.length > 0) {
|
|
259
247
|
ticketIdentifiers = [...new Set(ticketIdentifiers)];
|
|
260
|
-
debug('ticketIdentifiers unique?', ticketIdentifiers.join(' '), 'numAcceptedOffers:', numAcceptedOffers);
|
|
261
248
|
// チケット識別子が注文内ユニークなので、注文オファー数に一致するはず
|
|
262
249
|
if (ticketIdentifiers.length !== numAcceptedOffers) {
|
|
263
250
|
throw new factory_1.factory.errors.Argument('Transaction', 'ticketIdentifiers must be unique');
|
|
@@ -274,7 +261,6 @@ function validateAcceptedOffers(params) {
|
|
|
274
261
|
});
|
|
275
262
|
if (ticketNumbers.length > 0) {
|
|
276
263
|
ticketNumbers = [...new Set(ticketNumbers)];
|
|
277
|
-
debug('ticketNumbers unique?', ticketNumbers.join(' '), 'numAcceptedOffers:', numAcceptedOffers);
|
|
278
264
|
// チケット識別子が注文内ユニークなので、注文オファー数に一致するはず
|
|
279
265
|
if (ticketNumbers.length !== numAcceptedOffers) {
|
|
280
266
|
throw new factory_1.factory.errors.Argument('Transaction', 'ticketNumbers must be unique');
|
|
@@ -313,6 +299,44 @@ function validatePaymentMethods(params, options) {
|
|
|
313
299
|
* 興行オファー適用条件確認
|
|
314
300
|
*/
|
|
315
301
|
function validateEventOffers(params) {
|
|
302
|
+
const { unitPriceOfferConditions } = params;
|
|
303
|
+
/**
|
|
304
|
+
* 以下処理で検証に使用するアクション結果リスト
|
|
305
|
+
*/
|
|
306
|
+
let validatingAuthorizeOfferActions;
|
|
307
|
+
// 承認アクションと比較する
|
|
308
|
+
if (Array.isArray(unitPriceOfferConditions)) {
|
|
309
|
+
const everyActionsMatched = unitPriceOfferConditions.length === params.authorizeOfferActions.length
|
|
310
|
+
&& params.authorizeOfferActions.every((authorizeEventServiceOfferAction) => {
|
|
311
|
+
const conditionExpected = unitPriceOfferConditions.find(({ id }) => id === authorizeEventServiceOfferAction.id);
|
|
312
|
+
let resultMatched;
|
|
313
|
+
// 承認アクションのresultが最適化済の場合,price以外を比較しても意味がないので比較しない(2026-07-10~)
|
|
314
|
+
if (authorizeEventServiceOfferAction.result?.onlyPrice === true) {
|
|
315
|
+
resultMatched = typeof conditionExpected?.result?.price === 'number'
|
|
316
|
+
&& conditionExpected?.result.price === authorizeEventServiceOfferAction.result.price;
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
resultMatched = (0, util_1.isDeepStrictEqual)(conditionExpected?.result, authorizeEventServiceOfferAction.result);
|
|
320
|
+
}
|
|
321
|
+
debug('validateEventOffers: unitPriceOfferConditions: resultMatched?', resultMatched, params.project.id, authorizeEventServiceOfferAction.id);
|
|
322
|
+
if (!resultMatched) {
|
|
323
|
+
console.error('validateEventOffers: unitPriceOfferConditions not matched!', params.project.id, authorizeEventServiceOfferAction.id, conditionExpected?.result, authorizeEventServiceOfferAction.result);
|
|
324
|
+
}
|
|
325
|
+
return resultMatched;
|
|
326
|
+
});
|
|
327
|
+
// 全アクションについて結果が一致していればunitPriceOfferConditionsを採用する(2026-07-07~)
|
|
328
|
+
if (everyActionsMatched) {
|
|
329
|
+
validatingAuthorizeOfferActions = [...unitPriceOfferConditions];
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
validatingAuthorizeOfferActions = [...params.authorizeOfferActions];
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
// unitPriceOfferConditionsの準備は必須化(2026-07-13~)
|
|
337
|
+
throw new factory_1.factory.errors.NotImplemented('unitPriceOfferConditions must be an array');
|
|
338
|
+
// validatingAuthorizeOfferActions = [...params.authorizeOfferActions];
|
|
339
|
+
}
|
|
316
340
|
const { paymentMethods } = params;
|
|
317
341
|
const firstCreditCardPaymentMethodIdentifier = paymentMethods.find((referenceInvoice) => {
|
|
318
342
|
return referenceInvoice.issuedThrough.typeOf === factory_1.factory.service.paymentService.PaymentServiceType.CreditCard
|
|
@@ -322,7 +346,7 @@ function validateEventOffers(params) {
|
|
|
322
346
|
return referenceInvoice.issuedThrough.typeOf === factory_1.factory.service.paymentService.PaymentServiceType.CreditCard
|
|
323
347
|
|| referenceInvoice.issuedThrough.typeOf === factory_1.factory.service.paymentService.PaymentServiceType.FaceToFace;
|
|
324
348
|
}).length;
|
|
325
|
-
|
|
349
|
+
validatingAuthorizeOfferActions.forEach((a) => {
|
|
326
350
|
// support result.offers(2024-06-18~)
|
|
327
351
|
const acceptedOffersInResult = a.result?.offers;
|
|
328
352
|
if (Array.isArray(acceptedOffersInResult) && acceptedOffersInResult.length > 0) {
|
|
@@ -348,20 +372,18 @@ function validateEventOffers(params) {
|
|
|
348
372
|
// }
|
|
349
373
|
// 適用数量検証(全興行オファー承認アクションについて)(2023-11-15~)
|
|
350
374
|
// 適用数量要件を満たしていなければエラー
|
|
351
|
-
const numAcceptedOffersByOfferId =
|
|
375
|
+
const numAcceptedOffersByOfferId = validatingAuthorizeOfferActions.reduce((previousNumOffer, { result }) => {
|
|
352
376
|
const numOfferOnCurrentAction = result?.offers?.find(({ id }) => id === offerId)?.includesObject.amountOfThisGood;
|
|
353
377
|
return previousNumOffer + ((typeof numOfferOnCurrentAction === 'number') ? numOfferOnCurrentAction : 0);
|
|
354
378
|
}, 0);
|
|
355
379
|
const eligibleQuantityMaxValue = unitPriceSpec?.eligibleQuantity?.maxValue;
|
|
356
380
|
if (typeof eligibleQuantityMaxValue === 'number') {
|
|
357
|
-
debug('validateEventOffers: numAcceptedOffersByOfferId > eligibleQuantityMaxValue?', numAcceptedOffersByOfferId, eligibleQuantityMaxValue);
|
|
358
381
|
if (numAcceptedOffersByOfferId > eligibleQuantityMaxValue) {
|
|
359
382
|
throw new factory_1.factory.errors.Argument('Transaction', `Number of offer:${offerId} must be less than or equal to ${eligibleQuantityMaxValue}`);
|
|
360
383
|
}
|
|
361
384
|
}
|
|
362
385
|
const eligibleQuantityMinValue = unitPriceSpec?.eligibleQuantity?.minValue;
|
|
363
386
|
if (typeof eligibleQuantityMinValue === 'number') {
|
|
364
|
-
debug('validateEventOffers: numAcceptedOffersByOfferId < eligibleQuantityMinValue?', numAcceptedOffersByOfferId, eligibleQuantityMinValue);
|
|
365
387
|
if (numAcceptedOffersByOfferId < eligibleQuantityMinValue) {
|
|
366
388
|
throw new factory_1.factory.errors.Argument('Transaction', `Number of offer:${offerId} must be more than or equal to ${eligibleQuantityMinValue}`);
|
|
367
389
|
}
|
|
@@ -372,7 +394,6 @@ function validateEventOffers(params) {
|
|
|
372
394
|
const satisfyAcceptedPaymentMethod = numCreditCardOrFaceToFacePaymentMethod === 1
|
|
373
395
|
&& typeof firstCreditCardPaymentMethodIdentifier === 'string'
|
|
374
396
|
&& acceptedPaymentMethodTypes.includes(firstCreditCardPaymentMethodIdentifier);
|
|
375
|
-
debug('validateEventOffers: satisfyAcceptedPaymentMethod?', JSON.stringify(acceptedPaymentMethodTypes));
|
|
376
397
|
if (!satisfyAcceptedPaymentMethod) {
|
|
377
398
|
throw new factory_1.factory.errors.Argument('Transaction', `acceptedPaymentMethod requirement not satisfied`);
|
|
378
399
|
}
|
|
@@ -381,7 +402,7 @@ function validateEventOffers(params) {
|
|
|
381
402
|
}
|
|
382
403
|
});
|
|
383
404
|
// check programMembershipUsed(2024-08-15~)
|
|
384
|
-
const programMembershipRequired =
|
|
405
|
+
const programMembershipRequired = validatingAuthorizeOfferActions.reduce((a, b) => {
|
|
385
406
|
const programMembershipUsedfromResult = b.result?.itemOffered?.serviceOutput.programMembershipUsed;
|
|
386
407
|
if (Array.isArray(programMembershipUsedfromResult)) {
|
|
387
408
|
a.push(...programMembershipUsedfromResult);
|
|
@@ -41,6 +41,10 @@ interface IConfirmOptions {
|
|
|
41
41
|
* 注文における最大CreditCardIF決済方法数
|
|
42
42
|
*/
|
|
43
43
|
maxNumCreditCardPaymentMethod: number;
|
|
44
|
+
/**
|
|
45
|
+
* 取引のpotentialActionsにメッセージ識別子を保管するかどうか
|
|
46
|
+
*/
|
|
47
|
+
useTransactionPotentialActions: boolean;
|
|
44
48
|
}
|
|
45
49
|
type IConfirmParams = PlaceOrderFactory.IConfirmParams;
|
|
46
50
|
interface IConfirmResult {
|
|
@@ -58,9 +58,9 @@ function processTransactionNotInProgress(params) {
|
|
|
58
58
|
function confirm(params, options) {
|
|
59
59
|
return async (repos) => {
|
|
60
60
|
// 確認番号を事前発行
|
|
61
|
-
await (0, publishConfirmationNumberIfNotExist_1.publishConfirmationNumberIfNotExist)({
|
|
61
|
+
const confirmationNumber = await (0, publishConfirmationNumberIfNotExist_1.publishConfirmationNumberIfNotExist)({
|
|
62
62
|
id: params.id,
|
|
63
|
-
status: { $in: [
|
|
63
|
+
// status: { $in: [factory.transactionStatusType.Confirmed, factory.transactionStatusType.InProgress] },
|
|
64
64
|
object: { orderDate: params.result.order.orderDate }
|
|
65
65
|
})(repos);
|
|
66
66
|
const transaction = await repos.placeOrder.findPlaceOrderById({ typeOf: factory_1.factory.transactionType.PlaceOrder, id: params.id }, ['typeOf', 'project', 'status', 'agent', 'seller', 'object', 'result']);
|
|
@@ -82,10 +82,12 @@ function confirm(params, options) {
|
|
|
82
82
|
// if (typeof orderNumber !== 'string' || orderNumber === '') {
|
|
83
83
|
// throw new factory.errors.Argument('transactionId', 'orderNumber not issued');
|
|
84
84
|
// }
|
|
85
|
+
// 注文に決済方法IDが発行済か確認(2026-07-12)
|
|
86
|
+
const paymentMethodIdByTransaction = await repos.orderInTransaction.findPaymentMethodId({ id: params.id });
|
|
85
87
|
// 取引に対する全ての承認アクションをマージ
|
|
86
88
|
const completedAuthorizeActions = await searchAuthorizeActions(params)(repos);
|
|
87
89
|
let acceptPayActions = [];
|
|
88
|
-
if (typeof
|
|
90
|
+
if (typeof paymentMethodIdByTransaction === 'string') {
|
|
89
91
|
acceptPayActions = await searchAcceptPayActions(params)(repos);
|
|
90
92
|
}
|
|
91
93
|
// 必要あらば注文コード発行(2024-02-05~)
|
|
@@ -116,13 +118,11 @@ function confirm(params, options) {
|
|
|
116
118
|
}))
|
|
117
119
|
.filter(({ serialNumber }) => typeof serialNumber === 'string' && serialNumbers.includes(serialNumber));
|
|
118
120
|
// 単価オファーの全適用条件を検証するために、単価オファーを参照(2026-07-06~)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
})({ offer: repos.offer });
|
|
125
|
-
}
|
|
121
|
+
const unitPriceOfferConditions = await (0, prepareUnitPriceOfferConditions_1.prepareUnitPriceOfferConditions)({
|
|
122
|
+
project: { id: transaction.project.id, },
|
|
123
|
+
acceptedOffers,
|
|
124
|
+
authorizeEventServiceOfferActions
|
|
125
|
+
})({ offer: repos.offer });
|
|
126
126
|
// authorizePaymentActionsからpayTransactionsを参照(2024-06-20~)
|
|
127
127
|
let payTransactions = [];
|
|
128
128
|
// 決済承認アクションのinstrument依存をobject依存へ変更(2025-12-14~)
|
|
@@ -140,25 +140,16 @@ function confirm(params, options) {
|
|
|
140
140
|
const seller = (0, factory_2.createSeller)({ transaction });
|
|
141
141
|
const { paymentMethods, placingOrder, result, eventId, reservationIds } = createResult({
|
|
142
142
|
...params,
|
|
143
|
-
orderNumber,
|
|
143
|
+
orderNumber,
|
|
144
|
+
confirmationNumber,
|
|
145
|
+
transaction,
|
|
144
146
|
acceptPayActions,
|
|
145
147
|
authorizePaymentActions, authorizeEventServiceOfferActions,
|
|
146
|
-
// authorizeProductOfferActions,
|
|
147
148
|
acceptedOffers, payTransactions, customer,
|
|
148
|
-
|
|
149
|
+
unitPriceOfferConditions,
|
|
150
|
+
...(typeof code === 'string') ? { code } : undefined,
|
|
151
|
+
paymentMethodIdByTransaction
|
|
149
152
|
}, options);
|
|
150
|
-
// discontinue emailMessageRepo
|
|
151
|
-
// // デフォルトEメールメッセージを検索
|
|
152
|
-
// let emailMessageOnOrderSent: factory.creativeWork.message.email.ICreativeWork | undefined;
|
|
153
|
-
// if (repos.emailMessage !== undefined) {
|
|
154
|
-
// const searchEmailMessagesResult = await repos.emailMessage.search({
|
|
155
|
-
// limit: 1,
|
|
156
|
-
// page: 1,
|
|
157
|
-
// project: { id: { $eq: transaction.project.id } },
|
|
158
|
-
// about: { identifier: { $eq: factory.creativeWork.message.email.AboutIdentifier.OnOrderSent } }
|
|
159
|
-
// });
|
|
160
|
-
// emailMessageOnOrderSent = searchEmailMessagesResult.shift();
|
|
161
|
-
// }
|
|
162
153
|
// ポストアクションを作成
|
|
163
154
|
const setting = await repos.setting.findOne({ project: { id: { $eq: '*' } } }, ['defaultSenderEmail']);
|
|
164
155
|
if (typeof setting?.defaultSenderEmail !== 'string') {
|
|
@@ -169,13 +160,8 @@ function confirm(params, options) {
|
|
|
169
160
|
customer,
|
|
170
161
|
seller,
|
|
171
162
|
paymentMethods,
|
|
172
|
-
// order: orderWithAcceptedOffers, // 現時点でcreateEmailMessageでorder.acceptedOffersを使用している(2024-02-06~)
|
|
173
|
-
// transaction: transaction,
|
|
174
163
|
...(params.potentialActions !== undefined) ? { potentialActions: params.potentialActions } : undefined,
|
|
175
|
-
|
|
176
|
-
},
|
|
177
|
-
// settings
|
|
178
|
-
setting);
|
|
164
|
+
}, setting);
|
|
179
165
|
// メッセージ保管(2024-04-28~)
|
|
180
166
|
await saveMessagesIfNeeded({
|
|
181
167
|
project: { id: transaction.project.id },
|
|
@@ -188,10 +174,11 @@ function confirm(params, options) {
|
|
|
188
174
|
id: transaction.id,
|
|
189
175
|
object: {
|
|
190
176
|
orderDate: params.result.order.orderDate,
|
|
191
|
-
orderNumber
|
|
177
|
+
orderNumber,
|
|
178
|
+
confirmationNumber: placingOrder.confirmationNumber
|
|
192
179
|
},
|
|
193
180
|
result: result,
|
|
194
|
-
potentialActions
|
|
181
|
+
...((options.useTransactionPotentialActions) && { potentialActions }) // support undefined(2026-07-17~)
|
|
195
182
|
});
|
|
196
183
|
}
|
|
197
184
|
catch (error) {
|
|
@@ -328,17 +315,20 @@ function createResult(params, options) {
|
|
|
328
315
|
}
|
|
329
316
|
});
|
|
330
317
|
// 取引の確定条件が全て整っているかどうか確認
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
318
|
+
const { paymentMethodIdByTransaction } = params;
|
|
319
|
+
(0, validation_1.validateTransaction)({ id: transaction.id }, params.acceptPayActions, params.authorizePaymentActions, params.authorizeEventServiceOfferActions, eventReservationAcceptedOffers, params.payTransactions, params.customer, {
|
|
320
|
+
...((typeof paymentMethodIdByTransaction === 'string') && { paymentMethodIdByTransaction })
|
|
321
|
+
});
|
|
334
322
|
const { paymentMethods, price } = (0, factory_2.createPaymentMethods)({ authorizePaymentActions: params.authorizePaymentActions });
|
|
335
323
|
const orderedItem = (0, orderedItem_1.acceptedOffers2orderedItem)({
|
|
336
324
|
eventReservationAcceptedOffers
|
|
337
325
|
});
|
|
338
326
|
(0, validation_1.validateEventOffers)({
|
|
327
|
+
project: { id: transaction.project.id },
|
|
339
328
|
order: { price },
|
|
340
329
|
paymentMethods,
|
|
341
|
-
|
|
330
|
+
authorizeOfferActions: params.authorizeEventServiceOfferActions,
|
|
331
|
+
unitPriceOfferConditions: params.unitPriceOfferConditions
|
|
342
332
|
});
|
|
343
333
|
// 注文オファー検証
|
|
344
334
|
(0, validation_1.validateAcceptedOffers)({
|
|
@@ -351,8 +341,10 @@ function createResult(params, options) {
|
|
|
351
341
|
result: params.result
|
|
352
342
|
});
|
|
353
343
|
(0, validation_1.validatePaymentMethods)({ order: { paymentMethods } }, options);
|
|
354
|
-
//
|
|
355
|
-
const { confirmationNumber } =
|
|
344
|
+
// 取引のobjectへの依存を排除する(2026-07-08~)
|
|
345
|
+
const { confirmationNumber } = params;
|
|
346
|
+
// // 確認番号を発行
|
|
347
|
+
// const { confirmationNumber } = createConfirmationNumber({ transaction });
|
|
356
348
|
// 注文作成
|
|
357
349
|
const orderAsResult = (0, result_1.createOrderAsResult)({
|
|
358
350
|
orderNumber: params.orderNumber,
|
|
@@ -399,21 +391,6 @@ function createResult(params, options) {
|
|
|
399
391
|
}
|
|
400
392
|
function searchAcceptPayActions(params) {
|
|
401
393
|
return async (repos) => {
|
|
402
|
-
// let acceptPayActions = <IAcceptPayAction[]>await repos.action.search(
|
|
403
|
-
// {
|
|
404
|
-
// project: { id: { $eq: params.project.id } },
|
|
405
|
-
// typeOf: { $eq: factory.actionType.AcceptAction },
|
|
406
|
-
// actionStatus: { $in: [factory.actionStatusType.CompletedActionStatus] },
|
|
407
|
-
// purpose: {
|
|
408
|
-
// id: { $in: [params.id] },
|
|
409
|
-
// typeOf: { $in: [factory.transactionType.PlaceOrder] }
|
|
410
|
-
// },
|
|
411
|
-
// object: {
|
|
412
|
-
// typeOf: { $eq: factory.assetTransactionType.Pay }
|
|
413
|
-
// }
|
|
414
|
-
// },
|
|
415
|
-
// ['object', 'endDate', 'result']
|
|
416
|
-
// );
|
|
417
394
|
let acceptPayActions = await repos.acceptPayAction.findAcceptActionsByPurpose({
|
|
418
395
|
project: { id: params.project.id },
|
|
419
396
|
actionStatus: factory_1.factory.actionStatusType.CompletedActionStatus,
|
|
@@ -432,15 +409,6 @@ function searchAcceptPayActions(params) {
|
|
|
432
409
|
function searchAuthorizeActions(params) {
|
|
433
410
|
return async (repos) => {
|
|
434
411
|
// 取引に対する全ての承認アクションをマージ
|
|
435
|
-
// let authorizeActions = <IAuthorizeOfferOrPaymentAction[]>await repos.action.searchByPurpose({
|
|
436
|
-
// typeOf: factory.actionType.AuthorizeAction,
|
|
437
|
-
// purpose: {
|
|
438
|
-
// typeOf: factory.transactionType.PlaceOrder,
|
|
439
|
-
// id: params.id
|
|
440
|
-
// },
|
|
441
|
-
// // Completedに絞る(2023-05-16~)
|
|
442
|
-
// actionStatus: { $eq: factory.actionStatusType.CompletedActionStatus }
|
|
443
|
-
// });
|
|
444
412
|
let authorizeActions = [
|
|
445
413
|
...await repos.authorizePaymentMethodAction.findAuthorizePaymentMethodActionsByPurpose({
|
|
446
414
|
purpose: {
|
|
@@ -467,14 +435,3 @@ function searchAuthorizeActions(params) {
|
|
|
467
435
|
return authorizeActions;
|
|
468
436
|
};
|
|
469
437
|
}
|
|
470
|
-
function createConfirmationNumber(params) {
|
|
471
|
-
const confirmationNumber = params.transaction.object.confirmationNumber;
|
|
472
|
-
// 取引に確認番号が保管されていなければ、確認番号を発行
|
|
473
|
-
if (typeof confirmationNumber !== 'string') {
|
|
474
|
-
// 事前に発行済なはずなので、ありえないフロー
|
|
475
|
-
throw new factory_1.factory.errors.Internal('object.confirmationNumber undefined');
|
|
476
|
-
}
|
|
477
|
-
return {
|
|
478
|
-
confirmationNumber,
|
|
479
|
-
};
|
|
480
|
-
}
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import type { ConfirmationNumberRepo } from '../../../repo/confirmationNumber';
|
|
2
|
-
import type {
|
|
3
|
-
import { factory } from '../../../factory';
|
|
2
|
+
import type { OrderInTransactionRepo } from '../../../repo/orderInTransaction';
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
4
|
+
* 未発行であれば、確認番号を発行して注文ドキュメントに保管する
|
|
5
|
+
* reimplement using OrderInTransactionRepo(2026-07-09~)
|
|
6
6
|
*/
|
|
7
7
|
declare function publishConfirmationNumberIfNotExist(params: {
|
|
8
8
|
/**
|
|
9
9
|
* 取引ID
|
|
10
10
|
*/
|
|
11
11
|
id: string;
|
|
12
|
-
status: {
|
|
13
|
-
$in: factory.transactionStatusType[];
|
|
14
|
-
};
|
|
15
12
|
object: {
|
|
16
13
|
orderDate: Date;
|
|
17
14
|
};
|
|
18
15
|
}): (repos: {
|
|
19
|
-
placeOrder: PlaceOrderRepo;
|
|
20
16
|
confirmationNumber: ConfirmationNumberRepo;
|
|
17
|
+
orderInTransaction: OrderInTransactionRepo;
|
|
21
18
|
}) => Promise<string>;
|
|
22
19
|
export { publishConfirmationNumberIfNotExist };
|
|
@@ -1,36 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.publishConfirmationNumberIfNotExist = publishConfirmationNumberIfNotExist;
|
|
7
|
+
const debug_1 = __importDefault(require("debug"));
|
|
8
|
+
// import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
|
|
4
9
|
const factory_1 = require("../../../factory");
|
|
10
|
+
const debug = (0, debug_1.default)('chevre-domain:service:transaction:placeOrder:publishConfirmationNumberIfNotExist');
|
|
5
11
|
/**
|
|
6
|
-
*
|
|
12
|
+
* 未発行であれば、確認番号を発行して注文ドキュメントに保管する
|
|
13
|
+
* reimplement using OrderInTransactionRepo(2026-07-09~)
|
|
7
14
|
*/
|
|
8
15
|
function publishConfirmationNumberIfNotExist(params) {
|
|
9
16
|
return async (repos) => {
|
|
10
|
-
let confirmationNumber = await repos.placeOrder.findInProgressConfirmationNumberById({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
});
|
|
17
|
+
// let confirmationNumber = await repos.placeOrder.findInProgressConfirmationNumberById({
|
|
18
|
+
// id: params.id,
|
|
19
|
+
// status: { $in: params.status.$in }
|
|
20
|
+
// });
|
|
21
|
+
let confirmationNumber = await repos.orderInTransaction.findConfirmationNumberByIdentifier({ identifier: params.id });
|
|
22
|
+
debug('already exists?', confirmationNumber);
|
|
14
23
|
// すでに発行済であれば何もしない
|
|
15
24
|
if (typeof confirmationNumber === 'string') {
|
|
16
25
|
return confirmationNumber;
|
|
17
26
|
}
|
|
18
27
|
// 確認番号を発行
|
|
19
28
|
confirmationNumber = await repos.confirmationNumber.publish({ orderDate: params.object.orderDate });
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
29
|
+
debug('saving new confirmationNumber...', confirmationNumber);
|
|
30
|
+
// // 取引に存在しなければ保管
|
|
31
|
+
// await repos.placeOrder.saveConfirmationNumberIfNotExist({
|
|
32
|
+
// id: params.id,
|
|
33
|
+
// status: { $in: params.status.$in },
|
|
34
|
+
// confirmationNumber
|
|
35
|
+
// });
|
|
36
|
+
// 注文ドキュメントにも保管(2026-07-08~)
|
|
37
|
+
const saveResult = await repos.orderInTransaction.saveConfirmationNumberIfNotExist({
|
|
38
|
+
identifier: params.id,
|
|
24
39
|
confirmationNumber
|
|
25
|
-
});
|
|
40
|
+
}, { onlyPlaceOrder: true });
|
|
41
|
+
debug('saveConfirmationNumberIfNotExist result:', JSON.stringify(saveResult));
|
|
26
42
|
// 確認番号を取引から再取得
|
|
27
|
-
confirmationNumber = await repos.placeOrder.findInProgressConfirmationNumberById({
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
});
|
|
43
|
+
// confirmationNumber = await repos.placeOrder.findInProgressConfirmationNumberById({
|
|
44
|
+
// id: params.id,
|
|
45
|
+
// status: { $in: params.status.$in }
|
|
46
|
+
// });
|
|
47
|
+
confirmationNumber = await repos.orderInTransaction.findConfirmationNumberByIdentifier({ identifier: params.id });
|
|
48
|
+
debug('confirmationNumber should exist:', confirmationNumber);
|
|
31
49
|
// 万が一処理が想定通りでない場合confirmationNumberが存在しない
|
|
32
50
|
if (typeof confirmationNumber !== 'string') {
|
|
33
|
-
throw new factory_1.factory.errors.Internal('
|
|
51
|
+
throw new factory_1.factory.errors.Internal('orderInTransaction.confirmationNumber not found');
|
|
34
52
|
}
|
|
35
53
|
return confirmationNumber;
|
|
36
54
|
};
|
|
@@ -13,6 +13,8 @@ export declare function updateAgent(params: {
|
|
|
13
13
|
agent: factory.order.ICustomer & {
|
|
14
14
|
telephoneRegion?: string;
|
|
15
15
|
};
|
|
16
|
+
}, options: {
|
|
17
|
+
useLibphonenumber: boolean;
|
|
16
18
|
}): (repos: {
|
|
17
19
|
orderInTransaction: OrderInTransactionRepo;
|
|
18
20
|
placeOrder: PlaceOrderRepo;
|