diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 329f7e9f9f..3b000cb029 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2030,7 +2030,7 @@ sub AddReturn { # fix up the overdues in accounts... if ($borrowernumber) { - my $fix = _FixOverduesOnReturn( $borrowernumber, $item->itemnumber, $exemptfine ); + my $fix = _FixOverduesOnReturn( $borrowernumber, $item->itemnumber, $exemptfine, 'RETURNED' ); defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->itemnumber...) failed!"; # zero is OK, check defined if ( $issue and $issue->is_overdue ) { @@ -2314,7 +2314,7 @@ sub _debar_user_on_return { =head2 _FixOverduesOnReturn - &_FixOverduesOnReturn($borrowernumber, $itemnumber, $exemptfine); + &_FixOverduesOnReturn($borrowernumber, $itemnumber, $exemptfine, $status); C<$borrowernumber> borrowernumber @@ -2322,12 +2322,14 @@ C<$itemnumber> itemnumber C<$exemptfine> BOOL -- remove overdue charge associated with this issue. +C<$status> ENUM -- reason for fix [ RETURNED, RENEWED, LOST, FORGIVEN ] + Internal function =cut sub _FixOverduesOnReturn { - my ( $borrowernumber, $item, $exemptfine ) = @_; + my ( $borrowernumber, $item, $exemptfine, $status ) = @_; unless( $borrowernumber ) { warn "_FixOverduesOnReturn() not supplied valid borrowernumber"; return; @@ -2336,6 +2338,10 @@ sub _FixOverduesOnReturn { warn "_FixOverduesOnReturn() not supplied valid itemnumber"; return; } + unless( $status ) { + warn "_FixOverduesOnReturn() not supplied valid status"; + return; + } my $schema = Koha::Database->schema; @@ -2376,7 +2382,7 @@ sub _FixOverduesOnReturn { &logaction("FINES", 'MODIFY',$borrowernumber,"Overdue forgiven: item $item"); } } else { - $accountline->status('RETURNED'); + $accountline->status($status); } return $accountline->store(); @@ -2867,7 +2873,7 @@ sub AddRenewal { if ( C4::Context->preference('CalculateFinesOnReturn') && $issue->is_overdue ) { _CalculateAndUpdateFine( { issue => $issue, item => $item_unblessed, borrower => $patron_unblessed } ); } - _FixOverduesOnReturn( $borrowernumber, $itemnumber ); + _FixOverduesOnReturn( $borrowernumber, $itemnumber, undef, 'RENEWED' ); # If the due date wasn't specified, calculate it by adding the # book's loan length to today's date or the current due date @@ -3712,7 +3718,7 @@ sub LostItem{ if ( my $borrowernumber = $issues->{borrowernumber} ){ my $patron = Koha::Patrons->find( $borrowernumber ); - my $fix = _FixOverduesOnReturn($borrowernumber, $itemnumber, C4::Context->preference('WhenLostForgiveFine'), 0); # 1, 0 = exemptfine, no-dropbox + my $fix = _FixOverduesOnReturn($borrowernumber, $itemnumber, C4::Context->preference('WhenLostForgiveFine'), 'LOST'); defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $itemnumber...) failed!"; # zero is OK, check defined if (C4::Context->preference('WhenLostChargeReplacementFee')){ diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc index dfce02b6fe..e221af6525 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc @@ -44,6 +44,7 @@ [%- CASE 'REPLACED' -%] (Replaced) [%- CASE 'FORGIVEN' -%] (Forgiven) [%- CASE 'VOID' -%] (Voided) + [%- CASE 'LOST' -%] (Lost) [%- CASE -%] [%- END -%] [%- END -%] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/account-table.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/account-table.inc index 549e9459f2..230ff9c435 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/account-table.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/account-table.inc @@ -150,6 +150,7 @@ [%- CASE 'REPLACED' -%] (Replaced) [%- CASE 'FORGIVEN' -%] (Forgiven) [%- CASE 'VOID' -%] (Voided) + [%- CASE 'LOST' -%] (Lost) [%- CASE -%] [%- END -%] [%- END -%]