From b6cc4ab2a58aac9d0c962f6213e8517ad63588c2 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 0ec0707175..32a50ad9a3 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1476,8 +1476,7 @@ sub AddIssue { ); if ($refund && $lostreturn_policy) { - _FixAccountForLostAndFound( $item_object->itemnumber, undef, - $item_object->barcode ); + _FixAccountForLostAndFound( $item_object->itemnumber ); if ( $lostreturn_policy eq 'charge' ) { $actualissue //= Koha::Old::Checkouts->search( @@ -1487,6 +1486,10 @@ sub AddIssue { rows => 1 } )->single; + unless (exists($borrower->{branchcode})) { + my $patron = $issue->patron; + $borrower = $patron->unblessed; + } _CalculateAndUpdateFine( { issue => $actualissue, @@ -1498,10 +1501,7 @@ sub AddIssue { $item_object->itemnumber, undef, 'RENEWED' ); } elsif ( $lostreturn_policy eq 'restore' ) { - _RestoreOverdueForLostAndFound( - $borrower->{'borrowernumber'}, - $item_object->itemnumber - ); + _RestoreOverdueForLostAndFound( $item_object->itemnumber ); } } } @@ -2096,8 +2096,7 @@ sub AddReturn { ); if ($refund && $lostreturn_policy) { - _FixAccountForLostAndFound( $item->itemnumber, - $borrowernumber, $barcode ); + _FixAccountForLostAndFound( $item->itemnumber ); $messages->{'LostItemFeeRefunded'} = 1; if ( $lostreturn_policy eq 'charge' ) { @@ -2105,6 +2104,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, @@ -2118,8 +2121,7 @@ sub AddReturn { $messages->{'LostItemFeeCharged'} = 1; } elsif ( $lostreturn_policy eq 'restore' ) { - _RestoreOverdueForLostAndFound( $borrowernumber, - $item->itemnumber ); + _RestoreOverdueForLostAndFound( $item->itemnumber ); $messages->{'LostItemFeeRestored'} = 1; } } @@ -2634,9 +2636,7 @@ sub _FixAccountForLostAndFound { =head2 _RestoreOverdueForLostAndFound - &_RestoreOverdueForLostAndFound($borrowernumber, $itemnumber ); - -C<$borrowernumber> borrowernumber + &_RestoreOverdueForLostAndFound( $itemnumber ); C<$itemnumber> itemnumber @@ -2645,12 +2645,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; @@ -2663,7 +2659,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 be4a237b9a..e3a4bb339f 100755 --- a/t/db_dependent/Circulation.t +++ b/t/db_dependent/Circulation.t @@ -3093,7 +3093,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( @@ -3103,7 +3103,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 @@ -3120,7 +3120,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'); @@ -3141,7 +3141,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; @@ -3150,19 +3150,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.20.1