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

    //Internal Unique ID of Export L/C Document Set
    private String inr = NULLSTR;

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

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

    //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 Receipt of Documents
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date rcvdat = NULLDATE;

    //Date of Shipment
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date shpdat = 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;

    //Document Type
    private String doctypcod = NULLSTR;

    //Date Opened/Issued
    @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;

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

    //Responsible User
    private String ownusr = NULLSTR;

    //Version Counter
    private String ver = NULLSTR;

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

    //Free of Payment
    private String frepayflg = NULLSTR;

    //Presented by
    private String docprbrol = NULLSTR;

    //Payer
    private String payrol = NULLSTR;

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

    //Multiple Tenor Flag
    private String mattxtflg = NULLSTR;

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

    //Accept Documents Now
    private String acpnowflg = NULLSTR;

    //Type of Advice Received
    private String advtyp = NULLSTR;

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

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

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

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

    //Document Set Status
    private String docsta = NULLSTR;

    //Receiver of Documents
    private String docrol = NULLSTR;

    //Send Documents to Another Address
    private String docrolflg = NULLSTR;

    //Send Date of Acknowledgment Message
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date dta770snd = NULLDATE;

    //Return of Documents
    private String advdocflg = NULLSTR;

    //Entity holding Contract
    private String etyextkey = NULLSTR;

    //Reimbursement by
    private String rmbrol = NULLSTR;

    //Less comm.
    private  BigDecimal lescom  = Decimals.ZERO_SCALE3;

    //BRANCH CODE KEYINR
    private String bchkeyinr = NULLSTR;

    //BRANCHINR
    private String branchinr = NULLSTR;

    //票据转卖
    private String forflg = NULLSTR;

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

    //AMCFLG
    private String amcflg = NULLSTR;

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

    //快递单号
    private String expmno = NULLSTR;

    //发票信息
    private String invref = NULLSTR;

    //议付标志
    private String negflg = NULLSTR;

    //追�'�权
    private String rcssta = NULLSTR;

    //付款类型
    private String paytyp = NULLSTR;

    //清算方式
    private String clrmtd = NULLSTR;

    //单据处理类型
    private String bilpro = NULLSTR;

    //单据编号
    private String dckref = NULLSTR;

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

    //交单批注行行号
    private String anobnkcod = NULLSTR;

    //交单批注日期
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date anodat = NULLDATE;

    //交单批注描述
    private String anodsp = NULLSTR;

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

    //承付币种
    private String chfcur = NULLSTR;

    //承付金额
    private  BigDecimal chfamt  = Decimals.ZERO_SCALE3;

    //报文中是否有发票影像
    private String yxused = NULLSTR;

    //原始单据金额
    private BigDecimal invamt  = Decimals.ZERO_SCALE3;
}
