[open-ils-commits] r15694 - in branches/rel_1_6/Open-ILS/src/perlmods/OpenILS/Application: . Circ (miker)

svn at svn.open-ils.org svn at svn.open-ils.org
Thu Mar 4 11:16:58 EST 2010


Author: miker
Date: 2010-03-04 11:16:55 -0500 (Thu, 04 Mar 2010)
New Revision: 15694

Modified:
   branches/rel_1_6/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm
   branches/rel_1_6/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm
Log:
preserve time component of original circ when backdating -- mainly to avoid over-voiding billings

Modified: branches/rel_1_6/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm
===================================================================
--- branches/rel_1_6/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm	2010-03-04 15:35:25 UTC (rev 15693)
+++ branches/rel_1_6/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm	2010-03-04 16:16:55 UTC (rev 15694)
@@ -2587,9 +2587,12 @@
     # clean up the backdate for date comparison
     # we want any bills created on or after the backdate
     # ------------------------------------------------------------------
-    $bd =~ s/^(\d{4}-\d{2}-\d{2}).*/$1/og;
-    #$bd = "${bd}T23:59:59";
+    my $original_date = DateTime::Format::ISO8601->new->parse_datetime(clense_ISO8601($self->circ->due_date));
+    my $new_date = DateTime::Format::ISO8601->new->parse_datetime($bd);
+    $bd = $new_date->ymd . 'T' . $original_date->strftime('%T%z');
 
+    $self->backdate($bd);
+
     my $bills = $self->editor->search_money_billing(
         { 
             billing_ts => { '>=' => $bd }, 

Modified: branches/rel_1_6/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm
===================================================================
--- branches/rel_1_6/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm	2010-03-04 15:35:25 UTC (rev 15693)
+++ branches/rel_1_6/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm	2010-03-04 16:16:55 UTC (rev 15694)
@@ -305,8 +305,14 @@
 	$circ->stop_fines_time('now') unless $circ->stop_fines_time;
 
     if( $backdate ) {
+        $backdate = clense_ISO8601($backdate);
+
+        my $original_date = DateTime::Format::ISO8601->new->parse_datetime(clense_ISO8601($circ->due_date));
+        my $new_date = DateTime::Format::ISO8601->new->parse_datetime($backdate);
+        $backdate = $new_date->ymd . 'T' . $original_date->strftime('%T%z');
+
         # make it look like the circ stopped at the cliams returned time
-        $circ->stop_fines_time(clense_ISO8601($backdate));
+        $circ->stop_fines_time($backdate);
         my $evt = OpenILS::Application::Circ::CircCommon->void_overdues($e, $circ, $backdate);
         return $evt if $evt;
     }



More information about the open-ils-commits mailing list