#!/usr/bin/perl #wrriten 11/1/2000 by chris@katipo.oc.nz #part of the koha library system, script to facilitate paying off fines use strict; use C4::Output; use CGI; use C4::Search; use C4::Accounts2; use C4::Database; use C4::Stats; my $input=new CGI; #print $input->header; my $bornum=$input->param('bornum'); if ($bornum eq ''){ $bornum=$input->param('bornum0'); } #get borrower details my $data=borrdata('',$bornum); my $user=$input->remote_user; #get account details my %bor; $bor{'borrowernumber'}=$bornum; my @names=$input->param; my %inp; my $check=0; for (my $i=0;$i<@names;$i++){ my$temp=$input->param($names[$i]); if ($temp eq 'wo'){ $inp{$names[$i]}=$temp; $check=1; } if ($temp eq 'yes'){ $user=~ s/Levin/C/i; $user=~ s/Foxton/F/i; $user=~ s/Shannon/S/i; my $amount=$input->param($names[$i+4]); my $bornum=$input->param($names[$i+5]); my $accountno=$input->param($names[$i+6]); makepayment($bornum,$accountno,$amount,$user); $check=2; } } my %env; $user=~ s/Levin/C/i; $user=~ s/Foxton/F/i; $user=~ s/Shannon/S/i; $env{'branchcode'}=$user; my $total=$input->param('total'); if ($check ==0){ print $input->header; if ($total ne ''){ recordpayment(\%env,$bornum,$total); } my ($numaccts,$accts,$total)=getboracctrecord('',\%bor); print startpage(); print startmenu('member'); print <Pay Fines for $data->{'firstname'} $data->{'surname'}

printend ; for (my $i=0;$i<$numaccts;$i++){ if ($accts->[$i]{'amountoutstanding'} > 0){ $accts->[$i]{'amount'}+=0.00; $accts->[$i]{'amountoutstanding'}+=0.00; print < printend ; } } print <
FINES & CHARGES AMOUNT OWING
Unpaid Pay Writeoff [$i]{'itemnumber'}> [$i]{'accounttype'}> [$i]{'amount'}> [$i]{'amountoutstanding'}> [$i]{'accountno'}> $accts->[$i]{'description'} $accts->[$i]{'title'} $accts->[$i]{'accounttype'} $accts->[$i]{'amount'} $accts->[$i]{'amountoutstanding'}
Total Due $total

 

printend ; print endmenu('member'); print endpage(); } else { # my $quety=$input->query_string; # print $input->redirect("/cgi-bin/koha/sec/writeoff.pl?$quety"); my%inp; my @name=$input->param; for (my $i=0;$i<@name;$i++){ my $test=$input->param($name[$i]); if ($test eq 'wo'){ my $temp=$name[$i]; $temp=~ s/payfine//; $inp{$name[$i]}=$temp; } } my $bornum; while ( my ($key, $value) = each %inp){ # print $key,$value; my $accounttype=$input->param("accounttype$value"); $bornum=$input->param("bornum$value"); my $itemno=$input->param("itemnumber$value"); my $amount=$input->param("amount$value"); if ($accounttype eq 'Res'){ my $accountno=$input->param("accountno$value"); writeoff($bornum,$accountno,$itemno,$accounttype,$amount); } else { writeoff($bornum,'',$itemno,$accounttype,$amount); } } $bornum=$input->param('bornum'); print $input->redirect("/cgi-bin/koha/pay.pl?bornum=$bornum"); } sub writeoff{ my ($bornum,$accountnum,$itemnum,$accounttype,$amount)=@_; my $user=$input->remote_user; $user=~ s/Levin/C/; $user=~ s/Foxton/F/; $user=~ s/Shannon/S/; my $dbh=C4Connect; my $env; my $query="Update accountlines set amountoutstanding=0 where "; if ($accounttype eq 'Res'){ $query.="accounttype='Res' and accountno='$accountnum' and borrowernumber='$bornum'"; } else { $query.="accounttype='$accounttype' and itemnumber='$itemnum' and borrowernumber='$bornum'"; } my $sth=$dbh->prepare($query); # print $query; $sth->execute; $sth->finish; $query="select max(accountno) from accountlines"; $sth=$dbh->prepare($query); $sth->execute; my $account=$sth->fetchrow_hashref; $sth->finish; $account->{'max(accountno)'}++; $query="insert into accountlines (borrowernumber,accountno,itemnumber,date,amount,description,accounttype) values ('$bornum','$account->{'max(accountno)'}','$itemnum',now(),'$amount','Writeoff','W')"; $sth=$dbh->prepare($query); $sth->execute; $sth->finish; # print $query; $dbh->disconnect; UpdateStats($env,$user,'writeoff',$amount,'','','',$bornum); }