From 780b60f0d3b3877134f0d25139190c207b451174 Mon Sep 17 00:00:00 2001 From: arensb Date: Sat, 28 Sep 2002 04:56:26 +0000 Subject: [PATCH] Added POD. Removed extraneous trailing whitespace. --- C4/Accounts2.pm | 169 ++++++++++++++++++++++++++++++++++++++++-------- C4/Stats.pm | 76 ++++++++++++++++++++-- 2 files changed, 212 insertions(+), 33 deletions(-) diff --git a/C4/Accounts2.pm b/C4/Accounts2.pm index 4ecd9c58b2..46553f6bb9 100755 --- a/C4/Accounts2.pm +++ b/C4/Accounts2.pm @@ -26,18 +26,57 @@ use C4::Stats; use C4::Search; use C4::Circulation::Circ2; use vars qw($VERSION @ISA @EXPORT); - + # set the version for version checking -$VERSION = 0.01; - +$VERSION = 0.01; # FIXME - Should probably be different from + # the version for C4::Accounts + +=head1 NAME + +C4::Accounts - Functions for dealing with Koha accounts + +=head1 SYNOPSIS + + use C4::Accounts; + +=head1 DESCRIPTION + +The functions in this module deal with the monetary aspect of Koha, +including looking up and modifying the amount of money owed by a +patron. + +=head1 FUNCTIONS + +=over 2 + +=cut + @ISA = qw(Exporter); @EXPORT = qw(&recordpayment &fixaccounts &makepayment &manualinvoice &getnextacctno); +# FIXME - Never used sub displayaccounts{ my ($env)=@_; } +=item recordpayment + + &recordpayment($env, $borrowernumber, $payment); + +Record payment by a patron. C<$borrowernumber> is the patron's +borrower number. C<$payment> is a floating-point number, giving the +amount that was paid. C<$env> is a reference-to-hash; +C<$env-E{branchcode}> is the code of the branch where payment was +made. + +Amounts owed are paid off oldest first. That is, if the patron has a +$1 fine from Feb. 1, another $1 fine from Mar. 1, and makes a payment +of $1.50, then the oldest fine will be paid off in full, and $0.50 +will be credited to the next one. + +=cut +#' sub recordpayment{ #here we update both the accountoffsets and the account lines my ($env,$bornumber,$data)=@_; @@ -50,7 +89,7 @@ sub recordpayment{ # begin transaction my $nextaccntno = getnextacctno($env,$bornumber,$dbh); # get lines with outstanding amounts to offset - my $query = "select * from accountlines + my $query = "select * from accountlines where (borrowernumber = '$bornumber') and (amountoutstanding<>0) order by date"; my $sth = $dbh->prepare($query); @@ -70,7 +109,7 @@ sub recordpayment{ my $usth = $dbh->prepare($updquery); $usth->execute; $usth->finish; - $updquery = "insert into accountoffsets + $updquery = "insert into accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) values ($bornumber,$accdata->{'accountno'},$nextaccntno,$newamtos)"; $usth = $dbh->prepare($updquery); @@ -78,8 +117,8 @@ sub recordpayment{ $usth->finish; } # create new line - $updquery = "insert into accountlines - (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding) + $updquery = "insert into accountlines + (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding) values ($bornumber,$nextaccntno,now(),0-$data,'Payment,thanks', 'Pay',0-$amountleft)"; my $usth = $dbh->prepare($updquery); @@ -90,9 +129,26 @@ sub recordpayment{ $dbh->disconnect; } +=item makepayment + + &makepayment($borrowernumber, $acctnumber, $amount, $branchcode); + +Records the fact that a patron has paid off the entire amount he or +she owes. + +C<$borrowernumber> is the patron's borrower number. C<$acctnumber> is +the account that was credited. C<$amount> is the amount paid (this is +only used to record the payment. It is assumed to be equal to the +amount owed). C<$branchcode> is the code of the branch where payment +was made. + +=cut +#' +# FIXME - I'm not at all sure about the above, because I don't +# understand what the acct* tables in the Koha database are for. sub makepayment{ #here we update both the accountoffsets and the account lines - #updated to check, if they are paying off a lost item, we return the item + #updated to check, if they are paying off a lost item, we return the item # from their card, and put a note on the item record my ($bornumber,$accountno,$amount,$user)=@_; my $env; @@ -106,26 +162,30 @@ sub makepayment{ $sth->execute; my $data=$sth->fetchrow_hashref; $sth->finish; + # FIXME - This prepare/execute/finish sequence could be done with + # $dbh->do(), no? my $updquery="Update accountlines set amountoutstanding=0 where borrowernumber=$bornumber and accountno=$accountno"; $sth=$dbh->prepare($updquery); $sth->execute; $sth->finish; # print $updquery; - $updquery = "insert into accountoffsets + $updquery = "insert into accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) values ($bornumber,$accountno,$nextaccntno,$newamtos)"; my $usth = $dbh->prepare($updquery); $usth->execute; - $usth->finish; + $usth->finish; # create new line my $payment=0-$amount; - $updquery = "insert into accountlines - (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding) + $updquery = "insert into accountlines + (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding) values ($bornumber,$nextaccntno,now(),$payment,'Payment,thanks - $user', 'Pay',0)"; $usth = $dbh->prepare($updquery); $usth->execute; $usth->finish; + # FIXME - The second argument to &UpdateStats is supposed to be the + # branch code. UpdateStats($env,$user,'payment',$amount,'','','',$bornumber); $sth->finish; $dbh->disconnect; @@ -135,6 +195,20 @@ sub makepayment{ } } +=item getnextacctno + + $nextacct = &getnextacctno($env, $borrowernumber, $dbh); + +Returns the next unused account number for the patron with the given +borrower number. + +C<$dbh> is a DBI::db handle to the Koha database. + +C<$env> is ignored. + +=cut +#' +# FIXME - Okay, so what does the above actually _mean_? sub getnextacctno { my ($env,$bornumber,$dbh)=@_; my $nextaccntno = 1; @@ -150,6 +224,13 @@ sub getnextacctno { return($nextaccntno); } +=item fixaccounts + + &fixaccounts($borrowernumber, $accountnumber, $amount); + +=cut +#' +# FIXME - I don't understand what this function does. sub fixaccounts { my ($borrowernumber,$accountno,$amount)=@_; my $dbh=C4Connect; @@ -158,6 +239,7 @@ sub fixaccounts { my $sth=$dbh->prepare($query); $sth->execute; my $data=$sth->fetchrow_hashref; + # FIXME - Error-checking my $diff=$amount-$data->{'amount'}; my $outstanding=$data->{'amountoutstanding'}+$diff; $sth->finish; @@ -170,6 +252,7 @@ sub fixaccounts { $dbh->disconnect; } +# FIXME - Never used, but not exported, either. sub returnlost{ my ($borrnum,$itemnum)=@_; my $dbh=C4Connect; @@ -189,6 +272,21 @@ sub returnlost{ $dbh->disconnect; } +=item manualinvoice + + &manualinvoice($borrowernumber, $itemnumber, $description, $type, + $amount, $user); + +C<$borrowernumber> is the patron's borrower number. +C<$description> is a description of the transaction. +C<$type> may be one of C, C, C, C, C, C, C, +or C. +C<$itemnumber> is the item involved, if pertinent; otherwise, it +should be the empty string. + +=cut +#' +# FIXME - Okay, so what does this function do, really? sub manualinvoice{ my ($bornum,$itemnum,$desc,$type,$amount,$user)=@_; my $dbh=C4Connect; @@ -197,10 +295,10 @@ sub manualinvoice{ my %env; my $accountno=getnextacctno('',$bornum,$dbh); my $amountleft=$amount; - + if ($type eq 'CS' || $type eq 'CB' || $type eq 'CW' || $type eq 'CF' || $type eq 'CL'){ - my $amount2=$amount*-1; + my $amount2=$amount*-1; # FIXME - $amount2 = -$amount $amountleft=fixcredit(\%env,$bornum,$amount2,$itemnum,$type,$user); } if ($type eq 'N'){ @@ -210,7 +308,7 @@ sub manualinvoice{ $desc="Lost Item"; } if ($type eq 'REF'){ - $amountleft=refund('',$bornum,$amount); + $amountleft=refund('',$bornum,$amount); } if ($itemnum ne ''){ my $sth=$dbh->prepare("Select * from items where barcode='$itemnum'"); @@ -226,14 +324,19 @@ sub manualinvoice{ $insert="insert into accountlines (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding) values ($bornum,$accountno,now(),'$amount',$desc,'$type','$amountleft')"; } - + my $sth=$dbh->prepare($insert); $sth->execute; $sth->finish; - + $dbh->disconnect; } - + +# fixcredit +# $amountleft = &fixcredit($env, $bornumber, $data, $barcode, $type, $user); +# +# This function is only used internally. +# FIXME - Figure out what this function does, and write it down. sub fixcredit{ #here we update both the accountoffsets and the account lines my ($env,$bornumber,$data,$barcode,$type,$user)=@_; @@ -242,7 +345,7 @@ sub fixcredit{ my $newamtos = 0; my $accdata = ""; my $amountleft = $data; - if ($barcode ne ''){ + if ($barcode ne ''){ my $item=getiteminformation($env,'',$barcode); my $nextaccntno = getnextacctno($env,$bornumber,$dbh); my $query="Select * from accountlines where (borrowernumber='$bornumber' @@ -259,7 +362,7 @@ sub fixcredit{ my $sth=$dbh->prepare($query); $sth->execute; $accdata=$sth->fetchrow_hashref; - $sth->finish; + $sth->finish; if ($accdata->{'amountoutstanding'} < $amountleft) { $newamtos = 0; $amountleft = $amountleft - $accdata->{'amountoutstanding'}; @@ -273,7 +376,7 @@ sub fixcredit{ my $usth = $dbh->prepare($updquery); $usth->execute; $usth->finish; - $updquery = "insert into accountoffsets + $updquery = "insert into accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) values ($bornumber,$accdata->{'accountno'},$nextaccntno,$newamtos)"; $usth = $dbh->prepare($updquery); @@ -283,7 +386,7 @@ sub fixcredit{ # begin transaction my $nextaccntno = getnextacctno($env,$bornumber,$dbh); # get lines with outstanding amounts to offset - my $query = "select * from accountlines + my $query = "select * from accountlines where (borrowernumber = '$bornumber') and (amountoutstanding >0) order by date"; my $sth = $dbh->prepare($query); @@ -304,7 +407,7 @@ sub fixcredit{ my $usth = $dbh->prepare($updquery); $usth->execute; $usth->finish; - $updquery = "insert into accountoffsets + $updquery = "insert into accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) values ($bornumber,$accdata->{'accountno'},$nextaccntno,$newamtos)"; $usth = $dbh->prepare($updquery); @@ -318,9 +421,10 @@ sub fixcredit{ UpdateStats($env,$user,$type,$data,$user,'','',$bornumber); $amountleft*=-1; return($amountleft); - + } +# FIXME - Figure out what this function does, and write it down. sub refund{ #here we update both the accountoffsets and the account lines my ($env,$bornumber,$data)=@_; @@ -330,11 +434,11 @@ sub refund{ my $accdata = ""; # my $branch=$env->{'branchcode'}; my $amountleft = $data *-1; - + # begin transaction my $nextaccntno = getnextacctno($env,$bornumber,$dbh); # get lines with outstanding amounts to offset - my $query = "select * from accountlines + my $query = "select * from accountlines where (borrowernumber = '$bornumber') and (amountoutstanding<0) order by date"; my $sth = $dbh->prepare($query); @@ -357,7 +461,7 @@ sub refund{ my $usth = $dbh->prepare($updquery); $usth->execute; $usth->finish; - $updquery = "insert into accountoffsets + $updquery = "insert into accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) values ($bornumber,$accdata->{'accountno'},$nextaccntno,$newamtos)"; $usth = $dbh->prepare($updquery); @@ -368,4 +472,15 @@ sub refund{ $dbh->disconnect; return($amountleft); } + END { } # module clean-up code here (global destructor) + +1; +__END__ +=back + +=head1 SEE ALSO + +L + +=cut diff --git a/C4/Stats.pm b/C4/Stats.pm index 7b69696038..28876d3e6a 100644 --- a/C4/Stats.pm +++ b/C4/Stats.pm @@ -27,11 +27,48 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); # set the version for version checking $VERSION = 0.01; +=head1 NAME + +C4::Stats - Update Koha statistics (log) + +=head1 SYNOPSIS + + use C4::Stats; + +=head1 DESCRIPTION + +The C<&UpdateStats> function adds an entry to the statistics table in +the Koha database, which acts as an activity log. + +=head1 FUNCTIONS + +=over 2 + +=cut + @ISA = qw(Exporter); @EXPORT = qw(&UpdateStats &statsreport &Count &Overdues &TotalOwing &TotalPaid &getcharges &Getpaidbranch &unfilledreserves); +=item UpdateStats + + &UpdateStats($env, $branch, $type, $value, $other, $itemnumber, + $itemtype, $borrowernumber); +Adds a line to the statistics table of the Koha database. In effect, +it logs an event. + +C<$branch>, C<$type>, C<$value>, C<$other>, C<$itemnumber>, +C<$itemtype>, and C<$borrowernumber> correspond to the fields of the +statistics table in the Koha database. + +If C<$branch> is the empty string, the branch code will be taken from +C<$env-E{branchcode}>. + +C<$env-E{usercode} specifies the value of the C field. + +=cut +#' sub UpdateStats { #module to insert stats data into stats table my ($env,$branch,$type,$amount,$other,$itemnum,$itemtype,$borrowernumber)=@_; @@ -41,9 +78,10 @@ sub UpdateStats { } my $user = $env->{'usercode'}; print $borrowernumber; + # FIXME - Use $dbh->do() instead? my $sth=$dbh->prepare("Insert into statistics (datetime,branch,type,usercode,value, - other,itemnumber,itemtype,borrowernumber) + other,itemnumber,itemtype,borrowernumber) values (now(),'$branch','$type','$user','$amount', '$other','$itemnum','$itemtype','$borrowernumber')"); $sth->execute; @@ -51,6 +89,11 @@ sub UpdateStats { $dbh->disconnect; } +# XXX - POD +# FIXME - Why does this function exist? Why not just rename &circrep +# to &statsreport? +# Then again, it only appears to be used in reports.pl which, in turn, +# doesn't appear to be used. So presumably this function is obsolete. sub statsreport { #module to return a list of stats for a given day,time,branch type #or to return search stats @@ -63,11 +106,14 @@ sub statsreport { return(@data); } +# XXX - Doc. Only used internally. Probably useless: see comment for +# &statsreport. sub circrep { my ($time,$type)=@_; my $dbh=C4Connect; my $query="Select * from statistics"; if ($time eq 'today'){ + # FIXME - What is this supposed to do? MySQL 3.23.42 barfs on it. $query=$query." where type='$type' and datetime >=datetime('yesterday'::date)"; } @@ -86,6 +132,8 @@ sub circrep { } +# XXX - POD +# FIXME - This is only used in stats.pl, which in turn is never used. sub Count { my ($type,$branch,$time,$time2)=@_; my $dbh=C4Connect; @@ -100,6 +148,7 @@ sub Count { return($data->{'count(*)'}); } +# XXX - POD. Doesn't appear to be used sub Overdues{ my $dbh=C4Connect; my $query="Select count(*) from issues where date_due >= now()"; @@ -108,9 +157,10 @@ sub Overdues{ my $count=$sth->fetchrow_hashref; $sth->finish; $dbh->disconnect; - return($count->{'count(*)'}); + return($count->{'count(*)'}); } +# XXX - POD. Never used sub TotalOwing{ my ($type)=@_; my $dbh=C4Connect; @@ -123,10 +173,11 @@ sub TotalOwing{ $sth->execute; my $total=$sth->fetchrow_hashref; $sth->finish; - $dbh->disconnect; + $dbh->disconnect; return($total->{'sum(amountoutstanding)'}); } +# XXX - POD. Never used sub TotalPaid { my ($time)=@_; my $dbh=C4Connect; @@ -157,11 +208,12 @@ or accounttype ='W') $i++; } $sth->finish; - $dbh->disconnect; + $dbh->disconnect; # print $query; return(@results); } +# XXX - POD. Only used in stats.pl, which in turn is never used. sub getcharges{ my($borrowerno,$timestamp)=@_; my $dbh=C4Connect; @@ -184,6 +236,8 @@ sub getcharges{ return(@results); } +# XXX - POD. This is only used in stats.pl and stats2.pl, neither of +# which is used. sub Getpaidbranch{ my($date,$borrno)=@_; my $dbh=C4Connect; @@ -198,6 +252,8 @@ sub Getpaidbranch{ return($data->{'branch'}); } +# XXX - POD. This is only used in reservereport.pl and +# reservereport.xls, neither of which is used. sub unfilledreserves { my $dbh=C4Connect; my $query="select *,biblio.title from reserves,reserveconstraints,biblio,borrowers,biblioitems where found <> 'F' and cancellationdate @@ -235,5 +291,13 @@ biblio.title,reserves.reservedate"; } END { } # module clean-up code here (global destructor) - - + +1; +__END__ +=back + +=head1 AUTHOR + +Koha Developement team + +=cut -- 2.39.2