Bugzilla – Attachment 44951 Details for
Bug 14395
Two different ways to calculate 'No renewal before' (days or hours)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 14395: Code changes
Bug-14395-Code-changes.patch (text/plain), 3.15 KB, created by
Holger Meißner
on 2015-11-18 09:30:52 UTC
(
hide
)
Description:
Bug 14395: Code changes
Filename:
MIME Type:
Creator:
Holger Meißner
Created:
2015-11-18 09:30:52 UTC
Size:
3.15 KB
patch
obsolete
>From 772ff5461140558a2af570c740cc49d32c4850da Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Holger=20Mei=C3=9Fner?= <h.meissner.82@web.de> >Date: Thu, 16 Jul 2015 15:22:55 +0200 >Subject: [PATCH] Bug 14395: Code changes >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >This patch updates the calculation of 'No renewal before' to include the >new syspref NoRenewalBeforePrecision. > >To test: > >1) Check out an hour-based loan with 'No renewal before' set to 1. > Switch syspref NoRenewalBeforePrecision between 'date' and 'exact > time'. Confirm that with both settings the item cannot be renewed > until exactly one hour before due. > >2) Check out a day-based loan with 'No renewal before' set to 1 day. > Confirm that: > * with NoRenewalBeforePrecision set to 'date', renewal is possible > at 12:00 AM on the day before due. > * with NoRenewalBeforePrecision set to 'exact time', renewal is > possible at 11:59 PM on the day before due. > >Sponsored-by: Hochschule für Gesundheit (hsg), Germany >--- > C4/Circulation.pm | 33 ++++++++++++++++++++++----------- > 1 file changed, 22 insertions(+), 11 deletions(-) > >diff --git a/C4/Circulation.pm b/C4/Circulation.pm >index 35651f2..c52b2b1 100644 >--- a/C4/Circulation.pm >+++ b/C4/Circulation.pm >@@ -2821,14 +2821,20 @@ sub CanBookBeRenewed { > and $issuingrule->{norenewalbefore} ne "" ) > { > >- # Get current time and add norenewalbefore. >- # If this is smaller than date_due, it's too soon for renewal. >- my $now = dt_from_string; >- if ( >- $now->add( >- $issuingrule->{lengthunit} => $issuingrule->{norenewalbefore} >- ) < $itemissue->{date_due} >- ) >+ # Calculate soonest renewal by subtracting 'No renewal before' from due date >+ my $soonestrenewal = >+ $itemissue->{date_due}->clone() >+ ->subtract( >+ $issuingrule->{lengthunit} => $issuingrule->{norenewalbefore} ); >+ >+ # Depending on syspref reset the exact time, only check the date >+ if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date' >+ and $issuingrule->{lengthunit} eq 'days' ) >+ { >+ $soonestrenewal->truncate( to => 'day' ); >+ } >+ >+ if ( $soonestrenewal > DateTime->now( time_zone => C4::Context->tz() ) ) > { > return ( 0, "auto_too_soon" ) if $itemissue->{auto_renew}; > return ( 0, "too_soon" ); >@@ -3064,11 +3070,16 @@ sub GetSoonestRenewDate { > and $issuingrule->{norenewalbefore} ne "" ) > { > my $soonestrenewal = >- $itemissue->{date_due}->subtract( >+ $itemissue->{date_due}->clone() >+ ->subtract( > $issuingrule->{lengthunit} => $issuingrule->{norenewalbefore} ); > >- $soonestrenewal = $now > $soonestrenewal ? $now : $soonestrenewal; >- return $soonestrenewal; >+ if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date' >+ and $issuingrule->{lengthunit} eq 'days' ) >+ { >+ $soonestrenewal->truncate( to => 'day' ); >+ } >+ return $soonestrenewal if $now < $soonestrenewal; > } > return $now; > } >-- >1.7.10.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 14395
:
41027
|
41028
|
41029
|
41053
|
41054
|
41189
|
41197
|
42785
|
43810
|
43811
|
43812
|
44950
|
44951
|
44952
|
47777
|
47778
|
47779