package C4::Accounts; #assumes C4/Accounts
+# FIXME: This module uses the CDK modules, and crashes if called from a web script
+# Hence the existence of Accounts2
+#
+# This module will be deprecated when we build a new curses/slang/character
+# based interface.
+
+# $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;
require Exporter;
use DBI;
-use C4::Database;
+use C4::Context;
use C4::Format;
use C4::Search;
use C4::Stats;
-use C4::InterfaceCDK;
-use C4::Interface::AccountsCDK;
+#use C4::InterfaceCDK;
+#use C4::Interface::AccountsCDK;
use vars qw($VERSION @ISA @EXPORT);
-
+
# set the version for version checking
$VERSION = 0.01;
-
+
+=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(&checkaccount &reconcileaccount &getnextacctno);
-sub displayaccounts{
- my ($env)=@_;
-}
+=item checkaccount
+
+ $owed = &checkaccount($env, $borrowernumber, $dbh);
+
+Looks up the total amount of money owed by a borrower (fines, etc.).
+
+C<$borrowernumber> specifies the borrower to look up.
+
+C<$dbh> is a DBI::db handle for the Koha database.
+
+C<$env> is ignored.
+
+=cut
+#'
sub checkaccount {
#take borrower number
#check accounts and list amounts owing
$sth->execute;
my $total=0;
while (my $data=$sth->fetchrow_hashref){
- $total=$total+$data->{'sum(amountoutstanding)'};
+ $total += $data->{'sum(amountoutstanding)'};
}
$sth->finish;
# output(1,2,"borrower owes $total");
#}
# pause();
return($total);
-}
+}
+# XXX - POD. Need to figure out C4/Interface/AccountsCDK.pm first,
+# though
+# FIXME - It looks as though this function really wants to be part of
+# a curses-based script.
sub reconcileaccount {
#print put money owing give person opportunity to pay it off
my ($env,$dummy,$bornumber,$total)=@_;
- my $dbh = &C4Connect;
+ my $dbh = C4::Context->dbh;
#get borrower record
my $sth=$dbh->prepare("select * from borrowers
where borrowernumber=$bornumber");
my $borrower=$sth->fetchrow_hashref;
$sth->finish();
#get borrower information
- $sth=$dbh->prepare("Select * from accountlines where
- borrowernumber=$bornumber and amountoutstanding<>0 order by date");
- $sth->execute;
+ $sth=$dbh->prepare("Select * from accountlines where
+ borrowernumber=$bornumber and amountoutstanding<>0 order by date");
+ $sth->execute;
#display account information
&clearscreen();
#&helptext('F11 quits');
$line= $data->{'accountno'}." ".$data->{'date'}." ".$data->{'accounttype'}." ";
my $title = $itemdata->{'title'};
if (length($title) > 15 ) {$title = substr($title,0,15);}
- $line= $line.$itemdata->{'barcode'}." $title ".$data->{'description'};
+ $line .= $itemdata->{'barcode'}." $title ".$data->{'description'};
$line = fmtstr($env,$line,"L65")." ".fmtdec($env,$amount,"52");
push @accountlines,$line;
$i++;
}
#get amount paid and update database
my ($data,$reason)=
- &accountsdialog($env,"Payment Entry",$borrower,\@accountlines,$total);
+ &accountsdialog($env,"Payment Entry",$borrower,\@accountlines,$total);
if ($data>0) {
&recordpayment($env,$bornumber,$dbh,$data);
#Check if the borrower still owes
$total=&checkaccount($env,$bornumber,$dbh);
}
- $dbh->disconnect;
return($total);
}
+# FIXME - This function is never used. Then again, it's not exported,
+# either.
sub recordpayment{
#here we update both the accountoffsets and the account lines
my ($env,$bornumber,$dbh,$data)=@_;
- my $updquery = "";
my $newamtos = 0;
my $accdata = "";
my $amountleft = $data;
# $sth->execute;
my $nextaccntno = getnextacctno($env,$bornumber,$dbh);
# get lines with outstanding amounts to offset
- my $query = "select * from accountlines
- where (borrowernumber = '$bornumber') and (amountoutstanding<>0)
- order by date";
- my $sth = $dbh->prepare($query);
- $sth->execute;
+ my $sth = $dbh->prepare("select * from accountlines
+ where (borrowernumber = ?) and (amountoutstanding<>0)
+ order by date");
+ $sth->execute($bornumber);
# offset transactions
while (($accdata=$sth->fetchrow_hashref) and ($amountleft>0)){
if ($accdata->{'amountoutstanding'} < $amountleft) {
$newamtos = 0;
- $amountleft = $amountleft - $accdata->{'amountoutstanding'};
+ $amountleft -= $accdata->{'amountoutstanding'};
} else {
$newamtos = $accdata->{'amountoutstanding'} - $amountleft;
$amountleft = 0;
}
my $thisacct = $accdata->{accountno};
- $updquery = "update accountlines set amountoutstanding= '$newamtos'
- where (borrowernumber = '$bornumber') and (accountno='$thisacct')";
- my $usth = $dbh->prepare($updquery);
- $usth->execute;
+ my $usth = $dbh->prepare("update accountlines set amountoutstanding= ?
+ where (borrowernumber = ?) and (accountno=?)");
+ $usth->execute($newamtos,$bornumber,$thisacct);
$usth->finish;
- $updquery = "insert into accountoffsets
+
+ $usth = $dbh->prepare("insert into accountoffsets
(borrowernumber, accountno, offsetaccount, offsetamount)
- values ($bornumber,$accdata->{'accountno'},$nextaccntno,$newamtos)";
- my $usth = $dbh->prepare($updquery);
+ values (?,?,?,?)");
# print $updquery
- $usth->execute;
+ $usth->execute($bornumber,$accdata->{'accountno'},$nextaccntno,$newamtos);
$usth->finish;
}
# create new line
#accountno,date,amount,description,accounttype,amountoutstanding) values
#($bornumber,$nextaccntno,datetime('now'::abstime),0-$data,'Payment,thanks',
#'Pay',0-$amountleft)";
- $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);
- $usth->execute;
+ my $usth = $dbh->prepare("insert into accountlines
+ (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding)
+ values (?,?,now(),?,?,'Payment,thanks','Pay')");
+ $usth->execute($bornumber,$nextaccntno,0-$data,0-$amountleft);
$usth->finish;
UpdateStats($env,'branch','payment',$data)
-# $sth->finish;
-# $query = "commit";
-# $sth = $dbh->prepare;
-# $sth->execute;
-# $sth-finish;
}
+=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;
- my $query = "select * from accountlines
- where (borrowernumber = '$bornumber')
- order by accountno desc";
- my $sth = $dbh->prepare($query);
+
+ my $sth = $dbh->prepare("select max(accountno)+1 from accountlines");
$sth->execute;
if (my $accdata=$sth->fetchrow_hashref){
$nextaccntno = $accdata->{'accountno'} + 1;
}
$sth->finish;
- return($nextaccntno);
+ return$nextaccntno;
}
-
+
END { } # module clean-up code here (global destructor)
+
+1;
+__END__
+
+=back
+
+=head1 SEE ALSO
+
+C4::Accounts2(3), DBI(3)
+
+=cut