branchreserves : to see reserves for one library (with the branchip selection or librarian preferences)
currenttransfers : show all the transfers are waiting in the library
waitingreservetransfers: show all the book the librarian have to transfer to an another library .
"actions" are bugged, will be corrected .
&fixdate
get_return_date_of
get_transfert_infos
+ &checktransferts
+ &GetReservesForBranch
+ &GetReservesToBranch
+ &GetTransfersFromBib
+ &getBranchIp
+ &dotranfer
);
-
# &getbranches &getprinters &getbranch &getprinter => moved to C4::Koha.pm
=head2 itemseen
my ($resfound, $resrec) = CheckReserves($iteminformation->{'itemnumber'});
if ($resfound and not $ignoreRs) {
$resrec->{'ResFound'} = $resfound;
- $messages->{'ResFound'} = $resrec;
- $dotransfer = 0;
+# $messages->{'ResFound'} = $resrec;
+ $dotransfer = 1;
}
- #actually do the transfer....
- if ($dotransfer) {
+
+ if ($dotransfer and not $resfound) {
dotransfer($iteminformation->{'itemnumber'}, $fbr, $tbr);
$messages->{'WasTransfered'} = 1;
}
$fbr = $dbh->quote($fbr);
$tbr = $dbh->quote($tbr);
#new entry in branchtransfers....
- $dbh->do("INSERT INTO branchtransfers (itemnumber, frombranch, datearrived, tobranch)
+ $dbh->do("INSERT INTO branchtransfers (itemnumber, frombranch, datesent, tobranch)
VALUES ($itm, $fbr, now(), $tbr)");
#update holdingbranch in items .....
- $dbh->do("UPDATE items set holdingbranch = $tbr WHERE items.itemnumber = $itm");
+ $dbh->do("UPDATE items set holdingbranch = $tbr WHERE items.itemnumber = $itm");
&itemseen($itm);
&domarctransfer($dbh,$itm);
return;
CancelReserve(0, $res->{'itemnumber'}, $res->{'borrowernumber'});
}
} elsif ($restype eq "Reserved") {
- warn "Reserved";
+# warn "Reserved";
# The item is on reserve for someone else.
my ($resborrower, $flags)=getpatroninformation($env, $resbor,0);
my $branches = getbranches();
} else {
# my $tobrcd = ReserveWaiting($res->{'itemnumber'}, $res->{'borrowernumber'});
# transferbook($tobrcd,$barcode, 1);
- warn "transferbook";
+# warn "transferbook";
}
}
}
$sth->execute($borrower->{'borrowernumber'}, $iteminformation->{'itemnumber'}, $dateduef, $env->{'branchcode'});
$sth->finish;
$iteminformation->{'issues'}++;
- $sth=$dbh->prepare("update items set issues=? where itemnumber=?");
- $sth->execute($iteminformation->{'issues'},$iteminformation->{'itemnumber'});
+ $sth=$dbh->prepare("update items set issues=?, holdingbranch=? where itemnumber=?");
+ $sth->execute($iteminformation->{'issues'},C4::Context->userenv->{'branch'},$iteminformation->{'itemnumber'});
$sth->finish;
&itemseen($iteminformation->{'itemnumber'});
itemborrowed($iteminformation->{'itemnumber'});
$messages->{'wthdrawn'} = 1;
$doreturn = 0;
}
+# new op dev : if the book returned in an other branch update the holding branch
+
# update issues, thereby returning book (should push this out into another subroutine
my ($borrower) = getpatroninformation(\%env, $currentborrower, 0);
if ($doreturn) {
my $sth = $dbh->prepare("update issues set returndate = now() where (borrowernumber = ?) and (itemnumber = ?) and (returndate is null)");
$sth->execute($borrower->{'borrowernumber'}, $iteminformation->{'itemnumber'});
+
+# FIXME the holdingbranch is updated if the document is returned in an other location .
+ if ( $iteminformation->{'holdingbranch'} ne C4::Context->userenv->{'branch'}){
+ my $sth_upd_location = $dbh->prepare("UPDATE items SET holdingbranch=? WHERE itemnumber=?");
+ $sth_upd_location->execute(C4::Context->userenv->{'branch'},$iteminformation->{'itemnumber'});
+ $sth_upd_location->finish;
+ $iteminformation->{'holdingbranch'} = C4::Context->userenv->{'branch'};
+ }
+
$messages->{'WasReturned'} = 1; # FIXME is the "= 1" right?
}
itemseen($iteminformation->{'itemnumber'});
($borrower) = getpatroninformation(\%env, $currentborrower, 0);
# transfer book to the current branch
- my ($transfered, $mess, $item) = transferbook($branch, $barcode, 1);
- if ($transfered) {
- $messages->{'WasTransfered'} = 1; # FIXME is the "= 1" right?
- }
+
+# FIXME function transfered still always used ????
+# my ($transfered, $mess, $item) = transferbook($branch, $barcode, 1);
+# if ($transfered) {
+# $messages->{'WasTransfered'} = 1; # FIXME is the "= 1" right?
+# }
+
# fix up the accounts.....
if ($iteminformation->{'itemlost'}) {
fixaccountforlostandreturned($iteminformation, $borrower);
$messages->{'WasLost'} = 1; # FIXME is the "= 1" right?
}
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# check if we have a transfer for this document
+ my $checktransfer = checktransferts($iteminformation->{'itemnumber'});
+# if we have a return, we update the line of transfers with the datearrived
+ if ($checktransfer){
+ my $sth = $dbh->prepare("update branchtransfers set datearrived = now() where itemnumber= ? AND datearrived IS NULL");
+ $sth->execute($iteminformation->{'itemnumber'});
+ $sth->finish;
+# now we check if there is a reservation with the validate of transfer if we have one, we can set it with the status 'W'
+ my $updateWaiting = SetWaitingStatus($iteminformation->{'itemnumber'});
+ }
+# if we don't have a transfer on run, we check if the document is not in his homebranch and there is not a reservation, we transfer this one to his home branch directly .
+ else {
+ # new op dev
+ my $checkreserves = CheckReserves($iteminformation->{'itemnumber'});
+ if (($iteminformation->{'homebranch'} ne $iteminformation->{'holdingbranch'}) and (not $checkreserves)){
+ my $automatictransfer = dotransfer($iteminformation->{'itemnumber'},$iteminformation->{'holdingbranch'},$iteminformation->{'homebranch'});
+ $messages->{'WasTransfered'} = 1;
+ }
+ }
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# fix up the overdues in accounts...
fixoverduesonreturn($borrower->{'borrowernumber'}, $iteminformation->{'itemnumber'});
# find reserves.....
+# if we don't have a reserve with the status W, we launch the Checkreserves routine
my ($resfound, $resrec) = CheckReserves($iteminformation->{'itemnumber'});
if ($resfound) {
# my $tobrcd = ReserveWaiting($resrec->{'itemnumber'}, $resrec->{'borrowernumber'});
return @row;
}
+
+sub DeleteTransfer {
+ my($itemnumber) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("DELETE FROM branchtransfers
+ where itemnumber=?
+ AND datearrived is null ");
+ $sth->execute($itemnumber);
+ $sth->finish;
+}
+
+sub GetTransfersFromBib {
+ my($frombranch,$tobranch) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("SELECT itemnumber,datesent,frombranch FROM
+ branchtransfers
+ where frombranch=?
+ AND tobranch=?
+ AND datearrived is null ");
+ $sth->execute($frombranch,$tobranch);
+ my @gettransfers;
+ my $i=0;
+ while (my $data=$sth->fetchrow_hashref){
+ $gettransfers[$i]=$data;
+ $i++;
+ }
+ $sth->finish;
+ return(@gettransfers);
+}
+
+sub GetReservesToBranch {
+ my($frombranch,$default) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("SELECT borrowernumber,reservedate,itemnumber,timestamp FROM
+ reserves
+ where priority='0' AND cancellationdate is null
+ AND branchcode=?
+ AND branchcode!=?
+ AND found is null ");
+ $sth->execute($frombranch,$default);
+ my @transreserv;
+ my $i=0;
+ while (my $data=$sth->fetchrow_hashref){
+ $transreserv[$i]=$data;
+ $i++;
+ }
+ $sth->finish;
+ return(@transreserv);
+}
+
+sub GetReservesForBranch {
+ my($frombranch) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("SELECT borrowernumber,reservedate,itemnumber,waitingdate FROM
+ reserves
+ where priority='0' AND cancellationdate is null
+ AND found='W'
+ AND branchcode=? order by reservedate");
+ $sth->execute($frombranch);
+ my @transreserv;
+ my $i=0;
+ while (my $data=$sth->fetchrow_hashref){
+ $transreserv[$i]=$data;
+ $i++;
+ }
+ $sth->finish;
+ return(@transreserv);
+}
+
+sub checktransferts{
+ my($itemnumber) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("SELECT datesent,frombranch,tobranch FROM branchtransfers
+ WHERE itemnumber = ? AND datearrived IS NULL");
+ $sth->execute($itemnumber);
+ my @tranferts = $sth->fetchrow_array;
+ $sth->finish;
+
+ return (@tranferts);
+}
+
1;
__END__
Koha Developement team <info@koha.org>
=cut
+
&UpdateReserve
&getreservetitle
&Findgroupreserve
+ &FastFindReserves
+ &SetWaitingStatus
+ &GlobalCancel
+ &MinusPriority
+ &OtherReserves
GetFirstReserveDateFromItem
GetNumberReservesFromBorrower
);
# make all your functions, whether exported or not;
+=item GlobalCancel
+ New op dev for the circulation based on item, global is a function to cancel reserv,check other reserves, and transfer document if it's necessary
+=cut
+#'
+sub GlobalCancel {
+ my $messages;
+ my $nextreservinfo;
+ my ($itemnumber,$borrowernumber)=@_;
+
+# step 1 : cancel the reservation
+ my $CancelReserve = CancelReserve(0,$itemnumber,$borrowernumber);
+
+# step 2 launch the subroutine of the others reserves
+ my ($messages,$nextreservinfo) = OtherReserves($itemnumber);
+
+return ($messages,$nextreservinfo);
+}
+
+=item OtherReserves
+ New op dev: check queued list of this document and check if this document must be transfered
+=cut
+#'
+sub OtherReserves {
+ my ($itemnumber)=@_;
+ my $messages;
+ my $nextreservinfo;
+ my ($restype,$checkreserves) = CheckReserves($itemnumber);
+ if ($checkreserves){
+ my %env;
+ my $iteminfo = C4::Circulation::Circ2::getiteminformation(\%env,$itemnumber);
+ if ($iteminfo->{'holdingbranch'} ne $checkreserves->{'branchcode'}){
+ $messages->{'transfert'} = $checkreserves->{'branchcode'};
+
+# minus priorities of others reservs
+ MinusPriority($itemnumber,$checkreserves->{'borrowernumber'},$iteminfo->{'biblionumber'});
+# launch the subroutine dotransfer
+ C4::Circulation::Circ2::dotransfer($itemnumber,$iteminfo->{'holdingbranch'},$checkreserves->{'branchcode'}),
+ }
+
+# step 2b : case of a reservation on the same branch, set the waiting status
+ else{
+ $messages->{'waiting'} = 1;
+ MinusPriority($itemnumber,$checkreserves->{'borrowernumber'},$iteminfo->{'biblionumber'});
+ SetWaitingStatus($itemnumber);
+ }
+
+ $nextreservinfo = $checkreserves->{'borrowernumber'};
+ }
+
+ return ($messages,$nextreservinfo);
+}
+
+=item MinusPriority
+ Reduce the values of queuded list
+=cut
+#'
+sub MinusPriority{
+ my ($itemnumber,$borrowernumber,$biblionumber)=@_;
+# first step update the value of the first person on reserv
+ my $dbh = C4::Context->dbh;
+ my $sth_upd=$dbh->prepare("UPDATE reserves SET priority = 0 , itemnumber = ?
+ WHERE cancellationdate is NULL
+ AND borrowernumber=?
+ AND biblionumber=?");
+ $sth_upd->execute($itemnumber,$borrowernumber,$biblionumber);
+ $sth_upd->finish;
+
+# second step update all others reservs
+ my $sth_oth=$dbh->prepare("SELECT priority,borrowernumber,biblionumber,reservedate FROM reserves WHERE priority !='0' AND cancellationdate is NULL");
+ $sth_oth->execute();
+ while (my ($priority,$borrowernumber,$biblionumber,$reservedate)=$sth_oth->fetchrow_array){
+ $priority--;
+ my $sth_upd_oth = $dbh->prepare("UPDATE reserves SET priority = ?
+ WHERE biblionumber = ?
+ AND borrowernumber = ?
+ AND reservedate = ?");
+ $sth_upd_oth->execute($priority,$biblionumber,$borrowernumber,$reservedate);
+ $sth_upd_oth->finish;
+ }
+ $sth_oth->finish;
+
+}
+
+
+=item GlobalCancel
+ New op dev for the circulation based on item, global is a function to cancel reserv,check other reserves, and transfer document if it's necessary
+=cut
+#'
+# New op dev :
+# we check if we have a reserves with itemnumber (New op system of reserves), if we found one, we update the status of the reservation when we have : 'priority' = 0, and we have an itemnumber
+sub SetWaitingStatus{
+# first : check if we have a reservation for this item .
+ my ($itemnumber)=@_;
+ my $dbh = C4::Context->dbh;
+ my $sth_find=$dbh->prepare("SELECT priority,borrowernumber from reserves WHERE itemnumber=? and cancellationdate is NULL and found is NULL and priority='0'");
+ $sth_find->execute($itemnumber);
+ my ($priority,$borrowernumber) = $sth_find->fetchrow_array;
+ $sth_find->finish;
+ if (not $borrowernumber){
+ return();
+ }
+ else{
+# step 2 : if we have a borrowernumber, we update the value found to 'W' for notify the borrower
+ my $sth_set=$dbh->prepare("UPDATE reserves SET found='W',waitingdate = now() where borrowernumber=? AND itemnumber=? AND found is null");
+ $sth_set->execute($borrowernumber,$itemnumber);
+ $sth_set->finish;
+ }
+
+}
+
+sub FastFindReserves {
+ my ($itemnumber,$borrowernumber)=@_;
+ if ($itemnumber){
+ my $dbh = C4::Context->dbh;
+ my $sth_res=$dbh->prepare("SELECT reservedate,borrowernumber from reserves WHERE itemnumber=? and cancellationdate is NULL AND (found != 'F' or found is null)");
+ $sth_res->execute($itemnumber);
+ my ($reservedate,$borrowernumber)=$sth_res->fetchrow_array;
+ $sth_res->finish;
+ return($reservedate,$borrowernumber);
+ }
+ if ($borrowernumber){
+ my $dbh = C4::Context->dbh;
+ my $sth_find=$dbh->prepare("SELECT * from reserves WHERE borrowernumber=? and cancellationdate is NULL and (found != 'F' or found is null) order by reservedate");
+ $sth_find->execute($borrowernumber);
+ my @borrowerreserv;
+ my $i=0;
+ while (my $data=$sth_find->fetchrow_hashref){
+ $borrowerreserv[$i]=$data;
+ $i++;
+ }
+ $sth_find->finish;
+ return (@borrowerreserv);
+ }
+
+}
+
+
=item FindReserves
# C4::Reserves. Pick one and stick with it.
# XXX - POD
sub CreateReserve {
- my
-($env,$branch,$borrnum,$biblionumber,$constraint,$bibitems,$priority,$notes,$title)= @_;
+ my ($env,$branch,$borrnum,$biblionumber,$constraint,$bibitems,$priority,$notes,$title,$checkitem,$found)= @_;
my $fee=CalcReserveFee($env,$borrnum,$biblionumber,$constraint,$bibitems);
my $dbh = C4::Context->dbh;
my $const = lc substr($constraint,0,1);
my @datearr = localtime(time);
my $resdate =(1900+$datearr[5])."-".($datearr[4]+1)."-".$datearr[3];
+ my $waitingdate;
+# If the reserv had the waiting status, we had the value of the resdate
+ if ($found eq 'W'){
+ $waitingdate = $resdate;
+ }
#eval {
# updates take place here
if ($fee > 0) {
}
#if ($const eq 'a'){
my $sth = $dbh->prepare("insert into reserves
- (borrowernumber,biblionumber,reservedate,branchcode,constrainttype,priority,reservenotes)
- values (?,?,?,?,?,?,?)");
- $sth->execute($borrnum,$biblionumber,$resdate,$branch,$const,$priority,$notes);
+ (borrowernumber,biblionumber,reservedate,branchcode,constrainttype,priority,reservenotes,itemnumber,found,waitingdate)
+ values (?,?,?,?,?,?,?,?,?,?)");
+ $sth->execute($borrnum,$biblionumber,$resdate,$branch,$const,$priority,$notes,$checkitem,$found,$waitingdate);
$sth->finish;
#}
if (($const eq "o") || ($const eq "e")) {
--- /dev/null
+#!/usr/bin/perl
+
+# $Id$
+
+# 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::Context;
+use C4::Output;
+use CGI;
+use HTML::Template;
+use C4::Auth;
+use C4::Date;
+use C4::Circulation::Circ2;
+use Date::Manip;
+use C4::Reserves2;
+use C4::Search;
+
+my $input = new CGI;
+
+my $item=$input->param('itemnumber');
+my $borrowernumber=$input->param('borrowernumber');
+my $fbr=$input->param('fbr');
+my $tbr=$input->param('tbr');
+
+my $cancel;
+
+
+my $theme = $input->param('theme'); # only used if allowthemeoverride is set
+
+my ($template, $loggedinuser, $cookie)
+ = get_template_and_user({template_name => "circ/branchreserves.tmpl",
+ query => $input,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => {borrowers => 1},
+ debug => 1,
+ });
+
+my $default = C4::Context->userenv->{'branch'};
+
+my @datearr = localtime(time());
+my $todaysdate = (1900+$datearr[5]).'-'.sprintf ("%0.2d", ($datearr[4]+1)).'-'.sprintf ("%0.2d", $datearr[3]);
+
+
+# if we have a return from the form we launch the subroutine CancelReserve
+ if ($item){
+ my $messages;
+ my $nextreservinfo;
+ my %env;
+ my $waiting;
+ ($messages,$nextreservinfo) = GlobalCancel($item,$borrowernumber);
+# if we have a result
+ if ($nextreservinfo){
+ my $borrowerinfo = getpatroninformation(\%env,$nextreservinfo);
+ my $iteminfo = C4::Circulation::Circ2::getiteminformation(\%env,$item);
+ if ($messages->{'transfert'}){
+ my $branchname = getbranchname($messages->{'transfert'});
+ $template->param(
+ messagetransfert => $messages->{'transfert'},
+ branchname => $branchname,
+ );
+ }
+ if ($messages->{'waiting'}){
+ $waiting = 1;
+ }
+
+ $template->param(
+ message => 1,
+ nextreservnumber => $nextreservinfo,
+ nextreservsurname => $borrowerinfo->{'surname'},
+ nextreservfirstname => $borrowerinfo->{'firstname'},
+ nextreservitem => $item,
+ nextreservtitle => $iteminfo->{'title'},
+ waiting => $waiting
+ );
+ }
+# if the document is not in his homebranch location and there is not reservation after, we transfer it
+ if (($fbr ne $tbr) and (not $nextreservinfo)){
+ C4::Circulation::Circ2::dotransfer($item,$fbr,$tbr);
+ }
+ }
+
+my @reservloop;
+my @getreserves = GetReservesForBranch($default);
+foreach my $num (@getreserves) {
+ my %getreserv;
+ my %env;
+ my $gettitle = getiteminformation(\%env,$num->{'itemnumber'});
+ my $getborrower = getpatroninformation (\%env,$num->{'borrowernumber'});
+ $getreserv{'waitingdate'} = format_date($num->{'waitingdate'});
+ my $calcDate=DateCalc($num->{'waitingdate'},"+".C4::Context->preference('ReservesMaxPickUpDelay')." days");
+ my $warning=Date_Cmp(ParseDate("today"),$calcDate);
+ if ($warning>0){
+ $getreserv{'messcompa'} = 1;
+ }
+ $getreserv{'title'} = $gettitle->{'title'};
+ $getreserv{'itemnumber'} = $gettitle->{'itemnumber'};
+ $getreserv{'biblionumber'} = $gettitle->{'biblionumber'};
+ $getreserv{'barcode'} = $gettitle->{'barcode'};
+# $getreserv{'itemtype'} = ItemType($gettitle->{'itemtype'});
+ $getreserv{'homebranch'} = $gettitle->{'homebranch'};
+ $getreserv{'holdingbranch'} = $gettitle->{'holdingbranch'};
+ if ($gettitle->{'homebranch'} ne $gettitle->{'holdingbranch'}){
+ $getreserv{'dotransfer'} = 1;
+ }
+ $getreserv{'itemcallnumber'} = $gettitle->{'itemcallnumber'};
+ $getreserv{'borrowernum'} = $getborrower->{'borrowernumber'};
+ $getreserv{'borrowername'} = $getborrower->{'surname'};
+ $getreserv{'borrowerfirstname'} = $getborrower->{'firstname'} ;
+ if ($getborrower->{'emailaddress'}){
+ $getreserv{'borrowermail'} = $getborrower->{'emailaddress'} ;
+ }
+ $getreserv{'borrowerphone'} = $getborrower->{'phone'};
+ push(@reservloop, \%getreserv);
+}
+
+ $template->param( reserveloop => \@reservloop,
+ show_date => format_date($todaysdate),
+ );
+
+ print "Content-Type: text/html\n\n", $template->output;
\ No newline at end of file
--- /dev/null
+#!/usr/bin/perl
+
+# $Id$
+
+# 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::Context;
+use C4::Output;
+use CGI;
+use HTML::Template;
+use C4::Auth;
+use C4::Date;
+use C4::Circulation::Circ2;
+use Date::Manip;
+use C4::Koha;
+use C4::Search;
+use C4::Reserves2;
+
+my $input = new CGI;
+
+my $theme = $input->param('theme'); # only used if allowthemeoverride is set
+my $itemnumber = $input->param('itemnumber');
+# if we have a resturn of the form to delete the transfer, we launch the subrroutine
+if ($itemnumber){
+ C4::Circulation::Circ2::DeleteTransfer($itemnumber);
+}
+
+my ($template, $loggedinuser, $cookie)
+ = get_template_and_user({template_name => "circ/currenttransfers.tmpl",
+ query => $input,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => {borrowers => 1},
+ debug => 1,
+ });
+
+
+# set the userenv branch
+my $default = C4::Context->userenv->{'branch'};
+
+
+my @datearr = localtime(time());
+my $todaysdate = (1900+$datearr[5]).'-'.sprintf ("%0.2d", ($datearr[4]+1)).'-'.sprintf ("%0.2d", $datearr[3]);
+
+# get the all the branches for reference
+my $branches = getbranches();
+my @branchesloop;
+foreach my $br (keys %$branches) {
+ my @transferloop;
+ my %branchloop;
+ $branchloop{'branchname'} = $branches->{$br}->{'branchname'};
+ $branchloop{'branchcode'} = $branches->{$br}->{'branchcode'};
+ # # # # # # # # # # # # # # # # # # # # # #
+ my @gettransfers = GetTransfersFromBib($branches->{$br}->{'branchcode'},$default);
+ if (@gettransfers){
+ foreach my $num (@gettransfers) {
+ my %getransf;
+ my %env;
+ my $calcDate=DateCalc($num->{'datesent'},"+".C4::Context->preference('TransfersMaxDaysWarning')." days");
+ my $warning=Date_Cmp(ParseDate("today"),$calcDate);
+ if ($warning>0){
+ $getransf{'messcompa'} = 1;
+ }
+ my $gettitle = getiteminformation(\%env,$num->{'itemnumber'});
+ $getransf{'title'} = $gettitle->{'title'};
+ $getransf{'datetransfer'} = format_date($num->{'datesent'});
+ $getransf{'biblionumber'} = $gettitle->{'biblionumber'};
+ $getransf{'itemnumber'} = $gettitle->{'itemnumber'};
+ $getransf{'barcode'} = $gettitle->{'barcode'};
+# $getransf{'itemtype'} = ItemType($gettitle->{'itemtype'});
+ $getransf{'homebranch'} = $gettitle->{'homebranch'};
+ $getransf{'holdingbranch'} = $gettitle->{'holdingbranch'};
+ $getransf{'itemcallnumber'} = $gettitle->{'itemcallnumber'};
+
+# we check if we have a reserv for this transfer
+ my @checkreserv = FastFindReserves($num->{'itemnumber'});
+ if (@checkreserv[0]){
+ my $getborrower = getpatroninformation (\%env,$checkreserv[1]);
+ $getransf{'borrowernum'} = $getborrower->{'borrowernumber'};
+ $getransf{'borrowername'} = $getborrower->{'surname'};
+ $getransf{'borrowerfirstname'} = $getborrower->{'firstname'};
+ if ($getborrower->{'emailaddress'}){
+ $getransf{'borrowermail'} = $getborrower->{'emailaddress'} ;
+ }
+ $getransf{'borrowerphone'} = $getborrower->{'phone'};
+
+ }
+ push(@transferloop, \%getransf);
+ }
+# If we have a return of reservloop we put it in the branchloop sequence
+ $branchloop{'reserv'} = \@transferloop ;
+ }
+ else {
+# if we don't have a retrun from reservestobranch we unset branchname and branchcode
+ $branchloop{'branchname'} = 0;
+ $branchloop{'branchcode'} = 0;
+ }
+push(@branchesloop, \%branchloop);
+}
+ $template->param( branchesloop => \@branchesloop,
+ show_date => format_date($todaysdate)
+ );
+
+ print "Content-Type: text/html\n\n", $template->output;
+
+
+
--- /dev/null
+#!/usr/bin/perl
+
+# $Id$
+
+# 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::Context;
+use C4::Output;
+use CGI;
+use HTML::Template;
+use C4::Auth;
+use C4::Date;
+use C4::Circulation::Circ2;
+use Date::Manip;
+use C4::Koha;
+use C4::Biblio;
+
+my $input = new CGI;
+
+my $theme = $input->param('theme'); # only used if allowthemeoverride is set
+
+my ($template, $loggedinuser, $cookie)
+ = get_template_and_user({template_name => "circ/waitingreservestransfers.tmpl",
+ query => $input,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => {borrowers => 1},
+ debug => 1,
+ });
+
+
+# set the userenv branch
+my $default = C4::Context->userenv->{'branch'};
+
+
+my @datearr = localtime(time());
+my $todaysdate = (1900+$datearr[5]).'-'.sprintf ("%0.2d", ($datearr[4]+1)).'-'.sprintf ("%0.2d", $datearr[3]);
+
+my $item=$input->param('itemnumber');
+my $fbr=$input->param('fbr');
+my $tbr=$input->param('tbr');
+# If we have a return of the form dotransfer, we launch the subroutine dotransfer
+if ($item){
+ C4::Circulation::Circ2::dotransfer($item,$fbr,$tbr);
+}
+
+# get the all the branches for reference
+my $branches = getbranches();
+my @branchesloop;
+foreach my $br (keys %$branches) {
+ my @reservloop;
+ my %branchloop;
+ $branchloop{'branchname'} = $branches->{$br}->{'branchname'};
+ $branchloop{'branchcode'} = $branches->{$br}->{'branchcode'};
+ my @getreserves = GetReservesToBranch($branches->{$br}->{'branchcode'},$default);
+ if (@getreserves){
+ foreach my $num (@getreserves) {
+ my %getreserv;
+ my %env;
+ my $gettitle = getiteminformation(\%env,$num->{'itemnumber'});
+ if ($gettitle->{'holdingbranch'} eq $default){
+ my $getborrower = getpatroninformation (\%env,$num->{'borrowernumber'});
+ $getreserv{'reservedate'} = format_date($num->{'reservedate'});
+ my $calcDate=DateCalc($num->{'reservedate'},"+".C4::Context->preference('MaxDaysRecoveryReserves')." days");
+ my $warning=Date_Cmp(ParseDate("today"),$calcDate);
+ if ($warning>0){
+ $getreserv{'messcompa'} = 1;
+ }
+ $getreserv{'title'} = $gettitle->{'title'};
+ $getreserv{'biblionumber'} = $gettitle->{'biblionumber'};
+ $getreserv{'itemnumber'} = $gettitle->{'itemnumber'};
+ $getreserv{'barcode'} = $gettitle->{'barcode'};
+# $getreserv{'itemtype'} = get_iteminfos_of($gettitle->{'itemtype'}->{'description'});
+ $getreserv{'holdingbranch'} = $gettitle->{'holdingbranch'};
+ $getreserv{'itemcallnumber'} = $gettitle->{'itemcallnumber'};
+ $getreserv{'borrowernum'} = $getborrower->{'borrowernumber'};
+ $getreserv{'borrowername'} = $getborrower->{'surname'};
+ $getreserv{'borrowerfirstname'} = $getborrower->{'firstname'} ;
+ if ($getborrower->{'emailaddress'}){
+ $getreserv{'borrowermail'} = $getborrower->{'emailaddress'} ;
+ }
+ $getreserv{'borrowerphone'} = $getborrower->{'phone'};
+ push(@reservloop, \%getreserv);
+ }
+ }
+# If we have a return of reservloop we put it in the branchloop sequence
+ if (@reservloop){
+ $branchloop{'reserv'} = \@reservloop ;
+ }
+# else, we unset the value of the branchcode .
+ else{
+ $branchloop{'branchcode'} = 0;
+ }
+ }
+ else {
+# if we don't have a retrun from reservestobranch we unset branchname and branchcode
+ $branchloop{'branchname'} = 0;
+ $branchloop{'branchcode'} = 0;
+ }
+ push(@branchesloop, \%branchloop);
+}
+
+ $template->param( branchesloop => \@branchesloop,
+ show_date => format_date($todaysdate)
+ );
+
+ print "Content-Type: text/html\n\n", $template->output;
+
+
+
--- /dev/null
+<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Koha -- Circulation
+<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
+<!-- TMPL_INCLUDE NAME="menus.inc" -->
+<!-- TMPL_INCLUDE NAME="menu-circ.inc" -->
+
+<h1>Circulation: Branch Reserves</h1>
+
+<div id="mainbloc">
+ <h1 class="circulation">Reservs of your library the : <!-- TMPL_VAR NAME="show_date" --></h1>
+ <!-- TMPL_IF NAME="messagetransfert" -->
+ <div>
+ <h2>Reserv find for the document(<!-- TMPL_VAR NAME="nextreservtitle" -->)must transfered</h2>
+ <p>This documen is reserved by : <b> <!-- TMPL_VAR NAME="nextreservsurname" --> <!-- TMPL_VAR NAME="nextreservfirstname" --></b> at the library : <b> <!-- TMPL_VAR NAME="branchname" --> </b>, Please put this document in transfer .
+ </p>
+ <form name="cancelReservewithtransfert" action="branchreserves.pl" method="post">
+ <input type="submit" class="button circulation">
+ </form>
+ </div>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="waiting" -->
+ <div id="bloc25">
+ <h2 class="circulation">This document is in Waiting status</h2>
+ <p>This document (<!-- TMPL_VAR NAME="nextreservtitle" -->) is reserved by <b> : <!-- TMPL_VAR NAME="nextreservsurname" --> <!-- TMPL_VAR NAME="nextreservfirstname" --></b>,
+ Please keep this document for the next reserv .
+ </p>
+ <form name="cancelReservewithwaiting" action="branchreserves.pl" method="post">
+ <input type="submit">
+ </form>
+ </div>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_UNLESS NAME="message" -->
+ <div id="resultlist">
+ <table>
+ <tr>
+ <th class="circulation" colspan="5">Reservs of your library</th>
+ </tr>
+ <tr>
+ <th class="circulation">Available since</th>
+ <th class="circulation">Title</th>
+ <th class="circulation">Borrower</th>
+ <th class="circulation">Localisation</th>
+ <th class="circulation">Action</th>
+ </tr>
+ <!-- TMPL_LOOP NAME="reserveloop" -->
+ <tr <!-- TMPL_IF NAME="messcompa" --> class="problem" <!-- /TMPL_IF -->>
+ <td><p><!-- TMPL_VAR NAME="waitingdate" --></p> <!-- TMPL_IF NAME="messcompa" --> Reserv Over <!-- /TMPL_IF --></td>
+ <td>
+ <p>
+ <a href="/cgi-bin/koha/MARCdetail.pl?bib=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" --></a>
+ (<b><!-- TMPL_VAR NAME="itemtype" --></b>)
+ <br />Barcode : <!-- TMPL_VAR NAME="barcode" -->
+ </p>
+ </td>
+ <td>
+ <p><a href="/cgi-bin/koha/members/moremember.pl?bornum=<!--TMPL_VAR Name="borrowernum"-->"><!-- TMPL_VAR NAME="borrowername" --> <!-- TMPL_VAR NAME="borrowerfirstname" --></a><br /><!-- TMPL_VAR NAME="borrowerphone" --><br />
+ <!-- TMPL_IF NAME="borrowermail" --><a href="mailto:<!-- TMPL_VAR NAME="email" -->?subject=Reservation: <!-- TMPL_VAR NAME="title" -->">
+ <!-- TMPL_VAR NAME="borrowermail" --></a><!--/TMPL_IF-->
+ </p>
+ </td>
+ <td><p><!-- TMPL_VAR NAME="homebranch" --> <!-- TMPL_VAR NAME="itemcallnumber" --></p></td>
+ <td>
+ <form name="cancelReserve -->" action="branchreserves.pl" method="post">
+ <input type="hidden" name="borrowernumber" value="<!-- TMPL_VAR NAME="borrowernum" -->">
+ <input type="hidden" name="itemnumber" value="<!-- TMPL_VAR NAME="itemnumber" -->">
+ <input type="hidden" name="fbr" value="<!-- TMPL_VAR NAME="holdingbranch" -->">
+ <input type="hidden" name="tbr" value="<!-- TMPL_VAR NAME="homebranch" -->">
+ <input type="submit"
+ <!-- TMPL_IF NAME="dotransfer" -->
+ value="Cancel reserv and return this document"
+ <!-- TMPL_ELSE -->
+ value="Cancel reserv"
+ <!-- /TMPL_IF -->
+ >
+ </form>
+ </td>
+ </tr>
+ <!-- /TMPL_LOOP -->
+ </table>
+ </div>
+ <!-- /TMPL_UNLESS -->
+</div>
+<!-- TMPL_INCLUDE name="intranet-bottom.inc" -->
--- /dev/null
+<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Koha -- Circulation
+<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
+<!-- TMPL_INCLUDE NAME="menus.inc" -->
+<!-- TMPL_INCLUDE NAME="menu-circ.inc" -->
+
+<div id="mainbloc">
+ <h1 class="circulation">Transfers in wait for your library the : <!-- TMPL_VAR NAME="show_date" --></h1>
+ <div id="resultlist">
+ <!-- TMPL_LOOP NAME="branchesloop" -->
+ <!-- TMPL_IF NAME="branchcode" -->
+ <table>
+ <tr>
+ <th class="circulation" colspan="5">current transfers from the library : <!-- TMPL_VAR NAME="branchname" --> </th>
+ </tr>
+ <tr>
+ <th class="circulation">Date of transfer</th>
+ <th class="circulation">Title</th>
+ <th class="circulation">Borrower</th>
+ <th class="circulation">Localisation</th>
+ <th class="circulation">Action</th>
+ </tr>
+ <!-- TMPL_LOOP NAME="reserv" -->
+ <tr <!-- TMPL_IF NAME="messcompa" --> class="problem" <!-- /TMPL_IF -->>
+ <td><p><!-- TMPL_VAR NAME="datetransfer" --></p> <!-- TMPL_IF NAME="messcompa" --> check this transfer<!-- /TMPL_IF --></td>
+ <td>
+ <p>
+ <a href="/cgi-bin/koha/catalogue/MARCdetail.pl?bib=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" --></a>
+ (<b><!-- TMPL_VAR NAME="itemtype" --> </b>)
+ <br />Barcode : <!-- TMPL_VAR NAME="barcode" -->
+ </p>
+ </td>
+ <td>
+ <!-- TMPL_IF NAME="borrowername" -->
+ <p><a href="/cgi-bin/koha/members/moremember.pl?bornum=<!--TMPL_VAR Name="borrowernum"-->"><!-- TMPL_VAR NAME="borrowername" --> <!-- TMPL_VAR NAME="borrowerfirstname" --></a><br /><!-- TMPL_VAR NAME="borrowerphone" --><br />
+ <!-- TMPL_IF NAME="borrowermail" --><a href="mailto:<!-- TMPL_VAR NAME="email" -->?subject=Reservation: <!-- TMPL_VAR NAME="title" -->">
+ <!-- TMPL_VAR NAME="borrowermail" --></a><!--/TMPL_IF-->
+ </p>
+ <!-- TMPL_ELSE -->
+ <P>
+ Transfer without reserv linked
+ </P>
+ <!-- /TMPL_IF -->
+ </td>
+ <td><p><!-- TMPL_VAR NAME="homebranch" --> <!-- TMPL_VAR NAME="itemcallnumber" --></p></td>
+ <td>
+ <form name="dotransfer" action="currenttransfers.pl" method="post">
+ <input type="hidden" name="itemnumber" value="<!-- TMPL_VAR NAME="itemnumber" -->">
+ <input type="submit" value="Cancel this transfer">
+ </form>
+ </td>
+ </tr>
+ <!-- /TMPL_LOOP -->
+ </table>
+ <br><br>
+ <!-- /TMPL_IF -->
+ <!-- /TMPL_LOOP -->
+ </div>
+</div>
+<!-- TMPL_INCLUDE name="intranet-bottom.inc" -->
--- /dev/null
+<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Koha -- Circulation
+<!-- TMPL_IF Name="borrowernumber" -->
+: Issuing to <!-- TMPL_VAR name="surname" -->, <!-- TMPL_VAR name="firstname" -->
+(<!-- TMPL_VAR NAME="cardnumber" -->)
+<!-- /TMPL_IF -->
+<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
+<!-- TMPL_INCLUDE NAME="menus.inc" -->
+<!-- TMPL_INCLUDE NAME="menu-circ.inc" -->
+
+
+<h1>Circulation: Transfers in wait</h1>
+
+<div id="mainbloc">
+ <h1>Transfers to do <!-- TMPL_VAR NAME="show_date" --></h1>
+ <div id="resultlist">
+ <!-- TMPL_LOOP NAME="branchesloop" -->
+ <!-- TMPL_IF NAME="branchcode" -->
+ <table>
+ <tr>
+ <th class="circulation" colspan="5">Reservs in wait to the library : <!-- TMPL_VAR NAME="branchname" --> </th>
+ </tr>
+ <tr>
+ <th class="circulation">Date of reserv</th>
+ <th class="circulation">Title</th>
+ <th class="circulation">Borrower</th>
+ <th class="circulation">Localisation</th>
+ <th class="circulation">Action</th>
+ </tr>
+ <!-- TMPL_LOOP NAME="reserv" -->
+ <tr <!-- TMPL_IF NAME="messcompa" --> class="problem" <!-- /TMPL_IF -->>
+ <td><p><!-- TMPL_VAR NAME="reservedate" --></p> <!-- TMPL_IF NAME="messcompa" --> Reserv over <!-- /TMPL_IF --></td>
+ <td>
+ <p>
+ <a href="/cgi-bin/koha/MARCdetail.pl?bib=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" --></a>
+ (<b><!-- TMPL_VAR NAME="itemtype" --> </b>)
+ <br />Barcode : <!-- TMPL_VAR NAME="barcode" -->
+ </p>
+ </td>
+ <td>
+ <p><a href="/cgi-bin/koha/members/moremember.pl?bornum=<!--TMPL_VAR Name="borrowernum"-->"><!-- TMPL_VAR NAME="borrowername" --> <!-- TMPL_VAR NAME="borrowerfirstname" --></a><br /><!-- TMPL_VAR NAME="borrowerphone" --><br />
+ <!-- TMPL_IF NAME="borrowermail" --><a href="mailto:<!-- TMPL_VAR NAME="email" -->?subject=Reservation: <!-- TMPL_VAR NAME="title" -->">
+ <!-- TMPL_VAR NAME="borrowermail" --></a><!--/TMPL_IF-->
+ </p>
+ </td>
+ <td><p><!-- TMPL_VAR NAME="holdingbranch" --> <!-- TMPL_VAR NAME="itemcallnumber" --></p></td>
+ <td>
+ <form name="dotransfer" action="waitingreservestransfers.pl" method="post">
+ <input type="hidden" name="itemnumber" value="<!-- TMPL_VAR NAME="itemnumber" -->">
+ <input type="hidden" name="fbr" value="<!-- TMPL_VAR NAME="holdingbranch" -->">
+ <input type="hidden" name="tbr" value="<!-- TMPL_VAR NAME="branchcode" -->">
+ <input type="submit" value="Transfer this document">
+ </form>
+ </td>
+ </tr>
+ <!-- /TMPL_LOOP -->
+ </table>
+ <br><br>
+ <!-- /TMPL_IF -->
+ <!-- /TMPL_LOOP -->
+ </div>
+</div>
+<!-- TMPL_INCLUDE name="intranet-bottom.inc" -->
--- /dev/null
+<a href="/cgi-bin/koha/circ/circulation.pl">Circulation</a>
+<a href="/cgi-bin/koha/circ/circulation.pl">Issues</a>
+<a href="/cgi-bin/koha/circ/returns.pl">Returns</a>
+<a href="/cgi-bin/koha/circ/branchtransfers.pl">Transfers</a>
+<a href="/cgi-bin/koha/circ/selectbranchprinter.pl">Set branch</a>
+<a href="/cgi-bin/koha/circ/branchreserves.pl">Waiting reserves</a>
+<a href="/cgi-bin/koha/circ/waitingreservestransfers.pl">Transfers to do</a>
+<a href="/cgi-bin/koha/circ/currenttransfers.pl">Transfers to recieve</a>
<script language="JavaScript" type="text/javascript">
+function _(s) { return s } // dummy function for gettext
function Help() {
newin=window.open("/cgi-bin/koha/help.pl","Koha Help",'width=600,height=600,toolbar=false,scrollbars=yes');
}
<li><a href="/cgi-bin/koha/circ/circulation.pl">Issues</a></li>
<li><a href="/cgi-bin/koha/circ/returns.pl">Returns</a></li>
<li><a href="/cgi-bin/koha/circ/branchtransfers.pl">Transfers</a></li>
- <li><a href="/cgi-bin/koha/circ/selectbranchprinter.pl">Set Branch</a></li>
+ <li><a href="/cgi-bin/koha/circ/selectbranchprinter.pl">Set branch</a></li>
+ <li><a href="/cgi-bin/koha/circ/branchreserves.pl">Waiting reserves</a></li>
+ <li><a href="/cgi-bin/koha/circ/waitingreservestransfers.pl">Transfers to do</a></li>
+ <li><a href="/cgi-bin/koha/circ/currenttransfers.pl">Transfers to recieve</a></li>
</ul>
</li>
<li>Members
<ul>
- <li><a href="/cgi-bin/koha/members/members-home.pl">Member Search</a></li>
- <li><a href="/cgi-bin/koha/members/memberentry.pl?actionType=Add">Add Member</a></li>
- <li><a href="/cgi-bin/koha/members/memberentry.pl?categorycode=I&actionType=Add">Add Institution</a></li>
+ <li><a href="/cgi-bin/koha/members/members-home.pl">Search</a></li>
+ <li><a href="/cgi-bin/koha/members/memberentry.pl?op=add&category_type=A"/>Add adult</a></li>
+ <li><a href="/cgi-bin/koha/members/memberentry.pl?op=add&category_type=C"/>Add child</a></li>
+ <li><a href="/cgi-bin/koha/members/memberentry.pl?op=add&category_type=P"/>Add prof</a></li>
+ <li><a href="/cgi-bin/koha/members/memberentry.pl?op=add&category_type=I"/>Add org</a></li>
</ul>
</li>
<li>Catalogue