@@ -, +, @@ --- C4/Circulation.pm | 6 ++---- C4/Overdues.pm | 4 ++++ 2 files changed, 6 insertions(+), 4 deletions(-) --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -1953,17 +1953,15 @@ sub AddReturn { # case of a return of document (deal with issues and holdingbranch) if ($doreturn) { - my $is_overdue; die "The item is not issed and cannot be returned" unless $issue; # Just in case... $patron or warn "AddReturn without current borrower"; - $is_overdue = $issue->is_overdue( $return_date ); if ($patron) { eval { MarkIssueReturned( $borrowernumber, $item->itemnumber, $return_date, $patron->privacy ); }; unless ( $@ ) { - if ( C4::Context->preference('CalculateFinesOnReturn') && $is_overdue && !$item->itemlost ) { + if ( C4::Context->preference('CalculateFinesOnReturn') && !$item->itemlost ) { _CalculateAndUpdateFine( { issue => $issue, item => $item_unblessed, borrower => $patron_unblessed, return_date => $return_date } ); } } else { @@ -2890,7 +2888,7 @@ sub AddRenewal { my $schema = Koha::Database->schema; $schema->txn_do(sub{ - if ( C4::Context->preference('CalculateFinesOnReturn') && $issue->is_overdue ) { + if ( C4::Context->preference('CalculateFinesOnReturn') ) { _CalculateAndUpdateFine( { issue => $issue, item => $item_unblessed, borrower => $patron_unblessed } ); } _FixOverduesOnReturn( $borrowernumber, $itemnumber, undef, 'RENEWED' ); --- a/C4/Overdues.pm +++ a/C4/Overdues.pm @@ -232,6 +232,10 @@ or "Final Notice". But CalcFine never defined any value. sub CalcFine { my ( $item, $bortype, $branchcode, $due_dt, $end_date ) = @_; + + # Skip calculations if item is not overdue + return ( 0, 0, 0 ) unless (DateTime->compare( $due_dt, $end_date ) == -1); + my $start_date = $due_dt->clone(); # get issuingrules (fines part will be used) my $itemtype = $item->{itemtype} || $item->{itype}; --