X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=members%2Fpay.pl;h=7580daff50f18e4197ddc48d40ee48ef78509887;hb=ea1aa7a0d906d583375618e37be60e9f0d62d939;hp=8f5233cbf55baab4a834221f92e7818f6c5424e9;hpb=ef038b258ebfef315cea06bcf27d92eada86e9d7;p=koha_fer 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; +}