VRBL-INV-MY-1p0-69

Basic Info

Rule The Buyer Country Subentity Code must be provided, if the Buyer Country Identification Code is 'MY', and follow the VRBL Country Subentity Code List, or the ISO 3166-2 Code List.
Context /ubl:Invoice/cac:AccountingCustomerParty/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_'
	)
)