use strict;
use CGI;
use C4::Circulation::Circ2;
-use C4::Search;
use C4::Output;
+###############################################
+# constants
my %env;
my $headerbackgroundcolor='#99cc33';
my $linecolor2='white';
my $backgroundimage="/images/background-mem.gif";
+my $branches = getbranches();
+my $printers = getprinters(\%env);
+
+
+###############################################
+# Getting state
+
my $query=new CGI;
-my $branches=getbranches(\%env);
+
+
+my $branch = $query->param("branch");
+my $printer = $query->param("printer");
+
+
+($branch) || ($branch=$query->cookie('branch')) ;
+($printer) || ($printer=$query->cookie('printer')) ;
+
my $tobranchcd=$query->param('tobranchcd');
my $frbranchcd='';
-$env{'tobranchcd'}=$tobranchcd;
-
+# set up the branchselect options....
my $tobranchoptions;
-foreach (keys %$branches) {
- (next) unless ($_);
- (next) if (/^TR$/);
- my $selected='';
- ($selected='selected') if ($_ eq $tobranchcd);
- $tobranchoptions.="<option value=$_ $selected>$branches->{$_}->{'branchname'}\n";
+foreach my $br (keys %$branches) {
+ (next) unless $branches->{$br}->{'CU'};
+ my $selected='';
+ ($selected='selected') if ($br eq $tobranchcd);
+ $tobranchoptions.="<option value=$br $selected>$branches->{$br}->{'branchname'}\n";
}
# collect the stack of books already transfered so they can printed...
foreach ($query->param){
(next) unless (/bc-(\d*)/);
my $counter=$1;
- (next) if ($counter>20);
my $barcode=$query->param("bc-$counter");
my $frbcd=$query->param("fb-$counter");
my $tobcd=$query->param("tb-$counter");
$ritext.="<input type=hidden name=tb-$counter value=$tobcd>\n";
}
+# Warnings etc that get displayed at top of next page....
+my $messages;
#if the barcode has been entered action that and write a message and onto the top of the stack...
my $iteminformation;
-my @messages;
-my $todaysdate;
if (my $barcode=$query->param('barcode')) {
- my $iteminformation = getiteminformation(\%env,0, $barcode);
- my $fail=0;
- if (not $iteminformation) {
- $fail=1;
- @messages = ("There is no book with barcode: $barcode ", @messages);
- }
- $frbranchcd = $iteminformation->{'holdingbranch'};
- %env->{'frbranchcd'} = $frbranchcd;
- if ($frbranchcd eq $tobranchcd) {
- $fail=1;
- @messages = ("You can't transfer the book to the branch it is already at!", @messages);
- }
-# should add some more tests ... like is the book already out, maybe it cant be moved....
- if (not $fail) {
- my ($transfered, $message) = transferbook(\%env, $iteminformation, $barcode);
- if (not $transfered) {@messages = ($message, @messages);}
- else {
- $ritext.="<input type=hidden name=bc-0 value=$barcode>\n";
- $ritext.="<input type=hidden name=fb-0 value=$frbranchcd>\n";
- $ritext.="<input type=hidden name=tb-0 value=$tobranchcd>\n";
- $transfereditems{0}=$barcode;
- $frbranchcds{0}=$frbranchcd;
- $tobranchcds{0}=$tobranchcd;
- @messages = ("Book: $barcode has been transfered", @messages);
- }
+ my $transfered;
+ my $iteminformation;
+ ($transfered, $messages, $iteminformation) = transferbook($tobranchcd, $barcode);
+ if ($transfered) {
+ my $frbranchcd = $iteminformation->{'holdingbranch'};
+ $ritext.="<input type=hidden name=bc-0 value=$barcode>\n";
+ $ritext.="<input type=hidden name=fb-0 value=$frbranchcd>\n";
+ $ritext.="<input type=hidden name=tb-0 value=$tobranchcd>\n";
+ $transfereditems{0}=$barcode;
+ $frbranchcds{0}=$frbranchcd;
+ $tobranchcds{0}=$tobranchcd;
}
}
+
+#################################################################################
+# Html code....
+
my $entrytext= << "EOF";
<form method=post action=/cgi-bin/koha/circ/branchtransfers.pl>
-<table border=0 cellpadding=5 cellspacing=0 bgcolor=#dddddd >
-<tr><td colspan=2 bgcolor=$headerbackgroundcolor align=center background=$backgroundimage>
+<table border=1 cellpadding=5 cellspacing=0 align=left>
+<tr><td colspan=2 align=center background=$backgroundimage>
<font color=black><b>Select Branch</b></font></td></tr>
-<tr><td>Destination Branch:</td><td>
- <select name=tobranchcd> $tobranchoptions </select>
-</td></tr>
+<tr><td>Destination Branch:</td>
+ <td><select name=tobranchcd> $tobranchoptions </select></td></tr></table>
-</table><table border=0 cellpadding=5 cellspacing=0 bgcolor=#dddddd >
-<tr><td colspan=2 bgcolor=$headerbackgroundcolor align=center background=$backgroundimage>
+<img src="/images/holder.gif" width=24 height=50 align=left>
+
+<table border=1 cellpadding=5 cellspacing=0 ><tr>
+<td colspan=2 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=tobranchcd value=$tobranchcd>
$ritext
+</form>
EOF
-my $messagetable;
-if (@messages) {
- my $messagetext='';
- foreach (@messages) {
- $messagetext.="$_<p>\n";
+
+
+#####################
+
+my $reservefoundtext;
+if ($messages->{'ResFound'}) {
+ my $resrec = $messages->{'ResFound'};
+ my ($borr) = getpatroninformation(\%env, $resrec->{'borrowernumber'}, 0);
+ my $name = $borr->{'surname'}." ".$borr->{'title'}." ".$borr->{'firstname'};
+ my $number = "<a href=/cgi-bin/koha/moremember.pl?bornum=$borr->{'borrowernumber'} onClick='openWindow(this,'Member', 480, 640)'>$borr->{'cardnumber'}</a>";
+ my $branch = $branches->{$resrec->{'branchcode'}}->{'branchname'};
+ my $reservetext = "<font size='+2' color='red'>RESERVED</font><font size='+2'> for collection by $name ($number) at $branch </font>";
+ $reservefoundtext = <<"EOF";
+<table border=1 cellpadding=5 cellspacing=0 bgcolor='#dddddd'>
+<tr><th bgcolor=$headerbackgroundcolor background=$backgroundimage><font>Reserve Found</font></th></tr>
+<tr><td> $reservetext </td></tr></table>
+EOF
+}
+
+#####################
+
+my $messagetext='';
+foreach my $code (keys %$messages) {
+ if ($code eq 'BadBarcode'){
+ $messagetext .= "<font color='red' size='+2'> No Item with barcode: $messages->{'BadBarcode'} </font> <br>";
+ }
+ if ($code eq 'IsPermanent'){
+ my $braname = $branches->{$messages->{'IsPermanent'}}->{'branchname'};
+ $messagetext .= "<font color='red' size='+2'> Please return item to home branch: $braname </font> <br>";
+ }
+ if ($code eq 'DestinationEqualsHolding'){
+ $messagetext .= "<font color='red' size='+2'> Item is already at destination branch. </font> <br>";
}
+ if ($code eq 'WasReturned') {
+ my ($borrowerinfo) = getpatroninformation(\%env, $messages->{'WasReturned'}, 0);
+
+ my $binfo = <<"EOF";
+<a href=/cgi-bin/koha/moremember.pl?bornum=$borrowerinfo->{'borrowernumber'}
+onClick="openWindow(this,'Member', 480, 640)">$borrowerinfo->{'cardnumber'}</a>
+$borrowerinfo->{'surname'}, $borrowerinfo->{'title'} $borrowerinfo->{'firstname'}
+EOF
+ $messagetext .= "Item was on loan to $binfo and has been returned. <br>";
+ }
+ if ($code eq 'WasTransfered'){
+ }
+}
+$messagetext = substr($messagetext, 0, -4);
+
+my $messagetable;
+if ($messagetext) {
$messagetable = << "EOF";
-<table border=0 cellpadding=5 cellspacing=0 bgcolor='#dddddd'>
-<tr><th bgcolor=$headerbackgroundcolor background=$backgroundimage><font color=black>Messages</font></th></tr>
+<table border=1 cellpadding=5 cellspacing=0 bgcolor='#dddddd'>
+<tr><th bgcolor=$headerbackgroundcolor background=$backgroundimage><font>Messages</font></th></tr>
<tr><td> $messagetext </td></tr></table>
EOF
}
-
+#######################################################################################
+# Make the page .....
print $query->header;
print startpage;
print startmenu('circulation');
-print "<h3>Branch Transfers</h3>";
-
+print <<"EOF";
+<p>
+<table border=0 cellpadding=5 width=90%><tr>
+<td align="left"><FONT SIZE=6><em>Circulation: Transfers</em></FONT><br>
+<b>Branch:</b> $branches->{$branch}->{'branchname'}  
+<b>Printer:</b> $printers->{$printer}->{'printername'}<br>
+<a href=selectbranchprinter.pl>Change Settings</a>
+</td>
+<td align="right">
+<FONT SIZE=2 face="arial, helvetica">
+<a href=circulation.pl>Next Borrower</a> ||
+<a href=returns.pl>Returns</a> ||
+<a href=branchtransfers.pl>Transfers</a></font><p>
+</td></tr></table>
+<input type=hidden name=branch value=$branch>
+<input type=hidden name=printer value=$printer>
+</p>
+EOF
-print $messagetable if (@messages);
+print $reservefoundtext;
+print $messagetable;
print $entrytext;
if (%transfereditems) {
print << "EOF";
<p>
-<table border=0 cellpadding=5 cellspacing=0 bgcolor=#dddddd>
+<table border=1 cellpadding=5 cellspacing=0 bgcolor=#dddddd>
<tr><th colspan=6 bgcolor=$headerbackgroundcolor background=$backgroundimage><font color=black>Transfered Items</font></th></tr>
<tr><th>Bar Code</th><th>Title</th><th>Author</th><th>Type</th><th>From</th><th>To</th></tr>
EOF
print endpage;
-############################################################################
-#
-# this is the database query that will go into C4::Circuation::Circ2
-#
-
-use DBI;
-use C4::Database;
-
-sub transferbook {
- my ($env, $iteminformation, $barcode) = @_;
- my $messages;
- my $dbh=&C4Connect;
- #new entry in branchtransfers....
- my $sth = $dbh->prepare("insert into branchtransfers (itemnumber, frombranch, datearrived, tobranch) values($iteminformation->{'itemnumber'}, '$env->{'frbranchcd'}', now(), '$env->{'tobranchcd'}')");
- $sth->execute || return (0,"database error: $sth->errstr");
- $sth->finish;
- #update holdingbranch in items .....
- $sth = $dbh->prepare("update items set holdingbranch='$env->{'tobranchcd'}' where items.itemnumber=$iteminformation->{'itemnumber'}");
- $sth->execute || return (0,"database error: $sth->errstr");
- $sth->execute;
- $sth->finish;
- $dbh->disconnect;
- return (1, $messages);
-}
-
-