package com.brilliance.isc.convert.mt2xx;

import com.brilliance.isc.swift.objmtconvert.manager.MtCreatorManager;
import com.brilliance.isc.swift.objmtconvert.model.commontag.ActnoBicAdrTagXXX;
import com.brilliance.isc.swift.objmtconvert.model.commontag.DcDateCurAmtTagXXX;
import com.brilliance.isc.swift.objmtconvert.model.mt2xx.MT202COVCreator;
import com.brilliance.isc.swift.objmtconvert.model.mt2xx.MT202Creator;
import com.brilliance.isc.swift.objmtconvert.result.MtResult;
import com.brilliance.isc.swift.objmtconvert.util.JsonUtil;
import org.junit.Test;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * @author huangmengyuan
 * @create 2023/2/27
 */
public class MT202COVTest {
    @Test
    public void mt202COV_Test(){

        MT202COVCreator mt202COVCreator = new MT202COVCreator("202COV");


        //52A 52D
        ActnoBicAdrTagXXX actnoBicAdr52a = new ActnoBicAdrTagXXX("52");
        actnoBicAdr52a.setBic("WHYHCNHBX01");
        actnoBicAdr52a.setPartyIdentifier("2222-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //53A 53B 53D
        ActnoBicAdrTagXXX actnoBicAdr53a = new ActnoBicAdrTagXXX("53");
        actnoBicAdr53a.setAddress("WJHGJGJ");
        actnoBicAdr53a.setPartyIdentifier("1234-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");


        //54A 54B 54D
        ActnoBicAdrTagXXX actnoBicAdr54a = new ActnoBicAdrTagXXX("54");
        actnoBicAdr54a.setAcctno("HVJHJHJH");
        actnoBicAdr54a.setPartyIdentifier("3333-4321");
        actnoBicAdr54a.setLocation("JHGJGJJHNBMN");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //56A 56D
        ActnoBicAdrTagXXX actnoBicAdr56a = new ActnoBicAdrTagXXX("56");
        actnoBicAdr56a.setAddress("WJHGJGJ");
        actnoBicAdr56a.setPartyIdentifier("4444-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //57A 57B 57D
        ActnoBicAdrTagXXX actnoBicAdr57a = new ActnoBicAdrTagXXX("57");
        actnoBicAdr57a.setAddress("WJHGJGJ");
        actnoBicAdr57a.setPartyIdentifier("7777-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //58A 58D
        ActnoBicAdrTagXXX actnoBicAdr58a = new ActnoBicAdrTagXXX("58");
        actnoBicAdr58a.setAddress("WJHGJGJ");
        actnoBicAdr58a.setPartyIdentifier("8888-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");
        //20
        mt202COVCreator.setTransactionReferenceNumber("111");//16x
        //21
        mt202COVCreator.setRelatedReference("2222");//16x
        LinkedList<Object> list13C = new LinkedList<>();
        list13C.add("/BEN/1234-3625");
//        list13C.add("/1234");
        mt202COVCreator.setTimeIndication(list13C);
        //32A
        DcDateCurAmtTagXXX dcDateCurAmt32A = new DcDateCurAmtTagXXX("32");
        dcDateCurAmt32A.setDate("200306");
        dcDateCurAmt32A.setCurrency("USD");
        dcDateCurAmt32A.setAmount(new BigDecimal("2000.00"));
        mt202COVCreator.setValueDateCurrencyAmount(dcDateCurAmt32A);//6!n3!a15d
        //52A 52D
        mt202COVCreator.setOrderingInstitution(actnoBicAdr52a);//A,D
        //53A 53B 53D
        mt202COVCreator.setSendersCorrespondent(actnoBicAdr53a);//A,B,D
        //54A 54B 54D
        mt202COVCreator.setReceiversCorrespondent(actnoBicAdr54a);//A,B,D
        //56A 56D
        mt202COVCreator.setIntermediary(actnoBicAdr56a);//A,D
        //57A 57B 57D
//        mt202COVCreator.setAccountWithInstitution(actnoBicAdr57a);//A,B,D
        //58A 58D
        mt202COVCreator.setBeneficiaryInstitution(actnoBicAdr58a);//A,D
        //72
        mt202COVCreator.setSenderToReceiverInformation("/002TEST/12345\r\n/002TEST/5555");//6*35x

        //B 50A 50F 50k
        ActnoBicAdrTagXXX actnoBicAdrB50a = new ActnoBicAdrTagXXX("50");
        actnoBicAdrB50a.setBic("WHYHCNHBX01");
        actnoBicAdrB50a.setPartyIdentifier("2222-4321");

        //B 52A 52D
        ActnoBicAdrTagXXX actnoBicAdrB52a = new ActnoBicAdrTagXXX("52");
        actnoBicAdrB52a.setAddress("WJHGJGJ");
        actnoBicAdrB52a.setPartyIdentifier("1234-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");


        //B 56A 56C 56D
        ActnoBicAdrTagXXX actnoBicAdrB56a = new ActnoBicAdrTagXXX("56");
        actnoBicAdrB56a.setAcctno("HVJHJHJH");
        actnoBicAdrB56a.setPartyIdentifier("3333-4321");
//        actnoBicAdrB56a.setLocation("JHGJGJJHNBMN");
        actnoBicAdrB56a.setBic("WHYHCNHBXXX");

        //B 57A 57B 57C 57D
        ActnoBicAdrTagXXX actnoBicAdrB57a = new ActnoBicAdrTagXXX("57");
        actnoBicAdrB57a.setAddress("WJHGJGJ");
        actnoBicAdrB57a.setPartyIdentifier("4444-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //B 59 59A 59F
        ActnoBicAdrTagXXX actnoBicAdrB59a = new ActnoBicAdrTagXXX("59");
        actnoBicAdrB59a.setAcctno("PJKKNKNK");
        actnoBicAdrB59a.setAddress("WJHGJGJ");



        //50a
        mt202COVCreator.setOrderingCustomerB(actnoBicAdrB50a);//A,F,K
        //52A 52D
        mt202COVCreator.setOrderingInstitutionB(actnoBicAdrB52a);//A,D
        //56A 56D
        mt202COVCreator.setIntermediaryInstitutionB(actnoBicAdrB56a);//A,C,D
        //57A 57B 57D
//        mt202COVCreator.setAccountWithInstitutionB(actnoBicAdrB57a);//A,B,C,D
        //59a
        mt202COVCreator.setBeneficiaryCustomerB(actnoBicAdrB59a);//59,A,F
        //70
        mt202COVCreator.setRemittanceInformationB("JJKBKM");//4*35x
        //72
        mt202COVCreator.setSendertoReceiverInformationB("MNBGFYTYKK");//6*35x
        //33B
        DcDateCurAmtTagXXX dcDateCurAmtB33B= new DcDateCurAmtTagXXX("33");
        dcDateCurAmtB33B.setCurrency("USD");
        dcDateCurAmtB33B.setAmount(new BigDecimal("1000.00"));
        mt202COVCreator.setCurrencyAmountB(dcDateCurAmtB33B);//3!a15d

        MtCreatorManager.packMT(mt202COVCreator);

    }
    @Test
    public void mt202COV_Test2(){

        MT202COVCreator mt202COVCreator = new MT202COVCreator("202COV");


        //52A 52D
        ActnoBicAdrTagXXX actnoBicAdr52a = new ActnoBicAdrTagXXX("52");
        actnoBicAdr52a.setBic("WHYHCNHBX01");
        actnoBicAdr52a.setPartyIdentifier("2222-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //53A 53B 53D
        ActnoBicAdrTagXXX actnoBicAdr53a = new ActnoBicAdrTagXXX("53");
        actnoBicAdr53a.setAddress("WJHGJGJ");
        actnoBicAdr53a.setPartyIdentifier("1234-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");


        //54A 54B 54D
        ActnoBicAdrTagXXX actnoBicAdr54a = new ActnoBicAdrTagXXX("54");
        actnoBicAdr54a.setAcctno("HVJHJHJH");
        actnoBicAdr54a.setPartyIdentifier("3333-4321");
        actnoBicAdr54a.setLocation("JHGJGJJHNBMN");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //56A 56D
        ActnoBicAdrTagXXX actnoBicAdr56a = new ActnoBicAdrTagXXX("56");
        actnoBicAdr56a.setAddress("WJHGJGJ");
        actnoBicAdr56a.setPartyIdentifier("4444-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //57A 57B 57D
        ActnoBicAdrTagXXX actnoBicAdr57a = new ActnoBicAdrTagXXX("57");
        actnoBicAdr57a.setAddress("WJHGJGJ");
        actnoBicAdr57a.setPartyIdentifier("7777-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //58A 58D
        ActnoBicAdrTagXXX actnoBicAdr58a = new ActnoBicAdrTagXXX("58");
        actnoBicAdr58a.setAddress("WJHGJGJ");
        actnoBicAdr58a.setPartyIdentifier("8888-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");
        //20
        mt202COVCreator.setTransactionReferenceNumber("111PLOJIUGJHBJBFYHGCGFCHGVBVNVJ");//16x
        //21
        mt202COVCreator.setRelatedReference("2222");//16x
        LinkedList<Object> list13C = new LinkedList<>();
        list13C.add("/BEN/1234-3625");
//        list13C.add("/1234");
        mt202COVCreator.setTimeIndication(list13C);
        //32A
        DcDateCurAmtTagXXX dcDateCurAmt32A = new DcDateCurAmtTagXXX("32");
        dcDateCurAmt32A.setDate("200306");
        dcDateCurAmt32A.setCurrency("USD");
        dcDateCurAmt32A.setAmount(new BigDecimal("2000.00"));
        mt202COVCreator.setValueDateCurrencyAmount(dcDateCurAmt32A);//6!n3!a15d
        //52A 52D
        mt202COVCreator.setOrderingInstitution(actnoBicAdr52a);//A,D
        //53A 53B 53D
        mt202COVCreator.setSendersCorrespondent(actnoBicAdr53a);//A,B,D
        //54A 54B 54D
        mt202COVCreator.setReceiversCorrespondent(actnoBicAdr54a);//A,B,D
        //56A 56D
        mt202COVCreator.setIntermediary(actnoBicAdr56a);//A,D
        //57A 57B 57D
        mt202COVCreator.setAccountWithInstitution(actnoBicAdr57a);//A,B,D
        //58A 58D
        mt202COVCreator.setBeneficiaryInstitution(actnoBicAdr58a);//A,D
        //72
        mt202COVCreator.setSenderToReceiverInformation("/002TEST/12345\r\n/002TEST/5555");//6*35x

        //B 50A 50F 50k
        ActnoBicAdrTagXXX actnoBicAdrB50a = new ActnoBicAdrTagXXX("50");
        actnoBicAdrB50a.setBic("WHYHCNHBX01");
        actnoBicAdrB50a.setPartyIdentifier("2222-4321");

        //B 52A 52D
        ActnoBicAdrTagXXX actnoBicAdrB52a = new ActnoBicAdrTagXXX("52");
        actnoBicAdrB52a.setAddress("WJHGJGJ\r\nWJHGJGJ\r\nWJHGJGJ");
        actnoBicAdrB52a.setPartyIdentifier("1234-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");


        //B 56A 56C 56D
        ActnoBicAdrTagXXX actnoBicAdrB56a = new ActnoBicAdrTagXXX("56");
        actnoBicAdrB56a.setAcctno("HVJHJHJH");
        actnoBicAdrB56a.setPartyIdentifier("3333-4321");
//        actnoBicAdrB56a.setLocation("JHGJGJJHNBMN");
        actnoBicAdrB56a.setBic("WHYHCNHBXXX");

        //B 57A 57B 57C 57D
        ActnoBicAdrTagXXX actnoBicAdrB57a = new ActnoBicAdrTagXXX("57");
        actnoBicAdrB57a.setAddress("WJHGJGJ");
        actnoBicAdrB57a.setPartyIdentifier("4444-4321");
//        actnoBicAdrTagXXX.setBic("WHYHCNHBXXX");

        //B 59 59A 59F
        ActnoBicAdrTagXXX actnoBicAdrB59a = new ActnoBicAdrTagXXX("59");
        actnoBicAdrB59a.setAddress("WJHGJGJ");


        //50a
        mt202COVCreator.setOrderingCustomerB(actnoBicAdrB50a);//A,F,K
        //52A 52D
        mt202COVCreator.setOrderingInstitutionB(actnoBicAdrB52a);//A,D
        //56A 56D
        mt202COVCreator.setIntermediaryInstitutionB(actnoBicAdrB56a);//A,C,D
        //57A 57B 57D
        mt202COVCreator.setAccountWithInstitutionB(actnoBicAdrB57a);//A,B,C,D
        //59a
        mt202COVCreator.setBeneficiaryCustomerB(actnoBicAdrB59a);//59,A,F
        //70
        mt202COVCreator.setRemittanceInformationB("JJKBKM");//4*35x
        //72
        mt202COVCreator.setSendertoReceiverInformationB("MNBGFYTYKK");//6*35x
        //33B
        DcDateCurAmtTagXXX dcDateCurAmtB33B= new DcDateCurAmtTagXXX("33");
        dcDateCurAmtB33B.setCurrency("USD");
        dcDateCurAmtB33B.setAmount(new BigDecimal("1000.00"));
        mt202COVCreator.setCurrencyAmountB(dcDateCurAmtB33B);//3!a15d

        MtCreatorManager.packMT(mt202COVCreator);

    }
}
