4 use C4::Circulation::Circ2;
13 print startmenu('circulation');
14 my $branches=getbranches(\%env);
15 my $printers=getprinters(\%env);
16 my $branch=$query->param('branch');
17 my $printer=$query->param('printer');
18 $env{'branchcode'}=$branch;
19 $env{'printer'}=$printer;
23 if ($branch && $printer) {
24 $branchname=$branches->{$branch}->{'branchname'};
25 $printername=$printers->{$printer}->{'printername'};
30 <table border=0 width=100%>
33 <td align=right width=30%><table border=1 bgcolor=black width=100%><tr><th><font color=white>$branchname</font></th></tr></table></td>
34 <td align=center width=20%>
35 <a href=circulation.pl?module=issues&branch=$branch&printer=$printer><img src=/images/issues.gif border=0 width=60></a>
36 <a href=circulation.pl?module=returns&branch=$branch&printer=$printer><img src=/images/returns.gif border=0 width=60></a>
37 </td><td align=left width=30%>
38 <table border=1 bgcolor=black width=100%><tr><th><font color=white>$printername</font></th></tr></table>
48 if ($printer && $branch) {
51 if ($query->param('module') eq 'issues') { issues(); last SWITCH; }
52 if ($query->param('module') eq 'returns') { returns(); last SWITCH; }
60 foreach (keys %$branches) {
63 $branchoptions.="<option value=$_>$branches->{$_}->{'branchname'}\n";
65 foreach (keys %$printers) {
68 $printeroptions.="<option value=$_>$printers->{$_}->{'printername'}\n";
70 my ($printerform, $branchform);
71 if ($printercount>1) {
74 <tr><th bgcolor=black><font color=white>Choose a Printer</font></td></tr>
83 my ($printer) = keys %$printers;
85 <input type=hidden name=printer value=$printer>
92 <tr><th bgcolor=black><font color=white>Choose a Branch</font></td></tr>
102 Select a printer and a branch
117 print endmenu('circulation');
121 <a href=circulation.pl?module=issues&branch=$branch&printer=$printer>Issues</a>
122 <a href=circulation.pl?module=returns&branch=$branch&printer=$printer>Returns</a>
130 <table border=3 bgcolor=#dddddd>
131 <tr><td colspan=2 bgcolor=black align=center><font color=white><b><font size=+1>Returns</font><br>Enter Book Barcode</b></font></td></tr>
132 <tr><td>Item Barcode:</td><td><input name=barcode size=10></td></tr>
134 <input type=hidden name=module value=returns>
135 <input type=hidden name=branch value=$branch>
136 <input type=hidden name=printer value=$printer>
139 if (my $barcode=$query->param('barcode')) {
140 print "Returning $barcode<br>\n";
141 my ($iteminformation, $borrower, $messages, $overduecharge) = returnbook(\%env, $barcode);
142 my $itemtable=<<"EOF";
143 <table border=1 bgcolor=#dddddd>
144 <tr><th bgcolor=black><font color=white>Item Information</font></th></tr>
146 Title: $iteminformation->{'title'}<br>
147 Author: $iteminformation->{'author'}<br>
148 Barcode: $iteminformation->{'barcode'}
153 my ($patrontable, $flaginfotext) = patrontable($borrower);
154 print "<table border=0><tr><td valign=top align=center>$patrontable</td><td valign=top align=center>$flaginfotext</td></tr><tr><td colspan=2 align=center>$itemtable</td></tr></table><br>\n";
156 print "Not loaned out.\n";
162 if (my $borrnumber=$query->param('borrnumber')) {
163 my ($borrower, $flags) = getpatroninformation(\%env,$borrnumber,0);
164 my ($borrower, $flags) = getpatroninformation(\%env,$borrnumber,0);
165 my $year=$query->param('year');
166 my $month=$query->param('month');
167 my $day=$query->param('day');
168 if (my $barcode=$query->param('barcode')) {
169 my $invalidduedate=0;
171 if (($year eq 0) && ($month eq 0) && ($year eq 0)) {
174 if (($year eq 0) || ($month eq 0) || ($year eq 0)) {
175 print "Invalid Due Date Specified. Book was not issued.<p>\n";
178 if (($day>30) && (($month==4) || ($month==6) || ($month==9) || ($month==11))) {
179 print "Invalid Due Date Specified. Book was not issued.<p>\n";
181 } elsif (($day>29) && ($month==2)) {
182 print "Invalid Due Date Specified. Book was not issued.<p>\n";
184 } elsif (($day>28) && (($year%4) && ((!($year%100) || ($year%400))))) {
185 print "Invalid Due Date Specified. Book was not issued.<p>\n";
188 $env{'datedue'}="$year-$month-$day";
193 foreach (sort $query->param) {
194 if ($_ =~ /response-(\d*)/) {
195 $responses{$1}=$query->param($_);
198 if (my $qnumber=$query->param('questionnumber')) {
199 $responses{$qnumber}=$query->param('answer');
201 unless ($invalidduedate) {
202 my ($iteminformation, $duedate, $rejected, $question, $questionnumber, $defaultanswer, $message) = issuebook(\%env, $borrower, $barcode, \%responses);
204 if ($rejected == -1) {
207 <table border=1 bgcolor=#dddddd>
208 <tr><th bgcolor=black><font color=white>Error Issuing Book</font></th></tr>
209 <tr><td><font color=red>$rejected</font></td></tr>
215 my $responsesform='';
216 foreach (keys %responses) {
217 $responsesform.="<input type=hidden name=response-$_ value=$responses{$_}>\n";
220 my $stickyduedate=$query->param('stickyduedate');
222 <table border=1 bgcolor=#dddddd>
223 <tr><th bgcolor=black><font color=white><b>Issuing Question</b></font></td></tr>
225 <table border=0 cellpadding=10>
227 Attempting to issue $iteminformation->{'title'} by $iteminformation->{'author'} to $borrower->{'firstname'} $borrower->{'surname'}.
234 <tr><td align=center>
238 <input type=hidden name=module value=issues>
239 <input type=hidden name=borrnumber value=$borrnumber>
240 <input type=hidden name=barcode value=$barcode>
241 <input type=hidden name=questionnumber value=$questionnumber>
242 <input type=hidden name=day value=$day>
243 <input type=hidden name=month value=$month>
244 <input type=hidden name=year value=$year>
245 <input type=hidden name=stickyduedate value=$stickyduedate>
246 <input type=hidden name=branch value=$branch>
247 <input type=hidden name=printer value=$printer>
249 <input type=hidden name=answer value=Y>
250 <input type=submit value=Yes>
255 <input type=hidden name=module value=issues>
256 <input type=hidden name=borrnumber value=$borrnumber>
257 <input type=hidden name=barcode value=$barcode>
258 <input type=hidden name=questionnumber value=$questionnumber>
259 <input type=hidden name=day value=$day>
260 <input type=hidden name=month value=$month>
261 <input type=hidden name=year value=$year>
262 <input type=hidden name=stickyduedate value=$stickyduedate>
263 <input type=hidden name=branch value=$branch>
264 <input type=hidden name=printer value=$printer>
266 <input type=hidden name=answer value=N>
267 <input type=submit value=No>
279 <table border=1 bgcolor=#dddddd>
280 <tr><th bgcolor=black><font color=white>Message</font></th></tr>
281 <tr><td>$message</td></tr>
288 my $issueid=$query->param('issueid');
289 ($issueid) || ($issueid=int(rand()*1000000000));
293 foreach $flag (sort keys %$flags) {
294 if ($flags->{$flag}->{'noissues'}) {
295 $flagtext.="<font color=red>$flag</font> ";
299 $flags->{$flag}->{'message'}=~s/\n/<br>/g;
300 if ($flags->{$flag}->{'noissues'}) {
301 $flaginfotext.="<tr><td bgcolor=red valign=top><font color=white><b>$flag</b></font></td><td bgcolor=red><font color=white><b>$flags->{$flag}->{'message'}</b></font></td></tr>\n";
303 $flaginfotext.="<tr><td valign=top>$flag</td><td>$flags->{$flag}->{'message'}</td></tr>\n";
307 $flaginfotext="<table border=1 width=70% bgcolor=#dddddd><tr><th bgcolor=black colspan=2><font color=white>Patron Flags</font></th></tr>$flaginfotext</table>\n";
309 $env{'nottodaysissues'}=1;
310 my ($borrowerissues) = currentissues(\%env, $borrower);
311 $env{'nottodaysissues'}=0;
312 $env{'todaysissues'}=1;
313 my ($today) = currentissues(\%env, $borrower);
314 $env{'todaysissues'}=0;
316 my @datearr = localtime(time());
317 my $todaysdate = (1900+$datearr[5]).sprintf ("%0.2d", ($datearr[4]+1)).sprintf ("%0.2d", $datearr[3]);
318 foreach (sort keys %$borrowerissues) {
319 my $bookissue=$borrowerissues->{$_};
321 my $datedue=$bookissue->{'date_due'};
323 if ($datedue < $todaysdate) {
324 $bgcolor="bgcolor=red";
326 $previssues.="<tr $bgcolor><td>$bookissue->{'date_due'}</td><td>$bookissue->{'barcode'}</td><td>$bookissue->{'title'}</td><td>$bookissue->{'author'}</td><td>$bookissue->{'dewey'} $bookissue->{'subclass'}</td></tr>\n";
329 foreach (sort keys %$today) {
330 my $bookissue=$today->{$_};
331 $todaysissues.="<tr><td>$bookissue->{'date_due'}</td><td>$bookissue->{'barcode'}</td><td>$bookissue->{'title'}</td><td>$bookissue->{'author'}</td><td>$bookissue->{'dewey'} $bookissue->{'subclass'}</td></tr>\n";
333 for ($i=1; $i<32; $i++) {
335 if (($query->param('stickyduedate')) && ($day==$i)) {
336 $selected='selected';
338 $dayoptions.="<option value=$i $selected>$i";
341 foreach (('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) {
343 if (($query->param('stickyduedate')) && ($month==$counter)) {
344 $selected='selected';
346 $monthoptions.="<option value=$counter $selected>$_";
349 for ($i=$datearr[5]+1900; $i<$datearr[5]+1905; $i++) {
351 if (($query->param('stickyduedate')) && ($year==$i)) {
352 $selected='selected';
354 $yearoptions.="<option value=$i $selected>$i";
358 ($query->param('stickyduedate')) && ($selected='checked');
359 my ($borrower, $flags) = getpatroninformation(\%env,$borrnumber,0);
360 my ($patrontable, $flaginfotable) = patrontable($borrower);
363 <table border=0 cellpadding=5 width=90%>
366 <table border=1 bgcolor=#dddddd width=100%>
367 <tr><td align=center bgcolor=black><font color=white><b>Enter Book Barcode</b></font></td></tr>
368 <tr><td align=center>
369 <table border=0 bgcolor=#dddddd>
370 <tr><td>Item Barcode:</td><td><input name=barcode size=10></td><td><input type=submit value=Issue></tr>
371 <tr><td colspan=3 align=center>
372 <select name=day><option value=0>Day$dayoptions</select><select name=month><option value=0>Month$monthoptions</select><select name=year><option value=0>Year$yearoptions</select>
374 <input type=checkbox name=stickyduedate $selected> Sticky Due Date
379 <input type=hidden name=module value=issues>
380 <input type=hidden name=borrnumber value=$borrnumber>
381 <input type=hidden name=branch value=$branch>
382 <input type=hidden name=printer value=$printer>
385 <td align=right valign=top>
392 <td colspan=2 align=center>
393 <table border=1 width=100% bgcolor=#dddddd>
394 <tr><th colspan=5 bgcolor=black><font color=white><b>Issues Today</b></font></th></tr>
395 <tr><th>Due Date</th><th>Bar Code</th><th>Title</th><th>Author</th><th>Class</th></tr>
401 <td colspan=2 align=center>
402 <table border=1 width=100% bgcolor=#dddddd>
403 <tr><th colspan=5 bgcolor=black><font color=white><b>Previous Issues</b></font></th></tr>
404 <tr><th>Due Date</th><th>Bar Code</th><th>Title</th><th>Author</th><th>Class</th></tr>
413 if (my $findborrower=$query->param('findborrower')) {
414 my ($borrowers, $flags) = findborrower(\%env, $findborrower);
415 my @borrowers=@$borrowers;
416 if ($#borrowers == -1) {
417 $query->param('findborrower', '');
418 print "No borrower matched '$findborrower'<p>\n";
422 if ($#borrowers == 0) {
423 $query->param('borrnumber', $borrowers[0]->{'borrowernumber'});
427 print "<form method=get>\n";
428 print "<input type=hidden name=module value=issues>\n";
429 print "<input type=hidden name=branch value=$branch>\n";
430 print "<input type=hidden name=printer value=$printer>\n";
431 print "<table border=1 cellpadding=5 bgcolor=#dddddd>";
432 print "<tr><th bgcolor=black><font color=white><b><font size=+1>Issues</font><br>Select a borrower</b></font></th></tr>\n";
433 print "<tr><td align=center>\n";
434 print "<select name=borrnumber size=7>\n";
435 foreach (sort {$a->{'surname'}.$a->{'firstname'} cmp $b->{'surname'}.$b->{'firstname'}} @$borrowers) {
436 print "<option value=$_->{'borrowernumber'}>$_->{'surname'}, $_->{'firstname'} ($_->{'cardnumber'})\n";
438 print "</select><br>";
439 print "<input type=submit>\n";
440 print "</td></tr></table>\n";
445 <table border=1 bgcolor=#dddddd>
446 <tr><th bgcolor=black><font color=white><b><font size=+1>Issues</font><br>Enter borrower card number<br> or partial last name</b></font></td></tr>
447 <tr><td><input name=findborrower></td></tr>
449 <input type=hidden name=module value=issues>
450 <input type=hidden name=branch value=$branch>
451 <input type=hidden name=printer value=$printer>
461 my $flags=$borrower->{'flags'};
463 my $flaginfotable='';
466 foreach $flag (sort keys %$flags) {
467 if ($flags->{$flag}->{'noissues'}) {
468 $flagtext.="<font color=red>$flag</font> ";
472 $flags->{$flag}->{'message'}=~s/\n/<br>/g;
473 if ($flags->{$flag}->{'noissues'}) {
474 $flaginfotext.="<tr><td bgcolor=red valign=top><font color=white><b>$flag</b></font></td><td bgcolor=red><font color=white><b>$flags->{$flag}->{'message'}</b></font></td></tr>\n";
476 $flaginfotext.="<tr><td valign=top>$flag</td><td>$flags->{$flag}->{'message'}</td></tr>\n";
479 ($flaginfotext) && ($flaginfotext="<table border=1 bgcolor=#dddddd><tr><th bgcolor=black colspan=2><font color=white>Patron Flags</font></th></tr>$flaginfotext</table>\n");
480 my $patrontable= << "EOF";
481 <table border=1 bgcolor=#dddddd>
482 <tr><th bgcolor=black><font color=white><b>Patron Information</b></font></td></tr>
484 $borrower->{'cardnumber'} $borrower->{'surname'}, $borrower->{'title'} $borrower->{'firstname'}<br>
485 $borrower->{'streetaddress'} $borrower->{'city'}<br>
486 $borrower->{'categorycode'} $flagtext
490 return($patrontable, $flaginfotext);