package com.brilliance.isc.vo.model;

import com.brilliance.mda.runtime.mda.util.Decimals;
import com.brilliance.isc.common.vo.AbstractCommonVo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;

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

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

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class DidVo extends AbstractCommonVo {

    //Internal Unique ID of Import L/C
    private String inr = NULLSTR;

    //Reference
    private String ownref = NULLSTR;

    //Externally Displayed Name to Identify the Contract
    private String nam = NULLSTR;

    //Responsible User
    private String ownusr = NULLSTR;

    //Date of Creation Opening or Registry
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date credat = NULLDATE;

    //Date L/C Opened/Issued
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date opndat = NULLDATE;

    //Date L/C Closed
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date clsdat = NULLDATE;

    //Advising Bank
    private String advnam = NULLSTR;

    //Advising Bank Reference
    private String advref = NULLSTR;

    //Date of Last Amendment
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date amedat = NULLDATE;

    //Number of Amendment
    private  int amenbr ;

    //Applicant Address
    private String aplnam = NULLSTR;

    //Applicant Reference
    private String aplref = NULLSTR;

    //Available by
    private String avbby = NULLSTR;

    //Available with
    private String avbwth = NULLSTR;

    //Beneficiary
    private String bennam = NULLSTR;

    //Beneficiary Reference
    private String benref = NULLSTR;

    //Own Charges Borne by
    private String chato = NULLSTR;

    //Confirmation Instructions
    private String cnfdet = NULLSTR;

    //Date of Expiry
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date expdat = NULLDATE;

    //Form of Documentary Credit
    private String lcrtyp = NULLSTR;

    //Amount Specification
    private String nomspc = NULLSTR;

    //Amount Tolerance - Positive
    private BigDecimal nomtop  = Decimals.ZERO_SCALE5;

    //Amount Tolerance - Negative
    private  BigDecimal nomton  = Decimals.ZERO_SCALE5;

    //Date Pre-advised
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date preadvdt = NULLDATE;

    //Reimbursing Bank Account Identification
    private String rmbact = NULLSTR;

    //Reimbursing Bank's Charges
    private String rmbcha = NULLSTR;

    //Reimbursement Information
    private String rmbflg = NULLSTR;

    //Shipment Date
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date shpdat = NULLDATE;

    //Shipment from
    private String shpfro = NULLSTR;

    //Port of Loading
    private String porloa = NULLSTR;

    //Port of Discharge
    private String pordis = NULLSTR;

    //Partial Shipment
    private String shppar = NULLSTR;

    //For Transportation to
    private String shpto = NULLSTR;

    //Transshipment
    private String shptrs = NULLSTR;

    //Country Code Risk Country
    private String stacty = NULLSTR;

    //Goods Code
    private String stagod = NULLSTR;

    //Count of Received Document Sets
    private  int utlnbr ;

    //Count of Advised Sub-Contracts without Documents
    private  int advnbr ;

    //Red/Green Clause
    private String redclsflg = NULLSTR;

    //Version Counter
    private String ver = NULLSTR;

    //Internal Type of L/C Default: Normal L/C; B: Back to Back
    private String lcityp = NULLSTR;

    //INR of LE Backing this L/C
    private String b2binr = NULLSTR;

    //Reference of Contract Backing this L/C
    private String b2bref = NULLSTR;

    //Number of Revolvings under L/C
    private  int revnbr ;

    //Revolving Times
    private  int revtimes ;

    //Revolving Flag
    private String revflg = NULLSTR;

    //Awaiting Applicant's Request
    private String revawapl = NULLSTR;

    //Revolving Date
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date revdat = NULLDATE;

    //Credit is Marked as Cumulative
    private String revcum = NULLSTR;

    //Revolving Type
    private String revtyp = NULLSTR;

    //Applicant's Bank
    private String initpty = NULLSTR;

    //Reserved Contract
    private String resflg = NULLSTR;

    //Applicable Rules
    private String apprul = NULLSTR;

    //Applicable Rules Reimbursement
    private String apprulrmb = NULLSTR;

    //Other Applicable Rules
    private String apprultxt = NULLSTR;

    //Date of Authorisation to Reimburse
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date autdat = NULLDATE;

    //Entity holding Contract
    private String etyextkey = NULLSTR;

    //Place of Expiry
    private String expplc = NULLSTR;

    //Maximum tenor in days
    private  int tenmaxday ;

    //BRANCHINR
    private String branchinr = NULLSTR;

    //BRANCH CODE KEYINR
    private String bchkeyinr = NULLSTR;

    //存在减额修改标志
    private String decflg = NULLSTR;

    //Cash cover percent
    private  BigDecimal cshpct  = Decimals.ZERO_SCALE2;

    //Mortgage Flag
    private String guaflg = NULLSTR;

    //国内信用证标志
    private String dflg = NULLSTR;

    //运输方式
    private String tratyp = NULLSTR;

    //Register Ref.
    private String regref = NULLSTR;

    //合同号
    private String rptref = NULLSTR;

    //发票号
    private String invref = NULLSTR;

    //Delete sum
    private  int delnbr ;

    //假远期信用证标志
    private String jyqflg = NULLSTR;

    //对手行代码
    private String oppbnk = NULLSTR;

    //贸易类型
    private String mytype = NULLSTR;

    //分期时镧表
    private String fqtime = NULLSTR;

    //输入运输方式
    private String sdsrfs = NULLSTR;

    //是否议付
    private String fenctg = NULLSTR;

    //开证类型
    private String dkflg = NULLSTR;

    //是否通过电证系统
    private String elcflg = NULLSTR;

    //服务提供地点
    private String shppro = NULLSTR;

    //合同编号
    private String conno = NULLSTR;

    //合同币种
    private String concur = NULLSTR;

    //合同金额
    private  BigDecimal conamt  = Decimals.ZERO_SCALE2;

    //修改状态
    private String rejame = NULLSTR;

    //拒绝修改次数
    private  BigDecimal rejnbr  = Decimals.ZERO_SCALE0;

    //闭卷类型
    private String cantyp = NULLSTR;

    //通知状态
    private String rejflg = NULLSTR;

    //通知行编号
    private String tzref = NULLSTR;

    //分期装运/提供服务
    private String fqzytgfw = NULLSTR;

    //申请人统一社会信用代码
    private String idcode = NULLSTR;

    //是否可保兑
    private String bdflg = NULLSTR;

    //是否融资租赁证
    private String finrenflg = NULLSTR;

    //基础交易买卖方是否关联企业
    private String bsisaeflg = NULLSTR;

    //货物贸易合同金额
    private  BigDecimal hmyamt  = Decimals.ZERO_SCALE3;

    //服务贸易合同金额
    private  BigDecimal fmyamt  = Decimals.ZERO_SCALE3;

    //货物/服务名称
    private String godnam = NULLSTR;

    //修改影像次数
    private int imgamenbr ;
}
