[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