package com.brilliance.isc.common.irtcal.vo;

import com.brilliance.isc.bo.Irs;
import com.brilliance.isc.bo.Irt;
import com.brilliance.mda.runtime.mda.util.Decimals;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static com.brilliance.mda.runtime.mda.Constants.NULLSTR;

@Data
@ApiModel(value = "费用、利息计算信息", description = "费用、利息计算信息")
public class IrtcalVo implements Serializable {

    private static final long serialVersionUID = 7105694564656585252L;

    @ApiModelProperty(value = "Start date for calculation", name = "calbegdat", required = true)
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date calbegdat;

    @ApiModelProperty(value = "End date for calculation", name = "calenddat", required = true)
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date calenddat;

    @ApiModelProperty(value = "minimum amount per period", name = "minamt", required = true)
    private BigDecimal minamt = Decimals.ZERO_SCALE4;

    @ApiModelProperty(value = "Grace Amount for minimum", name = "mingrcamt", required = true)
    private BigDecimal mingrcamt = Decimals.ZERO_SCALE2;

    @ApiModelProperty(value = "maximum amount per period", name = "maxamt", required = true)
    private BigDecimal maxamt = Decimals.ZERO_SCALE4;

    @ApiModelProperty(value = "", name = "irpcur", required = true)
    private String irpcur = NULLSTR;

    @ApiModelProperty(value = "Flag controlling totalling up IRD-Enties to IRP", name = "fulperflg", required = true)
    private String fulperflg = NULLSTR;

    @ApiModelProperty(value = "Period Closed at the end", name = "perclsflg", required = true)
    private String perclsflg = NULLSTR;

    @ApiModelProperty(value = "Period Method", name = "permet", required = true)
    private String permet = NULLSTR;

    @ApiModelProperty(value = "", name = "irdele", required = true)
    private List<IrdeleVo> irdele = new ArrayList<>();

    @ApiModelProperty(value = "", name = "irpele", required = true)
    private List<IrpeleVo> irpele = new ArrayList<>();

    @ApiModelProperty(value = "", name = "irt", required = true)
    private Irt irt = new Irt();

    @ApiModelProperty(value = "", name = "Irs", required = true)
    private Irs irs = new Irs();

}
