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 @datearr = localtime($datedue);
$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'}')");
$sth->execute;
$sth->finish;

View file

@ -35,10 +35,58 @@ print << "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 {
if (my $borrnumber=$query->param('borrnumber')) {
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')) {
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;
foreach (sort $query->param) {
if ($_ =~ /response-(\d*)/) {
@ -48,65 +96,90 @@ sub issues {
if (my $qnumber=$query->param('questionnumber')) {
$responses{$qnumber}=$query->param('answer');
}
my ($iteminformation, $duedate, $rejected, $question, $questionnumber, $defaultanswer) = issuebook(\%env, $borrower, $barcode, \%responses);
if ($rejected) {
if ($rejected == -1) {
} else {
print "Error issuing book: $rejected<br>\n";
unless ($invalidduedate) {
my ($iteminformation, $duedate, $rejected, $question, $questionnumber, $defaultanswer) = issuebook(\%env, $borrower, $barcode, \%responses);
if ($rejected) {
if ($rejected == -1) {
} else {
print "Error issuing book: $rejected<br>\n";
}
}
}
my $responsesform='';
foreach (keys %responses) {
$responsesform.="<input type=hidden name=response-$_ value=$responses{$_}>\n";
}
if ($question) {
print << "EOF";
<table border=1 bgcolor=#dddddd>
<tr><th bgcolor=black><font color=white><b>Issuing Question</b></font></td></tr>
<tr><td>
Attempting to issue $iteminformation->{'title'} by $iteminformation->{'author'} to $borrower->{'firstname'} $borrower->{'surname'}.
<br>
$question
</td></tr>
my $responsesform='';
foreach (keys %responses) {
$responsesform.="<input type=hidden name=response-$_ value=$responses{$_}>\n";
}
if ($question) {
my $stickyduedate=$query->param('stickyduedate');
print << "EOF";
<table border=1 bgcolor=#dddddd>
<tr><th bgcolor=black><font color=white><b>Issuing Question</b></font></td></tr>
<tr><td>
Attempting to issue $iteminformation->{'title'} by $iteminformation->{'author'} to $borrower->{'firstname'} $borrower->{'surname'}.
<br>
$question
</td></tr>
<tr><td align=center>
<table border=0>
<tr><td>
<form method=get>
<input type=hidden name=module value=issues>
<input type=hidden name=borrnumber value=$borrnumber>
<input type=hidden name=barcode value=$barcode>
<input type=hidden name=questionnumber value=$questionnumber>
$responsesform
<input type=hidden name=answer value=Y>
<input type=submit value=Yes>
</form>
</td>
<td>
<form method=get>
<input type=hidden name=module value=issues>
<input type=hidden name=borrnumber value=$borrnumber>
<input type=hidden name=barcode value=$barcode>
<input type=hidden name=questionnumber value=$questionnumber>
$responsesform
<input type=hidden name=answer value=N>
<input type=submit value=No>
</form>
</td>
</tr>
</table>
</td></tr>
</table>
<tr><td align=center>
<table border=0>
<tr><td>
<form method=get>
<input type=hidden name=module value=issues>
<input type=hidden name=borrnumber value=$borrnumber>
<input type=hidden name=barcode value=$barcode>
<input type=hidden name=questionnumber value=$questionnumber>
<input type=hidden name=day value=$day>
<input type=hidden name=month value=$month>
<input type=hidden name=year value=$year>
<input type=hidden name=stickyduedate value=$stickyduedate>
$responsesform
<input type=hidden name=answer value=Y>
<input type=submit value=Yes>
</form>
</td>
<td>
<form method=get>
<input type=hidden name=module value=issues>
<input type=hidden name=borrnumber value=$borrnumber>
<input type=hidden name=barcode value=$barcode>
<input type=hidden name=questionnumber value=$questionnumber>
<input type=hidden name=day value=$day>
<input type=hidden name=month value=$month>
<input type=hidden name=year value=$year>
<input type=hidden name=stickyduedate value=$stickyduedate>
$responsesform
<input type=hidden name=answer value=N>
<input type=submit value=No>
</form>
</td>
</tr>
</table>
</td></tr>
</table>
EOF
return;
return;
}
}
}
my $issueid=$query->param('issueid');
($issueid) || ($issueid=int(rand()*1000000000));
my $flag='';
my $flagtext='';
my $flaginfotext='';
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;
my ($borrowerissues) = currentissues(\%env, $borrower);
@ -132,19 +205,57 @@ EOF
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";
}
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";
<form method=get>
<input type=hidden name=module value=issues>
<input type=hidden name=borrnumber value=$borrnumber>
<table border=0 cellpadding=5>
<tr>
<td align=left>
<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 border=1 bgcolor=#dddddd>
<tr><td bgcolor=black><font color=white><b>Enter Book Barcode</b></font></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>
<input type=hidden name=module value=issues>
<input type=hidden name=borrnumber value=$borrnumber>
</form>
</td>
<td align=right>
<td align=right valign=top>
<table border=1 bgcolor=#dddddd>
<tr><th bgcolor=black><font color=white><b>Patron Information</b></font></td></tr>
<tr><td>
@ -158,7 +269,7 @@ EOF
<tr>
<td colspan=2 align=center>
<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>
$todaysissues
</table>
@ -174,6 +285,8 @@ EOF
</td>
</tr>
</table>
<p>
$flaginfotext
EOF
} else {
if (my $findborrower=$query->param('findborrower')) {
@ -201,11 +314,11 @@ EOF
print << "EOF";
<h1>Issues Module</h1>
<form method=get>
<input type=hidden name=module value=issues>
<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><td><input name=findborrower></td></tr>
</table>
<input type=hidden name=module value=issues>
</form>
EOF
}