@chevre/domain
Version:
Chevre Domain Library for Node.js
82 lines (81 loc) • 4.1 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.createPotentialActions = createPotentialActions;
const factory = require("../../../factory");
function createReundActions(params) {
var _a, _b;
const { transaction, seller } = params;
const refundActions = [];
const informPaymentActions = createInformPaymentActions(params);
// 決済取引より取得した販売者情報によって、IParticipantAsSellerに統一(2024-06-13~)
// const agent: factory.action.trade.refund.IAgent = {
// id: params.transaction.agent.id,
// name: String(params.transaction.agent.name),
// typeOf: params.transaction.agent.typeOf
// };
const agent = Object.assign({ id: seller.id, typeOf: seller.typeOf }, (typeof seller.name === 'string') ? { name: seller.name } : undefined);
const purpose = (_b = (_a = params.potentialActions) === null || _a === void 0 ? void 0 : _a.refund) === null || _b === void 0 ? void 0 : _b.purpose;
if (purpose.typeOf !== factory.actionType.ReturnAction) {
throw new factory.errors.Argument('potentialActions?.refund?.purpose.typeOf', `must be ${factory.actionType.ReturnAction}`);
}
refundActions.push({
project: transaction.project,
typeOf: factory.actionType.RefundAction,
object: [transaction.object],
agent,
potentialActions: {
informPayment: informPaymentActions,
add2report: true
},
recipient: transaction.recipient,
purpose // purpose required(2025-02-20~)
// ...(params.potentialActions?.refund?.purpose !== undefined)
// ? { purpose: params.potentialActions?.refund?.purpose }
// : { purpose: { typeOf: transaction.typeOf, transactionNumber: transaction.transactionNumber, id: transaction.id } }
});
return refundActions;
}
function createInformPaymentActions(params) {
var _a, _b;
const transaction = params.transaction;
const informPaymentActions = [];
// 取引に指定があれば設定
// const informPayment = transaction.object.onPaymentStatusChanged?.informPayment;
const potentialInformActionId = (_b = (_a = transaction.potentialAction) === null || _a === void 0 ? void 0 : _a.find(({ typeOf }) => typeOf === factory.actionType.InformAction)) === null || _b === void 0 ? void 0 : _b.id;
if (typeof potentialInformActionId === 'string') {
// const recipient: factory.action.trade.refund.IInformPayment['recipient'] = {
// typeOf: transaction.agent.typeOf,
// name: transaction.agent.name,
// id: transaction.agent.id
// // url: String(a.recipient?.url)
// };
informPaymentActions.push({
// recipient,
// 実際にタスクが生成される直前にactionに置き換える
// object: {},
purpose: { typeOf: transaction.typeOf, id: transaction.id },
id: potentialInformActionId // add potentialAction(2025-02-05~)
});
}
return informPaymentActions;
}
/**
* 取引のポストアクションを作成する
*/
function createPotentialActions(params) {
return __awaiter(this, void 0, void 0, function* () {
const refundActionAttributesList = createReundActions(params);
return {
refund: refundActionAttributesList
};
});
}
;