From f96a21551d020a2a3ea0051ec4c1f28f0697c020 Mon Sep 17 00:00:00 2001 From: arensb Date: Sun, 13 Oct 2002 06:20:22 +0000 Subject: [PATCH] Added magic RCS comment. Added some FIXME comments. Deleted unused variables. Added POD. Removed unused finalizer. --- C4/Circulation/Issues.pm | 129 +++++++++++++++++---------- C4/Circulation/Main.pm | 186 ++++++++++++++++++++++++++------------- 2 files changed, 208 insertions(+), 107 deletions(-) diff --git a/C4/Circulation/Issues.pm b/C4/Circulation/Issues.pm index 242811d9a4..c79f3a6cf8 100755 --- a/C4/Circulation/Issues.pm +++ b/C4/Circulation/Issues.pm @@ -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 + +=cut diff --git a/C4/Circulation/Main.pm b/C4/Circulation/Main.pm index 599d60f4c7..e1b40f08c6 100755 --- a/C4/Circulation/Main.pm +++ b/C4/Circulation/Main.pm @@ -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); - - -# 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; +=head1 NAME + +C4::Circulation::Main - Koha circulation desk functions + +=head1 SYNOPSIS + + 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__ + +=back + +=head1 AUTHOR + +Koha Developement team -END { } # module clean-up code here (global destructor) +=cut -- 2.39.5