package com.brilliance.isc.vo.remit;

import com.brilliance.isc.common.vo.BizInfoVo;
import com.brilliance.isc.common.vo.PtsptaVo;
import com.brilliance.mda.runtime.mda.util.Decimals;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;

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

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

/**
 * 1.各自邮路涉及的字段请放在各自邮路的 bizInfo 中
 * 2.公共字段请放在 CpdBizInfoVo 中
 * 3.基本数据类型不要使用包装类
 */
@Setter
@Getter
public class CpdBizInfoVo extends BizInfoVo {
    // 邮路：SWIFT
    private CpdSwiftBizInfo cpdSwiftBizInfo;
    // 邮路：CIPS
    private CpdCipsBizInfo cpdCipsBizInfo;
    // 邮路：境内外币
    private CpdJnwbBizInfo cpdJnwbBizInfo;
    // 邮路：行内划转
    private CpdHnhzBizInfo cpdHnhzBizInfo;
    // 邮路：其它
    private CpdOtherBizInfo cpdOtherBizInfo;
    // 公共：主表CPD
    //处理方式
    private String accmod;
    //邮路
    private String cptrou;
    //Payment Type
    private String paytyp;
    //汇款方式
    private String paytype;
    //Value Date
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date valdat;
    //解付日期
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date paydat;
    //收款对象
    private String gors;
    //收支类型
    private String sztyp;
    //Details of Charges
    private String detchgcod;
    //swift type
    private String swftyp;
    //汇款人帐号
    private String orcact;
    //汇款人名称
    private String orcnam;
    private String orcadr;
    //付款人开户行行号
    private String orcbchkey;
    private String orcctycod;
    //发起行行号
    private String satbch;
    private String satbchnam;
    //收款人帐号
    private String pyeact;
    //PRECHKDAT
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date prechkdat;

    //外币款专户
    String ffaacc;

    // CPTP
    //清算模式
    private String liqtyp;
    //代付参考号
    private String dfdflg;
    //收款人名称
    private String pyenam;
    //收款人地址
    private String pyeadr;
    //收款人常驻国家/地区代码
    private String payeecountcode;
    //接收行行号
    private String resbch;
    //汇款人常驻国家/地区代码
    private String draweecountcode;
    //接收行名称
    private String resbchnam;
    //收款人开户行行号
    private String pyebchkey;
    //收款人开户行名称
    private String pyebchnam;
    //收款人开户行地址
    private String pyebchadr;
    private String pyectycod;
    //附言
    private String commet;
    //72附言
    private String com102;
    //收款�'接参与者行号
    private String reconebch;
    //二代模式
    private String secmod;
    //发报行BIC
    private String sndbch;

    private String sndptytyp;

    //fremsg相关
    private String sndmt;
    private String msgrol = NULLSTR;
    private String ccrol = NULLSTR;
    private PtsptaVo othmsg;
    private PtsptaVo othcc;
    private String reldir = NULLSTR;
    private String fulmt = NULLSTR;
    private String relmt = NULLSTR;
    private int tenmaxday;

    //setmod相关
    //单据币种
    private String doccur = NULLSTR;
    //默认对手费用收取角色
    private String feecorrol = NULLSTR;

    //收支申报需要的原始金额和币种
    private String oricur = NULLSTR;
    private BigDecimal oriamt = BigDecimal.ZERO;
    //收支申报自贸区取主账号
    private String zmqacc = NULLSTR;
    //同名划转
    private String tsnflg = NULLSTR;

    //部分购汇部分现汇
    //人民币金额
    private BigDecimal lcyamt = Decimals.ZERO_SCALE3;
    //人民币帐号/银行卡号
    private String lcyacc = NULLSTR;
    //来报报文类型  这里用于判断T24报文（海运费）
    private String msgtyp = NULLSTR;
    //现汇金额
    private BigDecimal fcyamt = Decimals.ZERO_SCALE3;
    //外汇帐号/银行卡号
    private String fcyacc = NULLSTR;
    //结售汇代码
    private String waitjm = NULLSTR;
    // T22来报中的54-acc
    private String acc54 = NULLSTR;
    // T22来报中的54-bic
    private String bic54 = NULLSTR;
    // T22来报中的54-adr
    private String adr54 = NULLSTR;

    private String operation;


    //等值CNY勾选框  Y-勾选  N-不勾选
    private String calflg = NULLSTR;
    private BigDecimal cnyamt = Decimals.ZERO_SCALE2;

    //付款人客户类型
    private String custyp;

    // 用于区分是前手进入还是挂账后进入, ""表示先手，"Y"表示挂账后的后手
    private String bacflg;
}
