package com.brilliance.isc.vo.lg;

import com.brilliance.mda.support.jakson.serialize.BigDecimalSerializeRate;
import com.brilliance.mda.support.jakson.serialize.DecimalLength;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class ComselVo {

    /**
     * 业务类型
     */
    private String objtyp;

    /**
     * 业务主键
     */
    private String objinr;

    /**
     * 业务编号
     */
    private String objref;

    /**
     * 费用规则主键
     */
    private String fecinr;

    /**
     * 客户号
     */
    private String ptyextkey;

    /**
     * 客户名称
     */
    private String ptynam;

    /**
     * 收费交易名 gitcom/nitcom
     */
    private String frm;

    /**
     * 业务种类
     */
    private String trntyp;

    /**
     * 开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date beginDate;

    /**
     * 结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endDate;

    /**
     * 收取份数
     */
    private int unt;

    /**
     * 费用代码
     */
    private String feecod;

    /**
     * 计费规则
     */
    private String calrul;

    /**
     * 费率
     */
    @JsonSerialize(using = BigDecimalSerializeRate.class)
    @DecimalLength(6)
    private BigDecimal ratcal = BigDecimal.ZERO;

    /**
     * 固定币种
     */
    private String ratcur;
    /**
     * 固定金额
     */
    private BigDecimal untamt = BigDecimal.ZERO;

    /**
     * 费用币种
     */
    private String feecur;

    /**
     * 费用金额
     */
    private BigDecimal feeamt;

    /**
     * 最小金额币种
     */
    private String mincur;

    /**
     * 最小金额
     */
    private BigDecimal minamt = BigDecimal.ZERO;

    /**
     * 最大金额币种
     */
    private String maxcur;

    /**
     * 最大金额
     */
    private BigDecimal maxamt;

    /**
     * 计算明细
     */
    private String inftxt;

    /**
     * 计费周期
     */
    private String pertyp;

    /**
     * 计算基准
     */
    private String calcbs;

    /**
     * X表示被选中
     */
    private String flag;

    /**
     * 修改标识
     */
    private String modflg;
}
