4 #script to display reports
7 # Copyright 2000-2002 Katipo Communications
9 # This file is part of Koha.
11 # Koha is free software; you can redistribute it and/or modify it under the
12 # terms of the GNU General Public License as published by the Free Software
13 # Foundation; either version 2 of the License, or (at your option) any later
16 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
17 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
18 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20 # You should have received a copy of the GNU General Public License along with
21 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
22 # Suite 330, Boston, MA 02111-1307 USA
24 use CGI qw/:standard/;
27 use C4::Circulation::Circ2;
32 my $time=$input->param('time');
33 #print $input->header;
36 my $branches=getbranches(\%env);
37 my $printers=getprinters(\%env);
38 my $branch=$input->param('branch');
39 my $printer=$input->param('printer');
40 ($branch) || ($branch=$input->cookie('branch'));
41 ($printer) || ($printer=$input->cookie('printer'));
42 my ($oldbranch, $oldprinter);
43 if ($input->param('selectnewbranchprinter')) {
49 $env{'branchcode'}=$branch;
50 $env{'printer'}=$printer;
51 #$env{'queue'}=$printer;
56 foreach (keys %$branches) {
61 ($selected='selected') if ($_ eq $oldbranch);
62 ($selected='selected') if ($_ eq $branch);
63 $branchoptions.="<option value=$_ $selected>$branches->{$_}->{'branchname'}\n";
65 foreach (keys %$printers) {
69 ($selected='selected') if ($_ eq $oldprinter || $_ eq $printer);
70 $printeroptions.="<option value=$_ $selected>$printers->{$_}->{'printername'}\n";
72 if ($printercount==1) {
73 ($printer)=keys %$printers;
75 if ($branchcount==1) {
76 ($branch)=keys %$branches;
82 if ($branch && $printer) {
83 $branchname=$branches->{$branch}->{'branchname'};
84 $printername=$printers->{$printer}->{'printername'};
88 my $branchcookie=$input->cookie(-name=>'branch', -value=>"$branch", -expires=>'+1y', -path=>'/cgi-bin/koha/');
89 my $printercookie=$input->cookie(-name=>'printer', -value=>"$printer", -expires=>'+1y', -path=>'/cgi-bin/koha/');
91 print $input->header(-type=>'text/html',-expires=>'now', -cookie=>[$branchcookie,$printercookie]);
93 unless ($input->param('printable')) {
94 print startmenu('report');
100 my $type=$input->param('type');
101 my $groups=getgroups();
102 if ($input->param('print')) {
103 if ($input->param('groupsselected')) {
104 foreach ($input->param()) {
107 printgroup($group,$input->param('type'));
111 print "<h2>Select the groups to print</h2>\n";
112 print "<form method=post>\n";
113 print "<input type=hidden name=print value=1>\n";
114 print "<input type=hidden name=groupsselected value=1>\n";
115 print "<table border=0><tr><td bgcolor=#dddddd>\n";
116 print "<table border=1 cellspacing=5 cellpadding=10><tr>\n";
118 foreach (sort {$groups->{$a} cmp $groups->{$b}} keys %$groups) {
119 (next) unless ($groups->{$_});
126 <td><input type=checkbox name=print_$_ value=0> $groups->{$_}
136 <select name=printer>
140 <input type=radio name=type value=issues> Issues <input type=radio name=type value=overdues checked> Overdues
142 <input type=submit value=Print>
148 if (my $group=$input->param('group')) {
149 print "<a href=groups.pl?type=$type>Back to group list</a><p>\n";
150 if ($input->param('printable')) {
151 print "<head><title>Overdue list for $groups->{$group}</title></head><body>\n";
153 my $members=groupmembers($env, $group);
154 print "<table border=0><tr><td bgcolor=#dddddd>\n";
155 print "<table border=1 cellspacing=5 cellpadding=10>\n";
157 ($type eq 'overdues') ? ($typetext="Overdues") : ($typetext="Issues");
158 print "<thead><tr><th>Card #</th><th>Name</th><th>IS/OD</th><th>$typetext</th></tr></thead>\n";
159 foreach (sort { $a->{'surname'}." ".$a->{'firstname'} cmp $b->{'surname'}." ".$b->{'firstname'} } @$members) {
160 my $fullname=$_->{'firstname'}." ".$_->{'surname'};
161 my $userid=$_->{'userid'};
162 my $cardnumber=$_->{'cardnumber'};
163 my $currentissues=$_->{'currentissues'};
165 my $overduecounter=0;
167 foreach (keys %$currentissues) {
169 if ($currentissues->{$_}->{'overdue'}) {
171 $title=$currentissues->{$_}->{'title'};
172 $author=$currentissues->{$_}->{'author'};
173 $date_due=$currentissues->{$_}->{'date_due'};
174 $overduelist.="<u>$title</u> by $author (<font color=red>$date_due</font>)<br>\n";
176 if ($type eq 'issues') {
177 $title=$currentissues->{$_}->{'title'};
178 $author=$currentissues->{$_}->{'author'};
179 $date_due=$currentissues->{$_}->{'date_due'};
180 $overduelist.="<u>$title</u> by $author due on $date_due<br>\n";
185 if ($overduecounter) {
186 $overduetext="<font color=red>$overduecounter</font>";
188 (next) unless ($overduecounter || $counter);
189 if ($overduecounter==0 && $type eq 'overdues') {
192 print "<tr><td align=center>$cardnumber</td><td>$fullname</td><td align=center>$counter/$overduetext</td><td>$overduelist</td></tr>\n";
195 print "</td></tr></table>\n";
197 print "<a href=groups.pl?print=1>Print Reports</a><p>\n";
198 print "<h2>Pick a group</h2>\n";
199 print "<table border=0><tr><td bgcolor=#dddddd>\n";
200 print "<table border=1 cellspacing=5 cellpadding=10><tr>\n";
202 foreach (sort {$groups->{$a} cmp $groups->{$b}} keys %$groups) {
203 (next) unless ($groups->{$_});
210 <td align=center>$groups->{$_}
212 <a href=groups.pl?type=issues&group=$_>Issues</a> | <a href=groups.pl?type=overdues&group=$_>Overdues</a>
217 print "</tr></table>\n";
218 print "</td></tr></table>\n";
222 unless ($input->param('printable')) {
223 print endmenu('report');
232 $output= "<head><title>Overdue list for $groups->{$group}</title></head><body><center>\n";
233 my $members=groupmembers($env, $group);
234 ($type eq 'overdues') && ($output.="<img src=/usr/local/koha/librarian/htdocs/images/overdues.jpg><br>\n");
235 $output.= "<table border=1 cellspacing=5 cellpadding=10>\n";
237 ($type eq 'overdues') ? ($typetext="Overdues") : ($typetext="Issues");
238 $output.= "<thead><tr><th>Card #</th><th>Name</th><th>IS/OD</th><th>$typetext</th></tr></thead>\n";
239 foreach (sort { $a->{'surname'}." ".$a->{'firstname'} cmp $b->{'surname'}." ".$b->{'firstname'} } @$members) {
240 my $fullname=$_->{'firstname'}." ".$_->{'surname'};
241 my $userid=$_->{'userid'};
242 my $cardnumber=$_->{'cardnumber'};
243 my $currentissues=$_->{'currentissues'};
245 my $overduecounter=0;
247 foreach (keys %$currentissues) {
249 if ($currentissues->{$_}->{'overdue'}) {
251 $title=$currentissues->{$_}->{'title'};
252 $author=$currentissues->{$_}->{'author'};
253 $date_due=$currentissues->{$_}->{'date_due'};
254 $overduelist.="<u>$title</u> by $author (<font color=red>$date_due</font>)<br>\n";
256 if ($type eq 'issues') {
257 $title=$currentissues->{$_}->{'title'};
258 $author=$currentissues->{$_}->{'author'};
259 $date_due=$currentissues->{$_}->{'date_due'};
260 $overduelist.="<u>$title</u> by $author due on $date_due<br>\n";
265 if ($overduecounter) {
266 $overduetext="<font color=red>$overduecounter</font>";
268 (next) unless ($overduecounter || $counter);
269 if ($overduecounter==0 && $type eq 'overdues') {
272 $output.= "<tr><td align=center>$cardnumber</td><td>$fullname</td><td align=center>$counter/$overduetext</td><td>$overduelist</td></tr>\n";
274 $output.= "</table>\n";
275 $output.= "</td></tr></table>\n";
276 open (P, "|html2ps | lpr -P$printer");