#!/usr/bin/perl
#written 11/3/2002 by Finlay
#script to execute returns of books
# Copyright 2000-2002 Katipo Communications
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
use strict;
use CGI;
use C4::Circulation::Circ2;
use C4::Search;
use C4::Output;
use C4::Print;
use C4::Reserves2;
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 $printers = getprinters(\%env);
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.="\n";
$ritext.="\n";
$ritext.="\n";
}
# Collect a few messages here...
my $messagetext='';
my $reservetext='';
############
# Deal with the requests....
if ($query->param('resbarcode')) {
my $item = $query->param('itemnumber');
my $borrnum = $query->param('borrowernumber');
my $resbarcode = $query->param('resbarcode');
# set to waiting....
my $iteminfo = getiteminformation(\%env, $item);
my $tobranchcd = ReserveWaiting($item, $borrnum);
my $branchname = $branches->{$tobranchcd}->{'branchname'};
my ($borr) = getpatroninformation(\%env, $borrnum, 0);
my $name = $borr->{'surname'}." ".$borr->{'title'}." ".$borr->{'firstname'};
my $number = "{'borrowernumber'} onClick='openWindow(this,'Member', 480, 640)'>$borr->{'cardnumber'}";
my $slip = $query->param('resslip');
printslip(\%env, $slip);
if ($tobranchcd ne $branch) {
# my ($transfered, $messages, $iteminfo) = transferbook($tobranchcd, $resbarcode, 1);
$reservetext .= <<"EOF";
Item marked Waiting:
Item: $iteminfo->{'title'} ($iteminfo->{'author'})
needs to be transfered to $branchname
to be picked up by $name ($number).
EOF
}
}
my $iteminformation;
my $borrower;
my $returned = 0;
my $messages;
my $barcode = $query->param('barcode');
# actually return book and prepare item table.....
if ($barcode) {
# decode cuecat
$barcode = cuecatbarcodedecode($barcode);
($returned, $messages, $iteminformation, $borrower) = returnbook($barcode, $branch);
$ritext.= "\n";
if ($returned) {
$returneditems{0} = $barcode;
$riborrowernumber{0} = $borrower->{'borrowernumber'};
$riduedate{0} = $iteminformation->{'date_due'};
$ritext.= "{'date_due'}>\n";
$ritext.= "{'borrowernumber'}>\n";
} elsif (! $messages->{'BadBarcode'}) {
$returneditems{0} = $barcode;
$riduedate{0} = 0;
$ritext.= "\n";
if ($messages->{'wthdrawn'}) {
$ritext.= "\n";
$riborrowernumber{0} = 'Item Cancelled';
} else {
$ritext.= "\n";
$riborrowernumber{0} = ' ';
}
}
}
##################################################################################
# HTML code....
# title....
my $title = <<"EOF";
Circulation: Returns Branch: $branches->{$branch}->{'branchname'}  
Printer: $printers->{$printer}->{'printername'} Change Settings
EOF
my $links = <<"EOF";
 
EOF
my $itemtable;
if ($iteminformation) {
$itemtable = <<"EOF";
Returned Item Information
Title: $iteminformation->{'title'}
EOF
}
# Barcode entry box, with hidden inputs attached....
my $barcodeentrytext = << "EOF";
EOF
if ($messages->{'ResFound'}) {
my $res = $messages->{'ResFound'};
my $branchname = $branches->{$res->{'branchcode'}}->{'branchname'};
my ($borr) = getpatroninformation(\%env, $res->{'borrowernumber'}, 0);
my $name = $borr->{'surname'}." ".$borr->{'title'}." ".$borr->{'firstname'};
my $number = "{'borrowernumber'} onClick='openWindow(this,'Member', 480, 640)'>$borr->{'cardnumber'}";
my ($iteminfo) = getiteminformation(\%env, 0, $barcode);
if ($res->{'ResFound'} eq "Waiting") {
$reservetext = <<"EOF";
Item marked Waiting:
Item $iteminfo->{'title'} ($iteminfo->{'author'})
is marked waiting at $branchname for $name ($number).
EOF
}
if ($res->{'ResFound'} eq "Reserved") {
my @da = localtime(time());
my $todaysdate = sprintf ("%0.2d", ($da[3]+1))."/".sprintf ("%0.2d", ($da[4]+1))."/".($da[5]+1900);
my $slip = <<"EOF";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Date: $todaysdate;
ITEM RESERVED:
$iteminfo->{'title'} ($iteminfo->{'author'})
barcode: $iteminfo->{'barcode'}
itemtype: $iteminfo->{'itemtype'}
COLLECT AT: $branchname
BORROWER:
$borr->{'title'} $borr->{'firstname'} $borr->{'surname'}
card number: $borr->{'cardnumber'}
Phone: $borr->{'phone'}
$borr->{'streetaddress'}
$borr->{'suburb'}
$borr->{'town'}
$borr->{'emailaddress'}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EOF
$reservetext = <<"EOF";
Reserve found: Item: $iteminfo->{'title'} ($iteminfo->{'author'}) {'biblionumber'}&type=intra onClick=\"openWindow(this, 'Item', 480, 640)\">$barcode
for $name ($number) to be collected at $branchname.