Koha/misc/cronjobs/reservelist.pl
2007-03-09 14:52:58 +00:00

85 lines
3.5 KiB
Perl
Executable file

#!/usr/bin/perl
#-----------------------------------
# Script Name: reservelist.pl
# Script Version: 1.0
# Date: 2003/9/18
# Author: Stephen Hedges shedges@skemotah.com
# Description: produces a comma separated list of currently
# available reserves, with item and borrower details
# Usage: reservelist.pl.
# Revision History:
# 1.0 2003/9/18: original version
# 1.1 2003/10/1: modified to load into a MySQL table
#-----------------------------------
use lib '/usr/local/koha/intranet/modules/';
use strict;
use C4::Context;
use C4::Biblio;
my ($biblionumber,$barcode,$holdingbranch,$pickbranch,$notes,$cardnumber,$lastname,$firstname,$phone,$title,$callno,$rdate,$borrno);
my $dbh = C4::Context->dbh;
$dbh->do("DELETE FROM reservelist"); # clear the old table for new info
my $sth=$dbh->prepare("SELECT biblionumber,reserves.branchcode,reservenotes,borrowers.borrowernumber,cardnumber,surname,firstname,phone,reservedate FROM reserves,borrowers WHERE reserves.borrowernumber=borrowers.borrowernumber AND priority=1 AND cancellationdate IS NULL GROUP BY biblionumber");
my $sth_load=$dbh->prepare("INSERT INTO reservelist (biblionumber,barcode,lastname,firstname,phone,borrowernumber,cardnumber,reservedate,title,callno,holdingbranch,pickbranch,notes) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
$sth->execute(); # get the list of biblionumbers for unfilled reserves
GETIT: while (my $data=$sth->fetchrow_hashref){
$biblionumber = $data->{'biblionumber'}; # get the basic reserve info
$pickbranch = $data->{'branchcode'};
$notes = $data->{'reservenotes'};
$borrno = $data->{'borrowernumber'};
$cardnumber = $data->{'cardnumber'};
$lastname = $data->{'surname'};
$firstname = $data->{'firstname'};
$phone = $data->{'phone'};
$rdate = $data->{'reservedate'};
my @items = GetItemsInfo($biblionumber,''); # get the items for this biblio
my @itemorder; # prepare a new array to hold re-ordered items
# The following lines take the retrieved items and run them through various
# tests to decide if they are to be used and then put them in the preferred
# 'pick' order.
foreach my $itm (@items) {
if ($itm->{"datedue"} eq "Reserved") { # is item ready for member?
if ($itm->{'holdingbranch'} eq $pickbranch) {
$itemorder[0]=$itm;
} elsif ($itm->{'homebranch'} eq 'NPL') {
$itemorder[1]=$itm;
} elsif ($itm->{'homebranch'} eq 'CPL') {
$itemorder[2]=$itm;
} elsif ($itm->{'homebranch'} eq 'COV') {
$itemorder[3]=$itm;
} elsif ($itm->{'homebranch'} eq 'GPL') {
$itemorder[4]=$itm;
} elsif ($itm->{'homebranch'} eq 'ALB') {
$itemorder[5]=$itm;
} elsif ($itm->{'homebranch'} eq 'PPL') {
$itemorder[6]=$itm;
} elsif ($itm->{'homebranch'} eq 'APL') {
$itemorder[7]=$itm;
}
}
}
my $count = @itemorder;
next GETIT if $count<1; # if the re-ordered array is empty, skip to next
PREP: foreach my $itmlist (@itemorder) {
if ($itmlist) {
$barcode = $itmlist->{'barcode'};
$holdingbranch = $itmlist->{'holdingbranch'};
$title = $itmlist->{'title'};
$callno = $itmlist->{'classification'};
last PREP; # we only want the first def item in the array
}
}
$sth_load->execute($biblionumber,$barcode,$lastname,$firstname,$phone,$borrno,$cardnumber,$rdate,$title,$callno,$holdingbranch,$pickbranch,$notes);
$sth_load->finish;
}
$sth->finish;
$dbh->disconnect;