#!/usr/bin/perl
+# $Id$
+
#script to place reserves/requests
#writen 2/1/00 by chris@katipo.oc.nz
+
+# 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 DBI;
use C4::Search;
use C4::Output;
+use C4::Auth;
use C4::Reserves2;
-use C4::Acquisitions;
+use C4::Biblio;
use C4::Koha;
use C4::Circulation::Circ2;
-
+use HTML::Template;
+use C4::Catalogue;
use CGI;
+use C4::Date;
+
my $input = new CGI;
# get biblio information....
# get existing reserves .....
my ($count,$reserves) = FindReserves($bib);
+my $totalcount = $count;
foreach my $res (@$reserves) {
if ($res->{'found'} eq 'W') {
$count--;
# make priorities options
my $num = $count + 1;
-my $priorityoptions = priorityoptions($num, $num);
-
-
-# get branch information
-my $branch = $input->cookie('branch');
-my $branches = getbranches();
-
-warn $branch;
-
-my $branchoptions = branchoptions($branch);
+#priorityoptions building
+my @optionloop;
+for (my $i=1; $i<=$num; $i++){
+ my %option;
+ $option{num}=$i;
+ $option{selected}=($i==$num);
+ push(@optionloop, \%option);
+}
# todays date
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime(time);
$year=$year+1900;
$mon++;
-my $date="$mday/$mon/$year";
-
-
+my $date=format_date("$year-$mon-$mday");
# get biblioitem information and build rows for form
my ($count2,@data) = bibitems($bib);
-my $bibitemrows = "";
-for (my $i=0; $i<$count2; $i++){
- my @barcodes = barcodes($data[$i]->{'biblioitemnumber'});
- if ($data[$i]->{'dewey'} == 0){
- $data[$i]->{'dewey'}="";
+
+my @bibitemloop;
+foreach my $dat (sort {$b->{'dateaccessioned'} cmp $a->{'dateaccessioned'}} @data) {
+ $dat->{'dewey'}="" if ($dat->{'dewey'} == 0);
+ $dat->{'volumeddesc'} = " " unless $dat->{'volumeddesc'};
+ $dat->{'dewey'}=~ s/\.0000$//;
+ $dat->{'dewey'}=~ s/00$//;
+
+ my %abibitem;
+ my @barcodeloop;
+ my @barcodes = barcodes($dat->{'biblioitemnumber'});
+ foreach my $num (@barcodes) {
+ my %barcode;
+ $barcode{'barcode'}=$num->{'barcode'};
+ $barcode{'message'}=$num->{'itemlost'} == 1 ? "(lost)" :
+ $num->{'itemlost'} == 2 ? "(long overdue)" : "";
+ push(@barcodeloop, \%barcode);
}
- $data[$i]->{'dewey'}=~ s/\.0000$//;
- $data[$i]->{'dewey'}=~ s/00$//;
- my $class="$data[$i]->{'classification'}$data[$i]->{'dewey'}$data[$i]->{'subclass'}";
- $bibitemrows .= <<"EOF";
-<tr VALIGN=TOP>
-<TD><input type=checkbox name=reqbib value=$data[$i]->{'biblioitemnumber'}>
-<input type=hidden name=biblioitem value=$data[$i]->{'biblioitemnumber'}>
-</td>
-<TD>$data[$i]->{'description'}</td>
-<TD>$class</td>
-<td>$data[$i]->{'volumeddesc'}</td>
-<td>$data[$i]->{'isbn'}</td>
-<td>$dat->{'copyrightdate'}</td>
-<td>$data[$i]->{'publicationyear'}</td>
-<td>@barcodes</td>
-</tr>
-EOF
+ $abibitem{'barcodeloop'}=\@barcodeloop;
+ $abibitem{'class'}="$dat->{'classification'}$dat->{'dewey'}$dat->{'subclass'}";
+ my $select;
+ $abibitem{'itemlost'}=(($dat->{'notforloan'})|| ($dat->{'itemlost'} == 1)) ;
+ $abibitem{'biblioitemnumber'}=$dat->{'biblioitemnumber'};
+ $abibitem{'description'}=$dat->{'description'};
+ $abibitem{'volumeddesc'}=$dat->{'volumeddesc'};
+ $abibitem{'publicationyear'}=$dat->{'publicationyear'};
+ push(@bibitemloop,\%abibitem);
}
-my $existingreserves = "";
+#existingreserves building
+my @reserveloop;
+my $branches = getbranches();
foreach my $res (sort {$a->{'found'} cmp $b->{'found'}} @$reserves){
- my $prioropt = priorityoptions($count, $res->{'priority'});
- my $bropt = branchoptions($res->{'branchcode'});
- warn $res->{'branchcode'};
- my $bor=$res->{'borrowernumber'};
- $date = slashifyDate($res->{'reservedate'});
-
- my $type=$res->{'constrainttype'};
- if ($type eq 'a'){
- $type='Next Available';
- } elsif ($type eq 'o'){
- $type="This type only $res->{'volumeddesc'} $res->{'itemtype'}";
- }
+ my %reserve;
+# my $prioropt = priorityoptions($totalcount, $res->{'priority'});
+ my @optionloop;
+ for (my $i=1; $i<=$totalcount; $i++){
+ my %option;
+ $option{num}=$i;
+ $option{selected}=($i==$res->{'priority'});
+ push(@optionloop, \%option);
+ }
+ my @branchloop;
+ foreach my $br (keys %$branches) {
+# (next) unless $branches->{$br}->{'IS'};
+ # Only branches with the 'IS' branchrelation
+ # can issue books
+ my %abranch;
+ $abranch{'selected'}=($br eq $res->{'branchcode'});
+ $abranch{'branch'}=$br;
+ $abranch{'branchname'}=$branches->{$br}->{'branchname'};
+ push(@branchloop,\%abranch);
+ }
- my $notes = $res->{'reservenotes'}." ";
- my $rank;
- my $pickup;
- my $change;
if ($res->{'found'} eq 'W') {
- my %env;
- my $item = $res->{'itemnumber'};
- $item = getiteminformation(\%env,$item);
- $item = "<a href=/cgi-bin/koha/detail.pl?bib=$item->{'biblionumber'} &type=intra onClick=\"openWindow(this, 'Item', 480, 640)\">$item->{'barcode'}</a>";
- my $wbra = $branches->{$res->{'branchcode'}}->{'branchname'};
- $rank = "Item waiting";
- $type = $item;
- $pickup = "at <b>".$wbra."</b>";
- $change = "<input type=checkbox name=rank-request value=del>delete";
- } else {
- $rank = "<select name=rank-request>$prioropt<option value=del>Del</select>";
- $pickup = "<select name=pickup>$bropt</select>";
- $change = "<select name=itemtype>
- <option value=next>Next Available
- <option value=change>Change Selection
- <option value=nc >No Change</select>";
- }
- $existingreserves .= <<"EOF";
-<input type=hidden name=borrower value=$res->{'borrowernumber'}>
-<input type=hidden name=biblio value=$res->{'biblionumber'}>
-<tr VALIGN=TOP>
-<TD>$rank</td>
-<TD>
-<a href=/cgi-bin/koha/moremember.pl?bornum=$bor>$res->{'firstname'} $res->{'surname'}</a>
-</td>
-<td>$notes</td>
-<TD>$date</td>
-<TD>$pickup</td>
-<TD>$type</td>
-<TD>$change</td>
-</tr>
-EOF
-}
-
-
-
-sub priorityoptions {
- my ($count, $sel) = @_;
- my $out = "";
- for (my $i=1; $i<=$count; $i++){
- $out .= "<option value=$i";
- if ($sel == $i){
- $out .= " selected";
- }
- $out .= ">$i\n";
+ my %env;
+ my $item = $res->{'itemnumber'};
+ $item = getiteminformation(\%env,$item);
+ $reserve{'barcode'}=$item->{'barcode'};
+ $reserve{'biblionumber'}=$item->{'biblionumber'};
+ $reserve{'wbrcode'} = $res->{'branchcode'};
+ $reserve{'wbrname'} = $branches->{$res->{'branchcode'}}->{'branchname'};
}
- return $out;
+ $reserve{'date'} = format_date($res->{'reservedate'});
+ $reserve{'borrowernumber'}=$res->{'borrowernumber'};
+ $reserve{'biblionumber'}=$res->{'biblionumber'};
+ $reserve{'bornum'}=$res->{'borrowernumber'};
+ $reserve{'firstname'}=$res->{'firstname'};
+ $reserve{'surname'}=$res->{'surname'};
+ $reserve{'bornum'}=$res->{'borrowernumber'};
+ $reserve{'notes'}=$res->{'reservenotes'};
+ $reserve{'wait'}=($res->{'found'} eq 'W');
+ $reserve{'constrainttypea'}=($res->{'constrainttype'} eq 'a');
+ $reserve{'constrainttypeo'}=($res->{'constrainttype'} eq 'o');
+ $reserve{'voldesc'}=$res->{'volumeddesc'};
+ $reserve{'itemtype'}=$res->{'itemtype'};
+ $reserve{'branchloop'}=\@branchloop;
+ $reserve{'optionloop'}=\@optionloop;
+ push(@reserveloop,\%reserve);
}
-# make branch selection options...
-sub branchoptions {
- my ($selbr) = @_;
- my $out = "";
- foreach my $br (keys %$branches) {
- (next) unless $branches->{$br}->{'CU'};
- my $selected = "";
- if ($br eq $selbr) {
- $selected = "selected";
- }
- $out .= "<option value=$br $selected>$branches->{$br}->{'branchname'}\n";
- }
- return $out;
+my @branches;
+my @select_branch;
+my %select_branches;
+my ($count2,@branches)=branches();
+for (my $i=0;$i<$count2;$i++){
+ push @select_branch, $branches[$i]->{'branchcode'};#
+ $select_branches{$branches[$i]->{'branchcode'}} = $branches[$i]->{'branchname'};
}
+my $CGIbranch=CGI::scrolling_list( -name => 'pickup',
+ -values => \@select_branch,
+ -labels => \%select_branches,
+ -size => 1,
+ -multiple => 0 );
-
-
-# printout the page
-
-
-print $input->header;
-
+#get the time for the form name...
+my $time = time();
#setup colours
-print startpage();
-print startmenu('catalogue');
-
-
-
-
-print <<printend
-
-<form action="placerequest.pl" method=post>
-<INPUT TYPE="image" name="submit" VALUE="request" height=42 WIDTH=187 BORDER=0 src="/images/place-request.gif" align=right >
-<input type=hidden name=biblio value=$bib>
-<input type=hidden name=type value=str8>
-<input type=hidden name=title value="$dat->{'title'}">
-<FONT SIZE=6><em>Requesting: <br>
-<a href=/cgi-bin/koha/detail.pl?bib=$bib>$dat->{'title'}</a>
-($dat->{'author'})</em></FONT><P>
-<p>
-
-
-<!----------------BIBLIO RESERVE TABLE-------------->
-
-
-<TABLE CELLSPACING=0 CELLPADDING=5 border=1 >
-<TR VALIGN=TOP>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Rank</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Member Number</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Notes</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Date</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Pickup</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Request</b></TD>
-</TR>
-<tr VALIGN=TOP >
-<td><select name=rank-request>
-$priorityoptions
-</select></td>
-<td><input type=text size=10 name=member></td>
-<td><input type=text size=20 name=notes></td>
-<td>$date</td>
-<td><select name=pickup>
-$branchoptions
-</select></td>
-<td><input type=checkbox name=request value=any>Next Available,
-<br>(or choose from list below)</td>
-</tr></table>
-</p>
-
-
-<TABLE CELLSPACING=0 CELLPADDING=5 border=1 >
-<TR VALIGN=TOP>
-
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Request</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Item Type</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Classification</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Volume</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>ISBN</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Copyright</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Pubdate</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Copies</b></TD>
-</TR>
-$bibitemrows
-</table>
-</p>
-</form>
-<p> </p>
-
-
-
-<!-----------MODIFY EXISTING REQUESTS----------------->
-
-<TABLE CELLSPACING=0 CELLPADDING=5 border=1 >
-
-<TR VALIGN=TOP>
-
-<td bgcolor="99cc33" background="/images/background-mem.gif" colspan=7><B>MODIFY EXISTING REQUESTS </b></TD>
-</TR>
-<form action=modrequest.pl method=post>
-<TR VALIGN=TOP>
-
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Rank</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Member</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Notes</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Date</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Pickup</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Request</b></TD>
-<td bgcolor="99cc33" background="/images/background-mem.gif"><B>Change To</b></TD>
-</TR>
-$existingreserves
-<tr VALIGN=TOP>
-<TD colspan=6 align=right>
-Delete a request by selecting "del" from the rank list.
-<INPUT TYPE="image" name="submit" VALUE="request" height=42 WIDTH=64 BORDER=0 src="/images/ok.gif"></td>
-</tr>
-</table>
-<P>
-<br>
-</form>
-
-printend
-;
-
-print endmenu();
-print endpage();
+my ($template, $borrowernumber, $cookie)
+ = get_template_and_user({template_name => "request.tmpl",
+ query => $input,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => {parameters => 1},
+ });
+$template->param( optionloop =>\@optionloop,
+ CGIbranch => $CGIbranch,
+ reserveloop => \@reserveloop,
+ 'time' => $time,
+ bibitemloop => \@bibitemloop,
+ date => $date,
+ bib => $bib,
+ title =>$dat->{title});
+# printout the page
+print $input->header(-expires=>'now'), $template->output;