UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

82 lines (81 loc) 4.1 kB
"use strict"; 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 }; }); }