updated the max_delay_age date math, added comments
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 26 Oct 2009 15:15:39 +0000 (15:15 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 26 Oct 2009 15:15:39 +0000 (15:15 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@14605 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator.pm

index 6efe8c4..df50636 100644 (file)
@@ -26,9 +26,15 @@ sub MaxPassiveDelayAge {
     my $delay_field = $env->{event}->event_def->delay_field;
 
     my $delay_field_ts = DateTime::Format::ISO8601->new->parse_datetime(clense_ISO8601($target->$delay_field()));
-    $delay_field_ts->add( seconds => interval_to_seconds( $env->{params}->{max_delay_age} ) );
 
-    return 0 if $delay_field_ts > DateTime->now;
+    # the cutoff date is today - delay - age.  This is also true for negative delays.
+    # For example, today - "7 days" - "1 day" == 8 days ago.  For a 7-day delay, you would
+    # not validate if the date of the object is 8 or more days old.
+    my $max_date = DateTime->now;
+    $max_date->subtract( seconds => interval_to_seconds( $env->{event}->event_def->delay ) );
+    $max_date->subtract( seconds => interval_to_seconds( $env->{params}->{max_delay_age} ) );
+
+    return 0 if $delay_field_ts <= $max_date;
     return 1;
 }