Changes to web circulation module: rudimentary returns module, arbitrary
authortonnesen <tonnesen>
Tue, 23 Jan 2001 23:48:54 +0000 (23:48 +0000)
committertonnesen <tonnesen>
Tue, 23 Jan 2001 23:48:54 +0000 (23:48 +0000)
due date for issues, flag info displayed, overdue books are displayed in
red.

C4/Circulation/Circ2.pm
circ/circulation.pl

index b5555ed..a544d2e 100755 (executable)
@@ -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;
index baf2000..754cf46 100755 (executable)
@@ -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
        }