package com.brilliance.isc.bo;

import java.util.*;
import java.math.BigDecimal;


import static com.brilliance.mda.runtime.mda.Constants.*;
import com.brilliance.mda.runtime.mda.util.*;
import com.brilliance.mda.support.jakson.serialize.BigDecimalSerializeRate;
import com.brilliance.mda.support.jakson.serialize.DecimalLength;
import com.brilliance.isc.common.json.BigDecimalSerialize;
import com.brilliance.isc.common.vo.AbstractCommonVo;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;



/**
 * TABLE:eba:对外担保－签约信息
 */
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Eba extends AbstractCommonVo {



    //Internal Unique ID
    private String inr = NULLSTR;

    //Version
    private String ver = NULLSTR;

    //操作类型
    private String actiontype = NULLSTR;

    //删除原因
    private String actiondesc = NULLSTR;

    //对外担保编号
    private String exguarancode = NULLSTR;

    //担保人代码
    private String guarantorcode = NULLSTR;

    //签约日期
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date contractdate = NULLDATE;

    //保函金额
    @JsonSerialize(using = BigDecimalSerialize.class)
    private  BigDecimal guaranamount  = Decimals.ZERO_SCALE2;

    //保函币种
    private String guarancurr = NULLSTR;

    //到期日
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date maturity = NULLDATE;

    //担保类型
    private String guarantype = NULLSTR;

    //主债务币种
    private String maindebtcurr = NULLSTR;

    //主债务金额
    @JsonSerialize(using = BigDecimalSerialize.class)
    private  BigDecimal maindebtamount  = Decimals.ZERO_SCALE2;

    //受益人代码
    private String bencode = NULLSTR;

    //受益人中文名称
    private String bename = NULLSTR;

    //受益人英文名称
    private String benamen = NULLSTR;

    //受益人类型
    private String bentype = NULLSTR;

    //受益人国别/地区
    private String bencountrycode = NULLSTR;

    //被担保人代码
    private String guedcode = NULLSTR;

    //被担保人中文名称
    private String guedname = NULLSTR;

    //被担保人英文名称
    private String guednamen = NULLSTR;

    //被担保人类型
    private String guedtype = NULLSTR;

    //被担保人国别/地区代码
    private String guedcouncode = NULLSTR;

    //担保申请人代码
    private String guappcode = NULLSTR;

    //担保申请人中文名称
    private String guappname = NULLSTR;

    //担保申请人英文名称
    private String guappnamen = NULLSTR;

    //核准文件号
    private String appdocuno = NULLSTR;

    //备注
    private String remark = NULLSTR;

    //接口状态
    private String sta = NULLSTR;

    //INR of EBL
    private String eblinr = NULLSTR;

    //创建日期
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date credat = NULLDATE;

    //主债务签约日期
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date maindebtcondate = NULLDATE;

    //主债务到期日
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date maindebtmaturity = NULLDATE;

    //主债务期限（日）
    private  int maindebtdate ;

    //借款利率（%）
    @JsonSerialize(using = BigDecimalSerializeRate.class)
    @DecimalLength(7)
    private  BigDecimal intrat  = Decimals.ZERO_SCALE7;

    //发行/上市方式
    private String maindebtmanner = NULLSTR;

    //主债务合同资金用途
    private String returntype = NULLSTR;

    //被担保人所属行业
    private String guedindustrycode = NULLSTR;

    //被担保人境内母公司中文名称
    private String guedparecompname = NULLSTR;

    //被担保人境内母公司英文名称
    private String guedparecompnamen = NULLSTR;

    //被担保人境内母公司代码
    private String guedparecompcode = NULLSTR;

    //发行/上市国家与地区
    private String issuecountrycode = NULLSTR;

    //是否有反担保人
    private String cgyn = NULLSTR;

    //反担保人代码
    private String cgcode = NULLSTR;

    //反担保人中文名称
    private String cgname = NULLSTR;

    //反担保人英文名称
    private String cgnamen = NULLSTR;

    //反担保人国别/地区代码
    private String cgcouncode = NULLSTR;

    //是否调回境内
    private String thyn = NULLSTR;

    //资金调回金额
    @JsonSerialize(using = BigDecimalSerialize.class)
    private  BigDecimal thje  = Decimals.ZERO_SCALE2;

    //是否与境外投资相关
    private String jwyn = NULLSTR;

    //资本类型
    private String objtyp = "EBA";

    //TD中PUBP:COUSEL特定的对象CREHQCODEFLG
    private String crehqcodeflg = NULLSTR;

    //TD中PUBP:COUSEL特定的对象OPERCODEFLG
    private String opercodeflg = NULLSTR;

    //PUBP:ACP确认按钮
    private String acp = NULLSTR;

    // 境外接投资
    private String founds1 = NULLSTR;
    // 偿还境外债务
    private String founds2 = NULLSTR;
    // 补充运营或流动性资金
    private String founds3 = NULLSTR;
    // 其他境外使用
    private String founds4 = NULLSTR;
    // 以接投资形式回流
    private String founds5 = NULLSTR;
    // 以外债形式回流
    private String founds6 = NULLSTR;
    // 以易形式回流
    private String founds7 = NULLSTR;
    // 以其他形式回流
    private String founds8 = NULLSTR;
}

