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: