@chevre/domain 21.18.0-alpha.8 → 21.18.0-alpha.9
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/service/order/onAssetTransactionStatusChanged.d.ts +0 -3
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +1 -2
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled.d.ts +0 -2
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled.js +0 -1
- package/lib/chevre/service/order/onOrderStatusChanged/{factory.d.ts → onOrderDelivered/factory.d.ts} +6 -24
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.js +111 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.d.ts +14 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.js +83 -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/{factory.js → onOrderProcessing/factory.js} +26 -147
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.d.ts +13 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +216 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.d.ts +2 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned.d.ts +3 -1
- package/lib/chevre/service/order/onOrderStatusChanged.d.ts +7 -15
- package/lib/chevre/service/order/onOrderStatusChanged.js +7 -317
- 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 +0 -2
- package/lib/chevre/service/order/placeOrder.d.ts +0 -3
- package/lib/chevre/service/order/placeOrder.js +4 -11
- package/lib/chevre/service/order/returnOrder.js +4 -1
- package/lib/chevre/service/order/sendOrder.js +1 -1
- package/lib/chevre/service/order.d.ts +2 -2
- package/lib/chevre/service/order.js +2 -2
- package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +3 -6
- package/lib/chevre/service/task/onOrderPaymentCompleted.js +3 -6
- package/lib/chevre/service/task/placeOrder.js +8 -17
- package/package.json +1 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { RedisRepository as RegisterServiceInProgressRepo } from '../../repo/action/registerServiceInProgress';
|
|
2
1
|
import type { MongoRepository as AssetTransactionRepo } from '../../repo/assetTransaction';
|
|
3
2
|
import type { MongoRepository as OrderRepo } from '../../repo/order';
|
|
4
3
|
import type { MongoRepository as TaskRepo } from '../../repo/task';
|
|
@@ -7,7 +6,6 @@ import * as factory from '../../factory';
|
|
|
7
6
|
declare function onAssetTransactionStatusChanged(params: factory.task.IData<factory.taskName.OnAssetTransactionStatusChanged>): (repos: {
|
|
8
7
|
assetTransaction: AssetTransactionRepo;
|
|
9
8
|
order: OrderRepo;
|
|
10
|
-
registerActionInProgress: RegisterServiceInProgressRepo;
|
|
11
9
|
task: TaskRepo;
|
|
12
10
|
transaction: TransactionRepo;
|
|
13
11
|
}) => Promise<void>;
|
|
@@ -20,7 +18,6 @@ declare function paymentDue2Processing(params: {
|
|
|
20
18
|
useOnOrderStatusChanged: boolean;
|
|
21
19
|
}): (repos: {
|
|
22
20
|
order: OrderRepo;
|
|
23
|
-
registerActionInProgress: RegisterServiceInProgressRepo;
|
|
24
21
|
task: TaskRepo;
|
|
25
22
|
transaction: TransactionRepo;
|
|
26
23
|
}) => Promise<void>;
|
|
@@ -166,12 +166,11 @@ function paymentDue2Processing(params) {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
if (params.useOnOrderStatusChanged) {
|
|
169
|
-
yield (0, onOrderStatusChanged_1.
|
|
169
|
+
yield (0, onOrderStatusChanged_1.onOrderProcessing)({
|
|
170
170
|
order: Object.assign(Object.assign({}, order), { orderStatus: factory.orderStatus.OrderProcessing // 強制的にOrderProcessingとして処理する
|
|
171
171
|
}),
|
|
172
172
|
placeOrderTransaction
|
|
173
173
|
})({
|
|
174
|
-
registerActionInProgress: repos.registerActionInProgress,
|
|
175
174
|
task: repos.task
|
|
176
175
|
});
|
|
177
176
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
2
2
|
import * as factory from '../../../factory';
|
|
3
3
|
type IPlaceOrderTransaction = factory.transaction.ITransaction<factory.transactionType.PlaceOrder>;
|
|
4
|
-
type IReturnOrderTransaction = factory.transaction.ITransaction<factory.transactionType.ReturnOrder>;
|
|
5
4
|
declare function onOrderCancelled(params: {
|
|
6
5
|
order: factory.order.IOrder;
|
|
7
6
|
placeOrderTransaction?: IPlaceOrderTransaction;
|
|
8
|
-
returnOrderTransaction?: IReturnOrderTransaction;
|
|
9
7
|
}): (repos: {
|
|
10
8
|
task: TaskRepo;
|
|
11
9
|
}) => Promise<void>;
|
|
@@ -18,7 +18,6 @@ const factory = require("../../../factory");
|
|
|
18
18
|
const factory_1 = require("./onOrderCancelled/factory");
|
|
19
19
|
const debug = createDebug('chevre-domain:service:order');
|
|
20
20
|
function onOrderCancelled(params) {
|
|
21
|
-
// tslint:disable-next-line:max-func-body-length
|
|
22
21
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
23
22
|
debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
|
|
24
23
|
let tasks = [];
|
package/lib/chevre/service/order/onOrderStatusChanged/{factory.d.ts → onOrderDelivered/factory.d.ts}
RENAMED
|
@@ -1,30 +1,12 @@
|
|
|
1
|
-
import * as factory from '
|
|
2
|
-
type
|
|
3
|
-
|
|
1
|
+
import * as factory from '../../../../factory';
|
|
2
|
+
type IDeliveredOrder = factory.order.IOrder & {
|
|
3
|
+
orderStatus: factory.orderStatus.OrderDelivered;
|
|
4
4
|
};
|
|
5
|
-
|
|
6
|
-
order: factory.order.IOrder;
|
|
7
|
-
expiresIn: number;
|
|
8
|
-
}): Promise<factory.order.IOrder | IOrderWithToken>;
|
|
9
|
-
export type IUpdatedOrder4inform = Pick<factory.order.IOrder, 'typeOf' | 'orderNumber' | 'name' | 'additionalProperty' | 'project'> & {
|
|
10
|
-
orderStatus?: undefined;
|
|
11
|
-
updatedAt: Date;
|
|
12
|
-
};
|
|
13
|
-
export declare function createInformTasks(order: factory.order.IOrder | IOrderWithToken | IUpdatedOrder4inform): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
|
|
14
|
-
export declare function createConfirmReservationActionObject4ChevreByOrder(params: {
|
|
15
|
-
order: factory.order.IOrder;
|
|
16
|
-
}): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.Chevre>[];
|
|
17
|
-
export declare function createConfirmReservationActionObject4COAByOrder(params: {
|
|
18
|
-
order: factory.order.IOrder;
|
|
19
|
-
}): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.COA>[];
|
|
20
|
-
export declare function createConfirmRegisterServiceActionObjectByOrder(params: {
|
|
21
|
-
order: factory.order.IOrder;
|
|
22
|
-
}): factory.action.interact.confirm.registerService.IObject[];
|
|
23
|
-
export type IExternalOrder = Pick<factory.order.IOrder, 'project' | 'typeOf' | 'seller' | 'customer' | 'confirmationNumber' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'name' | 'orderStatus' | 'orderedItem' | 'paymentMethods'>;
|
|
5
|
+
declare function createInformTasks(order: IDeliveredOrder): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
|
|
24
6
|
/**
|
|
25
7
|
* 注文配送後のアクション
|
|
26
8
|
*/
|
|
27
|
-
|
|
9
|
+
declare function createOnOrderSentTasksByTransaction(params: {
|
|
28
10
|
potentialActions?: factory.action.transfer.send.order.IPotentialActions;
|
|
29
11
|
}): (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)[];
|
|
30
|
-
export {};
|
|
12
|
+
export { createInformTasks, createOnOrderSentTasksByTransaction };
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.createOnOrderSentTasksByTransaction = exports.createInformTasks = void 0;
|
|
5
|
+
const factory = require("../../../../factory");
|
|
6
|
+
const settings_1 = require("../../../../settings");
|
|
7
|
+
const informOrder = (_a = settings_1.settings.onOrderStatusChanged) === null || _a === void 0 ? void 0 : _a.informOrder;
|
|
8
|
+
function createInformTasks(order) {
|
|
9
|
+
const taskRunsAt = new Date();
|
|
10
|
+
let informTasks = [];
|
|
11
|
+
if (Array.isArray(informOrder) && informOrder.length > 0) {
|
|
12
|
+
const order4inform = creteOrder4inform(order);
|
|
13
|
+
let recipientId = '';
|
|
14
|
+
recipientId = order.customer.id;
|
|
15
|
+
informTasks = informOrder.map((informOrderParams) => {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
const informActionAttributes = {
|
|
18
|
+
agent: order.project,
|
|
19
|
+
object: order4inform,
|
|
20
|
+
project: order.project,
|
|
21
|
+
recipient: {
|
|
22
|
+
url: (_a = informOrderParams.recipient) === null || _a === void 0 ? void 0 : _a.url,
|
|
23
|
+
id: recipientId,
|
|
24
|
+
name: (_b = informOrderParams.recipient) === null || _b === void 0 ? void 0 : _b.name,
|
|
25
|
+
typeOf: factory.creativeWorkType.WebApplication
|
|
26
|
+
},
|
|
27
|
+
typeOf: factory.actionType.InformAction
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
project: order.project,
|
|
31
|
+
name: factory.taskName.TriggerWebhook,
|
|
32
|
+
status: factory.taskStatus.Ready,
|
|
33
|
+
runsAt: taskRunsAt,
|
|
34
|
+
remainingNumberOfTries: 10,
|
|
35
|
+
numberOfTried: 0,
|
|
36
|
+
executionResults: [],
|
|
37
|
+
data: informActionAttributes
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return informTasks;
|
|
42
|
+
}
|
|
43
|
+
exports.createInformTasks = createInformTasks;
|
|
44
|
+
function creteOrder4inform(order) {
|
|
45
|
+
// 配送済注文通知内容を最適化(2022-12-29~)
|
|
46
|
+
return Object.assign({ project: order.project, typeOf: order.typeOf, orderNumber: order.orderNumber, orderStatus: order.orderStatus }, (typeof order.id === 'string') ? { id: order.id } : undefined);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 注文配送後のアクション
|
|
50
|
+
*/
|
|
51
|
+
function createOnOrderSentTasksByTransaction(params) {
|
|
52
|
+
const potentialActions = params.potentialActions;
|
|
53
|
+
const now = new Date();
|
|
54
|
+
const taskAttributes = [];
|
|
55
|
+
// tslint:disable-next-line:no-single-line-block-comment
|
|
56
|
+
/* istanbul ignore else */
|
|
57
|
+
if (potentialActions !== undefined) {
|
|
58
|
+
if (Array.isArray(potentialActions.registerService)) {
|
|
59
|
+
taskAttributes.push(...potentialActions.registerService.map((a) => {
|
|
60
|
+
return {
|
|
61
|
+
project: a.project,
|
|
62
|
+
name: factory.taskName.ConfirmRegisterService,
|
|
63
|
+
status: factory.taskStatus.Ready,
|
|
64
|
+
runsAt: now,
|
|
65
|
+
remainingNumberOfTries: 10,
|
|
66
|
+
numberOfTried: 0,
|
|
67
|
+
executionResults: [],
|
|
68
|
+
data: a
|
|
69
|
+
};
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
// 通貨転送
|
|
73
|
+
// tslint:disable-next-line:no-single-line-block-comment
|
|
74
|
+
/* istanbul ignore else */
|
|
75
|
+
if (Array.isArray(potentialActions.moneyTransfer)) {
|
|
76
|
+
taskAttributes.push(...potentialActions.moneyTransfer.map((a) => {
|
|
77
|
+
return {
|
|
78
|
+
project: a.project,
|
|
79
|
+
name: factory.taskName.ConfirmMoneyTransfer,
|
|
80
|
+
status: factory.taskStatus.Ready,
|
|
81
|
+
runsAt: now,
|
|
82
|
+
remainingNumberOfTries: 10,
|
|
83
|
+
numberOfTried: 0,
|
|
84
|
+
executionResults: [],
|
|
85
|
+
data: a
|
|
86
|
+
};
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
// tslint:disable-next-line:no-single-line-block-comment
|
|
90
|
+
/* istanbul ignore else */
|
|
91
|
+
if (Array.isArray(potentialActions.sendEmailMessage)) {
|
|
92
|
+
potentialActions.sendEmailMessage.forEach((s) => {
|
|
93
|
+
const sendEmailMessageTask = {
|
|
94
|
+
project: s.project,
|
|
95
|
+
name: factory.taskName.SendEmailMessage,
|
|
96
|
+
status: factory.taskStatus.Ready,
|
|
97
|
+
runsAt: now,
|
|
98
|
+
remainingNumberOfTries: 3,
|
|
99
|
+
numberOfTried: 0,
|
|
100
|
+
executionResults: [],
|
|
101
|
+
data: {
|
|
102
|
+
actionAttributes: s
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
taskAttributes.push(sendEmailMessageTask);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return taskAttributes;
|
|
110
|
+
}
|
|
111
|
+
exports.createOnOrderSentTasksByTransaction = createOnOrderSentTasksByTransaction;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RedisRepository as RegisterServiceInProgressRepo } from '../../../repo/action/registerServiceInProgress';
|
|
2
|
+
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
3
|
+
import * as factory from '../../../factory';
|
|
4
|
+
type IPlaceOrderTransaction = factory.transaction.ITransaction<factory.transactionType.PlaceOrder>;
|
|
5
|
+
declare function onOrderDelivered(params: {
|
|
6
|
+
order: Omit<factory.order.IOrder, 'orderStatus'> & {
|
|
7
|
+
orderStatus: factory.orderStatus.OrderDelivered;
|
|
8
|
+
};
|
|
9
|
+
placeOrderTransaction?: IPlaceOrderTransaction;
|
|
10
|
+
}): (repos: {
|
|
11
|
+
registerActionInProgress: RegisterServiceInProgressRepo;
|
|
12
|
+
task: TaskRepo;
|
|
13
|
+
}) => Promise<void>;
|
|
14
|
+
export { onOrderDelivered };
|
|
@@ -0,0 +1,83 @@
|
|
|
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 product_1 = require("../../offer/product");
|
|
19
|
+
const factory_1 = require("./onOrderDelivered/factory");
|
|
20
|
+
const debug = createDebug('chevre-domain:service:order');
|
|
21
|
+
function onOrderDelivered(params) {
|
|
22
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
var _a, _b, _c, _d, _e;
|
|
24
|
+
debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
|
|
25
|
+
let tasks = [];
|
|
26
|
+
// const maskedCustomer = createMaskedCustomer(params.order, { noProfile: true });
|
|
27
|
+
// const simpleOrder: factory.order.ISimpleOrder = {
|
|
28
|
+
// typeOf: params.order.typeOf,
|
|
29
|
+
// seller: {
|
|
30
|
+
// id: params.order.seller.id,
|
|
31
|
+
// typeOf: params.order.seller.typeOf,
|
|
32
|
+
// name: params.order.seller.name
|
|
33
|
+
// },
|
|
34
|
+
// customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
35
|
+
// orderNumber: params.order.orderNumber,
|
|
36
|
+
// price: params.order.price,
|
|
37
|
+
// priceCurrency: params.order.priceCurrency,
|
|
38
|
+
// orderDate: params.order.orderDate
|
|
39
|
+
// };
|
|
40
|
+
switch (params.order.orderStatus) {
|
|
41
|
+
case factory.orderStatus.OrderDelivered:
|
|
42
|
+
tasks = [
|
|
43
|
+
...(0, factory_1.createInformTasks)(params.order),
|
|
44
|
+
// 取引のpotentialActionsを適用(2023-08-17~)
|
|
45
|
+
...(0, factory_1.createOnOrderSentTasksByTransaction)({
|
|
46
|
+
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
|
|
47
|
+
})
|
|
48
|
+
];
|
|
49
|
+
// プロダクト登録プロセスロック解除
|
|
50
|
+
try {
|
|
51
|
+
const placeOrderTransaction = params.placeOrderTransaction;
|
|
52
|
+
if (typeof (placeOrderTransaction === null || placeOrderTransaction === void 0 ? void 0 : placeOrderTransaction.id) === 'string') {
|
|
53
|
+
// プロダクト登録プロセスロック解除(orderからproductIdを抽出する)
|
|
54
|
+
if (Array.isArray(params.order.acceptedOffers)) {
|
|
55
|
+
const productIds4unlock = params.order.acceptedOffers
|
|
56
|
+
.filter((o) => {
|
|
57
|
+
var _a;
|
|
58
|
+
return o.itemOffered.typeOf === factory.permit.PermitType.Permit
|
|
59
|
+
&& typeof ((_a = o.itemOffered.issuedThrough) === null || _a === void 0 ? void 0 : _a.id) === 'string'
|
|
60
|
+
&& o.itemOffered.issuedThrough.id.length > 0;
|
|
61
|
+
})
|
|
62
|
+
.map((o) => { var _a; return String((_a = o.itemOffered.issuedThrough) === null || _a === void 0 ? void 0 : _a.id); });
|
|
63
|
+
yield Promise.all(productIds4unlock.map((productId) => __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
yield (0, product_1.processUnlockRegisterMembershipService)({
|
|
65
|
+
agent: { id: String(params.order.customer.id) },
|
|
66
|
+
product: { id: productId },
|
|
67
|
+
purpose: { typeOf: placeOrderTransaction.typeOf, id: placeOrderTransaction.id }
|
|
68
|
+
})(repos);
|
|
69
|
+
})));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
break;
|
|
77
|
+
default:
|
|
78
|
+
throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
|
|
79
|
+
}
|
|
80
|
+
yield repos.task.saveMany(tasks, { emitImmediately: true });
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
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: Omit<factory.order.IOrder, 'orderStatus'> & {
|
|
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
|
+
orderStatus: factory.orderStatus.OrderProcessing;
|
|
4
|
+
};
|
|
5
|
+
type IOrderWithToken = IProcessingOrder & {
|
|
6
|
+
token?: string;
|
|
7
|
+
};
|
|
8
|
+
declare function getOrderWithToken(params: {
|
|
9
|
+
order: IProcessingOrder;
|
|
10
|
+
expiresIn: number;
|
|
11
|
+
}): Promise<IOrderWithToken>;
|
|
12
|
+
declare function createInformTasks(order: IOrderWithToken): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
|
|
13
|
+
declare function createConfirmReservationActionObject4ChevreByOrder(params: {
|
|
14
|
+
order: factory.order.IOrder;
|
|
15
|
+
}): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.Chevre>[];
|
|
16
|
+
declare function createConfirmReservationActionObject4COAByOrder(params: {
|
|
17
|
+
order: factory.order.IOrder;
|
|
18
|
+
}): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.COA>[];
|
|
19
|
+
declare function createConfirmRegisterServiceActionObjectByOrder(params: {
|
|
20
|
+
order: factory.order.IOrder;
|
|
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, getOrderWithToken, createInformTasks, createConfirmReservationActionObject4ChevreByOrder, createConfirmReservationActionObject4COAByOrder, createConfirmRegisterServiceActionObjectByOrder };
|