VRBL-INV-MY-1p0-46

Basic Info

Rule The Seller Country Subentity Code must be provided, if the Seller Country Identification Code is 'MY', and follow the VRBL Country Subentity Code List, or the ISO 3166-2 Code List.
Context /ubl:Invoice/cac:AccountingSupplierParty/cac:Party/cac:PostalAddress
Pattern vrbl-invoice-my-1p0
Severity fatal

Implementation

not(boolean(cac:Country/cbc:IdentificationCode))
or
(
	cac:Country/cbc:IdentificationCode = 'MY'
	and
	(
		not(boolean(cbc:CountrySubentityCode))
		or
		(
			starts-with(cbc:CountrySubentityCode, $VRBL-MY-Prefix)
			and
			contains(
				$VRBL-CL-MY-VRBL-CountrySubentityCode,
				concat(
					substring($VRBL-CL-MY-VRBL-CountrySubentityCode, 1, 1),
					substring(cbc:CountrySubentityCode, string-length($VRBL-MY-Prefix) + 1),
					substring($VRBL-CL-MY-VRBL-CountrySubentityCode, 1, 1)
				)
			)
		)
		or
		(
			contains(
				$VRBL-CL-MY-ISO-CountrySubentityCode,
				concat(
					substring($VRBL-CL-MY-ISO-CountrySubentityCode, 1, 1),
					cbc:CountrySubentityCode,
					substring($VRBL-CL-MY-ISO-CountrySubentityCode, 1, 1)
				)
			)
		)
	)
)
or
(
	not(cac:Country/cbc:IdentificationCode = 'MY')
	and
	(
		not(boolean(cbc:CountrySubentityCode))
		or
		cbc:CountrySubentityCode = concat($VRBL-MY-Prefix, '00') or cbc:CountrySubentityCode = '_N/A_'
		or
		cbc:CountrySubentityCode = concat($VRBL-MY-Prefix, '17') or cbc:CountrySubentityCode = '_N/A_'
	)
)