From a8b168dc63df9d60e8e562f368f8bdbec520ffd8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Delaune?= Date: Fri, 9 Mar 2012 10:39:30 +0100 Subject: [PATCH] Bug 7671 : add a real primary key accountlines_id in accountlines MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Delaune Signed-off-by: Marc Veron NOTE: After applying the patch I got following errors in members/pay.pl: Global symbol "$writeoff_sth" requires explicit package name Global symbol "$add_writeoff_sth" requires explicit package name Added to lines at the begin of members/pay.pl: our $writeoff_sth; our $add_writeoff_sth; Now the patch worked as expected. However I am not quite sure if signing off is OK in this situation. Marc Signed-off-by: Chris Cormack Signed-off-by: Kyle M Hall --- C4/Accounts.pm | 114 +++++++++--------- C4/Circulation.pm | 16 ++- installer/data/mysql/kohastructure.sql | 2 + installer/data/mysql/updatedatabase.pl | 7 ++ .../prog/en/modules/members/boraccount.tt | 6 +- .../prog/en/modules/members/pay.tt | 1 + .../prog/en/modules/members/paycollect.tt | 2 + members/boraccount.pl | 2 +- members/pay.pl | 47 +++++++- members/paycollect.pl | 8 +- members/printinvoice.pl | 1 + 11 files changed, 129 insertions(+), 77 deletions(-) diff --git a/C4/Accounts.pm b/C4/Accounts.pm index 3606393510..f7adca14b6 100644 --- a/C4/Accounts.pm +++ b/C4/Accounts.pm @@ -72,7 +72,7 @@ patron. Record payment by a patron. C<$borrowernumber> is the patron's borrower number. C<$payment> is a floating-point number, giving the -amount that was paid. +amount that was paid. Amounts owed are paid off oldest first. That is, if the patron has a $1 fine from Feb. 1, another $1 fine from Mar. 1, and makes a payment @@ -115,12 +115,12 @@ sub recordpayment { $newamtos = $accdata->{'amountoutstanding'} - $amountleft; $amountleft = 0; } - my $thisacct = $accdata->{accountno}; + my $thisacct = $accdata->{accountlines_id}; my $usth = $dbh->prepare( "UPDATE accountlines SET amountoutstanding= ? - WHERE (borrowernumber = ?) AND (accountno=?)" + WHERE (accountlines_id = ?)" ); - $usth->execute( $newamtos, $borrowernumber, $thisacct ); + $usth->execute( $newamtos, $thisacct ); $usth->finish; # $usth = $dbh->prepare( # "INSERT INTO accountoffsets @@ -146,7 +146,7 @@ sub recordpayment { =head2 makepayment - &makepayment($borrowernumber, $acctnumber, $amount, $branchcode); + &makepayment($accountlines_id, $borrowernumber, $acctnumber, $amount, $branchcode); Records the fact that a patron has paid off the entire amount he or she owes. @@ -167,7 +167,7 @@ sub makepayment { #here we update both the accountoffsets and the account lines #updated to check, if they are paying off a lost item, we return the item # from their card, and put a note on the item record - my ( $borrowernumber, $accountno, $amount, $user, $branch ) = @_; + my ( $accountlines_id, $borrowernumber, $accountno, $amount, $user, $branch ) = @_; my $dbh = C4::Context->dbh; my $manager_id = 0; $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; @@ -175,10 +175,8 @@ sub makepayment { # begin transaction my $nextaccntno = getnextacctno($borrowernumber); my $newamtos = 0; - my $sth = - $dbh->prepare( - "SELECT * FROM accountlines WHERE borrowernumber=? AND accountno=?"); - $sth->execute( $borrowernumber, $accountno ); + my $sth = $dbh->prepare("SELECT * FROM accountlines WHERE accountlines_id=?"); + $sth->execute( $accountlines_id ); my $data = $sth->fetchrow_hashref; $sth->finish; @@ -187,22 +185,20 @@ sub makepayment { $dbh->prepare( "UPDATE accountlines SET amountoutstanding = 0, description = 'Payment,thanks' - WHERE borrowernumber = ? - AND accountno = ? + WHERE accountlines_id = ? " ); - $udp->execute($borrowernumber, $accountno ); + $udp->execute($accountlines_id); $udp->finish; }else{ my $udp = $dbh->prepare( "UPDATE accountlines SET amountoutstanding = 0 - WHERE borrowernumber = ? - AND accountno = ? + WHERE accountlines_id = ? " ); - $udp->execute($borrowernumber, $accountno ); + $udp->execute($accountlines_id); $udp->finish; # create new line @@ -229,6 +225,11 @@ sub makepayment { if ( $data->{'accounttype'} eq 'Rep' || $data->{'accounttype'} eq 'L' ) { C4::Circulation::ReturnLostItem( $borrowernumber, $data->{'itemnumber'} ); } + my $sthr = $dbh->prepare("SELECT max(accountlines_id) AS lastinsertid FROM accountlines"); + $sthr->execute(); + my $datalastinsertid = $sthr->fetchrow_hashref; + $sthr->finish; + return $datalastinsertid->{'lastinsertid'}; } =head2 getnextacctno @@ -256,18 +257,17 @@ sub getnextacctno ($) { =head2 fixaccounts (removed) - &fixaccounts($borrowernumber, $accountnumber, $amount); + &fixaccounts($accountlines_id, $borrowernumber, $accountnumber, $amount); #' # FIXME - I don't understand what this function does. sub fixaccounts { - my ( $borrowernumber, $accountno, $amount ) = @_; + my ( $accountlines_id, $borrowernumber, $accountno, $amount ) = @_; my $dbh = C4::Context->dbh; my $sth = $dbh->prepare( - "SELECT * FROM accountlines WHERE borrowernumber=? - AND accountno=?" + "SELECT * FROM accountlines WHERE accountlines_id=?" ); - $sth->execute( $borrowernumber, $accountno ); + $sth->execute( $accountlines_id ); my $data = $sth->fetchrow_hashref; # FIXME - Error-checking @@ -279,8 +279,7 @@ sub fixaccounts { UPDATE accountlines SET amount = '$amount', amountoutstanding = '$outstanding' - WHERE borrowernumber = $borrowernumber - AND accountno = $accountno + WHERE accountlines_id = $accountlines_id EOT # FIXME: exceedingly bad form. Use prepare with placholders ("?") in query and execute args. } @@ -460,12 +459,12 @@ sub fixcredit { $newamtos = $accdata->{'amountoutstanding'} - $amountleft; $amountleft = 0; } - my $thisacct = $accdata->{accountno}; + my $thisacct = $accdata->{accountlines_id}; my $usth = $dbh->prepare( "UPDATE accountlines SET amountoutstanding= ? - WHERE (borrowernumber = ?) AND (accountno=?)" + WHERE (accountlines_id = ?)" ); - $usth->execute( $newamtos, $borrowernumber, $thisacct ); + $usth->execute( $newamtos, $thisacct ); $usth->finish; $usth = $dbh->prepare( "INSERT INTO accountoffsets @@ -499,12 +498,12 @@ sub fixcredit { $newamtos = $accdata->{'amountoutstanding'} - $amountleft; $amountleft = 0; } - my $thisacct = $accdata->{accountno}; + my $thisacct = $accdata->{accountlines_id}; my $usth = $dbh->prepare( "UPDATE accountlines SET amountoutstanding= ? - WHERE (borrowernumber = ?) AND (accountno=?)" + WHERE (accountlines_id = ?)" ); - $usth->execute( $newamtos, $borrowernumber, $thisacct ); + $usth->execute( $newamtos, $thisacct ); $usth->finish; $usth = $dbh->prepare( "INSERT INTO accountoffsets @@ -565,12 +564,12 @@ sub refund { } # print $amountleft; - my $thisacct = $accdata->{accountno}; + my $thisacct = $accdata->{accountlines_id}; my $usth = $dbh->prepare( "UPDATE accountlines SET amountoutstanding= ? - WHERE (borrowernumber = ?) AND (accountno=?)" + WHERE (accountlines_id = ?)" ); - $usth->execute( $newamtos, $borrowernumber, $thisacct ); + $usth->execute( $newamtos, $thisacct ); $usth->finish; $usth = $dbh->prepare( "INSERT INTO accountoffsets @@ -603,10 +602,10 @@ sub getcharges { } sub ModNote { - my ( $borrowernumber, $accountno, $note ) = @_; + my ( $accountlines_id, $note ) = @_; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare('UPDATE accountlines SET note = ? WHERE borrowernumber = ? AND accountno = ?'); - $sth->execute( $note, $borrowernumber, $accountno ); + my $sth = $dbh->prepare('UPDATE accountlines SET note = ? WHERE accountlines_id = ?'); + $sth->execute( $note, $accountlines_id ); } sub getcredits { @@ -651,21 +650,21 @@ sub getrefunds { } sub ReversePayment { - my ( $borrowernumber, $accountno ) = @_; - my $dbh = C4::Context->dbh; - - my $sth = $dbh->prepare('SELECT amountoutstanding FROM accountlines WHERE borrowernumber = ? AND accountno = ?'); - $sth->execute( $borrowernumber, $accountno ); - my $row = $sth->fetchrow_hashref(); - my $amount_outstanding = $row->{'amountoutstanding'}; - - if ( $amount_outstanding <= 0 ) { - $sth = $dbh->prepare('UPDATE accountlines SET amountoutstanding = amount * -1, description = CONCAT( description, " Reversed -" ) WHERE borrowernumber = ? AND accountno = ?'); - $sth->execute( $borrowernumber, $accountno ); - } else { - $sth = $dbh->prepare('UPDATE accountlines SET amountoutstanding = 0, description = CONCAT( description, " Reversed -" ) WHERE borrowernumber = ? AND accountno = ?'); - $sth->execute( $borrowernumber, $accountno ); - } + my ( $accountlines_id ) = @_; + my $dbh = C4::Context->dbh; + + my $sth = $dbh->prepare('SELECT amountoutstanding FROM accountlines WHERE accountlines_id = ?'); + $sth->execute( $accountlines_id ); + my $row = $sth->fetchrow_hashref(); + my $amount_outstanding = $row->{'amountoutstanding'}; + + if ( $amount_outstanding <= 0 ) { + $sth = $dbh->prepare('UPDATE accountlines SET amountoutstanding = amount * -1, description = CONCAT( description, " Reversed -" ) WHERE accountlines_id = ?'); + $sth->execute( $accountlines_id ); + } else { + $sth = $dbh->prepare('UPDATE accountlines SET amountoutstanding = 0, description = CONCAT( description, " Reversed -" ) WHERE accountlines_id = ?'); + $sth->execute( $accountlines_id ); + } } =head2 recordpayment_selectaccts @@ -709,7 +708,7 @@ sub recordpayment_selectaccts { # offset transactions my $sth = $dbh->prepare('UPDATE accountlines SET amountoutstanding= ? ' . - 'WHERE (borrowernumber = ?) AND (accountno=?)'); + 'WHERE accountlines_id=?'); for my $accdata ( @{$rows} ) { if ($amountleft == 0) { last; @@ -722,8 +721,8 @@ sub recordpayment_selectaccts { $newamtos = $accdata->{amountoutstanding} - $amountleft; $amountleft = 0; } - my $thisacct = $accdata->{accountno}; - $sth->execute( $newamtos, $borrowernumber, $thisacct ); + my $thisacct = $accdata->{accountlines_id}; + $sth->execute( $newamtos, $thisacct ); } # create new line @@ -738,7 +737,7 @@ sub recordpayment_selectaccts { # makepayment needs to be fixed to handle partials till then this separate subroutine # fills in sub makepartialpayment { - my ( $borrowernumber, $accountno, $amount, $user, $branch ) = @_; + my ( $accountlines_id, $borrowernumber, $accountno, $amount, $user, $branch ) = @_; my $manager_id = 0; $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; if (!$amount || $amount < 0) { @@ -750,12 +749,11 @@ sub makepartialpayment { my $newamtos = 0; my $data = $dbh->selectrow_hashref( - 'SELECT * FROM accountlines WHERE borrowernumber=? AND accountno=?',undef,$borrowernumber,$accountno); + 'SELECT * FROM accountlines WHERE accountlines_id=?',undef,$accountlines_id); my $new_outstanding = $data->{amountoutstanding} - $amount; - my $update = 'UPDATE accountlines SET amountoutstanding = ? WHERE borrowernumber = ? ' - . ' AND accountno = ?'; - $dbh->do( $update, undef, $new_outstanding, $borrowernumber, $accountno); + my $update = 'UPDATE accountlines SET amountoutstanding = ? WHERE accountlines_id = ? '; + $dbh->do( $update, undef, $new_outstanding, $accountlines_id); # create new line my $insert = 'INSERT INTO accountlines (borrowernumber, accountno, date, amount, ' diff --git a/C4/Circulation.pm b/C4/Circulation.pm index e64f07d79e..bfd34d85b1 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1953,7 +1953,7 @@ sub _FixOverduesOnReturn { return 0 unless $data; # no warning, there's just nothing to fix my $uquery; - my @bind = ($borrowernumber, $item, $data->{'accountno'}); + my @bind = ($data->{'accountlines_id'}); if ($exemptfine) { $uquery = "update accountlines set accounttype='FFOR', amountoutstanding=0"; if (C4::Context->preference("FinesLog")) { @@ -1973,7 +1973,7 @@ sub _FixOverduesOnReturn { } else { $uquery = "update accountlines set accounttype='F' "; } - $uquery .= " where (borrowernumber = ?) and (itemnumber = ?) and (accountno = ?)"; + $uquery .= " where (accountlines_id = ?)"; my $usth = $dbh->prepare($uquery); return $usth->execute(@bind); } @@ -2016,9 +2016,8 @@ sub _FixAccountForLostAndReturned { $amountleft = $data->{'amountoutstanding'} - $amount; # Um, isn't this the same as ZERO? We just tested those two things are == } my $usth = $dbh->prepare("UPDATE accountlines SET accounttype = 'LR',amountoutstanding='0' - WHERE (borrowernumber = ?) - AND (itemnumber = ?) AND (accountno = ?) "); - $usth->execute($data->{'borrowernumber'},$itemnumber,$acctno); # We might be adjusting an account for some OTHER borrowernumber now. Not the one we passed in. + WHERE (accountlines_id = ?)"); + $usth->execute($data->{'accountlines_id'}); # We might be adjusting an account for some OTHER borrowernumber now. Not the one we passed in. #check if any credit is left if so writeoff other accounts my $nextaccntno = getnextacctno($data->{'borrowernumber'}); $amountleft *= -1 if ($amountleft < 0); @@ -2037,12 +2036,11 @@ sub _FixAccountForLostAndReturned { $newamtos = $accdata->{'amountoutstanding'} - $amountleft; $amountleft = 0; } - my $thisacct = $accdata->{'accountno'}; + my $thisacct = $accdata->{'accountlines_id'}; # FIXME: move prepares outside while loop! my $usth = $dbh->prepare("UPDATE accountlines SET amountoutstanding= ? - WHERE (borrowernumber = ?) - AND (accountno=?)"); - $usth->execute($newamtos,$data->{'borrowernumber'},'$thisacct'); # FIXME: '$thisacct' is a string literal! + WHERE (accountlines_id = ?)"); + $usth->execute($newamtos,'$thisacct'); # FIXME: '$thisacct' is a string literal! $usth = $dbh->prepare("INSERT INTO accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) VALUES diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index f274f5dd55..688c65ca1f 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -2466,6 +2466,7 @@ CREATE TABLE `messages` ( -- circulation messages left via the patron's check ou DROP TABLE IF EXISTS `accountlines`; CREATE TABLE `accountlines` ( + `accountlines_id` int(11) NOT NULL AUTO_INCREMENT, `borrowernumber` int(11) NOT NULL default 0, `accountno` smallint(6) NOT NULL default 0, `itemnumber` int(11) default NULL, @@ -2481,6 +2482,7 @@ CREATE TABLE `accountlines` ( `notify_level` int(2) NOT NULL default 0, `note` text NULL default NULL, `manager_id` int(11) NULL, + PRIMARY KEY (`accountlines_id`), KEY `acctsborridx` (`borrowernumber`), KEY `timeidx` (`timestamp`), KEY `itemnumber` (`itemnumber`), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 7e8e8c2fbd..b26c769412 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -5788,6 +5788,13 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.09.00.046"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE `accountlines` ADD `accountlines_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;"); + print "Upgrade to $DBversion done (adding accountlines_id field in accountlines table)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt index 5b5d581f57..727430a6f3 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt @@ -51,7 +51,7 @@ [% IF ( reverse_col ) %] [% IF ( account.payment ) %] - Reverse + Reverse [% ELSE %]   [% END %] @@ -59,9 +59,9 @@ [% END %] [% IF ( account.payment ) %] - Print + Print [% ELSE %] - Print + Print [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt index 4c1b36259a..2780c3f3da 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt @@ -73,6 +73,7 @@ + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt index 3461e8af46..c558b0816a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt @@ -102,6 +102,7 @@ function moneyFormat(textObj) { +
@@ -157,6 +158,7 @@ function moneyFormat(textObj) { + diff --git a/members/boraccount.pl b/members/boraccount.pl index 44db953da5..eebc8d3a44 100755 --- a/members/boraccount.pl +++ b/members/boraccount.pl @@ -53,7 +53,7 @@ my $action = $input->param('action') || ''; my $data=GetMember('borrowernumber' => $borrowernumber); if ( $action eq 'reverse' ) { - ReversePayment( $borrowernumber, $input->param('accountno') ); + ReversePayment( $input->param('accountlines_id') ); } if ( $data->{'category_type'} eq 'C') { diff --git a/members/pay.pl b/members/pay.pl index 8f5233cbf5..7580daff50 100755 --- a/members/pay.pl +++ b/members/pay.pl @@ -42,6 +42,8 @@ use C4::Branch; use C4::Members::Attributes qw(GetBorrowerAttributes); our $input = CGI->new; +our $writeoff_sth; +our $add_writeoff_sth; our ( $template, $loggedinuser, $cookie ) = get_template_and_user( { template_name => 'members/pay.tmpl', @@ -83,11 +85,11 @@ my $writeoff_all = $input->param('woall'); # writeoff all fines if ($writeoff_all) { writeoff_all(@names); } elsif ($writeoff_item) { - my $accountno = $input->param('accountno'); + my $accountlines_id = $input->param('accountlines_id'); my $itemno = $input->param('itemnumber'); my $account_type = $input->param('accounttype'); my $amount = $input->param('amountoutstanding'); - WriteOffFee( $borrowernumber, $accountno, $itemno, $account_type, $amount, $branch ); + WriteOffFee( $borrowernumber, $accountlines_id, $itemno, $account_type, $amount, $branch ); } for (@names) { @@ -106,6 +108,23 @@ add_accounts_to_template(); output_html_with_http_headers $input, $cookie, $template->output; +sub writeoff { + my ( $accountlines_id, $itemnum, $accounttype, $amount ) = @_; + my $manager_id = 0; + $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; + + # if no item is attached to fine, make sure to store it as a NULL + $itemnum ||= undef; + get_writeoff_sth(); + $writeoff_sth->execute( $accountlines_id ); + + my $acct = getnextacctno($borrowernumber); + $add_writeoff_sth->execute( $borrowernumber, $acct, $itemnum, $amount, $manager_id ); + + UpdateStats( $branch, 'writeoff', $amount, q{}, q{}, q{}, $borrowernumber ); + + return; +} sub add_accounts_to_template { @@ -167,6 +186,7 @@ sub redirect_to_paycollect { $redirect .= get_for_redirect( 'itemnumber', "itemnumber$line_no", 0 ); $redirect .= get_for_redirect( 'notify_id', "notify_id$line_no", 0 ); $redirect .= get_for_redirect( 'notify_level', "notify_level$line_no", 0 ); + $redirect .= get_for_redirect( 'accountlines_id', "accountlines_id$line_no", 0 ); $redirect .= '&remote_user='; $redirect .= $user; return print $input->redirect($redirect); @@ -184,7 +204,8 @@ sub writeoff_all { my $itemno = $input->param("itemnumber$value"); my $amount = $input->param("amountoutstanding$value"); my $accountno = $input->param("accountno$value"); - WriteOffFee( $borrowernumber, $accountno, $itemno, $accounttype, $amount, $branch ); + my $accountlines_id = $input->param("accountlines_id$value"); + WriteOffFee( $borrowernumber, $accountlines_id, $itemno, $accounttype, $amount, $branch ); } } @@ -250,3 +271,23 @@ sub payselected { print $input->redirect($redirect); return; } + +sub get_writeoff_sth { + + # lets prepare these statement handles only once + if ($writeoff_sth) { + return; + } else { + my $dbh = C4::Context->dbh; + + # Do we need to validate accounttype + my $sql = 'Update accountlines set amountoutstanding=0 ' + . 'WHERE accountlines_id=?'; + $writeoff_sth = $dbh->prepare($sql); + my $insert = +q{insert into accountlines (borrowernumber,accountno,itemnumber,date,amount,description,accounttype,manager_id)} + . q{values (?,?,?,now(),?,'Writeoff','W',?)}; + $add_writeoff_sth = $dbh->prepare($insert); + } + return; +} diff --git a/members/paycollect.pl b/members/paycollect.pl index 7dfb622393..5a732a9c9e 100755 --- a/members/paycollect.pl +++ b/members/paycollect.pl @@ -56,7 +56,7 @@ my $writeoff = $input->param('writeoff_individual'); my $select_lines = $input->param('selected'); my $select = $input->param('selected_accts'); my $accountno; - +my $accountlines_id; if ( $individual || $writeoff ) { if ($individual) { $template->param( pay_individual => 1 ); @@ -64,6 +64,7 @@ if ( $individual || $writeoff ) { $template->param( writeoff_individual => 1 ); } my $accounttype = $input->param('accounttype'); + $accountlines_id = $input->param('accountlines_id'); my $amount = $input->param('amount'); my $amountoutstanding = $input->param('amountoutstanding'); $accountno = $input->param('accountno'); @@ -75,6 +76,7 @@ if ( $individual || $writeoff ) { $total_due = $amountoutstanding; $template->param( accounttype => $accounttype, + accountlines_id => $accountlines_id, accountno => $accountno, amount => $amount, amountoutstanding => $amountoutstanding, @@ -101,10 +103,10 @@ if ( $total_paid and $total_paid ne '0.00' ) { } else { if ($individual) { if ( $total_paid == $total_due ) { - makepayment( $borrowernumber, $accountno, $total_paid, $user, + makepayment( $accountlines_id, $borrowernumber, $accountno, $total_paid, $user, $branch ); } else { - makepartialpayment( $borrowernumber, $accountno, $total_paid, + makepartialpayment( $accountlines_id, $borrowernumber, $accountno, $total_paid, $user, $branch ); } print $input->redirect( diff --git a/members/printinvoice.pl b/members/printinvoice.pl index 039132f1ba..3e04fccd44 100755 --- a/members/printinvoice.pl +++ b/members/printinvoice.pl @@ -48,6 +48,7 @@ my ($template, $loggedinuser, $cookie) my $borrowernumber=$input->param('borrowernumber'); my $action = $input->param('action') || ''; my $accountno = $input->param('accountno'); +my $accountlines_id = $input->param('accountlines_id'); #get borrower details my $data=GetMember('borrowernumber' => $borrowernumber); -- 2.39.5