From 7ecc1f69f131d6fd11478709a6954f2392549b0e Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Fri, 17 Jul 2020 16:16:15 +0100 Subject: [PATCH] Bug 23091: (follow-up) Remove borrower requirement for restore Signed-off-by: Andrew Fuerste-Henry --- C4/Circulation.pm | 33 ++++++++++++++------------------- t/db_dependent/Circulation.t | 19 +++++-------------- 2 files changed, 19 insertions(+), 33 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index e31ea1221f..78ed7f1fec 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1464,8 +1464,7 @@ sub AddIssue { ); if ($lostreturn_policy) { - _FixAccountForLostAndFound( $item_object->itemnumber, undef, - $item_object->barcode ); + _FixAccountForLostAndFound( $item_object->itemnumber ); if ( $lostreturn_policy eq 'charge' ) { $actualissue //= Koha::Old::Checkouts->search( @@ -1475,6 +1474,10 @@ sub AddIssue { rows => 1 } )->single; + unless (exists($borrower->{branchcode})) { + my $patron = $issue->patron; + $borrower = $patron->unblessed; + } _CalculateAndUpdateFine( { issue => $actualissue, @@ -1486,10 +1489,7 @@ sub AddIssue { $item_object->itemnumber, undef, 'RENEWED' ); } elsif ( $lostreturn_policy eq 'restore' ) { - _RestoreOverdueForLostAndFound( - $borrower->{'borrowernumber'}, - $item_object->itemnumber - ); + _RestoreOverdueForLostAndFound( $item_object->itemnumber ); } } } @@ -2072,8 +2072,7 @@ sub AddReturn { ); if ($lostreturn_policy) { - _FixAccountForLostAndFound( $item->itemnumber, - $borrowernumber, $barcode ); + _FixAccountForLostAndFound( $item->itemnumber ); $messages->{'LostItemFeeRefunded'} = 1; if ( $lostreturn_policy eq 'charge' ) { @@ -2081,6 +2080,10 @@ sub AddReturn { { itemnumber => $item->itemnumber }, { order_by => { '-desc' => 'returndate' }, rows => 1 } )->single; + unless (exists($patron_unblessed->{branchcode})) { + my $patron = $issue->patron; + $patron_unblessed = $patron->unblessed; + } _CalculateAndUpdateFine( { issue => $issue, @@ -2094,8 +2097,7 @@ sub AddReturn { $messages->{'LostItemFeeCharged'} = 1; } elsif ( $lostreturn_policy eq 'restore' ) { - _RestoreOverdueForLostAndFound( $borrowernumber, - $item->itemnumber ); + _RestoreOverdueForLostAndFound( $item->itemnumber ); $messages->{'LostItemFeeRestored'} = 1; } } @@ -2606,9 +2608,7 @@ sub _FixAccountForLostAndFound { =head2 _RestoreOverdueForLostAndFound - &_RestoreOverdueForLostAndFound($borrowernumber, $itemnumber ); - -C<$borrowernumber> borrowernumber + &_RestoreOverdueForLostAndFound( $itemnumber ); C<$itemnumber> itemnumber @@ -2617,12 +2617,8 @@ Internal function =cut sub _RestoreOverdueForLostAndFound { - my ( $borrowernumber, $item ) = @_; + my ( $item ) = @_; - unless( $borrowernumber ) { - warn "_RestoreOverdueForLostAndFound() not supplied valid borrowernumber"; - return; - } unless( $item ) { warn "_RestoreOverdueForLostAndFound() not supplied valid itemnumber"; return; @@ -2635,7 +2631,6 @@ sub _RestoreOverdueForLostAndFound { # check for lost overdue fine my $accountlines = Koha::Account::Lines->search( { - borrowernumber => $borrowernumber, itemnumber => $item, debit_type_code => 'OVERDUE', status => 'LOST' diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t index 6fe765a898..a3d2c66de6 100755 --- a/t/db_dependent/Circulation.t +++ b/t/db_dependent/Circulation.t @@ -2914,7 +2914,7 @@ subtest '_FixAccountForLostAndFound' => sub { subtest '_RestoreOverdueForLostAndFound' => sub { - plan tests => 8; + plan tests => 7; my $manager = $builder->build_object( { class => "Koha::Patrons" } ); t::lib::Mocks::mock_userenv( @@ -2924,7 +2924,7 @@ subtest '_RestoreOverdueForLostAndFound' => sub { my $item = $builder->build_sample_item(); # No fine found - my $result = C4::Circulation::_RestoreOverdueForLostAndFound($patron->borrowernumber, $item->itemnumber); + my $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber); is($result, 0, "0 returned when no overdue found"); # Fine not forgiven @@ -2941,7 +2941,7 @@ subtest '_RestoreOverdueForLostAndFound' => sub { )->store(); $overdue->status('LOST')->store(); - $result = C4::Circulation::_RestoreOverdueForLostAndFound($patron->borrowernumber, $item->itemnumber); + $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber); is($result, 0, "0 returned when overdue found without forgival"); $overdue->discard_changes; is($overdue->status, 'RETURNED', 'Overdue status updated to RETURNED'); @@ -2962,7 +2962,7 @@ subtest '_RestoreOverdueForLostAndFound' => sub { ); $credit->apply( { debits => [$overdue], offset_type => 'Forgiven' } ); - $result = C4::Circulation::_RestoreOverdueForLostAndFound($patron->borrowernumber, $item->itemnumber); + $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber); is( ref($result), 'Koha::Account::Line', 'Return a Koha::Account::Line object on sucess'); $overdue->discard_changes; @@ -2971,19 +2971,10 @@ subtest '_RestoreOverdueForLostAndFound' => sub { # Missing parameters warning_like { - C4::Circulation::_RestoreOverdueForLostAndFound( undef, - $item->itemnumber ) - } - qr/_RestoreOverdueForLostAndFound\(\) not supplied valid borrowernumber/, - "parameter warning received for missing borrowernumber"; - - warning_like { - C4::Circulation::_RestoreOverdueForLostAndFound( - $patron->borrowernumber, undef ) + C4::Circulation::_RestoreOverdueForLostAndFound( undef ) } qr/_RestoreOverdueForLostAndFound\(\) not supplied valid itemnumber/, "parameter warning received for missing itemnumbernumber"; - }; subtest '_FixOverduesOnReturn' => sub { -- 2.11.0