From 0a85759d3335c002233d7c7b07a8f8fcaeb22cae Mon Sep 17 00:00:00 2001 From: Josef Moravec Date: Thu, 13 Oct 2016 14:21:48 +0200 Subject: [PATCH] Bug 17443: Make possible to renew patron by later of expiry and current date Test plan 1) Apply the patch 2) Go to system preferences and find the BorrowerRenewalPeriodBase and note there is new option "the later of current and expiry date" 3) Try all three options and confirm they work as expected 3.1) The new options should be tested et least with two patrons - one with expiry date in past and one with expiry date in future Signed-off-by: radiuscz Signed-off-by: Jonathan Druart Signed-off-by: Kyle M Hall --- Koha/Patron.pm | 14 +++++++++----- installer/data/mysql/atomicupdate/bug_17443.sql | 1 + installer/data/mysql/sysprefs.sql | 2 +- .../prog/en/modules/admin/preferences/patrons.pref | 1 + 4 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_17443.sql diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 2e08f335dd..9a2fd18a2c 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -295,11 +295,15 @@ Extending the subscription to the expiry date. sub renew_account { my ($self) = @_; - - my $date = - C4::Context->preference('BorrowerRenewalPeriodBase') eq 'dateexpiry' - ? dt_from_string( $self->dateexpiry ) - : dt_from_string; + my $date; + if ( C4::Context->preference('BorrowerRenewalPeriodBase') eq 'combination' ) { + $date = ( dt_from_string gt dt_from_string( $self->dateexpiry ) ) ? dt_from_string : dt_from_string( $self->dateexpiry ); + } else { + $date = + C4::Context->preference('BorrowerRenewalPeriodBase') eq 'dateexpiry' + ? dt_from_string( $self->dateexpiry ) + : dt_from_string; + } my $patron_category = Koha::Patron::Categories->find( $self->categorycode ); # FIXME Should be $self->category my $expiry_date = $patron_category->get_expiry_date($date); diff --git a/installer/data/mysql/atomicupdate/bug_17443.sql b/installer/data/mysql/atomicupdate/bug_17443.sql new file mode 100644 index 0000000000..768bce21bc --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_17443.sql @@ -0,0 +1 @@ +UPDATE systempreferences SET options = "now|dateexpiry|combination", explanation = "Set whether the borrower renewal date should be counted from the dateexpiry, from the current date or by combination: if the dateexpiry is in future use dateexpiry, else use current date " WHERE variable = "BorrowerRenewalPeriodBase"; diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 9e77caee88..602747cc23 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -82,7 +82,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('BlockReturnOfWithdrawnItems','1','0','If enabled, items that are marked as withdrawn cannot be returned.','YesNo'), ('BorrowerMandatoryField','surname|cardnumber',NULL,'Choose the mandatory fields for a patron\'s account','free'), ('borrowerRelationship','father|mother','','Define valid relationships between a guarantor & a guarantee (separated by | or ,)','free'), -('BorrowerRenewalPeriodBase','now','dateexpiry|now','Set whether the borrower renewal date should be counted from the dateexpiry or from the current date ','Choice'), +('BorrowerRenewalPeriodBase','now','dateexpiry|now|combination','Set whether the borrower renewal date should be counted from the dateexpiry, from the current date or by combination: if the dateexpiry is in future use dateexpiry, else use current date ','Choice'), ('BorrowersLog','1',NULL,'If ON, log edit/create/delete actions on patron data','YesNo'), ('BorrowersTitles','Mr|Mrs|Miss|Ms',NULL,'Define appropriate Titles for patrons','free'), ('BorrowerUnwantedField','',NULL,'Name the fields you don\'t need to store for a patron\'s account','free'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref index b8a2a30d0d..1f5c17d567 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -137,6 +137,7 @@ Patrons: choices: now: current date. dateexpiry: current membership expiry date. + combination: the later one of current and expiry date. - - pref: TalkingTechItivaPhoneNotification choices: -- 2.39.5