// Path: micro-asset/src/main/java/sample/microasset/model/asset/type/CashflowType.java
// public enum CashflowType {
//     /** 振込入金 */
//     CashIn,
//     /** 振込出金 */
//     CashOut,
//     /** 振替入金 */
//     CashTransferIn,
//     /** 振替出金 */
//     CashTransferOut
// }


import java.math.BigDecimal;
import java.time.*;
import java.util.List;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import lombok.*;
import sample.ActionStatusType;
import sample.ValidationException.ErrorKeys;
import sample.context.Dto;
import sample.context.orm.*;
import sample.microasset.model.asset.type.CashflowType;
import sample.model.constraints.*;
import sample.util.*;
package sample.microasset.model.asset;




/**
 * 入出金キャッシュフローを表現します。
 * キャッシュフローは振込/振替といったキャッシュフローアクションから生成される確定状態(依頼取消等の無い)の入出金情報です。
 * low: 概念を伝えるだけなので必要最低限の項目で表現しています。
 * low: 検索関連は主に経理確認や帳票等での利用を想定します
 */
@Entity
@Data
@EqualsAndHashCode(callSuper = false)
public class Cashflow extends OrmActiveMetaRecord<Cashflow> {
    private static final long serialVersionUID = 1L;

    /** ID */
    @Id
    @GeneratedValue
    private Long id;
    /** 口座ID */
    @IdStr
    private String accountId;
    /** 通貨 */
    @Currency
    private String currency;
    /** 金額 */
    @Amount
    private BigDecimal amount;
    /** 入出金 */
    @NotNull
    @Enumerated(EnumType.STRING)
// Path: micro-asset/src/main/java/sample/microasset/model/asset/type/CashflowType.java
// public enum CashflowType {
//     /** 振込入金 */
//     CashIn,
//     /** 振込出金 */
//     CashOut,
//     /** 振替入金 */
//     CashTransferIn,
//     /** 振替出金 */
//     CashTransferOut
// }


// Path: micro-asset/src/main/java/sample/microasset/model/asset/Cashflow.java
import java.math.BigDecimal;
import java.time.*;
import java.util.List;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import lombok.*;
import sample.ActionStatusType;
import sample.ValidationException.ErrorKeys;
import sample.context.Dto;
import sample.context.orm.*;
import sample.microasset.model.asset.type.CashflowType;
import sample.model.constraints.*;
import sample.util.*;

package sample.microasset.model.asset;




/**
 * 入出金キャッシュフローを表現します。
 * キャッシュフローは振込/振替といったキャッシュフローアクションから生成される確定状態(依頼取消等の無い)の入出金情報です。
 * low: 概念を伝えるだけなので必要最低限の項目で表現しています。
 * low: 検索関連は主に経理確認や帳票等での利用を想定します
 */
@Entity
@Data
@EqualsAndHashCode(callSuper = false)
public class Cashflow extends OrmActiveMetaRecord<Cashflow> {
    private static final long serialVersionUID = 1L;

    /** ID */
    @Id
    @GeneratedValue
    private Long id;
    /** 口座ID */
    @IdStr
    private String accountId;
    /** 通貨 */
    @Currency
    private String currency;
    /** 金額 */
    @Amount
    private BigDecimal amount;
    /** 入出金 */
    @NotNull
    @Enumerated(EnumType.STRING)
    private CashflowType cashflowType;