Bug 15898 - Use Koha::Account::pay internally for makepartialpayment

This is the fourth patch in a series to unify all payment functions into
a single mathod

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: Josef Moravec <josef.moravec@gmail.com>

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

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Kyle M Hall 2016-02-24 14:01:23 +00:00
parent cf52095e19
commit e134350813
1 changed files with 14 additions and 59 deletions

View File

@ -415,7 +415,7 @@ sub recordpayment_selectaccts {
{
amount => $amount,
lines => \@lines,
note => $note
note => $note,
}
);
}
@ -424,67 +424,22 @@ sub recordpayment_selectaccts {
# fills in
sub makepartialpayment {
my ( $accountlines_id, $borrowernumber, $accountno, $amount, $user, $branch, $payment_note ) = @_;
my $manager_id = 0;
$manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv;
if (!$amount || $amount < 0) {
return;
}
$payment_note //= "";
my $dbh = C4::Context->dbh;
my $nextaccntno = getnextacctno($borrowernumber);
my $newamtos = 0;
my $line = Koha::Account::Lines->find( $accountlines_id );
my $data = $dbh->selectrow_hashref(
'SELECT * FROM accountlines WHERE accountlines_id=?',undef,$accountlines_id);
my $new_outstanding = $data->{amountoutstanding} - $amount;
return Koha::Account->new(
{
patron_id => $borrowernumber,
}
)->pay(
{
amount => $amount,
lines => [ $line ],
note => $payment_note,
library_id => $branch,
}
);
my $update = 'UPDATE accountlines SET amountoutstanding = ? WHERE accountlines_id = ? ';
$dbh->do( $update, undef, $new_outstanding, $accountlines_id);
if ( C4::Context->preference("FinesLog") ) {
logaction("FINES", 'MODIFY', $borrowernumber, Dumper({
action => 'fee_payment',
borrowernumber => $borrowernumber,
old_amountoutstanding => $data->{'amountoutstanding'},
new_amountoutstanding => $new_outstanding,
amount_paid => $data->{'amountoutstanding'} - $new_outstanding,
accountlines_id => $data->{'accountlines_id'},
accountno => $data->{'accountno'},
manager_id => $manager_id,
}));
}
# create new line
my $insert = 'INSERT INTO accountlines (borrowernumber, accountno, date, amount, '
. 'description, accounttype, amountoutstanding, itemnumber, manager_id, note) '
. ' VALUES (?, ?, now(), ?, ?, ?, 0, ?, ?, ?)';
$dbh->do( $insert, undef, $borrowernumber, $nextaccntno, -$amount,
'', 'Pay', $data->{'itemnumber'}, $manager_id, $payment_note);
UpdateStats({
branch => $branch,
type => 'payment',
amount => $amount,
borrowernumber => $borrowernumber,
accountno => $accountno
});
if ( C4::Context->preference("FinesLog") ) {
logaction("FINES", 'CREATE',$borrowernumber,Dumper({
action => 'create_payment',
borrowernumber => $user,
accountno => $nextaccntno,
amount => 0 - $amount,
accounttype => 'Pay',
itemnumber => $data->{'itemnumber'},
accountlines_paid => [ $data->{'accountlines_id'} ],
manager_id => $manager_id,
}));
}
return;
}
=head2 WriteOffFee