@@ -, +, @@
item type or branch.
--- a/Koha/CirculationRules.pm
+++ a/Koha/CirculationRules.pm
@@ -195,6 +195,9 @@ our $RULE_KINDS = {
recall_shelf_time => {
scope => [ 'branchcode', 'categorycode', 'itemtype' ],
},
+ holds_pickup_period => {
+ scope => [ 'branchcode', 'categorycode', 'itemtype' ],
+ },
# Not included (deprecated?):
# * accountsent
# * reservecharge
--- a/Koha/Hold.pm
+++ a/Koha/Hold.pm
@@ -208,6 +208,17 @@ sub set_waiting {
my $new_expiration_date = $today->clone->add(days => $max_pickup_delay);
+ my $rule = Koha::CirculationRules->get_effective_rule({
+ categorycode => $self->borrower->categorycode,
+ itemtype => $self->item->effective_itemtype,
+ branchcode => $self->branchcode,
+ rule_name => 'holds_pickup_period',
+ });
+ if ( defined($rule) and $rule->rule_value ne '' ){
+ # circulation rule overrides ReservesMaxPickUpDelay
+ $max_pickup_delay = $rule->rule_value;
+ }
+
if ( C4::Context->preference("ExcludeHolidaysFromMaxPickUpDelay") ) {
my $itemtype = $self->item ? $self->item->effective_itemtype : $self->biblio->itemtype;
my $daysmode = Koha::CirculationRules->get_effective_daysmode(
--- a/admin/smart-rules.pl
+++ a/admin/smart-rules.pl
@@ -299,6 +299,7 @@ elsif ($op eq 'add') {
my $recall_due_date_interval = $input->param('recall_due_date_interval');
my $recall_overdue_fine = $input->param('recall_overdue_fine');
my $recall_shelf_time = $input->param('recall_shelf_time');
+ my $holds_pickup_period = strip_non_numeric($input->param('holds_pickup_period'));
my $rules = {
maxissueqty => $maxissueqty,
@@ -339,6 +340,7 @@ elsif ($op eq 'add') {
recall_due_date_interval => $recall_due_date_interval,
recall_overdue_fine => $recall_overdue_fine,
recall_shelf_time => $recall_shelf_time,
+ holds_pickup_period => $holds_pickup_period,
};
Koha::CirculationRules->set_rules(
--- a/installer/data/mysql/atomicupdate/bug_8367-add_holds_pickup_period_circrule.perl
+++ a/installer/data/mysql/atomicupdate/bug_8367-add_holds_pickup_period_circrule.perl
@@ -0,0 +1,6 @@
+$DBversion = 'XXX';
+if( CheckVersion( $DBversion ) ) {
+ $dbh->do(q{INSERT IGNORE INTO circulation_rules (branchcode, categorycode, itemtype, rule_name, rule_value) VALUES (NULL, NULL, NULL, 'holds_pickup_period', NULL) });
+
+ NewVersion( $DBversion, 8367, "Add holds_pickup_period circulation rule" );
+}
--- a/installer/onboarding.pl
+++ a/installer/onboarding.pl
@@ -294,6 +294,7 @@ if ( $step == 5 ) {
recall_due_date_interval => undef,
recall_overdue_fine => undef,
recall_shelf_time => undef,
+ holds_pickup_period => undef,
}
};
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt
@@ -140,6 +140,7 @@
Holds per record (count) |
On shelf holds allowed |
OPAC item level holds |
+ Holds pickup period (day) |
Article requests |
Rental discount (%) |
[% IF Koha.Preference('UseRecalls') %]
@@ -197,8 +198,10 @@
[% SET recall_due_date_interval = all_rules.$c.$i.recall_due_date_interval %]
[% SET recall_overdue_fine = all_rules.$c.$i.recall_overdue_fine %]
[% SET recall_shelf_time = all_rules.$c.$i.recall_shelf_time %]
+ [% SET holds_pickup_period = all_rules.$c.$i.holds_pickup_period %]
+
+ [% SET show_rule = note || maxissueqty || maxonsiteissueqty || issuelength || daysmode || lengthunit || hardduedate || hardduedatecompare || fine || chargeperiod || chargeperiod_charge_at || firstremind || overduefinescap || cap_fine_to_replacement_price || finedays || maxsuspensiondays || suspension_chargeperiod || renewalsallowed || unseenrenewalsallowed || renewalperiod || norenewalbefore || auto_renew || no_auto_renewal_after || no_auto_renewal_after_hard_limit || reservesallowed || holds_per_day || holds_per_record || onshelfholds || opacitemholds || article_requests || rentaldiscount || decreaseloanholds || recalls_allowed || recalls_per_record || on_shelf_recalls || recall_due_date_interval || recall_overdue_fine || recall_shelf_time || holds_pickup_period %]
- [% SET show_rule = note || maxissueqty || maxonsiteissueqty || issuelength || daysmode || lengthunit || hardduedate || hardduedatecompare || fine || chargeperiod || chargeperiod_charge_at || firstremind || overduefinescap || cap_fine_to_replacement_price || finedays || maxsuspensiondays || suspension_chargeperiod || renewalsallowed || unseenrenewalsallowed || renewalperiod || norenewalbefore || auto_renew || no_auto_renewal_after || no_auto_renewal_after_hard_limit || reservesallowed || holds_per_day || holds_per_record || onshelfholds || opacitemholds || article_requests || rentaldiscount || decreaseloanholds || recalls_allowed || recalls_per_record || on_shelf_recalls || recall_due_date_interval || recall_overdue_fine || recall_shelf_time %]
[% IF show_rule %]
[% SET row_count = row_count + 1 %]
@@ -346,6 +349,7 @@
Don't allow
[% END %]
+ [% holds_pickup_period | html %] |
[% IF article_requests == 'no' %]
No
@@ -492,6 +496,7 @@
|
+ |
|