| Lines 900-906
          The autoload method is used only to get and set values for an objects properties
      
      
        Link Here | 
        
          | 900 | =cut | 900 | =cut | 
        
          | 901 |  | 901 |  | 
        
          | 902 | sub AUTOLOAD { | 902 | sub AUTOLOAD { | 
          
            
              | 903 |     my $self = shift; | 903 |     my ($self) = @_; | 
        
          | 904 |  | 904 |  | 
        
          | 905 |     my $method = our $AUTOLOAD; | 905 |     my $method = our $AUTOLOAD; | 
        
          | 906 |     $method =~ s/.*://; | 906 |     $method =~ s/.*://; | 
  
    | Lines 908-920
          sub AUTOLOAD {
      
      
        Link Here | 
        
          | 908 |     my @columns = @{$self->_columns()}; | 908 |     my @columns = @{$self->_columns()}; | 
        
          | 909 |     # Using direct setter/getter like $item->barcode() or $item->barcode($barcode); | 909 |     # Using direct setter/getter like $item->barcode() or $item->barcode($barcode); | 
        
          | 910 |     if ( grep { $_ eq $method } @columns ) { | 910 |     if ( grep { $_ eq $method } @columns ) { | 
          
            
              | 911 |         if ( @_ ) { | 911 |         no strict 'refs'; | 
            
              | 912 |             $self->_result()->set_column( $method, @_ ); | 912 |         *{$AUTOLOAD} = sub { | 
            
              | 913 |             return $self; | 913 |             my $self = shift; | 
            
              | 914 |         } else { | 914 |             if ( @_ ) { | 
            
              | 915 |             my $value = $self->_result()->get_column( $method ); | 915 |                 $self->_result()->set_column( $method, @_); | 
            
              | 916 |             return $value; | 916 |                 return $self; | 
            
              | 917 |         } | 917 |             } else { | 
            
              |  |  | 918 |                 return $self->_result()->get_column( $method ); | 
            
              | 919 |             } | 
            
              | 920 |         }; | 
            
              | 921 |         goto &{$AUTOLOAD}; | 
        
          | 918 |     } | 922 |     } | 
        
          | 919 |  | 923 |  | 
        
          | 920 |     my @known_methods = qw( is_changed id in_storage get_column discard_changes make_column_dirty ); | 924 |     my @known_methods = qw( is_changed id in_storage get_column discard_changes make_column_dirty ); | 
  
    | Lines 924-930
          sub AUTOLOAD {
      
      
        Link Here | 
        
          | 924 |         show_trace => 1 | 928 |         show_trace => 1 | 
        
          | 925 |     ) unless grep { $_ eq $method } @known_methods; | 929 |     ) unless grep { $_ eq $method } @known_methods; | 
        
          | 926 |  | 930 |  | 
          
            
              | 927 |  | 931 |     # Remove $self so that @_ now contain arguments only | 
            
              |  |  | 932 |     shift; | 
        
          | 928 |     my $r = eval { $self->_result->$method(@_) }; | 933 |     my $r = eval { $self->_result->$method(@_) }; | 
        
          | 929 |     if ( $@ ) { | 934 |     if ( $@ ) { | 
        
          | 930 |         Koha::Exceptions::Object->throw( ref($self) . "::$method generated this error: " . $@ ); | 935 |         Koha::Exceptions::Object->throw( ref($self) . "::$method generated this error: " . $@ ); | 
            
              | 931 | -  |  |  |