[wiaflos-devel] COMMIT - r244 - trunk/wiaflos/server
svn at linuxrulz.org
svn at linuxrulz.org
Sun Aug 24 17:48:01 GMT 2008
Author: nkukard
Date: 2008-08-24 17:48:01 +0000 (Sun, 24 Aug 2008)
New Revision: 244
Modified:
trunk/wiaflos/server/Reporting.pm
Log:
* Added support for opening & closing account balances
Modified: trunk/wiaflos/server/Reporting.pm
===================================================================
--- trunk/wiaflos/server/Reporting.pm 2008-08-24 17:14:30 UTC (rev 243)
+++ trunk/wiaflos/server/Reporting.pm 2008-08-24 17:48:01 UTC (rev 244)
@@ -106,7 +106,8 @@
# Thi is the balance of the account for the period up until this reporting period
sub getAccountBalances
{
- my ($flags,$data) = @_;
+ our $flags = shift;
+ my $data = shift;
# GL search criteria
my $search;
@@ -131,9 +132,13 @@
# This is our final balances
my $creditBalance = Math::BigFloat->new();
+ my $openingCreditBalance = Math::BigFloat->new();
my $debitBalance = Math::BigFloat->new();
+ my $openingDebitBalance = Math::BigFloat->new();
$creditBalance->precision(-2);
+ $openingCreditBalance->precision(-2);
$debitBalance->precision(-2);
+ $openingDebitBalance->precision(-2);
# Loop with children
foreach my $caccount (@{$paccount->{'Children'}}) {
@@ -146,10 +151,17 @@
# Add up balance of child...
$creditBalance->badd($caccount->{'CreditBalance'});
$debitBalance->badd($caccount->{'DebitBalance'});
+ # Check if we should add up opening balances
+ if ($flags && REPORT_BALANCE_BF == REPORT_BALANCE_BF) {
+ $openingCreditBalance->badd($caccount->{'OpeningCreditBalance'});
+ $openingDebitBalance->badd($caccount->{'OpeningDebitBalance'});
+ }
}
# Build param we need to pass to get this accounts balance
- my $info = $search;
+ my $info;
+ $info->{'StartDate'} = $search->{'StartDate'};
+ $info->{'EndDate'} = $search->{'EndDate'};
$info->{'AccountID'} = $paccount->{'ID'};
# Get our own account balance
my $res = wiaflos::server::GL::getGLAccountBalance($info);
@@ -157,15 +169,41 @@
setError(wiaflos::server::GL::Error());
return $res;
}
- # Add it up ...
+ # Pull in balances...
$creditBalance->badd($res->{'CreditBalance'});
$debitBalance->badd($res->{'DebitBalance'});
-
- # Finish it off...
+ my $balance = $debitBalance->copy()->bsub($creditBalance);
+ # Set parent account balances
$paccount->{'CreditBalance'} = $creditBalance->bstr();
$paccount->{'DebitBalance'} = $debitBalance->bstr();
+ $paccount->{'Balance'} = $balance->bstr();
- $paccount->{'Balance'} = $debitBalance->copy()->bsub($creditBalance)->bstr();
+ # Check if we need to pull in balance brought forward
+ if ($flags && REPORT_BALANCE_BF == REPORT_BALANCE_BF) {
+ # We can only do this if we have a start date, else its pointless?
+ if ($search->{'StartDate'}) {
+ my $bfinfo;
+ $bfinfo->{'EndDate'} = $search->{'StartDate'};
+ $bfinfo->{'AccountID'} = $paccount->{'ID'};
+ # Pull in balance brought forward
+ $res = wiaflos::server::GL::getGLAccountBalance($bfinfo);
+ if (ref $res ne "HASH") {
+ setError(wiaflos::server::GL::Error());
+ return $res;
+ }
+ # Total up
+ $openingCreditBalance->badd($res->{'CreditBalance'});
+ $openingDebitBalance->badd($res->{'DebitBalance'});
+ }
+ # Set opening blalance
+ my $openingBalance = $openingDebitBalance->copy()->bsub($openingCreditBalance);
+ # Set parent account balances
+ $paccount->{'OpeningCreditBalance'} = $openingCreditBalance->bstr();
+ $paccount->{'OpeningDebitBalance'} = $openingDebitBalance->bstr();
+ $paccount->{'OpeningBalance'} = $openingBalance->bstr();
+ # Set closing balance
+ $paccount->{'ClosingBalance'} = $openingBalance->copy()->badd($balance);
+ }
return 0;
}
@@ -211,7 +249,7 @@
my $search;
$search->{'StartDate'} = $detail->{'StartDate'};
$search->{'EndDate'} = $detail->{'EndDate'};
- my $entries = getAccountBalances($search);
+ my $entries = getAccountBalances(REPORT_BALANCE_BF,$search);
if (ref $entries ne "ARRAY") {
setError(Error());
return $entries;
@@ -247,9 +285,16 @@
$i->{'Number'} = $account->{'Number'};
$i->{'Name'} = $account->{'Name'};
+ # Pull in the normal balances
$i->{'DebitBalance'} = $account->{'DebitBalance'};
$i->{'CreditBalance'} = $account->{'CreditBalance'};
$i->{'Balance'} = $account->{'Balance'};
+ # Check if we need the opening balances
+ $i->{'OpeningDebitBalance'} = $account->{'OpeningDebitBalance'};
+ $i->{'OpeningCreditBalance'} = $account->{'OpeningCreditBalance'};
+ $i->{'OpeningBalance'} = $account->{'OpeningBalance'};
+ # And closing balance
+ $i->{'ClosingBalance'} = $account->{'ClosingBalance'};
# Check balance
my $balance = Math::BigFloat->new();
More information about the wiaflos-devel
mailing list