From: miker Date: Wed, 3 Mar 2010 19:47:45 +0000 (+0000) Subject: backporting r15680: keep the original due_date time component of day-granular circs... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=df614b3960bc9e8d3ac6c226a04c0667f155bce5;p=working%2FEvergreen.git backporting r15680: keep the original due_date time component of day-granular circs on due_date edit git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_6@15681 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm index 8aae114a72..5440d23077 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm @@ -341,6 +341,13 @@ sub set_circ_due_date { return $e->die_event unless $e->allowed('CIRC_OVERRIDE_DUE_DATE', $circ->circ_lib); $date = clense_ISO8601($date); + + if (!(interval_to_seconds($circ->duration) % 86400)) { # duration is divisible by days + my $original_date = DateTime::Format::ISO8601->new->parse_datetime(cleanse_ISO8601($circ->due_date)); + my $new_date = DateTime::Format::ISO8601->new->parse_datetime($date); + $date = $new_date->ymd . 'T' . $original_date->strftime('%T%z'); + } + $circ->due_date($date); $e->update_action_circulation($circ) or return $e->die_event; $e->commit;