From bdd0672917a63d77a164f769f9af161f627d188a Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Thu, 17 Jun 2010 22:19:37 +0000
Subject: [PATCH] Add state

---
 ChangeLog                              |  3 ++-
 htdocs/admin/company.php               | 26 ++++++++++++++++++++++++++
 htdocs/core/class/html.form.class.php  |  2 +-
 htdocs/lib/company.lib.php             | 13 +++++++------
 htdocs/master.inc.php                  |  9 ++++++---
 htdocs/societe/class/societe.class.php | 10 ++++++++--
 6 files changed, 50 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 03a86442e4e..95b1b7a37ef 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,7 +4,8 @@ English Dolibarr ChangeLog
 
 For users:
 - New: POS module allow to choose which warehouse use.
-- New: Support "Department/State" field on contact and members card.
+- New: Support "Department/State" field on company setup, contact 
+       and members card.
 - New: Can reopen a refused/canceled supplier order.
 - New: Add Gant diagramm on project module.
 - New: Add a new mode for automatic stock increase: Can be increased
diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php
index 073de5ebbbb..0b7094ab3a2 100644
--- a/htdocs/admin/company.php
+++ b/htdocs/admin/company.php
@@ -58,6 +58,7 @@ if ( (isset($_POST["action"]) && $_POST["action"] == 'update')
 	dolibarr_set_const($db, "MAIN_INFO_SOCIETE_VILLE",$_POST["ville"],'chaine',0,'',$conf->entity);
 	dolibarr_set_const($db, "MAIN_INFO_SOCIETE_CP",$_POST["cp"],'chaine',0,'',$conf->entity);
 	dolibarr_set_const($db, "MAIN_INFO_SOCIETE_PAYS",$_POST["pays_id"],'chaine',0,'',$conf->entity);
+	dolibarr_set_const($db, "MAIN_INFO_SOCIETE_DEPARTEMENT",$_POST["departement_id"],'chaine',0,'',$conf->entity);
 	dolibarr_set_const($db, "MAIN_MONNAIE",$_POST["currency"],'chaine',0,'',$conf->entity);
 	dolibarr_set_const($db, "MAIN_INFO_SOCIETE_TEL",$_POST["tel"],'chaine',0,'',$conf->entity);
 	dolibarr_set_const($db, "MAIN_INFO_SOCIETE_FAX",$_POST["fax"],'chaine',0,'',$conf->entity);
@@ -267,6 +268,12 @@ if ((isset($_GET["action"]) && $_GET["action"] == 'edit')
 	if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1);
 	print '</td></tr>'."\n";
 
+	$var=!$var;
+	print '<tr '.$bc[$var].'><td>'.$langs->trans("State").'</td><td>';
+	$pays_code=getCountryLabel($conf->global->MAIN_INFO_SOCIETE_PAYS,2);
+	$formcompany->select_departement($conf->global->MAIN_INFO_SOCIETE_DEPARTEMENT,$pays_code,'departement_id');
+	print '</td></tr>'."\n";
+
 	$var=!$var;
 	print '<tr '.$bc[$var].'><td>'.$langs->trans("CompanyCurrency").'</td><td>';
 	$form->select_currency($conf->global->MAIN_MONNAIE,"currency");
@@ -597,6 +604,25 @@ else
 	print getCountryLabel($conf->global->MAIN_INFO_SOCIETE_PAYS,1);
 	print '</td></tr>';
 
+	$var=!$var;
+	print '<tr '.$bc[$var].'><td>'.$langs->trans("State").'</td><td>';
+	if ($conf->global->MAIN_INFO_SOCIETE_DEPARTEMENT)
+	{
+		$sql = "SELECT code_departement as code, nom as label from ".MAIN_DB_PREFIX."c_departements where rowid = '".$conf->global->MAIN_INFO_SOCIETE_DEPARTEMENT."'";
+		$resql=$db->query($sql);
+		if ($resql)
+		{
+			$obj = $db->fetch_object($resql);
+		}
+		else
+		{
+			dol_print_error($db);
+		}
+		$state=$obj->label;
+		print $state;
+	}
+	print '</td></tr>';
+
 	$var=!$var;
 	print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("CompanyCurrency").'</td><td>';
 	print currency_name($conf->global->MAIN_MONNAIE,1);
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 33705295c36..d74b6bfa7f0 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -256,7 +256,7 @@ class Form
 	 *    \param     selected         Id ou Code pays ou Libelle pays pre-selectionne
 	 *    \param     htmlname         Nom de la liste deroulante
 	 *    \param     htmloption       Options html sur le select
-	 *    \todo      trier liste sur noms apres traduction plutot que avant
+	 *    \TODO      trier liste sur noms apres traduction plutot que avant
 	 */
 	function select_pays($selected='',$htmlname='pays_id',$htmloption='')
 	{
diff --git a/htdocs/lib/company.lib.php b/htdocs/lib/company.lib.php
index a7f2c722cb7..7b22467f6e0 100644
--- a/htdocs/lib/company.lib.php
+++ b/htdocs/lib/company.lib.php
@@ -180,10 +180,10 @@ function societe_prepare_head2($objsoc)
 
 
 /**
- *    \brief      Retourne le nom traduit ou code+nom d'un pays
- *    \param      id          id du pays
- *    \param      withcode    1=affiche code + nom
- *    \return     string      Nom traduit du pays
+ *    \brief      Retourne le nom traduit ou code+nom d'un pays depuis id
+ *    \param      id          id of country
+ *    \param      withcode    0=Return label, 1=Return code + label, 2=Return code
+ *    \return     string      String with country code or translated country name
  */
 function getCountryLabel($id,$withcode=0)
 {
@@ -199,8 +199,9 @@ function getCountryLabel($id,$withcode=0)
 		$obj = $db->fetch_object($resql);
 		if ($obj)
 		{
-			$label=$obj->code && $langs->trans("Country".$obj->code)!="Country".$obj->code?$langs->trans("Country".$obj->code):($obj->libelle!='-'?$obj->libelle:'');
-			if ($withcode) return $label==$obj->code?"$obj->code":"$obj->code - $label";
+			$label=($obj->code && $langs->trans("Country".$obj->code)!="Country".$obj->code)?$langs->trans("Country".$obj->code):($obj->libelle!='-'?$obj->libelle:'');
+			if ($withcode == 1) return $label=$obj->code?"$obj->code":"$obj->code - $label";
+			else if ($withcode == 2) return $label=$obj->code;
 			else return $label;
 		}
 		else
diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php
index 59c25e2a37d..9d63d25d463 100644
--- a/htdocs/master.inc.php
+++ b/htdocs/master.inc.php
@@ -349,18 +349,20 @@ if (! defined('NOREQUIREDB') && ! defined('NOREQUIRESOC'))
 	$mysoc->zip=$conf->global->MAIN_INFO_SOCIETE_CP;
 	$mysoc->ville=$conf->global->MAIN_INFO_SOCIETE_VILLE; // TODO obsolete
 	$mysoc->town=$conf->global->MAIN_INFO_SOCIETE_VILLE;
+	$mysoc->departement_id=$conf->global->MAIN_INFO_SOCIETE_DEPARTEMENT;
 	$mysoc->note=$conf->global->MAIN_INFO_SOCIETE_NOTE;
-	// Si dans MAIN_INFO_SOCIETE_PAYS on a un id de pays, on recupere code
+	// For backwar compatibility: Si dans MAIN_INFO_SOCIETE_PAYS on a un id de pays, on recupere code
 	if (is_numeric($conf->global->MAIN_INFO_SOCIETE_PAYS))
 	{
-		$mysoc->pays_id=$conf->global->MAIN_INFO_SOCIETE_PAYS;
-		$sql  = "SELECT code, libelle as label from ".MAIN_DB_PREFIX."c_pays";
+		$sql  = "SELECT rowid, code, libelle as label from ".MAIN_DB_PREFIX."c_pays";
 		$sql .= " WHERE rowid = ".$conf->global->MAIN_INFO_SOCIETE_PAYS;
 		$result=$db->query($sql);
 		if ($result)
 		{
 			$obj = $db->fetch_object();
+			$mysoc->pays_id=$conf->rowid;
 			$mysoc->pays_code=$obj->code;
+			$mysoc->pays=$obj->code?($langs->trans('Country'.$obj->code)!='Country'.$obj->code?$langs->trans('Country'.$obj->code):$obj->label):'';	// deprecated
 			$mysoc->country=$obj->code?($langs->trans('Country'.$obj->code)!='Country'.$obj->code?$langs->trans('Country'.$obj->code):$obj->label):'';
 		}
 		else {
@@ -371,6 +373,7 @@ if (! defined('NOREQUIREDB') && ! defined('NOREQUIRESOC'))
 	else
 	{
 		$mysoc->pays_code=$conf->global->MAIN_INFO_SOCIETE_PAYS;
+		$mysoc->pays=$conf->global->MAIN_INFO_SOCIETE_PAYS?$langs->trans('Country'.$conf->global->MAIN_INFO_SOCIETE_PAYS):'';	// deprecated
 		$mysoc->country=$conf->global->MAIN_INFO_SOCIETE_PAYS?$langs->trans('Country'.$conf->global->MAIN_INFO_SOCIETE_PAYS):'';
 	}
 	$mysoc->tel=$conf->global->MAIN_INFO_SOCIETE_TEL; // TODO obsolete
diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php
index 0b628971946..b4079837a09 100644
--- a/htdocs/societe/class/societe.class.php
+++ b/htdocs/societe/class/societe.class.php
@@ -54,9 +54,16 @@ class Societe extends CommonObject
 	var $adresse; // TODO obsolete
 	var $cp;
 	var $ville;
+
 	var $departement_id;
+	var $departement_code;
+	var $departement;
+
 	var $pays_id;
 	var $pays_code;
+	var $pays;	// TODO obsolete
+	var $country;
+
 	var $tel;
 	var $fax;
 	var $email;
@@ -1466,8 +1473,7 @@ class Societe extends CommonObject
 		require_once DOL_DOCUMENT_ROOT . "/societe/class/companybankaccount.class.php";
 
 		$bac = new CompanyBankAccount($this->db);
-		$bac->socid = $this->id;
-		$bac->fetch($this->id);
+		$bac->fetch(0,$this->id);
 
 		if ($bac->code_banque || $bac->code_guichet || $bac->number || $bac->cle_rib)
 		{
-- 
GitLab