bug fix
[koha.git] / groups.pl
1 #!/usr/bin/perl
2
3 #written 14/1/2000
4 #script to display reports
5
6 use CGI qw/:standard/;
7 use C4::Output;
8 use C4::Groups;
9 use C4::Circulation::Circ2;
10 use C4::Print;
11 use DBI;
12
13 my $input=new CGI;
14 my $time=$input->param('time');
15 #print $input->header;
16
17
18 my $branches=getbranches(\%env);
19 my $printers=getprinters(\%env);
20 my $branch=$input->param('branch');
21 my $printer=$input->param('printer');
22 ($branch) || ($branch=$input->cookie('branch'));
23 ($printer) || ($printer=$input->cookie('printer'));
24 my ($oldbranch, $oldprinter);
25 if ($input->param('selectnewbranchprinter')) {
26     $oldbranch=$branch;
27     $oldprinter=$printer;
28     $branch='';
29     $printer='';
30 }
31 $env{'branchcode'}=$branch;
32 $env{'printer'}=$printer;
33 #$env{'queue'}=$printer;
34 my $branchcount=0;
35 my $printercount=0;
36 my $branchoptions;
37 my $printeroptions;
38 foreach (keys %$branches) {
39     (next) unless ($_);
40     (next) if (/^TR$/);
41     $branchcount++;
42     my $selected='';
43     ($selected='selected') if ($_ eq $oldbranch);
44     ($selected='selected') if ($_ eq $branch);
45     $branchoptions.="<option value=$_ $selected>$branches->{$_}->{'branchname'}\n";
46 }
47 foreach (keys %$printers) {
48     (next) unless ($_);
49     $printercount++;
50     my $selected='';
51     ($selected='selected') if ($_ eq $oldprinter || $_ eq $printer);
52     $printeroptions.="<option value=$_ $selected>$printers->{$_}->{'printername'}\n";
53 }
54 if ($printercount==1) {
55     ($printer)=keys %$printers;
56 }
57 if ($branchcount==1) {
58     ($branch)=keys %$branches;
59 }
60
61
62 my $branchname='';
63 my $printername='';
64 if ($branch && $printer) {
65     $branchname=$branches->{$branch}->{'branchname'};
66     $printername=$printers->{$printer}->{'printername'};
67 }
68
69
70 my $branchcookie=$input->cookie(-name=>'branch', -value=>"$branch", -expires=>'+1y', -path=>'/cgi-bin/koha/');
71 my $printercookie=$input->cookie(-name=>'printer', -value=>"$printer", -expires=>'+1y', -path=>'/cgi-bin/koha/');
72
73 print $input->header(-type=>'text/html',-expires=>'now', -cookie=>[$branchcookie,$printercookie]);
74 print startpage;
75 unless ($input->param('printable')) {
76     print startmenu('report');
77 }
78 print center;
79
80
81
82 my $type=$input->param('type');
83 my $groups=getgroups();
84 if ($input->param('print')) {
85     if ($input->param('groupsselected')) {
86         foreach ($input->param()) {
87             if (/print_(.*)/) {
88                 my $group=$1;
89                 printgroup($group,$input->param('type'));
90             }
91         }
92     } else {
93         print "<h2>Select the groups to print</h2>\n";
94         print "<form method=post>\n";
95         print "<input type=hidden name=print value=1>\n";
96         print "<input type=hidden name=groupsselected value=1>\n";
97         print "<table border=0><tr><td bgcolor=#dddddd>\n";
98         print "<table border=1 cellspacing=5 cellpadding=10><tr>\n";
99         my $counter=0;
100         foreach (sort {$groups->{$a} cmp $groups->{$b}} keys %$groups) {
101             (next) unless ($groups->{$_});
102             if ($counter>3) {
103                 $counter=0;
104                 print "</tr><tr>\n";
105             } else {
106             }
107             print << "EOF";
108 <td><input type=checkbox name=print_$_ value=0> $groups->{$_}
109 </td>
110 EOF
111             $counter++;
112         }
113         print << "EOF";
114 </tr></table>
115 </td></tr></table>
116 <p>
117 Printer: 
118 <select name=printer>
119 $printeroptions
120 </select>
121 <p>
122 <input type=radio name=type value=issues> Issues <input type=radio name=type value=overdues checked> Overdues
123 <p>
124 <input type=submit value=Print>
125 </body></html>
126 EOF
127         exit;
128     }
129 }
130 if (my $group=$input->param('group')) {
131     print "<a href=groups.pl?type=$type>Back to group list</a><p>\n";
132     if ($input->param('printable')) {
133         print "<head><title>Overdue list for $groups->{$group}</title></head><body>\n";
134     }
135     my $members=groupmembers($env, $group);
136     print "<table border=0><tr><td bgcolor=#dddddd>\n";
137     print "<table border=1 cellspacing=5 cellpadding=10>\n";
138     my $typetext='';
139     ($type eq 'overdues') ? ($typetext="Overdues") : ($typetext="Issues");
140     print "<thead><tr><th>Card #</th><th>Name</th><th>IS/OD</th><th>$typetext</th></tr></thead>\n";
141     foreach (sort { $a->{'surname'}." ".$a->{'firstname'} cmp $b->{'surname'}." ".$b->{'firstname'} }  @$members) {
142         my $fullname=$_->{'firstname'}." ".$_->{'surname'};
143         my $userid=$_->{'userid'};
144         my $cardnumber=$_->{'cardnumber'};
145         my $currentissues=$_->{'currentissues'};
146         my $counter=0;
147         my $overduecounter=0;
148         my $overduelist='';
149         foreach (keys %$currentissues) {
150             $counter++;
151             if ($currentissues->{$_}->{'overdue'}) {
152                 $overduecounter++;
153                 $title=$currentissues->{$_}->{'title'};
154                 $author=$currentissues->{$_}->{'author'};
155                 $date_due=$currentissues->{$_}->{'date_due'};
156                 $overduelist.="<u>$title</u> by $author (<font color=red>$date_due</font>)<br>\n";
157             } else {
158                 if ($type eq 'issues') {
159                     $title=$currentissues->{$_}->{'title'};
160                     $author=$currentissues->{$_}->{'author'};
161                     $date_due=$currentissues->{$_}->{'date_due'};
162                     $overduelist.="<u>$title</u> by $author due on $date_due<br>\n";
163                 }
164             }
165         }
166         my $overduetext="0";
167         if ($overduecounter) {
168             $overduetext="<font color=red>$overduecounter</font>";
169         }
170         (next) unless ($overduecounter || $counter);
171         if ($overduecounter==0 && $type eq 'overdues') {
172             next;
173         }
174         print "<tr><td align=center>$cardnumber</td><td>$fullname</td><td align=center>$counter/$overduetext</td><td>$overduelist</td></tr>\n";
175     }
176     print "</table>\n";
177     print "</td></tr></table>\n";
178 } else {
179     print "<a href=groups.pl?print=1>Print Reports</a><p>\n";
180     print "<h2>Pick a group</h2>\n";
181     print "<table border=0><tr><td bgcolor=#dddddd>\n";
182     print "<table border=1 cellspacing=5 cellpadding=10><tr>\n";
183     my $counter=0;
184     foreach (sort {$groups->{$a} cmp $groups->{$b}} keys %$groups) {
185         (next) unless ($groups->{$_});
186         if ($counter>3) {
187             $counter=0;
188             print "</tr><tr>\n";
189         } else {
190         }
191         print << "EOF";
192 <td align=center>$groups->{$_}
193 <br>
194 <a href=groups.pl?type=issues&group=$_>Issues</a> | <a href=groups.pl?type=overdues&group=$_>Overdues</a>
195 </td>
196 EOF
197         $counter++;
198     }
199     print "</tr></table>\n";
200     print "</td></tr></table>\n";
201 }
202
203
204 unless ($input->param('printable')) {
205     print endmenu('report');
206 }
207 print endpage;
208
209
210
211 sub printgroup {
212     my $group=shift;
213     my $type=shift;
214     $output= "<head><title>Overdue list for $groups->{$group}</title></head><body><center>\n";
215     my $members=groupmembers($env, $group);
216     ($type eq 'overdues') && ($output.="<img src=/usr/local/koha/librarian/htdocs/images/overdues.jpg><br>\n");
217     $output.= "<table border=1 cellspacing=5 cellpadding=10>\n";
218     my $typetext='';
219     ($type eq 'overdues') ? ($typetext="Overdues") : ($typetext="Issues");
220     $output.= "<thead><tr><th>Card #</th><th>Name</th><th>IS/OD</th><th>$typetext</th></tr></thead>\n";
221     foreach (sort { $a->{'surname'}." ".$a->{'firstname'} cmp $b->{'surname'}." ".$b->{'firstname'} }  @$members) {
222         my $fullname=$_->{'firstname'}." ".$_->{'surname'};
223         my $userid=$_->{'userid'};
224         my $cardnumber=$_->{'cardnumber'};
225         my $currentissues=$_->{'currentissues'};
226         my $counter=0;
227         my $overduecounter=0;
228         my $overduelist='';
229         foreach (keys %$currentissues) {
230             $counter++;
231             if ($currentissues->{$_}->{'overdue'}) {
232                 $overduecounter++;
233                 $title=$currentissues->{$_}->{'title'};
234                 $author=$currentissues->{$_}->{'author'};
235                 $date_due=$currentissues->{$_}->{'date_due'};
236                 $overduelist.="<u>$title</u> by $author (<font color=red>$date_due</font>)<br>\n";
237             } else {
238                 if ($type eq 'issues') {
239                     $title=$currentissues->{$_}->{'title'};
240                     $author=$currentissues->{$_}->{'author'};
241                     $date_due=$currentissues->{$_}->{'date_due'};
242                     $overduelist.="<u>$title</u> by $author due on $date_due<br>\n";
243                 }
244             }
245         }
246         my $overduetext="0";
247         if ($overduecounter) {
248             $overduetext="<font color=red>$overduecounter</font>";
249         }
250         (next) unless ($overduecounter || $counter);
251         if ($overduecounter==0 && $type eq 'overdues') {
252             next;
253         }
254         $output.= "<tr><td align=center>$cardnumber</td><td>$fullname</td><td align=center>$counter/$overduetext</td><td>$overduelist</td></tr>\n";
255     }
256     $output.= "</table>\n";
257     $output.= "</td></tr></table>\n";
258     open (P, "|html2ps | lpr -P$printer");
259     print P $output;
260     close P;
261 }