@@ -, +, @@
item type or branch.
--- a/Koha/CirculationRules.pm
+++ a/Koha/CirculationRules.pm
@@ -169,6 +169,9 @@ our $RULE_KINDS = {
decreaseloanholds => {
scope => [ 'branchcode', 'categorycode', 'itemtype' ],
},
+ holds_pickup_period => {
+ scope => [ 'branchcode', 'categorycode', 'itemtype' ],
+ },
# Not included (deprecated?):
# * accountsent
# * reservecharge
--- a/Koha/Hold.pm
+++ a/Koha/Hold.pm
@@ -196,6 +196,18 @@ sub set_waiting {
my $cancel_on_holidays = C4::Context->preference('ExpireReservesOnHolidays');
my $expirationdate = $today->clone;
+
+ 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;
+ }
+
$expirationdate->add(days => $max_pickup_delay);
if ( C4::Context->preference("ExcludeHolidaysFromMaxPickUpDelay") ) {
--- a/admin/smart-rules.pl
+++ a/admin/smart-rules.pl
@@ -290,6 +290,7 @@ elsif ($op eq 'add') {
my $cap_fine_to_replacement_price = ($input->param('cap_fine_to_replacement_price') || '') eq 'on';
my $note = $input->param('note');
my $decreaseloanholds = $input->param('decreaseloanholds') || undef;
+ my $holds_pickup_period = strip_non_numeric($input->param('holds_pickup_period'));
$debug and warn "Adding $br, $bor, $itemtype, $fine, $maxissueqty, $maxonsiteissueqty, $cap_fine_to_replacement_price";
my $rules = {
@@ -325,6 +326,7 @@ elsif ($op eq 'add') {
article_requests => $article_requests,
note => $note,
decreaseloanholds => $decreaseloanholds,
+ 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
@@ -288,6 +288,7 @@ if ( $step == 5 ) {
reservesallowed => $reservesallowed,
suspension_chargeperiod => undef,
decreaseloanholds => 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
@@ -126,6 +126,7 @@
Holds per record (count) |
On shelf holds allowed |
OPAC item level holds |
+ Holds pickup period (day) |
Article requests |
Rental discount (%) |
Actions |
@@ -169,8 +170,9 @@
[% SET article_requests = all_rules.$c.$i.article_requests %]
[% SET rentaldiscount = all_rules.$c.$i.rentaldiscount %]
[% SET decreaseloanholds = all_rules.$c.$i.decreaseloanholds %]
+ [% 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 %]
+ [% 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 || holds_pickup_period %]
[% IF show_rule %]
[% SET row_count = row_count + 1 %]
@@ -318,6 +320,7 @@
Don't allow
[% END %]
+ [% holds_pickup_period | html %] |
[% IF article_requests == 'no' %]
No
@@ -450,6 +453,7 @@
|
+ |
|