| 
      
            Lines 1910-1917
          sub AddReturn {
      
      
        Link Here
      
     | 
  
        
          | 1910 | 
           | 
          1910 | 
           | 
        
        
          | 1911 | 
                  if ($patron) { | 
          1911 | 
                  if ($patron) { | 
        
        
          | 1912 | 
                      eval { | 
          1912 | 
                      eval { | 
        
          
            
              | 1913 | 
                              MarkIssueReturned( $borrowernumber, $item->{'itemnumber'}, | 
              1913 | 
                              if ( $dropbox ) { | 
            
            
              | 1914 | 
                                  $circControlBranch, $return_date, $patron->privacy );  | 
              1914 | 
                                  MarkIssueReturned( $borrowernumber, $item->{'itemnumber'}, | 
            
            
               | 
               | 
              1915 | 
                                      $dropboxdate, $patron->privacy );  | 
            
            
              | 1916 | 
                              }  | 
            
            
              | 1917 | 
                              else { | 
            
            
              | 1918 | 
                                  MarkIssueReturned( $borrowernumber, $item->{'itemnumber'}, | 
            
            
              | 1919 | 
                                      $return_date, $patron->privacy );  | 
            
            
              | 1920 | 
                              }  | 
            
        
          | 1915 | 
                      };  | 
          1921 | 
                      };  | 
        
        
          | 1916 | 
                      unless ( $@ ) { | 
          1922 | 
                      unless ( $@ ) { | 
        
        
          | 1917 | 
                          if ( ( C4::Context->preference('CalculateFinesOnReturn') && $is_overdue ) || $return_date ) { | 
          1923 | 
                          if ( ( C4::Context->preference('CalculateFinesOnReturn') && $is_overdue ) || $return_date ) { | 
        
  
    | 
      
            Lines 2088-2117
          sub AddReturn {
      
      
        Link Here
      
     | 
  
        
          | 2088 | 
           | 
          2094 | 
           | 
        
        
          | 2089 | 
          =head2 MarkIssueReturned  | 
          2095 | 
          =head2 MarkIssueReturned  | 
        
        
          | 2090 | 
           | 
          2096 | 
           | 
        
          
            
              | 2091 | 
                MarkIssueReturned($borrowernumber, $itemnumber, $dropbox_branch, $returndate, $privacy);  | 
              2097 | 
                MarkIssueReturned($borrowernumber, $itemnumber, $returndate, $privacy);  | 
            
        
          | 2092 | 
           | 
          2098 | 
           | 
        
        
          | 2093 | 
          Unconditionally marks an issue as being returned by  | 
          2099 | 
          Unconditionally marks an issue as being returned by  | 
        
        
          | 2094 | 
          moving the C<issues> row to C<old_issues> and  | 
          2100 | 
          moving the C<issues> row to C<old_issues> and  | 
        
          
            
              | 2095 | 
              setting C<returndate> to the current date, or  | 
              2101 | 
              setting C<returndate> to the current date.  | 
            
            
              | 2096 | 
              the last non-holiday date of the branccode specified in  | 
               | 
               | 
            
            
              | 2097 | 
              C<dropbox_branch> .  Assumes you've already checked that   | 
            
            
              | 2098 | 
              it's safe to do this, i.e. last non-holiday > issuedate.  | 
            
        
          | 2099 | 
           | 
          2102 | 
           | 
        
        
          | 2100 | 
          if C<$returndate> is specified (in iso format), it is used as the date  | 
          2103 | 
          if C<$returndate> is specified (in iso format), it is used as the date  | 
        
          
            
              | 2101 | 
              of the return. It is ignored when a dropbox_branch is passed in.  | 
              2104 | 
              of the return.  | 
            
        
          | 2102 | 
           | 
          2105 | 
           | 
        
        
          | 2103 | 
          C<$privacy> contains the privacy parameter. If the patron has set privacy to 2,  | 
          2106 | 
          C<$privacy> contains the privacy parameter. If the patron has set privacy to 2,  | 
        
        
          | 2104 | 
          the old_issue is immediately anonymised  | 
          2107 | 
          the old_issue is immediately anonymised  | 
        
        
          | 2105 | 
           | 
          2108 | 
           | 
        
        
          | 2106 | 
          Ideally, this function would be internal to C<C4::Circulation>,  | 
          2109 | 
          Ideally, this function would be internal to C<C4::Circulation>,  | 
        
          
            
              | 2107 | 
              not exported, but it is currently needed by one   | 
              2110 | 
              not exported, but it is currently used in misc/cronjobs/longoverdue.pl.  | 
            
            
              | 2108 | 
              routine in C<C4::Accounts>.  | 
               | 
               | 
            
        
          | 2109 | 
           | 
          2111 | 
           | 
        
        
          | 2110 | 
          =cut  | 
          2112 | 
          =cut  | 
        
        
          | 2111 | 
           | 
          2113 | 
           | 
        
        
          | 2112 | 
          sub MarkIssueReturned { | 
          2114 | 
          sub MarkIssueReturned { | 
        
          
            
              | 2113 | 
                  my ( $borrowernumber, $itemnumber, $dropbox_branch, $returndate, $privacy ) = @_;  | 
              2115 | 
                  my ( $borrowernumber, $itemnumber, $returndate, $privacy ) = @_;  | 
            
            
              | 2114 | 
               | 
               | 
               | 
            
        
          | 2115 | 
           | 
          2116 | 
           | 
        
        
          | 2116 | 
              # Retrieve the issue  | 
          2117 | 
              # Retrieve the issue  | 
        
        
          | 2117 | 
              my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return; | 
          2118 | 
              my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return; | 
        
  
    | 
      
            Lines 2127-2167
          sub MarkIssueReturned {
      
      
        Link Here
      
     | 
  
        
          | 2127 | 
                  die "Fatal error: the patron ($borrowernumber) has requested their circulation history be anonymized on check-in, but the AnonymousPatron system preference is empty or not set correctly."  | 
          2128 | 
                  die "Fatal error: the patron ($borrowernumber) has requested their circulation history be anonymized on check-in, but the AnonymousPatron system preference is empty or not set correctly."  | 
        
        
          | 2128 | 
                      unless Koha::Patrons->find( $anonymouspatron );  | 
          2129 | 
                      unless Koha::Patrons->find( $anonymouspatron );  | 
        
        
          | 2129 | 
              }  | 
          2130 | 
              }  | 
        
            
              | 2130 | 
                  my $database = Koha::Database->new();  | 
               | 
               | 
            
            
              | 2131 | 
                  my $schema   = $database->schema;  | 
            
            
              | 2132 | 
                  my $dbh   = C4::Context->dbh;  | 
            
        
          | 2133 | 
           | 
          2131 | 
           | 
        
          
            
              | 2134 | 
                  my $query = 'UPDATE issues SET returndate=';  | 
              2132 | 
                  my $schema = Koha::Database->schema;  | 
            
            
              | 2135 | 
                  my @bind;  | 
               | 
               | 
            
            
              | 2136 | 
                  if ($dropbox_branch) { | 
            
            
              | 2137 | 
                      my $calendar = Koha::Calendar->new( branchcode => $dropbox_branch );  | 
            
            
              | 2138 | 
                      my $dropboxdate = $calendar->addDate( DateTime->now( time_zone => C4::Context->tz), -1 );  | 
            
            
              | 2139 | 
                      $query .= ' ? ';  | 
            
            
              | 2140 | 
                      push @bind, $dropboxdate->strftime('%Y-%m-%d %H:%M'); | 
            
            
              | 2141 | 
                  } elsif ($returndate) { | 
            
            
              | 2142 | 
                      $query .= ' ? ';  | 
            
            
              | 2143 | 
                      push @bind, $returndate;  | 
            
            
              | 2144 | 
                  } else { | 
            
            
              | 2145 | 
                      $query .= ' now() ';  | 
            
            
              | 2146 | 
                  }  | 
            
            
              | 2147 | 
                  $query .= ' WHERE issue_id = ?';  | 
            
            
              | 2148 | 
                  push @bind, $issue_id;  | 
            
        
          | 2149 | 
           | 
          2133 | 
           | 
        
        
          | 2150 | 
              # FIXME Improve the return value and handle it from callers  | 
          2134 | 
              # FIXME Improve the return value and handle it from callers  | 
        
        
          | 2151 | 
              $schema->txn_do(sub { | 
          2135 | 
              $schema->txn_do(sub { | 
        
        
          | 2152 | 
           | 
          2136 | 
           | 
        
          
            
              | 2153 | 
                      # Update the returndate  | 
              2137 | 
                      # Update the returndate value  | 
            
            
              | 2154 | 
                      $dbh->do( $query, undef, @bind );  | 
              2138 | 
                      if ( $returndate ) { | 
            
            
              | 2155 | 
               | 
              2139 | 
                          $issue->returndate( $returndate )->store->discard_changes; # update and refetch  | 
            
            
              | 2156 | 
                      # We just updated the returndate, so we need to refetch $issue  | 
              2140 | 
                      }  | 
            
            
              | 2157 | 
                      $issue->discard_changes;  | 
              2141 | 
                      else { | 
            
            
               | 
               | 
              2142 | 
                          $issue->returndate( \'NOW()' )->store->discard_changes; # update and refetch  | 
            
            
              | 2143 | 
                      }  | 
            
        
          | 2158 | 
           | 
          2144 | 
           | 
        
        
          | 2159 | 
                  # Create the old_issues entry  | 
          2145 | 
                  # Create the old_issues entry  | 
        
        
          | 2160 | 
                  my $old_checkout = Koha::Old::Checkout->new($issue->unblessed)->store;  | 
          2146 | 
                  my $old_checkout = Koha::Old::Checkout->new($issue->unblessed)->store;  | 
        
        
          | 2161 | 
           | 
          2147 | 
           | 
        
        
          | 2162 | 
                  # anonymise patron checkout immediately if $privacy set to 2 and AnonymousPatron is set to a valid borrowernumber  | 
          2148 | 
                  # anonymise patron checkout immediately if $privacy set to 2 and AnonymousPatron is set to a valid borrowernumber  | 
        
        
          | 2163 | 
                  if ( $privacy == 2) { | 
          2149 | 
                  if ( $privacy == 2) { | 
        
          
            
              | 2164 | 
                          $dbh->do(q|UPDATE old_issues SET borrowernumber=? WHERE issue_id = ?|, undef, $anonymouspatron, $old_checkout->issue_id);  | 
              2150 | 
                          $old_checkout->borrowernumber($anonymouspatron)->store;  | 
            
        
          | 2165 | 
                  }  | 
          2151 | 
                  }  | 
        
        
          | 2166 | 
           | 
          2152 | 
           | 
        
        
          | 2167 | 
                  # And finally delete the issue  | 
          2153 | 
                  # And finally delete the issue  | 
        
  
    | 
      
            Lines 3714-3720
          sub LostItem{
      
      
        Link Here
      
     | 
  
        
          | 3714 | 
                      #warn " $issues->{'borrowernumber'}  /  $itemnumber "; | 
          3700 | 
                      #warn " $issues->{'borrowernumber'}  /  $itemnumber "; | 
        
        
          | 3715 | 
                  }  | 
          3701 | 
                  }  | 
        
        
          | 3716 | 
           | 
          3702 | 
           | 
        
          
            
              | 3717 | 
                      MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$patron->privacy) if $mark_returned;  | 
              3703 | 
                      MarkIssueReturned($borrowernumber,$itemnumber,undef,$patron->privacy) if $mark_returned;  | 
            
        
          | 3718 | 
              }  | 
          3704 | 
              }  | 
        
        
          | 3719 | 
           | 
          3705 | 
           | 
        
        
          | 3720 | 
              #When item is marked lost automatically cancel its outstanding transfers and set items holdingbranch to the transfer source branch (frombranch)  | 
          3706 | 
              #When item is marked lost automatically cancel its outstanding transfers and set items holdingbranch to the transfer source branch (frombranch)  | 
        
  
    | 
      
            Lines 3785-3791
          sub ProcessOfflineReturn {
      
      
        Link Here
      
     | 
  
        
          | 3785 | 
                      MarkIssueReturned(  | 
          3771 | 
                      MarkIssueReturned(  | 
        
        
          | 3786 | 
                          $issue->{borrowernumber}, | 
          3772 | 
                          $issue->{borrowernumber}, | 
        
        
          | 3787 | 
                          $itemnumber,  | 
          3773 | 
                          $itemnumber,  | 
        
            
              | 3788 | 
                              undef,  | 
               | 
               | 
            
        
          | 3789 | 
                          $operation->{timestamp}, | 
          3774 | 
                          $operation->{timestamp}, | 
        
        
          | 3790 | 
                      );  | 
          3775 | 
                      );  | 
        
        
          | 3791 | 
                      ModItem(  | 
          3776 | 
                      ModItem(  | 
        
  
    | 
      
            Lines 3820-3826
          sub ProcessOfflineIssue {
      
      
        Link Here
      
     | 
  
        
          | 3820 | 
                      MarkIssueReturned(  | 
          3805 | 
                      MarkIssueReturned(  | 
        
        
          | 3821 | 
                          $issue->{borrowernumber}, | 
          3806 | 
                          $issue->{borrowernumber}, | 
        
        
          | 3822 | 
                          $itemnumber,  | 
          3807 | 
                          $itemnumber,  | 
        
            
              | 3823 | 
                              undef,  | 
               | 
               | 
            
        
          | 3824 | 
                          $operation->{timestamp}, | 
          3808 | 
                          $operation->{timestamp}, | 
        
        
          | 3825 | 
                      );  | 
          3809 | 
                      );  | 
        
        
          | 3826 | 
                  }  | 
          3810 | 
                  }  |