Added magic RCS comment.

Added some FIXME comments.
Deleted unused variables.
Added POD.
Removed unused finalizer.
This commit is contained in:
arensb 2002-10-13 06:20:22 +00:00
parent 048e1fdfe1
commit f96a21551d
2 changed files with 204 additions and 103 deletions

View file

@ -1,9 +1,10 @@
package C4::Circulation::Issues; #asummes C4/Circulation/Issues
package C4::Circulation::Issues;
# $Id$
#package to deal with Issues
#written 3/11/99 by chris@katipo.co.nz
# Copyright 2000-2002 Katipo Communications
#
# This file is part of Koha.
@ -21,6 +22,9 @@ package C4::Circulation::Issues; #asummes C4/Circulation/Issues
# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
# FIXME - AFAICT the only function here that's still being used is
# &formatitem, and I'm not convinced that it's really being used.
use strict;
require Exporter;
use DBI;
@ -38,49 +42,37 @@ use C4::Stats;
use C4::Print;
use C4::Format;
use C4::Input;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
use vars qw($VERSION @ISA @EXPORT);
# set the version for version checking
$VERSION = 0.01;
=head1 NAME
C4::Circulation::Issues - Miscellaneous functions related to Koha issues
=head1 SYNOPSIS
use C4::Circulation::Issues;
=head1 DESCRIPTION
This module provides a function for pretty-printing an item being
issued.
=head1 FUNCTIONS
=over 2
=cut
#'
@ISA = qw(Exporter);
@EXPORT = qw(&Issue &formatitem);
%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
# your exported package globals go here,
# as well as any optionally exported functions
@EXPORT_OK = qw($Var1 %Hashit);
# non-exported package globals go here
use vars qw(@more $stuff);
# initalize package globals, first exported ones
my $Var1 = '';
my %Hashit = ();
# then the others (which are still accessible as $Some::Module::stuff)
my $stuff = '';
my @more = ();
# all file-scoped lexicals must be created before
# the functions below that use them.
# file-private lexicals go here
my $priv_var = '';
my %secret_hash = ();
# here's a file-private function as a closure,
# callable as &$priv_func; it cannot be prototyped.
my $priv_func = sub {
# stuff goes here.
};
# make all your functions, whether exported or not;
# FIXME - This is only used in C4::Circmain and C4::Circulation, both
# of which look obsolete. Is this function obsolete as well?
# If not, this needs a POD.
sub Issue {
my ($env) = @_;
my $dbh = C4::Context->dbh;
@ -121,7 +113,8 @@ sub Issue {
return ($done);
}
# FIXME - Not exported, but called by "telnet/borrwraper.pl".
# Presumably this function is obsolete.
sub processitems {
#process a users items
my ($env,$bornum,$borrower,$items,$items2,$it2p,$amountdue,$itemsdet,$odues)=@_;
@ -171,23 +164,53 @@ sub processitems {
return @done;
}
=item formatitem
$line = &formatitem($env, $item, $datedue, $charge);
Pretty-prints a description of an item being issued, and returns the
pretty-printed string.
C<$env> is effectively ignored.
C<$item> is a reference-to-hash whose keys are fields from the items
table in the Koha database.
C<$datedue> is a string that will be prepended to the output.
C<$charge> is a number that will be appended to the output.
The return value C<$line> is a string of the form
I<$datedue $barcode $title: $author $type$dewey$subclass $charge>
where those values that are not passed in as arguments are obtained
from C<$item>.
=cut
#'
sub formatitem {
my ($env,$item,$datedue,$charge) = @_;
my $line = $datedue." ".$item->{'barcode'}." ".$item->{'title'}.": ".$item->{'author'};
# FIXME - Use string interpolation or sprintf()
my $iclass = $item->{'itemtype'};
# FIXME - The Dewey code is a string, not a number.
if ($item->{'dewey'} > 0) {
my $dewey = $item->{'dewey'};
$dewey =~ s/0*$//;
$dewey =~ s/\.$//;
$iclass = $iclass.$dewey.$item->{'subclass'};
$iclass = $iclass.$dewey.$item->{'subclass'}; # FIXME - .=
};
my $llen = 65 - length($iclass);
my $line = fmtstr($env,$line,"L".$llen);
my $line = $line." $iclass ";
my $line = $line.fmtdec($env,$charge,"22");
# FIXME - Use sprintf() instead of &fmtstr.
my $line = $line." $iclass "; # FIXME - .=
my $line = $line.fmtdec($env,$charge,"22"); # FIXME - .=
return $line;
}
# Only used internally
# FIXME - Only used by &processitems, which appears to be obsolete.
sub issueitem{
my ($env,$dbh,$itemnum,$bornum,$items)=@_;
$itemnum=uc $itemnum;
@ -262,6 +285,7 @@ sub issueitem{
my $resborrower = $btsh->fetchrow_hashref;
my $msgtxt = chr(7)."Res for $resborrower->{'cardnumber'},";
$msgtxt = $msgtxt." $resborrower->{'initials'} $resborrower->{'surname'}";
# FIXME - .=
my $ans = msg_ny($env,$msgtxt,"Allow issue?");
if ($ans eq "N") {
# print a docket;
@ -317,6 +341,8 @@ sub issueitem{
return($item,$charge,$datedue);
}
# FIXME - A virtually identical function appears in
# C4::Circulation::Circ2. Pick one and stick with it.
sub createcharge {
my ($env,$dbh,$itemno,$bornum,$charge) = @_;
my $nextaccntno = getnextacctno($env,$bornum,$dbh);
@ -330,7 +356,7 @@ sub createcharge {
}
# Only used internally
sub updateissues{
# issue the book
my ($env,$itemno,$bitno,$dbh,$bornum)=@_;
@ -379,6 +405,8 @@ sub updateissues{
# &C4::Circulation::Renewals2::calc_charges and
# &C4::Circulation::Circ2::calc_charges.
# Pick one and stick with it.
# Only used internally
sub calc_charges {
# calculate charges due
my ($env, $dbh, $itemno, $bornum)=@_;
@ -409,4 +437,13 @@ sub calc_charges {
return ($charge);
}
END { } # module clean-up code here (global destructor)
1;
__END__
=back
=head1 AUTHOR
Koha Developement team <info@koha.org>
=cut

View file

@ -1,6 +1,8 @@
package C4::Circulation::Main; #assumes C4/Circulation/Main
package C4::Circulation::Main;
#package to deal with circulation
# $Id$
#package to deal with circulation
# Copyright 2000-2002 Katipo Communications
@ -41,49 +43,38 @@ use C4::Search;
use C4::InterfaceCDK;
use C4::Security;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
use vars qw($VERSION @ISA @EXPORT);
# set the version for version checking
$VERSION = 0.01;
@ISA = qw(Exporter);
@EXPORT = qw(&pastitems &checkoverdues &previousissue
@EXPORT = qw(&pastitems &checkoverdues &previousissue
&checkreserve &checkwaiting &scanbook &scanborrower &getbranch &getprinter);
%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
# your exported package globals go here,
# as well as any optionally exported functions
@EXPORT_OK = qw($Var1 %Hashit);
=head1 NAME
C4::Circulation::Main - Koha circulation desk functions
# non-exported package globals go here
use vars qw(@more $stuff);
# initalize package globals, first exported ones
=head1 SYNOPSIS
my $Var1 = '';
my %Hashit = ();
# then the others (which are still accessible as $Some::Module::stuff)
my $stuff = '';
my @more = ();
# all file-scoped lexicals must be created before
# the functions below that use them.
# file-private lexicals go here
my $priv_var = '';
my %secret_hash = ();
# here's a file-private function as a closure,
# callable as &$priv_func; it cannot be prototyped.
my $priv_func = sub {
# stuff goes here.
};
# make all your functions, whether exported or not;
use C4::Circulation::Main;
=head1 DESCRIPTION
This module provides functions useful to the circulation desk,
primarily for checking reserves and overdue items.
=head1 FUNCTIONS
=over 2
=cut
# FIXME - This is only used in C4::Circmain and telnet/startint.pl,
# which look obsolete. Presumably this means this function is obsolete
# as well.
# Otherwise, it needs a POD.
sub getbranch {
my ($env) = @_;
my $dbh = C4::Context->dbh;
@ -100,7 +91,7 @@ sub getbranch {
my $data = $sth->fetchrow_hashref;
$env->{'branchcode'}=$data->{'branchcode'};
}
my $query = "select * from branches
my $query = "select * from branches
where branchcode = '$env->{'branchcode'}'";
$sth = $dbh->prepare($query);
$sth->execute;
@ -110,6 +101,10 @@ sub getbranch {
$sth->finish;
}
# FIXME - This is only used in C4::Circmain and telnet/startint.pl,
# which look obsolete. Presumably this means this function is obsolete
# as well.
# Otherwise, it needs a POD.
sub getprinter {
my ($env) = @_;
my $dbh = C4::Context->dbh;
@ -129,9 +124,13 @@ sub getprinter {
}
$sth->finish;
}
# FIXME - This is not the same as &C4::Circulation::pastitems, though
# the two appear to share some code.
# FIXME - This function is called in &C4::Circulation::Issues::Issue
# and in telnet/borrwraper.pl, both of which look obsolete. Presumably
# this means this function is obsolete as well.
# Otherwise, it needs a POD.
sub pastitems{
#Get list of all items borrower has currently on issue
my ($env,$bornum,$dbh)=@_;
@ -154,11 +153,30 @@ sub pastitems{
return(\@items,\@items2);
}
=item checkoverdues
$num_items = &checkoverdues($env, $borrowernumber, $dbh);
Returns the number of overdue books a patron has.
C<$env> is ignored.
C<$borrowernumber> is the patron's borrower number.
C<$dbh> is a DBI handle to the Koha database.
=cut
#'
sub checkoverdues{
#checks whether a borrower has overdue items
# FIXME - Use C4::Context->dbh instead of getting $dbh as an argument
my ($env,$bornum,$dbh)=@_;
# FIXME - This is what POSIX::strftime is for.
my @datearr = localtime;
my $today = ($datearr[5] + 1900)."-".($datearr[4]+1)."-".$datearr[3];
# FIXME - MySQL can figure out what today is, so there's no need
# to calculate that separately. Just use
# ... date_due < curdate()
my $query = "Select count(*) from issues where borrowernumber=$bornum and
returndate is NULL and date_due < '$today'";
my $sth=$dbh->prepare($query);
@ -169,13 +187,15 @@ sub checkoverdues{
}
# FIXME - This is quite similar to &C4::Circulation::previousissue
# FIXME - Never used. Obsolete, presumably.
# Otherwise, it needs a POD.
sub previousissue {
my ($env,$itemnum,$dbh,$bornum)=@_;
my $sth=$dbh->prepare("Select
my $sth=$dbh->prepare("Select
firstname,surname,issues.borrowernumber,cardnumber,returndate
from issues,borrowers where
from issues,borrowers where
issues.itemnumber='$itemnum' and
issues.borrowernumber=borrowers.borrowernumber
issues.borrowernumber=borrowers.borrowernumber
and issues.returndate is NULL");
$sth->execute;
my $borrower=$sth->fetchrow_hashref;
@ -207,9 +227,9 @@ sub previousissue {
} else {
$canissue = "N";
}
}
}
} else {
my $text="Issued to $borrower->{'firstname'} $borrower->{'surname'} ($borrower->{'cardnumber'})";
my $text="Issued to $borrower->{'firstname'} $borrower->{'surname'} ($borrower->{'cardnumber'})";
my $resp = C4::InterfaceCDK::msg_yn($env,$text,"Mark as returned?");
if ( $resp eq "Y") {
&returnrecord($env,$dbh,$borrower->{'borrowernumber'},$itemnum);
@ -217,21 +237,47 @@ sub previousissue {
$canissue = "N";
}
}
}
}
return($borrower->{'borrowernumber'},$canissue,$newdate);
}
=item checkreserve
($borrowernumber, $reserve) = &checkreserve($env, $dbh, $itemnumber);
C<$env> is ignored.
C<$dbh> is a DBI handle to the Koha database.
C<$itemnumber> is the number of the item to find.
C<&checkreserve> returns two values:
C<$borrowernumber> is the borrower number of the patron for whom the
book is reserved, or the empty string. I can't tell when it returns a
number and when it returns a string, nor what it means.
C<$reserve> describes the reserved item. It is a reference-to-hash
whose keys are the fields of the reserves and items tables of the Koha
database.
=cut
#'
sub checkreserve{
# Check for reserves for biblio
# Check for reserves for biblio
# FIXME - Use C4::Context->dbh to get $dbh, instead of passing it
# on the argument list.
my ($env,$dbh,$itemnum)=@_;
my $resbor = "";
my $query = "select * from reserves,items
# Find this item in the reserves.
# Apparently reserves.found=='W' means "Waiting".
# FIXME - Is it necessary to get every field from both tables?
my $query = "select * from reserves,items
where (items.itemnumber = '$itemnum')
and (reserves.cancellationdate is NULL)
and (items.biblionumber = reserves.biblionumber)
and ((reserves.found = 'W')
or (reserves.found is null))
or (reserves.found is null))
order by priority";
my $sth = $dbh->prepare($query);
$sth->execute();
@ -239,31 +285,34 @@ sub checkreserve{
if (my $data=$sth->fetchrow_hashref) {
$resrec=$data;
my $const = $data->{'constrainttype'};
if ($const eq "a") {
$resbor = $data->{'borrowernumber'};
if ($const eq "a") { # FIXME - What does 'a' mean?
$resbor = $data->{'borrowernumber'};
} else {
my $found = 0;
my $cquery = "select * from reserveconstraints,items
where (borrowernumber='$data->{'borrowernumber'}')
my $cquery = "select * from reserveconstraints,items
where (borrowernumber='$data->{'borrowernumber'}')
and reservedate='$data->{'reservedate'}'
and reserveconstraints.biblionumber='$data->{'biblionumber'}'
and (items.itemnumber=$itemnum and
and (items.itemnumber=$itemnum and
items.biblioitemnumber = reserveconstraints.biblioitemnumber)";
my $csth = $dbh->prepare($cquery);
$csth->execute;
if (my $cdata=$csth->fetchrow_hashref) {$found = 1;}
if ($const eq 'o') {
if ($const eq 'o') { # FIXME - What does 'o' mean?
if ($found eq 1) {$resbor = $data->{'borrowernumber'};}
} else {
if ($found eq 0) {$resbor = $data->{'borrowernumber'};}
if ($found eq 0) {$resbor = $data->{'borrowernumber'};}
}
$csth->finish();
}
}
}
$sth->finish;
return ($resbor,$resrec);
}
# FIXME - This is only used in C4::Circulation::Borrower, which
# appears to be obsolete. Presumably this function is obsolete as
# well. Otherwise, it needs a POD.
sub checkwaiting{
# check for reserves waiting
my ($env,$dbh,$bornum)=@_;
@ -283,6 +332,9 @@ sub checkwaiting{
}
# FIXME - This is identical to &C4::Circulation::scanbook
# FIXME - This function is only used in tkperl/tkcirc, if anywhere
# (it's hard to tell). Presumably it's obsolete.
# Otherwise, it needs a POD.
sub scanbook {
my ($env,$interface)=@_;
#scan barcode
@ -292,14 +344,26 @@ sub scanbook {
}
# FIXME - This is very similar to &C4::Circulation::scanborrower
# FIXME - This is only used in C4::Circulation::Borrower, which
# appears to be obsolete. Presumably this function is obsolete as
# well.
# Otherwise, it needs a POD.
sub scanborrower {
my ($env,$interface)=@_;
#scan barcode
my ($number,$reason,$book)=C4::InterfaceCDK::borrower_dialog($env); #C4::InterfaceCDK
$number= $number;
$number= $number; # FIXME - WTF?
$book=uc $book;
return ($number,$reason,$book);
}
1;
__END__
END { } # module clean-up code here (global destructor)
=back
=head1 AUTHOR
Koha Developement team <info@koha.org>
=cut