@chevre/domain 21.20.0-alpha.2 → 21.20.0-alpha.20
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/onAssetTransactionStatusChanged.ts +36 -0
- package/example/src/chevre/retryTasks.ts +39 -0
- package/example/src/chevre/searchOrders.ts +13 -15
- package/example/src/chevre/searchSlicedAcceptedOffersByOrderNumber.ts +28 -0
- package/example/src/chevre/sendOrder.ts +37 -0
- package/example/src/chevre/transaction/processAcceptOffer.ts +48 -0
- package/example/src/chevre/transaction/processPlaceOrder.ts +82 -53
- package/lib/chevre/repo/acceptedOffer.d.ts +21 -1
- package/lib/chevre/repo/acceptedOffer.js +32 -2
- package/lib/chevre/repo/action.d.ts +3 -3
- package/lib/chevre/repo/action.js +4 -6
- package/lib/chevre/repo/mongoose/schemas/order.d.ts +1 -1
- package/lib/chevre/repo/mongoose/schemas/order.js +20 -11
- package/lib/chevre/repo/order.js +28 -9
- package/lib/chevre/repo/orderInTransaction.d.ts +27 -0
- package/lib/chevre/repo/orderInTransaction.js +77 -0
- package/lib/chevre/repo/task.d.ts +0 -2
- package/lib/chevre/repo/task.js +56 -46
- package/lib/chevre/repo/transaction.d.ts +1 -1
- package/lib/chevre/repository.d.ts +5 -0
- package/lib/chevre/repository.js +15 -2
- package/lib/chevre/service/assetTransaction/pay.d.ts +0 -10
- package/lib/chevre/service/assetTransaction/pay.js +4 -4
- package/lib/chevre/service/code.js +1 -1
- package/lib/chevre/service/delivery.js +2 -2
- package/lib/chevre/service/event/createEvent.js +1 -1
- package/lib/chevre/service/event.js +2 -2
- package/lib/chevre/service/moneyTransfer.js +1 -1
- package/lib/chevre/service/notification.js +2 -5
- package/lib/chevre/service/offer/any.d.ts +29 -0
- package/lib/chevre/service/offer/any.js +55 -0
- package/lib/chevre/service/offer/event/authorize.d.ts +7 -0
- package/lib/chevre/service/offer/event/authorize.js +11 -0
- package/lib/chevre/service/offer/event/cancel.d.ts +2 -0
- package/lib/chevre/service/offer/event/cancel.js +12 -1
- package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -0
- package/lib/chevre/service/offer/event/voidTransaction.js +12 -5
- package/lib/chevre/service/offer/eventServiceByCOA.js +2 -2
- package/lib/chevre/service/offer/moneyTransfer/authorize.d.ts +6 -1
- package/lib/chevre/service/offer/moneyTransfer/authorize.js +2 -1
- package/lib/chevre/service/offer/moneyTransfer/returnMoneyTransfer.js +1 -1
- package/lib/chevre/service/offer/moneyTransfer/settleTransaction.js +1 -1
- package/lib/chevre/service/offer/moneyTransfer/voidTransaction.js +1 -1
- package/lib/chevre/service/offer/product.js +1 -1
- package/lib/chevre/service/order/confirmPayTransaction.js +3 -3
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +11 -1
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +113 -5
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.js +18 -19
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.js +38 -25
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.d.ts +11 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.js +45 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.d.ts +14 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.js +37 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.d.ts +10 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +86 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +18 -12
- package/lib/chevre/service/order/onOrderStatusChanged.d.ts +3 -1
- package/lib/chevre/service/order/onOrderStatusChanged.js +5 -1
- package/lib/chevre/service/order/placeOrder.d.ts +2 -0
- package/lib/chevre/service/order/placeOrder.js +28 -29
- package/lib/chevre/service/order/returnOrder.js +25 -16
- package/lib/chevre/service/order/sendOrder.d.ts +5 -0
- package/lib/chevre/service/order/sendOrder.js +68 -30
- package/lib/chevre/service/payment/any.d.ts +6 -8
- package/lib/chevre/service/payment/any.js +46 -10
- package/lib/chevre/service/payment/creditCard.d.ts +9 -8
- package/lib/chevre/service/payment/creditCard.js +102 -133
- package/lib/chevre/service/payment/faceToFace.d.ts +0 -4
- package/lib/chevre/service/payment/movieTicket/checkByIdentifier.d.ts +0 -2
- package/lib/chevre/service/payment/movieTicket/checkByIdentifier.js +1 -0
- package/lib/chevre/service/payment/movieTicket/validation.d.ts +0 -2
- package/lib/chevre/service/payment/movieTicket.d.ts +0 -6
- package/lib/chevre/service/payment/movieTicket.js +1 -1
- package/lib/chevre/service/payment/paymentCard.d.ts +0 -2
- package/lib/chevre/service/payment/paymentCard.js +6 -6
- package/lib/chevre/service/payment.js +1 -1
- package/lib/chevre/service/product.js +1 -1
- package/lib/chevre/service/reserve/cancelReservation.js +2 -2
- package/lib/chevre/service/reserve/confirmReservation.js +1 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationUsed.d.ts +1 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +4 -4
- package/lib/chevre/service/reserve/useReservation.d.ts +1 -2
- package/lib/chevre/service/reserve/useReservation.js +4 -4
- package/lib/chevre/service/reserve/verifyToken4reservation.js +2 -0
- package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +1 -1
- package/lib/chevre/service/task/confirmReserveTransaction.d.ts +4 -1
- package/lib/chevre/service/task/confirmReserveTransaction.js +42 -3
- package/lib/chevre/service/task/onResourceUpdated/onResourceDeleted.js +7 -7
- package/lib/chevre/service/task/placeOrder.js +9 -10
- package/lib/chevre/service/task/returnOrder.js +0 -3
- package/lib/chevre/service/task/returnPayTransaction.js +1 -1
- package/lib/chevre/service/task/returnReserveTransaction.js +1 -1
- package/lib/chevre/service/task/sendOrder.js +8 -4
- package/lib/chevre/service/task/voidPayTransaction.js +2 -2
- package/lib/chevre/service/task/voidReserveTransaction.js +8 -12
- package/lib/chevre/service/transaction/deleteTransaction.js +1 -1
- package/lib/chevre/service/transaction/moneyTransfer.js +1 -5
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.js +6 -2
- package/lib/chevre/service/transaction/placeOrderInProgress.js +2 -2
- package/lib/chevre/service/transaction/returnOrder/preStart.d.ts +32 -0
- package/lib/chevre/service/transaction/returnOrder/preStart.js +632 -0
- package/lib/chevre/service/transaction/returnOrder.d.ts +8 -6
- package/lib/chevre/service/transaction/returnOrder.js +4 -616
- package/lib/chevre/settings.d.ts +3 -1
- package/lib/chevre/settings.js +7 -2
- package/package.json +3 -3
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as factory from '../../../../factory';
|
|
2
|
+
declare function createNextSendOrderTasks(params: {
|
|
3
|
+
order: Pick<factory.order.IOrder, 'confirmationNumber' | 'project' | 'typeOf' | 'seller' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'customer' | 'id'> & {
|
|
4
|
+
acceptedOffers: {
|
|
5
|
+
limit: number;
|
|
6
|
+
page: number;
|
|
7
|
+
};
|
|
8
|
+
orderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
|
|
9
|
+
};
|
|
10
|
+
}): (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)[];
|
|
11
|
+
export { createNextSendOrderTasks };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createNextSendOrderTasks = void 0;
|
|
4
|
+
const factory = require("../../../../factory");
|
|
5
|
+
const order_1 = require("../../../../factory/order");
|
|
6
|
+
function createNextSendOrderTasks(params) {
|
|
7
|
+
const now = new Date();
|
|
8
|
+
const taskAttributes = [];
|
|
9
|
+
const maskedCustomer = (0, order_1.createMaskedCustomer)({ customer: params.order.customer }, { noProfile: true });
|
|
10
|
+
const simpleOrder = {
|
|
11
|
+
typeOf: params.order.typeOf,
|
|
12
|
+
seller: {
|
|
13
|
+
id: params.order.seller.id,
|
|
14
|
+
typeOf: params.order.seller.typeOf,
|
|
15
|
+
name: params.order.seller.name
|
|
16
|
+
},
|
|
17
|
+
// mask
|
|
18
|
+
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
19
|
+
orderNumber: params.order.orderNumber,
|
|
20
|
+
price: params.order.price,
|
|
21
|
+
priceCurrency: params.order.priceCurrency,
|
|
22
|
+
orderDate: params.order.orderDate
|
|
23
|
+
};
|
|
24
|
+
const sendOrderObject = Object.assign(Object.assign({}, simpleOrder), { acceptedOffers: {
|
|
25
|
+
limit: params.order.acceptedOffers.limit,
|
|
26
|
+
page: params.order.acceptedOffers.page + 1
|
|
27
|
+
} });
|
|
28
|
+
const sendOrderTaskData = {
|
|
29
|
+
project: params.order.project,
|
|
30
|
+
object: Object.assign(Object.assign({}, sendOrderObject), { confirmationNumber: params.order.confirmationNumber, previousOrderStatus: params.order.orderStatus })
|
|
31
|
+
};
|
|
32
|
+
const sendOrderTask = {
|
|
33
|
+
project: params.order.project,
|
|
34
|
+
name: factory.taskName.SendOrder,
|
|
35
|
+
status: factory.taskStatus.Ready,
|
|
36
|
+
runsAt: now,
|
|
37
|
+
remainingNumberOfTries: 10,
|
|
38
|
+
numberOfTried: 0,
|
|
39
|
+
executionResults: [],
|
|
40
|
+
data: sendOrderTaskData
|
|
41
|
+
};
|
|
42
|
+
taskAttributes.push(sendOrderTask);
|
|
43
|
+
return taskAttributes;
|
|
44
|
+
}
|
|
45
|
+
exports.createNextSendOrderTasks = createNextSendOrderTasks;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
2
|
+
import * as factory from '../../../factory';
|
|
3
|
+
declare function onOrderDeliveredPartially(params: {
|
|
4
|
+
order: Pick<factory.order.IOrder, 'confirmationNumber' | 'project' | 'typeOf' | 'seller' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'customer' | 'id'> & {
|
|
5
|
+
acceptedOffers: {
|
|
6
|
+
limit: number;
|
|
7
|
+
page: number;
|
|
8
|
+
};
|
|
9
|
+
orderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
|
|
10
|
+
};
|
|
11
|
+
}): (repos: {
|
|
12
|
+
task: TaskRepo;
|
|
13
|
+
}) => Promise<void>;
|
|
14
|
+
export { onOrderDeliveredPartially };
|
|
@@ -0,0 +1,37 @@
|
|
|
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.onOrderDeliveredPartially = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* 注文ステータス変更時処理
|
|
15
|
+
*/
|
|
16
|
+
const createDebug = require("debug");
|
|
17
|
+
const factory = require("../../../factory");
|
|
18
|
+
const factory_1 = require("./onOrderDeliveredPartially/factory");
|
|
19
|
+
const debug = createDebug('chevre-domain:service:order');
|
|
20
|
+
// type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'project' | 'typeOf' | 'potentialActions'>;
|
|
21
|
+
function onOrderDeliveredPartially(params) {
|
|
22
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
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.OrderInTransit:
|
|
27
|
+
case factory.orderStatus.OrderProcessing:
|
|
28
|
+
// 次の配送タスクを作成
|
|
29
|
+
tasks = (0, factory_1.createNextSendOrderTasks)({ order: params.order });
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
|
|
33
|
+
}
|
|
34
|
+
yield repos.task.saveMany(tasks, { emitImmediately: true });
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
exports.onOrderDeliveredPartially = onOrderDeliveredPartially;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
2
|
+
import * as factory from '../../../factory';
|
|
3
|
+
declare function onOrderInTransit(params: {
|
|
4
|
+
order: Omit<factory.order.IOrder, 'orderStatus'> & {
|
|
5
|
+
orderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
|
|
6
|
+
};
|
|
7
|
+
}): (repos: {
|
|
8
|
+
task: TaskRepo;
|
|
9
|
+
}) => Promise<void>;
|
|
10
|
+
export { onOrderInTransit };
|
|
@@ -0,0 +1,86 @@
|
|
|
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.onOrderInTransit = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* 注文処理時処理
|
|
15
|
+
*/
|
|
16
|
+
const createDebug = require("debug");
|
|
17
|
+
const factory = require("../../../factory");
|
|
18
|
+
const order_1 = require("../../../factory/order");
|
|
19
|
+
const settings_1 = require("../../../settings");
|
|
20
|
+
// import {
|
|
21
|
+
// IExternalOrder
|
|
22
|
+
// } from './onOrderProcessing/factory';
|
|
23
|
+
const debug = createDebug('chevre-domain:service:order');
|
|
24
|
+
// type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'typeOf' | 'potentialActions'>;
|
|
25
|
+
function onOrderInTransit(params) {
|
|
26
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
|
|
28
|
+
// let tasks: factory.task.IAttributes<factory.taskName>[] = [];
|
|
29
|
+
// await repos.task.saveMany(tasks, { emitImmediately: true });
|
|
30
|
+
switch (params.order.orderStatus) {
|
|
31
|
+
case factory.orderStatus.OrderInTransit:
|
|
32
|
+
case factory.orderStatus.OrderProcessing:
|
|
33
|
+
// 冗長なsendOrderタスク作成を回避(2023-08-25~)
|
|
34
|
+
yield createSendOrderTransactionTaskIfNotExist({
|
|
35
|
+
order: params.order
|
|
36
|
+
// potentialActions: params.placeOrderTransaction?.potentialActions?.order?.potentialActions
|
|
37
|
+
})(repos);
|
|
38
|
+
break;
|
|
39
|
+
default:
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
exports.onOrderInTransit = onOrderInTransit;
|
|
44
|
+
function createSendOrderTransactionTaskIfNotExist(params) {
|
|
45
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
const now = new Date();
|
|
47
|
+
const maskedCustomer = (0, order_1.createMaskedCustomer)({ customer: params.order.customer }, { noProfile: true });
|
|
48
|
+
const simpleOrder = {
|
|
49
|
+
typeOf: params.order.typeOf,
|
|
50
|
+
seller: {
|
|
51
|
+
id: params.order.seller.id,
|
|
52
|
+
typeOf: params.order.seller.typeOf,
|
|
53
|
+
name: params.order.seller.name
|
|
54
|
+
},
|
|
55
|
+
// mask
|
|
56
|
+
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
57
|
+
orderNumber: params.order.orderNumber,
|
|
58
|
+
price: params.order.price,
|
|
59
|
+
priceCurrency: params.order.priceCurrency,
|
|
60
|
+
orderDate: params.order.orderDate
|
|
61
|
+
};
|
|
62
|
+
const sendOrderObject = Object.assign(Object.assign({}, simpleOrder), { acceptedOffers: {
|
|
63
|
+
limit: settings_1.DELIVER_ORDER_LIMIT,
|
|
64
|
+
page: 1 // page1から配送
|
|
65
|
+
} });
|
|
66
|
+
const sendOrderTaskData = {
|
|
67
|
+
project: params.order.project,
|
|
68
|
+
object: Object.assign(Object.assign({}, sendOrderObject), { confirmationNumber: params.order.confirmationNumber, previousOrderStatus: params.order.orderStatus })
|
|
69
|
+
};
|
|
70
|
+
const taskIdentifier = `${sendOrderTaskData.project.id}:${factory.taskName.SendOrder}:${sendOrderTaskData.object.typeOf}:${sendOrderTaskData.object.orderNumber}`;
|
|
71
|
+
const sendOrderTask = {
|
|
72
|
+
identifier: taskIdentifier,
|
|
73
|
+
project: params.order.project,
|
|
74
|
+
name: factory.taskName.SendOrder,
|
|
75
|
+
status: factory.taskStatus.Ready,
|
|
76
|
+
runsAt: now,
|
|
77
|
+
remainingNumberOfTries: 10,
|
|
78
|
+
numberOfTried: 0,
|
|
79
|
+
executionResults: [],
|
|
80
|
+
data: sendOrderTaskData
|
|
81
|
+
};
|
|
82
|
+
debug('processing createSendOrderTaskIfNotExist...', sendOrderTask);
|
|
83
|
+
// await repos.task.createSendOrderTaskIfNotExist(sendOrderTask, { emitImmediately: true });
|
|
84
|
+
yield repos.task.createIfNotExistByIdentifier(sendOrderTask, { emitImmediately: true });
|
|
85
|
+
});
|
|
86
|
+
}
|
|
@@ -14,8 +14,10 @@ exports.onOrderProcessing = void 0;
|
|
|
14
14
|
* 注文処理時処理
|
|
15
15
|
*/
|
|
16
16
|
const createDebug = require("debug");
|
|
17
|
+
const util = require("util");
|
|
17
18
|
const factory = require("../../../factory");
|
|
18
19
|
const order_1 = require("../../../factory/order");
|
|
20
|
+
const settings_1 = require("../../../settings");
|
|
19
21
|
const factory_1 = require("./onOrderProcessing/factory");
|
|
20
22
|
const debug = createDebug('chevre-domain:service:order');
|
|
21
23
|
const USE_CONFIRM_REGISTER_SERVICE_TRANSACTION = process.env.USE_CONFIRM_REGISTER_SERVICE_TRANSACTION === '1';
|
|
@@ -53,11 +55,13 @@ function onOrderProcessing(params) {
|
|
|
53
55
|
case factory.orderStatus.OrderProcessing:
|
|
54
56
|
// 冗長なconfirmReserveTransactionタスク作成を回避(2023-08-25~)
|
|
55
57
|
yield createConfirmReserveTransactionTasksIfNotExist(params.order, simpleOrder)(repos);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
if (settings_1.USE_SEND_ORDER_ON_ORDER_PROCESSING) {
|
|
59
|
+
// 冗長なsendOrderタスク作成を回避(2023-08-25~)
|
|
60
|
+
yield createSendOrderTransactionTaskIfNotExist({
|
|
61
|
+
object: params.order,
|
|
62
|
+
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
|
|
63
|
+
})(repos);
|
|
64
|
+
}
|
|
61
65
|
yield createGivePointAwardTaskIfNotExist({
|
|
62
66
|
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
67
|
})(repos);
|
|
@@ -67,14 +71,10 @@ function onOrderProcessing(params) {
|
|
|
67
71
|
});
|
|
68
72
|
}
|
|
69
73
|
exports.onOrderProcessing = onOrderProcessing;
|
|
70
|
-
// const COA_TASK_DELAY_IN_SECONDS = 0;
|
|
71
74
|
function createConfirmReserveTransactionTasksIfNotExist(order, simpleOrder) {
|
|
72
75
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
73
76
|
const taskRunsAt = new Date();
|
|
74
77
|
const taskRunsAt4coa = new Date();
|
|
75
|
-
// const taskRunsAt4coa = moment(order.orderDate)
|
|
76
|
-
// .add(COA_TASK_DELAY_IN_SECONDS, 'seconds')
|
|
77
|
-
// .toDate();
|
|
78
78
|
const confirmObjects = [
|
|
79
79
|
...(0, factory_1.createConfirmReservationActionObject4ChevreByOrder)({ order }),
|
|
80
80
|
...(0, factory_1.createConfirmReservationActionObject4COAByOrder)({ order })
|
|
@@ -93,7 +93,9 @@ function createConfirmReserveTransactionTasksIfNotExist(order, simpleOrder) {
|
|
|
93
93
|
: factory.service.webAPI.Identifier.Chevre
|
|
94
94
|
}
|
|
95
95
|
};
|
|
96
|
+
const taskIdentifier = util.format('%s:%s:%s:%s:%s:%s', data.project.id, factory.taskName.ConfirmReserveTransaction, data.purpose.typeOf, data.purpose.orderNumber, data.object.typeOf, data.object.transactionNumber);
|
|
96
97
|
const confirmReserveTransactionTask = {
|
|
98
|
+
identifier: taskIdentifier,
|
|
97
99
|
project: order.project,
|
|
98
100
|
name: factory.taskName.ConfirmReserveTransaction,
|
|
99
101
|
status: factory.taskStatus.Ready,
|
|
@@ -103,7 +105,8 @@ function createConfirmReserveTransactionTasksIfNotExist(order, simpleOrder) {
|
|
|
103
105
|
executionResults: [],
|
|
104
106
|
data
|
|
105
107
|
};
|
|
106
|
-
|
|
108
|
+
// await repos.task.createConfirmReserveTransactionTaskIfNotExist(confirmReserveTransactionTask, { emitImmediately: true });
|
|
109
|
+
yield repos.task.createIfNotExistByIdentifier(confirmReserveTransactionTask, { emitImmediately: true });
|
|
107
110
|
})));
|
|
108
111
|
});
|
|
109
112
|
}
|
|
@@ -167,9 +170,11 @@ function createSendOrderTransactionTaskIfNotExist(params) {
|
|
|
167
170
|
if (sendOrderByTransaction !== undefined) {
|
|
168
171
|
const sendOrderTaskData = {
|
|
169
172
|
project: sendOrderByTransaction.project,
|
|
170
|
-
object: Object.assign(Object.assign({}, sendOrderByTransaction.object), { confirmationNumber: params.object.confirmationNumber })
|
|
173
|
+
object: Object.assign(Object.assign({}, sendOrderByTransaction.object), { confirmationNumber: params.object.confirmationNumber, previousOrderStatus: factory.orderStatus.OrderProcessing })
|
|
171
174
|
};
|
|
175
|
+
const taskIdentifier = `${sendOrderTaskData.project.id}:${factory.taskName.SendOrder}:${sendOrderTaskData.object.typeOf}:${sendOrderTaskData.object.orderNumber}`;
|
|
172
176
|
const sendOrderTask = {
|
|
177
|
+
identifier: taskIdentifier,
|
|
173
178
|
project: sendOrderByTransaction.project,
|
|
174
179
|
name: factory.taskName.SendOrder,
|
|
175
180
|
status: factory.taskStatus.Ready,
|
|
@@ -179,7 +184,8 @@ function createSendOrderTransactionTaskIfNotExist(params) {
|
|
|
179
184
|
executionResults: [],
|
|
180
185
|
data: sendOrderTaskData
|
|
181
186
|
};
|
|
182
|
-
|
|
187
|
+
// await repos.task.createSendOrderTaskIfNotExist(sendOrderTask, { emitImmediately: true });
|
|
188
|
+
yield repos.task.createIfNotExistByIdentifier(sendOrderTask, { emitImmediately: true });
|
|
183
189
|
}
|
|
184
190
|
});
|
|
185
191
|
}
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { onOrderCancelled } from './onOrderStatusChanged/onOrderCancelled';
|
|
5
5
|
import { onOrderDelivered } from './onOrderStatusChanged/onOrderDelivered';
|
|
6
|
+
import { onOrderDeliveredPartially } from './onOrderStatusChanged/onOrderDeliveredPartially';
|
|
7
|
+
import { onOrderInTransit } from './onOrderStatusChanged/onOrderInTransit';
|
|
6
8
|
import { onOrderPaymentDue } from './onOrderStatusChanged/onOrderPaymentDue';
|
|
7
9
|
import { IExternalOrder, onOrderProcessing } from './onOrderStatusChanged/onOrderProcessing';
|
|
8
10
|
import { onOrderReturned } from './onOrderStatusChanged/onOrderReturned';
|
|
9
|
-
export { IExternalOrder, onOrderCancelled, onOrderDelivered, onOrderPaymentDue, onOrderProcessing, onOrderReturned };
|
|
11
|
+
export { IExternalOrder, onOrderCancelled, onOrderDelivered, onOrderDeliveredPartially, onOrderInTransit, onOrderPaymentDue, onOrderProcessing, onOrderReturned };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.onOrderReturned = exports.onOrderProcessing = exports.onOrderPaymentDue = exports.onOrderDelivered = exports.onOrderCancelled = void 0;
|
|
3
|
+
exports.onOrderReturned = exports.onOrderProcessing = exports.onOrderPaymentDue = exports.onOrderInTransit = exports.onOrderDeliveredPartially = exports.onOrderDelivered = exports.onOrderCancelled = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* 注文ステータス変更時処理
|
|
6
6
|
*/
|
|
@@ -8,6 +8,10 @@ const onOrderCancelled_1 = require("./onOrderStatusChanged/onOrderCancelled");
|
|
|
8
8
|
Object.defineProperty(exports, "onOrderCancelled", { enumerable: true, get: function () { return onOrderCancelled_1.onOrderCancelled; } });
|
|
9
9
|
const onOrderDelivered_1 = require("./onOrderStatusChanged/onOrderDelivered");
|
|
10
10
|
Object.defineProperty(exports, "onOrderDelivered", { enumerable: true, get: function () { return onOrderDelivered_1.onOrderDelivered; } });
|
|
11
|
+
const onOrderDeliveredPartially_1 = require("./onOrderStatusChanged/onOrderDeliveredPartially");
|
|
12
|
+
Object.defineProperty(exports, "onOrderDeliveredPartially", { enumerable: true, get: function () { return onOrderDeliveredPartially_1.onOrderDeliveredPartially; } });
|
|
13
|
+
const onOrderInTransit_1 = require("./onOrderStatusChanged/onOrderInTransit");
|
|
14
|
+
Object.defineProperty(exports, "onOrderInTransit", { enumerable: true, get: function () { return onOrderInTransit_1.onOrderInTransit; } });
|
|
11
15
|
const onOrderPaymentDue_1 = require("./onOrderStatusChanged/onOrderPaymentDue");
|
|
12
16
|
Object.defineProperty(exports, "onOrderPaymentDue", { enumerable: true, get: function () { return onOrderPaymentDue_1.onOrderPaymentDue; } });
|
|
13
17
|
const onOrderProcessing_1 = require("./onOrderStatusChanged/onOrderProcessing");
|
|
@@ -2,6 +2,7 @@ import type { MongoRepository as AcceptedOfferRepo } from '../../repo/acceptedOf
|
|
|
2
2
|
import type { MongoRepository as AccountingReportRepo } from '../../repo/accountingReport';
|
|
3
3
|
import type { MongoRepository as ActionRepo } from '../../repo/action';
|
|
4
4
|
import type { MongoRepository as OrderRepo } from '../../repo/order';
|
|
5
|
+
import type { MongoRepository as OrderInTransactionRepo } from '../../repo/orderInTransaction';
|
|
5
6
|
import type { MongoRepository as TaskRepo } from '../../repo/task';
|
|
6
7
|
import type { MongoRepository as TransactionRepo } from '../../repo/transaction';
|
|
7
8
|
import { IExternalOrder } from './onOrderStatusChanged';
|
|
@@ -39,6 +40,7 @@ declare function placeOrder(params: {
|
|
|
39
40
|
accountingReport: AccountingReportRepo;
|
|
40
41
|
action: ActionRepo;
|
|
41
42
|
order: OrderRepo;
|
|
43
|
+
orderInTransaction: OrderInTransactionRepo;
|
|
42
44
|
task: TaskRepo;
|
|
43
45
|
transaction: TransactionRepo;
|
|
44
46
|
}) => Promise<{
|
|
@@ -159,7 +159,7 @@ function placeOrderWithoutTransaction(params) {
|
|
|
159
159
|
}
|
|
160
160
|
throw error;
|
|
161
161
|
}
|
|
162
|
-
yield repos.action.
|
|
162
|
+
yield repos.action.completeWithVoid({ typeOf: orderActionAttributes.typeOf, id: action.id, result: {} });
|
|
163
163
|
// 経理レポートを保管は外部注文の場合保留(2023-12-08~)
|
|
164
164
|
// await createAccountingReportIfNotExist(order)({ accountingReport: repos.accountingReport });
|
|
165
165
|
});
|
|
@@ -168,7 +168,6 @@ exports.placeOrderWithoutTransaction = placeOrderWithoutTransaction;
|
|
|
168
168
|
/**
|
|
169
169
|
* 注文を作成する
|
|
170
170
|
*/
|
|
171
|
-
// tslint:disable-next-line:max-func-body-length
|
|
172
171
|
function placeOrder(params) {
|
|
173
172
|
// tslint:disable-next-line:max-func-body-length
|
|
174
173
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -182,6 +181,10 @@ function placeOrder(params) {
|
|
|
182
181
|
confirmationNumber: params.object.confirmationNumber,
|
|
183
182
|
orderNumber: params.object.orderNumber
|
|
184
183
|
})({ transaction: repos.transaction });
|
|
184
|
+
// USE_ORDER_PAYMENT_DUE_ON_PLACED設定を廃止したので、必ずOrderPaymentDueのはず(2024-01-10~)
|
|
185
|
+
if (order.orderStatus !== factory.orderStatus.OrderPaymentDue) {
|
|
186
|
+
throw new factory.errors.ServiceUnavailable(`orderStatus must be ${factory.orderStatus.OrderPaymentDue}`);
|
|
187
|
+
}
|
|
185
188
|
const maskedCustomer = (0, order_1.createMaskedCustomer)(order, { noProfile: true });
|
|
186
189
|
const simpleOrder = {
|
|
187
190
|
typeOf: order.typeOf,
|
|
@@ -224,6 +227,8 @@ function placeOrder(params) {
|
|
|
224
227
|
if (completedActions.length === 0) {
|
|
225
228
|
const action = yield repos.action.start(orderActionAttributes);
|
|
226
229
|
try {
|
|
230
|
+
// orderInTransactionを考慮(2024-01-14~)
|
|
231
|
+
yield repos.orderInTransaction.placeOrder(order);
|
|
227
232
|
yield repos.order.createIfNotExist(order);
|
|
228
233
|
}
|
|
229
234
|
catch (error) {
|
|
@@ -235,7 +240,7 @@ function placeOrder(params) {
|
|
|
235
240
|
}
|
|
236
241
|
throw error;
|
|
237
242
|
}
|
|
238
|
-
yield repos.action.
|
|
243
|
+
yield repos.action.completeWithVoid({ typeOf: orderActionAttributes.typeOf, id: action.id, result: {} });
|
|
239
244
|
}
|
|
240
245
|
if (params.useOnOrderStatusChanged) {
|
|
241
246
|
// 経理レポートを保管
|
|
@@ -259,27 +264,26 @@ function placeOrder(params) {
|
|
|
259
264
|
})({
|
|
260
265
|
task: repos.task
|
|
261
266
|
});
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
// OrderPaymentDue
|
|
265
|
-
//
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
});
|
|
267
|
+
// } else if (order.orderStatus === factory.orderStatus.OrderProcessing) {
|
|
268
|
+
// // OrderPaymentDueをスキップしてOrderProcessingから開始する場合(2023-08-23~)
|
|
269
|
+
// // OrderPaymentDueに対する処理をまず強制的に実行する(2023-08-24~)
|
|
270
|
+
// await onOrderPaymentDue({
|
|
271
|
+
// order: {
|
|
272
|
+
// paymentMethods: order.paymentMethods,
|
|
273
|
+
// project: order.project,
|
|
274
|
+
// orderNumber: order.orderNumber,
|
|
275
|
+
// confirmationNumber: order.confirmationNumber,
|
|
276
|
+
// customer: order.customer,
|
|
277
|
+
// orderDate: order.orderDate,
|
|
278
|
+
// seller: order.seller,
|
|
279
|
+
// typeOf: order.typeOf,
|
|
280
|
+
// price: order.price,
|
|
281
|
+
// priceCurrency: order.priceCurrency,
|
|
282
|
+
// orderStatus: factory.orderStatus.OrderPaymentDue
|
|
283
|
+
// }
|
|
284
|
+
// })({
|
|
285
|
+
// task: repos.task
|
|
286
|
+
// });
|
|
283
287
|
}
|
|
284
288
|
else {
|
|
285
289
|
throw new factory.errors.NotImplemented(`placing an order on the status '${order.orderStatus}' not implemented`);
|
|
@@ -295,11 +299,6 @@ function placeOrder(params) {
|
|
|
295
299
|
})(repos);
|
|
296
300
|
}
|
|
297
301
|
}
|
|
298
|
-
// onOrderStatusChangedへ移行(2023-08-17~)
|
|
299
|
-
// await onPlaceOrder({
|
|
300
|
-
// object: order,
|
|
301
|
-
// potentialActions: params.potentialActions
|
|
302
|
-
// })(repos);
|
|
303
302
|
return { order };
|
|
304
303
|
});
|
|
305
304
|
}
|
|
@@ -26,15 +26,24 @@ function returnOrder(params) {
|
|
|
26
26
|
? params.object.dateReturned
|
|
27
27
|
: new Date();
|
|
28
28
|
const returner = params.agent;
|
|
29
|
-
|
|
29
|
+
const order = yield repos.order.findByOrderNumber({
|
|
30
30
|
orderNumber,
|
|
31
31
|
project: { id: params.project.id },
|
|
32
32
|
inclusion: [
|
|
33
33
|
'project', 'typeOf', 'orderNumber', 'dateReturned', 'id',
|
|
34
|
-
'customer', 'returner', 'seller', 'price', 'priceCurrency', 'orderDate'
|
|
34
|
+
'customer', 'returner', 'seller', 'price', 'priceCurrency', 'orderDate', 'orderStatus'
|
|
35
35
|
],
|
|
36
36
|
exclusion: []
|
|
37
37
|
});
|
|
38
|
+
// 注文ステータス検証(2024-01-10~)
|
|
39
|
+
switch (order.orderStatus) {
|
|
40
|
+
case factory.orderStatus.OrderDelivered:
|
|
41
|
+
case factory.orderStatus.OrderReturned:
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
// OrderDeliveredへの処理が進行中と考えられるので、ひとまず失敗させてリトライに期待
|
|
45
|
+
throw new factory.errors.Argument('object.orderNumber', `orderStatus not returnable: ${order.orderStatus}`);
|
|
46
|
+
}
|
|
38
47
|
// 返品取引検索
|
|
39
48
|
const returnOrderTransactions = yield repos.transaction.search({
|
|
40
49
|
limit: 1,
|
|
@@ -72,7 +81,7 @@ function returnOrder(params) {
|
|
|
72
81
|
typeOf: factory.actionType.ReturnAction
|
|
73
82
|
};
|
|
74
83
|
let returnedOwnershipInfos = [];
|
|
75
|
-
|
|
84
|
+
let returnedOrder;
|
|
76
85
|
const action = yield repos.action.start(returnOrderActionAttributes);
|
|
77
86
|
try {
|
|
78
87
|
returnedOwnershipInfos = yield processReturnOrder(order, dateReturned)({
|
|
@@ -80,7 +89,7 @@ function returnOrder(params) {
|
|
|
80
89
|
ownershipInfo: repos.ownershipInfo
|
|
81
90
|
});
|
|
82
91
|
// 注文ステータス変更
|
|
83
|
-
|
|
92
|
+
returnedOrder = yield repos.order.returnOrder({
|
|
84
93
|
project: { id: order.project.id },
|
|
85
94
|
orderNumber,
|
|
86
95
|
dateReturned,
|
|
@@ -98,21 +107,21 @@ function returnOrder(params) {
|
|
|
98
107
|
throw error;
|
|
99
108
|
}
|
|
100
109
|
const result = returnedOwnershipInfos;
|
|
101
|
-
yield repos.action.
|
|
110
|
+
yield repos.action.completeWithVoid({ typeOf: action.typeOf, id: action.id, result });
|
|
102
111
|
if (params.useOnOrderStatusChanged) {
|
|
103
112
|
yield (0, onOrderStatusChanged_1.onOrderReturned)({
|
|
104
113
|
order: {
|
|
105
|
-
project:
|
|
106
|
-
typeOf:
|
|
107
|
-
orderNumber:
|
|
108
|
-
dateReturned:
|
|
109
|
-
id:
|
|
110
|
-
customer:
|
|
111
|
-
returner:
|
|
112
|
-
seller:
|
|
113
|
-
price:
|
|
114
|
-
priceCurrency:
|
|
115
|
-
orderDate:
|
|
114
|
+
project: returnedOrder.project,
|
|
115
|
+
typeOf: returnedOrder.typeOf,
|
|
116
|
+
orderNumber: returnedOrder.orderNumber,
|
|
117
|
+
dateReturned: returnedOrder.dateReturned,
|
|
118
|
+
id: returnedOrder.id,
|
|
119
|
+
customer: returnedOrder.customer,
|
|
120
|
+
returner: returnedOrder.returner,
|
|
121
|
+
seller: returnedOrder.seller,
|
|
122
|
+
price: returnedOrder.price,
|
|
123
|
+
priceCurrency: returnedOrder.priceCurrency,
|
|
124
|
+
orderDate: returnedOrder.orderDate,
|
|
116
125
|
orderStatus: factory.orderStatus.OrderReturned
|
|
117
126
|
},
|
|
118
127
|
returnOrderTransaction
|
|
@@ -24,6 +24,11 @@ declare function sendOrder(params: {
|
|
|
24
24
|
object: {
|
|
25
25
|
confirmationNumber: string;
|
|
26
26
|
orderNumber: string;
|
|
27
|
+
previousOrderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
|
|
28
|
+
acceptedOffers: {
|
|
29
|
+
limit: number;
|
|
30
|
+
page: number;
|
|
31
|
+
};
|
|
27
32
|
};
|
|
28
33
|
useOnOrderStatusChanged: boolean;
|
|
29
34
|
}): ISendOperation<void>;
|