Committed on behalf of Mike
[koha.git] / pay.pl
1 #!/usr/bin/perl
2
3 #wrriten 11/1/2000 by chris@katipo.oc.nz
4 #part of the koha library system, script to facilitate paying off fines
5
6 use strict;
7 use C4::Output;
8 use CGI;
9 use C4::Search;
10 use C4::Accounts2;
11
12 use C4::Database;
13 use C4::Stats;
14 my $input=new CGI;
15
16 #print $input->header;
17 my $bornum=$input->param('bornum');
18 if ($bornum eq ''){
19   $bornum=$input->param('bornum0');
20 }
21 #get borrower details
22 my $data=borrdata('',$bornum);
23 my $user=$input->remote_user;
24
25 #get account details
26 my %bor;
27 $bor{'borrowernumber'}=$bornum;                            
28
29
30 my @names=$input->param;
31 my %inp;
32 my $check=0;
33 for (my $i=0;$i<@names;$i++){
34   my$temp=$input->param($names[$i]);
35   if ($temp eq 'wo'){
36     $inp{$names[$i]}=$temp;
37     $check=1;
38   }
39   if ($temp eq 'yes'){
40     $user=~ s/Levin/C/i;
41     $user=~ s/Foxton/F/i;
42     $user=~ s/Shannon/S/i;
43     my $amount=$input->param($names[$i+4]);
44     my $bornum=$input->param($names[$i+5]);
45     my $accountno=$input->param($names[$i+6]);
46     makepayment($bornum,$accountno,$amount,$user);
47     $check=2;
48   }
49 }
50 my %env;
51     $user=~ s/Levin/C/i;
52     $user=~ s/Foxton/F/i;
53     $user=~ s/Shannon/S/i;
54
55 $env{'branchcode'}=$user;
56 my $total=$input->param('total');
57 if ($check ==0){
58   print $input->header;
59   if ($total ne ''){
60     recordpayment(\%env,$bornum,$total);
61   }
62   my ($numaccts,$accts,$total)=getboracctrecord('',\%bor);     
63
64   print startpage();
65   print startmenu('member');
66   print <<printend
67   <FONT SIZE=6><em>Pay Fines for $data->{'firstname'} $data->{'surname'}</em></FONT><P>
68   <center>
69   <p>
70   <TABLE  CELLSPACING=0  CELLPADDING=5 border=1 >
71   <TR VALIGN=TOP>
72   <td  bgcolor="99cc33" background="/images/background-mem.gif" colspan=4><B>FINES & CHARGES</TD>
73   <td  bgcolor="99cc33" background="/images/background-mem.gif" colspan=4><B>AMOUNT OWING</TD>
74   </TR>
75   <form action=/cgi-bin/koha/pay.pl method=post>
76   <input type=hidden name=bornum value=$bornum>
77 printend
78 ;
79   for (my $i=0;$i<$numaccts;$i++){
80     if ($accts->[$i]{'amountoutstanding'} > 0){
81       $accts->[$i]{'amount'}+=0.00;
82       $accts->[$i]{'amountoutstanding'}+=0.00;
83       print <<printend
84       <tr VALIGN=TOP  >
85       <TD><input type=radio name=payfine$i value=no checked>Unpaid
86       <input type=radio name=payfine$i value=yes>Pay
87       <input type=radio name=payfine$i value=wo>Writeoff
88       <input type=hidden name=itemnumber$i value=$accts->[$i]{'itemnumber'}>
89       <input type=hidden name=accounttype$i value=$accts->[$i]{'accounttype'}>
90       <input type=hidden name=amount$i value=$accts->[$i]{'amount'}>
91       <input type=hidden name=out$i value=$accts->[$i]{'amountoutstanding'}>
92       <input type=hidden name=bornum$i value=$bornum>
93       <input type=hidden name=accountno$i value=$accts->[$i]{'accountno'}>
94       </td>
95       <TD>$accts->[$i]{'description'} $accts->[$i]{'title'}</td>
96       <TD>$accts->[$i]{'accounttype'}</td>
97       <td>$accts->[$i]{'amount'}</td>
98       <TD>$accts->[$i]{'amountoutstanding'}</td>
99
100       </tr>
101 printend
102 ;
103     }
104   }
105   print <<printend
106   <tr VALIGN=TOP  >
107   <TD></td>
108   <TD colspan=2><b>Total Due</b></td>
109   <TD><b>$total</b></td>
110   </tr>
111   <tr VALIGN=TOP  >
112   <TD colspan=5 align=right>
113   <INPUT TYPE="image" name="submit"  VALUE="pay" height=42  WIDTH=187 BORDER=0 src="/images/pay-fines.gif"></td>
114   </tr>
115   </form>
116   </table>
117   <br clear=all>
118   <p> &nbsp; </p>
119
120 printend
121 ;
122   print endmenu('member');
123   print endpage();
124
125 } else {
126 #  my $quety=$input->query_string;
127 #  print $input->redirect("/cgi-bin/koha/sec/writeoff.pl?$quety");
128     my%inp;    
129     my @name=$input->param;
130     for (my $i=0;$i<@name;$i++){
131         my $test=$input->param($name[$i]);
132         if ($test eq 'wo'){
133             my $temp=$name[$i];
134             $temp=~ s/payfine//;
135             $inp{$name[$i]}=$temp;
136         }
137     }
138     my $bornum;
139     while ( my ($key, $value) = each %inp){
140         #  print $key,$value;
141         my $accounttype=$input->param("accounttype$value");
142         $bornum=$input->param("bornum$value");
143         my $itemno=$input->param("itemnumber$value");
144         my $amount=$input->param("amount$value");
145         if ($accounttype eq 'Res'){
146             my $accountno=$input->param("accountno$value");
147             writeoff($bornum,$accountno,$itemno,$accounttype,$amount);
148         } else {
149             writeoff($bornum,'',$itemno,$accounttype,$amount);
150         }
151     }
152     $bornum=$input->param('bornum');
153     print $input->redirect("/cgi-bin/koha/pay.pl?bornum=$bornum");
154 }
155
156
157 sub writeoff{
158     my ($bornum,$accountnum,$itemnum,$accounttype,$amount)=@_;
159     my $user=$input->remote_user;
160     $user=~ s/Levin/C/;
161     $user=~ s/Foxton/F/;
162     $user=~ s/Shannon/S/;
163     my $dbh=C4Connect;
164     my $env;
165     my $query="Update accountlines set amountoutstanding=0 where ";
166     if ($accounttype eq 'Res'){
167         $query.="accounttype='Res' and accountno='$accountnum' and borrowernumber='$bornum'";
168     } else {
169         $query.="accounttype='$accounttype' and itemnumber='$itemnum' and borrowernumber='$bornum'";
170     }
171     my $sth=$dbh->prepare($query);
172     #  print $query;
173     $sth->execute;
174     $sth->finish;
175     $query="select max(accountno) from accountlines";
176     $sth=$dbh->prepare($query);
177     $sth->execute;
178     my $account=$sth->fetchrow_hashref;
179     $sth->finish;
180     $account->{'max(accountno)'}++;
181     $query="insert into accountlines (borrowernumber,accountno,itemnumber,date,amount,description,accounttype)
182     values ('$bornum','$account->{'max(accountno)'}','$itemnum',now(),'$amount','Writeoff','W')";
183     $sth=$dbh->prepare($query);
184     $sth->execute;
185     $sth->finish;
186 #  print $query;
187     $dbh->disconnect;
188     UpdateStats($env,$user,'writeoff',$amount,'','','',$bornum);
189 }