Commit 182bca3f by chengzhuoshen

1.refactoring mx2mt 202/202Cov

2.采用xmlFilter的方式解析报文,转换成mt格式文本
parent 9cc67259
......@@ -61,4 +61,19 @@ public abstract class AbstractMx2MtFieldsGenerate implements Mx2MtFieldsGenerate
}
return account;
}
protected String getBicCode(String type, Document document, String path) {
//AnyBIC BICFI BICOrBEI BIC
String bicCode = getXmlNodeValue(type, document, path+".AnyBIC");
if (StringUtil.isEmpty(bicCode)) {
bicCode = getXmlNodeValue(type, document, path+".BICFI");
}
if (StringUtil.isEmpty(bicCode)) {
bicCode = getXmlNodeValue(type, document, path+".BICOrBEI");
}
if (StringUtil.isEmpty(bicCode)) {
bicCode = getXmlNodeValue(type, document, path+".BIC");
}
return bicCode;
}
}
......@@ -21,26 +21,26 @@ public class Field13CGenerate extends AbstractMx2MtFieldsGenerate {
public void fieldsGenerate() throws SwiftException {
try {
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
List<String> filed13cList = new ArrayList<>();
List<String> filed13CList = new ArrayList<>();
String dbtDtTmStr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.SttlmTmIndctn.DbtDtTm");
if (StringUtil.isNotEmpty(dbtDtTmStr)) {
XMLGregorianCalendar dbtDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(dbtDtTmStr);
String hourTime = DateUtil.format(dbtDtTm, "HHmm");
filed13cList.add("/SNDTIME/"+hourTime+"+0800");
filed13CList.add("/SNDTIME/"+hourTime+"+0800");
}
String cdtDtTmStr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.SttlmTmIndctn.CdtDtTm");
if (StringUtil.isNotEmpty(cdtDtTmStr)) {
XMLGregorianCalendar cdtDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(cdtDtTmStr);
String hourTime = DateUtil.format(cdtDtTm, "HHmm");
filed13cList.add("/RNCTIME/"+hourTime+"+0800");
filed13CList.add("/RNCTIME/"+hourTime+"+0800");
}
String clsDtTmStr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.SttlmTmReq.CLSTm");
if (StringUtil.isNotEmpty(clsDtTmStr)) {
XMLGregorianCalendar clsDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(clsDtTmStr);
String hourTime = DateUtil.format(clsDtTm, "HHmm");
filed13cList.add("/CLSTIME/"+hourTime+"+0800");
filed13CList.add("/CLSTIME/"+hourTime+"+0800");
}
map.put("field13CList", filed13cList);
map.put("field13CList", filed13CList);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
}
......
......@@ -31,7 +31,7 @@ public class Field50AGenerate extends AbstractMx2MtFieldsGenerate {
String field50Option = "";
String field50 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Dbtr.Id.OrgId.AnyBIC");
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Dbtr.Id.OrgId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Dbtr.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
......@@ -70,7 +70,7 @@ public class Field50AGenerate extends AbstractMx2MtFieldsGenerate {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAcct.IBAN");
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAcct.Id.Othr.Id");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
......
......@@ -29,7 +29,7 @@ public class Field52AGenerate extends AbstractMx2MtFieldsGenerate {
String field52Option = "";
String field52 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgt.FinInstnId.BICFI");
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgt.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgt.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
......@@ -68,7 +68,7 @@ public class Field52AGenerate extends AbstractMx2MtFieldsGenerate {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.IBAN");
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.Othr.Id");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(iban)) {
......
......@@ -35,7 +35,7 @@ public class Field53AGenerate extends AbstractMx2MtFieldsGenerate {
String field53Option = "";
String field53 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstgRmbrsmntAgt.FinInstnId.BICFI");
String bicCode = getBicCode(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstgRmbrsmntAgt.FinInstnId");
String account = getAccount();
String sttlmAccount = getSttlmAccount();
String name = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstgRmbrsmntAgt.FinInstnId.Nm");
......
......@@ -28,7 +28,7 @@ public class Field54AGenerate extends AbstractMx2MtFieldsGenerate {
String field54Option = "";
String field54 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstdRmbrsmntAgt.FinInstnId.BICFI");
String bicCode = getBicCode(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstdRmbrsmntAgt.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstdRmbrsmntAgt.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
......
......@@ -28,7 +28,7 @@ public class Field55AGenerate extends AbstractMx2MtFieldsGenerate {
String field55Option = "";
String field55 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.ThrdRmbrsmntAgt.FinInstnId.BICFI");
String bicCode = getBicCode(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.ThrdRmbrsmntAgt.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.ThrdRmbrsmntAgt.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
......
......@@ -36,7 +36,7 @@ public class Field56AGenerate extends AbstractMx2MtFieldsGenerate {
String field56Option = "";
String field56 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrmyAgt1.FinInstnId.BICFI");
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrmyAgt1.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrmyAgt1.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
......@@ -76,9 +76,10 @@ public class Field56AGenerate extends AbstractMx2MtFieldsGenerate {
} else {
account = "/" + iban;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
field56 = account.substring(0, 35);
if (account.length() > 35) {
account = account.substring(0, 35);
}
field56 = account;
}
map.put("field56Option", field56Option);
map.put("field56", field56);
......
......@@ -36,7 +36,7 @@ public class Field57AGenerate extends AbstractMx2MtFieldsGenerate {
String field57Option = "";
String field57 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAgt.FinInstnId.BICFI");
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAgt.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAgt.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
......@@ -76,9 +76,10 @@ public class Field57AGenerate extends AbstractMx2MtFieldsGenerate {
} else {
account = "/" + iban;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
field57 = account.substring(0, 35);
if (account.length() > 35) {
account = account.substring(0, 35);
}
field57 = account;
}
map.put("field57Option", field57Option);
map.put("field57", field57);
......
......@@ -30,7 +30,7 @@ public class Field59Generate extends AbstractMx2MtFieldsGenerate {
String field59Option = "";
String field59 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Cdtr.Id.OrgId.AnyBIC");
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Cdtr.Id.OrgId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Cdtr.Nm");
if (StringUtil.isNotEmpty(name)){
......
......@@ -28,9 +28,8 @@ public class Field72Generate extends AbstractMx2MtFieldsGenerate {
try {
List<String> field72List = new ArrayList<>();
List<String> field72TmpList = new ArrayList<>();
String field72 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.PrvsInstgAgt1.FinInstnId.BICFI");
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.PrvsInstgAgt1.FinInstnId");
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.PrvsInstgAgt1.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
bicCode = Mx2MtConstants.INS + bicCode;
......@@ -49,14 +48,12 @@ public class Field72Generate extends AbstractMx2MtFieldsGenerate {
nxtAgtInstrInf = Mx2MtConstants.REC + nxtAgtInstrInf;
field72TmpList.addAll(StringUtil.outStringList(nxtAgtInstrInf, 35, "//"));
}
int maxSize = field72TmpList.size() > 6 ? 6 : field72TmpList.size();
if (maxSize > 0) {
for (int i=0; i<maxSize; i++) {
if (i == 0) {
field72List.add(":72:" + field72TmpList.get(i));
} else {
field72List.add(field72TmpList.get(i));
}
for (int i=0; i<field72TmpList.size(); i++) {
if (i == 6) break;
if (i == 0) {
field72List.add(":72:" + field72TmpList.get(i));
} else {
field72List.add(field72TmpList.get(i));
}
}
map.put("field72List", field72List);
......
......@@ -8,19 +8,55 @@ import com.prowidesoftware.brilliance.mx2mt.mt202cov202.impl.*;
import com.prowidesoftware.brilliance.mx2mt.mt202cov202.impl.cov.*;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.brilliance.util.TemplateUtil;
import com.prowidesoftware.brilliance.util.XmlUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.CreditTransferTransactionInformation13;
import com.prowidesoftware.swift.model.mx.dic.FinancialInstitutionCreditTransferV02;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
public class Mx2Mt202Creator extends AbstractMx2MtCreator {
private static final Logger logger = LoggerFactory.getLogger(Mx2Mt202Creator.class);
@Override
public void preProcess() {
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
Map<String, String> parentElementMaps = XmlUtil.getParentElementMaps(document);
map.put(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, parentElementMaps.get("GrpHdr"));
map.put(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, parentElementMaps.get("CdtTrfTxInf"));
map.put(Mx2MtConstants.MT_TEMPLATE_NAME, "swift_mt_202cov.vm");
}
@Override
public void generateHead3() {
String head3 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String uetr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.PmtId.UETR");
if (StringUtil.isNotEmpty(uetr)) {
head3 += "{121:"+uetr+"}";
}
boolean mt202CoverFlag = false;
Map<String, String> maps = XmlUtil.getParentElementMaps(document);
Iterator<String> keys = maps.keySet().iterator();
for (; keys.hasNext(); ) {
String key = keys.next();
String value = maps.get(key);
String fullPath = value + "." + key;
if (fullPath.indexOf("UndrlygCstmrCdtTrf") > -1
&& StringUtil.isNotEmpty(XmlUtil.getXmlNodeValue(document, fullPath))){
mt202CoverFlag = true;
break;
}
}
if (mt202CoverFlag) {
head3 += Mx2MtConstants.HEAD3_MT202_COVER;
}
map.put("head3", head3);
}
@Override
public List<Mx2MtFieldsGenerate> getFieldsGenerateList() {
List<Mx2MtFieldsGenerate> fieldsGenerateList = new ArrayList<>();
fieldsGenerateList.add(new Field20Generate());
......@@ -46,44 +82,8 @@ public class Mx2Mt202Creator extends AbstractMx2MtCreator {
}
@Override
public String generateMtMsg() {
String outPutFilePath = (String)map.get(Mx2MtConstants.OUT_PUT_FILE_PATH);
String msg = TemplateUtil.makeFileByTemplate("swift_mt_202cov.vm", map, outPutFilePath, "utf-8");
return msg;
}
public void postProcess() {
/**
* 判断使用202模板或者202cov模板
* 依据202cov必有值项50有值的话则使用202cov的模板
* @return true:202cov,false:202
*/
public boolean getMtCov(){
Boolean msg = false;
try {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
msg = false;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf() != null
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getDbtr() != null
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getDbtr().getId() != null
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getDbtr().getId().getOrgId() != null
&& StringUtil.isNotEmpty(cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getDbtr().getId().getOrgId().getBICOrBEI())){
msg = true;
}
if (cdtTrfTxInf.size() > 0
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf() != null
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getDbtr() != null
&& StringUtil.isNotEmpty(cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getDbtr().getNm())){
msg = true;
}
} catch(Exception e) {
throw new SwiftException("ERROR", "Judge 202 or 202Cov error");
}
return msg;
}
@Override
......@@ -91,12 +91,4 @@ public class Mx2Mt202Creator extends AbstractMx2MtCreator {
return Mx2MtConstants.MT_TYPE_202;
}
@Override
public void generateHead3() {
String head3 = "";
if (getMtCov()) {
head3 = Mx2MtConstants.HEAD3_MT202_COVER;
}
map.put("head3", head3);
}
}
\ No newline at end of file
......@@ -4,11 +4,12 @@ import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.DateUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.CreditTransferTransactionInformation13;
import com.prowidesoftware.brilliance.util.StringUtil;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.util.ArrayList;
import java.util.List;
......@@ -27,35 +28,30 @@ public class Field13CGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return;
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
List<String> filed13CList = new ArrayList<>();
String dbtDtTmStr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.SttlmTmIndctn.DbtDtTm");
if (StringUtil.isNotEmpty(dbtDtTmStr)) {
XMLGregorianCalendar dbtDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(dbtDtTmStr);
String hourTime = DateUtil.format(dbtDtTm, "HHmm");
filed13CList.add("/SNDTIME/"+hourTime+"+0800");
}
List<CreditTransferTransactionInformation13> cdtTrfTxInf = obj.getFinInstnCdtTrf().getCdtTrfTxInf();
List<String> field13cList = new ArrayList<>();
if (obj.getFinInstnCdtTrf().getCdtTrfTxInf().get(0).getSttlmTmIndctn().getDbtDtTm() != null){
XMLGregorianCalendar dbtDtTm = cdtTrfTxInf.get(0).getSttlmTmIndctn().getDbtDtTm();
String hmm = DateUtil.format(dbtDtTm, "HHmm");
field13cList.add("/SNDTIME/"+hmm+"+0800");
String cdtDtTmStr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.SttlmTmIndctn.CdtDtTm");
if (StringUtil.isNotEmpty(cdtDtTmStr)) {
XMLGregorianCalendar cdtDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(cdtDtTmStr);
String hourTime = DateUtil.format(cdtDtTm, "HHmm");
filed13CList.add("/RNCTIME/"+hourTime+"+0800");
}
if (obj.getFinInstnCdtTrf().getCdtTrfTxInf().get(0).getSttlmTmIndctn().getCdtDtTm() != null){
XMLGregorianCalendar dbtDtTm = cdtTrfTxInf.get(0).getSttlmTmIndctn().getCdtDtTm();
String hmm = DateUtil.format(dbtDtTm, "HHmm");
field13cList.add("/RNCTIME/"+hmm+"+0800");
}
if (obj.getFinInstnCdtTrf().getCdtTrfTxInf().get(0).getSttlmTmReq() != null
&& obj.getFinInstnCdtTrf().getCdtTrfTxInf().get(0).getSttlmTmReq().getCLSTm() != null){
XMLGregorianCalendar dbtDtTm = cdtTrfTxInf.get(0).getSttlmTmReq().getCLSTm();
String hmm = DateUtil.format(dbtDtTm, "HHmm");
field13cList.add("/CLSTIME/"+hmm+"+0800");
}
if (field13cList.size() > 0) {
map.put("field13cList", field13cList);
String clsDtTmStr = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.SttlmTmReq.CLSTm");
if (StringUtil.isNotEmpty(clsDtTmStr)) {
XMLGregorianCalendar clsDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(clsDtTmStr);
String hourTime = DateUtil.format(clsDtTm, "HHmm");
filed13CList.add("/CLSTIME/"+hourTime+"+0800");
}
map.put("field13CList", filed13CList);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
}
}
}
......@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.FinancialInstitutionCreditTransferV02;
import com.prowidesoftware.swift.model.mx.dic.GroupHeader35;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -18,13 +19,10 @@ public class Field20Generate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
GroupHeader35 grpHdr = finInstnCdtTrf.getGrpHdr();
map.put("field20", grpHdr.getMsgId());
String field20 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
field20 = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.MsgId");
map.put("field20", field20);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
}
......
package com.prowidesoftware.brilliance.mx2mt.mt202cov202.impl;
import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.FinancialInstitutionCreditTransferV02;
import com.prowidesoftware.brilliance.util.StringUtil;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -16,18 +17,10 @@ public class Field21Generate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
String field21 = "NONREF";
MxPacs00900102 obj = (MxPacs00900102)map.get("mxObj");
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
if (finInstnCdtTrf.getCdtTrfTxInf() != null && finInstnCdtTrf.getCdtTrfTxInf().size() > 0) {
if (finInstnCdtTrf.getCdtTrfTxInf().get(0) != null
&& finInstnCdtTrf.getCdtTrfTxInf().get(0).getPmtId() != null
&& finInstnCdtTrf.getCdtTrfTxInf().get(0).getPmtId().getEndToEndId() != null){
field21 = finInstnCdtTrf.getCdtTrfTxInf().get(0).getPmtId().getEndToEndId();
}
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String field21 = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.PmtId.EndToEndId");
if (StringUtil.isEmpty(field21)) {
field21 = "NONREF";
}
map.put("field21", field21);
} catch(Exception e) {
......
......@@ -5,16 +5,14 @@ import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.DateUtil;
import com.prowidesoftware.brilliance.util.NumberUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.ActiveCurrencyAndAmount;
import com.prowidesoftware.swift.model.mx.dic.CreditTransferTransactionInformation13;
import com.prowidesoftware.swift.model.mx.dic.FinancialInstitutionCreditTransferV02;
import com.prowidesoftware.brilliance.util.StringUtil;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.math.BigDecimal;
import java.util.List;
/**
* 直接取<IntrBkSttlmDt>节点作为32A的value date,Amt和Ccy看另一个节点,XXX是货币
......@@ -28,34 +26,23 @@ public class Field32AGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return;
String intrBkSttlmDtStr = "";
String intrBkSttlmAmt = "";
String intrBkSttlmccy = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String intrBkSttlmDtValue = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrBkSttlmDt");
if (StringUtil.isNotEmpty(intrBkSttlmDtValue)) {
XMLGregorianCalendar intrBkSttlmDt = DatatypeFactory.newInstance().newXMLGregorianCalendar(intrBkSttlmDtValue);
intrBkSttlmDtStr = DateUtil.format(intrBkSttlmDt, "yyMMdd");
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf != null && cdtTrfTxInf.size() > 0){
if (cdtTrfTxInf.get(0) != null
&& cdtTrfTxInf.get(0).getIntrBkSttlmAmt() != null
&& cdtTrfTxInf.get(0).getIntrBkSttlmAmt().getCcy() != null
&& cdtTrfTxInf.get(0).getIntrBkSttlmAmt().getValue() != null){
String yyMMdd = "";
if (cdtTrfTxInf.get(0).getIntrBkSttlmDt() != null){
XMLGregorianCalendar dt = cdtTrfTxInf.get(0).getIntrBkSttlmDt();
yyMMdd = DateUtil.format(dt, "yyMMdd");
}
ActiveCurrencyAndAmount intrBkSttlmAmt = cdtTrfTxInf.get(0).getIntrBkSttlmAmt();
String ccy = "";
String amtStr = "";
if (intrBkSttlmAmt != null) {
ccy = intrBkSttlmAmt.getCcy();
BigDecimal amt = intrBkSttlmAmt.getValue();
amtStr = NumberUtil.formatAmt(amt, ccy);
}
map.put("field32A",yyMMdd+ccy+amtStr);
}
String amt = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrBkSttlmAmt");
String ccy = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrBkSttlmAmt@Ccy");
if (StringUtil.isNotEmpty(amt) && StringUtil.isNotEmpty(ccy)) {
intrBkSttlmAmt = NumberUtil.formatAmt(new BigDecimal(amt), ccy);
intrBkSttlmccy = ccy;
}
} catch(Exception e) {
map.put("field32A", intrBkSttlmDtStr+intrBkSttlmccy+intrBkSttlmAmt);
} catch (Exception e) {
throw new SwiftException("ERROR", e.getMessage());
}
......
......@@ -7,6 +7,7 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -28,75 +29,62 @@ public class Field52AGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
CreditTransferTransactionInformation13 cdtTrfTxInf = getCreditTransferTransactionInformation13();
String field52Option = "";
String field52A = "";
if (cdtTrfTxInf != null) {
BranchAndFinancialInstitutionIdentification4 dbtr = cdtTrfTxInf.getDbtr();
if (dbtr != null) {
FinancialInstitutionIdentification7 finInstnId = dbtr.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getBIC())) {
field52Option = "A";
String bicCode = finInstnId.getBIC();
String account = getMtFormatAccount(cdtTrfTxInf.getDbtrAcct());
if (!StringUtil.isEmpty(account)) {
field52A = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field52A = bicCode;
}
} else if (StringUtil.isNotEmpty(finInstnId.getNm())) {
field52Option = "D";
String nameAddr = "";
PostalAddress6 pstlAdr = finInstnId.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i=0; i<adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
}
}
String account = getMtFormatAccount(cdtTrfTxInf.getDbtrAcct());
if (!StringUtil.isEmpty(account)) {
field52A = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} else {
field52A = nameAddr;
}
}
String field52 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Dbtr.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Dbtr.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
field52Option = "A";
if (StringUtil.isNotEmpty(account)) {
field52 = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field52 = bicCode;
}
} else if (StringUtil.isNotEmpty(name)){
field52Option = "D";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field52 = account + Mx2MtConstants.NEW_LINE + name;
} else {
field52 = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Dbtr.FinInstnId.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Dbtr.FinInstnId.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field52 += Mx2MtConstants.NEW_LINE + address;
}
}
}
map.put("field52Option", field52Option);
map.put("field52A", field52A);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
map.put("field52A", field52);
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public CreditTransferTransactionInformation13 getCreditTransferTransactionInformation13() {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0) {
return cdtTrfTxInf.get(0);
} else {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAcct.Id.Othr.Id");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
}
......@@ -7,6 +7,7 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -37,90 +38,88 @@ public class Field53AGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
SettlementInformation13 sttlmInf = getSttlmInf();
String field53Option = "";
String field53A = "";
if (sttlmInf != null) {
BranchAndFinancialInstitutionIdentification4 instgRmbrsmntAgt = sttlmInf.getInstgRmbrsmntAgt();
if (instgRmbrsmntAgt != null) {
FinancialInstitutionIdentification7 finInstnId = instgRmbrsmntAgt.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getBIC())) {
field53Option = "A";
String bicCode = finInstnId.getBIC();
String account = getMtFormatAccount(sttlmInf.getInstgRmbrsmntAgtAcct());
if (!StringUtil.isEmpty(account)) {
field53A = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field53A = bicCode;
}
}
}
String field53 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstgRmbrsmntAgt.FinInstnId");
String account = getAccount();
String sttlmAccount = getSttlmAccount();
String name = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstgRmbrsmntAgt.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
field53Option = "A";
if (StringUtil.isNotEmpty(account)) {
field53 = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field53 = bicCode;
}
if (StringUtil.isEmpty(field53Option)) {
String account = getMtFormatAccount(sttlmInf.getSttlmAcct());
if (!StringUtil.isEmpty(account)) {
field53Option = "B";
field53A = account;
}
} else if (StringUtil.isNotEmpty(sttlmAccount)){
field53Option = "B";
field53 = sttlmAccount;
} else if (StringUtil.isNotEmpty(name)){
field53Option = "D";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field53 = account + Mx2MtConstants.NEW_LINE + name;
} else {
field53 = name;
}
if (StringUtil.isEmpty(field53Option)) {
if (instgRmbrsmntAgt != null) {
FinancialInstitutionIdentification7 finInstnId = instgRmbrsmntAgt.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getNm())) {
field53Option = "D";
String nameAddr = "";
PostalAddress6 pstlAdr = finInstnId.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i=0; i<adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
}
}
String account = getMtFormatAccount(sttlmInf.getInstgRmbrsmntAgtAcct());
if (!StringUtil.isEmpty(account)) {
field53A = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} else {
field53A = nameAddr;
}
}
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstgRmbrsmntAgt.FinInstnId.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstgRmbrsmntAgt.FinInstnId.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field53 += Mx2MtConstants.NEW_LINE + address;
}
}
}
map.put("field53Option", field53Option);
map.put("field53A", field53A);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
map.put("field53A", field53);
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public SettlementInformation13 getSttlmInf() {
SettlementInformation13 sttlmInf = null;
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstgRmbrsmntAgtAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstgRmbrsmntAgtAcct.Id.Othr.Id");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
if (finInstnCdtTrf.getGrpHdr() != null) {
sttlmInf = finInstnCdtTrf.getGrpHdr().getSttlmInf();
}
private String getSttlmAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.SttlmAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.SttlmAcct.Id.Othr.Id");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
return sttlmInf;
}
}
......@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -32,74 +33,62 @@ public class Field54AGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
SettlementInformation13 sttlmInf = getSttlmInf();
String field54Option = "";
String field54A = "";
if (sttlmInf != null) {
BranchAndFinancialInstitutionIdentification4 instdRmbrsmntAgt = sttlmInf.getInstdRmbrsmntAgt();
if (instdRmbrsmntAgt != null) {
FinancialInstitutionIdentification7 finInstnId = instdRmbrsmntAgt.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getBIC())) {
field54Option = "A";
String bicCode = finInstnId.getBIC();
String account = getMtFormatAccount(sttlmInf.getInstdRmbrsmntAgtAcct());
if (!StringUtil.isEmpty(account)) {
field54A = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field54A = bicCode;
}
} else if (StringUtil.isNotEmpty(finInstnId.getNm())) {
field54Option = "D";
String nameAddr = "";
PostalAddress6 pstlAdr = finInstnId.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i=0; i<adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
}
}
String account = getMtFormatAccount(sttlmInf.getInstdRmbrsmntAgtAcct());
if (!StringUtil.isEmpty(account)) {
field54A = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} else {
field54A = nameAddr;
}
}
String field54 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstdRmbrsmntAgt.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstdRmbrsmntAgt.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
field54Option = "A";
if (StringUtil.isNotEmpty(account)) {
field54 = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field54 = bicCode;
}
} else if (StringUtil.isNotEmpty(name)){
field54Option = "D";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field54 = account + Mx2MtConstants.NEW_LINE + name;
} else {
field54 = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstdRmbrsmntAgt.FinInstnId.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstdRmbrsmntAgt.FinInstnId.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field54 += Mx2MtConstants.NEW_LINE + address;
}
}
}
map.put("field54Option", field54Option);
map.put("field54A", field54A);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
map.put("field54A", field54);
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public SettlementInformation13 getSttlmInf() {
SettlementInformation13 sttlmInf = null;
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
if (finInstnCdtTrf.getGrpHdr() != null) {
sttlmInf = finInstnCdtTrf.getGrpHdr().getSttlmInf();
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstdRmbrsmntAgtAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.GRPHDR_PARENT_ELEMENT_NAME, document, "GrpHdr.SttlmInf.InstdRmbrsmntAgtAcct.Id.Othr.Id");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
return sttlmInf;
}
}
......@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -31,74 +32,62 @@ public class Field56AGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
CreditTransferTransactionInformation13 cdtTrfTxInf = getCreditTransferTransactionInformation13();
String field56Option = "";
String field56A = "";
if (cdtTrfTxInf != null) {
BranchAndFinancialInstitutionIdentification4 dbtr = cdtTrfTxInf.getIntrmyAgt1();
if (dbtr != null) {
FinancialInstitutionIdentification7 finInstnId = dbtr.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getBIC())) {
field56Option = "A";
String bicCode = finInstnId.getBIC();
String account = getMtFormatAccount(cdtTrfTxInf.getIntrmyAgt1Acct());
if (!StringUtil.isEmpty(account)) {
field56A = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field56A = bicCode;
}
} else if (StringUtil.isNotEmpty(finInstnId.getNm())) {
field56Option = "D";
String nameAddr = "";
PostalAddress6 pstlAdr = finInstnId.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i=0; i<adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
}
}
String account = getMtFormatAccount(cdtTrfTxInf.getIntrmyAgt1Acct());
if (!StringUtil.isEmpty(account)) {
field56A = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} else {
field56A = nameAddr;
}
}
String field56 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrmyAgt1.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrmyAgt1.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
field56Option = "A";
if (StringUtil.isNotEmpty(account)) {
field56 = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field56 = bicCode;
}
} else if (StringUtil.isNotEmpty(name)){
field56Option = "D";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field56 = account + Mx2MtConstants.NEW_LINE + name;
} else {
field56 = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrmyAgt1.FinInstnId.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrmyAgt1.FinInstnId.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field56 += Mx2MtConstants.NEW_LINE + address;
}
}
}
map.put("field56Option", field56Option);
map.put("field56A", field56A);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
map.put("field56A", field56);
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public CreditTransferTransactionInformation13 getCreditTransferTransactionInformation13() {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0) {
return cdtTrfTxInf.get(0);
} else {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrmyAgt1Acct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.IntrmyAgt1Acct.Id.Othr.Id");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
}
......@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -31,75 +32,62 @@ public class Field57AGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
CreditTransferTransactionInformation13 cdtTrfTxInf = getCreditTransferTransactionInformation13();
String field57Option = "";
String field57A = "";
if (cdtTrfTxInf != null) {
BranchAndFinancialInstitutionIdentification4 dbtr = cdtTrfTxInf.getCdtrAgt();
if (dbtr != null) {
FinancialInstitutionIdentification7 finInstnId = dbtr.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getBIC())) {
field57Option = "A";
String bicCode = finInstnId.getBIC();
String account = getMtFormatAccount(cdtTrfTxInf.getCdtrAgtAcct());
if (!StringUtil.isEmpty(account)) {
field57A = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field57A = bicCode;
}
} else if (StringUtil.isNotEmpty(finInstnId.getNm())) {
field57Option = "D";
String nameAddr = "";
PostalAddress6 pstlAdr = finInstnId.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i=0; i<adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
}
}
String account = getMtFormatAccount(cdtTrfTxInf.getCdtrAgtAcct());
if (!StringUtil.isEmpty(account)) {
field57A = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} else {
field57A = nameAddr;
}
}
String field57 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAgt.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAgt.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
field57Option = "A";
if (StringUtil.isNotEmpty(account)) {
field57 = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field57 = bicCode;
}
} else if (StringUtil.isNotEmpty(name)){
field57Option = "D";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field57 = account + Mx2MtConstants.NEW_LINE + name;
} else {
field57 = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAgt.FinInstnId.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAgt.FinInstnId.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field57 += Mx2MtConstants.NEW_LINE + address;
}
}
}
map.put("field57Option", field57Option);
map.put("field57A", field57A);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
map.put("field57A", field57);
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public CreditTransferTransactionInformation13 getCreditTransferTransactionInformation13() {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0) {
return cdtTrfTxInf.get(0);
} else {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAgtAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAgtAcct.Id.Othr.Id");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
}
......@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -31,75 +32,62 @@ public class Field58AGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
CreditTransferTransactionInformation13 cdtTrfTxInf = getCreditTransferTransactionInformation13();
String field58Option = "";
String field58A = "";
if (cdtTrfTxInf != null) {
BranchAndFinancialInstitutionIdentification4 dbtr = cdtTrfTxInf.getCdtr();
if (dbtr != null) {
FinancialInstitutionIdentification7 finInstnId = dbtr.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getBIC())) {
field58Option = "A";
String bicCode = finInstnId.getBIC();
String account = getMtFormatAccount(cdtTrfTxInf.getCdtrAcct());
if (!StringUtil.isEmpty(account)) {
field58A = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field58A = bicCode;
}
} else if (StringUtil.isNotEmpty(finInstnId.getNm())) {
field58Option = "D";
String nameAddr = "";
PostalAddress6 pstlAdr = finInstnId.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i=0; i<adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
}
}
String account = getMtFormatAccount(cdtTrfTxInf.getCdtrAcct());
if (!StringUtil.isEmpty(account)) {
field58A = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} else {
field58A = nameAddr;
}
}
String field58 = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Cdtr.FinInstnId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Cdtr.FinInstnId.Nm");
if (StringUtil.isNotEmpty(bicCode)) {
field58Option = "A";
if (StringUtil.isNotEmpty(account)) {
field58 = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field58 = bicCode;
}
} else if (StringUtil.isNotEmpty(name)){
field58Option = "D";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field58 = account + Mx2MtConstants.NEW_LINE + name;
} else {
field58 = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Cdtr.FinInstnId.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.Cdtr.FinInstnId.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field58 += Mx2MtConstants.NEW_LINE + address;
}
}
}
map.put("field58Option", field58Option);
map.put("field58A", field58A);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
map.put("field58A", field58);
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public CreditTransferTransactionInformation13 getCreditTransferTransactionInformation13() {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0) {
return cdtTrfTxInf.get(0);
} else {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.CdtrAcct.Id.Othr.Id");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
}
......
......@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -37,6 +38,70 @@ public class Field72Generate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
List<String> field72List = new ArrayList<>();
List<String> field72TmpList = new ArrayList<>();
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.PrvsInstgAgt1.FinInstnId");
if (StringUtil.isEmpty(bicCode)) {
bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.PrvsInstgAgt.FinInstnId");
}
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.PrvsInstgAgt1.FinInstnId.Nm");
if (StringUtil.isEmpty(name)) {
name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.PrvsInstgAgt.FinInstnId.Nm");
}
if (StringUtil.isNotEmpty(bicCode)) {
bicCode = Mx2MtConstants.INS + bicCode;
field72TmpList.addAll(StringUtil.outStringList(bicCode, 35, "//"));
} else if (StringUtil.isNotEmpty(name)) {
name = Mx2MtConstants.INS + name;
field72TmpList.addAll(StringUtil.outStringList(name, 35, "//"));
}
String instrForCdtrAgtCard = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.InstrForCdtrAgt.Cd");
String instrForCdtrAgtInstrInf = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.InstrForCdtrAgt.InstrInf");
if (instrForCdtrAgtCard == null && StringUtil.isNotEmpty(instrForCdtrAgtInstrInf)) {
String cdtrAgtCode = Mx2MtConstants.ACC + instrForCdtrAgtInstrInf;
field72TmpList.addAll(StringUtil.outStringList(cdtrAgtCode, 35, "//"));
} else if (Instruction5Code.PHOB.equals(Instruction5Code.valueOf(instrForCdtrAgtCard)) && StringUtil.isNotEmpty(instrForCdtrAgtInstrInf)) {
String cdtrAgtCode = Mx2MtConstants.PHONBEN + instrForCdtrAgtInstrInf;
field72TmpList.addAll(StringUtil.outStringList(cdtrAgtCode, 35, "//"));
} else if (Instruction5Code.TELB.equals(Instruction5Code.valueOf(instrForCdtrAgtCard)) && StringUtil.isNotEmpty(instrForCdtrAgtInstrInf)) {
String cdtrAgtCode = Mx2MtConstants.PHONBEN + instrForCdtrAgtInstrInf;
field72TmpList.addAll(StringUtil.outStringList(cdtrAgtCode, 35, "//"));
}
String instrForNxtAgtCard = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.InstrForNxtAgt.Cd");
String instrForNxtAgtInstrInf = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.InstrForNxtAgt.InstrInf");
if (StringUtil.isEmpty(instrForNxtAgtCard) && StringUtil.isNotEmpty(instrForNxtAgtInstrInf)) {
String nextAgentCode = Mx2MtConstants.REC + instrForNxtAgtInstrInf;
field72TmpList.addAll(StringUtil.outStringList(nextAgentCode, 35, "//"));
} else if (Instruction4Code.TELA.equals(Instruction4Code.valueOf(instrForNxtAgtCard)) && StringUtil.isNotEmpty(instrForNxtAgtInstrInf)) {
String nextAgentCode = Mx2MtConstants.TELE + instrForNxtAgtInstrInf;
field72TmpList.addAll(StringUtil.outStringList(nextAgentCode, 35, "//"));
} else if (Instruction4Code.PHOA.equals(Instruction4Code.valueOf(instrForNxtAgtCard)) && StringUtil.isNotEmpty(instrForNxtAgtInstrInf)) {
String field56Option = (String)map.get("field56Option");
String nextAgentCode = "";
if (StringUtil.isEmpty(field56Option)) {
nextAgentCode = Mx2MtConstants.PHON + instrForNxtAgtInstrInf;
} else {
nextAgentCode = Mx2MtConstants.PHONIBK + instrForNxtAgtInstrInf;
}
field72TmpList.addAll(StringUtil.outStringList(nextAgentCode, 35, "//"));
}
for (int i=0; i<field72TmpList.size(); i++) {
if (i == 6) break;
if (i == 0) {
field72List.add(":72:" + field72TmpList.get(i));
} else {
field72List.add(field72TmpList.get(i));
}
}
map.put("field72List", field72List);
} catch (Exception e) {
throw new SwiftException("ERROR", e.getMessage());
}
try {
CreditTransferTransactionInformation13 cdtTrfTxInf = getCreditTransferTransactionInformation13();
StringBuilder sb = new StringBuilder();
String field72 = "";
......
......@@ -6,6 +6,7 @@ import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -34,74 +35,61 @@ public class Field50AGenerate extends AbstractMx2MtFieldsGenerate {
public void fieldsGenerate() throws SwiftException {
// TODO 50F取值待补充
try {
CreditTransferTransactionInformation12 undrlygCstmrCdtTrf = getUndrlygCstmrCdtTrf();
String field50BOption = "";
String field50B = "";
if (undrlygCstmrCdtTrf != null) {
PartyIdentification32 dbtr = undrlygCstmrCdtTrf.getDbtr();
if (dbtr != null) {
Party6Choice id = dbtr.getId();
if (dbtr.getId() != null
&& dbtr.getId().getOrgId() != null
&& StringUtil.isNotEmpty(dbtr.getId().getOrgId().getBICOrBEI())) {
String bicCode = dbtr.getId().getOrgId().getBICOrBEI();
field50BOption = "A";
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getDbtrAcct());
if (!StringUtil.isEmpty(account)) {
field50B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field50B = bicCode;
}
} else if (StringUtil.isNotEmpty(dbtr.getNm())) {
field50BOption = "K";
String nameAddr = "";
PostalAddress6 pstlAdr = dbtr.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i=0; i<adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
}
}
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getDbtrAcct());
if (!StringUtil.isEmpty(account)) {
field50B = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} else {
field50B = nameAddr;
}
}
Document document = (Document) map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr.Id.OrgId");
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr.Nm");
String account = getAccount();
if (StringUtil.isNotEmpty(bicCode)) {
field50BOption = "A";
if (StringUtil.isNotEmpty(account)) {
field50B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field50B = bicCode;
}
} else if (StringUtil.isNotEmpty(name)) {
field50BOption = "K";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field50B = account + Mx2MtConstants.NEW_LINE + name;
} else {
field50B = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field50B += Mx2MtConstants.NEW_LINE + address;
}
}
}
map.put("field50BOption", field50BOption);
map.put("field50B", field50B);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public CreditTransferTransactionInformation12 getUndrlygCstmrCdtTrf() {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0) {
return cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf();
} else {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAcct.Id.Othr.Id");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
}
......
package com.prowidesoftware.brilliance.mx2mt.mt202cov202.impl.cov;
import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.NumberUtil;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.CreditTransferTransactionInformation13;
import com.prowidesoftware.swift.model.mx.dic.FinancialInstitutionCreditTransferV02;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -23,23 +26,13 @@ public class FieldB33BGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
MxPacs00900102 obj = (MxPacs00900102)map.get("mxObj");
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return;
}
Document document = (Document) map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String filed33B = "";
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf != null && cdtTrfTxInf.size() > 0
&& cdtTrfTxInf.get(0) != null
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf() != null){
if (cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getInstdAmt() != null
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getInstdAmt().getCcy() != null){
String ccy = cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getInstdAmt().getCcy();
BigDecimal amt = cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getInstdAmt().getValue();
String amtStr = NumberUtil.formatAmt(amt, ccy);
filed33B = ccy+amtStr;
}
String ccy = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.InstdAmt@Ccy");
String amt = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.InstdAmt");
if (StringUtil.isNotEmpty(ccy) && StringUtil.isNotEmpty(amt)) {
String amtStr = NumberUtil.formatAmt(new BigDecimal(amt), ccy);
filed33B = ccy+amtStr;
}
map.put("field33B", filed33B);
} catch(Exception e) {
......
......@@ -4,13 +4,10 @@ import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* 1,若<BICFI>节点有值,则取为B\52A,且BIC取此值
* 2,若节点<IBAN>有值,则在此节点值前面加上“/”后,作为52A的账号;
......@@ -31,75 +28,61 @@ public class FieldB52AGenerate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
CreditTransferTransactionInformation12 undrlygCstmrCdtTrf = getUndrlygCstmrCdtTrf();
String field52BOption = "";
String field52B = "";
if (undrlygCstmrCdtTrf != null) {
BranchAndFinancialInstitutionIdentification4 dbtr = undrlygCstmrCdtTrf.getDbtrAgt();
if (dbtr != null) {
FinancialInstitutionIdentification7 finInstnId = dbtr.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getBIC())) {
field52BOption = "A";
String bicCode = finInstnId.getBIC();
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getDbtrAgtAcct());
if (!StringUtil.isEmpty(account)) {
field52B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field52B = bicCode;
}
} else if (StringUtil.isNotEmpty(finInstnId.getNm())) {
field52BOption = "D";
String nameAddr = "";
PostalAddress6 pstlAdr = finInstnId.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i=0; i<adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
}
}
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getDbtrAgtAcct());
if (!StringUtil.isEmpty(account)) {
field52B = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} else {
field52B = nameAddr;
}
}
Document document = (Document) map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAgt.FinInstnId");
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAgt.FinInstnId.Nm");
String account = getAccount();
if (StringUtil.isNotEmpty(bicCode)) {
field52BOption = "A";
if (StringUtil.isNotEmpty(account)) {
field52B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field52B = bicCode;
}
} else if (StringUtil.isNotEmpty(name)) {
field52BOption = "D";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field52B = account + Mx2MtConstants.NEW_LINE + name;
} else {
field52B = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAgt.FinInstnId.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAgt.FinInstnId.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field52B += Mx2MtConstants.NEW_LINE + address;
}
}
}
map.put("field52BOption", field52BOption);
map.put("field52B", field52B);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public CreditTransferTransactionInformation12 getUndrlygCstmrCdtTrf() {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0) {
return cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf();
} else {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAgtAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAgtAcct.Id.Othr.Id");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
}
......@@ -4,13 +4,10 @@ import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* 1,若节点<BICFI>有值,则设置B\56 option为“A”,同时BIC取此栏位;
* 2,若节点<IBAN>有值,则作为56A的账号;
......@@ -38,80 +35,78 @@ public class FieldB56Generate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
CreditTransferTransactionInformation12 undrlygCstmrCdtTrf = getUndrlygCstmrCdtTrf();
String field56BOption = "";
String field56B = "";
if (undrlygCstmrCdtTrf != null) {
BranchAndFinancialInstitutionIdentification4 intrmyAgt1 = undrlygCstmrCdtTrf.getIntrmyAgt1();
if (intrmyAgt1 != null) {
FinancialInstitutionIdentification7 finInstnId = intrmyAgt1.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getBIC())) {
field56BOption = "A";
String bicCode = finInstnId.getBIC();
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getIntrmyAgt1Acct());
if (!StringUtil.isEmpty(account)) {
field56B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field56B = bicCode;
}
} else if (StringUtil.isNotEmpty(finInstnId.getNm())) {
field56BOption = "D";
String nameAddr = "";
PostalAddress6 pstlAdr = finInstnId.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i = 0; i < adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE + adrLine;
}
}
}
}
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getIntrmyAgt1Acct());
if (!StringUtil.isEmpty(account)) {
field56B = account + Mx2MtConstants.NEW_LINE + nameAddr;
} else {
field56B = nameAddr;
}
} else {
if (finInstnId.getClrSysMmbId() != null
&& StringUtil.isNotEmpty(finInstnId.getClrSysMmbId().getMmbId())) {
field56BOption = "C";
field56B = "/" + finInstnId.getClrSysMmbId().getMmbId();
}
}
Document document = (Document) map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.IntrmyAgt1.FinInstnId");
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.IntrmyAgt1.FinInstnId.Nm");
String account = getAccount();
if (StringUtil.isNotEmpty(bicCode)) {
field56BOption = "A";
if (StringUtil.isNotEmpty(account)) {
field56B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field56B = bicCode;
}
} else if (StringUtil.isNotEmpty(name)) {
field56BOption = "D";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field56B = account + Mx2MtConstants.NEW_LINE + name;
} else {
field56B = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.IntrmyAgt1.FinInstnId.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.IntrmyAgt1.FinInstnId.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field56B += Mx2MtConstants.NEW_LINE + address;
}
}
} else if (StringUtil.isNotEmpty(account)) {
field56BOption = "C";
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.IntrmyAgt1Acct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.IntrmyAgt1Acct.Id.Othr.Id");
String mmbId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.IntrmyAgt1.FinInstnId.ClrSysMmbId.MmbId");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
} else if (StringUtil.isNotEmpty(mmbId)) {
account = "/" + mmbId;
} else {
account = "/" + iban;
}
if (account.length() > 35) {
account = account.substring(0, 35);
}
field56B = account;
}
map.put("field56BOption", field56BOption);
map.put("field56B", field56B);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public CreditTransferTransactionInformation12 getUndrlygCstmrCdtTrf() {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0) {
return cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf();
} else {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.IntrmyAgt1Acct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.IntrmyAgt1Acct.Id.Othr.Id");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
}
......@@ -4,13 +4,10 @@ import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* 57A
* 1,若节点<BICFI>有值,则设置B\57 option为“A”,同时BIC取此栏位;
......@@ -36,80 +33,78 @@ public class FieldB57Generate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
CreditTransferTransactionInformation12 undrlygCstmrCdtTrf = getUndrlygCstmrCdtTrf();
String field57BOption = "";
String field57B = "";
if (undrlygCstmrCdtTrf != null) {
BranchAndFinancialInstitutionIdentification4 cdtrAgt = undrlygCstmrCdtTrf.getCdtrAgt();
if (cdtrAgt != null) {
FinancialInstitutionIdentification7 finInstnId = cdtrAgt.getFinInstnId();
if (finInstnId != null) {
if (StringUtil.isNotEmpty(finInstnId.getBIC())) {
field57BOption = "A";
String bicCode = finInstnId.getBIC();
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getCdtrAgtAcct());
if (!StringUtil.isEmpty(account)) {
field57B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field57B = bicCode;
}
} else if (StringUtil.isNotEmpty(finInstnId.getNm())) {
field57BOption = "D";
String nameAddr = "";
PostalAddress6 pstlAdr = finInstnId.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i = 0; i < adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE + adrLine;
}
}
}
}
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getCdtrAgtAcct());
if (!StringUtil.isEmpty(account)) {
field57B = account + Mx2MtConstants.NEW_LINE + nameAddr;
} else {
field57B = nameAddr;
}
} else {
if (finInstnId.getClrSysMmbId() != null
&& StringUtil.isNotEmpty(finInstnId.getClrSysMmbId().getMmbId())) {
field57BOption = "C";
field57B = "/" + finInstnId.getClrSysMmbId().getMmbId();
}
}
Document document = (Document) map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAgt.FinInstnId");
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAgt.FinInstnId.Nm");
String account = getAccount();
if (StringUtil.isNotEmpty(bicCode)) {
field57BOption = "A";
if (StringUtil.isNotEmpty(account)) {
field57B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field57B = bicCode;
}
} else if (StringUtil.isNotEmpty(name)) {
field57BOption = "D";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field57B = account + Mx2MtConstants.NEW_LINE + name;
} else {
field57B = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAgt.FinInstnId.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAgt.FinInstnId.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field57B += Mx2MtConstants.NEW_LINE + address;
}
}
} else if (StringUtil.isNotEmpty(account)) {
field57BOption = "C";
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAgtAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAgtAcct.Id.Othr.Id");
String mmbId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAgt.FinInstnId.ClrSysMmbId.MmbId");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
} else if (StringUtil.isNotEmpty(mmbId)) {
account = "/" + mmbId;
} else {
account = "/" + iban;
}
if (account.length() > 35) {
account = account.substring(0, 35);
}
field57B = account;
}
map.put("field57BOption", field57BOption);
map.put("field57B", field57B);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public CreditTransferTransactionInformation12 getUndrlygCstmrCdtTrf() {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0) {
return cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf();
} else {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAgtAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAgtAcct.Id.Othr.Id");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
}
......
......@@ -4,13 +4,10 @@ import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.*;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* 1,若节点<Nm>有值,则设置B\59 option为“”,且名称取自此节点,而地址需要合并截取???
* 2,若节点<IBAN>有值,则在此节点的值前面加上“/”后,作为B\59账号的值;
......@@ -32,73 +29,62 @@ public class FieldB59Generate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
CreditTransferTransactionInformation12 undrlygCstmrCdtTrf = getUndrlygCstmrCdtTrf();
String field59BOption = "";
String field59B = "";
if (undrlygCstmrCdtTrf != null) {
PartyIdentification32 cdtr = undrlygCstmrCdtTrf.getCdtr();
if (cdtr != null) {
if (StringUtil.isNotEmpty(cdtr.getNm())) {
field59BOption = "NOLETTER";
String nameAddr = "";
PostalAddress6 pstlAdr = cdtr.getPstlAdr();
if (pstlAdr != null) {
List<String> adrLineList = pstlAdr.getAdrLine();
if (adrLineList.size() > 0) {
for (int i=0; i<adrLineList.size(); i++) {
if (i == 4) {
break;
}
String adrLine = adrLineList.get(i);
if (adrLine.length() > 35) {
adrLine = adrLine.substring(0, 35);
}
if (i == 0) {
nameAddr += adrLine;
} else {
nameAddr += Mx2MtConstants.NEW_LINE+adrLine;
}
}
}
}
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getCdtrAcct());
if (!StringUtil.isEmpty(account)) {
field59B = account + Mx2MtConstants.NEW_LINE + nameAddr;;
} else {
field59B = nameAddr;
}
} else if (cdtr.getId() != null
&& cdtr.getId().getOrgId() != null
&& StringUtil.isNotEmpty(cdtr.getId().getOrgId().getBICOrBEI())) {
String bicCode = cdtr.getId().getOrgId().getBICOrBEI();
field59BOption = "A";
String account = getMtFormatAccount(undrlygCstmrCdtTrf.getCdtrAcct());
if (!StringUtil.isEmpty(account)) {
field59B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field59B = bicCode;
}
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String bicCode = getBicCode(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Cdtr.Id.OrgId");
String account = getAccount();
String name = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Cdtr.Nm");
if (StringUtil.isNotEmpty(name)){
field59BOption = "NOLETTER";
if (name.length() > 35) name = name.substring(0, 35);
if (StringUtil.isNotEmpty(account)) {
field59B = account + Mx2MtConstants.NEW_LINE + name;
} else {
field59B = name;
}
int addressCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Cdtr.PstlAdr.AdrLine");
if (addressCounts > 0) {
for (int i=0; i<addressCounts; i++) {
if (i == 3) break;
String address = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Cdtr.PstlAdr.AdrLine("+i+")");
if (address.length() > 35) address = address.substring(0, 35);
field59B += Mx2MtConstants.NEW_LINE + address;
}
}
} else if (StringUtil.isNotEmpty(bicCode)) {
field59BOption = "A";
if (StringUtil.isNotEmpty(account)) {
field59B = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
field59B = bicCode;
}
}
map.put("field59BOption", field59BOption);
map.put("field59B", field59B);
} catch(Exception e) {
throw new SwiftException("ERROR", e.getMessage());
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
public CreditTransferTransactionInformation12 getUndrlygCstmrCdtTrf() {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return null;
}
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf.size() > 0) {
return cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf();
} else {
return null;
private String getAccount() {
try {
String account = "";
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
String iban = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAcct.Id.IBAN");
String otherId = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.CdtrAcct.Id.Othr.Id");
//String schmeNameCd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.DbtrAgtAcct.Id.SchmeNm.Cd");
if (StringUtil.isNotEmpty(iban)) {
account = "/" + iban;
} else if (StringUtil.isNotEmpty(otherId)) {
account = "//CH" + otherId;
}
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
return account;
} catch (Exception e) {
throw new SwiftException(e.getMessage());
}
}
}
......
......@@ -4,14 +4,10 @@ import com.prowidesoftware.brilliance.constants.Mx2MtConstants;
import com.prowidesoftware.brilliance.exception.SwiftException;
import com.prowidesoftware.brilliance.mx2mt.AbstractMx2MtFieldsGenerate;
import com.prowidesoftware.brilliance.util.StringUtil;
import com.prowidesoftware.swift.model.mx.MxPacs00900102;
import com.prowidesoftware.swift.model.mx.dic.CreditTransferTransactionInformation13;
import com.prowidesoftware.swift.model.mx.dic.FinancialInstitutionCreditTransferV02;
import org.dom4j.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* 取此节点按4*35的格式拆分,放入70栏位中(最多4行每行最多35个字符)
* <CdtTrfTxInf>[1]<UndrlygCstmrCdtTrf><RmtInf><Ustrd>[1]
......@@ -23,28 +19,16 @@ public class FieldB70Generate extends AbstractMx2MtFieldsGenerate {
@Override
public void fieldsGenerate() throws SwiftException {
try {
MxPacs00900102 obj = (MxPacs00900102)map.get(Mx2MtConstants.MX_OBJECT);
if (obj == null || obj.getFinInstnCdtTrf() == null) {
return;
}
String field70B = "";
FinancialInstitutionCreditTransferV02 finInstnCdtTrf = obj.getFinInstnCdtTrf();
List<CreditTransferTransactionInformation13> cdtTrfTxInf = finInstnCdtTrf.getCdtTrfTxInf();
if (cdtTrfTxInf != null && cdtTrfTxInf.size() > 0
&& cdtTrfTxInf.get(0) != null
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf() != null){
if (cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getRmtInf() != null
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getRmtInf().getUstrd() != null
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getRmtInf().getUstrd().size() >0
&& cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getRmtInf().getUstrd().get(0) != null){
String s = cdtTrfTxInf.get(0).getUndrlygCstmrCdtTrf().getRmtInf().getUstrd().get(0);
field70B = StringUtil.getStringByEnter(s, 35, 4);
}
Document document = (Document)map.get(Mx2MtConstants.MX_XML_DOCUMENT);
int ustrdCounts = getXmlNodeCounts(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.RmtInf.Ustrd");
if (ustrdCounts > 0) {
String ustrd = getXmlNodeValue(Mx2MtConstants.MAINBODY_PARENT_ELEMENT_NAME, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.RmtInf.Ustrd(0)");
field70B = StringUtil.getStringByEnter(ustrd, 35, 4);
}
map.put("field70B", field70B);
} catch(Exception e) {
} catch (Exception e) {
throw new SwiftException("ERROR", e.getMessage());
}
}
}
......@@ -192,16 +192,29 @@ public class XmlUtil {
String value = getXmlNodeValue(document, "Document.BkToCstmrStmt.GrpHdr.MsgId");
System.out.println(value);*/
File file = new File(System.getProperty("user.dir") + "\\src\\main\\resources\\swiftXml\\MxPacs00800102.xml");
/*File file = new File(System.getProperty("user.dir") + "\\src\\main\\resources\\swiftXml\\MxPacs00800102.xml");
String xmlStr = FileUtils.readFileToString(file);
Document document = DocumentHelper.parseText(xmlStr);
String value = getXmlNodeValue(document, "Document.FIToFICstmrCdtTrf.CdtTrfTxInf.SttlmTmIndctn.DbtDtTm");
System.out.println(value);
System.out.println(value);*/
/*File file = new File(System.getProperty("user.dir") + "\\src\\main\\resources\\swiftXml\\MxPacs00800102.xml");
File file = new File(System.getProperty("user.dir") + "\\src\\main\\resources\\swiftXml\\MxPacs00900102.xml");
String xmlStr = FileUtils.readFileToString(file);
Document document = DocumentHelper.parseText(xmlStr);
Map maps = getParentElementMaps(document);
maps.forEach((k,v) -> System.out.println(k + "=" + v));*/
Map<String, String> maps = getParentElementMaps(document);
Set<String> sets = maps.keySet();
Iterator<String> keys = sets.iterator();
boolean flag = false;
for (; keys.hasNext(); ) {
String key = keys.next();
String value = maps.get(key);
String fullPath = value + "." + key;
if (fullPath.indexOf("UndrlygCstmrCdtTrf") > -1
&& StringUtil.isNotEmpty(getXmlNodeValue(document, fullPath))){
flag = true;
break;
}
}
System.out.println(flag);
}
}
......@@ -135,14 +135,17 @@
<Nm>uiopp</Nm>
</FinInstnId>
</CdtrAgt>
<PmtId>
<UETR>8a562c67-ca16-48ba-b074-65581be6f001</UETR>
</PmtId>
<IntrBkSttlmAmt Ccy="USD">120274.34</IntrBkSttlmAmt>
<IntrBkSttlmDt>2022-04-02+08:00</IntrBkSttlmDt>
<SttlmTmIndctn>
<DbtDtTm>2022-04-02T13:35:04.807+01:00</DbtDtTm>
<DbtDtTm>2022-04-02T12:35:04.807+01:00</DbtDtTm>
<CdtDtTm>2022-04-02T13:35:04.807+01:00</CdtDtTm>
</SttlmTmIndctn>
<SttlmTmReq>
<CLSTm>13:35:04.807+01:00</CLSTm>
<CLSTm>14:35:04.807+01:00</CLSTm>
</SttlmTmReq>
<IntrmyAgt1>
<FinInstnId>
......
......@@ -85,10 +85,21 @@
</PstlAdr>
<Id>
<OrgId>
<AnyBIC>anybic01</AnyBIC>
<AnyBIC>ANYBIC01</AnyBIC>
</OrgId>
</Id>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>S15612345678012345</IBAN>
<Othr>
<Id>789465123132165</Id>
<SchmeNm>
<Cd>741852</Cd>
</SchmeNm>
</Othr>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>QWERTYUI</BIC>
......@@ -98,9 +109,20 @@
<Nm>nm333333</Nm>
</FinInstnId>
</DbtrAgt>
<DbtrAgtAcct>
<Id>
<IBAN>S123</IBAN>
<Othr>
<Id>789465123132165</Id>
<SchmeNm>
<Cd>741852</Cd>
</SchmeNm>
</Othr>
</Id>
</DbtrAgtAcct>
<IntrmyAgt1>
<FinInstnId>
<BIC>ZXCVBNMK</BIC>
<!--<BIC>ZXCVBNMK</BIC>-->
<PstlAdr>
<AdrLine>11</AdrLine>
<AdrLine>22</AdrLine>
......@@ -108,7 +130,7 @@
<AdrLine>44</AdrLine>
<AdrLine>55</AdrLine>
</PstlAdr>
<Nm>nm333333</Nm>
<!--<Nm>nm333333</Nm>-->
<ClrSysMmbId>
<MmbId>mmbid01</MmbId>
<ClrSysId>
......@@ -118,6 +140,17 @@
</ClrSysMmbId>
</FinInstnId>
</IntrmyAgt1>
<IntrmyAgt1Acct>
<Id>
<IBAN>S123456</IBAN>
<Othr>
<Id>789465123132165</Id>
<SchmeNm>
<Cd>741852</Cd>
</SchmeNm>
</Othr>
</Id>
</IntrmyAgt1Acct>
<CdtrAgtAcct>
<Id>
<IBAN>S15612345678012345</IBAN>
......@@ -217,15 +250,16 @@
</CdtrAgt>
<PmtId>
<EndToEndId>end456</EndToEndId>
<UETR>8a562c67-ca16-48ba-b074-65581be6f001</UETR>
</PmtId>
<IntrBkSttlmAmt Ccy="USD">120274.34</IntrBkSttlmAmt>
<IntrBkSttlmDt>2022-04-02+08:00</IntrBkSttlmDt>
<SttlmTmIndctn>
<DbtDtTm>2022-04-02T13:35:04.807+08:00</DbtDtTm>
<CdtDtTm>2022-04-02T13:35:04.807+08:00</CdtDtTm>
<DbtDtTm>2022-04-02T13:35:04.807+09:00</DbtDtTm>
<CdtDtTm>2022-04-02T14:35:04.807+09:00</CdtDtTm>
</SttlmTmIndctn>
<SttlmTmReq>
<CLSTm>13:35:04.807+08:00</CLSTm>
<CLSTm>15:35:04.807+09:00</CLSTm>
</SttlmTmReq>
<IntrmyAgt1>
<FinInstnId>
......
{1:$vm.head1}{2:$vm.head2}#if(!$null.isNull($vm.head3) && $vm.head3.length()>0){3:$vm.head3}#end{4:
:20:$vm.field20
:21:$vm.field21
#if(!$null.isNull($vm.field13cList) && $vm.field13cList.size()!=0)
#foreach($field13C in $vm.field13cList)
#if(!$null.isNull($vm.field13CList) && $vm.field13CList.size()!=0)
#foreach($field13C in $vm.field13CList)
:13C:$field13C
#end
#end
......@@ -39,8 +39,10 @@
#elseif($vm.field58Option=='D')
:58D:$vm.field58A
#end
#if(!$null.isNull($vm.field72) && $vm.field72.length() > 0)
:72:$vm.field72
#if(!$null.isNull($vm.field72List) && $vm.field72List.size()!=0)
#foreach($field72 in $vm.field72List)
$field72
#end
#end
#if($vm.field50BOption=='A')
:50A:$vm.field50B
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment