@chevre/domain 21.2.0-alpha.52 → 21.2.0-alpha.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/chevre/service/order/deleteOrder.js +0 -7
- package/lib/chevre/service/task/deleteTransaction.js +10 -8
- package/lib/chevre/service/transaction/deleteTransaction.d.ts +21 -0
- package/lib/chevre/service/transaction/deleteTransaction.js +202 -0
- package/lib/chevre/service/transaction.d.ts +2 -13
- package/lib/chevre/service/transaction.js +3 -184
- package/lib/chevre/settings.js +4 -1
- package/package.json +1 -1
|
@@ -70,13 +70,6 @@ function deleteOwnershipInfosByOrder(order) {
|
|
|
70
70
|
// 所有期限切れのもの(ownedThroughの存在しないものは削除してはいけない)
|
|
71
71
|
ownedThrough: { $lt: now }
|
|
72
72
|
});
|
|
73
|
-
// await repos.ownershipInfo.ownershipInfoModel.deleteMany({
|
|
74
|
-
// 'project.id': { $eq: order.project.id },
|
|
75
|
-
// identifier: { $in: ownershipIdentifiers },
|
|
76
|
-
// // 所有期限切れのもの(ownedThroughの存在しないものは削除してはいけない)
|
|
77
|
-
// ownedThrough: { $exists: true, $lt: now }
|
|
78
|
-
// })
|
|
79
|
-
// .exec();
|
|
80
73
|
}
|
|
81
74
|
});
|
|
82
75
|
}
|
|
@@ -10,8 +10,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.call = void 0;
|
|
13
|
+
const accountingReport_1 = require("../../repo/accountingReport");
|
|
13
14
|
const action_1 = require("../../repo/action");
|
|
14
15
|
const assetTransaction_1 = require("../../repo/assetTransaction");
|
|
16
|
+
const order_1 = require("../../repo/order");
|
|
17
|
+
const ownershipInfo_1 = require("../../repo/ownershipInfo");
|
|
15
18
|
const reservation_1 = require("../../repo/reservation");
|
|
16
19
|
const transaction_1 = require("../../repo/transaction");
|
|
17
20
|
const TransactionService = require("../transaction");
|
|
@@ -20,15 +23,14 @@ const TransactionService = require("../transaction");
|
|
|
20
23
|
*/
|
|
21
24
|
function call(data) {
|
|
22
25
|
return (settings) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
const actionRepo = new action_1.MongoRepository(settings.connection);
|
|
24
|
-
const assetTransactionRepo = new assetTransaction_1.MongoRepository(settings.connection);
|
|
25
|
-
const reservationRepo = new reservation_1.MongoRepository(settings.connection);
|
|
26
|
-
const transactionRepo = new transaction_1.MongoRepository(settings.connection);
|
|
27
26
|
yield TransactionService.deleteTransaction(data)({
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
accountingReport: new accountingReport_1.MongoRepository(settings.connection),
|
|
28
|
+
action: new action_1.MongoRepository(settings.connection),
|
|
29
|
+
assetTransaction: new assetTransaction_1.MongoRepository(settings.connection),
|
|
30
|
+
order: new order_1.MongoRepository(settings.connection),
|
|
31
|
+
ownershipInfo: new ownershipInfo_1.MongoRepository(settings.connection),
|
|
32
|
+
reservation: new reservation_1.MongoRepository(settings.connection),
|
|
33
|
+
transaction: new transaction_1.MongoRepository(settings.connection)
|
|
32
34
|
});
|
|
33
35
|
});
|
|
34
36
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as factory from '../../factory';
|
|
2
|
+
import { MongoRepository as AccountingReportRepo } from '../../repo/accountingReport';
|
|
3
|
+
import { MongoRepository as ActionRepo } from '../../repo/action';
|
|
4
|
+
import { MongoRepository as AssetTransactionRepo } from '../../repo/assetTransaction';
|
|
5
|
+
import { MongoRepository as OrderRepo } from '../../repo/order';
|
|
6
|
+
import { MongoRepository as OwnershipInfoRepo } from '../../repo/ownershipInfo';
|
|
7
|
+
import { MongoRepository as ReservationRepo } from '../../repo/reservation';
|
|
8
|
+
import { MongoRepository as TransactionRepo } from '../../repo/transaction';
|
|
9
|
+
/**
|
|
10
|
+
* 取引に関わるリソースを削除する
|
|
11
|
+
* 冪等性を確保すること
|
|
12
|
+
*/
|
|
13
|
+
export declare function deleteTransaction(params: factory.task.IData<factory.taskName.DeleteTransaction>): (repos: {
|
|
14
|
+
accountingReport: AccountingReportRepo;
|
|
15
|
+
action: ActionRepo;
|
|
16
|
+
assetTransaction: AssetTransactionRepo;
|
|
17
|
+
order: OrderRepo;
|
|
18
|
+
ownershipInfo: OwnershipInfoRepo;
|
|
19
|
+
reservation: ReservationRepo;
|
|
20
|
+
transaction: TransactionRepo;
|
|
21
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,202 @@
|
|
|
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.deleteTransaction = void 0;
|
|
13
|
+
const factory = require("../../factory");
|
|
14
|
+
const deleteOrder_1 = require("../order/deleteOrder");
|
|
15
|
+
/**
|
|
16
|
+
* 取引に関わるリソースを削除する
|
|
17
|
+
* 冪等性を確保すること
|
|
18
|
+
*/
|
|
19
|
+
function deleteTransaction(params) {
|
|
20
|
+
// tslint:disable-next-line:max-func-body-length
|
|
21
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
var _a;
|
|
23
|
+
const transactions = yield repos.transaction.search({
|
|
24
|
+
ids: [params.object.id],
|
|
25
|
+
typeOf: params.object.typeOf,
|
|
26
|
+
inclusion: [],
|
|
27
|
+
exclusion: []
|
|
28
|
+
});
|
|
29
|
+
const transaction = transactions.shift();
|
|
30
|
+
if (transaction === undefined) {
|
|
31
|
+
// すでに削除済
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// DeleteTransactionアクションを作成(logとしての意味合いも含めて)
|
|
35
|
+
const actionAttributes = {
|
|
36
|
+
typeOf: factory.actionType.DeleteAction,
|
|
37
|
+
project: transaction.project,
|
|
38
|
+
object: params.object,
|
|
39
|
+
agent: transaction.project
|
|
40
|
+
};
|
|
41
|
+
let deletePayTransactionResult;
|
|
42
|
+
let payTransactionNumbers = [];
|
|
43
|
+
let deleteReservationsResult;
|
|
44
|
+
let deleteReserveTransactionResult;
|
|
45
|
+
let deletedReservationNumbers = [];
|
|
46
|
+
const action = yield repos.action.start(actionAttributes);
|
|
47
|
+
try {
|
|
48
|
+
const transactionTypeOf = transaction.typeOf;
|
|
49
|
+
switch (transactionTypeOf) {
|
|
50
|
+
case factory.transactionType.PlaceOrder:
|
|
51
|
+
switch (transaction.status) {
|
|
52
|
+
// 中止あるいは期限切れ取引の場合
|
|
53
|
+
case factory.transactionStatusType.Canceled:
|
|
54
|
+
case factory.transactionStatusType.Expired:
|
|
55
|
+
// tslint:disable-next-line:no-suspicious-comment
|
|
56
|
+
// TODO サービス登録取引を削除
|
|
57
|
+
// 決済取引を削除
|
|
58
|
+
const deletePayTransactionsByPlaceOrderResult = yield deletePayTransactionsByPlaceOrder({ transaction })(repos);
|
|
59
|
+
deletePayTransactionResult = deletePayTransactionsByPlaceOrderResult.deletePayTransactionResult;
|
|
60
|
+
payTransactionNumbers = deletePayTransactionsByPlaceOrderResult.payTransactionNumbers;
|
|
61
|
+
// 取引上での予約を削除
|
|
62
|
+
const deleteReservationsByPlaceOrderResult = yield deleteReservationsByPlaceOrder({ transaction })(repos);
|
|
63
|
+
deleteReservationsResult = deleteReservationsByPlaceOrderResult.deleteResult;
|
|
64
|
+
deleteReserveTransactionResult = deleteReservationsByPlaceOrderResult.deleteReserveTransactionResult;
|
|
65
|
+
deletedReservationNumbers = deleteReservationsByPlaceOrderResult.reserveTransactionNumbers;
|
|
66
|
+
break;
|
|
67
|
+
case factory.transactionStatusType.Confirmed:
|
|
68
|
+
const deletingOrder = (_a = transaction.result) === null || _a === void 0 ? void 0 : _a.order;
|
|
69
|
+
if (typeof (deletingOrder === null || deletingOrder === void 0 ? void 0 : deletingOrder.orderNumber) === 'string') {
|
|
70
|
+
yield (0, deleteOrder_1.deleteOrder)({
|
|
71
|
+
object: deletingOrder
|
|
72
|
+
})(repos);
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
default:
|
|
76
|
+
}
|
|
77
|
+
// 取引削除
|
|
78
|
+
yield repos.transaction.findByIdAndDelete({ id: transaction.id });
|
|
79
|
+
break;
|
|
80
|
+
// implemented(2022-06-09~)
|
|
81
|
+
case factory.transactionType.ReturnOrder:
|
|
82
|
+
// 取引削除
|
|
83
|
+
yield repos.transaction.findByIdAndDelete({ id: transaction.id });
|
|
84
|
+
break;
|
|
85
|
+
// implemented(2022-06-09~)
|
|
86
|
+
case factory.transactionType.MoneyTransfer:
|
|
87
|
+
// 取引削除
|
|
88
|
+
yield repos.transaction.findByIdAndDelete({ id: transaction.id });
|
|
89
|
+
break;
|
|
90
|
+
default:
|
|
91
|
+
throw new factory.errors.NotImplemented(`${transactionTypeOf} not implemented`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
// actionにエラー結果を追加
|
|
96
|
+
try {
|
|
97
|
+
const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
|
|
98
|
+
yield repos.action.giveUp({ typeOf: action.typeOf, id: action.id, error: actionError });
|
|
99
|
+
}
|
|
100
|
+
catch (__) {
|
|
101
|
+
// 失敗したら仕方ない
|
|
102
|
+
}
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
// アクション完了
|
|
106
|
+
const actionResult = {
|
|
107
|
+
deletePayTransactionResult,
|
|
108
|
+
payTransactionNumbers,
|
|
109
|
+
deleteReservationsResult,
|
|
110
|
+
deleteReserveTransactionResult,
|
|
111
|
+
deletedReservationNumbers
|
|
112
|
+
};
|
|
113
|
+
yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: actionResult });
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
exports.deleteTransaction = deleteTransaction;
|
|
117
|
+
function deleteReservationsByPlaceOrder(params) {
|
|
118
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
let deleteResult;
|
|
120
|
+
let deleteReserveTransactionResult;
|
|
121
|
+
// 取引に対する全ての承認アクションを検索
|
|
122
|
+
const authorizeActions = yield repos.action.searchByPurpose({
|
|
123
|
+
typeOf: factory.actionType.AuthorizeAction,
|
|
124
|
+
purpose: {
|
|
125
|
+
typeOf: factory.transactionType.PlaceOrder,
|
|
126
|
+
id: params.transaction.id
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
// 予約取引番号を抽出
|
|
130
|
+
const authorizeReservationOfferActions = authorizeActions
|
|
131
|
+
.filter((a) => {
|
|
132
|
+
var _a, _b;
|
|
133
|
+
const pendingTransactionNumber = (_b = (_a = a.object) === null || _a === void 0 ? void 0 : _a.pendingTransaction) === null || _b === void 0 ? void 0 : _b.transactionNumber;
|
|
134
|
+
return a.object.typeOf === factory.action.authorize.offer.seatReservation.ObjectType.SeatReservation
|
|
135
|
+
&& typeof pendingTransactionNumber === 'string'
|
|
136
|
+
&& pendingTransactionNumber.length > 0;
|
|
137
|
+
});
|
|
138
|
+
const reserveTransactionNumbers = authorizeReservationOfferActions
|
|
139
|
+
.map((a) => { var _a; return String((_a = a.object.pendingTransaction) === null || _a === void 0 ? void 0 : _a.transactionNumber); });
|
|
140
|
+
if (reserveTransactionNumbers.length > 0) {
|
|
141
|
+
// 該当予約番号の予約を削除する(プロジェクトでも絞ること)
|
|
142
|
+
const deleteReservationsResult = yield repos.reservation.deleteByReservationNumbers({
|
|
143
|
+
project: { id: params.transaction.project.id },
|
|
144
|
+
reservationNumbers: reserveTransactionNumbers
|
|
145
|
+
});
|
|
146
|
+
deleteResult = {
|
|
147
|
+
n: deleteReservationsResult === null || deleteReservationsResult === void 0 ? void 0 : deleteReservationsResult.n,
|
|
148
|
+
ok: deleteReservationsResult === null || deleteReservationsResult === void 0 ? void 0 : deleteReservationsResult.ok,
|
|
149
|
+
deletedCount: deleteReservationsResult === null || deleteReservationsResult === void 0 ? void 0 : deleteReservationsResult.deletedCount
|
|
150
|
+
};
|
|
151
|
+
// 予約取引を削除(プロジェクトでも絞ること)(2022-06-07~)
|
|
152
|
+
const deleteAssetTransactionsResult = yield repos.assetTransaction.deleteByTransactionNumber({
|
|
153
|
+
project: { id: params.transaction.project.id },
|
|
154
|
+
transactionNumbers: reserveTransactionNumbers,
|
|
155
|
+
typeOf: factory.assetTransactionType.Reserve
|
|
156
|
+
});
|
|
157
|
+
deleteReserveTransactionResult = {
|
|
158
|
+
n: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.n,
|
|
159
|
+
ok: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.ok,
|
|
160
|
+
deletedCount: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.deletedCount
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return { deleteResult, deleteReserveTransactionResult, reserveTransactionNumbers };
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function deletePayTransactionsByPlaceOrder(params) {
|
|
167
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
168
|
+
let deletePayTransactionResult;
|
|
169
|
+
// 取引に対する全ての承認アクションを検索
|
|
170
|
+
const authorizeActions = yield repos.action.searchByPurpose({
|
|
171
|
+
typeOf: factory.actionType.AuthorizeAction,
|
|
172
|
+
purpose: {
|
|
173
|
+
typeOf: factory.transactionType.PlaceOrder,
|
|
174
|
+
id: params.transaction.id
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
// 決済取引番号を抽出
|
|
178
|
+
const authorizePaymentActions = authorizeActions
|
|
179
|
+
.filter((a) => {
|
|
180
|
+
var _a;
|
|
181
|
+
const pendingTransactionNumber = (_a = a.object) === null || _a === void 0 ? void 0 : _a.paymentMethodId;
|
|
182
|
+
return a.object.typeOf === factory.action.authorize.paymentMethod.any.ResultType.Payment
|
|
183
|
+
&& typeof pendingTransactionNumber === 'string'
|
|
184
|
+
&& pendingTransactionNumber.length > 0;
|
|
185
|
+
});
|
|
186
|
+
const payTransactionNumbers = authorizePaymentActions.map((a) => String(a.object.paymentMethodId));
|
|
187
|
+
if (payTransactionNumbers.length > 0) {
|
|
188
|
+
// 決済取引を削除(プロジェクトでも絞ること)(2022-06-07~)
|
|
189
|
+
const deleteAssetTransactionsResult = yield repos.assetTransaction.deleteByTransactionNumber({
|
|
190
|
+
project: { id: params.transaction.project.id },
|
|
191
|
+
transactionNumbers: payTransactionNumbers,
|
|
192
|
+
typeOf: factory.assetTransactionType.Pay
|
|
193
|
+
});
|
|
194
|
+
deletePayTransactionResult = {
|
|
195
|
+
n: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.n,
|
|
196
|
+
ok: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.ok,
|
|
197
|
+
deletedCount: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.deletedCount
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return { deletePayTransactionResult, payTransactionNumbers };
|
|
201
|
+
});
|
|
202
|
+
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import * as factory from '../factory';
|
|
2
|
-
import { MongoRepository as ActionRepo } from '../repo/action';
|
|
3
|
-
import { MongoRepository as AssetTransactionRepo } from '../repo/assetTransaction';
|
|
4
|
-
import { MongoRepository as ReservationRepo } from '../repo/reservation';
|
|
5
2
|
import { MongoRepository as TaskRepo } from '../repo/task';
|
|
6
3
|
import { MongoRepository as TransactionRepo } from '../repo/transaction';
|
|
4
|
+
import { deleteTransaction } from './transaction/deleteTransaction';
|
|
7
5
|
import * as MoneyTransferTransactionService from './transaction/moneyTransfer';
|
|
8
6
|
import * as PlaceOrderTransactionService from './transaction/placeOrder';
|
|
9
7
|
import * as PlaceOrderInProgressTransactionService from './transaction/placeOrderInProgress';
|
|
@@ -15,6 +13,7 @@ export import moneyTransfer = MoneyTransferTransactionService;
|
|
|
15
13
|
export import placeOrder = PlaceOrderTransactionService;
|
|
16
14
|
export import placeOrderInProgress = PlaceOrderInProgressTransactionService;
|
|
17
15
|
export import returnOrder = ReturnOrderTransactionService;
|
|
16
|
+
export { deleteTransaction };
|
|
18
17
|
/**
|
|
19
18
|
* 取引人プロフィール更新
|
|
20
19
|
*/
|
|
@@ -52,13 +51,3 @@ export declare function exportTasks<T extends factory.transactionType>(params: {
|
|
|
52
51
|
};
|
|
53
52
|
};
|
|
54
53
|
}): IExportTasksOperation<void>;
|
|
55
|
-
/**
|
|
56
|
-
* 取引に関わるリソースを削除する
|
|
57
|
-
* 冪等性を確保すること
|
|
58
|
-
*/
|
|
59
|
-
export declare function deleteTransaction(params: factory.task.IData<factory.taskName.DeleteTransaction>): (repos: {
|
|
60
|
-
action: ActionRepo;
|
|
61
|
-
assetTransaction: AssetTransactionRepo;
|
|
62
|
-
reservation: ReservationRepo;
|
|
63
|
-
transaction: TransactionRepo;
|
|
64
|
-
}) => Promise<void>;
|
|
@@ -9,12 +9,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.exportTasks = exports.updateAgent = exports.deleteTransaction = exports.returnOrder = exports.placeOrderInProgress = exports.placeOrder = exports.moneyTransfer = void 0;
|
|
13
13
|
/**
|
|
14
14
|
* 取引サービス
|
|
15
15
|
*/
|
|
16
16
|
const google_libphonenumber_1 = require("google-libphonenumber");
|
|
17
17
|
const factory = require("../factory");
|
|
18
|
+
const deleteTransaction_1 = require("./transaction/deleteTransaction");
|
|
19
|
+
Object.defineProperty(exports, "deleteTransaction", { enumerable: true, get: function () { return deleteTransaction_1.deleteTransaction; } });
|
|
18
20
|
const MoneyTransferTransactionService = require("./transaction/moneyTransfer");
|
|
19
21
|
const PlaceOrderTransactionService = require("./transaction/placeOrder");
|
|
20
22
|
const PlaceOrderInProgressTransactionService = require("./transaction/placeOrderInProgress");
|
|
@@ -115,186 +117,3 @@ function exportTasks(params) {
|
|
|
115
117
|
});
|
|
116
118
|
}
|
|
117
119
|
exports.exportTasks = exportTasks;
|
|
118
|
-
/**
|
|
119
|
-
* 取引に関わるリソースを削除する
|
|
120
|
-
* 冪等性を確保すること
|
|
121
|
-
*/
|
|
122
|
-
// tslint:disable-next-line:max-func-body-length
|
|
123
|
-
function deleteTransaction(params) {
|
|
124
|
-
// tslint:disable-next-line:max-func-body-length
|
|
125
|
-
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
126
|
-
const transactions = yield repos.transaction.search({
|
|
127
|
-
ids: [params.object.id],
|
|
128
|
-
typeOf: params.object.typeOf,
|
|
129
|
-
inclusion: [],
|
|
130
|
-
exclusion: []
|
|
131
|
-
});
|
|
132
|
-
const transaction = transactions.shift();
|
|
133
|
-
if (transaction === undefined) {
|
|
134
|
-
// すでに削除済
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
// DeleteTransactionアクションを作成(logとしての意味合いも含めて)
|
|
138
|
-
const actionAttributes = {
|
|
139
|
-
typeOf: factory.actionType.DeleteAction,
|
|
140
|
-
project: transaction.project,
|
|
141
|
-
object: params.object,
|
|
142
|
-
agent: transaction.project
|
|
143
|
-
};
|
|
144
|
-
let deletePayTransactionResult;
|
|
145
|
-
let payTransactionNumbers = [];
|
|
146
|
-
let deleteReservationsResult;
|
|
147
|
-
let deleteReserveTransactionResult;
|
|
148
|
-
let deletedReservationNumbers = [];
|
|
149
|
-
const action = yield repos.action.start(actionAttributes);
|
|
150
|
-
try {
|
|
151
|
-
const transactionTypeOf = transaction.typeOf;
|
|
152
|
-
switch (transactionTypeOf) {
|
|
153
|
-
case factory.transactionType.PlaceOrder:
|
|
154
|
-
switch (transaction.status) {
|
|
155
|
-
// 中止あるいは期限切れ取引の場合
|
|
156
|
-
case factory.transactionStatusType.Canceled:
|
|
157
|
-
case factory.transactionStatusType.Expired:
|
|
158
|
-
// tslint:disable-next-line:no-suspicious-comment
|
|
159
|
-
// TODO サービス登録取引を削除
|
|
160
|
-
// 決済取引を削除
|
|
161
|
-
const deletePayTransactionsByPlaceOrderResult = yield deletePayTransactionsByPlaceOrder({ transaction })(repos);
|
|
162
|
-
deletePayTransactionResult = deletePayTransactionsByPlaceOrderResult.deletePayTransactionResult;
|
|
163
|
-
payTransactionNumbers = deletePayTransactionsByPlaceOrderResult.payTransactionNumbers;
|
|
164
|
-
// 取引上での予約を削除
|
|
165
|
-
const deleteReservationsByPlaceOrderResult = yield deleteReservationsByPlaceOrder({ transaction })(repos);
|
|
166
|
-
deleteReservationsResult = deleteReservationsByPlaceOrderResult.deleteResult;
|
|
167
|
-
deleteReserveTransactionResult = deleteReservationsByPlaceOrderResult.deleteReserveTransactionResult;
|
|
168
|
-
deletedReservationNumbers = deleteReservationsByPlaceOrderResult.reserveTransactionNumbers;
|
|
169
|
-
break;
|
|
170
|
-
case factory.transactionStatusType.Confirmed:
|
|
171
|
-
// no op
|
|
172
|
-
break;
|
|
173
|
-
default:
|
|
174
|
-
}
|
|
175
|
-
// 取引削除
|
|
176
|
-
yield repos.transaction.findByIdAndDelete({ id: transaction.id });
|
|
177
|
-
break;
|
|
178
|
-
// implemented(2022-06-09~)
|
|
179
|
-
case factory.transactionType.ReturnOrder:
|
|
180
|
-
// 取引削除
|
|
181
|
-
yield repos.transaction.findByIdAndDelete({ id: transaction.id });
|
|
182
|
-
break;
|
|
183
|
-
// implemented(2022-06-09~)
|
|
184
|
-
case factory.transactionType.MoneyTransfer:
|
|
185
|
-
// 取引削除
|
|
186
|
-
yield repos.transaction.findByIdAndDelete({ id: transaction.id });
|
|
187
|
-
break;
|
|
188
|
-
default:
|
|
189
|
-
throw new factory.errors.NotImplemented(`${transactionTypeOf} not implemented`);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
// actionにエラー結果を追加
|
|
194
|
-
try {
|
|
195
|
-
const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
|
|
196
|
-
yield repos.action.giveUp({ typeOf: action.typeOf, id: action.id, error: actionError });
|
|
197
|
-
}
|
|
198
|
-
catch (__) {
|
|
199
|
-
// 失敗したら仕方ない
|
|
200
|
-
}
|
|
201
|
-
throw error;
|
|
202
|
-
}
|
|
203
|
-
// アクション完了
|
|
204
|
-
const actionResult = {
|
|
205
|
-
deletePayTransactionResult,
|
|
206
|
-
payTransactionNumbers,
|
|
207
|
-
deleteReservationsResult,
|
|
208
|
-
deleteReserveTransactionResult,
|
|
209
|
-
deletedReservationNumbers
|
|
210
|
-
};
|
|
211
|
-
yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: actionResult });
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
exports.deleteTransaction = deleteTransaction;
|
|
215
|
-
function deleteReservationsByPlaceOrder(params) {
|
|
216
|
-
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
217
|
-
let deleteResult;
|
|
218
|
-
let deleteReserveTransactionResult;
|
|
219
|
-
// 取引に対する全ての承認アクションを検索
|
|
220
|
-
const authorizeActions = yield repos.action.searchByPurpose({
|
|
221
|
-
typeOf: factory.actionType.AuthorizeAction,
|
|
222
|
-
purpose: {
|
|
223
|
-
typeOf: factory.transactionType.PlaceOrder,
|
|
224
|
-
id: params.transaction.id
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
// 予約取引番号を抽出
|
|
228
|
-
const authorizeReservationOfferActions = authorizeActions
|
|
229
|
-
.filter((a) => {
|
|
230
|
-
var _a, _b;
|
|
231
|
-
const pendingTransactionNumber = (_b = (_a = a.object) === null || _a === void 0 ? void 0 : _a.pendingTransaction) === null || _b === void 0 ? void 0 : _b.transactionNumber;
|
|
232
|
-
return a.object.typeOf === factory.action.authorize.offer.seatReservation.ObjectType.SeatReservation
|
|
233
|
-
&& typeof pendingTransactionNumber === 'string'
|
|
234
|
-
&& pendingTransactionNumber.length > 0;
|
|
235
|
-
});
|
|
236
|
-
const reserveTransactionNumbers = authorizeReservationOfferActions
|
|
237
|
-
.map((a) => { var _a; return String((_a = a.object.pendingTransaction) === null || _a === void 0 ? void 0 : _a.transactionNumber); });
|
|
238
|
-
if (reserveTransactionNumbers.length > 0) {
|
|
239
|
-
// 該当予約番号の予約を削除する(プロジェクトでも絞ること)
|
|
240
|
-
const deleteReservationsResult = yield repos.reservation.deleteByReservationNumbers({
|
|
241
|
-
project: { id: params.transaction.project.id },
|
|
242
|
-
reservationNumbers: reserveTransactionNumbers
|
|
243
|
-
});
|
|
244
|
-
deleteResult = {
|
|
245
|
-
n: deleteReservationsResult === null || deleteReservationsResult === void 0 ? void 0 : deleteReservationsResult.n,
|
|
246
|
-
ok: deleteReservationsResult === null || deleteReservationsResult === void 0 ? void 0 : deleteReservationsResult.ok,
|
|
247
|
-
deletedCount: deleteReservationsResult === null || deleteReservationsResult === void 0 ? void 0 : deleteReservationsResult.deletedCount
|
|
248
|
-
};
|
|
249
|
-
// 予約取引を削除(プロジェクトでも絞ること)(2022-06-07~)
|
|
250
|
-
const deleteAssetTransactionsResult = yield repos.assetTransaction.deleteByTransactionNumber({
|
|
251
|
-
project: { id: params.transaction.project.id },
|
|
252
|
-
transactionNumbers: reserveTransactionNumbers,
|
|
253
|
-
typeOf: factory.assetTransactionType.Reserve
|
|
254
|
-
});
|
|
255
|
-
deleteReserveTransactionResult = {
|
|
256
|
-
n: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.n,
|
|
257
|
-
ok: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.ok,
|
|
258
|
-
deletedCount: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.deletedCount
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
return { deleteResult, deleteReserveTransactionResult, reserveTransactionNumbers };
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
function deletePayTransactionsByPlaceOrder(params) {
|
|
265
|
-
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
266
|
-
let deletePayTransactionResult;
|
|
267
|
-
// 取引に対する全ての承認アクションを検索
|
|
268
|
-
const authorizeActions = yield repos.action.searchByPurpose({
|
|
269
|
-
typeOf: factory.actionType.AuthorizeAction,
|
|
270
|
-
purpose: {
|
|
271
|
-
typeOf: factory.transactionType.PlaceOrder,
|
|
272
|
-
id: params.transaction.id
|
|
273
|
-
}
|
|
274
|
-
});
|
|
275
|
-
// 決済取引番号を抽出
|
|
276
|
-
const authorizePaymentActions = authorizeActions
|
|
277
|
-
.filter((a) => {
|
|
278
|
-
var _a;
|
|
279
|
-
const pendingTransactionNumber = (_a = a.object) === null || _a === void 0 ? void 0 : _a.paymentMethodId;
|
|
280
|
-
return a.object.typeOf === factory.action.authorize.paymentMethod.any.ResultType.Payment
|
|
281
|
-
&& typeof pendingTransactionNumber === 'string'
|
|
282
|
-
&& pendingTransactionNumber.length > 0;
|
|
283
|
-
});
|
|
284
|
-
const payTransactionNumbers = authorizePaymentActions.map((a) => String(a.object.paymentMethodId));
|
|
285
|
-
if (payTransactionNumbers.length > 0) {
|
|
286
|
-
// 決済取引を削除(プロジェクトでも絞ること)(2022-06-07~)
|
|
287
|
-
const deleteAssetTransactionsResult = yield repos.assetTransaction.deleteByTransactionNumber({
|
|
288
|
-
project: { id: params.transaction.project.id },
|
|
289
|
-
transactionNumbers: payTransactionNumbers,
|
|
290
|
-
typeOf: factory.assetTransactionType.Pay
|
|
291
|
-
});
|
|
292
|
-
deletePayTransactionResult = {
|
|
293
|
-
n: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.n,
|
|
294
|
-
ok: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.ok,
|
|
295
|
-
deletedCount: deleteAssetTransactionsResult === null || deleteAssetTransactionsResult === void 0 ? void 0 : deleteAssetTransactionsResult.deletedCount
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
return { deletePayTransactionResult, payTransactionNumbers };
|
|
299
|
-
});
|
|
300
|
-
}
|
package/lib/chevre/settings.js
CHANGED
|
@@ -40,7 +40,10 @@ exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = (typeof process.env.ASSET_TRA
|
|
|
40
40
|
/**
|
|
41
41
|
* 取引保管期間(Confirmed)
|
|
42
42
|
*/
|
|
43
|
-
exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS =
|
|
43
|
+
exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = (typeof process.env.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS === 'string')
|
|
44
|
+
? Number(process.env.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS)
|
|
45
|
+
// tslint:disable-next-line:no-magic-numbers
|
|
46
|
+
: 365;
|
|
44
47
|
/**
|
|
45
48
|
* 取引保管期間(Canceled)
|
|
46
49
|
*/
|
package/package.json
CHANGED