package com.brilliance.isc.vo.model;

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

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

    //Internal Unique ID of Import Collection Contract
    private String inr = NULLSTR;

    //Our Reference
    private String ownref = NULLSTR;

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

    //Release of Goods
    private String relgodflg = NULLSTR;

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

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

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

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

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

    //Date of Advice of Documents Received
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date advdat = NULLDATE;

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

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

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

    //Collection Condition
    private String doctypcod = NULLSTR;

    //Start of Maturity Period MATBEG
    private String matperbeg = NULLSTR;

    //Number of Days/Months for Maturity Period
    private  int matpercnt ;

    //Days/Months or Years for Maturity Period
    private String matpertyp = NULLSTR;

    //Resp. User
    private String ownusr = NULLSTR;

    //Version Counter
    private String ver = NULLSTR;

    //Transport Document Type
    private String trpdoctyp = NULLSTR;

    //Transport Document No.
    private String trpdocnum = NULLSTR;

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

    //Mode of Transport
    private String tramod = NULLSTR;

    //Shipment from
    private String shpfro = NULLSTR;

    //Shipment to
    private String shpto = NULLSTR;

    //Our Charges to
    private String chato = NULLSTR;

    //Defer Payment until
    private String othins = NULLSTR;

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

    //Goods Code
    private String stagod = NULLSTR;

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

    //Number of Amendments
    private  int amenbr ;

    //Draft to be Guaranteed
    private String dftgarflg = NULLSTR;

    //Release Type
    private String reltyp = NULLSTR;

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

    //Release to Drawee Flag
    private String rtodreflg = NULLSTR;

    //Multiple Tenor Flag
    private String mattxtflg = NULLSTR;

    //Free of Payment
    private String focflg = NULLSTR;

    //Waive Collecting Bank Charges
    private String waicolcod = NULLSTR;

    //Waive Remitting Bank Charges
    private String wairmtcod = NULLSTR;

    //Send Original Documents to Drawee
    private String oridre = NULLSTR;

    //Document Set Status
    private String docsta = NULLSTR;

    //Reserved Contract
    private String resflg = NULLSTR;

    //Date of Agent's Invoice
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date agtdat = NULLDATE;

    //Entity holding Contract
    private String etyextkey = NULLSTR;

    //Protest Instructions
    private String proins = NULLSTR;

    //BRANCHINR
    private String branchinr = NULLSTR;

    //BRANCH KEY
    private String bchkeyinr = NULLSTR;

    //发票号
    private String invref = NULLSTR;

    //合同号
    private String rptref = NULLSTR;

    //预计核验日期
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date prechkdat = NULLDATE;

    //是否需要核验
    private String ischktyp = NULLSTR;

    //发票类型
    private String invtyp = NULLSTR;

    //中文�'�物描述
    private String goddspcn = NULLSTR;

    //交易对手名称
    private String oppnam = NULLSTR;
}
