From 9f51f7a7adec3c98319d508d4e967bb4533badab Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Wed, 24 Feb 2016 16:34:23 +0000
Subject: [PATCH] Bug 15909 - Remove the use of makepartialpayment

Test Plan:
1) Apply this patch
2) prove t/db_dependent/Accounts.t
3) Test fine payment via the "Pay" button,
   but make the payment for less then the full amount

Signed-off-by: Laura Slavin <lslavin@hmcpl.org>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
---
 C4/Accounts.pm            | 23 -----------------------
 members/paycollect.pl     | 15 ++++++++++++---
 t/db_dependent/Accounts.t | 12 ++++--------
 3 files changed, 16 insertions(+), 34 deletions(-)

diff --git a/C4/Accounts.pm b/C4/Accounts.pm
index 682e59ba83..14487a4ad7 100644
--- a/C4/Accounts.pm
+++ b/C4/Accounts.pm
@@ -44,7 +44,6 @@ BEGIN {
 		&getrefunds
 		&chargelostitem
 		&ReversePayment
-        &makepartialpayment
         &recordpayment_selectaccts
         &WriteOffFee
         &purge_zero_balance_fees
@@ -420,28 +419,6 @@ sub recordpayment_selectaccts {
       );
 }
 
-# makepayment needs to be fixed to handle partials till then this separate subroutine
-# fills in
-sub makepartialpayment {
-    my ( $accountlines_id, $borrowernumber, $accountno, $amount, $user, $branch, $payment_note ) = @_;
-
-    my $line = Koha::Account::Lines->find( $accountlines_id );
-
-    return Koha::Account->new(
-        {
-            patron_id => $borrowernumber,
-        }
-      )->pay(
-        {
-            amount => $amount,
-            lines  => [ $line ],
-            note   => $payment_note,
-            library_id => $branch,
-        }
-      );
-
-}
-
 =head2 WriteOffFee
 
   WriteOffFee( $borrowernumber, $accountline_id, $itemnum, $accounttype, $amount, $branch, $payment_note );
diff --git a/members/paycollect.pl b/members/paycollect.pl
index b341e8c856..be920e1463 100755
--- a/members/paycollect.pl
+++ b/members/paycollect.pl
@@ -121,9 +121,18 @@ if ( $total_paid and $total_paid ne '0.00' ) {
                         note       => $payment_note
                     }
                 );
-            } else {
-                makepartialpayment( $accountlines_id, $borrowernumber, $accountno, $total_paid,
-                    $user, $branch, $payment_note );
+            }
+            else {
+                my $line = Koha::Account::Lines->find($accountlines_id);
+
+                Koha::Account->new( { patron_id => $borrowernumber, } )->pay(
+                    {
+                        amount     => $total_paid,
+                        lines      => [$line],
+                        note       => $payment_note,
+                        library_id => $branch,
+                    }
+                );
             }
             print $input->redirect(
                 "/cgi-bin/koha/members/pay.pl?borrowernumber=$borrowernumber");
diff --git a/t/db_dependent/Accounts.t b/t/db_dependent/Accounts.t
index 6d5872642f..230a1d795d 100644
--- a/t/db_dependent/Accounts.t
+++ b/t/db_dependent/Accounts.t
@@ -46,7 +46,6 @@ can_ok( 'C4::Accounts',
         getrefunds
         ReversePayment
         recordpayment_selectaccts
-        makepartialpayment
         WriteOffFee
         purge_zero_balance_fees )
 );
@@ -357,7 +356,7 @@ subtest "makepayment() tests" => sub {
     }
 };
 
-subtest "makepartialpayment() tests" => sub {
+subtest "Even more Koha::Account::pay tests" => sub {
 
     plan tests => 6;
 
@@ -385,13 +384,10 @@ subtest "makepartialpayment() tests" => sub {
 
     is( $rs->count(), 1, 'Accountline created' );
 
+    my $account = Koha::Account->new( { patron_id => $borrowernumber } );
+    my $line = Koha::Account::Lines->find( $accountline->{ accountlines_id } );
     # make the full payment
-    makepartialpayment(
-        $accountline->{ accountlines_id }, $borrowernumber,
-        $accountline->{ accountno },       $partialamount,
-        $borrowernumber, $branch, 'A payment note' );
-
-    # TODO: someone should write actual tests for makepartialpayment()
+    $account->pay({ lines => [$line], amount => $partialamount, library_id => $branch, note => 'A payment note' });
 
     my $stat = $schema->resultset('Statistic')->search({
         branch  => $branch,
-- 
2.39.5