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.Getter;
import lombok.Setter;

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;


/**
 * TABLE:brd:BRD - Document Set under Import L/C Data
 */
@JsonIgnoreProperties(ignoreUnknown = true)
@Getter
@Setter
public class BrdVo extends AbstractCommonVo {

    //INR of BR Contract
    private String inr = NULLSTR;

    //Own Reference BR Number
    private String ownref = NULLSTR;

    //Name of Bill Contract
    private String nam = NULLSTR;

    //Resp. User
    private String ownusr = NULLSTR;

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

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

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

    //Parent Contract Type
    private String pnttyp = NULLSTR;

    //Parent Contract INR
    private String pntinr = NULLSTR;

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

    //Start Past-due Date
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date spddat = NULLDATE;

    //Date to be Paid
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date totdat = NULLDATE;

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

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

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

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

    //Usance, Sight or Mixed
    private String docflg = NULLSTR;

    //Reject Flag
    private String rejflg = NULLSTR;

    //Documents on Approval Basis
    private String approvcod = NULLSTR;

    //Release of Goods
    private String relgodflg = NULLSTR;

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

    //Transport Document Number
    private String trpdocnum = NULLSTR;

    //Free of Payment Flag
    private String frepayflg = NULLSTR;

    //Version
    private String ver = NULLSTR;

    //Type of Advice Received
    private String advtyp = 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 Goods to Applicant ?
    private String rtoaplflg = NULLSTR;

    //Transport Document Type
    private String trpdoctyp = NULLSTR;

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

    //Mode of Transport
    private String tramod = NULLSTR;

    //Multiple Tenor Flag
    private String mattxtflg = NULLSTR;

    //Enter Docs, Discrep. and Instructions
    private String dscinsflg = NULLSTR;

    //Presented by
    private String docprbrol = NULLSTR;

    //Document Set Status
    private String docsta = NULLSTR;

    //Ignore Discrepancies
    private String igndisflg = NULLSTR;

    //Currency of Total Amount to be Paid
    private String totcur = NULLSTR;

    //Total Amount to be Paid
    private  BigDecimal totamt  = Decimals.ZERO_SCALE3;

    //Payer
    private String payrol = NULLSTR;

    //Accept Documents now
    private String acpnowflg = NULLSTR;

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

    //Return of Documents
    private String advdocflg = NULLSTR;

    //Entity holding Contract
    private String etyextkey = NULLSTR;

    //BRANCH CODE KEYINR
    private String bchkeyinr = NULLSTR;

    //BRANCHINR
    private String branchinr = NULLSTR;

    //Goods code
    private String ngrcod = NULLSTR;

    //Shipping Guarrantte INR Only used by Data migration
    private String sgdinr = NULLSTR;

    //B/L Number
    private String blnum = NULLSTR;

    //Shipping Guarantee Reference
    private String shgref = NULLSTR;

    //Mortgage Flag
    private String guaflg = NULLSTR;

    //Tenor day
    private  int tenmaxday ;

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

    //合同号
    private String rptref = NULLSTR;

    //发票号
    private String invref = NULLSTR;

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

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

    //外债远期信用证数据采集标志
    private String cfabrtflg = NULLSTR;

    //外债远期信用证不报送原因
    private String cfabrttxt = NULLSTR;

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

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

}