Changes to web circulation module: rudimentary returns module, arbitrary

due date for issues, flag info displayed, overdue books are displayed in
red.
This commit is contained in:
tonnesen 2001-01-23 23:48:54 +00:00
parent 3186e690ce
commit eaa9677292
2 changed files with 173 additions and 57 deletions

View file

@ -279,6 +279,9 @@ sub issuebook {
my $datedue=time+($loanlength)*86400; my $datedue=time+($loanlength)*86400;
my @datearr = localtime($datedue); my @datearr = localtime($datedue);
$dateduef = (1900+$datearr[5])."-".($datearr[4]+1)."-".$datearr[3]; $dateduef = (1900+$datearr[5])."-".($datearr[4]+1)."-".$datearr[3];
if ($env->{'datedue'}) {
$dateduef=$env->{'datedue'};
}
my $sth=$dbh->prepare("insert into issues (borrowernumber, itemnumber, date_due, branchcode) values ($patroninformation->{'borrowernumber'}, $iteminformation->{'itemnumber'}, '$dateduef', '$env->{'branchcode'}')"); my $sth=$dbh->prepare("insert into issues (borrowernumber, itemnumber, date_due, branchcode) values ($patroninformation->{'borrowernumber'}, $iteminformation->{'itemnumber'}, '$dateduef', '$env->{'branchcode'}')");
$sth->execute; $sth->execute;
$sth->finish; $sth->finish;

View file

@ -35,10 +35,58 @@ print << "EOF";
EOF EOF
} }
sub returns {
if (my $barcode=$query->param('barcode')) {
print "Returning $barcode<br>\n";
my ($iteminformation, $borrower, $messages, $overduecharge) = returnbook(\%env, $barcode);
if ($borrower) {
print "Borrowed by $borrower->{'title'} $borrower->{'firstname'} $borrower->{'surname'}<p>\n";
} else {
print "Not loaned out.\n";
}
}
print << "EOF";
<form method=post name=barcode>
<table border=3 bgcolor=#dddddd>
<tr><td colspan=2 bgcolor=black><font color=white><b>Enter Book Barcode</b></font></td></tr>
<tr><td>Item Barcode:</td><td><input name=barcode size=10></td></tr>
</table>
<input type=hidden name=module value=returns>
</form>
EOF
}
sub issues { sub issues {
if (my $borrnumber=$query->param('borrnumber')) { if (my $borrnumber=$query->param('borrnumber')) {
my ($borrower, $flags) = getpatroninformation(\%env,$borrnumber,0); my ($borrower, $flags) = getpatroninformation(\%env,$borrnumber,0);
my $year=$query->param('year');
my $month=$query->param('month');
my $day=$query->param('day');
if (my $barcode=$query->param('barcode')) { if (my $barcode=$query->param('barcode')) {
my $invalidduedate=0;
$env{'datedue'}='';
if (($year eq 0) && ($month eq 0) && ($year eq 0)) {
$env{'datedue'}='';
} else {
if (($year eq 0) || ($month eq 0) || ($year eq 0)) {
print "Invalid Due Date Specified. Book was not issued.<p>\n";
$invalidduedate=1;
} else {
if (($day>30) && (($month==4) || ($month==6) || ($month==9) || ($month==11))) {
print "Invalid Due Date Specified. Book was not issued.<p>\n";
$invalidduedate=1;
} elsif (($day>29) && ($month==2)) {
print "Invalid Due Date Specified. Book was not issued.<p>\n";
$invalidduedate=1;
} elsif (($day>28) && (($year%4) && ((!($year%100) || ($year%400))))) {
print "Invalid Due Date Specified. Book was not issued.<p>\n";
$invalidduedate=1;
} else {
$env{'datedue'}="$year-$month-$day";
}
}
}
my %responses; my %responses;
foreach (sort $query->param) { foreach (sort $query->param) {
if ($_ =~ /response-(\d*)/) { if ($_ =~ /response-(\d*)/) {
@ -48,65 +96,90 @@ sub issues {
if (my $qnumber=$query->param('questionnumber')) { if (my $qnumber=$query->param('questionnumber')) {
$responses{$qnumber}=$query->param('answer'); $responses{$qnumber}=$query->param('answer');
} }
my ($iteminformation, $duedate, $rejected, $question, $questionnumber, $defaultanswer) = issuebook(\%env, $borrower, $barcode, \%responses); unless ($invalidduedate) {
if ($rejected) { my ($iteminformation, $duedate, $rejected, $question, $questionnumber, $defaultanswer) = issuebook(\%env, $borrower, $barcode, \%responses);
if ($rejected == -1) { if ($rejected) {
} else { if ($rejected == -1) {
print "Error issuing book: $rejected<br>\n"; } else {
print "Error issuing book: $rejected<br>\n";
}
} }
} my $responsesform='';
my $responsesform=''; foreach (keys %responses) {
foreach (keys %responses) { $responsesform.="<input type=hidden name=response-$_ value=$responses{$_}>\n";
$responsesform.="<input type=hidden name=response-$_ value=$responses{$_}>\n"; }
} if ($question) {
if ($question) { my $stickyduedate=$query->param('stickyduedate');
print << "EOF"; print << "EOF";
<table border=1 bgcolor=#dddddd> <table border=1 bgcolor=#dddddd>
<tr><th bgcolor=black><font color=white><b>Issuing Question</b></font></td></tr> <tr><th bgcolor=black><font color=white><b>Issuing Question</b></font></td></tr>
<tr><td> <tr><td>
Attempting to issue $iteminformation->{'title'} by $iteminformation->{'author'} to $borrower->{'firstname'} $borrower->{'surname'}. Attempting to issue $iteminformation->{'title'} by $iteminformation->{'author'} to $borrower->{'firstname'} $borrower->{'surname'}.
<br> <br>
$question $question
</td></tr> </td></tr>
<tr><td align=center> <tr><td align=center>
<table border=0> <table border=0>
<tr><td> <tr><td>
<form method=get> <form method=get>
<input type=hidden name=module value=issues> <input type=hidden name=module value=issues>
<input type=hidden name=borrnumber value=$borrnumber> <input type=hidden name=borrnumber value=$borrnumber>
<input type=hidden name=barcode value=$barcode> <input type=hidden name=barcode value=$barcode>
<input type=hidden name=questionnumber value=$questionnumber> <input type=hidden name=questionnumber value=$questionnumber>
$responsesform <input type=hidden name=day value=$day>
<input type=hidden name=answer value=Y> <input type=hidden name=month value=$month>
<input type=submit value=Yes> <input type=hidden name=year value=$year>
</form> <input type=hidden name=stickyduedate value=$stickyduedate>
</td> $responsesform
<td> <input type=hidden name=answer value=Y>
<form method=get> <input type=submit value=Yes>
<input type=hidden name=module value=issues> </form>
<input type=hidden name=borrnumber value=$borrnumber> </td>
<input type=hidden name=barcode value=$barcode> <td>
<input type=hidden name=questionnumber value=$questionnumber> <form method=get>
$responsesform <input type=hidden name=module value=issues>
<input type=hidden name=answer value=N> <input type=hidden name=borrnumber value=$borrnumber>
<input type=submit value=No> <input type=hidden name=barcode value=$barcode>
</form> <input type=hidden name=questionnumber value=$questionnumber>
</td> <input type=hidden name=day value=$day>
</tr> <input type=hidden name=month value=$month>
</table> <input type=hidden name=year value=$year>
</td></tr> <input type=hidden name=stickyduedate value=$stickyduedate>
</table> $responsesform
<input type=hidden name=answer value=N>
<input type=submit value=No>
</form>
</td>
</tr>
</table>
</td></tr>
</table>
EOF EOF
return; return;
}
} }
} }
my $issueid=$query->param('issueid'); my $issueid=$query->param('issueid');
($issueid) || ($issueid=int(rand()*1000000000)); ($issueid) || ($issueid=int(rand()*1000000000));
my $flag=''; my $flag='';
my $flagtext=''; my $flagtext='';
my $flaginfotext='';
foreach $flag (sort keys %$flags) { foreach $flag (sort keys %$flags) {
$flagtext.="$flag "; if ($flags->{$flag}->{'noissues'}) {
$flagtext.="<font color=red>$flag</font> ";
} else {
$flagtext.="$flag ";
}
$flags->{$flag}->{'message'}=~s/\n/<br>/g;
if ($flags->{$flag}->{'noissues'}) {
$flaginfotext.="<tr><td bgcolor=red><font color=white><b>$flag</b></font></td><td bgcolor=red><font color=white><b>$flags->{$flag}->{'message'}</b></font></td></tr>\n";
} else {
$flaginfotext.="<tr><td>$flag</td><td>$flags->{$flag}->{'message'}</td></tr>\n";
}
}
if ($flaginfotext) {
$flaginfotext="<table border=1 width=70%><tr><th bgcolor=black colspan=2><font color=white>Patron Flags</font></th></tr>$flaginfotext</table>\n";
} }
$env{'nottodaysissues'}=1; $env{'nottodaysissues'}=1;
my ($borrowerissues) = currentissues(\%env, $borrower); my ($borrowerissues) = currentissues(\%env, $borrower);
@ -132,19 +205,57 @@ EOF
my $bookissue=$today->{$_}; my $bookissue=$today->{$_};
$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"; $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";
} }
for ($i=1; $i<32; $i++) {
my $selected='';
if (($query->param('stickyduedate')) && ($day==$i)) {
$selected='selected';
}
$dayoptions.="<option value=$i $selected>$i";
}
my $counter=1;
foreach (('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December')) {
my $selected='';
if (($query->param('stickyduedate')) && ($month==$counter)) {
$selected='selected';
}
$monthoptions.="<option value=$counter $selected>$_";
$counter++;
}
for ($i=$datearr[5]+1900; $i<$datearr[5]+1905; $i++) {
my $selected='';
if (($query->param('stickyduedate')) && ($year==$i)) {
$selected='selected';
}
$yearoptions.="<option value=$i $selected>$i";
}
my $selected='';
($query->param('stickyduedate')) && ($selected='checked');
print << "EOF"; print << "EOF";
<form method=get> <form method=get>
<input type=hidden name=module value=issues>
<input type=hidden name=borrnumber value=$borrnumber>
<table border=0 cellpadding=5> <table border=0 cellpadding=5>
<tr> <tr>
<td align=left> <td align=left>
<table border=3 bgcolor=#dddddd> <table border=1 bgcolor=#dddddd>
<tr><td colspan=2 bgcolor=black><font color=white><b>Enter Book Barcode</b></font></td></tr> <tr><td bgcolor=black><font color=white><b>Enter Book Barcode</b></font></td></tr>
<tr><td>Item Barcode:</td><td><input name=barcode size=10></td></tr> <tr><td>
<table border=0 bgcolor=#dddddd>
<tr><td>Item Barcode:</td><td><input name=barcode size=10></td><td><input type=submit value=Issue></tr>
<tr><td colspan=3 align=center>
<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>
<br>
<input type=checkbox name=stickyduedate $selected> Sticky Due Date
</td></tr>
</table>
</td></tr>
</table> </table>
<input type=hidden name=module value=issues>
<input type=hidden name=borrnumber value=$borrnumber>
</form>
</td> </td>
<td align=right> <td align=right valign=top>
<table border=1 bgcolor=#dddddd> <table border=1 bgcolor=#dddddd>
<tr><th bgcolor=black><font color=white><b>Patron Information</b></font></td></tr> <tr><th bgcolor=black><font color=white><b>Patron Information</b></font></td></tr>
<tr><td> <tr><td>
@ -158,7 +269,7 @@ EOF
<tr> <tr>
<td colspan=2 align=center> <td colspan=2 align=center>
<table border=1 width=100% bgcolor=#dddddd> <table border=1 width=100% bgcolor=#dddddd>
<tr><th colspan=5 bgcolor=black><font color=white><b>Today's Issues</b></font></th></tr> <tr><th colspan=5 bgcolor=black><font color=white><b>Issues Today</b></font></th></tr>
<tr><th>Due Date</th><th>Bar Code</th><th>Title</th><th>Author</th><th>Class</th></tr> <tr><th>Due Date</th><th>Bar Code</th><th>Title</th><th>Author</th><th>Class</th></tr>
$todaysissues $todaysissues
</table> </table>
@ -174,6 +285,8 @@ EOF
</td> </td>
</tr> </tr>
</table> </table>
<p>
$flaginfotext
EOF EOF
} else { } else {
if (my $findborrower=$query->param('findborrower')) { if (my $findborrower=$query->param('findborrower')) {
@ -201,11 +314,11 @@ EOF
print << "EOF"; print << "EOF";
<h1>Issues Module</h1> <h1>Issues Module</h1>
<form method=get> <form method=get>
<input type=hidden name=module value=issues>
<table border=1 bgcolor=#dddddd> <table border=1 bgcolor=#dddddd>
<tr><th bgcolor=black><font color=white><b>Enter borrower card number<br> or partial last name</b></font></td></tr> <tr><th bgcolor=black><font color=white><b>Enter borrower card number<br> or partial last name</b></font></td></tr>
<tr><td><input name=findborrower></td></tr> <tr><td><input name=findborrower></td></tr>
</table> </table>
<input type=hidden name=module value=issues>
</form> </form>
EOF EOF
} }