package com.brilliance.isc.bo;

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 Ded extends AbstractCommonVo {

    //Internal Unique ID of Export 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 Registration
    @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;

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

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

    //Issuing Bank
    private String issnam = NULLSTR;

    //Issuing Bank Ref.
    private String issref = NULLSTR;

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

    //Number of Amendments
    private  int amenbr ;

    //Available by [AVBBY0]
    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;

    //Percentage or Amount Confirmed
    private String cnfflg = NULLSTR;

    //Confirmation Instructions from Iss.Bank
    private String cnfdet = NULLSTR;

    //Confirmation Status
    private String cnfsta = NULLSTR;

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

    //Place of Expiry
    private String expplc = NULLSTR;

    //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;

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

    //Shipment from
    private String shpfro = NULLSTR;

    //Partial Shipment
    private String shppar = NULLSTR;

    //For Transportation to
    private String shpto = NULLSTR;

    //Transshipment
    private String shptrs = NULLSTR;

    //Country Code for Statistics
    private String stacty = NULLSTR;

    //Goods Code for Statistics
    private String stagod = NULLSTR;

    //No. of Existing and not Completely Processed  Document Sets
    private  int utlnbr ;

    //Version Counter
    private String ver = NULLSTR;

    //Send Directly to Applicant's Bank
    private String aplbnkdirsnd = NULLSTR;

    //Maximum Tenor
    private  int tenmaxday ;

    //Confirmation Status of 1st Advising Bank
    private String cnfsnd = NULLSTR;

    //Revolving Flag
    private String revflg = NULLSTR;

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

    //Revolving Times
    private  int revtimes ;

    //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;

    //Confirmation Instructions to 2nd Adv.Bank
    private String cnfins = NULLSTR;

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

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

    //Reserved Contract
    private String resflg = NULLSTR;

    //Incoming Transfer
    private String inctrf = NULLSTR;

    //Applicable Rules
    private String apprul = NULLSTR;

    //Other Applicable Rules
    private String apprultxt = NULLSTR;

    //Port of Discharge
    private String pordis = NULLSTR;

    //Port of Loading
    private String porloa = NULLSTR;

    //Non-Bank Issuer
    private String nonban = NULLSTR;

    //Entity holding Contract
    private String etyextkey = NULLSTR;

    //Partial Confirmation
    private  BigDecimal partcon  = Decimals.ZERO_SCALE2;

    //Collateralized L/C
    private String collflg = NULLSTR;

    //Test Key Unconfirmity
    private String teskeyunc = NULLSTR;

    //Authorization to Debit
    private String dbtflg = NULLSTR;

    //BRANCHINR
    private String branchinr = NULLSTR;

    //BRANCH CODE KEY
    private String bchkeyinr = NULLSTR;

    //Risk Rate
    private  BigDecimal rskrat  = Decimals.ZERO_SCALE2;

    //Flag
    private String dflg = NULLSTR;

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

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

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

    //是否可议付
    private String isyifu = 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 dkflg = NULLSTR;

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

    //信用证编号
    private String kzref = NULLSTR;

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

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

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

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

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