package com.brilliance.isc.swift.objmtconvert.model.busvalidator.mt1xx;
import com.brilliance.isc.swift.objmtconvert.model.AbsMTValidator;
import com.brilliance.isc.swift.objmtconvert.result.MtResult;

/**
 * 103报文的校验类，校验规则如下：<br/>
 * 1.当33B存在时，如果33B和32A的币种不相同，则必须36必须存在；当33B不存在或者33B和32A的币种相同时，36不能存在。不符合时报错D75.<br/>
 * 2.当以下列表既包含发报行BIC的国家地区码又包含收报行的BIC的国家地区码时，33B必须存在。<br/>
 * 列表：AD, AT, BE, BG, BV, CH, CY, CZ, DE, DK, ES, EE, FI, FR, GB, GF, GI, GP, GR, HU, IE, IS, IT, LI, LT, LU, LV, MC,
 * MQ, MT, NL, NO, PL, PM, PT, RE, RO, SE, SI, SJ, SK, SM, TF, VA.<br/>
 * 不符合时报错D49.<br/>
 * 3.当23B的值为SPRI时，23E的值只能选择SDVA, TELB, PHOB, INTC。不符合时报错E01.<br/>
 * 当23B的值为SSTD或SPAY时，23E不能存在。不符合时报错E02.<br/>
 * 4.当23B的值为SPRI, SSTD, SPAY的其中一个时，53a域不能选择53D。不符合时报错E03.<br/>
 * 5.当23B的值为SPRI, SSTD, SPAY的其中一个且53a域选择53B时，53B必须填写Party Identifier。不符合时报错E04.<br/>
 * 6.当23B的值为SPRI, SSTD, SPAY的其中一个时，54a域必须选择54A。不符合时报错E05.<br/>
 * 7.当55a存在时，53a和54a也必须存在。不符合时报错E06.<br/>
 * 8.当23B的值为SPRI, SSTD, SPAY的其中一个时，55a域必须选择55A。不符合时报错E07.<br/>
 * 9.当56a存在时，57a也必须存在。不符合时报错C81.<br/>
 * 10.当23B的值为SPRI时，56a不能存在。不符合时报错E16.<br/>
 * 当23B的值为SSTD或SPAY时，56a必须选择56A或56C。选择56C时，必须使用Clearing code。不符合时报错E17.<br/>
 * 11.当23B的值为SPRI, SSTD, SPAY的其中一个时，57a必须选择57A, 57C, 57D中的一个。选择57D时，必须填写Party Identifier。
 * 不符合时报错E09. <br/>
 * 12.当23B的值为SPRI, SSTD, SPAY的其中一个时，59a必须填写Account。不符合时报错E10<br/>
 * 13.当23E有值为CHQB时，59a不能填写Account。不符合时报错E18.<br/>
 * 14.当71A的值为OUR时，71F不能存在。不符合时报错E13.<br/>
 * 当71A的值为SHA时，71G不能存在。不符合时报错D50. <br/>
 * 当71A的值为BEN时，71F必须存在，71G不能存在。不符合时报错E15.<br/>
 * 15.当71F或71G存在时，33B必须存在。不符合时报错D51. <br/>
 * 注意：71F, 71G仍然受规则14的约束；33B仍然受规则2的约束。<br/>
 * 16.当56a不存在时，23E不能填写TELI或PHOI。不符合时报错E44.<br/>
 * 17.当57a不存在时，23E不能填写TELE或PHON。不符合时报错E45.<br/>
 * 18.71G和32A的币种必须相同。不符合时报错C02.<br/>
 * 来源：<a href="https://www2.swift.com/knowledgecentre/publications/us1m_20220722/2.0?topic=mt103-network-rules.htm">
 *     MT 103 Network Validated Rules</a>
 * @author liusheng
 */
public class MT103Validator extends AbsMTValidator {

    public MT103Validator(String mtStr, MtResult mtResult)
    {
        super(mtStr,mtResult);
    }
    @Override
    public void bussinessValidator() {
         validatorOfMT103AndMT103REMIT();
    }
}
