@chevre/domain 24.0.0-alpha.12 → 24.0.0-alpha.14
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/notification/triggerWebhook.d.ts +7 -6
- package/lib/chevre/service/offer/event/voidTransactionByActionId.d.ts +1 -1
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/isDeliverable.d.ts +16 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/isDeliverable.js +97 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionCanceled.d.ts +21 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionCanceled.js +86 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.d.ts +22 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.js +112 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.d.ts +22 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.js +74 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.d.ts +12 -8
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.js +3 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/processing2inTransit.d.ts +16 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/processing2inTransit.js +74 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +1 -11
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +35 -271
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.d.ts +6 -7
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.d.ts +6 -5
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.d.ts +6 -5
- package/lib/chevre/service/order/sendOrder.d.ts +4 -4
- package/lib/chevre/service/order/sendOrder.js +10 -8
- package/lib/chevre/service/payment/any/onPayActionCompleted.d.ts +7 -3
- package/lib/chevre/service/payment/any/onPayActionCompleted.js +3 -0
- package/lib/chevre/service/task/sendOrder.js +2 -2
- package/package.json +3 -3
|
@@ -2,13 +2,14 @@ import * as factory from '../../factory';
|
|
|
2
2
|
import type { ActionRepo } from '../../repo/action';
|
|
3
3
|
import type { PotentialActionRepo } from '../../repo/potentialAction';
|
|
4
4
|
import type { SettingRepo } from '../../repo/setting';
|
|
5
|
+
interface ITriggerWebhookRepos {
|
|
6
|
+
action: ActionRepo;
|
|
7
|
+
potentialAction: PotentialActionRepo;
|
|
8
|
+
setting: SettingRepo;
|
|
9
|
+
}
|
|
5
10
|
declare function triggerWebhook(params: factory.task.IData<factory.taskName.TriggerWebhook> & {
|
|
6
11
|
project: {
|
|
7
12
|
id: string;
|
|
8
13
|
};
|
|
9
|
-
}): (repos:
|
|
10
|
-
|
|
11
|
-
potentialAction: PotentialActionRepo;
|
|
12
|
-
setting: SettingRepo;
|
|
13
|
-
}) => Promise<void>;
|
|
14
|
-
export { triggerWebhook };
|
|
14
|
+
}): (repos: ITriggerWebhookRepos) => Promise<void>;
|
|
15
|
+
export { ITriggerWebhookRepos, triggerWebhook };
|
|
@@ -40,4 +40,4 @@ declare function voidTransactionByActionId(params: factory.task.IData<factory.ta
|
|
|
40
40
|
id: string;
|
|
41
41
|
};
|
|
42
42
|
}): (repos: IVoidTransactionByActionIdRepos, settings: Settings) => Promise<void>;
|
|
43
|
-
export { voidTransactionByActionId };
|
|
43
|
+
export { IVoidTransactionByActionIdRepos, voidTransactionByActionId };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AcceptedOfferRepo } from '../../../repo/acceptedOffer';
|
|
2
|
+
import type { AssetTransactionRepo } from '../../../repo/assetTransaction';
|
|
3
|
+
import type { OrderRepo } from '../../../repo/order';
|
|
4
|
+
import * as factory from '../../../factory';
|
|
5
|
+
declare function isDeliverable(params: {
|
|
6
|
+
project: {
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
9
|
+
orderNumber: string;
|
|
10
|
+
assetTransactionType: factory.assetTransactionType.Reserve | factory.assetTransactionType.MoneyTransfer | factory.assetTransactionType.RegisterService;
|
|
11
|
+
}): (repos: {
|
|
12
|
+
acceptedOffer: AcceptedOfferRepo;
|
|
13
|
+
assetTransaction: AssetTransactionRepo;
|
|
14
|
+
order: OrderRepo;
|
|
15
|
+
}) => Promise<boolean>;
|
|
16
|
+
export { isDeliverable };
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.isDeliverable = isDeliverable;
|
|
30
|
+
const debug_1 = __importDefault(require("debug"));
|
|
31
|
+
const factory = __importStar(require("../../../factory"));
|
|
32
|
+
const debug = (0, debug_1.default)('chevre-domain:service:order');
|
|
33
|
+
function isDeliverable(params) {
|
|
34
|
+
return async (repos) => {
|
|
35
|
+
let allReserveTransactionConfirmed = false;
|
|
36
|
+
let allMoneyTransferTransactionConfirmed = false;
|
|
37
|
+
let allRegisterServiceTransactionConfirmed = false;
|
|
38
|
+
if (params.assetTransactionType === factory.assetTransactionType.Reserve) {
|
|
39
|
+
allMoneyTransferTransactionConfirmed = true;
|
|
40
|
+
allRegisterServiceTransactionConfirmed = true;
|
|
41
|
+
// 注文のreservationNumberを取得
|
|
42
|
+
const reservationNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.itemOffered.reservationNumber');
|
|
43
|
+
if (reservationNumbers.length > 0) {
|
|
44
|
+
const referencedReserveTransactions = await repos.assetTransaction.search({
|
|
45
|
+
project: { id: { $eq: params.project.id } },
|
|
46
|
+
typeOf: factory.assetTransactionType.Reserve,
|
|
47
|
+
transactionNumber: { $in: reservationNumbers }
|
|
48
|
+
}, ['status']);
|
|
49
|
+
allReserveTransactionConfirmed =
|
|
50
|
+
referencedReserveTransactions.length === reservationNumbers.length
|
|
51
|
+
&& referencedReserveTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
allReserveTransactionConfirmed = true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (params.assetTransactionType === factory.assetTransactionType.MoneyTransfer) {
|
|
58
|
+
allReserveTransactionConfirmed = true;
|
|
59
|
+
allRegisterServiceTransactionConfirmed = true;
|
|
60
|
+
// 注文のMoneyTransferTransaction.transactionNumberを取得
|
|
61
|
+
const moneyTransferTransactionNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.serialNumber');
|
|
62
|
+
if (moneyTransferTransactionNumbers.length > 0) {
|
|
63
|
+
debug('is deliverable?...', params.orderNumber, 'moneyTransferTransactionNumbers:', moneyTransferTransactionNumbers);
|
|
64
|
+
const referencedMoneyTransferTransactions = await repos.assetTransaction.search({
|
|
65
|
+
project: { id: { $eq: params.project.id } },
|
|
66
|
+
typeOf: factory.assetTransactionType.MoneyTransfer,
|
|
67
|
+
transactionNumber: { $in: moneyTransferTransactionNumbers }
|
|
68
|
+
}, ['status']);
|
|
69
|
+
allMoneyTransferTransactionConfirmed =
|
|
70
|
+
referencedMoneyTransferTransactions.length === moneyTransferTransactionNumbers.length
|
|
71
|
+
&& referencedMoneyTransferTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
allMoneyTransferTransactionConfirmed = true;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (params.assetTransactionType === factory.assetTransactionType.RegisterService) {
|
|
78
|
+
allReserveTransactionConfirmed = true;
|
|
79
|
+
allMoneyTransferTransactionConfirmed = true;
|
|
80
|
+
const registerServiceTransactionNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.serialNumber');
|
|
81
|
+
if (registerServiceTransactionNumbers.length > 0) {
|
|
82
|
+
const referencedRegisterServiceTransactions = await repos.assetTransaction.search({
|
|
83
|
+
project: { id: { $eq: params.project.id } },
|
|
84
|
+
typeOf: factory.assetTransactionType.RegisterService,
|
|
85
|
+
transactionNumber: { $in: registerServiceTransactionNumbers }
|
|
86
|
+
}, ['status']);
|
|
87
|
+
allRegisterServiceTransactionConfirmed =
|
|
88
|
+
referencedRegisterServiceTransactions.length === registerServiceTransactionNumbers.length
|
|
89
|
+
&& referencedRegisterServiceTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
allRegisterServiceTransactionConfirmed = true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return allReserveTransactionConfirmed && allMoneyTransferTransactionConfirmed && allRegisterServiceTransactionConfirmed;
|
|
96
|
+
};
|
|
97
|
+
}
|
package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionCanceled.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AcceptedOfferRepo } from '../../../repo/acceptedOffer';
|
|
2
|
+
import type { AssetTransactionRepo } from '../../../repo/assetTransaction';
|
|
3
|
+
import type { OrderRepo } from '../../../repo/order';
|
|
4
|
+
import type { SettingRepo } from '../../../repo/setting';
|
|
5
|
+
import type { TaskRepo } from '../../../repo/task';
|
|
6
|
+
import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
|
|
7
|
+
import * as factory from '../../../factory';
|
|
8
|
+
interface IOnPayTransactionCanceledRepos {
|
|
9
|
+
acceptedOffer: AcceptedOfferRepo;
|
|
10
|
+
assetTransaction: AssetTransactionRepo;
|
|
11
|
+
order: OrderRepo;
|
|
12
|
+
setting: SettingRepo;
|
|
13
|
+
task: TaskRepo;
|
|
14
|
+
placeOrder: PlaceOrderRepo;
|
|
15
|
+
}
|
|
16
|
+
declare function onPayTransactionCanceled(params: factory.task.onAssetTransactionStatusChanged.IData & {
|
|
17
|
+
object: factory.task.onAssetTransactionStatusChanged.IObjectAsPayTransaction & {
|
|
18
|
+
status: factory.transactionStatusType.Canceled | factory.transactionStatusType.Expired;
|
|
19
|
+
};
|
|
20
|
+
}): (repos: IOnPayTransactionCanceledRepos) => Promise<void>;
|
|
21
|
+
export { IOnPayTransactionCanceledRepos, onPayTransactionCanceled, };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.onPayTransactionCanceled = onPayTransactionCanceled;
|
|
27
|
+
const findPlaceOrderTransaction_1 = require("../findPlaceOrderTransaction");
|
|
28
|
+
const onOrderStatusChanged_1 = require("../onOrderStatusChanged");
|
|
29
|
+
const factory = __importStar(require("../../../factory"));
|
|
30
|
+
function onPayTransactionCanceled(params) {
|
|
31
|
+
return async (repos
|
|
32
|
+
// settings: Settings
|
|
33
|
+
) => {
|
|
34
|
+
if (typeof params.useOnOrderStatusChanged !== 'boolean') {
|
|
35
|
+
throw new factory.errors.Argument('useOnOrderStatusChanged', 'must be boolean');
|
|
36
|
+
}
|
|
37
|
+
// 注文が存在すればキャンセル(2023-08-30~)
|
|
38
|
+
await cancelOrderIfExist({
|
|
39
|
+
project: { id: params.project.id },
|
|
40
|
+
paymentMethodId: params.object.transactionNumber,
|
|
41
|
+
useOnOrderStatusChanged: params.useOnOrderStatusChanged
|
|
42
|
+
})(repos);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function cancelOrderIfExist(params) {
|
|
46
|
+
return async (repos) => {
|
|
47
|
+
if (params.paymentMethodId.length === 0) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// 注文のpaymentMethodIdを取得
|
|
51
|
+
const ordersByPaymentMethodId = await repos.order.projectFields({
|
|
52
|
+
limit: 1,
|
|
53
|
+
page: 1,
|
|
54
|
+
paymentMethods: {
|
|
55
|
+
paymentMethodIds: [params.paymentMethodId]
|
|
56
|
+
},
|
|
57
|
+
project: { id: { $eq: params.project.id } }
|
|
58
|
+
}, { inclusion: ['confirmationNumber', 'orderNumber'] });
|
|
59
|
+
const orderByPaymentMethodId = ordersByPaymentMethodId.shift();
|
|
60
|
+
if (orderByPaymentMethodId !== undefined) {
|
|
61
|
+
const placeOrderTransaction = await (0, findPlaceOrderTransaction_1.findPlaceOrderTransaction)({
|
|
62
|
+
project: { id: params.project.id },
|
|
63
|
+
confirmationNumber: orderByPaymentMethodId.confirmationNumber,
|
|
64
|
+
orderNumber: orderByPaymentMethodId.orderNumber
|
|
65
|
+
})(repos);
|
|
66
|
+
const order = await repos.order.changeStatus({
|
|
67
|
+
project: { id: params.project.id },
|
|
68
|
+
orderNumber: orderByPaymentMethodId.orderNumber,
|
|
69
|
+
orderStatus: factory.orderStatus.OrderCancelled,
|
|
70
|
+
previousOrderStatus: factory.orderStatus.OrderPaymentDue
|
|
71
|
+
});
|
|
72
|
+
if (params.useOnOrderStatusChanged) {
|
|
73
|
+
await (0, onOrderStatusChanged_1.onOrderCancelled)({
|
|
74
|
+
order: {
|
|
75
|
+
orderDate: order.orderDate,
|
|
76
|
+
orderNumber: order.orderNumber,
|
|
77
|
+
orderStatus: factory.orderStatus.OrderCancelled // 強制的にOrderCancelledとして処理する
|
|
78
|
+
},
|
|
79
|
+
placeOrderTransaction
|
|
80
|
+
})({
|
|
81
|
+
task: repos.task
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AcceptedOfferRepo } from '../../../repo/acceptedOffer';
|
|
2
|
+
import type { AssetTransactionRepo } from '../../../repo/assetTransaction';
|
|
3
|
+
import type { OrderRepo } from '../../../repo/order';
|
|
4
|
+
import type { SettingRepo } from '../../../repo/setting';
|
|
5
|
+
import type { TaskRepo } from '../../../repo/task';
|
|
6
|
+
import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
|
|
7
|
+
import * as factory from '../../../factory';
|
|
8
|
+
import { Settings } from '../../../settings';
|
|
9
|
+
interface IOnPayTransactionConfirmedRepos {
|
|
10
|
+
acceptedOffer: AcceptedOfferRepo;
|
|
11
|
+
assetTransaction: AssetTransactionRepo;
|
|
12
|
+
order: OrderRepo;
|
|
13
|
+
setting: SettingRepo;
|
|
14
|
+
task: TaskRepo;
|
|
15
|
+
placeOrder: PlaceOrderRepo;
|
|
16
|
+
}
|
|
17
|
+
declare function onPayTransactionConfirmed(params: factory.task.onAssetTransactionStatusChanged.IData & {
|
|
18
|
+
object: factory.task.onAssetTransactionStatusChanged.IObjectAsPayTransaction & {
|
|
19
|
+
status: factory.transactionStatusType.Confirmed;
|
|
20
|
+
};
|
|
21
|
+
}): (repos: IOnPayTransactionConfirmedRepos, settings: Settings) => Promise<void>;
|
|
22
|
+
export { IOnPayTransactionConfirmedRepos, onPayTransactionConfirmed };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.onPayTransactionConfirmed = onPayTransactionConfirmed;
|
|
27
|
+
const paymentDue2Processing_1 = require("../onAssetTransactionStatusChanged/paymentDue2Processing");
|
|
28
|
+
const factory = __importStar(require("../../../factory"));
|
|
29
|
+
function onPayTransactionConfirmed(params) {
|
|
30
|
+
return async (repos, settings) => {
|
|
31
|
+
if (typeof params.useOnOrderStatusChanged !== 'boolean') {
|
|
32
|
+
throw new factory.errors.Argument('useOnOrderStatusChanged', 'must be boolean');
|
|
33
|
+
}
|
|
34
|
+
const orderNumber = params.purpose?.orderNumber;
|
|
35
|
+
const confirmationNumber = params.purpose?.confirmationNumber;
|
|
36
|
+
// 確定時の決済方法区分指定(2023-08-29~)
|
|
37
|
+
const specifiedPaymentMethodIdentifire = params.object?.object?.paymentMethod?.identifier;
|
|
38
|
+
if (typeof specifiedPaymentMethodIdentifire === 'string' && specifiedPaymentMethodIdentifire.length > 0) {
|
|
39
|
+
await fixPaymentMethodIdentifierIfPossible({
|
|
40
|
+
project: { id: params.project.id },
|
|
41
|
+
paymentMethodId: params.object.transactionNumber,
|
|
42
|
+
paymentMethod: { identifier: specifiedPaymentMethodIdentifire },
|
|
43
|
+
referencesOrder: { orderNumber }
|
|
44
|
+
})(repos);
|
|
45
|
+
}
|
|
46
|
+
if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
|
|
47
|
+
// PayTransactionのステータス検証
|
|
48
|
+
const processable = await isProcessable({ project: { id: params.project.id }, orderNumber })(repos);
|
|
49
|
+
if (processable) {
|
|
50
|
+
await (0, paymentDue2Processing_1.paymentDue2Processing)({
|
|
51
|
+
project: { id: params.project.id },
|
|
52
|
+
confirmationNumber,
|
|
53
|
+
orderNumber,
|
|
54
|
+
useOnOrderStatusChanged: params.useOnOrderStatusChanged
|
|
55
|
+
})(repos, settings);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function fixPaymentMethodIdentifierIfPossible(params) {
|
|
61
|
+
return async (repos) => {
|
|
62
|
+
const referencedPayTransactions = await repos.assetTransaction.search({
|
|
63
|
+
project: { id: { $eq: params.project.id } },
|
|
64
|
+
typeOf: factory.assetTransactionType.Pay,
|
|
65
|
+
statuses: [factory.transactionStatusType.Confirmed],
|
|
66
|
+
transactionNumber: { $in: [params.paymentMethodId] }
|
|
67
|
+
}, ['object']);
|
|
68
|
+
const referencedPayTransaction = referencedPayTransactions.shift();
|
|
69
|
+
if (referencedPayTransaction === undefined) {
|
|
70
|
+
throw new factory.errors.NotFound(factory.assetTransactionType.Pay);
|
|
71
|
+
}
|
|
72
|
+
// 対面決済かつ決済取引上の決済方法区分と一致すれば、注文を変更
|
|
73
|
+
if (referencedPayTransaction.object.typeOf === factory.service.paymentService.PaymentServiceType.FaceToFace
|
|
74
|
+
&& referencedPayTransaction.object.paymentMethod.identifier === params.paymentMethod.identifier) {
|
|
75
|
+
await repos.order.fixPaymentMethodIdentifier({
|
|
76
|
+
project: { id: params.project.id },
|
|
77
|
+
orderNumber: params.referencesOrder.orderNumber,
|
|
78
|
+
invoice: {
|
|
79
|
+
paymentMethodId: params.paymentMethodId,
|
|
80
|
+
paymentMethod: { identifier: params.paymentMethod.identifier }
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function isProcessable(params) {
|
|
87
|
+
return async (repos) => {
|
|
88
|
+
// 注文のpaymentMethodIdを取得
|
|
89
|
+
const order = await repos.order.projectFieldsByOrderNumber({
|
|
90
|
+
orderNumber: params.orderNumber,
|
|
91
|
+
project: { id: params.project.id },
|
|
92
|
+
inclusion: ['paymentMethods']
|
|
93
|
+
});
|
|
94
|
+
// PayTransactionのステータス検証
|
|
95
|
+
let allPayTransactionConfirmed;
|
|
96
|
+
const paymentMethodIds = order.paymentMethods.filter((invoice) => typeof invoice.paymentMethodId === 'string' && invoice.paymentMethodId.length > 0)
|
|
97
|
+
.map((invoice) => invoice.paymentMethodId);
|
|
98
|
+
if (paymentMethodIds.length > 0) {
|
|
99
|
+
const referencedPayTransactions = await repos.assetTransaction.search({
|
|
100
|
+
project: { id: { $eq: params.project.id } },
|
|
101
|
+
typeOf: factory.assetTransactionType.Pay,
|
|
102
|
+
transactionNumber: { $in: paymentMethodIds }
|
|
103
|
+
}, ['status']);
|
|
104
|
+
allPayTransactionConfirmed =
|
|
105
|
+
referencedPayTransactions.every((payTransation) => payTransation.status === factory.transactionStatusType.Confirmed);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
allPayTransactionConfirmed = true;
|
|
109
|
+
}
|
|
110
|
+
return allPayTransactionConfirmed;
|
|
111
|
+
};
|
|
112
|
+
}
|
package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AcceptedOfferRepo } from '../../../repo/acceptedOffer';
|
|
2
|
+
import type { AssetTransactionRepo } from '../../../repo/assetTransaction';
|
|
3
|
+
import type { OrderRepo } from '../../../repo/order';
|
|
4
|
+
import type { SettingRepo } from '../../../repo/setting';
|
|
5
|
+
import type { TaskRepo } from '../../../repo/task';
|
|
6
|
+
import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
|
|
7
|
+
import * as factory from '../../../factory';
|
|
8
|
+
import { Settings } from '../../../settings';
|
|
9
|
+
interface IOnReserveTransactionConfirmedRepos {
|
|
10
|
+
acceptedOffer: AcceptedOfferRepo;
|
|
11
|
+
assetTransaction: AssetTransactionRepo;
|
|
12
|
+
order: OrderRepo;
|
|
13
|
+
setting: SettingRepo;
|
|
14
|
+
task: TaskRepo;
|
|
15
|
+
placeOrder: PlaceOrderRepo;
|
|
16
|
+
}
|
|
17
|
+
declare function onReserveTransactionConfirmed(params: factory.task.onAssetTransactionStatusChanged.IData & {
|
|
18
|
+
object: factory.task.onAssetTransactionStatusChanged.IObjectAsReserveTransaction & {
|
|
19
|
+
status: factory.transactionStatusType.Confirmed;
|
|
20
|
+
};
|
|
21
|
+
}): (repos: IOnReserveTransactionConfirmedRepos, settings: Settings) => Promise<void>;
|
|
22
|
+
export { IOnReserveTransactionConfirmedRepos, onReserveTransactionConfirmed, };
|
package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.onReserveTransactionConfirmed = onReserveTransactionConfirmed;
|
|
27
|
+
const isDeliverable_1 = require("./isDeliverable");
|
|
28
|
+
const processing2inTransit_1 = require("./processing2inTransit");
|
|
29
|
+
const factory = __importStar(require("../../../factory"));
|
|
30
|
+
function onReserveTransactionConfirmed(params) {
|
|
31
|
+
return async (repos, settings) => {
|
|
32
|
+
if (typeof params.useOnOrderStatusChanged !== 'boolean') {
|
|
33
|
+
throw new factory.errors.Argument('useOnOrderStatusChanged', 'must be boolean');
|
|
34
|
+
}
|
|
35
|
+
const orderNumber = params.purpose?.orderNumber;
|
|
36
|
+
const confirmationNumber = params.purpose?.confirmationNumber;
|
|
37
|
+
switch (params.object.typeOf) {
|
|
38
|
+
case factory.assetTransactionType.COAReserveTransaction:
|
|
39
|
+
if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
|
|
40
|
+
// 基本的に1注文に1予約番号なのでdeliverable = true
|
|
41
|
+
const deliverable = true;
|
|
42
|
+
if (deliverable) {
|
|
43
|
+
await (0, processing2inTransit_1.processing2inTransit)({
|
|
44
|
+
project: { id: params.project.id },
|
|
45
|
+
// confirmationNumber,
|
|
46
|
+
orderNumber,
|
|
47
|
+
useOnOrderStatusChanged: params.useOnOrderStatusChanged
|
|
48
|
+
})(repos, settings);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
case factory.assetTransactionType.Reserve:
|
|
53
|
+
if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
|
|
54
|
+
// ReserveTransactionのステータス検証
|
|
55
|
+
const deliverable = await (0, isDeliverable_1.isDeliverable)({
|
|
56
|
+
project: { id: params.project.id },
|
|
57
|
+
orderNumber,
|
|
58
|
+
assetTransactionType: params.object.typeOf
|
|
59
|
+
})(repos);
|
|
60
|
+
if (deliverable) {
|
|
61
|
+
await (0, processing2inTransit_1.processing2inTransit)({
|
|
62
|
+
project: { id: params.project.id },
|
|
63
|
+
// confirmationNumber,
|
|
64
|
+
orderNumber,
|
|
65
|
+
useOnOrderStatusChanged: params.useOnOrderStatusChanged
|
|
66
|
+
})(repos, settings);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
default:
|
|
71
|
+
// no op
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
@@ -4,6 +4,16 @@ import type { SettingRepo } from '../../../repo/setting';
|
|
|
4
4
|
import type { TaskRepo } from '../../../repo/task';
|
|
5
5
|
import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
|
|
6
6
|
import { Settings } from '../../../settings';
|
|
7
|
+
interface IPaymentDue2ProcessingRepos {
|
|
8
|
+
acceptedOffer: AcceptedOfferRepo;
|
|
9
|
+
order: OrderRepo;
|
|
10
|
+
setting: SettingRepo;
|
|
11
|
+
task: TaskRepo;
|
|
12
|
+
placeOrder: PlaceOrderRepo;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 全決済取引確定を完了した注文に関して、アイテムを処理する
|
|
16
|
+
*/
|
|
7
17
|
declare function paymentDue2Processing(params: {
|
|
8
18
|
project: {
|
|
9
19
|
id: string;
|
|
@@ -11,11 +21,5 @@ declare function paymentDue2Processing(params: {
|
|
|
11
21
|
confirmationNumber: string;
|
|
12
22
|
orderNumber: string;
|
|
13
23
|
useOnOrderStatusChanged: boolean;
|
|
14
|
-
}): (repos:
|
|
15
|
-
|
|
16
|
-
order: OrderRepo;
|
|
17
|
-
setting: SettingRepo;
|
|
18
|
-
task: TaskRepo;
|
|
19
|
-
placeOrder: PlaceOrderRepo;
|
|
20
|
-
}, settings: Settings) => Promise<void>;
|
|
21
|
-
export { paymentDue2Processing, };
|
|
24
|
+
}): (repos: IPaymentDue2ProcessingRepos, settings: Settings) => Promise<void>;
|
|
25
|
+
export { IPaymentDue2ProcessingRepos, paymentDue2Processing, };
|
|
@@ -32,6 +32,9 @@ const findPlaceOrderTransaction_1 = require("../findPlaceOrderTransaction");
|
|
|
32
32
|
const onOrderStatusChanged_1 = require("../onOrderStatusChanged");
|
|
33
33
|
const factory = __importStar(require("../../../factory"));
|
|
34
34
|
const debug = (0, debug_1.default)('chevre-domain:service:order');
|
|
35
|
+
/**
|
|
36
|
+
* 全決済取引確定を完了した注文に関して、アイテムを処理する
|
|
37
|
+
*/
|
|
35
38
|
function paymentDue2Processing(params) {
|
|
36
39
|
return async (repos, settings) => {
|
|
37
40
|
const placeOrderTransaction = await (0, findPlaceOrderTransaction_1.findPlaceOrderTransaction)({
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { OrderRepo } from '../../../repo/order';
|
|
2
|
+
import type { TaskRepo } from '../../../repo/task';
|
|
3
|
+
import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
|
|
4
|
+
import { Settings } from '../../../settings';
|
|
5
|
+
declare function processing2inTransit(params: {
|
|
6
|
+
project: {
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
9
|
+
orderNumber: string;
|
|
10
|
+
useOnOrderStatusChanged: boolean;
|
|
11
|
+
}): (repos: {
|
|
12
|
+
order: OrderRepo;
|
|
13
|
+
task: TaskRepo;
|
|
14
|
+
placeOrder: PlaceOrderRepo;
|
|
15
|
+
}, settings: Settings) => Promise<void>;
|
|
16
|
+
export { processing2inTransit };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.processing2inTransit = processing2inTransit;
|
|
27
|
+
const onOrderStatusChanged_1 = require("../onOrderStatusChanged");
|
|
28
|
+
const factory = __importStar(require("../../../factory"));
|
|
29
|
+
function processing2inTransit(params) {
|
|
30
|
+
return async (repos, settings) => {
|
|
31
|
+
// const existingOrder: Pick<factory.order.IOrder, 'project'> = await repos.order.projectFieldsByOrderNumber({
|
|
32
|
+
// orderNumber: params.orderNumber,
|
|
33
|
+
// project: { id: params.project.id },
|
|
34
|
+
// inclusion: ['project']
|
|
35
|
+
// });
|
|
36
|
+
let order;
|
|
37
|
+
try {
|
|
38
|
+
order = await repos.order.changeStatus({
|
|
39
|
+
project: { id: params.project.id },
|
|
40
|
+
orderNumber: params.orderNumber,
|
|
41
|
+
orderStatus: factory.orderStatus.OrderInTransit,
|
|
42
|
+
previousOrderStatus: factory.orderStatus.OrderProcessing
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
let throwsError = true;
|
|
47
|
+
// すでにステータスが進行していた場合、OrderProcessing->OrderInTransitの処理自体は成功しているので、後処理を続行する
|
|
48
|
+
order = await repos.order.projectFieldsByOrderNumber({
|
|
49
|
+
orderNumber: params.orderNumber,
|
|
50
|
+
project: { id: params.project.id },
|
|
51
|
+
inclusion: [
|
|
52
|
+
'orderNumber', 'broker', 'confirmationNumber', 'customer', 'dateReturned',
|
|
53
|
+
'name', 'orderDate', 'orderStatus', 'orderedItem', 'paymentMethods',
|
|
54
|
+
'previousOrderStatus', 'price', 'priceCurrency', 'project', 'returner', 'seller', 'typeOf'
|
|
55
|
+
] // explicit projection(2024-07-25~)
|
|
56
|
+
});
|
|
57
|
+
if (order.orderStatus === factory.orderStatus.OrderDelivered
|
|
58
|
+
|| order.orderStatus === factory.orderStatus.OrderReturned) {
|
|
59
|
+
throwsError = false;
|
|
60
|
+
}
|
|
61
|
+
if (throwsError) {
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (params.useOnOrderStatusChanged) {
|
|
66
|
+
await (0, onOrderStatusChanged_1.onOrderInTransit)({
|
|
67
|
+
order: {
|
|
68
|
+
...order,
|
|
69
|
+
orderStatus: factory.orderStatus.OrderInTransit
|
|
70
|
+
}
|
|
71
|
+
})(repos, settings);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
@@ -5,6 +5,7 @@ import type { SettingRepo } from '../../repo/setting';
|
|
|
5
5
|
import type { TaskRepo } from '../../repo/task';
|
|
6
6
|
import type { PlaceOrderRepo } from '../../repo/transaction/placeOrder';
|
|
7
7
|
import { paymentDue2Processing } from './onAssetTransactionStatusChanged/paymentDue2Processing';
|
|
8
|
+
import { processing2inTransit } from './onAssetTransactionStatusChanged/processing2inTransit';
|
|
8
9
|
import * as factory from '../../factory';
|
|
9
10
|
import { Settings } from '../../settings';
|
|
10
11
|
interface IOnAssetTransactionStatusChangedRepos {
|
|
@@ -16,15 +17,4 @@ interface IOnAssetTransactionStatusChangedRepos {
|
|
|
16
17
|
placeOrder: PlaceOrderRepo;
|
|
17
18
|
}
|
|
18
19
|
declare function onAssetTransactionStatusChanged(params: factory.task.IData<factory.taskName.OnAssetTransactionStatusChanged>): (repos: IOnAssetTransactionStatusChangedRepos, settings: Settings) => Promise<void>;
|
|
19
|
-
declare function processing2inTransit(params: {
|
|
20
|
-
project: {
|
|
21
|
-
id: string;
|
|
22
|
-
};
|
|
23
|
-
orderNumber: string;
|
|
24
|
-
useOnOrderStatusChanged: boolean;
|
|
25
|
-
}): (repos: {
|
|
26
|
-
order: OrderRepo;
|
|
27
|
-
task: TaskRepo;
|
|
28
|
-
placeOrder: PlaceOrderRepo;
|
|
29
|
-
}, settings: Settings) => Promise<void>;
|
|
30
20
|
export { IOnAssetTransactionStatusChangedRepos, onAssetTransactionStatusChanged, paymentDue2Processing, processing2inTransit };
|
|
@@ -22,20 +22,18 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.paymentDue2Processing = void 0;
|
|
26
|
+
exports.processing2inTransit = exports.paymentDue2Processing = void 0;
|
|
30
27
|
exports.onAssetTransactionStatusChanged = onAssetTransactionStatusChanged;
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
28
|
+
const isDeliverable_1 = require("./onAssetTransactionStatusChanged/isDeliverable");
|
|
29
|
+
const onPayTransactionCanceled_1 = require("./onAssetTransactionStatusChanged/onPayTransactionCanceled");
|
|
30
|
+
const onPayTransactionConfirmed_1 = require("./onAssetTransactionStatusChanged/onPayTransactionConfirmed");
|
|
31
|
+
const onReserveTransactionConfirmed_1 = require("./onAssetTransactionStatusChanged/onReserveTransactionConfirmed");
|
|
35
32
|
const paymentDue2Processing_1 = require("./onAssetTransactionStatusChanged/paymentDue2Processing");
|
|
36
33
|
Object.defineProperty(exports, "paymentDue2Processing", { enumerable: true, get: function () { return paymentDue2Processing_1.paymentDue2Processing; } });
|
|
34
|
+
const processing2inTransit_1 = require("./onAssetTransactionStatusChanged/processing2inTransit");
|
|
35
|
+
Object.defineProperty(exports, "processing2inTransit", { enumerable: true, get: function () { return processing2inTransit_1.processing2inTransit; } });
|
|
37
36
|
const factory = __importStar(require("../../factory"));
|
|
38
|
-
const debug = (0, debug_1.default)('chevre-domain:service:order');
|
|
39
37
|
function onAssetTransactionStatusChanged(params) {
|
|
40
38
|
return async (repos, settings) => {
|
|
41
39
|
if (typeof params.useOnOrderStatusChanged !== 'boolean') {
|
|
@@ -47,70 +45,41 @@ function onAssetTransactionStatusChanged(params) {
|
|
|
47
45
|
const confirmationNumber = params.purpose?.confirmationNumber;
|
|
48
46
|
switch (params.object.typeOf) {
|
|
49
47
|
case factory.assetTransactionType.Pay:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
paymentMethodId: params.object.transactionNumber,
|
|
56
|
-
paymentMethod: { identifier: specifiedPaymentMethodIdentifire },
|
|
57
|
-
referencesOrder: { orderNumber }
|
|
58
|
-
})(repos);
|
|
59
|
-
}
|
|
60
|
-
if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
|
|
61
|
-
// PayTransactionのステータス検証
|
|
62
|
-
const processable = await isProcessable({ project: { id: params.project.id }, orderNumber })(repos);
|
|
63
|
-
if (processable) {
|
|
64
|
-
await (0, paymentDue2Processing_1.paymentDue2Processing)({
|
|
65
|
-
project: { id: params.project.id },
|
|
66
|
-
confirmationNumber,
|
|
67
|
-
orderNumber,
|
|
68
|
-
useOnOrderStatusChanged: params.useOnOrderStatusChanged
|
|
69
|
-
})(repos, settings);
|
|
48
|
+
await (0, onPayTransactionConfirmed_1.onPayTransactionConfirmed)({
|
|
49
|
+
...params,
|
|
50
|
+
object: {
|
|
51
|
+
...params.object,
|
|
52
|
+
status: params.object.status
|
|
70
53
|
}
|
|
71
|
-
}
|
|
54
|
+
})(repos, settings);
|
|
72
55
|
break;
|
|
73
56
|
case factory.assetTransactionType.COAReserveTransaction:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
project: { id: params.project.id },
|
|
80
|
-
// confirmationNumber,
|
|
81
|
-
orderNumber,
|
|
82
|
-
useOnOrderStatusChanged: params.useOnOrderStatusChanged
|
|
83
|
-
})(repos, settings);
|
|
57
|
+
await (0, onReserveTransactionConfirmed_1.onReserveTransactionConfirmed)({
|
|
58
|
+
...params,
|
|
59
|
+
object: {
|
|
60
|
+
...params.object,
|
|
61
|
+
status: params.object.status
|
|
84
62
|
}
|
|
85
|
-
}
|
|
63
|
+
})(repos, settings);
|
|
86
64
|
break;
|
|
87
65
|
case factory.assetTransactionType.Reserve:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
assetTransactionType: params.object.typeOf
|
|
94
|
-
})(repos);
|
|
95
|
-
if (deliverable) {
|
|
96
|
-
await processing2inTransit({
|
|
97
|
-
project: { id: params.project.id },
|
|
98
|
-
// confirmationNumber,
|
|
99
|
-
orderNumber,
|
|
100
|
-
useOnOrderStatusChanged: params.useOnOrderStatusChanged
|
|
101
|
-
})(repos, settings);
|
|
66
|
+
await (0, onReserveTransactionConfirmed_1.onReserveTransactionConfirmed)({
|
|
67
|
+
...params,
|
|
68
|
+
object: {
|
|
69
|
+
...params.object,
|
|
70
|
+
status: params.object.status
|
|
102
71
|
}
|
|
103
|
-
}
|
|
72
|
+
})(repos, settings);
|
|
104
73
|
break;
|
|
105
74
|
case factory.assetTransactionType.MoneyTransfer:
|
|
106
75
|
if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
|
|
107
|
-
const deliverable = await isDeliverable({
|
|
76
|
+
const deliverable = await (0, isDeliverable_1.isDeliverable)({
|
|
108
77
|
project: { id: params.project.id },
|
|
109
78
|
orderNumber,
|
|
110
79
|
assetTransactionType: params.object.typeOf
|
|
111
80
|
})(repos);
|
|
112
81
|
if (deliverable) {
|
|
113
|
-
await processing2inTransit({
|
|
82
|
+
await (0, processing2inTransit_1.processing2inTransit)({
|
|
114
83
|
project: { id: params.project.id },
|
|
115
84
|
// confirmationNumber,
|
|
116
85
|
orderNumber,
|
|
@@ -121,13 +90,13 @@ function onAssetTransactionStatusChanged(params) {
|
|
|
121
90
|
break;
|
|
122
91
|
case factory.assetTransactionType.RegisterService:
|
|
123
92
|
if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
|
|
124
|
-
const deliverable = await isDeliverable({
|
|
93
|
+
const deliverable = await (0, isDeliverable_1.isDeliverable)({
|
|
125
94
|
project: { id: params.project.id },
|
|
126
95
|
orderNumber,
|
|
127
96
|
assetTransactionType: params.object.typeOf
|
|
128
97
|
})(repos);
|
|
129
98
|
if (deliverable) {
|
|
130
|
-
await processing2inTransit({
|
|
99
|
+
await (0, processing2inTransit_1.processing2inTransit)({
|
|
131
100
|
project: { id: params.project.id },
|
|
132
101
|
// confirmationNumber,
|
|
133
102
|
orderNumber,
|
|
@@ -144,11 +113,12 @@ function onAssetTransactionStatusChanged(params) {
|
|
|
144
113
|
case factory.transactionStatusType.Expired:
|
|
145
114
|
switch (params.object.typeOf) {
|
|
146
115
|
case factory.assetTransactionType.Pay:
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
116
|
+
await (0, onPayTransactionCanceled_1.onPayTransactionCanceled)({
|
|
117
|
+
...params,
|
|
118
|
+
object: {
|
|
119
|
+
...params.object,
|
|
120
|
+
status: params.object.status
|
|
121
|
+
}
|
|
152
122
|
})(repos);
|
|
153
123
|
break;
|
|
154
124
|
default:
|
|
@@ -160,209 +130,3 @@ function onAssetTransactionStatusChanged(params) {
|
|
|
160
130
|
}
|
|
161
131
|
};
|
|
162
132
|
}
|
|
163
|
-
function fixPaymentMethodIdentifierIfPossible(params) {
|
|
164
|
-
return async (repos) => {
|
|
165
|
-
const referencedPayTransactions = await repos.assetTransaction.search({
|
|
166
|
-
project: { id: { $eq: params.project.id } },
|
|
167
|
-
typeOf: factory.assetTransactionType.Pay,
|
|
168
|
-
statuses: [factory.transactionStatusType.Confirmed],
|
|
169
|
-
transactionNumber: { $in: [params.paymentMethodId] }
|
|
170
|
-
}, ['object']);
|
|
171
|
-
const referencedPayTransaction = referencedPayTransactions.shift();
|
|
172
|
-
if (referencedPayTransaction === undefined) {
|
|
173
|
-
throw new factory.errors.NotFound(factory.assetTransactionType.Pay);
|
|
174
|
-
}
|
|
175
|
-
// 対面決済かつ決済取引上の決済方法区分と一致すれば、注文を変更
|
|
176
|
-
if (referencedPayTransaction.object.typeOf === factory.service.paymentService.PaymentServiceType.FaceToFace
|
|
177
|
-
&& referencedPayTransaction.object.paymentMethod.identifier === params.paymentMethod.identifier) {
|
|
178
|
-
await repos.order.fixPaymentMethodIdentifier({
|
|
179
|
-
project: { id: params.project.id },
|
|
180
|
-
orderNumber: params.referencesOrder.orderNumber,
|
|
181
|
-
invoice: {
|
|
182
|
-
paymentMethodId: params.paymentMethodId,
|
|
183
|
-
paymentMethod: { identifier: params.paymentMethod.identifier }
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
function isProcessable(params) {
|
|
190
|
-
return async (repos) => {
|
|
191
|
-
// 注文のpaymentMethodIdを取得
|
|
192
|
-
const order = await repos.order.projectFieldsByOrderNumber({
|
|
193
|
-
orderNumber: params.orderNumber,
|
|
194
|
-
project: { id: params.project.id },
|
|
195
|
-
inclusion: ['paymentMethods']
|
|
196
|
-
});
|
|
197
|
-
// PayTransactionのステータス検証
|
|
198
|
-
let allPayTransactionConfirmed;
|
|
199
|
-
const paymentMethodIds = order.paymentMethods.filter((invoice) => typeof invoice.paymentMethodId === 'string' && invoice.paymentMethodId.length > 0)
|
|
200
|
-
.map((invoice) => invoice.paymentMethodId);
|
|
201
|
-
if (paymentMethodIds.length > 0) {
|
|
202
|
-
const referencedPayTransactions = await repos.assetTransaction.search({
|
|
203
|
-
project: { id: { $eq: params.project.id } },
|
|
204
|
-
typeOf: factory.assetTransactionType.Pay,
|
|
205
|
-
transactionNumber: { $in: paymentMethodIds }
|
|
206
|
-
}, ['status']);
|
|
207
|
-
allPayTransactionConfirmed =
|
|
208
|
-
referencedPayTransactions.every((payTransation) => payTransation.status === factory.transactionStatusType.Confirmed);
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
allPayTransactionConfirmed = true;
|
|
212
|
-
}
|
|
213
|
-
return allPayTransactionConfirmed;
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
function cancelOrderIfExist(params) {
|
|
217
|
-
return async (repos) => {
|
|
218
|
-
if (params.paymentMethodId.length === 0) {
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
// 注文のpaymentMethodIdを取得
|
|
222
|
-
const ordersByPaymentMethodId = await repos.order.projectFields({
|
|
223
|
-
limit: 1,
|
|
224
|
-
page: 1,
|
|
225
|
-
paymentMethods: {
|
|
226
|
-
paymentMethodIds: [params.paymentMethodId]
|
|
227
|
-
},
|
|
228
|
-
project: { id: { $eq: params.project.id } }
|
|
229
|
-
}, { inclusion: ['confirmationNumber', 'orderNumber'] });
|
|
230
|
-
const orderByPaymentMethodId = ordersByPaymentMethodId.shift();
|
|
231
|
-
if (orderByPaymentMethodId !== undefined) {
|
|
232
|
-
const placeOrderTransaction = await (0, findPlaceOrderTransaction_1.findPlaceOrderTransaction)({
|
|
233
|
-
project: { id: params.project.id },
|
|
234
|
-
confirmationNumber: orderByPaymentMethodId.confirmationNumber,
|
|
235
|
-
orderNumber: orderByPaymentMethodId.orderNumber
|
|
236
|
-
})(repos);
|
|
237
|
-
const order = await repos.order.changeStatus({
|
|
238
|
-
project: { id: params.project.id },
|
|
239
|
-
orderNumber: orderByPaymentMethodId.orderNumber,
|
|
240
|
-
orderStatus: factory.orderStatus.OrderCancelled,
|
|
241
|
-
previousOrderStatus: factory.orderStatus.OrderPaymentDue
|
|
242
|
-
});
|
|
243
|
-
if (params.useOnOrderStatusChanged) {
|
|
244
|
-
await (0, onOrderStatusChanged_1.onOrderCancelled)({
|
|
245
|
-
order: {
|
|
246
|
-
orderDate: order.orderDate,
|
|
247
|
-
orderNumber: order.orderNumber,
|
|
248
|
-
orderStatus: factory.orderStatus.OrderCancelled // 強制的にOrderCancelledとして処理する
|
|
249
|
-
},
|
|
250
|
-
placeOrderTransaction
|
|
251
|
-
})({
|
|
252
|
-
task: repos.task
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
function isDeliverable(params) {
|
|
259
|
-
return async (repos) => {
|
|
260
|
-
let allReserveTransactionConfirmed = false;
|
|
261
|
-
let allMoneyTransferTransactionConfirmed = false;
|
|
262
|
-
let allRegisterServiceTransactionConfirmed = false;
|
|
263
|
-
if (params.assetTransactionType === factory.assetTransactionType.Reserve) {
|
|
264
|
-
allMoneyTransferTransactionConfirmed = true;
|
|
265
|
-
allRegisterServiceTransactionConfirmed = true;
|
|
266
|
-
// 注文のreservationNumberを取得
|
|
267
|
-
const reservationNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.itemOffered.reservationNumber');
|
|
268
|
-
if (reservationNumbers.length > 0) {
|
|
269
|
-
const referencedReserveTransactions = await repos.assetTransaction.search({
|
|
270
|
-
project: { id: { $eq: params.project.id } },
|
|
271
|
-
typeOf: factory.assetTransactionType.Reserve,
|
|
272
|
-
transactionNumber: { $in: reservationNumbers }
|
|
273
|
-
}, ['status']);
|
|
274
|
-
allReserveTransactionConfirmed =
|
|
275
|
-
referencedReserveTransactions.length === reservationNumbers.length
|
|
276
|
-
&& referencedReserveTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
allReserveTransactionConfirmed = true;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
else if (params.assetTransactionType === factory.assetTransactionType.MoneyTransfer) {
|
|
283
|
-
allReserveTransactionConfirmed = true;
|
|
284
|
-
allRegisterServiceTransactionConfirmed = true;
|
|
285
|
-
// 注文のMoneyTransferTransaction.transactionNumberを取得
|
|
286
|
-
const moneyTransferTransactionNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.serialNumber');
|
|
287
|
-
if (moneyTransferTransactionNumbers.length > 0) {
|
|
288
|
-
debug('is deliverable?...', params.orderNumber, 'moneyTransferTransactionNumbers:', moneyTransferTransactionNumbers);
|
|
289
|
-
const referencedMoneyTransferTransactions = await repos.assetTransaction.search({
|
|
290
|
-
project: { id: { $eq: params.project.id } },
|
|
291
|
-
typeOf: factory.assetTransactionType.MoneyTransfer,
|
|
292
|
-
transactionNumber: { $in: moneyTransferTransactionNumbers }
|
|
293
|
-
}, ['status']);
|
|
294
|
-
allMoneyTransferTransactionConfirmed =
|
|
295
|
-
referencedMoneyTransferTransactions.length === moneyTransferTransactionNumbers.length
|
|
296
|
-
&& referencedMoneyTransferTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
allMoneyTransferTransactionConfirmed = true;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
else if (params.assetTransactionType === factory.assetTransactionType.RegisterService) {
|
|
303
|
-
allReserveTransactionConfirmed = true;
|
|
304
|
-
allMoneyTransferTransactionConfirmed = true;
|
|
305
|
-
const registerServiceTransactionNumbers = await repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.serialNumber');
|
|
306
|
-
if (registerServiceTransactionNumbers.length > 0) {
|
|
307
|
-
const referencedRegisterServiceTransactions = await repos.assetTransaction.search({
|
|
308
|
-
project: { id: { $eq: params.project.id } },
|
|
309
|
-
typeOf: factory.assetTransactionType.RegisterService,
|
|
310
|
-
transactionNumber: { $in: registerServiceTransactionNumbers }
|
|
311
|
-
}, ['status']);
|
|
312
|
-
allRegisterServiceTransactionConfirmed =
|
|
313
|
-
referencedRegisterServiceTransactions.length === registerServiceTransactionNumbers.length
|
|
314
|
-
&& referencedRegisterServiceTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
allRegisterServiceTransactionConfirmed = true;
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
return allReserveTransactionConfirmed && allMoneyTransferTransactionConfirmed && allRegisterServiceTransactionConfirmed;
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
function processing2inTransit(params) {
|
|
324
|
-
return async (repos, settings) => {
|
|
325
|
-
// const existingOrder: Pick<factory.order.IOrder, 'project'> = await repos.order.projectFieldsByOrderNumber({
|
|
326
|
-
// orderNumber: params.orderNumber,
|
|
327
|
-
// project: { id: params.project.id },
|
|
328
|
-
// inclusion: ['project']
|
|
329
|
-
// });
|
|
330
|
-
let order;
|
|
331
|
-
try {
|
|
332
|
-
order = await repos.order.changeStatus({
|
|
333
|
-
project: { id: params.project.id },
|
|
334
|
-
orderNumber: params.orderNumber,
|
|
335
|
-
orderStatus: factory.orderStatus.OrderInTransit,
|
|
336
|
-
previousOrderStatus: factory.orderStatus.OrderProcessing
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
catch (error) {
|
|
340
|
-
let throwsError = true;
|
|
341
|
-
// すでにステータスが進行していた場合、OrderProcessing->OrderInTransitの処理自体は成功しているので、後処理を続行する
|
|
342
|
-
order = await repos.order.projectFieldsByOrderNumber({
|
|
343
|
-
orderNumber: params.orderNumber,
|
|
344
|
-
project: { id: params.project.id },
|
|
345
|
-
inclusion: [
|
|
346
|
-
'orderNumber', 'broker', 'confirmationNumber', 'customer', 'dateReturned',
|
|
347
|
-
'name', 'orderDate', 'orderStatus', 'orderedItem', 'paymentMethods',
|
|
348
|
-
'previousOrderStatus', 'price', 'priceCurrency', 'project', 'returner', 'seller', 'typeOf'
|
|
349
|
-
] // explicit projection(2024-07-25~)
|
|
350
|
-
});
|
|
351
|
-
if (order.orderStatus === factory.orderStatus.OrderDelivered
|
|
352
|
-
|| order.orderStatus === factory.orderStatus.OrderReturned) {
|
|
353
|
-
throwsError = false;
|
|
354
|
-
}
|
|
355
|
-
if (throwsError) {
|
|
356
|
-
throw error;
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
if (params.useOnOrderStatusChanged) {
|
|
360
|
-
await (0, onOrderStatusChanged_1.onOrderInTransit)({
|
|
361
|
-
order: {
|
|
362
|
-
...order,
|
|
363
|
-
orderStatus: factory.orderStatus.OrderInTransit
|
|
364
|
-
}
|
|
365
|
-
})(repos, settings);
|
|
366
|
-
}
|
|
367
|
-
};
|
|
368
|
-
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import * as factory from '../../../factory';
|
|
2
2
|
import type { SettingRepo } from '../../../repo/setting';
|
|
3
3
|
import type { TaskRepo } from '../../../repo/task';
|
|
4
|
-
|
|
4
|
+
interface IOnOrderDeliveredRepos {
|
|
5
|
+
setting: SettingRepo;
|
|
6
|
+
task: TaskRepo;
|
|
7
|
+
}
|
|
5
8
|
declare function onOrderDelivered(params: {
|
|
6
9
|
order: Pick<factory.order.IOrder, 'id' | 'customer' | 'orderDate' | 'orderNumber' | 'project' | 'typeOf' | 'price' | 'priceCurrency'> & {
|
|
7
10
|
orderStatus: factory.orderStatus.OrderDelivered;
|
|
8
11
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
setting: SettingRepo;
|
|
12
|
-
task: TaskRepo;
|
|
13
|
-
}) => Promise<void>;
|
|
14
|
-
export { onOrderDelivered };
|
|
12
|
+
}): (repos: IOnOrderDeliveredRepos) => Promise<void>;
|
|
13
|
+
export { IOnOrderDeliveredRepos, onOrderDelivered };
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { SettingRepo } from '../../../repo/setting';
|
|
2
2
|
import type { TaskRepo } from '../../../repo/task';
|
|
3
3
|
import { IInTransitOrder } from './onOrderDeliveredPartially/factory';
|
|
4
|
-
|
|
5
|
-
order: IInTransitOrder;
|
|
6
|
-
}): (repos: {
|
|
4
|
+
interface IOnOrderDeliveredPartiallyRepos {
|
|
7
5
|
setting: SettingRepo;
|
|
8
6
|
task: TaskRepo;
|
|
9
|
-
}
|
|
10
|
-
|
|
7
|
+
}
|
|
8
|
+
declare function onOrderDeliveredPartially(params: {
|
|
9
|
+
order: IInTransitOrder;
|
|
10
|
+
}): (repos: IOnOrderDeliveredPartiallyRepos) => Promise<void>;
|
|
11
|
+
export { IOnOrderDeliveredPartiallyRepos, onOrderDeliveredPartially };
|
|
@@ -2,12 +2,13 @@ import type { TaskRepo } from '../../../repo/task';
|
|
|
2
2
|
import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
|
|
3
3
|
import * as factory from '../../../factory';
|
|
4
4
|
import { Settings } from '../../../settings';
|
|
5
|
+
interface IOnOrderInTransitRepos {
|
|
6
|
+
task: TaskRepo;
|
|
7
|
+
placeOrder: PlaceOrderRepo;
|
|
8
|
+
}
|
|
5
9
|
declare function onOrderInTransit(params: {
|
|
6
10
|
order: Pick<factory.order.IOrder, 'id' | 'orderNumber' | 'broker' | 'confirmationNumber' | 'customer' | 'dateReturned' | 'name' | 'orderDate' | 'orderedItem' | 'paymentMethods' | 'previousOrderStatus' | 'price' | 'priceCurrency' | 'project' | 'returner' | 'seller' | 'typeOf'> & {
|
|
7
11
|
orderStatus: factory.orderStatus.OrderInTransit;
|
|
8
12
|
};
|
|
9
|
-
}): (repos:
|
|
10
|
-
|
|
11
|
-
placeOrder: PlaceOrderRepo;
|
|
12
|
-
}, settings: Settings) => Promise<void>;
|
|
13
|
-
export { onOrderInTransit };
|
|
13
|
+
}): (repos: IOnOrderInTransitRepos, settings: Settings) => Promise<void>;
|
|
14
|
+
export { IOnOrderInTransitRepos, onOrderInTransit };
|
|
@@ -6,8 +6,7 @@ import type { SettingRepo } from '../../repo/setting';
|
|
|
6
6
|
import type { TaskRepo } from '../../repo/task';
|
|
7
7
|
import type { PlaceOrderRepo } from '../../repo/transaction/placeOrder';
|
|
8
8
|
import * as factory from '../../factory';
|
|
9
|
-
|
|
10
|
-
type ISendOperation<T> = (repos: {
|
|
9
|
+
interface ISendOrderRepos {
|
|
11
10
|
acceptedOffer: AcceptedOfferRepo;
|
|
12
11
|
action: ActionRepo;
|
|
13
12
|
order: OrderRepo;
|
|
@@ -15,7 +14,8 @@ type ISendOperation<T> = (repos: {
|
|
|
15
14
|
setting: SettingRepo;
|
|
16
15
|
task: TaskRepo;
|
|
17
16
|
placeOrder: PlaceOrderRepo;
|
|
18
|
-
}
|
|
17
|
+
}
|
|
18
|
+
type ISendOperation<T> = (repos: ISendOrderRepos) => Promise<T>;
|
|
19
19
|
/**
|
|
20
20
|
* 注文を配送する
|
|
21
21
|
*/
|
|
@@ -35,4 +35,4 @@ declare function sendOrder(params: {
|
|
|
35
35
|
};
|
|
36
36
|
useOnOrderStatusChanged: boolean;
|
|
37
37
|
}): ISendOperation<void>;
|
|
38
|
-
export { sendOrder };
|
|
38
|
+
export { ISendOrderRepos, sendOrder };
|
|
@@ -30,9 +30,10 @@ exports.sendOrder = sendOrder;
|
|
|
30
30
|
const debug_1 = __importDefault(require("debug"));
|
|
31
31
|
// import { createMaskedCustomer } from '../../factory/order';
|
|
32
32
|
const factory_1 = require("../delivery/factory");
|
|
33
|
-
|
|
33
|
+
// import { findPlaceOrderTransaction } from './findPlaceOrderTransaction';
|
|
34
34
|
const onOrderStatusChanged_1 = require("./onOrderStatusChanged");
|
|
35
35
|
const factory = __importStar(require("../../factory"));
|
|
36
|
+
// import { Settings } from '../../settings';
|
|
36
37
|
const debug = (0, debug_1.default)('chevre-domain:service:order');
|
|
37
38
|
/**
|
|
38
39
|
* 注文を配送する
|
|
@@ -59,11 +60,11 @@ function sendOrder(params) {
|
|
|
59
60
|
try {
|
|
60
61
|
const orderNumber = params.object.orderNumber;
|
|
61
62
|
const confirmationNumber = params.object.confirmationNumber;
|
|
62
|
-
const placeOrderTransaction = await
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
})(repos);
|
|
63
|
+
// const placeOrderTransaction = await findPlaceOrderTransaction({
|
|
64
|
+
// project: { id: params.project.id },
|
|
65
|
+
// confirmationNumber,
|
|
66
|
+
// orderNumber
|
|
67
|
+
// })(repos);
|
|
67
68
|
// 注文取得
|
|
68
69
|
let order = await repos.order.projectFieldsByOrderNumber({
|
|
69
70
|
orderNumber,
|
|
@@ -127,6 +128,7 @@ function sendOrder(params) {
|
|
|
127
128
|
});
|
|
128
129
|
acceptedOffers = searchSlicedAcceptedOffersResult.acceptedOffers;
|
|
129
130
|
debug('delivering...', order.orderNumber, acceptedOffers.map((offer) => `${offer.itemOffered.id}`), params.object.acceptedOffers, 'offerIndexBase:', offerIndexBase);
|
|
131
|
+
console.log('createOwnerships:', createOwnerships);
|
|
130
132
|
// 所有権作成
|
|
131
133
|
if (createOwnerships) {
|
|
132
134
|
creatingOwnershipInfos = (0, factory_1.createOwnershipInfosFromOrder)({
|
|
@@ -180,8 +182,8 @@ function sendOrder(params) {
|
|
|
180
182
|
orderStatus: factory.orderStatus.OrderDelivered,
|
|
181
183
|
price: order.price,
|
|
182
184
|
priceCurrency: order.priceCurrency
|
|
183
|
-
}
|
|
184
|
-
placeOrderTransaction
|
|
185
|
+
}
|
|
186
|
+
// placeOrderTransaction
|
|
185
187
|
})(repos);
|
|
186
188
|
}
|
|
187
189
|
else {
|
|
@@ -5,9 +5,13 @@ import * as factory from '../../../factory';
|
|
|
5
5
|
import type { AccountingReportRepo } from '../../../repo/accountingReport';
|
|
6
6
|
import type { ActionRepo } from '../../../repo/action';
|
|
7
7
|
import type { TaskRepo } from '../../../repo/task';
|
|
8
|
-
|
|
8
|
+
interface IOnPayActionCompletedRepos {
|
|
9
9
|
action: ActionRepo;
|
|
10
10
|
accountingReport: AccountingReportRepo;
|
|
11
11
|
task: TaskRepo;
|
|
12
|
-
}
|
|
13
|
-
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 決済アクション完了時処理
|
|
15
|
+
*/
|
|
16
|
+
declare function onPayActionCompleted(payAction: Pick<factory.action.trade.pay.IAction, 'id' | 'object' | 'potentialActions' | 'project' | 'purpose' | 'typeOf'>): (repos: IOnPayActionCompletedRepos) => Promise<void>;
|
|
17
|
+
export { IOnPayActionCompletedRepos, onPayActionCompleted };
|
|
@@ -30,6 +30,9 @@ exports.onPayActionCompleted = onPayActionCompleted;
|
|
|
30
30
|
const factory = __importStar(require("../../../factory"));
|
|
31
31
|
const factory_1 = require("./factory");
|
|
32
32
|
const onPaymentStatusChanged_1 = require("./onPaymentStatusChanged");
|
|
33
|
+
/**
|
|
34
|
+
* 決済アクション完了時処理
|
|
35
|
+
*/
|
|
33
36
|
function onPayActionCompleted(payAction) {
|
|
34
37
|
return async (repos) => {
|
|
35
38
|
const aciton4inform = (0, factory_1.optimizeAction4inform)(payAction);
|
|
@@ -37,7 +37,7 @@ const sendOrder_1 = require("../order/sendOrder");
|
|
|
37
37
|
* タスク実行関数
|
|
38
38
|
*/
|
|
39
39
|
function call(data) {
|
|
40
|
-
return async ({ connection
|
|
40
|
+
return async ({ connection }) => {
|
|
41
41
|
await (0, sendOrder_1.sendOrder)({
|
|
42
42
|
...data,
|
|
43
43
|
object: {
|
|
@@ -58,6 +58,6 @@ function call(data) {
|
|
|
58
58
|
setting: new setting_1.SettingRepo(connection),
|
|
59
59
|
task: new task_1.TaskRepo(connection),
|
|
60
60
|
placeOrder: new placeOrder_1.PlaceOrderRepo(connection)
|
|
61
|
-
}
|
|
61
|
+
});
|
|
62
62
|
};
|
|
63
63
|
}
|
package/package.json
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@aws-sdk/client-cognito-identity-provider": "3.600.0",
|
|
13
13
|
"@aws-sdk/credential-providers": "3.600.0",
|
|
14
|
-
"@chevre/factory": "5.4.0-alpha.
|
|
15
|
-
"@cinerino/sdk": "13.
|
|
14
|
+
"@chevre/factory": "5.4.0-alpha.32",
|
|
15
|
+
"@cinerino/sdk": "13.1.0",
|
|
16
16
|
"@motionpicture/coa-service": "9.6.0",
|
|
17
17
|
"@motionpicture/gmo-service": "5.4.0-alpha.1",
|
|
18
18
|
"@sendgrid/client": "8.1.4",
|
|
@@ -99,5 +99,5 @@
|
|
|
99
99
|
"postversion": "git push origin --tags",
|
|
100
100
|
"prepublishOnly": "npm run clean && npm run build"
|
|
101
101
|
},
|
|
102
|
-
"version": "24.0.0-alpha.
|
|
102
|
+
"version": "24.0.0-alpha.14"
|
|
103
103
|
}
|