@chevre/domain
Version:
Chevre Domain Library for Node.js
92 lines (91 loc) • 4.6 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.confirm = confirm;
const factory = require("../../../factory");
const confirmReservation_1 = require("../../reserve/confirmReservation");
const factory_1 = require("./confirm/factory");
/**
* 取引確定
*/
function confirm(params) {
return (repos
// settings: Settings
) => __awaiter(this, void 0, void 0, function* () {
let transaction;
// 取引存在確認
if (typeof params.id === 'string') {
transaction = yield repos.assetTransaction.findById({
typeOf: factory.assetTransactionType.Reserve,
id: params.id
}, ['project', 'transactionNumber'] // projection(2024-07-01~)
);
}
else if (typeof params.transactionNumber === 'string') {
transaction = yield repos.assetTransaction.findByTransactionNumber({
typeOf: factory.assetTransactionType.Reserve,
transactionNumber: params.transactionNumber
}, ['project', 'transactionNumber'] // projection(2024-07-01~)
);
}
else {
throw new factory.errors.ArgumentNull('Transaction ID or Transaction Number');
}
const order = yield fixOrderAsPurpose(params, transaction)(repos);
const { potentialActions, underName } = (0, factory_1.createPotentialActions)({
// ...params,
// transaction,
order
});
// 取引確定
const result = {};
yield repos.assetTransaction.confirm(Object.assign({ typeOf: factory.assetTransactionType.Reserve, id: transaction.id, result: result,
// potentialActions: (USE_ASSET_TRANSACTION_SYNC_PROCESSING)
// ? { reserve: [] }
// : potentialActions, // discontinue(2024-07-01~)
potentialActions }, (typeof (underName === null || underName === void 0 ? void 0 : underName.typeOf) === 'string')
? { object: { underName } }
: undefined));
// sync対応(2023-01-13~)
yield (0, confirmReservation_1.confirmReservation)({
// optimize(2024-07-01~)
// actionAttributesList: potentialActions.reserve,
potentialReserveAction: { object: { reservationNumber: transaction.transactionNumber } },
useOnReservationConfirmed: true,
byTask: true
})(repos);
});
}
function fixOrderAsPurpose(params, transaction) {
return (repos) => __awaiter(this, void 0, void 0, function* () {
var _a, _b, _c, _d, _e, _f;
let order;
const payPurposeConfirmationNumber = (_c = (_b = (_a = params.potentialActions) === null || _a === void 0 ? void 0 : _a.reserve) === null || _b === void 0 ? void 0 : _b.purpose) === null || _c === void 0 ? void 0 : _c.confirmationNumber;
const payPurposeOrderNumber = (_f = (_e = (_d = params.potentialActions) === null || _d === void 0 ? void 0 : _d.reserve) === null || _e === void 0 ? void 0 : _e.purpose) === null || _f === void 0 ? void 0 : _f.orderNumber;
if (typeof payPurposeConfirmationNumber === 'string'
&& payPurposeConfirmationNumber.length > 0
&& typeof payPurposeOrderNumber === 'string'
&& payPurposeOrderNumber.length > 0) {
const orders = yield repos.order.projectFields({
limit: 1,
page: 1,
project: { id: { $eq: transaction.project.id } },
confirmationNumbers: [payPurposeConfirmationNumber],
orderNumbers: [payPurposeOrderNumber]
}, { inclusion: ['customer', 'orderNumber', 'typeOf'] });
order = orders.shift();
if (order === undefined) {
throw new factory.errors.NotFound('Order as purpose');
}
}
return order;
});
}
;