| Lines 292-312
          sub filter_by_has_recalls {
      
      
        Link Here | 
        
          | 292 | sub filter_by_available { | 292 | sub filter_by_available { | 
        
          | 293 |     my ($self) = @_; | 293 |     my ($self) = @_; | 
        
          | 294 |  | 294 |  | 
          
            
              | 295 |     my @all_itemnumbers       = $self->get_column('itemnumber'); | 295 |     my @all_itemnumbers = $self->get_column('itemnumber'); | 
            
              | 296 |     my @item_types_notforloan = Koha::ItemTypes->search( { notforloan => { '!=' => 0 } } )->get_column('itemtype'); |  |  | 
        
          | 297 |     my @not_available_itemnumbers; | 296 |     my @not_available_itemnumbers; | 
        
          | 298 |     push @not_available_itemnumbers, $self->filter_by_checked_out->get_column('itemnumber'); | 297 |     push @not_available_itemnumbers, $self->filter_by_checked_out->get_column('itemnumber'); | 
        
          | 299 |     push @not_available_itemnumbers, $self->filter_by_in_transit->get_column('itemnumber'); | 298 |     push @not_available_itemnumbers, $self->filter_by_in_transit->get_column('itemnumber'); | 
          
            
              | 300 |     push @not_available_itemnumbers, $self->search( | 299 |  | 
            
              | 301 |         { |  |  | 
            
              | 302 |             itemlost => 0, withdrawn => 0, damaged => 0, notforloan => 0, | 
            
              | 303 |             itype => { -not_in => \@item_types_notforloan }, restricted => 0, | 
            
              | 304 |         } | 
            
              | 305 |     )->get_column('itemnumber'); | 
        
          | 306 |     push @not_available_itemnumbers, $self->filter_by_has_holds->get_column('itemnumber'); | 300 |     push @not_available_itemnumbers, $self->filter_by_has_holds->get_column('itemnumber'); | 
        
          | 307 |     push @not_available_itemnumbers, $self->filter_by_has_recalls->get_column('itemnumber'); | 301 |     push @not_available_itemnumbers, $self->filter_by_has_recalls->get_column('itemnumber'); | 
        
          | 308 |  | 302 |  | 
          
            
              | 309 |     return Koha::Items->search( { 'me.itemnumber' => [ array_minus @all_itemnumbers, @not_available_itemnumbers ] } ); | 303 |     my @item_types_notforloan = Koha::ItemTypes->search( { notforloan => { '!=' => 0 } } )->get_column('itemtype'); | 
            
              |  |  | 304 |     return Koha::Items->search( | 
            
              | 305 |         { | 
            
              | 306 |             'me.itemnumber' => [ array_minus @all_itemnumbers, @not_available_itemnumbers ], | 
            
              | 307 |             itemlost        => 0, | 
            
              | 308 |             withdrawn       => 0, | 
            
              | 309 |             damaged         => 0, | 
            
              | 310 |             notforloan      => { '<='    => 0 }, | 
            
              | 311 |             'me.itype'      => { -not_in => \@item_types_notforloan }, | 
            
              | 312 |             restricted      => [ { '!=' => 0 }, undef ], | 
            
              | 313 |         } | 
            
              | 314 |     ); | 
        
          | 310 | } | 315 | } | 
        
          | 311 |  | 316 |  | 
        
          | 312 | =head3 move_to_biblio | 317 | =head3 move_to_biblio | 
  
    | Lines 607-613
          sub search {
      
      
        Link Here | 
        
          | 607 |         if ( $status eq 'not_for_loan' ) { | 612 |         if ( $status eq 'not_for_loan' ) { | 
        
          | 608 |             my @item_types_notforloan = | 613 |             my @item_types_notforloan = | 
        
          | 609 |                 Koha::ItemTypes->search( { notforloan => { '!=' => 0 } } )->get_column('itemtype'); | 614 |                 Koha::ItemTypes->search( { notforloan => { '!=' => 0 } } )->get_column('itemtype'); | 
          
            
              | 610 |             $self = $self->search( [ { notforloan => { '!=' => 0 } }, { 'me.itype' => \@item_types_notforloan } ] ); | 615 |             $self = $self->search( [ { notforloan => { '<=' => 0 } }, { 'me.itype' => \@item_types_notforloan } ] ); | 
        
          | 611 |         } | 616 |         } | 
        
          | 612 |         if ( $status eq 'on_hold' ) { | 617 |         if ( $status eq 'on_hold' ) { | 
        
          | 613 |             $self = $self->filter_by_has_holds; | 618 |             $self = $self->filter_by_has_holds; | 
  
    | Lines 621-627
          sub search {
      
      
        Link Here | 
        
          | 621 |         } | 626 |         } | 
        
          | 622 |  | 627 |  | 
        
          | 623 |         if ( $status eq 'restricted' ) { | 628 |         if ( $status eq 'restricted' ) { | 
          
            
              | 624 |             $self = $self->search( { restricted => { '!=' => 0 } } ); | 629 |             $self = $self->search( { restricted => [ { '!=' => 0 }, undef ] } ); | 
        
          | 625 |         } | 630 |         } | 
        
          | 626 |     } | 631 |     } | 
        
          | 627 |  | 632 |  | 
            
              | 628 | -  |  |  |