201 lines
6 KiB
Perl
Executable file
201 lines
6 KiB
Perl
Executable file
#!/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 C4::Search;
|
|
use C4::Output;
|
|
use C4::Interface::CGI::Output;
|
|
use C4::Auth;
|
|
use C4::Reserves2;
|
|
use C4::Biblio;
|
|
use C4::Koha;
|
|
use C4::Circulation::Circ2;
|
|
use HTML::Template;
|
|
use C4::Acquisition;
|
|
use CGI;
|
|
use C4::Date;
|
|
|
|
my $input = new CGI;
|
|
|
|
# get biblio information....
|
|
my $bib = $input->param('bib');
|
|
my $dat = bibdata($bib);
|
|
|
|
# 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;
|
|
|
|
#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=format_date("$year-$mon-$mday");
|
|
|
|
|
|
# get biblioitem information and build rows for form
|
|
my ($count2,@data) = bibitems($bib);
|
|
|
|
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);
|
|
}
|
|
$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);
|
|
}
|
|
|
|
|
|
|
|
#existingreserves building
|
|
my @reserveloop;
|
|
my $branches = getbranches();
|
|
foreach my $res (sort {$a->{'found'} cmp $b->{'found'}} @$reserves){
|
|
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);
|
|
}
|
|
|
|
if ($res->{'found'} eq 'W') {
|
|
my %env;
|
|
my $item = $res->{'itemnumber'};
|
|
$item = getiteminformation(\%env,$item);
|
|
$reserve{'holdingbranch'}=$item->{'holdingbranch'};
|
|
$reserve{'barcode'}=$item->{'barcode'};
|
|
$reserve{'biblionumber'}=$item->{'biblionumber'};
|
|
$reserve{'wbrcode'} = $res->{'branchcode'};
|
|
$reserve{'wbrname'} = $branches->{$res->{'branchcode'}}->{'branchname'};
|
|
if($reserve{'holdingbranch'} eq $reserve{'wbrcode'}){
|
|
$reserve{'atdestination'} = 1;
|
|
}
|
|
}
|
|
|
|
$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);
|
|
}
|
|
|
|
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 );
|
|
|
|
#get the time for the form name...
|
|
my $time = time();
|
|
|
|
#setup colours
|
|
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(
|
|
-type => C4::Interface::CGI::Output::guesstype($template->output),
|
|
-expires=>'now'
|
|
), $template->output;
|