LP#1322303 cleanse backdate for checkin overdue voiding
authorBill Erickson <berick@esilibrary.com>
Thu, 22 May 2014 18:41:17 +0000 (14:41 -0400)
committerBen Shum <bshum@biblio.org>
Tue, 27 May 2014 20:52:57 +0000 (16:52 -0400)
Passing raw backdates, particularly from offline transactions, which
have a space between the date and time, to
DateTime::Format::ISO8601->parse_datetime results in "Invalid date
format:" errors.  Pass the date through the cleanse routine first.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Ben Shum <bshum@biblio.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CircCommon.pm

index 2901ec5..1315a8c 100644 (file)
@@ -44,7 +44,7 @@ sub void_overdues {
         $duration =~ s/(\d{2}):(\d{2}):(\d{2})/$1 h $2 m $3 s/o;
         my $interval = OpenSRF::Utils->interval_to_seconds($duration);
 
-        my $date = DateTime::Format::ISO8601->parse_datetime($backdate);
+        my $date = DateTime::Format::ISO8601->parse_datetime(cleanse_ISO8601($backdate));
         my $due_date = DateTime::Format::ISO8601->parse_datetime(cleanse_ISO8601($circ->due_date))->epoch;
         my $grace_period = extend_grace_period( $class, $circ->circ_lib, $circ->due_date, OpenSRF::Utils->interval_to_seconds($circ->grace_period), $e);
         if($date->epoch <= $due_date + $grace_period) {