Bug 23659: Add DefaultHoldPickupLocation system preference
On the staff side behaviour differs for default pickup location when placing a hold or placing an overridden hold. Additionally, the behaviour has changed betwee master and stables We should provide a consistent default, and allow the library to specify their choice Note this only affects staff client as there is only a single dropdown on OPAC and it is not tied to items To test: 1 - Apply patch 2 - Update database 3 - Find a record with items from various branches, and at least one with a different home/holding branch 4 - Ensure there is an item that requires override to hold, and AllowHoldPolicyOverride is enabled 4 - Attempt to place hold 5 - Confirm all dropdowns default to logged in library 6 - Set DefaultHoldPickupLocation to item's home branch 7 - Refresh and confirm all dropdowns match item home library except biblio level hold - still logged in library 8 - Set DefaultHoldPickupLocation to item's holding branch 9 - Refresh and confirm defaults 10 - Mark one of the items holding library as 'not a pickup location' in Admin->Libraries 11 - Refresh and confirm dropdown is now empty for that item Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
f279cdd30f
commit
a25b4d78d0
4 changed files with 38 additions and 5 deletions
|
@ -0,0 +1,17 @@
|
|||
use Modern::Perl;
|
||||
|
||||
return {
|
||||
bug_number => "23659",
|
||||
description => "Add DefaultHoldPickupLocation syspref",
|
||||
up => sub {
|
||||
my ($args) = @_;
|
||||
my ($dbh, $out) = @$args{qw(dbh out)};
|
||||
# Do you stuffs here
|
||||
$dbh->do(q{
|
||||
INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
|
||||
('DefaultHoldPickupLocation','loggedinlibrary','loggedinlibrary|homebranch|holdingbranch','Which branch should a hold pickup location default to. ','choice')
|
||||
});
|
||||
# Print useful stuff here
|
||||
say $out "Added DefaultHoldPickupLocation syspref";
|
||||
},
|
||||
};
|
|
@ -164,6 +164,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
|
|||
('DefaultHoldExpirationdate','0','','Automatically set expiration date for holds','YesNo'),
|
||||
('DefaultHoldExpirationdatePeriod','0','','How long into the future default expiration date is set to be.','integer'),
|
||||
('DefaultHoldExpirationdateUnitOfTime','days','days|months|years','Which unit of time is used when setting the default expiration date. ','choice'),
|
||||
('DefaultHoldPickupLocation','loggedinlibrary','loggedinlibrary|homelibrary','Which branch should a hold pickup location default to. ','choice'),
|
||||
('DefaultLanguageField008','','','Fill in the default language for field 008 Range 35-37 of MARC21 records (e.g. eng, nor, ger, see <a href=\"http://www.loc.gov/marc/languages/language_code.html\">MARC Code List for Languages</a>)','Free'),
|
||||
('DefaultLongOverdueSkipLostStatuses', '', NULL, 'Skip these lost statuses by default in longoverdue.pl', 'Free'),
|
||||
('DefaultLongOverdueChargeValue', '', NULL, "Charge a lost item to the borrower's account when the LOST value of the item changes to n.", 'integer'),
|
||||
|
|
|
@ -936,6 +936,14 @@ Circulation:
|
|||
months: months
|
||||
years: years
|
||||
- from reserve date.
|
||||
-
|
||||
- When placing a hold via the staff client default the pickup location to the
|
||||
- pref: DefaultHoldPickupLocation
|
||||
default: loggedinlibrary
|
||||
choices:
|
||||
loggedinlibrary: "logged in library"
|
||||
homebranch: "item's home branch"
|
||||
holdingbranch: "item's holding branch"
|
||||
Interlibrary loans:
|
||||
-
|
||||
- pref: ILLModule
|
||||
|
|
|
@ -493,6 +493,16 @@ if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold )
|
|||
|
||||
$item->{item_level_holds} = Koha::CirculationRules->get_opacitemholds_policy( { item => $item_object, patron => $patron } );
|
||||
|
||||
my $default_hold_pickup_location_pref = C4::Context->preference('DefaultHoldPickupLocation');
|
||||
my $default_pickup_branch;
|
||||
if( $default_hold_pickup_location_pref eq 'homebranch' ){
|
||||
$default_pickup_branch = $item->{homebranch};
|
||||
} elsif ( $default_hold_pickup_location_pref eq 'holdingbranch' ){
|
||||
$default_pickup_branch = $item->{holdingbranch};
|
||||
} else {
|
||||
$default_pickup_branch = C4::Context->userenv->{branch};
|
||||
}
|
||||
|
||||
if (
|
||||
!$item->{cantreserve}
|
||||
&& !$exceeded_maxreserves
|
||||
|
@ -509,7 +519,7 @@ if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold )
|
|||
$num_items_available++;
|
||||
$item->{available} = 1;
|
||||
# pass the holding branch for use as default
|
||||
my $default_pickup_location = $pickup_locations->search({ branchcode => $item->{holdingbranch} })->next;
|
||||
my $default_pickup_location = $pickup_locations->search({ branchcode => $default_pickup_branch })->next;
|
||||
$item->{default_pickup_location} = $default_pickup_location;
|
||||
}
|
||||
else {
|
||||
|
@ -533,10 +543,7 @@ if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold )
|
|||
|
||||
my $default_pickup_location;
|
||||
|
||||
# Default to logged-in, if valid
|
||||
if ( C4::Context->userenv->{branch} ) {
|
||||
($default_pickup_location) = grep { $_->branchcode eq C4::Context->userenv->{branch} } @pickup_locations;
|
||||
}
|
||||
($default_pickup_location) = grep { $_->branchcode eq $default_pickup_branch } @pickup_locations;
|
||||
|
||||
$item->{default_pickup_location} = $default_pickup_location;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue