From a5f0a57081a7502e524b9f20d43bc3d21c9002b3 Mon Sep 17 00:00:00 2001 From: Jesse Weaver Date: Mon, 26 Feb 2018 12:17:16 -0700 Subject: [PATCH] Bug 18936: (follow-up) Fix tests, replace old get_onshelfholds_policy method --- Koha/CirculationRules.pm | 21 +++++++++++++++++++++ installer/onboarding.pl | 18 +++++++++--------- opac/opac-ISBDdetail.pl | 5 +++-- opac/opac-MARCdetail.pl | 4 ++-- opac/opac-detail.pl | 4 ++-- opac/opac-reserve.pl | 4 ++-- opac/opac-shelves.pl | 4 ++-- reserve/request.pl | 4 ++-- t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t | 16 ++++++++-------- t/db_dependent/Reserves.t | 13 ------------- 10 files changed, 51 insertions(+), 42 deletions(-) diff --git a/Koha/CirculationRules.pm b/Koha/CirculationRules.pm index 7f8d36e762..86d1582990 100644 --- a/Koha/CirculationRules.pm +++ b/Koha/CirculationRules.pm @@ -342,7 +342,28 @@ sub delete { while ( my $rule = $self->next ){ $rule->delete; } +} + +=head3 get_onshelfholds_policy + + my $on_shelf_holds = Koha::CirculationRules->get_onshelfholds_policy({ item => $item, patron => $patron }); + +=cut +sub get_onshelfholds_policy { + my ( $class, $params ) = @_; + my $item = $params->{item}; + my $itemtype = $item->effective_itemtype; + my $patron = $params->{patron}; + my $rule = Koha::CirculationRules->get_effective_rule( + { + categorycode => ( $patron ? $patron->categorycode : undef ), + itemtype => $itemtype, + branchcode => $item->holdingbranch, + rule_name => 'onshelfholds', + } + ); + return $rule ? $rule->rule_value : undef; } =head3 type diff --git a/installer/onboarding.pl b/installer/onboarding.pl index 77aa12018a..8951530a26 100755 --- a/installer/onboarding.pl +++ b/installer/onboarding.pl @@ -30,7 +30,6 @@ use Koha::DateUtils; use Koha::Patrons; use Koha::Patron::Categories; use Koha::ItemTypes; -use Koha::IssuingRules; #Setting variables my $input = new CGI; @@ -251,15 +250,16 @@ if ( $step == 5 ) { branchcode => $branchcode, categorycode => $categorycode, itemtype => $itemtype, - renewalsallowed => $renewalsallowed, - renewalperiod => $renewalperiod, - issuelength => $issuelength, - lengthunit => $lengthunit, - onshelfholds => $onshelfholds, + rules => { + renewalsallowed => $renewalsallowed, + renewalperiod => $renewalperiod, + issuelength => $issuelength, + lengthunit => $lengthunit, + onshelfholds => $onshelfholds, + } }; - my $issuingrule = Koha::IssuingRule->new($params); - eval { $issuingrule->store; }; + eval { Koha::CirculationRules->set_rules( $params ) }; if ($@) { push @messages, { code => 'error_on_insert_circ_rule' }; @@ -287,7 +287,7 @@ if ( $step == 5 ) { } } - $step++ if Koha::IssuingRules->count; + $step++ if Koha::CirculationRules->count; } my $libraries = Koha::Libraries->search( {}, { order_by => ['branchcode'] }, ); diff --git a/opac/opac-ISBDdetail.pl b/opac/opac-ISBDdetail.pl index c79167cd31..1a67bbad8d 100755 --- a/opac/opac-ISBDdetail.pl +++ b/opac/opac-ISBDdetail.pl @@ -51,7 +51,8 @@ use C4::Reserves; use C4::Acquisition; use C4::Serials; # uses getsubscriptionfrom biblionumber use C4::Koha; -use Koha::IssuingRules; +use Koha::CirculationRules; +use Koha::Items; use Koha::ItemTypes; use Koha::Patrons; use Koha::RecordProcessor; @@ -178,7 +179,7 @@ while ( my $item = $items->next ) { && !Koha::ItemTypes->find($item->effective_itemtype)->notforloan && $item->itemnumber; - $allow_onshelf_holds = Koha::IssuingRules->get_onshelfholds_policy( { item => $item, patron => $patron } ) + $allow_onshelf_holds = Koha::CirculationRules->get_onshelfholds_policy( { item => $item, patron => $patron } ) unless $allow_onshelf_holds; } diff --git a/opac/opac-MARCdetail.pl b/opac/opac-MARCdetail.pl index 8fb0c4ebbb..4bc9294b50 100755 --- a/opac/opac-MARCdetail.pl +++ b/opac/opac-MARCdetail.pl @@ -58,7 +58,7 @@ use C4::Acquisition; use C4::Koha; use List::MoreUtils qw( any uniq ); use Koha::Biblios; -use Koha::IssuingRules; +use Koha::CirculationRules; use Koha::Items; use Koha::ItemTypes; use Koha::Patrons; @@ -138,7 +138,7 @@ $template->param( my $allow_onshelf_holds; for my $itm (@all_items) { my $item = Koha::Items->find( $itm->{itemnumber} ); - $allow_onshelf_holds = Koha::IssuingRules->get_onshelfholds_policy( { item => $item, patron => $patron } ); + $allow_onshelf_holds = Koha::CirculationRules->get_onshelfholds_policy( { item => $item, patron => $patron } ); last if $allow_onshelf_holds; } diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index e55ecb6a39..61983588fe 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -52,7 +52,7 @@ use C4::CourseReserves qw(GetItemCourseReservesInfo); use Koha::Biblios; use Koha::RecordProcessor; use Koha::AuthorisedValues; -use Koha::IssuingRules; +use Koha::CirculationRules; use Koha::Items; use Koha::ItemTypes; use Koha::Acquisition::Orders; @@ -687,7 +687,7 @@ if ( not $viewallitems and @items > $max_items_to_display ) { && !$itemtypes->{$itm->{'itype'}}->{notforloan} && $itm->{'itemnumber'}; - $allow_onshelf_holds = Koha::IssuingRules->get_onshelfholds_policy( { item => $item, patron => $patron } ) + $allow_onshelf_holds = Koha::CirculationRules->get_onshelfholds_policy( { item => $item, patron => $patron } ) unless $allow_onshelf_holds; # get collection code description, too diff --git a/opac/opac-reserve.pl b/opac/opac-reserve.pl index 56c5bc2695..1087198d0c 100755 --- a/opac/opac-reserve.pl +++ b/opac/opac-reserve.pl @@ -36,7 +36,7 @@ use C4::Debug; use Koha::AuthorisedValues; use Koha::Biblios; use Koha::DateUtils; -use Koha::IssuingRules; +use Koha::CirculationRules; use Koha::Items; use Koha::ItemTypes; use Koha::Checkouts; @@ -543,7 +543,7 @@ foreach my $biblioNum (@biblionumbers) { CanItemBeReserved( $borrowernumber, $itemNum )->{status} eq 'OK'; if ($policy_holdallowed) { - my $opac_hold_policy = Koha::IssuingRules->get_opacitemholds_policy( { item => $item, patron => $patron } ); + my $opac_hold_policy = Koha::CirculationRules->get_opacitemholds_policy( { item => $item, patron => $patron } ); if ( $opac_hold_policy ne 'N' ) { # If Y or F $itemLoopIter->{available} = 1; $numCopiesOPACAvailable++; diff --git a/opac/opac-shelves.pl b/opac/opac-shelves.pl index 8ae84e414d..704de7ff8d 100755 --- a/opac/opac-shelves.pl +++ b/opac/opac-shelves.pl @@ -31,7 +31,7 @@ use C4::XSLT; use Koha::Biblios; use Koha::Biblioitems; -use Koha::IssuingRules; +use Koha::CirculationRules; use Koha::Items; use Koha::ItemTypes; use Koha::Patrons; @@ -319,7 +319,7 @@ if ( $op eq 'view' ) { my $items = $biblio->items; while ( my $item = $items->next ) { - $this_item->{allow_onshelf_holds} = Koha::IssuingRules->get_onshelfholds_policy( { item => $item, patron => $patron } ); + $this_item->{allow_onshelf_holds} = Koha::CirculationRules->get_onshelfholds_policy( { item => $item, patron => $patron } ); last if $this_item->{allow_onshelf_holds}; } diff --git a/reserve/request.pl b/reserve/request.pl index c7832434a3..a6d468761e 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -48,7 +48,7 @@ use Koha::Biblios; use Koha::DateUtils; use Koha::Checkouts; use Koha::Holds; -use Koha::IssuingRules; +use Koha::CirculationRules; use Koha::Items; use Koha::ItemTypes; use Koha::Libraries; @@ -551,7 +551,7 @@ foreach my $biblionumber (@biblionumbers) { my $can_item_be_reserved = CanItemBeReserved( $patron->borrowernumber, $itemnumber, $pickup ); $item->{not_holdable} = $can_item_be_reserved->{status} unless ( $can_item_be_reserved->{status} eq 'OK' ); - $item->{item_level_holds} = Koha::IssuingRules->get_opacitemholds_policy( { item => $item_object, patron => $patron } ); + $item->{item_level_holds} = Koha::CirculationRules->get_opacitemholds_policy( { item => $item_object, patron => $patron } ); if ( !$item->{cantreserve} diff --git a/t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t b/t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t index fdc8f81f64..f49aa107a9 100755 --- a/t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t +++ b/t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t @@ -216,17 +216,17 @@ my $hold = $builder->build({ } }); -Koha::IssuingRule->new( +Koha::CirculationRules->set_rules( { - categorycode => '*', + categorycode => undef, itemtype => $itemtype2, - branchcode => '*', - issuelength => 7, - lengthunit => 8, - reservesallowed => 99, - onshelfholds => 0, + branchcode => undef, + rules => { + maxissueqty => 99, + onshelfholds => 2, + } } -)->store(); +); $is = IsAvailableForItemLevelRequest( $item3, $patron1); is( $is, 1, "Item can be held, items in transit are not available" ); diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t index efe986dc9a..b5166d8d48 100755 --- a/t/db_dependent/Reserves.t +++ b/t/db_dependent/Reserves.t @@ -563,19 +563,6 @@ Koha::CirculationRules->set_rules( } ); -ok( C4::Reserves::OnShelfHoldsAllowed($item, $borrower), "OnShelfHoldsAllowed() allowed" ); -Koha::CirculationRules->set_rules( - { - categorycode => $categorycode, - itemtype => $itype, - branchcode => $holdingbranch, - rules => { - onshelfholds => 0, - } - } -); -ok( !C4::Reserves::OnShelfHoldsAllowed($item, $borrower), "OnShelfHoldsAllowed() disallowed" ); - # tests for MoveReserve in relation to ConfirmFutureHolds (BZ 14526) # hold from A pos 1, today, no fut holds: MoveReserve should fill it $dbh->do('DELETE FROM reserves', undef, ($bibnum)); -- 2.11.0