| Lines 2172-2178
          subtest 'AddReturn | is_overdue' => sub {
      
      
        Link Here | 
        
          | 2172 |     }; | 2172 |     }; | 
        
          | 2173 | }; | 2173 | }; | 
        
          | 2174 |  | 2174 |  | 
          
            
              | 2175 | subtest '_FixAccountForLostAndReturned' => sub { | 2175 | subtest '_FixAccountForLostAndFound' => sub { | 
        
          | 2176 |  | 2176 |  | 
        
          | 2177 |     plan tests => 5; | 2177 |     plan tests => 5; | 
        
          | 2178 |  | 2178 |  | 
  
    | Lines 2250-2263
          subtest '_FixAccountForLostAndReturned' => sub {
      
      
        Link Here | 
        
          | 2250 |         ); | 2250 |         ); | 
        
          | 2251 |         $credit->apply( { debits => [ $debts->as_list ], offset_type => 'Writeoff' } ); | 2251 |         $credit->apply( { debits => [ $debts->as_list ], offset_type => 'Writeoff' } ); | 
        
          | 2252 |  | 2252 |  | 
          
            
              | 2253 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id ); | 2253 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndFound( $item->itemnumber, $patron->id ); | 
            
              | 2254 |         is( $credit_return_id, undef, 'No LOST_RETURN account line added' ); | 2254 |         is( $credit_return_id, undef, 'No LOST_FOUND account line added' ); | 
        
          | 2255 |  | 2255 |  | 
        
          | 2256 |         $lost_fee_line->discard_changes; # reload from DB | 2256 |         $lost_fee_line->discard_changes; # reload from DB | 
        
          | 2257 |         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' ); | 2257 |         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' ); | 
        
          | 2258 |         is( $lost_fee_line->debit_type_code, | 2258 |         is( $lost_fee_line->debit_type_code, | 
        
          | 2259 |             'LOST', 'Lost fee now still has account type of LOST' ); | 2259 |             'LOST', 'Lost fee now still has account type of LOST' ); | 
          
            
              | 2260 |         is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED"); | 2260 |         is( $lost_fee_line->status, 'FOUND', "Lost fee now has account status of FOUND"); | 
        
          | 2261 |  | 2261 |  | 
        
          | 2262 |         is( $patron->account->balance, -0, 'The patron balance is 0, everything was written off' ); | 2262 |         is( $patron->account->balance, -0, 'The patron balance is 0, everything was written off' ); | 
        
          | 2263 |     }; | 2263 |     }; | 
  
    | Lines 2312-2331
          subtest '_FixAccountForLostAndReturned' => sub {
      
      
        Link Here | 
        
          | 2312 |         ); | 2312 |         ); | 
        
          | 2313 |         $credit->apply( { debits => [ $debts->as_list ], offset_type => 'Payment' } ); | 2313 |         $credit->apply( { debits => [ $debts->as_list ], offset_type => 'Payment' } ); | 
        
          | 2314 |  | 2314 |  | 
          
            
              | 2315 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id ); | 2315 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndFound( $item->itemnumber, $patron->id ); | 
        
          | 2316 |         my $credit_return = Koha::Account::Lines->find($credit_return_id); | 2316 |         my $credit_return = Koha::Account::Lines->find($credit_return_id); | 
        
          | 2317 |  | 2317 |  | 
          
            
              | 2318 |         is( $credit_return->credit_type_code, 'LOST_RETURN', 'An account line of type LOST_RETURN is added' ); | 2318 |         is( $credit_return->credit_type_code, 'LOST_FOUND', 'An account line of type LOST_FOUND is added' ); | 
        
          | 2319 |         is( $credit_return->amount + 0, | 2319 |         is( $credit_return->amount + 0, | 
          
            
              | 2320 |             -99.00, 'The account line of type LOST_RETURN has an amount of -99' ); | 2320 |             -99.00, 'The account line of type LOST_FOUND has an amount of -99' ); | 
        
          | 2321 |         is( $credit_return->amountoutstanding + 0, | 2321 |         is( $credit_return->amountoutstanding + 0, | 
          
            
              | 2322 |             -99.00, 'The account line of type LOST_RETURN has an amountoutstanding of -99' ); | 2322 |             -99.00, 'The account line of type LOST_FOUND has an amountoutstanding of -99' ); | 
        
          | 2323 |  | 2323 |  | 
        
          | 2324 |         $lost_fee_line->discard_changes; | 2324 |         $lost_fee_line->discard_changes; | 
        
          | 2325 |         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' ); | 2325 |         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' ); | 
        
          | 2326 |         is( $lost_fee_line->debit_type_code, | 2326 |         is( $lost_fee_line->debit_type_code, | 
        
          | 2327 |             'LOST', 'Lost fee now still has account type of LOST' ); | 2327 |             'LOST', 'Lost fee now still has account type of LOST' ); | 
          
            
              | 2328 |         is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED"); | 2328 |         is( $lost_fee_line->status, 'FOUND', "Lost fee now has account status of FOUND"); | 
        
          | 2329 |  | 2329 |  | 
        
          | 2330 |         is( $patron->account->balance, | 2330 |         is( $patron->account->balance, | 
        
          | 2331 |             -99, 'The patron balance is -99, a credit that equals the lost fee payment' ); | 2331 |             -99, 'The patron balance is -99, a credit that equals the lost fee payment' ); | 
  
    | Lines 2370-2387
          subtest '_FixAccountForLostAndReturned' => sub {
      
      
        Link Here | 
        
          | 2370 |         is( $lost_fee_line->amountoutstanding + 0, | 2370 |         is( $lost_fee_line->amountoutstanding + 0, | 
        
          | 2371 |             $replacement_amount, 'The right LOST amountountstanding is generated' ); | 2371 |             $replacement_amount, 'The right LOST amountountstanding is generated' ); | 
        
          | 2372 |  | 2372 |  | 
          
            
              | 2373 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id ); | 2373 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndFound( $item->itemnumber, $patron->id ); | 
        
          | 2374 |         my $credit_return = Koha::Account::Lines->find($credit_return_id); | 2374 |         my $credit_return = Koha::Account::Lines->find($credit_return_id); | 
        
          | 2375 |  | 2375 |  | 
          
            
              | 2376 |         is( $credit_return->credit_type_code, 'LOST_RETURN', 'An account line of type LOST_RETURN is added' ); | 2376 |         is( $credit_return->credit_type_code, 'LOST_FOUND', 'An account line of type LOST_FOUND is added' ); | 
            
              | 2377 |         is( $credit_return->amount + 0, -99.00, 'The account line of type LOST_RETURN has an amount of -99' ); | 2377 |         is( $credit_return->amount + 0, -99.00, 'The account line of type LOST_FOUND has an amount of -99' ); | 
            
              | 2378 |         is( $credit_return->amountoutstanding + 0, 0, 'The account line of type LOST_RETURN has an amountoutstanding of 0' ); | 2378 |         is( $credit_return->amountoutstanding + 0, 0, 'The account line of type LOST_FOUND has an amountoutstanding of 0' ); | 
        
          | 2379 |  | 2379 |  | 
        
          | 2380 |         $lost_fee_line->discard_changes; | 2380 |         $lost_fee_line->discard_changes; | 
        
          | 2381 |         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' ); | 2381 |         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' ); | 
        
          | 2382 |         is( $lost_fee_line->debit_type_code, | 2382 |         is( $lost_fee_line->debit_type_code, | 
        
          | 2383 |             'LOST', 'Lost fee now still has account type of LOST' ); | 2383 |             'LOST', 'Lost fee now still has account type of LOST' ); | 
          
            
              | 2384 |         is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED"); | 2384 |         is( $lost_fee_line->status, 'FOUND', "Lost fee now has account status of FOUND"); | 
        
          | 2385 |  | 2385 |  | 
        
          | 2386 |         is( $patron->account->balance, 20, 'The patron balance is 20, still owes the processing fee' ); | 2386 |         is( $patron->account->balance, 20, 'The patron balance is 20, still owes the processing fee' ); | 
        
          | 2387 |     }; | 2387 |     }; | 
  
    | Lines 2456-2480
          subtest '_FixAccountForLostAndReturned' => sub {
      
      
        Link Here | 
        
          | 2456 |         $lost_fee_line->discard_changes; | 2456 |         $lost_fee_line->discard_changes; | 
        
          | 2457 |         my $outstanding = $lost_fee_line->amountoutstanding; | 2457 |         my $outstanding = $lost_fee_line->amountoutstanding; | 
        
          | 2458 |  | 2458 |  | 
          
            
              | 2459 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item->itemnumber, $patron->id ); | 2459 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndFound( $item->itemnumber, $patron->id ); | 
        
          | 2460 |         my $credit_return = Koha::Account::Lines->find($credit_return_id); | 2460 |         my $credit_return = Koha::Account::Lines->find($credit_return_id); | 
        
          | 2461 |  | 2461 |  | 
          
            
              | 2462 |         is( $account->balance, $processfee_amount - $payment_amount, 'Balance is PROCESSING - PAYMENT (LOST_RETURN)' ); | 2462 |         is( $account->balance, $processfee_amount - $payment_amount, 'Balance is PROCESSING - PAYMENT (LOST_FOUND)' ); | 
        
          | 2463 |  | 2463 |  | 
        
          | 2464 |         $lost_fee_line->discard_changes; | 2464 |         $lost_fee_line->discard_changes; | 
        
          | 2465 |         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' ); | 2465 |         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' ); | 
        
          | 2466 |         is( $lost_fee_line->debit_type_code, | 2466 |         is( $lost_fee_line->debit_type_code, | 
        
          | 2467 |             'LOST', 'Lost fee now still has account type of LOST' ); | 2467 |             'LOST', 'Lost fee now still has account type of LOST' ); | 
          
            
              | 2468 |         is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED"); | 2468 |         is( $lost_fee_line->status, 'FOUND', "Lost fee now has account status of FOUND"); | 
        
          | 2469 |  | 2469 |  | 
          
            
              | 2470 |         is( $credit_return->credit_type_code, 'LOST_RETURN', 'An account line of type LOST_RETURN is added' ); | 2470 |         is( $credit_return->credit_type_code, 'LOST_FOUND', 'An account line of type LOST_FOUND is added' ); | 
        
          | 2471 |         is( $credit_return->amount + 0, | 2471 |         is( $credit_return->amount + 0, | 
        
          | 2472 |             ($payment_amount + $outstanding ) * -1, | 2472 |             ($payment_amount + $outstanding ) * -1, | 
          
            
              | 2473 |             'The account line of type LOST_RETURN has an amount equal to the payment + outstanding' | 2473 |             'The account line of type LOST_FOUND has an amount equal to the payment + outstanding' | 
        
          | 2474 |         ); | 2474 |         ); | 
        
          | 2475 |         is( $credit_return->amountoutstanding + 0, | 2475 |         is( $credit_return->amountoutstanding + 0, | 
        
          | 2476 |             $payment_amount * -1, | 2476 |             $payment_amount * -1, | 
          
            
              | 2477 |             'The account line of type LOST_RETURN has an amountoutstanding equal to the payment' | 2477 |             'The account line of type LOST_FOUND has an amountoutstanding equal to the payment' | 
        
          | 2478 |         ); | 2478 |         ); | 
        
          | 2479 |  | 2479 |  | 
        
          | 2480 |         is( $account->balance, | 2480 |         is( $account->balance, | 
  
    | Lines 2552-2561
          subtest '_FixAccountForLostAndReturned' => sub {
      
      
        Link Here | 
        
          | 2552 |  | 2552 |  | 
        
          | 2553 |         t::lib::Mocks::mock_preference( 'AccountAutoReconcile', 1 ); | 2553 |         t::lib::Mocks::mock_preference( 'AccountAutoReconcile', 1 ); | 
        
          | 2554 |  | 2554 |  | 
          
            
              | 2555 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndReturned( $item_id, $patron->id ); | 2555 |         my $credit_return_id = C4::Circulation::_FixAccountForLostAndFound( $item_id, $patron->id ); | 
        
          | 2556 |         my $credit_return = Koha::Account::Lines->find($credit_return_id); | 2556 |         my $credit_return = Koha::Account::Lines->find($credit_return_id); | 
        
          | 2557 |  | 2557 |  | 
          
            
              | 2558 |         is( $account->balance, $manual_debit_amount - $payment_amount, 'Balance is PROCESSING - payment (LOST_RETURN)' ); | 2558 |         is( $account->balance, $manual_debit_amount - $payment_amount, 'Balance is PROCESSING - payment (LOST_FOUND)' ); | 
        
          | 2559 |  | 2559 |  | 
        
          | 2560 |         my $manual_debit = Koha::Account::Lines->search({ borrowernumber => $patron->id, debit_type_code => 'OVERDUE', status => 'UNRETURNED' })->next; | 2560 |         my $manual_debit = Koha::Account::Lines->search({ borrowernumber => $patron->id, debit_type_code => 'OVERDUE', status => 'UNRETURNED' })->next; | 
        
          | 2561 |         is( $manual_debit->amountoutstanding + 0, $manual_debit_amount - $payment_amount, 'reconcile_balance was called' ); | 2561 |         is( $manual_debit->amountoutstanding + 0, $manual_debit_amount - $payment_amount, 'reconcile_balance was called' ); | 
  
    | Lines 2647-2653
          subtest '_FixOverduesOnReturn' => sub {
      
      
        Link Here | 
        
          | 2647 |     is( $accountline->status, 'RETURNED', 'Passed status has been used to set as RETURNED )'); | 2647 |     is( $accountline->status, 'RETURNED', 'Passed status has been used to set as RETURNED )'); | 
        
          | 2648 | }; | 2648 | }; | 
        
          | 2649 |  | 2649 |  | 
          
            
              | 2650 | subtest '_FixAccountForLostAndReturned returns undef if patron is deleted' => sub { | 2650 | subtest '_FixAccountForLostAndFound returns undef if patron is deleted' => sub { | 
        
          | 2651 |     plan tests => 1; | 2651 |     plan tests => 1; | 
        
          | 2652 |  | 2652 |  | 
        
          | 2653 |     my $manager = $builder->build_object({ class => "Koha::Patrons" }); | 2653 |     my $manager = $builder->build_object({ class => "Koha::Patrons" }); | 
  
    | Lines 2683-2691
          subtest '_FixAccountForLostAndReturned returns undef if patron is deleted' => su
      
      
        Link Here | 
        
          | 2683 |  | 2683 |  | 
        
          | 2684 |     $patron->delete(); | 2684 |     $patron->delete(); | 
        
          | 2685 |  | 2685 |  | 
          
            
              | 2686 |     my $return_value = C4::Circulation::_FixAccountForLostAndReturned( $patron->id, $item->itemnumber ); | 2686 |     my $return_value = C4::Circulation::_FixAccountForLostAndFound( $patron->id, $item->itemnumber ); | 
        
          | 2687 |  | 2687 |  | 
          
            
              | 2688 |     is( $return_value, undef, "_FixAccountForLostAndReturned returns undef if patron is deleted" ); | 2688 |     is( $return_value, undef, "_FixAccountForLostAndFound returns undef if patron is deleted" ); | 
        
          | 2689 |  | 2689 |  | 
        
          | 2690 | }; | 2690 | }; | 
        
          | 2691 |  | 2691 |  | 
            
              | 2692 | -  |  |  |