Merge remote branch 'kc/new/enh/bug_4449' into kcmaster
authorChris Cormack <chrisc@catalyst.net.nz>
Fri, 8 Apr 2011 23:40:47 +0000 (11:40 +1200)
committerChris Cormack <chrisc@catalyst.net.nz>
Fri, 8 Apr 2011 23:40:47 +0000 (11:40 +1200)
1  2 
reserve/request.pl

diff --combined reserve/request.pl
@@@ -57,7 -57,6 +57,7 @@@ my ( $template, $borrowernumber, $cooki
  
  my $multihold = $input->param('multi_hold');
  $template->param(multi_hold => $multihold);
 +my $showallitems = $input->param('showallitems');
  
  # get Branches and Itemtypes
  my $branches = GetBranches();
@@@ -143,7 -142,7 +143,7 @@@ if ($cardnumber) 
      my $number_reserves =
        GetReserveCount( $borrowerinfo->{'borrowernumber'} );
  
 -    if ( $number_reserves > C4::Context->preference('maxreserves') ) {
 +    if ( C4::Context->preference('maxreserves') && $number_reserves >= C4::Context->preference('maxreserves') ) {
                $warnings = 1;
          $maxreserves = 1;
      }
@@@ -320,7 -319,6 +320,7 @@@ foreach my $biblionumber (@biblionumber
          my $biblioitem = $biblioiteminfos_of->{$biblioitemnumber};
          my $num_available = 0;
          my $num_override  = 0;
 +        my $hiddencount   = 0;
          
          $biblioitem->{description} =
            $itemtypes->{ $biblioitem->{itemtype} }{description};
                  $item->{notforloanvalue} =
                    $notforloan_label_of->{ $item->{notforloan} };
              }
 -            
 +     
              # Management of lost or long overdue items
              if ( $item->{itemlost} ) {
                  
                      : $item->{itemlost} == 2 ? "(long overdue)"
                        : "";
                  $item->{backgroundcolor} = 'other';
 +                if (GetHideLostItemsPreference($borrowernumber) && !$showallitems) {
 +                    $item->{hide} = 1;
 +                    $hiddencount++;
 +                }
              }
              
              # Check the transit status
              }
              
              if (IsAvailableForItemLevelRequest($itemnumber) and not $item->{cantreserve} and CanItemBeReserved($borrowerinfo->{borrowernumber}, $itemnumber) ) {
-                 if ( not $policy_holdallowed and C4::Context->preference( 'AllowHoldPolicyOverride' ) ) {
-                     $item->{override} = 1;
-                     $num_override++;
-                 } elsif ( $policy_holdallowed ) {
+                 if ( $policy_holdallowed ) {
                      $item->{available} = 1;
                      $num_available++;
                  }
                      $item->{override} = 1;
                      $num_override++;
              }
+             # If AllowHoldPolicyOverride is set, it should override EVERY restriction, not just branch item rules
+             if (C4::Context->preference( 'AllowHoldPolicyOverride' ) ) {
+                 $item->{override} = 1;
+                 $num_override++;
+             }   
              # If none of the conditions hold true, then neither override nor available is set and the item cannot be checked
              
              # FIXME: move this to a pm
              $biblioloopiter{warn} = 1;
              $biblioloopiter{none_avail} = 1;
          }
 +        $template->param( hiddencount => $hiddencount);
          
          push @bibitemloop, $biblioitem;
      }