4 #script to display reports
9 use C4::Circulation::Circ2;
14 my $time=$input->param('time');
15 #print $input->header;
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')) {
31 $env{'branchcode'}=$branch;
32 $env{'printer'}=$printer;
33 #$env{'queue'}=$printer;
38 foreach (keys %$branches) {
43 ($selected='selected') if ($_ eq $oldbranch);
44 ($selected='selected') if ($_ eq $branch);
45 $branchoptions.="<option value=$_ $selected>$branches->{$_}->{'branchname'}\n";
47 foreach (keys %$printers) {
51 ($selected='selected') if ($_ eq $oldprinter || $_ eq $printer);
52 $printeroptions.="<option value=$_ $selected>$printers->{$_}->{'printername'}\n";
54 if ($printercount==1) {
55 ($printer)=keys %$printers;
57 if ($branchcount==1) {
58 ($branch)=keys %$branches;
64 if ($branch && $printer) {
65 $branchname=$branches->{$branch}->{'branchname'};
66 $printername=$printers->{$printer}->{'printername'};
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/');
73 print $input->header(-type=>'text/html',-expires=>'now', -cookie=>[$branchcookie,$printercookie]);
75 unless ($input->param('printable')) {
76 print startmenu('report');
82 my $type=$input->param('type');
83 my $groups=getgroups();
84 if ($input->param('print')) {
85 if ($input->param('groupsselected')) {
86 foreach ($input->param()) {
89 printgroup($group,$input->param('type'));
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";
100 foreach (sort {$groups->{$a} cmp $groups->{$b}} keys %$groups) {
101 (next) unless ($groups->{$_});
108 <td><input type=checkbox name=print_$_ value=0> $groups->{$_}
118 <select name=printer>
122 <input type=radio name=type value=issues> Issues <input type=radio name=type value=overdues checked> Overdues
124 <input type=submit value=Print>
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";
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";
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'};
147 my $overduecounter=0;
149 foreach (keys %$currentissues) {
151 if ($currentissues->{$_}->{'overdue'}) {
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";
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";
167 if ($overduecounter) {
168 $overduetext="<font color=red>$overduecounter</font>";
170 (next) unless ($overduecounter || $counter);
171 if ($overduecounter==0 && $type eq 'overdues') {
174 print "<tr><td align=center>$cardnumber</td><td>$fullname</td><td align=center>$counter/$overduetext</td><td>$overduelist</td></tr>\n";
177 print "</td></tr></table>\n";
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";
184 foreach (sort {$groups->{$a} cmp $groups->{$b}} keys %$groups) {
185 (next) unless ($groups->{$_});
192 <td align=center>$groups->{$_}
194 <a href=groups.pl?type=issues&group=$_>Issues</a> | <a href=groups.pl?type=overdues&group=$_>Overdues</a>
199 print "</tr></table>\n";
200 print "</td></tr></table>\n";
204 unless ($input->param('printable')) {
205 print endmenu('report');
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";
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'};
227 my $overduecounter=0;
229 foreach (keys %$currentissues) {
231 if ($currentissues->{$_}->{'overdue'}) {
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";
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";
247 if ($overduecounter) {
248 $overduetext="<font color=red>$overduecounter</font>";
250 (next) unless ($overduecounter || $counter);
251 if ($overduecounter==0 && $type eq 'overdues') {
254 $output.= "<tr><td align=center>$cardnumber</td><td>$fullname</td><td align=center>$counter/$overduetext</td><td>$overduelist</td></tr>\n";
256 $output.= "</table>\n";
257 $output.= "</td></tr></table>\n";
258 open (P, "|html2ps | lpr -P$printer");