X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=opac%2Fopac-reserve.pl;h=b2144a9192a6fb038da3423e940ef9be520f8e00;hb=1e7437bbae653840136fd1c2faed80a83aa08d2b;hp=3d547b744a390d7f3b6ee9dde0d8128df5ce736b;hpb=3b5aa120d71ebc7c3db7fb2177d360df03d5ed35;p=koha_fer diff --git a/opac/opac-reserve.pl b/opac/opac-reserve.pl index 3d547b744a..b2144a9192 100755 --- a/opac/opac-reserve.pl +++ b/opac/opac-reserve.pl @@ -29,6 +29,7 @@ use C4::Dates qw/format_date/; use C4::Context; use C4::Members; use C4::Branch; # GetBranches +use C4::Overdues; use C4::Debug; # use Data::Dumper; @@ -54,6 +55,10 @@ sub get_out ($$$) { # get borrower information .... my ( $borr ) = GetMemberDetails( $borrowernumber ); +# Pass through any reserve charge +if ($borr->{reservefee} > 0){ + $template->param( RESERVE_CHARGE => sprintf("%.2f",$borr->{reservefee})); +} # get branches and itemtypes my $branches = GetBranches(); my $itemTypes = GetItemTypes(); @@ -88,7 +93,7 @@ if (($#biblionumbers < 0) && (! $query->param('place_reserve'))) { } # pass the pickup branch along.... -my $branch = $query->param('branch') || C4::Context->userenv->{branch} || '' ; +my $branch = $query->param('branch') || $borr->{'branchcode'} || C4::Context->userenv->{branch} || '' ; ($branches->{$branch}) or $branch = ""; # Confirm branch is real $template->param( branch => $branch ); @@ -96,6 +101,11 @@ $template->param( branch => $branch ); my $CGIbranchloop = GetBranchesLoop($branch); $template->param( CGIbranch => $CGIbranchloop ); +# Is the person allowed to choose their branch +my $OPACChooseBranch = (C4::Context->preference("OPACAllowUserToChooseBranch")) ? 1 : 0; + +$template->param( choose_branch => $OPACChooseBranch); + # # # Build hashes of the requested biblio(item)s and items. @@ -114,6 +124,20 @@ foreach my $biblioNumber (@biblionumbers) { $biblioDataHash{$biblioNumber} = $biblioData; my @itemInfos = GetItemsInfo($biblioNumber); + + my $marcrecord= GetMarcBiblio($biblioNumber); + + # flag indicating existence of at least one item linked via a host record + my $hostitemsflag; + # adding items linked via host biblios + my @hostitemInfos = GetHostItemsInfo($marcrecord); + if (@hostitemInfos){ + $hostitemsflag =1; + push (@itemInfos,@hostitemInfos); + } + + + $biblioData->{itemInfos} = \@itemInfos; foreach my $itemInfo (@itemInfos) { $itemInfoHash{$itemInfo->{itemnumber}} = $itemInfo; @@ -175,10 +199,18 @@ if ( $query->param('place_reserve') ) { my $branch = shift(@selectedItems); # i.e., branch code, not name my $singleBranchMode = $template->param('singleBranchMode'); - if ($singleBranchMode) { + if ($singleBranchMode || ! $OPACChooseBranch) { # single branch mode or disabled user choosing $branch = $borr->{'branchcode'}; } + #item may belong to a host biblio, if yes change biblioNum to hosts bilbionumber + if ($itemNum ne '') { + my $hostbiblioNum = GetBiblionumberFromItemnumber($itemNum); + if ($hostbiblioNum ne $biblioNum) { + $biblioNum = $hostbiblioNum; + } + } + my $biblioData = $biblioDataHash{$biblioNum}; my $found; @@ -247,7 +279,7 @@ if ( $borr->{lost} && ($borr->{lost} eq 1) ) { lost => 1 ); } -if ( $borr->{debarred} && ($borr->{debarred} eq 1) ) { +if ( CheckBorrowerDebarred($borrowernumber) ) { $noreserves = 1; $template->param( message => 1, @@ -290,7 +322,7 @@ my $biblioLoop = []; my $numBibsAvailable = 0; my $itemdata_enumchron = 0; my $anyholdable; -my $itemLevelTypes = C4::Context->preference('item_level_itypes'); +my $itemLevelTypes = C4::Context->preference('item-level_itypes'); $template->param('item_level_itypes' => $itemLevelTypes); foreach my $biblioNum (@biblionumbers) { @@ -373,6 +405,11 @@ foreach my $biblioNum (@biblionumbers) { my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemNum); my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0); + # the item could be reserved for this borrower vi a host record, flag this + if ($reservedfor eq $borrowernumber){ + $itemLoopIter->{already_reserved} = 1; + } + if ( defined $reservedate ) { $itemLoopIter->{backgroundcolor} = 'reserved'; $itemLoopIter->{reservedate} = format_date($reservedate); @@ -414,6 +451,13 @@ foreach my $biblioNum (@biblionumbers) { $itemLoopIter->{nocancel} = 1; } + # if the items belongs to a host record, show link to host record + if ($itemInfo->{biblionumber} ne $biblioNum){ + $biblioLoopIter{hostitemsflag} = 1; + $itemLoopIter->{hostbiblionumber} = $itemInfo->{biblionumber}; + $itemLoopIter->{hosttitle} = GetBiblioData($itemInfo->{biblionumber})->{title}; + } + # If there is no loan, return and transfer, we show a checkbox. $itemLoopIter->{notforloan} = $itemLoopIter->{notforloan} || 0; @@ -427,7 +471,7 @@ foreach my $biblioNum (@biblionumbers) { $policy_holdallowed = 0; } - if (IsAvailableForItemLevelRequest($itemNum) and $policy_holdallowed and CanItemBeReserved($borrowernumber,$itemNum)) { + if (IsAvailableForItemLevelRequest($itemNum) and $policy_holdallowed and CanItemBeReserved($borrowernumber,$itemNum) and ($itemLoopIter->{already_reserved} ne 1)) { $itemLoopIter->{available} = 1; $numCopiesAvailable++; } @@ -442,13 +486,13 @@ foreach my $biblioNum (@biblionumbers) { $itemLoopIter->{imageurl} = getitemtypeimagelocation( 'opac', $itemTypes->{ $itemInfo->{itype} }{imageurl} ); # Show serial enumeration when needed - if ($itemLoopIter->{enumchron}) { - $itemdata_enumchron = 1; - } - $template->param( itemdata_enumchron => $itemdata_enumchron ); + if ($itemLoopIter->{enumchron}) { + $itemdata_enumchron = 1; + } push @{$biblioLoopIter{itemLoop}}, $itemLoopIter; } + $template->param( itemdata_enumchron => $itemdata_enumchron ); if ($numCopiesAvailable > 0) { $numBibsAvailable++; @@ -472,11 +516,11 @@ if ( $numBibsAvailable == 0 || !$anyholdable) { $template->param( none_available => 1 ); } -my $itemTableColspan = 5; -if (!$template->param('OPACItemHolds')) { +my $itemTableColspan = 7; +if (! $template->{VARS}->{'OPACItemHolds'}) { $itemTableColspan--; } -if ($template->param('singleBranchMode')) { +if (! $template->{VARS}->{'singleBranchMode'}) { $itemTableColspan--; } $template->param(itemtable_colspan => $itemTableColspan);