Bug 11580 - If returnBeforeExpiry is ON, use calendar to calculate return date not...
authorSophie Meynieux <sophie.meynieux@biblibre.com>
Wed, 16 Nov 2016 15:46:04 +0000 (16:46 +0100)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 1 Sep 2017 16:00:07 +0000 (13:00 -0300)
Test plan:
1. ReturnBeforeExpiry is activated
2. useDaysMode is different from "circulation rules only"
3. Set expiry date of a patron to a near date
4. Set a closed day on calendar for this date
5. Do a checkout

Without patch, return date will be patron expiration date
With the patch, return date will be last open day before patron expiration day

Signed-off-by: Claire Gravely <claire_gravely@hotmail.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
C4/Circulation.pm

index fba723f..7434d64 100644 (file)
@@ -3513,6 +3513,11 @@ sub CalcDateDue {
                 $datedue = $expiry_dt->clone->set_time_zone( C4::Context->tz );
             }
         }
+        if ( C4::Context->preference('useDaysMode') ne 'Days' ) {
+          # Don't return on a closed day
+          my $calendar = Koha::Calendar->new( branchcode => $branch );
+          $datedue = $calendar->prev_open_day( $datedue );
+        }
     }
 
     return $datedue;