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:
parent
cf52095e19
commit
e134350813
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue