import { AssetTransactionType } from '../assetTransactionType'; import { IExtendId } from '../autoGenerated'; import { OrderType } from '../order'; import { IProject } from '../project'; import { ITaskAttributes } from '../task'; import { TaskName } from '../taskName'; import { TransactionStatusType } from '../transactionStatusType'; export interface IPurposeAsOrder { typeOf: OrderType.Order; confirmationNumber: string; orderNumber: string; } export interface IObjectAsPayTransaction { typeOf: AssetTransactionType.Pay; transactionNumber: string; status: TransactionStatusType.Confirmed | TransactionStatusType.Canceled | TransactionStatusType.Expired; object?: { paymentMethod?: { identifier?: string; }; }; } export interface IObjectAsReserveTransaction { typeOf: AssetTransactionType.Reserve | AssetTransactionType.COAReserveTransaction; transactionNumber: string; status: TransactionStatusType.Confirmed; } export type IObject = IObjectAsPayTransaction | IObjectAsReserveTransaction; export interface IData { project: Pick; object: IObject; purpose: IPurposeAsOrder; useOnOrderStatusChanged: boolean; } export interface IAttributes extends ITaskAttributes { name: TaskName.OnAssetTransactionStatusChanged; data: IData; } /** * 資産取引ステータス変更時タスク */ export type ITask = IExtendId;