From ef31ca9b843ae9c067ed2cb4124c831ef1567421 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Sat, 7 Feb 2015 23:32:46 +0100
Subject: [PATCH] New: Add balance of each account statement.

---
 htdocs/compta/bank/releve.php                 | 42 +++++++++++++++++--
 .../install/mysql/migration/3.7.0-3.8.0.sql   |  3 ++
 htdocs/install/mysql/tables/llx_bank.key.sql  |  2 +
 3 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php
index 902495bc6aa..2fa9436d366 100644
--- a/htdocs/compta/bank/releve.php
+++ b/htdocs/compta/bank/releve.php
@@ -146,9 +146,14 @@ if (empty($num))
 
 		print '<table class="noborder" width="100%">';
 		print '<tr class="liste_titre">';
-		print '<td>'.$langs->trans("AccountStatement").'</td></tr>';
+		print '<td>'.$langs->trans("AccountStatement").'</td>';
+		print '<td>'.$langs->trans("InitialBankBalance").'</td>';
+		print '<td>'.$langs->trans("EndBankBalance").'</td>';
+		print '</tr>';
+
+		$balancestart=array();
+		$content=array();
 
-		//while ($i < min($numrows,$conf->liste_limit))   // retrait de la limite tant qu'il n'y a pas de pagination
 		while ($i < min($numrows,$conf->liste_limit))
 		{
 			$objp = $db->fetch_object($result);
@@ -159,7 +164,37 @@ if (empty($num))
 			}
 			else
 			{
-				print '<tr '.$bc[$var].'><td><a href="releve.php?num='.$objp->numr.'&amp;account='.$acct->id.'">'.$objp->numr.'</a></td></tr>'."\n";
+				print '<tr '.$bc[$var].'><td><a href="releve.php?num='.$objp->numr.'&amp;account='.$acct->id.'">'.$objp->numr.'</a></td>';
+
+				// Calculate start amount
+				$sql = "SELECT sum(b.amount) as amount";
+				$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
+				$sql.= " WHERE b.num_releve < '".$db->escape($objp->numr)."'";
+				$sql.= " AND b.fk_account = ".$acct->id;
+				$resql=$db->query($sql);
+				if ($resql)
+				{
+					$obj=$db->fetch_object($resql);
+					$balancestart[$objp->numr] = $obj->amount;
+					$db->free($resql);
+				}
+				print '<td>'.price($balancestart[$objp->numr],'',$langs,1,-1,-1,$conf->currency).'</td>';
+
+				// Calculate end amount
+				$sql = "SELECT sum(b.amount) as amount";
+				$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
+				$sql.= " WHERE b.num_releve = '".$db->escape($objp->numr)."'";
+				$sql.= " AND b.fk_account = ".$acct->id;
+				$resql=$db->query($sql);
+				if ($resql)
+				{
+					$obj=$db->fetch_object($resql);
+					$content[$objp->numr] = $obj->amount;
+					$db->free($resql);
+				}
+				print '<td>'.price(($balancestart[$objp->numr]+$content[$objp->numr]),'',$langs,1,-1,-1,$conf->currency).'</td>';
+
+				print '</tr>'."\n";
 			}
 			$i++;
 		}
@@ -179,6 +214,7 @@ else
 	 */
 	$ve=$_GET["ve"];
 
+	// Define number of receipt to show (current, previous or next one ?)
 	$found=false;
 	if ($_GET["rel"] == 'prev')
 	{
diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql
index 60d0e0660da..a96888b5173 100755
--- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql
+++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql
@@ -19,6 +19,9 @@
 -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user      WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup);
 
 
+ALTER TABLE llx_bank ADD INDEX idx_bank_num_releve(num_releve);
+
+
 --create table for price expressions and add column in product supplier
 create table llx_c_price_expression
 (
diff --git a/htdocs/install/mysql/tables/llx_bank.key.sql b/htdocs/install/mysql/tables/llx_bank.key.sql
index cab5f200234..8eb2e963a32 100644
--- a/htdocs/install/mysql/tables/llx_bank.key.sql
+++ b/htdocs/install/mysql/tables/llx_bank.key.sql
@@ -20,5 +20,7 @@ ALTER TABLE llx_bank ADD INDEX idx_bank_datev(datev);
 ALTER TABLE llx_bank ADD INDEX idx_bank_dateo(dateo);
 ALTER TABLE llx_bank ADD INDEX idx_bank_fk_account(fk_account);
 ALTER TABLE llx_bank ADD INDEX idx_bank_rappro(rappro);
+ALTER TABLE llx_bank ADD INDEX idx_bank_num_releve(num_releve);
+
 
 
-- 
GitLab