Commit 237d6c10 by xionglin

camt10900101

parent dd8e22ba
......@@ -59,6 +59,8 @@ public class Mx2MtConstants {
public static final String MT_TYPE_299 = "299";
public static final String MT_TYPE_112 = "112";
public static final String OUT_PUT_FILE_PATH = "outPutFilePath";
public static final String MX_OBJECT = "mxObj";
......
......@@ -5,6 +5,7 @@ import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.mt103.Mx2Mt103Creator;
import com.brilliance.swift.mx2mt.mt103Retn.Mx2Mt103RetnCreator;
import com.brilliance.swift.mx2mt.mt110.Mx2Mt110Creator;
import com.brilliance.swift.mx2mt.mt112.Mx2Mt112Creator;
import com.brilliance.swift.mx2mt.mt192292.Mx2Mtn92Creator;
import com.brilliance.swift.mx2mt.mt196296.Mx2Mtn96Creator;
import com.brilliance.swift.mx2mt.mt202Retn.Mx2Mt202RetnCreator;
......@@ -122,6 +123,8 @@ public class Mx2MtCreatorManager {
return new Mx2Mt920Creator();
} else if("camt058001".equals(messageType)){
return new Mx2Mt292Creator();
} else if("camt109001".equals(messageType)){
return new Mx2Mt112Creator();
} else if("camt107001".equals(messageType)){
return new Mx2Mt110Creator();
}
......
package com.brilliance.swift.mx2mt.mt112;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtCreator;
import com.brilliance.swift.mx2mt.Mx2MtContextIdentifier;
import com.brilliance.swift.mx2mt.Mx2MtTagsGenerate;
import com.brilliance.swift.mx2mt.mt112.impl.*;
import com.brilliance.swift.util.XmlUtil;
import org.dom4j.Document;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class Mx2Mt112Creator extends AbstractMx2MtCreator {
@Override
public void preProcess() throws SwiftException {
super.preProcess();
Document document = (Document) context.get(Mx2MtContextIdentifier.MX_XMl_DOCUMENT,true);
Map<String,String> parentElementMaps = XmlUtil.getParentElementMaps(document);
context.set(Mx2MtContextIdentifier.APPHDR_PARENT_ELEMENT_NAME,parentElementMaps.get("AppHdr"));
context.set(Mx2MtContextIdentifier.GRPHDR_PARENT_ELEMENT_NAME,parentElementMaps.get("GrpHdr"));
context.set(Mx2MtContextIdentifier.BODY_PARENT_ELEMENT_NAME,parentElementMaps.get("Chq"));
}
@Override
public List<Mx2MtTagsGenerate> getGenerateTagList() {
List<Mx2MtTagsGenerate> fieldsGenerateList = new ArrayList<>();
fieldsGenerateList.add(new Field20Generate());
fieldsGenerateList.add(new Field21Generate());
fieldsGenerateList.add(new Field30Generate());
fieldsGenerateList.add(new Field32Generate());
fieldsGenerateList.add(new Field52AGenerate());
fieldsGenerateList.add(new Field59Generate());
fieldsGenerateList.add(new Field76Generate());
return fieldsGenerateList;
}
@Override
protected String getMtType() {
return Mx2MtConstants.MT_TYPE_112;
}
}
package com.brilliance.swift.mx2mt.mt112.impl;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.util.List;
public class Field20Generate extends AbstractMx2MtTagsGenerate {
private static final String NAME = "20";
@Override
public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String messageId = getXmlNodeValue(grpHdrParentElementName,document,"GrpHdr.MsgId");
if ( StringUtil.isEmpty(messageId) ) {
messageId = getXmlNodeValue(appHdrParentElementName,document,"AppHdr.BizMsgIdr");
}
if ( StringUtil.isNotEmpty(messageId) ) {
if ( messageId.length() > 16 ) {
buildSTErrorInfo(13,"Block4/:20:",messageId);
messageId = messageId.substring(0,15) + "+";
}
tags.add(new Tag(NAME,messageId));
}
}
}
package com.brilliance.swift.mx2mt.mt112.impl;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.util.List;
public class Field21Generate extends AbstractMx2MtTagsGenerate {
private static String NAME ="21";
@Override
public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
int chqCount = getXmlNodeCounts(bodyHdrParentElementName,document,"Chq");
if ( chqCount>0 ) {
String chqNb = getXmlNodeValue(bodyHdrParentElementName,document,"Chq.ChqNb");
if (StringUtil.isNotEmpty(chqNb)) {
if ( chqNb.length()>16 ) {
buildSTErrorInfo(13,"Block4/:21",chqNb);
chqNb = chqNb.substring(0,15) + "+";
}
tags.add(new Tag(NAME,chqNb));
}
}
}
}
package com.brilliance.swift.mx2mt.mt112.impl;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.DateUtil;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.util.List;
public class Field30Generate extends AbstractMx2MtTagsGenerate {
public static String name = "30";
@Override
public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String issueDtStr = getXmlNodeValue(bodyHdrParentElementName,document,"Chq.IsseDt");
if ( StringUtil.isNotEmpty(issueDtStr) ) {
try {
XMLGregorianCalendar issueDt = DatatypeFactory.newInstance().newXMLGregorianCalendar(issueDtStr);
String mtIssueDtStr = DateUtil.format(issueDt,"yyMMdd");
tags.add(new Tag(name,mtIssueDtStr));
} catch (DatatypeConfigurationException e) {
throw new RuntimeException(e);
}
}else {
buildSTErrorInfo(114,"Block4/:30",null);
tags.add(new Tag(name,"991231"));
}
}
}
package com.brilliance.swift.mx2mt.mt112.impl;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.DateUtil;
import com.brilliance.swift.util.NumberUtil;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.math.BigDecimal;
import java.util.List;
public class Field32Generate extends AbstractMx2MtTagsGenerate {
private static String name_A = "32A";
private static String name_B = "32B";
@Override
public void tagGenerate() throws SwiftException {
try {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String bkDtStr = "";
String bkAmt = "";
String bkCcy = "";
String amt = getXmlNodeValue(bodyHdrParentElementName,document,"Chq.Amt");
String ccy = getXmlNodeValue(bodyHdrParentElementName,document,"Chq.Amt@Ccy");
if ("XAU".equalsIgnoreCase(ccy) || "XAG".equalsIgnoreCase(ccy)
|| "XPD".equalsIgnoreCase(ccy) || "XPT".equalsIgnoreCase(ccy)) {
buildSTErrorInfo(63,bodyHdrParentElementName+".Chq.Amt",ccy);
}
if ( StringUtil.isNotEmpty(ccy) && StringUtil.isNotEmpty(amt) ) {
bkAmt = NumberUtil.formatAmt(new BigDecimal(amt),ccy);
bkCcy = ccy;
}
String bkDtValue = getXmlNodeValue(bodyHdrParentElementName,document,"Chq.FctvDt.Dt");
if (StringUtil.isNotEmpty(bkDtValue)) {
XMLGregorianCalendar bkDt = DatatypeFactory.newInstance().newXMLGregorianCalendar();
bkDtStr = DateUtil.format(bkDt,"yyMMdd");
tags.add(new Tag(name_A,bkDtStr+bkCcy+bkAmt));
}else {
tags.add(new Tag(name_B,bkCcy+bkAmt));
}
} catch (DatatypeConfigurationException e) {
throw new RuntimeException(e);
}
}
}
package com.brilliance.swift.mx2mt.mt112.impl;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.mx2mt.Mx2MtContextIdentifier;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.util.List;
public class Field52AGenerate extends AbstractMx2MtTagsGenerate {
private static String name_A = "52A";
private static String name_B = "52B";
private static String name_D = "52D";
private static String name = "52";
@Override
public void tagGenerate() throws SwiftException {
context.set(Mx2MtContextIdentifier.MX_TO_MT_ERROR_LOCATION, "Block4/52a");
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
int agentNum = getXmlNodeCounts(bodyHdrParentElementName,document,"Chq.DrwrAgt");
int agentCount = getXmlNodeCounts(bodyHdrParentElementName,document,"Chq.DrwrAgtAcct");
String agentPath = bodyHdrParentElementName + ".Chq.DrwrAgt";
String agentCountPath = bodyHdrParentElementName+ ".Chq.DrwrAgtAcct";
String account = "";
if ( agentNum >0 || agentCount>0 ) {
if(agentNum == 0) {
account = mx_to_mtAccount(bodyHdrParentElementName+".Chq.DrwrAgtAcct");
tags.add(new Tag(name_B,account));
}else {
Tag tag = mx_to_mtAgentGeneric(name,agentPath,agentCountPath,true,false,false,null);
if (tag != null) {
if (name_D.equals(tag.getName())) {
String value = mx_to_mtStartingLineCharacter(tag.getValue(), "Block4/:"+name_D+":");
tag.setValue(value);
}
tags.add(tag);
}
}
}
}
}
package com.brilliance.swift.mx2mt.mt112.impl;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.mx2mt.Mx2MtContextIdentifier;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.util.List;
public class Field59Generate extends AbstractMx2MtTagsGenerate {
private static String name = "59";
@Override
public void tagGenerate() throws SwiftException {
context.set(Mx2MtContextIdentifier.MX_TO_MT_ERROR_LOCATION, "Block4/59a");
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
int countryNum = getXmlNodeCounts(bodyHdrParentElementName,document,"Chq.Pyee.PstlAdr.Ctry");
String payStr = bodyHdrParentElementName + ".Chq.Pyee";
int addLineStr = getXmlNodeCounts(bodyHdrParentElementName,document,"Chq.Pyee.PstlAdr.AdrLine");
String payTra = "";
if ( countryNum >0 ) {
payTra = mx_to_mtPartyNameAndAddressLEI1(payStr);
tags.add(new Tag(name,payTra));
}else if (addLineStr >0 && !Mx2MtConstants.MX_TO_MT_DEFAULT_VALUE.equals(addLineStr)) {
payTra = mx_to_mtPartyNameAndUnstructuredAddress(payStr);
tags.add(new Tag(name,payTra));
}
}
}
package com.brilliance.swift.mx2mt.mt112.impl;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
public class Field76Generate extends AbstractMx2MtTagsGenerate {
private static String name = "76";
@Override
public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
Map<String,String > map =new Hashtable<>();
map.put("ACCP","Accepted");
map.put("REJT","Rejected");
String mxStatusCode = getXmlNodeValue(bodyHdrParentElementName,document,"Chq.ChqCxlOrStopSts.Sts.Cd");
String mxStatusDes = "";
String mxAddInfo = getXmlNodeValue(bodyHdrParentElementName,document,"Chq.ChqCxlOrStopSts.AddtlInf");
for (Map.Entry<String,String > entry :map.entrySet()) {
if (mxStatusCode.equals(entry.getKey())) {
mxStatusDes = entry.getValue();
break;
}
}
String mx76String = "/" + mxStatusDes + "/" + mxAddInfo;
List<String> list = StringUtil.outStringList(mx76String, 35, "//");
String mt76 = "";
if (list != null && list.size() > 0) {
for (int i=0; i<list.size(); i++) {
String str = list.get(i);
if (i < 6) {
if (i == 0) {
mt76 = str;
} else {
mt76 += Mx2MtConstants.NEW_LINE + str;
}
}
}
}
if (StringUtil.isNotEmpty(mt76)) {
tags.add(new Tag(name, mt76));
}
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<RequestPayload>
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr>
<FIId>
<FinInstnId>
<BICFI>HELSFIHHXXX</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>NDEAFIHHXXX</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>CNCL-ID001</BizMsgIdr>
<MsgDefIdr>camt.109.001.01</MsgDefIdr>
<BizSvc>swift.cbprplus.02</BizSvc>
<CreDt>2022-07-22T10:17:51.619+08:00</CreDt>
<PssblDplct>false</PssblDplct>
<Prty>NORM</Prty>
</AppHdr>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.109.001.01">
<ChqCxlOrStopRpt>
<GrpHdr>
<MsgId>111</MsgId>
<CreDtTm>2023-06-27</CreDtTm>
<NbOfChqs>999</NbOfChqs>
</GrpHdr>
<Chq>
<InstrId>123</InstrId>
<OrgnlInstrId>AAA</OrgnlInstrId>
<ChqNb>123</ChqNb>
<IsseDt>2023-06-26</IsseDt>
<StlDt>2023-05-26</StlDt>
<Amt Ccy="USD">123</Amt>
<FctvDt>
<Dt>2022-05-09</Dt>
</FctvDt>
<Pyee>
<Nm>XL</Nm>
<PstlAdr>
<AdrLine>WH</AdrLine>
</PstlAdr>
</Pyee>
<DrwrAgt>
<FinInstnId>
<BICFI>CHASUS33</BICFI>
</FinInstnId>
</DrwrAgt>
<DrwrAgtAcct>
<Id>
<IBAN>ABC123</IBAN>
</Id>
</DrwrAgtAcct>
<ChqCxlOrStopSts>
<Sts>
<Cd>ACCP</Cd>
</Sts>
<AddtlInf>ABC</AddtlInf>
</ChqCxlOrStopSts>
</Chq>
</ChqCxlOrStopRpt>
</Document>
</RequestPayload>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Legal Notices
SWIFT SCRL@2016. All rights reserved.
This schema is a component of MyStandards, the SWIFT collaborative Web application used to manage
standards definitions and industry usage.
This is a licensed product, which may only be used and distributed in accordance with MyStandards License
Terms as specified in MyStandards Service Description and the related Terms of Use.
Unless otherwise agreed in writing with SWIFT SCRL, the user has no right to:
- authorise external end users to use this component for other purposes than their internal use.
- remove, alter, cover, obfuscate or cancel from view any copyright or other proprietary rights notices appearing in this physical medium.
- re-sell or authorise another party e.g. software and service providers, to re-sell this component.
This component is provided 'AS IS'. SWIFT does not give and excludes any express or implied warranties
with respect to this component such as but not limited to any guarantee as to its quality, supply or availability.
Any and all rights, including title, ownership rights, copyright, trademark, patents, and any other intellectual
property rights of whatever nature in this component will remain the exclusive property of SWIFT or its
licensors.
Trademarks
SWIFT is the trade name of S.W.I.F.T. SCRL.
The following are registered trademarks of SWIFT: the SWIFT logo, SWIFT, SWIFTNet, SWIFTReady, Accord, Sibos, 3SKey, Innotribe, the Standards Forum logo, MyStandards, and SWIFT Institute.
Other product, service, or company names in this publication are trade names, trademarks, or registered trademarks of their respective owners.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Group: Cross Border Payments and Reporting Plus (CBPR+)
Collection: CBPRPlus_ISO 20022_Portfolio_Release 2023
Usage Guideline: CBPRPlus-camt.109.001.01_ChequeCancellationOrStopReport
Base Message: camt.109.001.01
Date of publication: 16 December 2022
URL: https://www2.swift.com/mystandards/#/mp/mx/_UQsRECZ9EeyFELcOlo2Q4w/_J873YCZ_EeyFELcOlo2Q4w
Description: Principles:
1A) AGENTS IDENTIFICATION - Textual Rules
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-> If BICFI is present, then (Name & Postal Address) is NOT allowed (ClearingSystemMemberIdentification and LEI may complement) – However, in case of conflicting information, the BICFI will always take precedence.
-> If BICFI is absent, (Name & Postal Address) OR [(Name & Postal Address) and ClearingSystemMemberIdentification] must be present.
Exception: If BICFI is absent, whenever Debtor Agent, Creditor Agent and all agents in between are located within the same country, the clearing code only may be used.
1B. PARTY IDENTIFICATION - Textual Rules
-> If AnyBIC is present, then (Name and Postal Address) is NOT allowed (other elements remain optional) - However, in case of conflicting information, AnyBIC will always take precedence.
-> If Name is present, it is recommended to use Postal Address.
2) Character Set:
All proprietary and Text fields EXCLUDING Name and Address for all actors and Related Remittance Information and Remittance are limited to the FIN-X-Character set.
All Name and Address for all actors, Related Remittance Information and Remittance Information (structured and unstructured), Email Address where included as part of a proxy element are extended to support the following additional characters:
!#$%&*=^_`{|}~";<>@[\]
< is replaced with &lt;
> is replaced with &gt;
Generated by the MyStandards web platform [https://www.swift.com/mystandards] on 2023-06-20T04:02:36+00:00
-->
<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:camt.109.001.01" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:camt.109.001.01">
<xs:element name="Document" type="Document"/>
<xs:complexType name="AccountIdentification4Choice__1">
<xs:choice>
<xs:element name="IBAN" type="IBAN2007Identifier"/>
<xs:element name="Othr" type="GenericAccountIdentification1__1"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="AccountSchemeName1Choice__1">
<xs:choice>
<xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
<xs:element name="Prtry" type="CBPR_RestrictedFINXMax35Text"/>
</xs:choice>
</xs:complexType>
<xs:simpleType name="ActiveCurrencyCode">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3,3}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ActiveOrHistoricCurrencyCode">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3,3}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AnyBICDec2014Identifier">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BICFIDec2014Identifier">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="BranchAndFinancialInstitutionIdentification6__1">
<xs:sequence>
<xs:element name="FinInstnId" type="FinancialInstitutionIdentification18__1"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="CBPR_Amount_SimpleType">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="5"/>
<xs:totalDigits value="14"/>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CBPR_Amount">
<xs:simpleContent>
<xs:extension base="CBPR_Amount_SimpleType">
<xs:attribute name="Ccy" type="ActiveCurrencyCode" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="CBPR_ChequeCancellationOrStopStatusCode">
<xs:restriction base="xs:string">
<xs:enumeration value="REJT"/>
<xs:enumeration value="ACCP"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_DateTime">
<xs:restriction base="xs:dateTime">
<xs:pattern value=".*(\+|-)((0[0-9])|(1[0-3])):[0-5][0-9]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax140Text">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ ]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="140"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax140Text_Extended">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ !#$%&amp;\*=^_`\{\|\}~&quot;;&lt;&gt;@\[\\\]]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="140"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax16Text">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ ]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="16"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax16Text_Extended">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ !#$%&amp;\*=^_`\{\|\}~&quot;;&lt;&gt;@\[\\\]]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="16"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax28Text">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ ]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="28"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax320Text_Extended">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ !#$%&amp;\*=^_`\{\|\}~&quot;;&lt;&gt;@\[\\\]]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="320"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax34Text">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9a-zA-Z\-\?:\(\)\.,'\+ ]([0-9a-zA-Z\-\?:\(\)\.,'\+ ]*(/[0-9a-zA-Z\-\?:\(\)\.,'\+ ])?)*)"/>
<xs:minLength value="1"/>
<xs:maxLength value="34"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax35Text">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ ]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="35"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax35Text_Extended">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ !#$%&amp;\*=^_`\{\|\}~&quot;;&lt;&gt;@\[\\\]]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="35"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax70Text">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ ]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="70"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CBPR_RestrictedFINXMax70Text_Extended">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-Z/\-\?:\(\)\.,'\+ !#$%&amp;\*=^_`\{\|\}~&quot;;&lt;&gt;@\[\\\]]+"/>
<xs:minLength value="1"/>
<xs:maxLength value="70"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CashAccount40__1">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="AccountIdentification4Choice__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2Choice__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="CBPR_RestrictedFINXMax70Text"/>
<xs:element maxOccurs="1" minOccurs="0" name="Prxy" type="ProxyAccountIdentification1__1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CashAccountType2Choice__1">
<xs:choice>
<xs:element name="Cd" type="ExternalCashAccountType1Code"/>
<xs:element name="Prtry" type="CBPR_RestrictedFINXMax35Text"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="Cheque14__1">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="InstrId" type="CBPR_RestrictedFINXMax35Text"/>
<xs:element name="OrgnlInstrId" type="CBPR_RestrictedFINXMax35Text"/>
<xs:element name="ChqNb" type="CBPR_RestrictedFINXMax16Text"/>
<xs:element name="IsseDt" type="ISODate"/>
<xs:element maxOccurs="1" minOccurs="0" name="StlDt" type="ISODate"/>
<xs:element name="Amt" type="CBPR_Amount"/>
<xs:element maxOccurs="1" minOccurs="0" name="FctvDt" type="DateAndDateTime2Choice__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="DrwrAgt" type="BranchAndFinancialInstitutionIdentification6__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="DrwrAgtAcct" type="CashAccount40__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="Pyee" type="PartyIdentification135__1"/>
<xs:element name="ChqCxlOrStopSts" type="ChequeCancellationStatus1__1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ChequeCancellationOrStopReportV01">
<xs:sequence>
<xs:element name="GrpHdr" type="GroupHeader103__1"/>
<xs:element name="Chq" type="Cheque14__1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ChequeCancellationStatus1Choice__1">
<xs:choice>
<xs:element name="Cd" type="CBPR_ChequeCancellationOrStopStatusCode"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="ChequeCancellationStatus1__1">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Orgtr" type="ChequePartyRole1Code"/>
<xs:element name="Sts" type="ChequeCancellationStatus1Choice__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="CBPR_RestrictedFINXMax140Text"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="ChequePartyRole1Code">
<xs:restriction base="xs:string">
<xs:enumeration value="DWEA"/>
<xs:enumeration value="DWRA"/>
<xs:enumeration value="PAYE"/>
<xs:enumeration value="PAYR"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ClearingSystemIdentification2Choice__1">
<xs:choice>
<xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="ClearingSystemMemberIdentification2__1">
<xs:sequence>
<xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice__1"/>
<xs:element name="MmbId" type="CBPR_RestrictedFINXMax28Text"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="CountryCode">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{2,2}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="DateAndDateTime2Choice__1">
<xs:choice>
<xs:element name="Dt" type="ISODate"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="DateAndPlaceOfBirth1">
<xs:sequence>
<xs:element name="BirthDt" type="ISODate"/>
<xs:element maxOccurs="1" minOccurs="0" name="PrvcOfBirth" type="Max35Text"/>
<xs:element name="CityOfBirth" type="Max35Text"/>
<xs:element name="CtryOfBirth" type="CountryCode"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="DecimalNumber">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="17"/>
<xs:totalDigits value="18"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Document">
<xs:sequence>
<xs:element name="ChqCxlOrStopRpt" type="ChequeCancellationOrStopReportV01"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="ExternalAccountIdentification1Code">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExternalCashAccountType1Code">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExternalClearingSystemIdentification1Code">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExternalOrganisationIdentification1Code">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExternalPersonIdentification1Code">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExternalProxyAccountType1Code">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="FinancialInstitutionIdentification18__1">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="BICFI" type="BICFIDec2014Identifier"/>
<xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="LEI" type="LEIIdentifier"/>
<xs:element maxOccurs="1" minOccurs="0" name="Nm" type="CBPR_RestrictedFINXMax140Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress24__1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GenericAccountIdentification1__1">
<xs:sequence>
<xs:element name="Id" type="CBPR_RestrictedFINXMax34Text"/>
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="AccountSchemeName1Choice__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="CBPR_RestrictedFINXMax35Text"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GenericOrganisationIdentification1__1">
<xs:sequence>
<xs:element name="Id" type="CBPR_RestrictedFINXMax35Text"/>
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="CBPR_RestrictedFINXMax35Text"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GenericPersonIdentification1__1">
<xs:sequence>
<xs:element name="Id" type="CBPR_RestrictedFINXMax35Text"/>
<xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="PersonIdentificationSchemeName1Choice__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="Issr" type="CBPR_RestrictedFINXMax35Text"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GroupHeader103__1">
<xs:sequence>
<xs:element name="MsgId" type="CBPR_RestrictedFINXMax16Text"/>
<xs:element name="CreDtTm" type="CBPR_DateTime"/>
<xs:element name="NbOfChqs" type="Max15NumericText"/>
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="IBAN2007Identifier">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ISODate">
<xs:restriction base="xs:date"/>
</xs:simpleType>
<xs:simpleType name="LEIIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z0-9]{18,18}[0-9]{2,2}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Max15NumericText">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{1,15}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Max35Text">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="35"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="OrganisationIdentification29__1">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="AnyBIC" type="AnyBICDec2014Identifier"/>
<xs:element maxOccurs="1" minOccurs="0" name="LEI" type="LEIIdentifier"/>
<xs:element maxOccurs="2" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1__1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="OrganisationIdentificationSchemeName1Choice__1">
<xs:choice>
<xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
<xs:element name="Prtry" type="CBPR_RestrictedFINXMax35Text"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="Party38Choice__1">
<xs:choice>
<xs:element name="OrgId" type="OrganisationIdentification29__1"/>
<xs:element name="PrvtId" type="PersonIdentification13__1"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="PartyIdentification135__1">
<xs:sequence>
<xs:element name="Nm" type="CBPR_RestrictedFINXMax140Text_Extended"/>
<xs:element name="PstlAdr" type="PostalAddress24__2"/>
<xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party38Choice__1"/>
<xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PersonIdentification13__1">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth1"/>
<xs:element maxOccurs="2" minOccurs="0" name="Othr" type="GenericPersonIdentification1__1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PersonIdentificationSchemeName1Choice__1">
<xs:choice>
<xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
<xs:element name="Prtry" type="CBPR_RestrictedFINXMax35Text"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="PostalAddress24__1">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Dept" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="SubDept" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="StrtNm" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="BldgNb" type="CBPR_RestrictedFINXMax16Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="BldgNm" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="Flr" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="PstBx" type="CBPR_RestrictedFINXMax16Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="Room" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="PstCd" type="CBPR_RestrictedFINXMax16Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="TwnNm" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="TwnLctnNm" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="DstrctNm" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
<xs:element maxOccurs="3" minOccurs="0" name="AdrLine" type="CBPR_RestrictedFINXMax35Text_Extended"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PostalAddress24__2">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Dept" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="SubDept" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="StrtNm" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="BldgNb" type="CBPR_RestrictedFINXMax16Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="BldgNm" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="Flr" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="PstBx" type="CBPR_RestrictedFINXMax16Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="Room" type="CBPR_RestrictedFINXMax70Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="PstCd" type="CBPR_RestrictedFINXMax16Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="TwnNm" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="TwnLctnNm" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="DstrctNm" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn" type="CBPR_RestrictedFINXMax35Text_Extended"/>
<xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
<xs:element maxOccurs="7" minOccurs="0" name="AdrLine" type="CBPR_RestrictedFINXMax35Text_Extended"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProxyAccountIdentification1__1">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ProxyAccountType1Choice__1"/>
<xs:element name="Id" type="CBPR_RestrictedFINXMax320Text_Extended"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProxyAccountType1Choice__1">
<xs:choice>
<xs:element name="Cd" type="ExternalProxyAccountType1Code"/>
<xs:element name="Prtry" type="CBPR_RestrictedFINXMax35Text"/>
</xs:choice>
</xs:complexType>
</xs:schema>
......@@ -149,6 +149,9 @@ public class Mx2MtTest {
}
@Test
public void test112() { test("/swiftXml/camt10900101.xml",null);}
@Test
public void testXmlFilePath() {
SwiftTranslationReport str = SwiftTransfer.mx2MtPlus("d:/test/MxPacs00800108.xml", true, null, null);
System.out.println(str.getMessage());
......
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