VRBL-INV-SA-1p2-61

Basic Info

Rule If the Delivery Group contains Latest Delivery Date, then this date must be greater than or equal to the Actual Delivery Date.
Context /ubl:Invoice/cac:Delivery
Pattern vrbl-invoice-sa-1p2
Severity fatal

Implementation

count(cbc:LatestDeliveryDate) <=0 or count(cbc:ActualDeliveryDate)<=0 or (string-length(cbc:LatestDeliveryDate) = 10 and substring(cbc:LatestDeliveryDate, 5, 1) = '-' and substring(cbc:LatestDeliveryDate, 8, 1) = '-' and number(substring(cbc:LatestDeliveryDate, 6, 2)) >= 1 and number(substring(cbc:LatestDeliveryDate, 6, 2)) <= 12 and number(substring(cbc:LatestDeliveryDate, 9, 2)) >= 1 and number(substring(cbc:LatestDeliveryDate, 9, 2)) <= 31 and string-length(cbc:ActualDeliveryDate) = 10 and substring(cbc:ActualDeliveryDate, 5, 1) = '-' and substring(cbc:ActualDeliveryDate, 8, 1) = '-' and number(substring(cbc:ActualDeliveryDate, 6, 2)) >= 1 and number(substring(cbc:ActualDeliveryDate, 6, 2)) <= 12 and number(substring(cbc:ActualDeliveryDate, 9, 2)) >= 1 and number(substring(cbc:ActualDeliveryDate, 9, 2)) <= 31 and translate(cbc:LatestDeliveryDate, '-', '') >= translate(cbc:ActualDeliveryDate, '-', ''))