| Lines 58-63
          use Koha::Config::SysPrefs;
      
      
        Link Here | 
        
          | 58 | use Koha::Charges::Fees; | 58 | use Koha::Charges::Fees; | 
        
          | 59 | use Koha::Util::SystemPreferences; | 59 | use Koha::Util::SystemPreferences; | 
        
          | 60 | use Koha::Checkouts::ReturnClaims; | 60 | use Koha::Checkouts::ReturnClaims; | 
            
              |  |  | 61 | use Koha::SearchEngine::Indexer; | 
        
          | 61 | use Carp; | 62 | use Carp; | 
        
          | 62 | use List::MoreUtils qw( uniq any ); | 63 | use List::MoreUtils qw( uniq any ); | 
        
          | 63 | use Scalar::Util qw( looks_like_number ); | 64 | use Scalar::Util qw( looks_like_number ); | 
  
    | Lines 1898-1904
          sub AddReturn {
      
      
        Link Here | 
        
          | 1898 |                 . Dumper($issue->unblessed) . "\n"; | 1899 |                 . Dumper($issue->unblessed) . "\n"; | 
        
          | 1899 |     } else { | 1900 |     } else { | 
        
          | 1900 |         $messages->{'NotIssued'} = $barcode; | 1901 |         $messages->{'NotIssued'} = $barcode; | 
          
            
              | 1901 |         $item->onloan(undef)->store if defined $item->onloan; | 1902 |         $item->onloan(undef)->store({skip_record_index=>1}) if defined $item->onloan; | 
        
          | 1902 |  | 1903 |  | 
        
          | 1903 |         # even though item is not on loan, it may still be transferred;  therefore, get current branch info | 1904 |         # even though item is not on loan, it may still be transferred;  therefore, get current branch info | 
        
          | 1904 |         $doreturn = 0; | 1905 |         $doreturn = 0; | 
  
    | Lines 1926-1934
          sub AddReturn {
      
      
        Link Here | 
        
          | 1926 |         if (defined $update_loc_rules->{_ALL_}) { | 1927 |         if (defined $update_loc_rules->{_ALL_}) { | 
        
          | 1927 |             if ($update_loc_rules->{_ALL_} eq '_PERM_') { $update_loc_rules->{_ALL_} = $item->permanent_location; } | 1928 |             if ($update_loc_rules->{_ALL_} eq '_PERM_') { $update_loc_rules->{_ALL_} = $item->permanent_location; } | 
        
          | 1928 |             if ($update_loc_rules->{_ALL_} eq '_BLANK_') { $update_loc_rules->{_ALL_} = ''; } | 1929 |             if ($update_loc_rules->{_ALL_} eq '_BLANK_') { $update_loc_rules->{_ALL_} = ''; } | 
          
            
              | 1929 |             if ( $item->location ne $update_loc_rules->{_ALL_}) { | 1930 |             if ( defined $item->location && $item->location ne $update_loc_rules->{_ALL_}) { | 
        
          | 1930 |                 $messages->{'ItemLocationUpdated'} = { from => $item->location, to => $update_loc_rules->{_ALL_} }; | 1931 |                 $messages->{'ItemLocationUpdated'} = { from => $item->location, to => $update_loc_rules->{_ALL_} }; | 
          
            
              | 1931 |                 $item->location($update_loc_rules->{_ALL_})->store; | 1932 |                 $item->location($update_loc_rules->{_ALL_})->store({skip_record_index=>1}); | 
        
          | 1932 |             } | 1933 |             } | 
        
          | 1933 |         } | 1934 |         } | 
        
          | 1934 |         else { | 1935 |         else { | 
  
    | Lines 1937-1943
          sub AddReturn {
      
      
        Link Here | 
        
          | 1937 |                 if ( $update_loc_rules->{$key} eq '_BLANK_') { $update_loc_rules->{$key} = '' ;} | 1938 |                 if ( $update_loc_rules->{$key} eq '_BLANK_') { $update_loc_rules->{$key} = '' ;} | 
        
          | 1938 |                 if ( ($item->location eq $key && $item->location ne $update_loc_rules->{$key}) || ($key eq '_BLANK_' && $item->location eq '' && $update_loc_rules->{$key} ne '') ) { | 1939 |                 if ( ($item->location eq $key && $item->location ne $update_loc_rules->{$key}) || ($key eq '_BLANK_' && $item->location eq '' && $update_loc_rules->{$key} ne '') ) { | 
        
          | 1939 |                     $messages->{'ItemLocationUpdated'} = { from => $item->location, to => $update_loc_rules->{$key} }; | 1940 |                     $messages->{'ItemLocationUpdated'} = { from => $item->location, to => $update_loc_rules->{$key} }; | 
          
            
              | 1940 |                     $item->location($update_loc_rules->{$key})->store; | 1941 |                     $item->location($update_loc_rules->{$key})->store({skip_record_index=>1}); | 
        
          | 1941 |                     last; | 1942 |                     last; | 
        
          | 1942 |                 } | 1943 |                 } | 
        
          | 1943 |             } | 1944 |             } | 
  
    | Lines 1956-1962
          sub AddReturn {
      
      
        Link Here | 
        
          | 1956 |             foreach my $key ( keys %$rules ) { | 1957 |             foreach my $key ( keys %$rules ) { | 
        
          | 1957 |                 if ( $item->notforloan eq $key ) { | 1958 |                 if ( $item->notforloan eq $key ) { | 
        
          | 1958 |                     $messages->{'NotForLoanStatusUpdated'} = { from => $item->notforloan, to => $rules->{$key} }; | 1959 |                     $messages->{'NotForLoanStatusUpdated'} = { from => $item->notforloan, to => $rules->{$key} }; | 
          
            
              | 1959 |                     $item->notforloan($rules->{$key})->store({ log_action => 0 }); | 1960 |                     $item->notforloan($rules->{$key})->store({ log_action => 0, skip_record_index => 1 }); | 
        
          | 1960 |                     last; | 1961 |                     last; | 
        
          | 1961 |                 } | 1962 |                 } | 
        
          | 1962 |             } | 1963 |             } | 
  
    | Lines 1970-1976
          sub AddReturn {
      
      
        Link Here | 
        
          | 1970 |             Wrongbranch => $branch, | 1971 |             Wrongbranch => $branch, | 
        
          | 1971 |             Rightbranch => $message | 1972 |             Rightbranch => $message | 
        
          | 1972 |         }; | 1973 |         }; | 
          
            
              | 1973 |         $doreturn = 0; | 1974 |         my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX }); | 
            
              |  |  | 1975 |         $indexer->index_records( $item->biblionumber, "specialUpdate", "biblioserver" ); | 
        
          | 1974 |         return ( $doreturn, $messages, $issue, $patron_unblessed); | 1976 |         return ( $doreturn, $messages, $issue, $patron_unblessed); | 
        
          | 1975 |     } | 1977 |     } | 
        
          | 1976 |  | 1978 |  | 
  
    | Lines 1990-1996
          sub AddReturn {
      
      
        Link Here | 
        
          | 1990 |  | 1992 |  | 
        
          | 1991 |         if ($patron) { | 1993 |         if ($patron) { | 
        
          | 1992 |             eval { | 1994 |             eval { | 
          
            
              | 1993 |                 MarkIssueReturned( $borrowernumber, $item->itemnumber, $return_date, $patron->privacy ); | 1995 |                 MarkIssueReturned( $borrowernumber, $item->itemnumber, $return_date, $patron->privacy, { skip_record_index => 1} ); | 
        
          | 1994 |             }; | 1996 |             }; | 
        
          | 1995 |             unless ( $@ ) { | 1997 |             unless ( $@ ) { | 
        
          | 1996 |                 if ( | 1998 |                 if ( | 
  
    | Lines 2006-2031
          sub AddReturn {
      
      
        Link Here | 
        
          | 2006 |             } else { | 2008 |             } else { | 
        
          | 2007 |                 carp "The checkin for the following issue failed, Please go to the about page, section 'data corrupted' to know how to fix this problem ($@)" . Dumper( $issue->unblessed ); | 2009 |                 carp "The checkin for the following issue failed, Please go to the about page, section 'data corrupted' to know how to fix this problem ($@)" . Dumper( $issue->unblessed ); | 
        
          | 2008 |  | 2010 |  | 
            
              |  |  | 2011 |                 my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX }); | 
            
              | 2012 |                 $indexer->index_records( $item->biblionumber, "specialUpdate", "biblioserver" ); | 
            
              | 2013 |  | 
        
          | 2009 |                 return ( 0, { WasReturned => 0, DataCorrupted => 1 }, $issue, $patron_unblessed ); | 2014 |                 return ( 0, { WasReturned => 0, DataCorrupted => 1 }, $issue, $patron_unblessed ); | 
        
          | 2010 |             } | 2015 |             } | 
        
          | 2011 |  | 2016 |  | 
        
          | 2012 |             # FIXME is the "= 1" right?  This could be the borrower hash. | 2017 |             # FIXME is the "= 1" right?  This could be the borrower hash. | 
        
          | 2013 |             $messages->{'WasReturned'} = 1; | 2018 |             $messages->{'WasReturned'} = 1; | 
        
          | 2014 |  | 2019 |  | 
            
              |  |  | 2020 |         } else { | 
            
              | 2021 |             $item->onloan(undef)->store({ log_action => 0 , skip_record_index => 1 }); | 
        
          | 2015 |         } | 2022 |         } | 
            
              | 2016 |  |  |  | 
            
              | 2017 |         $item->onloan(undef)->store({ log_action => 0 }); | 
        
          | 2018 |     } | 2023 |     } | 
        
          | 2019 |  | 2024 |  | 
        
          | 2020 |     # the holdingbranch is updated if the document is returned to another location. | 2025 |     # the holdingbranch is updated if the document is returned to another location. | 
        
          | 2021 |     # this is always done regardless of whether the item was on loan or not | 2026 |     # this is always done regardless of whether the item was on loan or not | 
        
          | 2022 |     if ($item->holdingbranch ne $branch) { | 2027 |     if ($item->holdingbranch ne $branch) { | 
          
            
              | 2023 |         $item->holdingbranch($branch)->store; | 2028 |         $item->holdingbranch($branch)->store({ skip_record_index => 1 }); | 
        
          | 2024 |     } | 2029 |     } | 
        
          | 2025 |  | 2030 |  | 
        
          | 2026 |     my $item_was_lost = $item->itemlost; | 2031 |     my $item_was_lost = $item->itemlost; | 
        
          | 2027 |     my $leave_item_lost = C4::Context->preference("BlockReturnOfLostItems") ? 1 : 0; | 2032 |     my $leave_item_lost = C4::Context->preference("BlockReturnOfLostItems") ? 1 : 0; | 
          
            
              | 2028 |     my $updated_item = ModDateLastSeen( $item->itemnumber, $leave_item_lost ); # will unset itemlost if needed | 2033 |     my $updated_item = ModDateLastSeen( $item->itemnumber, $leave_item_lost, { skip_record_index => 1 } ); # will unset itemlost if needed | 
        
          | 2029 |  | 2034 |  | 
        
          | 2030 |     # fix up the accounts..... | 2035 |     # fix up the accounts..... | 
        
          | 2031 |     if ( $item_was_lost ) { | 2036 |     if ( $item_was_lost ) { | 
  
    | Lines 2150-2156
          sub AddReturn {
      
      
        Link Here | 
        
          | 2150 |            )) { | 2155 |            )) { | 
        
          | 2151 |             $debug and warn sprintf "about to call ModItemTransfer(%s, %s, %s, %s)", $item->itemnumber,$branch, $returnbranch, $transfer_trigger; | 2156 |             $debug and warn sprintf "about to call ModItemTransfer(%s, %s, %s, %s)", $item->itemnumber,$branch, $returnbranch, $transfer_trigger; | 
        
          | 2152 |             $debug and warn "item: " . Dumper($item->unblessed); | 2157 |             $debug and warn "item: " . Dumper($item->unblessed); | 
          
            
              | 2153 |             ModItemTransfer($item->itemnumber, $branch, $returnbranch, $transfer_trigger); | 2158 |             ModItemTransfer($item->itemnumber, $branch, $returnbranch, $transfer_trigger, { skip_record_index => 1 }); | 
        
          | 2154 |             $messages->{'WasTransfered'} = 1; | 2159 |             $messages->{'WasTransfered'} = 1; | 
        
          | 2155 |         } else { | 2160 |         } else { | 
        
          | 2156 |             $messages->{'NeedsTransfer'} = $returnbranch; | 2161 |             $messages->{'NeedsTransfer'} = $returnbranch; | 
  
    | Lines 2171-2176
          sub AddReturn {
      
      
        Link Here | 
        
          | 2171 |         } | 2176 |         } | 
        
          | 2172 |     } | 2177 |     } | 
        
          | 2173 |  | 2178 |  | 
            
              |  |  | 2179 |     my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX }); | 
            
              | 2180 |     $indexer->index_records( $item->biblionumber, "specialUpdate", "biblioserver" ); | 
            
              | 2181 |  | 
        
          | 2174 |     if ( $doreturn and $issue ) { | 2182 |     if ( $doreturn and $issue ) { | 
        
          | 2175 |         my $checkin = Koha::Old::Checkouts->find($issue->id); | 2183 |         my $checkin = Koha::Old::Checkouts->find($issue->id); | 
        
          | 2176 |  | 2184 |  | 
  
    | Lines 2187-2193
          sub AddReturn {
      
      
        Link Here | 
        
          | 2187 |  | 2195 |  | 
        
          | 2188 | =head2 MarkIssueReturned | 2196 | =head2 MarkIssueReturned | 
        
          | 2189 |  | 2197 |  | 
          
            
              | 2190 |   MarkIssueReturned($borrowernumber, $itemnumber, $returndate, $privacy); | 2198 |   MarkIssueReturned($borrowernumber, $itemnumber, $returndate, $privacy, [$params] ); | 
        
          | 2191 |  | 2199 |  | 
        
          | 2192 | Unconditionally marks an issue as being returned by | 2200 | Unconditionally marks an issue as being returned by | 
        
          | 2193 | moving the C<issues> row to C<old_issues> and | 2201 | moving the C<issues> row to C<old_issues> and | 
  
    | Lines 2203-2212
          Ideally, this function would be internal to C<C4::Circulation>,
      
      
        Link Here | 
        
          | 2203 | not exported, but it is currently used in misc/cronjobs/longoverdue.pl | 2211 | not exported, but it is currently used in misc/cronjobs/longoverdue.pl | 
        
          | 2204 | and offline_circ/process_koc.pl. | 2212 | and offline_circ/process_koc.pl. | 
        
          | 2205 |  | 2213 |  | 
            
              |  |  | 2214 | The last optional parameter allos passing skip_record_index to the item store call. | 
            
              | 2215 |  | 
        
          | 2206 | =cut | 2216 | =cut | 
        
          | 2207 |  | 2217 |  | 
        
          | 2208 | sub MarkIssueReturned { | 2218 | sub MarkIssueReturned { | 
          
            
              | 2209 |     my ( $borrowernumber, $itemnumber, $returndate, $privacy ) = @_; | 2219 |     my ( $borrowernumber, $itemnumber, $returndate, $privacy, $params ) = @_; | 
        
          | 2210 |  | 2220 |  | 
        
          | 2211 |     # Retrieve the issue | 2221 |     # Retrieve the issue | 
        
          | 2212 |     my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return; | 2222 |     my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return; | 
  
    | Lines 2252-2258
          sub MarkIssueReturned {
      
      
        Link Here | 
        
          | 2252 |         # And finally delete the issue | 2262 |         # And finally delete the issue | 
        
          | 2253 |         $issue->delete; | 2263 |         $issue->delete; | 
        
          | 2254 |  | 2264 |  | 
          
            
              | 2255 |         $issue->item->onloan(undef)->store({ log_action => 0 }); | 2265 |         $issue->item->onloan(undef)->store({ log_action => 0, skip_record_index => $params->{skip_record_index} }); | 
        
          | 2256 |  | 2266 |  | 
        
          | 2257 |         if ( C4::Context->preference('StoreLastBorrower') ) { | 2267 |         if ( C4::Context->preference('StoreLastBorrower') ) { | 
        
          | 2258 |             my $item = Koha::Items->find( $itemnumber ); | 2268 |             my $item = Koha::Items->find( $itemnumber ); |