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
#
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
=over 2
=cut
-
+
@ISA = qw(Exporter);
@EXPORT = qw(&checkaccount &reconcileaccount &getnextacctno);
-# FIXME - This is never used
-sub displayaccounts{
- my ($env)=@_;
-}
=item checkaccount
#}
# pause();
return($total);
-}
+}
# XXX - POD. Need to figure out C4/Interface/AccountsCDK.pm first,
# though
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);
}
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
sub getnextacctno {
my ($env,$bornumber,$dbh)=@_;
my $nextaccntno = 1;
- # FIXME - This could just be
- # SELECT max(accountno)+1 from accountlines;
- 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
-L<DBI(3)|DBI>
+C4::Accounts2(3), DBI(3)
=cut