@@ -, +, @@ accountlines_id for that fee in the CG fee identifier field, along with the other required fields. --- C4/SIP/ILS.pm | 8 +++----- C4/SIP/ILS/Transaction/FeePayment.pm | 25 ++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 8 deletions(-) --- a/C4/SIP/ILS.pm +++ a/C4/SIP/ILS.pm @@ -247,13 +247,11 @@ sub end_patron_session { } sub pay_fee { - my ($self, $patron_id, $patron_pwd, $fee_amt, $fee_type, - $pay_type, $fee_id, $trans_id, $currency) = @_; + my ($self, $patron_id, $patron_pwd, $fee_amt, $fee_type, $pay_type, $fee_id, $trans_id, $currency) = @_; my $trans; $trans = C4::SIP::ILS::Transaction::FeePayment->new(); - $trans->transaction_id($trans_id); my $patron; $trans->patron($patron = C4::SIP::ILS::Patron->new($patron_id)); @@ -261,8 +259,8 @@ sub pay_fee { $trans->screen_msg('Invalid patron barcode.'); return $trans; } - $trans->pay($patron->{borrowernumber},$fee_amt, $pay_type); - $trans->ok(1); + my $ok =$trans->pay($patron->{borrowernumber},$fee_amt, $pay_type, $fee_id); + $trans->ok($ok); return $trans; } --- a/C4/SIP/ILS/Transaction/FeePayment.pm +++ a/C4/SIP/ILS/Transaction/FeePayment.pm @@ -21,10 +21,11 @@ use strict; # along with Koha; if not, see . use Koha::Account; -use parent qw(C4::SIP::ILS::Transaction); +use Koha::Account::Lines; +use parent qw(C4::SIP::ILS::Transaction); -our $debug = 0; +our $debug = 0; my %fields = (); @@ -45,8 +46,26 @@ sub pay { my $borrowernumber = shift; my $amt = shift; my $type = shift; + my $fee_id = shift; + warn("RECORD:$borrowernumber::$amt"); - Koha::Account->new( { patron_id => $borrowernumber } )->pay( { amount => $amt, sip => $type } ); + + my $account = Koha::Account->new( { patron_id => $borrowernumber } ); + + if ($fee_id) { + my $fee = Koha::Account::Lines->find($fee_id); + if ( $fee && $fee->amountoutstanding == $amt ) { + $account->pay( { amount => $amt, sip => $type, lines => [$fee] } ); + return 1; + } + else { + return 0; + } + } + else { + $account->pay( { amount => $amt, sip => $type } ); + return 1; + } } #sub DESTROY { --