277f3490be
added returns.pl -> deals with the returns only moved old circulation.pl to circulationold.pl which still deals with issues. fixed up branchtransfers.pl moved circulation2.pl to circulation.pl Note more changes coming next week
316 lines
9.8 KiB
Perl
Executable file
316 lines
9.8 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
#written 11/3/2002 by Finlay
|
|
#script to execute returns of books
|
|
|
|
use strict;
|
|
use CGI;
|
|
use C4::Circulation::Circ2;
|
|
use C4::Search;
|
|
use C4::Output;
|
|
|
|
|
|
my %env;
|
|
my $headerbackgroundcolor='#99cc33';
|
|
my $circbackgroundcolor='#ffffcc';
|
|
my $circbackgroundcolor='white';
|
|
my $linecolor1='#ffffcc';
|
|
my $linecolor2='white';
|
|
my $backgroundimage="/images/background-mem.gif";
|
|
|
|
my $query=new CGI;
|
|
my $branches = getbranches();
|
|
|
|
my $branch = $query->param("branch");
|
|
my $printer = $query->param("printer");
|
|
|
|
($branch) || ($branch=$query->cookie('branch')) ;
|
|
($printer) || ($printer=$query->cookie('printer')) ;
|
|
|
|
#
|
|
# Some code to handle the error if there is no branch or printer setting.....
|
|
#
|
|
|
|
$env{'branchcode'}=$branch;
|
|
$env{'printer'}=$printer;
|
|
$env{'queue'}=$printer;
|
|
|
|
# Set up the item stack ....
|
|
my $ritext = '';
|
|
my %returneditems;
|
|
my %riduedate;
|
|
my %riborrowernumber;
|
|
foreach ($query->param) {
|
|
(next) unless (/ri-(\d*)/);
|
|
my $counter=$1;
|
|
(next) if ($counter>20);
|
|
my $barcode=$query->param("ri-$counter");
|
|
my $duedate=$query->param("dd-$counter");
|
|
my $borrowernumber=$query->param("bn-$counter");
|
|
$counter++;
|
|
# decode cuecat
|
|
$barcode = cuecatbarcodedecode($barcode);
|
|
$returneditems{$counter}=$barcode;
|
|
$riduedate{$counter}=$duedate;
|
|
$riborrowernumber{$counter}=$borrowernumber;
|
|
$ritext.="<input type=hidden name=ri-$counter value=$barcode>\n";
|
|
$ritext.="<input type=hidden name=dd-$counter value=$duedate>\n";
|
|
$ritext.="<input type=hidden name=bn-$counter value=$borrowernumber>\n";
|
|
}
|
|
|
|
my $iteminformation;
|
|
my $borrower;
|
|
my $returned = 0;
|
|
my $messages;
|
|
# actually return book (SQL CALL) and prepare item table.....
|
|
if (my $barcode = $query->param('barcode')) {
|
|
# decode cuecat
|
|
$barcode = cuecatbarcodedecode($barcode);
|
|
($returned, $messages, $iteminformation, $borrower) = returnbook2(\%env, $barcode);
|
|
if ($returned) {
|
|
$returneditems{0} = $barcode;
|
|
$riborrowernumber{0} = $borrower->{'borrowernumber'};
|
|
$riduedate{0} = $iteminformation->{'date_due'};
|
|
$ritext.= "<input type=hidden name=ri-0 value=$barcode>\n";
|
|
$ritext.= "<input type=hidden name=dd-0 value=$iteminformation->{'date_due'}>\n";
|
|
$ritext.= "<input type=hidden name=bn-0 value=$borrower->{'borrowernumber'}>\n";
|
|
}
|
|
}
|
|
|
|
##################################################################################
|
|
# HTML code....
|
|
# title....
|
|
my $title = <<"EOF";
|
|
<p align=right>
|
|
<FONT SIZE=2 face="arial, helvetica">
|
|
<a href=circulationold.pl?module=issues&branch=$branch&printer=$printer&print>Next Borrower</a> ||
|
|
<a href=returns.pl>Returns</a> ||
|
|
<a href=branchtransfers.pl>Transfers</a></font></p>
|
|
<FONT SIZE=6><em>Circulation: Returns</em></FONT>
|
|
|
|
EOF
|
|
|
|
my $itemtable;
|
|
if ($iteminformation) {
|
|
$itemtable = <<"EOF";
|
|
<table border=1 cellpadding=5 cellspacing=0>
|
|
<tr><th bgcolor=$headerbackgroundcolor background=$backgroundimage>
|
|
<font color=black>Returned Item Information</font></th></tr>
|
|
<tr><td>
|
|
Title: $iteminformation->{'title'}<br>
|
|
<!--Hlt decided they dont want these showing, uncoment the html to make it work
|
|
|
|
Author: $iteminformation->{'author'}<br>
|
|
Barcode: <a href=/cgi-bin/koha/detail.pl?bib=$iteminformation->{'biblionumber'}
|
|
&type=intra onClick="openWindow(this, 'Item', 480, 640)">$iteminformation->{'barcode'}</a><br>
|
|
Date Due: $iteminformation->{'date_due'}-->
|
|
</td></tr>
|
|
</table>
|
|
<p>
|
|
EOF
|
|
}
|
|
|
|
# Barcode entry box, with hidden inputs attached....
|
|
my $barcodeentrytext= << "EOF";
|
|
<form method=post action=/cgi-bin/koha/circ/returns.pl>
|
|
<table border=1 cellpadding=5 cellspacing=0 align=left>
|
|
<tr><td colspan=2 bgcolor=$headerbackgroundcolor align=center background=$backgroundimage>
|
|
<font color=black><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=branch value=$branch>
|
|
<input type=hidden name=printer value=$printer>
|
|
$ritext
|
|
</form>
|
|
EOF
|
|
|
|
# collect the messages and put into message table....
|
|
my $messagetable;
|
|
if ($messages) {
|
|
my $messagetext='';
|
|
foreach (@$messages) {
|
|
$messagetext .= "$_<br>";
|
|
}
|
|
$messagetext = substr($messagetext, 0, -4);
|
|
if ($messagetext) {
|
|
$messagetable = << "EOF";
|
|
<table border=1 cellpadding=5 cellspacing=0>
|
|
<tr><th bgcolor=$headerbackgroundcolor background=$backgroundimage><font color=black>Messages</font></th></tr>
|
|
<tr><td>
|
|
$messagetext
|
|
</td></tr>
|
|
</table>
|
|
<p>
|
|
EOF
|
|
}
|
|
}
|
|
|
|
# patrontable ....
|
|
my $borrowertable;
|
|
if ($borrower) {
|
|
my $patrontable = << "EOF";
|
|
<table border=1 cellpadding=5 cellspacing=0 align=right>
|
|
<tr><td colspan=2 bgcolor=$headerbackgroundcolor background=$backgroundimage>
|
|
<font color=black><b>Patron Information</b></font></td></tr>
|
|
<tr><td colspan=2>
|
|
<a href=/cgi-bin/koha/moremember.pl?bornum=$borrower->{'borrowernumber'}
|
|
onClick="openWindow(this,'Member', 480, 640)">$borrower->{'cardnumber'}</a>
|
|
$borrower->{'surname'}, $borrower->{'title'} $borrower->{'firstname'}<br>
|
|
</td></tr></table>
|
|
EOF
|
|
my $flags = $borrower->{'flags'};
|
|
my $flaginfotext='';
|
|
my $flag;
|
|
my $color = '';
|
|
foreach $flag (sort keys %$flags) {
|
|
($color eq $linecolor1) ? ($color=$linecolor2) : ($color=$linecolor1);
|
|
$flags->{$flag}->{'message'}=~s/\n/<br>/g;
|
|
if ($flags->{$flag}->{'noissues'}) {
|
|
if ($flag eq 'CHARGES') {
|
|
$flaginfotext.= <<"EOF";
|
|
<tr><td valign=top><font color=red>$flag</font></td>
|
|
<td bgcolor=$color><b>$flags->{$flag}->{'message'}</b>
|
|
<a href=/cgi-bin/koha/pay.pl?bornum=$borrower->{'borrowernumber'}
|
|
onClick=\"openWindow(this, 'Payment', 480,640)\">Payment</a></td></tr>
|
|
EOF
|
|
} else {
|
|
$flaginfotext.= <<"EOF";
|
|
<tr><td valign=top><font color=red>$flag</font></td>
|
|
<td bgcolor=$color>$flags->{$flag}->{'message'}</td></tr>
|
|
EOF
|
|
}
|
|
} else {
|
|
if ($flag eq 'CHARGES') {
|
|
$flaginfotext .= << "EOF";
|
|
<tr><td valign=top>$flag</td>
|
|
<td> $flags->{$flag}->{'message'} <a href=/cgi-bin/koha/pay.pl?bornum=$borrower->{'borrowernumber'}
|
|
onClick=\"openWindow(this, 'Payment', 480,640)\">Payment</a></td></tr>
|
|
EOF
|
|
} elsif ($flag eq 'WAITING') {
|
|
my $itemswaiting='';
|
|
my $items = $flags->{$flag}->{'itemlist'};
|
|
foreach my $item (@$items) {
|
|
my ($iteminformation) = getiteminformation(\%env, $item->{'itemnumber'}, 0);
|
|
$itemswaiting .= <<"EOF";
|
|
<a href=/cgi-bin/koha/detail.pl?bib=$iteminformation->{'biblionumber'}&type=intra
|
|
onClick=\"openWindow(this, 'Item', 480, 640)\">$iteminformation->{'barcode'}</a>
|
|
$iteminformation->{'title'} ($branches->{$iteminformation->{'holdingbranch'}}->{'branchname'})<br>
|
|
EOF
|
|
}
|
|
$flaginfotext.="<tr><td valign=top>$flag</td><td>$itemswaiting</td></tr>\n";
|
|
} elsif ($flag eq 'ODUES') {
|
|
my $items = $flags->{$flag}->{'itemlist'};
|
|
$flaginfotext .= <<"EOF";
|
|
<tr><td bgcolor=$color><font color=red>$flag</font></td>
|
|
<td bgcolor=$color>Patron has Overdue books</td></tr>
|
|
EOF
|
|
} else {
|
|
$flaginfotext .= "<tr><td valign=top>$flag</td><td>$flags->{$flag}->{'message'}</td></tr>\n";
|
|
}
|
|
}
|
|
}
|
|
if ($flaginfotext) {
|
|
$flaginfotext = << "EOF";
|
|
<table border=1 cellpadding=5 cellspacing=0> <tr><td bgcolor=$headerbackgroundcolor background=$backgroundimage colspan=2><b>Flags</b></td></tr>
|
|
$flaginfotext
|
|
</table>
|
|
EOF
|
|
}
|
|
$borrowertable = << "EOF";
|
|
<table border=0 cellpadding=5>
|
|
<tr>
|
|
<td valign=top>$patrontable</td>
|
|
<td valign=top>$flaginfotext</td>
|
|
</tr>
|
|
</table>
|
|
EOF
|
|
}
|
|
|
|
# the returned items.....
|
|
my $returneditemstable = << "EOF";
|
|
<br><p>
|
|
<table border=1 cellpadding=5 cellspacing=0 align=left>
|
|
<tr><th colspan=6 bgcolor=$headerbackgroundcolor background=$backgroundimage>
|
|
<font color=black>Returned Items</font></th></tr>
|
|
<tr><th>Due Date</th><th>Bar Code</th><th>Title</th><th>Author</th><th>Type</th><th>Borrower</th></tr>
|
|
EOF
|
|
|
|
my $color='';
|
|
#set up so only the lat 8 returned items display (make for faster loading pages)
|
|
my $count=0;
|
|
foreach (sort {$a <=> $b} keys %returneditems) {
|
|
if ($count < 8) {
|
|
($color eq $linecolor1) ? ($color=$linecolor2) : ($color=$linecolor1);
|
|
my $barcode = $returneditems{$_};
|
|
my $duedate = $riduedate{$_};
|
|
my @datearr = localtime(time());
|
|
###
|
|
# convert to nz date format
|
|
my @tempdate = split(/-/,$duedate);
|
|
$duedate = "$tempdate[2]/$tempdate[1]/$tempdate[0]";
|
|
####
|
|
my $todaysdate
|
|
= (1900+$datearr[5]).'-'.sprintf ("%0.2d", ($datearr[4]+1)).'-'.sprintf ("%0.2d", $datearr[3]);
|
|
my $overduetext = "$duedate";
|
|
($overduetext="<font color=red>$duedate</font>") if ($duedate lt $todaysdate);
|
|
($duedate) || ($overduetext = "<img src=/images/blackdot.gif>");
|
|
my $borrowernumber = $riborrowernumber{$_};
|
|
my ($borrower) = getpatroninformation(\%env,$borrowernumber,0);
|
|
my ($iteminformation) = getiteminformation(\%env, 0, $barcode);;
|
|
$returneditemstable .= << "EOF";
|
|
<tr><td bgcolor=$color>$overduetext</td>
|
|
<td bgcolor=$color align=center>
|
|
<a href=/cgi-bin/koha/detail.pl?bib=$iteminformation->{'biblionumber'}&type=intra onClick=\"openWindow(this, 'Item', 480, 640)\">$barcode</a></td>
|
|
<td bgcolor=$color>$iteminformation->{'title'}</td>
|
|
<td bgcolor=$color>$iteminformation->{'author'}</td>
|
|
<td bgcolor=$color align=center>$iteminformation->{'itemtype'}</td>
|
|
<td bgcolor=$color>
|
|
<a href=/cgi-bin/koha/moremember.pl?bornum=$borrower->{'borrowernumber'} onClick=\"openWindow(this,'Member', 480, 640)\">$borrower->{'cardnumber'}</a> $borrower->{'firstname'} $borrower->{'surname'}</td></tr>
|
|
EOF
|
|
} else {
|
|
last;
|
|
}
|
|
$count++;
|
|
}
|
|
$returneditemstable .= "</table>\n";
|
|
|
|
|
|
# actually print the page!
|
|
|
|
|
|
print $query->header();
|
|
print startpage();
|
|
print startmenu('circulation');
|
|
|
|
print $title;
|
|
|
|
# my $flags = $borrower->{'flags'};
|
|
# foreach my $key (keys %$flags) {
|
|
# print "$key : $flags->{$key} <br> ";
|
|
# }
|
|
|
|
print $barcodeentrytext;
|
|
|
|
print $messagetable;
|
|
|
|
if ($returned) {
|
|
print $itemtable;
|
|
print $borrowertable;
|
|
}
|
|
(print $returneditemstable) if (%returneditems);
|
|
|
|
print endmenu('circulation');
|
|
print endpage();
|
|
|
|
sub cuecatbarcodedecode {
|
|
my ($barcode) = @_;
|
|
chomp($barcode);
|
|
my @fields = split(/\./,$barcode);
|
|
my @results = map(decode($_), @fields[1..$#fields]);
|
|
if ($#results == 2){
|
|
return $results[2];
|
|
} else {
|
|
return $barcode;
|
|
}
|
|
}
|
|
|