6 #script to display reports
9 # Copyright 2000-2002 Katipo Communications
11 # This file is part of Koha.
13 # Koha is free software; you can redistribute it and/or modify it under the
14 # terms of the GNU General Public License as published by the Free Software
15 # Foundation; either version 2 of the License, or (at your option) any later
18 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
19 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
20 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
22 # You should have received a copy of the GNU General Public License along with
23 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
24 # Suite 330, Boston, MA 02111-1307 USA
26 use CGI qw/:standard/;
29 use C4::Circulation::Circ2;
34 my $time=$input->param('time');
35 #print $input->header;
38 my $branches=getbranches(\%env);
39 my $printers=getprinters(\%env);
40 my $branch=$input->param('branch');
41 my $printer=$input->param('printer');
42 ($branch) || ($branch=$input->cookie('branch'));
43 ($printer) || ($printer=$input->cookie('printer'));
44 my ($oldbranch, $oldprinter);
45 if ($input->param('selectnewbranchprinter')) {
51 $env{'branchcode'}=$branch;
52 $env{'printer'}=$printer;
53 #$env{'queue'}=$printer;
58 foreach (keys %$branches) {
63 ($selected='selected') if ($_ eq $oldbranch);
64 ($selected='selected') if ($_ eq $branch);
65 $branchoptions.="<option value=$_ $selected>$branches->{$_}->{'branchname'}\n";
67 foreach (keys %$printers) {
71 ($selected='selected') if ($_ eq $oldprinter || $_ eq $printer);
72 $printeroptions.="<option value=$_ $selected>$printers->{$_}->{'printername'}\n";
74 if ($printercount==1) {
75 ($printer)=keys %$printers;
77 if ($branchcount==1) {
78 ($branch)=keys %$branches;
84 if ($branch && $printer) {
85 $branchname=$branches->{$branch}->{'branchname'};
86 $printername=$printers->{$printer}->{'printername'};
90 my $branchcookie=$input->cookie(-name=>'branch', -value=>"$branch", -expires=>'+1y', -path=>'/cgi-bin/koha/');
91 my $printercookie=$input->cookie(-name=>'printer', -value=>"$printer", -expires=>'+1y', -path=>'/cgi-bin/koha/');
93 print $input->header(-type=>'text/html',-expires=>'now', -cookie=>[$branchcookie,$printercookie]);
95 unless ($input->param('printable')) {
96 print startmenu('report');
102 my $type=$input->param('type');
103 my $groups=getgroups();
104 if ($input->param('print')) {
105 if ($input->param('groupsselected')) {
106 foreach ($input->param()) {
109 printgroup($group,$input->param('type'));
113 print "<h2>Select the groups to print</h2>\n";
114 print "<form method=post>\n";
115 print "<input type=hidden name=print value=1>\n";
116 print "<input type=hidden name=groupsselected value=1>\n";
117 print "<table border=0><tr><td bgcolor=#dddddd>\n";
118 print "<table border=1 cellspacing=5 cellpadding=10><tr>\n";
120 foreach (sort {$groups->{$a} cmp $groups->{$b}} keys %$groups) {
121 (next) unless ($groups->{$_});
128 <td><input type=checkbox name=print_$_ value=0> $groups->{$_}
138 <select name=printer>
142 <input type=radio name=type value=issues> Issues <input type=radio name=type value=overdues checked> Overdues
144 <input type=submit value=Print>
150 if (my $group=$input->param('group')) {
151 print "<a href=groups.pl?type=$type>Back to group list</a><p>\n";
152 if ($input->param('printable')) {
153 print "<head><title>Overdue list for $groups->{$group}</title></head><body>\n";
155 my $members=groupmembers($env, $group);
156 print "<table border=0><tr><td bgcolor=#dddddd>\n";
157 print "<table border=1 cellspacing=5 cellpadding=10>\n";
159 ($type eq 'overdues') ? ($typetext="Overdues") : ($typetext="Issues");
160 print "<thead><tr><th>Card #</th><th>Name</th><th>IS/OD</th><th>$typetext</th></tr></thead>\n";
161 foreach (sort { $a->{'surname'}." ".$a->{'firstname'} cmp $b->{'surname'}." ".$b->{'firstname'} } @$members) {
162 my $fullname=$_->{'firstname'}." ".$_->{'surname'};
163 my $userid=$_->{'userid'};
164 my $cardnumber=$_->{'cardnumber'};
165 my $currentissues=$_->{'currentissues'};
167 my $overduecounter=0;
169 foreach (keys %$currentissues) {
171 if ($currentissues->{$_}->{'overdue'}) {
173 $title=$currentissues->{$_}->{'title'};
174 $author=$currentissues->{$_}->{'author'};
175 $date_due=$currentissues->{$_}->{'date_due'};
176 $overduelist.="<u>$title</u> by $author (<font color=red>$date_due</font>)<br>\n";
178 if ($type eq 'issues') {
179 $title=$currentissues->{$_}->{'title'};
180 $author=$currentissues->{$_}->{'author'};
181 $date_due=$currentissues->{$_}->{'date_due'};
182 $overduelist.="<u>$title</u> by $author due on $date_due<br>\n";
187 if ($overduecounter) {
188 $overduetext="<font color=red>$overduecounter</font>";
190 (next) unless ($overduecounter || $counter);
191 if ($overduecounter==0 && $type eq 'overdues') {
194 print "<tr><td align=center>$cardnumber</td><td>$fullname</td><td align=center>$counter/$overduetext</td><td>$overduelist</td></tr>\n";
197 print "</td></tr></table>\n";
199 print "<a href=groups.pl?print=1>Print Reports</a><p>\n";
200 print "<h2>Pick a group</h2>\n";
201 print "<table border=0><tr><td bgcolor=#dddddd>\n";
202 print "<table border=1 cellspacing=5 cellpadding=10><tr>\n";
204 foreach (sort {$groups->{$a} cmp $groups->{$b}} keys %$groups) {
205 (next) unless ($groups->{$_});
212 <td align=center>$groups->{$_}
214 <a href=groups.pl?type=issues&group=$_>Issues</a> | <a href=groups.pl?type=overdues&group=$_>Overdues</a>
219 print "</tr></table>\n";
220 print "</td></tr></table>\n";
224 unless ($input->param('printable')) {
225 print endmenu('report');
234 $output= "<head><title>Overdue list for $groups->{$group}</title></head><body><center>\n";
235 my $members=groupmembers($env, $group);
236 ($type eq 'overdues') && ($output.="<img src=/usr/local/koha/librarian/htdocs/images/overdues.jpg><br>\n");
237 $output.= "<table border=1 cellspacing=5 cellpadding=10>\n";
239 ($type eq 'overdues') ? ($typetext="Overdues") : ($typetext="Issues");
240 $output.= "<thead><tr><th>Card #</th><th>Name</th><th>IS/OD</th><th>$typetext</th></tr></thead>\n";
241 foreach (sort { $a->{'surname'}." ".$a->{'firstname'} cmp $b->{'surname'}." ".$b->{'firstname'} } @$members) {
242 my $fullname=$_->{'firstname'}." ".$_->{'surname'};
243 my $userid=$_->{'userid'};
244 my $cardnumber=$_->{'cardnumber'};
245 my $currentissues=$_->{'currentissues'};
247 my $overduecounter=0;
249 foreach (keys %$currentissues) {
251 if ($currentissues->{$_}->{'overdue'}) {
253 $title=$currentissues->{$_}->{'title'};
254 $author=$currentissues->{$_}->{'author'};
255 $date_due=$currentissues->{$_}->{'date_due'};
256 $overduelist.="<u>$title</u> by $author (<font color=red>$date_due</font>)<br>\n";
258 if ($type eq 'issues') {
259 $title=$currentissues->{$_}->{'title'};
260 $author=$currentissues->{$_}->{'author'};
261 $date_due=$currentissues->{$_}->{'date_due'};
262 $overduelist.="<u>$title</u> by $author due on $date_due<br>\n";
267 if ($overduecounter) {
268 $overduetext="<font color=red>$overduecounter</font>";
270 (next) unless ($overduecounter || $counter);
271 if ($overduecounter==0 && $type eq 'overdues') {
274 $output.= "<tr><td align=center>$cardnumber</td><td>$fullname</td><td align=center>$counter/$overduetext</td><td>$overduelist</td></tr>\n";
276 $output.= "</table>\n";
277 $output.= "</td></tr></table>\n";
278 open (P, "|html2ps | lpr -P$printer");