package com.brilliance.isc.common.trnmod.bo;

import com.brilliance.mda.runtime.mda.IStream;
import com.brilliance.mda.runtime.mda.impl.StreamImpl;
import com.brilliance.mda.runtime.mda.util.Decimals;
import com.brilliance.isc.common.json.BigDecimalSerialize;
import com.brilliance.isc.common.vo.AbstractCommonVo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

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

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class SwiaddBo extends AbstractCommonVo implements Serializable {
		private static Logger log = LoggerFactory.getLogger(SwiaddBo.class);

        //List of SMHINR for SPT to be updated in transaction
        private  String smhinrblk = NULLSTR;
        //Content of Fields can not be mapped
        private  IStream addstm = new StreamImpl();
        //Names of fields 'Dont Overwrite'
        private  IStream ovwfldnam = new StreamImpl();
        //Amended Amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal ameamt = Decimals.ZERO_SCALE2;
        //Incoming Tag 12D
        private  String tag12d = NULLSTR;
        //Incoming Tag 23H Function
        private  String tag23h = NULLSTR;
        //Original Amendment Number
        private  int oriamenbr;
        //Creating Transaction ID
        private  String cretrn = NULLSTR;
        //Create Amendment Message
        private  String amemsgdonflg = NULLSTR;
        //Currency of amended amount
        private  String amecur = NULLSTR;
        //Reason for Reduce / Discharge
        private  String redrea = NULLSTR;
        //Confirmation Status
        private  String cnfsta = NULLSTR;
        //Date of Amendment
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date amedat;
        //Date of Customer's Order
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date orddat;
        //Number of Amendment
        private  int amenbr;
        // addnewamt
        @JsonSerialize(using = BigDecimalSerialize.class)
        private BigDecimal addnewamt;
        //New amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal newamt = Decimals.ZERO_SCALE2;
        //Currency of new amount
        private  String newcur = NULLSTR;
        //New Collection Condition
        private  String newdoctypcod = NULLSTR;
        //New Expiry Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date newexpdat;
        //New Shipmentdate
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date newshpdat;
        //New Maturity Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date newmatdat;
        //New positive tolerance
        private  int newnomtop;
        //New negative tolerance
        private  int newnomton;
        //confirmation amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal cnfamt = Decimals.ZERO_SCALE2;
        //confirmarion currency
        private  String cnfcur = NULLSTR;
        //Percentage or Amount Confirmed
        private  String cnfflg = NULLSTR;
        //Partial confirmation
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal partcon = Decimals.ZERO_SCALE2;
        //Sender to receiver info Tag 72
        private  String strinf = NULLSTR;
        //Add. Amount Flag
        private  String addamtflg = NULLSTR;
        //Approximate Expiry Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date newdtaappexpdat;
        //Additional Amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal addamt = Decimals.ZERO_SCALE2;
        //Additional Currency
        private  String addcur = NULLSTR;
        //Additional Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date adddat;
        //Number of days/months for maturity
        private  int newmatpercnt;
        //Start of Maturity Period
        private  String newmatperbeg = NULLSTR;
        //Days/Month or Year for Maturity Period
        private  String newmatpertyp = NULLSTR;
        //Additional External ID
        private  String addextid = NULLSTR;
        //Additional text field
        private  String addtxtfld = NULLSTR;
        //Additional Reference
        private  String addref = NULLSTR;
        //Account
        private  String acc = NULLSTR;
        //2nd account
        private  String acc2 = NULLSTR;
        //Narrative
        private  String nartxt = NULLSTR;
        //Value Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date valdat;
        //charges claimed
        private  String chacla = NULLSTR;
        //charges currency
        private  String chacur = NULLSTR;
        //charges amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal chaamt = Decimals.ZERO_SCALE2;
        //M1: BIC Advising Bank
        private  String m01advbic = NULLSTR;
        //M2: Advising Bank
        private  String m02advadrblk = NULLSTR;
        //M3: Reference Advising Bank
        private  String m03advref = NULLSTR;
        //M4: Contact to
        private  String m04advperson = NULLSTR;
        //M5: Confirmed
        private  String m05confir = NULLSTR;
        //M6: Notes for Confirmation
        private  String m06confirblk = NULLSTR;
        //M7: Notes Advising Bank
        private  String m07advconfirblk = NULLSTR;
        //M8: Fees Advising Bank
        private  String m08advfeeblk = NULLSTR;
        //M9: BIC Issuing Bank
        private  String m09issbic = NULLSTR;
        //M10: Issuing Bank
        private  String m10issadrblk = NULLSTR;
        //M23: Notes advising Bank
        private  String m23advcom = NULLSTR;
        //M11: Reference Issuing Bank
        private  String m11issref = NULLSTR;
        //M12: Opening date
        private  String m12opndat = NULLSTR;
        //M19: Advising date
        private  String m19advdat = NULLSTR;
        //M20: Reference Applicant
        private  String m20aplref = NULLSTR;
        //M21: Modifaction date
        private  String m21moddat = NULLSTR;
        //M22: Amendment counter
        private  String m22amecnt = NULLSTR;
        //M24: Info copy
        private  String m24infcpy = NULLSTR;
        //Alternative transactions
        private  String othtrn = NULLSTR;
        //Groups for OTHTRN
        private  String othgrp = NULLSTR;
        //Shipment Period
        private  String shpper = NULLSTR;
        //Additional Amount Covered
        private  String addamtcov = NULLSTR;
        //For Transportation to
        private  String shpto = NULLSTR;
        //Shipment from
        private  String shpfro = NULLSTR;
        //Unlimited Validity
        private  String newexpflg = NULLSTR;
        //Unlimited Liability
        private  String newliaflg = NULLSTR;
        //New Liability Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date newliadat;
        //Text for Amendments
        private  String ameblk = NULLSTR;
        //Accepted Amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal accamt = Decimals.ZERO_SCALE2;
        //Accepted Currency
        private  String acccur = NULLSTR;
        //Further Amendments
        private  String ametxt = NULLSTR;
        //Actual Amendment number
        private  int actamenbr;
        //Amount Specification
        private  String nomspc = NULLSTR;
        //Currency
        private  String tracur = NULLSTR;
        //Traced Amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal traamt = Decimals.ZERO_SCALE2;
        //Content of Tag 72
        private  String contag72 = NULLSTR;
        //Content of Tag 79
        private  String contag79 = NULLSTR;
        //Port of Loading
        private  String porloa = NULLSTR;
        //Port of Discharge
        private  String pordis = NULLSTR;
        //Messagetype
        private  String msgtyp = NULLSTR;
        //Date the incoming message was sent
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date snddat;
        //Object Type of Additional Contract
        private  String objtyp = NULLSTR;
        //Object INR of Additional Contract
        private  String objinr = NULLSTR;
        //tag M9 Execution Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date m9exedat;
        //Description of Goods amendment
        private  String lcrgod = NULLSTR;
        //Documents Required amendment
        private  String lcrdoc = NULLSTR;
        //Additional Conditions amendment
        private  String adlcnd = NULLSTR;
        //Narrative modified
        private  String nartxtflg = NULLSTR;
        //Instruction to P/A/N Bank amendment
        private  String insbnk = NULLSTR;
        //New amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal newam1 = Decimals.ZERO_SCALE2;
        //New Expiry Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date newexpda1;
        //New Shipmentdate
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date newshpda1;
        //New Maturity Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date newmatda1;
        //New positive tolerance
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal newnomtop1 = Decimals.ZERO_SCALE5;
        //Description of Goods amendment
        private  String lcrgo1 = NULLSTR;
        //Documents Required amendment
        private  String lcrdo1 = NULLSTR;
        //Additional Conditions amendment
        private  String adlcn1 = NULLSTR;
        //Instruction to P/A/N Bank amendment
        private  String insbn1 = NULLSTR;
        //New negative tolerance
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal newnomton1 = Decimals.ZERO_SCALE5;
        //Amended Amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal ameam1 = Decimals.ZERO_SCALE2;
        //Maximum Tenor
        private  int tenmaxday;
        //Additional Amount Covered Seq. C
        private  String addamtcovc = NULLSTR;
        //Additional Amount Flag Seq. C
        private  String addamtflgc = NULLSTR;
        //Text for Amendments
        private  String ameblkc = NULLSTR;
        //Increase of Local Undertaking Amount
        private  String amecurc = NULLSTR;
        //Increase of Local Guarantee Amount
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal ameamtc = Decimals.ZERO_SCALE2;
        //Amendment Status
        private  String amestatxt = NULLSTR;
        //Additional Currency Seq. C
        private  String addcurc = NULLSTR;
        //Expiry Type
        private  String exptyp = NULLSTR;
        //Instruction to P/A/N Bank amendment
        private  String insbnk1 = NULLSTR;
        //Expiry Condition/Event
        private  String exptxt = NULLSTR;
        //incoming Text of claim allNETT
        private  String incclmtxt = NULLSTR;
        //Expiry Condition/Event
        private  String liatxtc = NULLSTR;
        //Middle Rate
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal midrat = Decimals.ZERO_SCALE6;
        //New interest amount direct pay guarantees
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal newintamt = Decimals.ZERO_SCALE2;
        //New spread
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal newintrat = Decimals.ZERO_SCALE6;
        //Expiry Type
        private  String liatypc = NULLSTR;
        //Days of presentation period
        private  int prepers18;
        //New Tenor Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date newtendat;
        //Purpose of message
        private  String purpos = "ISSU";
        //Currency of new amount  Counter Guarantee
        private  String newcurc = NULLSTR;
        //New Amount Local Guarantee
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal newamtc = Decimals.ZERO_SCALE2;
        //Presentation period text
        private  String prepertxts18 = NULLSTR;
        //Purpose of amendment  message
        private  String purposame = NULLSTR;
        //Amended Tenor
        private  String newten = NULLSTR;
        //Special payment conditions for beneficiary amendment
        private  String spcben = NULLSTR;
        //Rate
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal rat = Decimals.ZERO_SCALE10;
        //Cancellation Request
        private  String reqcan = NULLSTR;
        //Old spread
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal oldintrat = Decimals.ZERO_SCALE5;
        //Special payment conditions for receiver bank amendment
        private  String spcrcb = NULLSTR;
        //Narrative
        private  String strinfs20 = NULLSTR;
        //Purpose of amendment  message
        private  String purposamein = NULLSTR;
        //Text Purpose
        private  String tag25f = NULLSTR;
        //Score Customer Reference Tag 21A
        private  String tag21aref = NULLSTR;
        //Own Charges Borne by
        private  String trnchato = NULLSTR;
        //Form of Documentary Credit
        private  String lcrtyp = NULLSTR;
        //Additional Details to Code for Charges CHATO
        private  String trnfeetxt = NULLSTR;
        //Additional Amount Covered
        private  String addamtcovs20 = NULLSTR;
        //Add. Information
        private  String ameinf = NULLSTR;
        //Additional Amount Seq. C
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal addamtc = Decimals.ZERO_SCALE2;
        //Narrative for MT 759
        private  String tag45d = NULLSTR;
        //Content of Fields can not be mapped
        private  IStream addblk = new StreamImpl();
        //TCO M1 Reference
        private  String tcom1ref = NULLSTR;
        //Accept Date
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date accdat;
        //退单日期
        @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
        private  Date retdat;
        //通知状态
        private  String ntcestat = NULLSTR;
        //拒绝理由
        private  String rsn = NULLSTR;
        //原报文标识号
        private  String orimsgid = NULLSTR;
        //原发起癧接参与机构
        private  String oriinstgagt = NULLSTR;
        //原报文类型
        private  String orimsgtyp = NULLSTR;
        //带单类型
        private  String bllarltp = NULLSTR;
        //修改状态
        private  String modfystat = NULLSTR;
        //For Transportation to
        private  String shptoelc = NULLSTR;
        //Shipment from
        private  String shpfroelc = NULLSTR;
        //单据信息电证
        private  String contag46c = NULLSTR;
        //For Transportation to
        private  String shptoel1 = NULLSTR;
        //Shipment from
        private  String shpfroel1 = NULLSTR;
        //槸易类型
        private  String mytype = NULLSTR;
        //Maximum Tenor
        private  int tenmaxday1;
        //槸易类型
        private  String mytype1 = NULLSTR;
        //手续槹先收后收
        private  String disfee = NULLSTR;
        //电子保函手续槹金额
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal dzfeeamt1 = Decimals.ZERO_SCALE2;
        //电子保函客户收槹帐号
        private  String dzextacc1 = NULLSTR;
        //电子保函转开手续槹金额
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal dzfeeamt2 = Decimals.ZERO_SCALE2;
        //电子保函客户收槹槦号
        private  String dzextacc2 = NULLSTR;
        //额度类型
        private  String nonrevflg1 = NULLSTR;
        //额度品种代码
        private  String limcodsave = NULLSTR;
        //额度编号
        private  String limref = NULLSTR;
        //额度明细编号
        private  String infref = NULLSTR;
        //Additional text for letter
        private  String addtxt = NULLSTR;
        //电子保函修改手续槹金额
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal dzbhfeamt = Decimals.ZERO_SCALE2;
        //保函修改手续槹收槹槦号
        private  String dzbhamefeacc = NULLSTR;
        //New positive tolerance for GNZ
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal newnomtopame = Decimals.ZERO_SCALE5;
        //New negative tolerance for GNZ
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal newnomtoname = Decimals.ZERO_SCALE5;
        //发起参与机构
        private  String dzlhhh = NULLSTR;
        @JsonSerialize(using = BigDecimalSerialize.class)
        private  BigDecimal addameamt = Decimals.ZERO_SCALE2;
        //Additional Currency
        private  String addamecur = NULLSTR;

        private String ejsorcref = NULLSTR;

        private BigDecimal opn2amt = Decimals.ZERO_SCALE2;

        private String payeecountcode = NULLSTR;

        //ltdgrp.rec.expplc(New Expiry Place)
        private String expplc = NULLSTR;

        //ltdgrp.rec.shppars18(New Partial Shipment)
        private String shppars18 = NULLSTR;

        //ltdgrp.rec.shptrss18(New Transhipment)
        private String shptrss18 = NULLSTR;

        //ltdgrp.rec.apprul(New Applicable Rules)
        private String apprul = NULLSTR;

        //ltdgrp.rec.apprultxt(New Other Applicable Rules)
        private String apprultxt = NULLSTR;

        //ltdgrp.rec.cnfins(New Confirm. Instructions)
        private String cnfins = NULLSTR;

        //ltdgrp.rec.stacty(New Country Code)
        private String stacty = NULLSTR;
}