From 82fc052de056b68515322140e49a6a13f273dd9e Mon Sep 17 00:00:00 2001
From: Regis Houssin <regis@dolibarr.fr>
Date: Tue, 22 Mar 2011 19:31:29 +0000
Subject: [PATCH] patch #7445 : display the subsidiaries of a company

---
 htdocs/langs/en_US/companies.lang |  3 ++
 htdocs/langs/fr_FR/companies.lang |  3 ++
 htdocs/lib/company.lib.php        | 74 +++++++++++++++++++++++++++++++
 htdocs/societe/soc.php            |  6 +++
 4 files changed, 86 insertions(+)

diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang
index cbb22e44061..2ad0ffb79df 100644
--- a/htdocs/langs/en_US/companies.lang
+++ b/htdocs/langs/en_US/companies.lang
@@ -44,6 +44,9 @@ Company/Fundation=Company/Foundation
 Individual=Private individual
 ToCreateContactWithSameName=Will create automatically a physical contact with same informations
 ParentCompany=Parent company
+Subsidiary=Subsidiary
+Subsidiaries=Subsidiaries
+NoSubsidiary=No subsidiary
 ReportByCustomers=Report by customers
 ReportByQuarter=Report by rate
 CivilityCode=Civility code
diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang
index ab4892bf7e1..f4b0f223d94 100644
--- a/htdocs/langs/fr_FR/companies.lang
+++ b/htdocs/langs/fr_FR/companies.lang
@@ -48,6 +48,9 @@ ToCreateContactWithSameName=Créera automatiquement un contact physique avec inf
 ReportByCustomers=Rapport par client
 ReportByQuarter=Rapport par taux
 ParentCompany=Maison mère
+Subsidiary=Filiale
+Subsidiaries=Filiales
+NoSubsidiary=Aucune filiale
 CivilityCode=Code civilité
 RegisteredOffice=Siège sociale
 Name=Nom
diff --git a/htdocs/lib/company.lib.php b/htdocs/lib/company.lib.php
index f62ebd6431f..1d100982b05 100644
--- a/htdocs/lib/company.lib.php
+++ b/htdocs/lib/company.lib.php
@@ -860,4 +860,78 @@ function show_actions_done($conf,$langs,$db,$object,$objcon='')
 
 }
 
+/**
+ * 		Show html area for list of subsidiaries
+ *		@param		conf		Object conf
+ * 		@param		lang		Object lang
+ * 		@param		db			Database handler
+ * 		@param		objsoc		Third party object
+ */
+function show_subsidiaries($conf,$langs,$db,$object)
+{
+	global $user;
+	global $bc;
+
+	$i=-1;
+
+	$sql = "SELECT s.rowid, s.nom as name, s.address, s.cp as zip, s.ville as town, s.code_client, s.canvas";
+	$sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
+	$sql.= " WHERE s.parent = ".$object->id;
+	$sql.= " AND s.entity = ".$conf->entity;
+	$sql.= " ORDER BY s.nom";
+
+	$result = $db->query($sql);
+	$num = $db->num_rows($result);
+
+	if ($num)
+	{
+		$socstatic = new Societe($db);
+		
+		print_titre($langs->trans("Subsidiaries"));
+		print "\n".'<table class="noborder" width="100%">'."\n";
+
+		print '<tr class="liste_titre"><td>'.$langs->trans("Company").'</td>';
+		print '<td>'.$langs->trans("Address").'</td><td>'.$langs->trans("Zip").'</td>';
+		print '<td>'.$langs->trans("Town").'</td><td>'.$langs->trans("CustomerCode").'</td>';
+		print "<td>&nbsp;</td>";
+		print "</tr>";
+
+		$i=0;
+		$var=true;
+
+		while ($i < $num)
+		{
+			$obj = $db->fetch_object($result);
+			$var = !$var;
+
+			print "<tr ".$bc[$var].">";
+
+			print '<td>';
+			$socstatic->id = $obj->rowid;
+			$socstatic->name = $obj->name;
+			$socstatic->canvas = $obj->canvas;
+			print $socstatic->getNomUrl(1);
+			print '</td>';
+
+			print '<td>'.$obj->address.'</td>';
+			print '<td>'.$obj->zip.'</td>';
+			print '<td>'.$obj->town.'</td>';
+			print '<td>'.$obj->code_client.'</td>';
+
+			print '<td align="center">';
+			print '<a href="'.DOL_URL_ROOT.'/societe/soc.php?socid='.$obj->rowid.'&amp;action=edit">';
+			print img_edit();
+			print '</a></td>';
+
+			print "</tr>\n";
+			$i++;
+		}
+		print "\n</table>\n";
+	}
+
+	print "<br>\n";
+
+	return $i;
+}
+
 ?>
diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php
index aa352d29136..c927fe74238 100644
--- a/htdocs/societe/soc.php
+++ b/htdocs/societe/soc.php
@@ -477,6 +477,9 @@ if (! empty($canvas))
 			print '</table>';
 
 			print '<br>';
+			
+			// Subsidiaries list
+			$result=show_subsidiaries($conf,$langs,$db,$soccanvas->control->object);
 
 			// Contacts list
 			$result=show_contacts($conf,$langs,$db,$soccanvas->control->object);
@@ -1754,6 +1757,9 @@ else
 		print '</table>';
 
 		print '<br>';
+		
+		// Subsidiaries list
+		$result=show_subsidiaries($conf,$langs,$db,$soc);
 
 		// Contacts list
 		if (empty($conf->global->SOCIETE_DISABLE_CONTACTS))
-- 
GitLab