@@ -, +, @@ and current date 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 --- 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 --- a/Koha/Patron.pm +++ a/Koha/Patron.pm @@ -218,11 +218,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); --- a/installer/data/mysql/atomicupdate/bug_17443.sql +++ a/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"; --- a/installer/data/mysql/sysprefs.sql +++ a/installer/data/mysql/sysprefs.sql @@ -76,7 +76,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'), --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -133,6 +133,7 @@ Patrons: choices: now: current date. dateexpiry: current membership expiry date. + combination: the later one of current and expiry date. - - pref: TalkingTechItivaPhoneNotification choices: --