@chevre/domain 21.18.0-alpha.4 → 21.18.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example/src/chevre/aggreateOwnershipInfosByOrder.ts +24 -0
- package/example/src/chevre/offerCatalog2offerCatalogItem.ts +4 -0
- package/example/src/chevre/searchAcceptedOfferIds.ts +57 -0
- package/example/src/chevre/searchOffers.ts +41 -37
- package/example/src/chevre/searchOrderAcceptedOffers.ts +12 -12
- package/example/src/chevre/searchOrders.ts +36 -19
- package/example/src/chevre/searchReservationsByOrder.ts +30 -0
- package/example/src/chevre/searchTransactions.ts +41 -0
- package/example/src/chevre/transaction/processReturnOrder.ts +1 -0
- package/example/src/chevre/upsertMoviesByIdentifier.ts +5 -4
- package/example/src/chevre/upsertOfferCatalogsByIdentifier.ts +46 -0
- package/example/src/chevre/upsertOffersByIdentifier.ts +94 -0
- package/example/src/chevre/upsertScreeningEventSeriesByVersion.ts +104 -0
- package/lib/chevre/credentials.d.ts +0 -3
- package/lib/chevre/credentials.js +4 -3
- package/lib/chevre/repo/acceptedOffer.d.ts +60 -0
- package/lib/chevre/repo/acceptedOffer.js +158 -0
- package/lib/chevre/repo/creativeWork.d.ts +12 -2
- package/lib/chevre/repo/creativeWork.js +39 -25
- package/lib/chevre/repo/event.d.ts +15 -0
- package/lib/chevre/repo/event.js +66 -0
- package/lib/chevre/repo/offer.d.ts +14 -5
- package/lib/chevre/repo/offer.js +94 -19
- package/lib/chevre/repo/offerCatalog.d.ts +18 -1
- package/lib/chevre/repo/offerCatalog.js +51 -39
- package/lib/chevre/repo/order.d.ts +14 -54
- package/lib/chevre/repo/order.js +46 -180
- package/lib/chevre/repo/paymentService.d.ts +30 -0
- package/lib/chevre/repo/paymentService.js +75 -0
- package/lib/chevre/repo/place.js +14 -10
- package/lib/chevre/repo/product.d.ts +41 -10
- package/lib/chevre/repo/product.js +94 -47
- package/lib/chevre/repo/transaction.d.ts +5 -4
- package/lib/chevre/repository.d.ts +10 -7
- package/lib/chevre/repository.js +28 -17
- package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +10 -1
- package/lib/chevre/service/aggregation/event/findEventOffers.js +10 -1
- package/lib/chevre/service/assetTransaction/moneyTransfer.js +1 -1
- package/lib/chevre/service/assetTransaction/pay/potentialActions.d.ts +3 -1
- package/lib/chevre/service/assetTransaction/pay/potentialActions.js +3 -3
- package/lib/chevre/service/assetTransaction/pay.d.ts +2 -0
- package/lib/chevre/service/assetTransaction/pay.js +47 -34
- package/lib/chevre/service/assetTransaction/refund/factory.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/refund/factory.js +0 -5
- package/lib/chevre/service/assetTransaction/refund.js +15 -3
- package/lib/chevre/service/assetTransaction/registerService.js +18 -2
- package/lib/chevre/service/assetTransaction/reserve/factory/price.js +1 -1
- package/lib/chevre/service/assetTransaction/reserve.js +32 -2
- package/lib/chevre/service/delivery/factory.d.ts +3 -1
- package/lib/chevre/service/delivery/factory.js +4 -2
- package/lib/chevre/service/delivery.d.ts +1 -2
- package/lib/chevre/service/delivery.js +1 -3
- package/lib/chevre/service/event.js +1 -1
- package/lib/chevre/service/moneyTransfer.js +11 -1
- package/lib/chevre/service/offer/event/factory.d.ts +1 -1
- package/lib/chevre/service/offer/event/factory.js +4 -2
- package/lib/chevre/service/offer/event/searchEventTicketOffers.js +40 -5
- package/lib/chevre/service/offer/product/factory.js +1 -1
- package/lib/chevre/service/offer/product/searchProductOffers.js +10 -1
- package/lib/chevre/service/offer/product.d.ts +0 -14
- package/lib/chevre/service/offer/product.js +61 -44
- package/lib/chevre/service/order/confirmPayTransaction.d.ts +2 -0
- package/lib/chevre/service/order/confirmPayTransaction.js +1 -0
- package/lib/chevre/service/order/createAccountingReportIfNotExist.d.ts +3 -1
- package/lib/chevre/service/order/createAccountingReportIfNotExist.js +4 -1
- package/lib/chevre/service/order/deleteOrder.d.ts +2 -0
- package/lib/chevre/service/order/deleteOrder.js +15 -4
- package/lib/chevre/service/order/findPlaceOrderTransaction.d.ts +3 -1
- package/lib/chevre/service/order/findPlaceOrderTransaction.js +1 -2
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +3 -3
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +15 -9
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.d.ts +11 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.js +54 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled.d.ts +10 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled.js +38 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.d.ts +12 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.js +111 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.d.ts +12 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.js +64 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.d.ts +10 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +103 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.d.ts +23 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +180 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.d.ts +14 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +214 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.d.ts +10 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.js +110 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned.d.ts +14 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned.js +164 -0
- package/lib/chevre/service/order/onOrderStatusChanged.d.ts +9 -15
- package/lib/chevre/service/order/onOrderStatusChanged.js +11 -446
- package/lib/chevre/service/order/onOrderUpdated/factory.d.ts +6 -0
- package/lib/chevre/service/order/onOrderUpdated/factory.js +45 -0
- package/lib/chevre/service/order/onOrderUpdated.js +1 -1
- package/lib/chevre/service/order/payOrder.d.ts +2 -2
- package/lib/chevre/service/order/placeOrder.d.ts +2 -3
- package/lib/chevre/service/order/placeOrder.js +65 -22
- package/lib/chevre/service/order/returnOrder.d.ts +2 -2
- package/lib/chevre/service/order/returnOrder.js +34 -13
- package/lib/chevre/service/order/sendOrder.d.ts +2 -2
- package/lib/chevre/service/order/sendOrder.js +19 -6
- package/lib/chevre/service/order.d.ts +2 -2
- package/lib/chevre/service/order.js +2 -2
- package/lib/chevre/service/payment/any.js +1 -1
- package/lib/chevre/service/payment/movieTicket/getCredentials.js +1 -2
- package/lib/chevre/service/payment/paymentCard.js +9 -2
- package/lib/chevre/service/reserve/searchByOrder.d.ts +21 -0
- package/lib/chevre/service/reserve/searchByOrder.js +113 -0
- package/lib/chevre/service/reserve/verifyToken4reservation.js +0 -11
- package/lib/chevre/service/reserve.d.ts +2 -1
- package/lib/chevre/service/reserve.js +3 -1
- package/lib/chevre/service/task/confirmPayTransaction.js +2 -1
- package/lib/chevre/service/task/deleteTransaction.js +2 -0
- package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +5 -6
- package/lib/chevre/service/task/onAuthorizationCreated.js +9 -18
- package/lib/chevre/service/task/onOrderPaymentCompleted.js +5 -6
- package/lib/chevre/service/task/onResourceUpdated/onResourceDeleted.js +1 -1
- package/lib/chevre/service/task/onResourceUpdated.js +1 -1
- package/lib/chevre/service/task/placeOrder.js +10 -17
- package/lib/chevre/service/task/returnOrder.js +10 -17
- package/lib/chevre/service/task/sendOrder.js +10 -17
- package/lib/chevre/service/task/voidRegisterServiceTransaction.js +3 -7
- package/lib/chevre/service/transaction/deleteTransaction.d.ts +2 -0
- package/lib/chevre/service/transaction/moneyTransfer.js +3 -4
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.d.ts +0 -4
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +0 -86
- package/lib/chevre/service/transaction/placeOrderInProgress/result.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/validation.d.ts +1 -1
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnMoneyTransfer.d.ts +1 -0
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnMoneyTransfer.js +3 -3
- package/lib/chevre/service/transaction/returnOrder/potentialActions.d.ts +1 -0
- package/lib/chevre/service/transaction/returnOrder/potentialActions.js +1 -1
- package/lib/chevre/service/transaction/returnOrder.d.ts +3 -0
- package/lib/chevre/service/transaction/returnOrder.js +73 -55
- package/package.json +3 -3
- package/example/src/chevre/transaction/findPaymentCardPermit.ts +0 -29
- package/lib/chevre/repo/action/registerServiceInProgress.d.ts +0 -29
- package/lib/chevre/repo/action/registerServiceInProgress.js +0 -58
- package/lib/chevre/service/order/onOrderStatusChanged/factory.d.ts +0 -42
- package/lib/chevre/service/order/onOrderStatusChanged/factory.js +0 -467
- package/lib/chevre/service/transaction/orderProgramMembership/findPaymentCardPermit.d.ts +0 -26
- package/lib/chevre/service/transaction/orderProgramMembership/findPaymentCardPermit.js +0 -65
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.onOrderDelivered = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* 注文ステータス変更時処理
|
|
15
|
+
*/
|
|
16
|
+
const createDebug = require("debug");
|
|
17
|
+
const factory = require("../../../factory");
|
|
18
|
+
const factory_1 = require("./onOrderDelivered/factory");
|
|
19
|
+
const debug = createDebug('chevre-domain:service:order');
|
|
20
|
+
function onOrderDelivered(params) {
|
|
21
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
var _a, _b, _c, _d, _e;
|
|
23
|
+
debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
|
|
24
|
+
let tasks = [];
|
|
25
|
+
switch (params.order.orderStatus) {
|
|
26
|
+
case factory.orderStatus.OrderDelivered:
|
|
27
|
+
tasks = [
|
|
28
|
+
...(0, factory_1.createInformTasks)(params.order),
|
|
29
|
+
// 取引のpotentialActionsを適用(2023-08-17~)
|
|
30
|
+
...(0, factory_1.createOnOrderSentTasksByTransaction)({
|
|
31
|
+
potentialActions: (_e = (_d = (_c = (_b = (_a = params.placeOrderTransaction) === null || _a === void 0 ? void 0 : _a.potentialActions) === null || _b === void 0 ? void 0 : _b.order) === null || _c === void 0 ? void 0 : _c.potentialActions) === null || _d === void 0 ? void 0 : _d.sendOrder) === null || _e === void 0 ? void 0 : _e.potentialActions
|
|
32
|
+
})
|
|
33
|
+
];
|
|
34
|
+
// プロダクト登録プロセスロック解除
|
|
35
|
+
try {
|
|
36
|
+
const placeOrderTransaction = params.placeOrderTransaction;
|
|
37
|
+
if (typeof (placeOrderTransaction === null || placeOrderTransaction === void 0 ? void 0 : placeOrderTransaction.id) === 'string') {
|
|
38
|
+
// 廃止(2023-12-07~)
|
|
39
|
+
// プロダクト登録プロセスロック解除(orderからproductIdを抽出する)
|
|
40
|
+
// const productIds4unlock = params.order.acceptedOffers
|
|
41
|
+
// .filter((o) => o.itemOffered.typeOf === factory.permit.PermitType.Permit
|
|
42
|
+
// && typeof o.itemOffered.issuedThrough?.id === 'string'
|
|
43
|
+
// && o.itemOffered.issuedThrough.id.length > 0)
|
|
44
|
+
// .map((o) => String((<factory.order.IPermit>o.itemOffered).issuedThrough?.id));
|
|
45
|
+
// await Promise.all(productIds4unlock.map(async (productId) => {
|
|
46
|
+
// await processUnlockRegisterMembershipService({
|
|
47
|
+
// agent: { id: String(params.order.customer.id) },
|
|
48
|
+
// product: { id: productId },
|
|
49
|
+
// purpose: { typeOf: placeOrderTransaction.typeOf, id: placeOrderTransaction.id }
|
|
50
|
+
// })(repos);
|
|
51
|
+
// }));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
break;
|
|
58
|
+
default:
|
|
59
|
+
throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
|
|
60
|
+
}
|
|
61
|
+
yield repos.task.saveMany(tasks, { emitImmediately: true });
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
exports.onOrderDelivered = onOrderDelivered;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
2
|
+
import * as factory from '../../../factory';
|
|
3
|
+
declare function onOrderPaymentDue(params: {
|
|
4
|
+
order: Pick<factory.order.IOrder, 'paymentMethods' | 'project' | 'orderNumber' | 'confirmationNumber' | 'customer' | 'orderDate' | 'seller' | 'typeOf' | 'price' | 'priceCurrency'> & {
|
|
5
|
+
orderStatus: factory.orderStatus.OrderPaymentDue;
|
|
6
|
+
};
|
|
7
|
+
}): (repos: {
|
|
8
|
+
task: TaskRepo;
|
|
9
|
+
}) => Promise<void>;
|
|
10
|
+
export { onOrderPaymentDue };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.onOrderPaymentDue = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* 注文決済時処理
|
|
15
|
+
*/
|
|
16
|
+
const createDebug = require("debug");
|
|
17
|
+
const factory = require("../../../factory");
|
|
18
|
+
const order_1 = require("../../../factory/order");
|
|
19
|
+
const debug = createDebug('chevre-domain:service:order');
|
|
20
|
+
function onOrderPaymentDue(params) {
|
|
21
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
|
|
23
|
+
let tasks = [];
|
|
24
|
+
const maskedCustomer = (0, order_1.createMaskedCustomer)(params.order, { noProfile: true });
|
|
25
|
+
const simpleOrder = {
|
|
26
|
+
typeOf: params.order.typeOf,
|
|
27
|
+
seller: {
|
|
28
|
+
id: params.order.seller.id,
|
|
29
|
+
typeOf: params.order.seller.typeOf,
|
|
30
|
+
name: params.order.seller.name
|
|
31
|
+
},
|
|
32
|
+
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
33
|
+
orderNumber: params.order.orderNumber,
|
|
34
|
+
price: params.order.price,
|
|
35
|
+
priceCurrency: params.order.priceCurrency,
|
|
36
|
+
orderDate: params.order.orderDate
|
|
37
|
+
};
|
|
38
|
+
switch (params.order.orderStatus) {
|
|
39
|
+
// OrderPaymentDueを追加(2023-08-23~)
|
|
40
|
+
case factory.orderStatus.OrderPaymentDue:
|
|
41
|
+
tasks = [
|
|
42
|
+
...yield createConfirmPayTransactionTasks(params.order, simpleOrder)(repos)
|
|
43
|
+
];
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
|
|
47
|
+
}
|
|
48
|
+
yield repos.task.saveMany(tasks, { emitImmediately: true });
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
exports.onOrderPaymentDue = onOrderPaymentDue;
|
|
52
|
+
function createConfirmPayTransactionTasks(order, simpleOrder) {
|
|
53
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
const taskRunsAt = new Date();
|
|
55
|
+
const tasks = [];
|
|
56
|
+
yield Promise.all(order.paymentMethods.map((invoice) => __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
// PaymentAutomaticallyAppliedであれば、自動決済処理を実行(2023-08-24~)
|
|
58
|
+
if (invoice.paymentStatus !== factory.paymentStatusType.PaymentAutomaticallyApplied) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// 冗長なタスク作成を回避
|
|
62
|
+
const existingTasks = yield repos.task.search({
|
|
63
|
+
limit: 1,
|
|
64
|
+
page: 1,
|
|
65
|
+
project: { id: { $eq: order.project.id } },
|
|
66
|
+
name: factory.taskName.ConfirmPayTransaction,
|
|
67
|
+
data: {
|
|
68
|
+
object: { transactionNumber: { $eq: invoice.paymentMethodId } },
|
|
69
|
+
purpose: { orderNumber: { $eq: order.orderNumber } }
|
|
70
|
+
}
|
|
71
|
+
}, {
|
|
72
|
+
data: 0, executionResults: 0, name: 0, numberOfTried: 0,
|
|
73
|
+
remainingNumberOfTries: 0, runsAt: 0, status: 0
|
|
74
|
+
});
|
|
75
|
+
if (existingTasks.length === 0) {
|
|
76
|
+
const data = {
|
|
77
|
+
project: order.project,
|
|
78
|
+
typeOf: factory.actionType.ConfirmAction,
|
|
79
|
+
object: [{ typeOf: factory.assetTransactionType.Pay, transactionNumber: invoice.paymentMethodId }],
|
|
80
|
+
agent: order.project,
|
|
81
|
+
purpose: Object.assign(Object.assign({}, simpleOrder), { confirmationNumber: order.confirmationNumber }),
|
|
82
|
+
instrument: {
|
|
83
|
+
typeOf: 'WebAPI',
|
|
84
|
+
identifier: factory.action.authorize.paymentMethod.any.ServiceIdentifier.Chevre
|
|
85
|
+
},
|
|
86
|
+
processOrder: order.orderStatus === factory.orderStatus.OrderPaymentDue,
|
|
87
|
+
useOnOrderStatusChanged: true
|
|
88
|
+
};
|
|
89
|
+
tasks.push({
|
|
90
|
+
project: order.project,
|
|
91
|
+
name: factory.taskName.ConfirmPayTransaction,
|
|
92
|
+
status: factory.taskStatus.Ready,
|
|
93
|
+
runsAt: taskRunsAt,
|
|
94
|
+
remainingNumberOfTries: 10,
|
|
95
|
+
numberOfTried: 0,
|
|
96
|
+
executionResults: [],
|
|
97
|
+
data
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
})));
|
|
101
|
+
return tasks;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as factory from '../../../../factory';
|
|
2
|
+
type IProcessingOrder = factory.order.IOrder & {
|
|
3
|
+
acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
|
|
4
|
+
orderStatus: factory.orderStatus.OrderProcessing;
|
|
5
|
+
};
|
|
6
|
+
declare function createInformTasks(order: IProcessingOrder): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
|
|
7
|
+
declare function createConfirmReservationActionObject4ChevreByOrder(params: {
|
|
8
|
+
order: factory.order.IOrder & {
|
|
9
|
+
acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
|
|
10
|
+
};
|
|
11
|
+
}): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.Chevre>[];
|
|
12
|
+
declare function createConfirmReservationActionObject4COAByOrder(params: {
|
|
13
|
+
order: factory.order.IOrder & {
|
|
14
|
+
acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
|
|
15
|
+
};
|
|
16
|
+
}): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.COA>[];
|
|
17
|
+
declare function createConfirmRegisterServiceActionObjectByOrder(params: {
|
|
18
|
+
order: factory.order.IOrder & {
|
|
19
|
+
acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
|
|
20
|
+
};
|
|
21
|
+
}): factory.action.interact.confirm.registerService.IObject[];
|
|
22
|
+
type IExternalOrder = Pick<factory.order.IOrder, 'project' | 'typeOf' | 'seller' | 'customer' | 'confirmationNumber' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'name' | 'orderStatus' | 'orderedItem' | 'paymentMethods'>;
|
|
23
|
+
export { IExternalOrder, createInformTasks, createConfirmReservationActionObject4ChevreByOrder, createConfirmReservationActionObject4COAByOrder, createConfirmRegisterServiceActionObjectByOrder };
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.createConfirmRegisterServiceActionObjectByOrder = exports.createConfirmReservationActionObject4COAByOrder = exports.createConfirmReservationActionObject4ChevreByOrder = exports.createInformTasks = void 0;
|
|
5
|
+
const google_libphonenumber_1 = require("google-libphonenumber");
|
|
6
|
+
const util_1 = require("util");
|
|
7
|
+
const factory = require("../../../../factory");
|
|
8
|
+
const order_1 = require("../../../../factory/order");
|
|
9
|
+
const reservedAgentIdentifireNames_1 = require("../../../../factory/reservedAgentIdentifireNames");
|
|
10
|
+
const settings_1 = require("../../../../settings");
|
|
11
|
+
const informOrder = (_a = settings_1.settings.onOrderStatusChanged) === null || _a === void 0 ? void 0 : _a.informOrder;
|
|
12
|
+
const ASTERISK_CHARACTER = '*';
|
|
13
|
+
function createInformTasks(order) {
|
|
14
|
+
const taskRunsAt = new Date();
|
|
15
|
+
let informTasks = [];
|
|
16
|
+
if (Array.isArray(informOrder) && informOrder.length > 0) {
|
|
17
|
+
const order4inform = creteOrder4inform(order);
|
|
18
|
+
let recipientId = '';
|
|
19
|
+
recipientId = order.customer.id;
|
|
20
|
+
informTasks = informOrder.map((informOrderParams) => {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
const informActionAttributes = {
|
|
23
|
+
agent: order.project,
|
|
24
|
+
object: order4inform,
|
|
25
|
+
project: order.project,
|
|
26
|
+
recipient: {
|
|
27
|
+
url: (_a = informOrderParams.recipient) === null || _a === void 0 ? void 0 : _a.url,
|
|
28
|
+
id: recipientId,
|
|
29
|
+
name: (_b = informOrderParams.recipient) === null || _b === void 0 ? void 0 : _b.name,
|
|
30
|
+
typeOf: factory.creativeWorkType.WebApplication
|
|
31
|
+
},
|
|
32
|
+
typeOf: factory.actionType.InformAction
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
project: order.project,
|
|
36
|
+
name: factory.taskName.TriggerWebhook,
|
|
37
|
+
status: factory.taskStatus.Ready,
|
|
38
|
+
runsAt: taskRunsAt,
|
|
39
|
+
remainingNumberOfTries: 10,
|
|
40
|
+
numberOfTried: 0,
|
|
41
|
+
executionResults: [],
|
|
42
|
+
data: informActionAttributes
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return informTasks;
|
|
47
|
+
}
|
|
48
|
+
exports.createInformTasks = createInformTasks;
|
|
49
|
+
function creteOrder4inform(order) {
|
|
50
|
+
// 冗長な個人情報をmask
|
|
51
|
+
return Object.assign({
|
|
52
|
+
// whitelistで作成する(2022-07-19~)
|
|
53
|
+
project: order.project, typeOf: order.typeOf, seller: order.seller, price: order.price, priceCurrency: order.priceCurrency, confirmationNumber: order.confirmationNumber, orderNumber: order.orderNumber, acceptedOffers: order.acceptedOffers, orderStatus: order.orderStatus, orderDate: order.orderDate,
|
|
54
|
+
// mask
|
|
55
|
+
customer: Object.assign(Object.assign({}, (0, order_1.createMaskedCustomer)(order, { noProfile: false })), { additionalProperty: (Array.isArray(order.customer.additionalProperty)) ? order.customer.additionalProperty : [],
|
|
56
|
+
// identifierは必要
|
|
57
|
+
// 予約後を隠蔽(2022-12-24~)
|
|
58
|
+
identifier: (Array.isArray(order.customer.identifier))
|
|
59
|
+
? order.customer.identifier.filter((p) => {
|
|
60
|
+
return !reservedAgentIdentifireNames_1.RESERVED_AGENT_IDENTIFIER_NAMES.includes(p.name);
|
|
61
|
+
})
|
|
62
|
+
: [] }),
|
|
63
|
+
// paymentMethodsに関してもmask(2022-05-30~)
|
|
64
|
+
paymentMethods: order.paymentMethods.map((p) => {
|
|
65
|
+
return Object.assign(Object.assign({}, p), (typeof p.accountId === 'string' && p.accountId.length > 0)
|
|
66
|
+
? { accountId: ASTERISK_CHARACTER.repeat(p.accountId.length) }
|
|
67
|
+
: undefined);
|
|
68
|
+
}) }, (typeof order.id === 'string') ? { id: order.id } : undefined);
|
|
69
|
+
}
|
|
70
|
+
function createConfirmReservationActionObject4ChevreByOrder(params) {
|
|
71
|
+
const chevreReservationNumbers = params.order.acceptedOffers.filter((o) => {
|
|
72
|
+
var _a;
|
|
73
|
+
return (o.itemOffered.typeOf === factory.reservationType.EventReservation
|
|
74
|
+
|| o.itemOffered.typeOf === factory.reservationType.BusReservation)
|
|
75
|
+
&& ((_a = o.offeredThrough) === null || _a === void 0 ? void 0 : _a.identifier) === factory.service.webAPI.Identifier.Chevre;
|
|
76
|
+
})
|
|
77
|
+
.map((o) => {
|
|
78
|
+
return o.itemOffered.reservationNumber;
|
|
79
|
+
});
|
|
80
|
+
return [...new Set(chevreReservationNumbers)].map((reservationNumber) => {
|
|
81
|
+
return {
|
|
82
|
+
potentialActions: {
|
|
83
|
+
reserve: {
|
|
84
|
+
purpose: {
|
|
85
|
+
confirmationNumber: params.order.confirmationNumber,
|
|
86
|
+
orderNumber: params.order.orderNumber,
|
|
87
|
+
typeOf: factory.order.OrderType.Order
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
transactionNumber: reservationNumber,
|
|
92
|
+
typeOf: factory.assetTransactionType.Reserve
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
exports.createConfirmReservationActionObject4ChevreByOrder = createConfirmReservationActionObject4ChevreByOrder;
|
|
97
|
+
function createConfirmReservationActionObject4COAByOrder(params) {
|
|
98
|
+
// COA予約のみ
|
|
99
|
+
const coaReservationOffers = params.order.acceptedOffers.filter((o) => {
|
|
100
|
+
var _a;
|
|
101
|
+
return o.itemOffered.typeOf === factory.reservationType.EventReservation
|
|
102
|
+
&& ((_a = o.offeredThrough) === null || _a === void 0 ? void 0 : _a.identifier) === factory.service.webAPI.Identifier.COA;
|
|
103
|
+
});
|
|
104
|
+
const coaReservationNumbers = [...new Set(coaReservationOffers
|
|
105
|
+
.map((o) => {
|
|
106
|
+
return o.itemOffered.reservationNumber;
|
|
107
|
+
}))];
|
|
108
|
+
const customer = params.order.customer;
|
|
109
|
+
// 電話番号のフォーマットを日本人にリーダブルに調整(COAではこのフォーマットで扱うので)
|
|
110
|
+
const phoneUtil = google_libphonenumber_1.PhoneNumberUtil.getInstance();
|
|
111
|
+
const phoneNumber = phoneUtil.parse(customer.telephone, 'JP');
|
|
112
|
+
let telNum = phoneUtil.format(phoneNumber, google_libphonenumber_1.PhoneNumberFormat.NATIONAL);
|
|
113
|
+
// COAでは数字のみ受け付けるので数字以外を除去
|
|
114
|
+
telNum = telNum.replace(/[^\d]/g, '');
|
|
115
|
+
const mailAddr = customer.email;
|
|
116
|
+
if (mailAddr === undefined) {
|
|
117
|
+
throw new factory.errors.Argument('order', 'order.customer.email undefined');
|
|
118
|
+
}
|
|
119
|
+
return coaReservationNumbers.map((reservationNumber) => {
|
|
120
|
+
const coaReservations = coaReservationOffers
|
|
121
|
+
.filter((o) => o.itemOffered.reservationNumber === reservationNumber)
|
|
122
|
+
.map((o) => {
|
|
123
|
+
return o.itemOffered;
|
|
124
|
+
});
|
|
125
|
+
const coaReservation = coaReservations[0];
|
|
126
|
+
const reservationForCOAInfo = coaReservation.reservationFor.coaInfo;
|
|
127
|
+
if (reservationForCOAInfo === undefined) {
|
|
128
|
+
throw new factory.errors.NotFound('reservationFor.coaInfo');
|
|
129
|
+
}
|
|
130
|
+
const totalPrice = coaReservation.reservedTicket.coaReserveAmount;
|
|
131
|
+
if (totalPrice === undefined) {
|
|
132
|
+
throw new factory.errors.NotFound('reservedTicket.coaReserveAmount');
|
|
133
|
+
}
|
|
134
|
+
const listTicket = coaReservations.map((r) => {
|
|
135
|
+
var _a;
|
|
136
|
+
if (typeof ((_a = r.reservedTicket.coaTicketInfo) === null || _a === void 0 ? void 0 : _a.ticketCode) !== 'string') {
|
|
137
|
+
throw new factory.errors.NotFound('reservedTicket.coaTicketInfo');
|
|
138
|
+
}
|
|
139
|
+
// 冗長な属性を排除(2023-03-20~)
|
|
140
|
+
const { ticketCode, stdPrice, addPrice, spseatAdd1, spseatAdd2, disPrice, salePrice, mvtkAppPrice, ticketCount, spseatKbn, seatNum, addGlasses, kbnEisyahousiki, mvtkNum, mvtkKbnDenshiken, mvtkKbnMaeuriken, mvtkKbnKensyu, mvtkSalesPrice, kbnMgtk } = r.reservedTicket.coaTicketInfo;
|
|
141
|
+
return {
|
|
142
|
+
ticketCode, stdPrice, addPrice, spseatAdd1, spseatAdd2,
|
|
143
|
+
disPrice, salePrice, mvtkAppPrice, ticketCount, spseatKbn,
|
|
144
|
+
seatNum, addGlasses, kbnEisyahousiki, mvtkNum, mvtkKbnDenshiken,
|
|
145
|
+
mvtkKbnMaeuriken, mvtkKbnKensyu, mvtkSalesPrice, kbnMgtk
|
|
146
|
+
};
|
|
147
|
+
});
|
|
148
|
+
return {
|
|
149
|
+
theaterCode: reservationForCOAInfo.theaterCode,
|
|
150
|
+
dateJouei: reservationForCOAInfo.dateJouei,
|
|
151
|
+
titleCode: reservationForCOAInfo.titleCode,
|
|
152
|
+
titleBranchNum: reservationForCOAInfo.titleBranchNum,
|
|
153
|
+
timeBegin: reservationForCOAInfo.timeBegin,
|
|
154
|
+
tmpReserveNum: reservationNumber,
|
|
155
|
+
// tslint:disable-next-line:no-irregular-whitespace
|
|
156
|
+
reserveName: (0, util_1.format)('%s %s', customer.familyName, customer.givenName),
|
|
157
|
+
// tslint:disable-next-line:no-irregular-whitespace
|
|
158
|
+
reserveNameJkana: (0, util_1.format)('%s %s', customer.familyName, customer.givenName),
|
|
159
|
+
telNum: telNum,
|
|
160
|
+
mailAddr: mailAddr,
|
|
161
|
+
reserveAmount: totalPrice,
|
|
162
|
+
listTicket,
|
|
163
|
+
transactionNumber: reservationNumber,
|
|
164
|
+
typeOf: 'COAReserveTransaction'
|
|
165
|
+
};
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
exports.createConfirmReservationActionObject4COAByOrder = createConfirmReservationActionObject4COAByOrder;
|
|
169
|
+
function createConfirmRegisterServiceActionObjectByOrder(params) {
|
|
170
|
+
// いったん保留
|
|
171
|
+
const chevreTransactionNumbers = [];
|
|
172
|
+
return [...new Set(chevreTransactionNumbers)].map((transactionNumber) => {
|
|
173
|
+
return {
|
|
174
|
+
endDate: params.order.orderDate,
|
|
175
|
+
transactionNumber,
|
|
176
|
+
typeOf: factory.assetTransactionType.RegisterService
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
exports.createConfirmRegisterServiceActionObjectByOrder = createConfirmRegisterServiceActionObjectByOrder;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
2
|
+
import * as factory from '../../../factory';
|
|
3
|
+
import { IExternalOrder } from './onOrderProcessing/factory';
|
|
4
|
+
type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'typeOf' | 'potentialActions'>;
|
|
5
|
+
declare function onOrderProcessing(params: {
|
|
6
|
+
order: Omit<factory.order.IOrder, 'orderStatus'> & {
|
|
7
|
+
orderStatus: factory.orderStatus.OrderProcessing;
|
|
8
|
+
acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
|
|
9
|
+
};
|
|
10
|
+
placeOrderTransaction?: IPlaceOrderTransaction;
|
|
11
|
+
}): (repos: {
|
|
12
|
+
task: TaskRepo;
|
|
13
|
+
}) => Promise<void>;
|
|
14
|
+
export { IExternalOrder, onOrderProcessing };
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.onOrderProcessing = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* 注文処理時処理
|
|
15
|
+
*/
|
|
16
|
+
const createDebug = require("debug");
|
|
17
|
+
const factory = require("../../../factory");
|
|
18
|
+
const order_1 = require("../../../factory/order");
|
|
19
|
+
const factory_1 = require("./onOrderProcessing/factory");
|
|
20
|
+
const debug = createDebug('chevre-domain:service:order');
|
|
21
|
+
const USE_CONFIRM_REGISTER_SERVICE_TRANSACTION = process.env.USE_CONFIRM_REGISTER_SERVICE_TRANSACTION === '1';
|
|
22
|
+
function onOrderProcessing(params) {
|
|
23
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
var _a, _b, _c, _d, _e, _f;
|
|
25
|
+
debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
|
|
26
|
+
let tasks = [];
|
|
27
|
+
const maskedCustomer = (0, order_1.createMaskedCustomer)(params.order, { noProfile: true });
|
|
28
|
+
const simpleOrder = {
|
|
29
|
+
typeOf: params.order.typeOf,
|
|
30
|
+
seller: {
|
|
31
|
+
id: params.order.seller.id,
|
|
32
|
+
typeOf: params.order.seller.typeOf,
|
|
33
|
+
name: params.order.seller.name
|
|
34
|
+
},
|
|
35
|
+
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
36
|
+
orderNumber: params.order.orderNumber,
|
|
37
|
+
price: params.order.price,
|
|
38
|
+
priceCurrency: params.order.priceCurrency,
|
|
39
|
+
orderDate: params.order.orderDate
|
|
40
|
+
};
|
|
41
|
+
switch (params.order.orderStatus) {
|
|
42
|
+
case factory.orderStatus.OrderProcessing:
|
|
43
|
+
tasks = [
|
|
44
|
+
...(0, factory_1.createInformTasks)(params.order),
|
|
45
|
+
...yield createConfirmRegisterServiceTransactionTasks(params.order, simpleOrder)(repos)
|
|
46
|
+
];
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
|
|
50
|
+
}
|
|
51
|
+
yield repos.task.saveMany(tasks, { emitImmediately: true });
|
|
52
|
+
switch (params.order.orderStatus) {
|
|
53
|
+
case factory.orderStatus.OrderProcessing:
|
|
54
|
+
// 冗長なconfirmReserveTransactionタスク作成を回避(2023-08-25~)
|
|
55
|
+
yield createConfirmReserveTransactionTasksIfNotExist(params.order, simpleOrder)(repos);
|
|
56
|
+
// 冗長なsendOrderタスク作成を回避(2023-08-25~)
|
|
57
|
+
yield createSendOrderTransactionTaskIfNotExist({
|
|
58
|
+
object: params.order,
|
|
59
|
+
potentialActions: (_c = (_b = (_a = params.placeOrderTransaction) === null || _a === void 0 ? void 0 : _a.potentialActions) === null || _b === void 0 ? void 0 : _b.order) === null || _c === void 0 ? void 0 : _c.potentialActions
|
|
60
|
+
})(repos);
|
|
61
|
+
yield createGivePointAwardTaskIfNotExist({
|
|
62
|
+
potentialActions: (_f = (_e = (_d = params.placeOrderTransaction) === null || _d === void 0 ? void 0 : _d.potentialActions) === null || _e === void 0 ? void 0 : _e.order) === null || _f === void 0 ? void 0 : _f.potentialActions
|
|
63
|
+
})(repos);
|
|
64
|
+
break;
|
|
65
|
+
default:
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
exports.onOrderProcessing = onOrderProcessing;
|
|
70
|
+
// const COA_TASK_DELAY_IN_SECONDS = 0;
|
|
71
|
+
function createConfirmReserveTransactionTasksIfNotExist(order, simpleOrder) {
|
|
72
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
const taskRunsAt = new Date();
|
|
74
|
+
const taskRunsAt4coa = new Date();
|
|
75
|
+
// const taskRunsAt4coa = moment(order.orderDate)
|
|
76
|
+
// .add(COA_TASK_DELAY_IN_SECONDS, 'seconds')
|
|
77
|
+
// .toDate();
|
|
78
|
+
const confirmObjects = [
|
|
79
|
+
...(0, factory_1.createConfirmReservationActionObject4ChevreByOrder)({ order }),
|
|
80
|
+
...(0, factory_1.createConfirmReservationActionObject4COAByOrder)({ order })
|
|
81
|
+
];
|
|
82
|
+
yield Promise.all(confirmObjects.map((confirmObject) => __awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
const data = {
|
|
84
|
+
project: order.project,
|
|
85
|
+
typeOf: factory.actionType.ConfirmAction,
|
|
86
|
+
object: confirmObject,
|
|
87
|
+
agent: order.project,
|
|
88
|
+
purpose: simpleOrder,
|
|
89
|
+
instrument: {
|
|
90
|
+
typeOf: 'WebAPI',
|
|
91
|
+
identifier: (confirmObject.typeOf === 'COAReserveTransaction')
|
|
92
|
+
? factory.service.webAPI.Identifier.COA
|
|
93
|
+
: factory.service.webAPI.Identifier.Chevre
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
const confirmReserveTransactionTask = {
|
|
97
|
+
project: order.project,
|
|
98
|
+
name: factory.taskName.ConfirmReserveTransaction,
|
|
99
|
+
status: factory.taskStatus.Ready,
|
|
100
|
+
runsAt: (confirmObject.typeOf === 'COAReserveTransaction') ? taskRunsAt4coa : taskRunsAt,
|
|
101
|
+
remainingNumberOfTries: 10,
|
|
102
|
+
numberOfTried: 0,
|
|
103
|
+
executionResults: [],
|
|
104
|
+
data
|
|
105
|
+
};
|
|
106
|
+
yield repos.task.createConfirmReserveTransactionTaskIfNotExist(confirmReserveTransactionTask, { emitImmediately: true });
|
|
107
|
+
})));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function createConfirmRegisterServiceTransactionTasks(order, simpleOrder) {
|
|
111
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
const taskRunsAt = new Date();
|
|
113
|
+
if (USE_CONFIRM_REGISTER_SERVICE_TRANSACTION) {
|
|
114
|
+
const confirmObjects = (0, factory_1.createConfirmRegisterServiceActionObjectByOrder)({ order });
|
|
115
|
+
const tasks = [];
|
|
116
|
+
yield Promise.all(confirmObjects.map((confirmObject) => __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
// 冗長なタスク作成を回避
|
|
118
|
+
const existingTasks = yield repos.task.search({
|
|
119
|
+
limit: 1,
|
|
120
|
+
page: 1,
|
|
121
|
+
project: { id: { $eq: order.project.id } },
|
|
122
|
+
name: factory.taskName.ConfirmReserveTransaction,
|
|
123
|
+
data: {
|
|
124
|
+
object: { transactionNumber: { $eq: confirmObject.transactionNumber } },
|
|
125
|
+
purpose: { orderNumber: { $eq: order.orderNumber } }
|
|
126
|
+
}
|
|
127
|
+
}, {
|
|
128
|
+
data: 0, executionResults: 0, name: 0, numberOfTried: 0,
|
|
129
|
+
remainingNumberOfTries: 0, runsAt: 0, status: 0
|
|
130
|
+
});
|
|
131
|
+
if (existingTasks.length === 0) {
|
|
132
|
+
const data = {
|
|
133
|
+
project: order.project,
|
|
134
|
+
typeOf: factory.actionType.ConfirmAction,
|
|
135
|
+
object: confirmObject,
|
|
136
|
+
agent: order.project,
|
|
137
|
+
purpose: simpleOrder,
|
|
138
|
+
instrument: {
|
|
139
|
+
typeOf: 'WebAPI',
|
|
140
|
+
identifier: factory.service.webAPI.Identifier.Chevre
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
tasks.push({
|
|
144
|
+
project: order.project,
|
|
145
|
+
name: factory.taskName.ConfirmRegisterServiceTransaction,
|
|
146
|
+
status: factory.taskStatus.Ready,
|
|
147
|
+
runsAt: taskRunsAt,
|
|
148
|
+
remainingNumberOfTries: 10,
|
|
149
|
+
numberOfTried: 0,
|
|
150
|
+
executionResults: [],
|
|
151
|
+
data
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
})));
|
|
155
|
+
return tasks;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
return [];
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function createSendOrderTransactionTaskIfNotExist(params) {
|
|
163
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
var _a;
|
|
165
|
+
const now = new Date();
|
|
166
|
+
const sendOrderByTransaction = (_a = params.potentialActions) === null || _a === void 0 ? void 0 : _a.sendOrder;
|
|
167
|
+
if (sendOrderByTransaction !== undefined) {
|
|
168
|
+
const sendOrderTaskData = {
|
|
169
|
+
project: sendOrderByTransaction.project,
|
|
170
|
+
object: Object.assign(Object.assign({}, sendOrderByTransaction.object), { confirmationNumber: params.object.confirmationNumber })
|
|
171
|
+
};
|
|
172
|
+
const sendOrderTask = {
|
|
173
|
+
project: sendOrderByTransaction.project,
|
|
174
|
+
name: factory.taskName.SendOrder,
|
|
175
|
+
status: factory.taskStatus.Ready,
|
|
176
|
+
runsAt: now,
|
|
177
|
+
remainingNumberOfTries: 10,
|
|
178
|
+
numberOfTried: 0,
|
|
179
|
+
executionResults: [],
|
|
180
|
+
data: sendOrderTaskData
|
|
181
|
+
};
|
|
182
|
+
yield repos.task.createSendOrderTaskIfNotExist(sendOrderTask, { emitImmediately: true });
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
function createGivePointAwardTaskIfNotExist(params) {
|
|
187
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
188
|
+
var _a;
|
|
189
|
+
const now = new Date();
|
|
190
|
+
const givePointAwardsByTransaction = (_a = params.potentialActions) === null || _a === void 0 ? void 0 : _a.givePointAward;
|
|
191
|
+
if (Array.isArray(givePointAwardsByTransaction)) {
|
|
192
|
+
for (const givePointAwardByTransaction of givePointAwardsByTransaction) {
|
|
193
|
+
let taskIdentifier = `${givePointAwardByTransaction.project.id}:${factory.taskName.GivePointAward}:${Date.now()}`;
|
|
194
|
+
if (typeof givePointAwardByTransaction.object.identifier === 'string'
|
|
195
|
+
&& givePointAwardByTransaction.object.identifier.length > 0) {
|
|
196
|
+
taskIdentifier = `${givePointAwardByTransaction.project.id}:${factory.taskName.GivePointAward}:${givePointAwardByTransaction.object.identifier}`;
|
|
197
|
+
}
|
|
198
|
+
const givePointAwardTask = {
|
|
199
|
+
identifier: taskIdentifier,
|
|
200
|
+
project: givePointAwardByTransaction.project,
|
|
201
|
+
name: factory.taskName.GivePointAward,
|
|
202
|
+
status: factory.taskStatus.Ready,
|
|
203
|
+
runsAt: now,
|
|
204
|
+
remainingNumberOfTries: 10,
|
|
205
|
+
numberOfTried: 0,
|
|
206
|
+
executionResults: [],
|
|
207
|
+
data: givePointAwardByTransaction
|
|
208
|
+
};
|
|
209
|
+
// 冗長なgivePointAwardタスク作成を回避(2023-09-01~)
|
|
210
|
+
yield repos.task.createIfNotExistByIdentifier(givePointAwardTask, { emitImmediately: true });
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as factory from '../../../../factory';
|
|
2
|
+
type IReturnedOrder = Pick<factory.order.IOrder, 'project' | 'typeOf' | 'orderNumber' | 'dateReturned' | 'id' | 'customer' | 'returner'>;
|
|
3
|
+
declare function createInformTasks(order: IReturnedOrder): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
|
|
4
|
+
/**
|
|
5
|
+
* 注文返品後のアクション
|
|
6
|
+
*/
|
|
7
|
+
declare function createOnOrderReturnedTasksByTransaction(params: {
|
|
8
|
+
potentialActions?: factory.action.transfer.returnAction.order.IPotentialActions;
|
|
9
|
+
}): (import("@chevre/factory/lib/task").IAttributes | import("@chevre/factory/lib/task/confirmMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/confirmRegisterService").IAttributes | import("@chevre/factory/lib/task/confirmPayTransaction").IAttributes | import("@chevre/factory/lib/task/confirmRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/confirmReserveTransaction").IAttributes | import("@chevre/factory/lib/task/createEvent").IAttributes | import("@chevre/factory/lib/task/deleteTransaction").IAttributes | import("@chevre/factory/lib/task/givePointAward").IAttributes | import("@chevre/factory/lib/task/onAssetTransactionStatusChanged").IAttributes | import("@chevre/factory/lib/task/onAuthorizationCreated").IAttributes | import("@chevre/factory/lib/task/onEventChanged").IAttributes | import("@chevre/factory/lib/task/onResourceUpdated").IAttributes | import("@chevre/factory/lib/task/onOrderPaymentCompleted").IAttributes | import("@chevre/factory/lib/task/placeOrder").IAttributes | import("@chevre/factory/lib/task/returnOrder").IAttributes | import("@chevre/factory/lib/task/returnMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/returnPayTransaction").IAttributes | import("@chevre/factory/lib/task/returnPointAward").IAttributes | import("@chevre/factory/lib/task/returnReserveTransaction").IAttributes | import("@chevre/factory/lib/task/sendEmailMessage").IAttributes | import("@chevre/factory/lib/task/sendOrder").IAttributes | import("@chevre/factory/lib/task/syncScreeningRooms").IAttributes | import("@chevre/factory/lib/task/triggerWebhook").IAttributes | import("@chevre/factory/lib/task/useReservation").IAttributes | import("@chevre/factory/lib/task/voidMoneyTransferTransaction").IAttributes | import("@chevre/factory/lib/task/voidPayTransaction").IAttributes | import("@chevre/factory/lib/task/voidRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/voidReserveTransaction").IAttributes)[];
|
|
10
|
+
export { createInformTasks, createOnOrderReturnedTasksByTransaction };
|