@@ -, +, @@
item type or branch.
---
Koha/CirculationRules.pm | 3 +
Koha/Hold.pm | 12 +++
admin/smart-rules.pl | 2 +
.../bug_8367-add_holds_pickup_period_circrule.perl | 6 ++
installer/onboarding.pl | 1 +
.../prog/en/modules/admin/smart-rules.tt | 7 +-
.../thirdparty/TalkingTech_itiva_outbound.pl | 12 +++
t/db_dependent/Holds/WaitingReserves.t | 90 +++++++++++++++++++++-
8 files changed, 131 insertions(+), 2 deletions(-)
create mode 100644 installer/data/mysql/atomicupdate/bug_8367-add_holds_pickup_period_circrule.perl
--- a/Koha/CirculationRules.pm
+++ a/Koha/CirculationRules.pm
@@ -157,6 +157,9 @@ our $RULE_KINDS = {
note => { # This is not really a rule. Maybe we will want to separate this later.
scope => [ 'branchcode', 'categorycode', 'itemtype' ],
},
+ holds_pickup_period => {
+ scope => [ 'branchcode', 'categorycode', 'itemtype' ],
+ },
# Not included (deprecated?):
# * accountsent
# * reservecharge
--- a/Koha/Hold.pm
+++ a/Koha/Hold.pm
@@ -181,6 +181,18 @@ sub set_waiting {
my $calendar = Koha::Calendar->new( branchcode => $self->branchcode );
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
@@ -288,6 +288,7 @@ elsif ($op eq 'add') {
my $overduefinescap = $input->param('overduefinescap') || '';
my $cap_fine_to_replacement_price = $input->param('cap_fine_to_replacement_price') eq 'on';
my $note = $input->param('note');
+ 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 = {
@@ -320,6 +321,7 @@ elsif ($op eq 'add') {
cap_fine_to_replacement_price => $cap_fine_to_replacement_price,
article_requests => $article_requests,
note => $note,
+ 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
@@ -283,6 +283,7 @@ if ( $step == 5 ) {
rentaldiscount => 0,
reservesallowed => $reservesallowed,
suspension_chargeperiod => 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
@@ -115,6 +115,7 @@
Holds per record (count) |
On shelf holds allowed |
OPAC item level holds |
+ Holds pickup period (day) |
Article requests |
Rental discount (%) |
Actions |
@@ -153,10 +154,11 @@
[% SET holds_per_record = all_rules.$c.$i.holds_per_record %]
[% SET onshelfholds = all_rules.$c.$i.onshelfholds %]
[% SET opacitemholds = all_rules.$c.$i.opacitemholds %]
+ [% SET holds_pickup_period = all_rules.$c.$i.holds_pickup_period %]
[% SET article_requests = all_rules.$c.$i.article_requests %]
[% SET rentaldiscount = all_rules.$c.$i.rentaldiscount %]
- [% SET show_rule = maxissueqty || maxonsiteissueqty || issuelength || lengthunit || hardduedate || hardduedatebefore || hardduedateexact || fine || chargeperiod || chargeperiod_charge_at || firstremind || overduefinescap || cap_fine_to_replacement_price || finedays || maxsuspensiondays || suspension_chargeperiod || renewalsallowed || renewalsallowed || norenewalbefore || auto_renew || no_auto_renewal_after || no_auto_renewal_after_hard_limit || reservesallowed || holds_per_day || holds_per_record || onshelfholds || opacitemholds || article_requests || article_requests %]
+ [% SET show_rule = maxissueqty || maxonsiteissueqty || issuelength || lengthunit || hardduedate || hardduedatebefore || hardduedateexact || fine || chargeperiod || chargeperiod_charge_at || firstremind || overduefinescap || cap_fine_to_replacement_price || finedays || maxsuspensiondays || suspension_chargeperiod || renewalsallowed || renewalsallowed || norenewalbefore || auto_renew || no_auto_renewal_after || no_auto_renewal_after_hard_limit || reservesallowed || holds_per_day || holds_per_record || onshelfholds || opacitemholds || article_requests || article_requests || holds_pickup_period %]
[% IF show_rule %]
[% SET row_count = row_count + 1 %]
@@ -289,6 +291,7 @@
Don't allow
[% END %]
+ [% holds_pickup_period | html %] |
[% IF article_requests == 'no' %]
No
@@ -395,6 +398,7 @@
|
+ |
|