From ce08087a41adc2d2c2c915f56aa8f134ccd723e4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 17 Feb 2008 15:20:47 +0000 Subject: [PATCH] Fix: choice of country in list of juridal status --- htdocs/admin/dict.php | 256 +++++++++++++------------ htdocs/html.form.class.php | 58 +++--- htdocs/lib/admin.lib.php | 15 +- mysql/migration/2.2.0-2.4.0.sql | 2 + mysql/tables/llx_c_forme_juridique.sql | 11 +- 5 files changed, 176 insertions(+), 166 deletions(-) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 497009e0fc8..9fe02a638b3 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2007 Laurent Destailleur + * Copyright (C) 2004-2008 Laurent Destailleur * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2007 Regis Houssin * @@ -521,11 +521,12 @@ if ($_GET["id"]) { // Ligne de titre print ''; - foreach ($fieldlist as $field => $value) { + foreach ($fieldlist as $field => $value) + { // Determine le nom du champ par rapport aux noms possibles // dans les dictionnaires de données $showfield=1; // Par defaut - $valuetoshow=ucfirst($fieldlist[$field]); // Par defaut + $valuetoshow=ucfirst($fieldlist[$field]); // Par defaut if ($fieldlist[$field]=='source') { $valuetoshow=$langs->trans("Contact"); } if ($fieldlist[$field]=='price') { $valuetoshow=$langs->trans("PriceUHT"); } if ($fieldlist[$field]=='organization') { $valuetoshow=$langs->trans("Organization"); } @@ -571,52 +572,52 @@ if ($_GET["id"]) print ' '; } else - { - foreach ($fieldlist as $field => $value) - { - $showfield=1; - $valuetoshow=$obj->$fieldlist[$field]; + { + foreach ($fieldlist as $field => $value) + { + $showfield=1; + $valuetoshow=$obj->$fieldlist[$field]; - if ($valuetoshow=='all') { - $valuetoshow=$langs->trans('All'); - } - if ($fieldlist[$field]=='recuperableonly' || $fieldlist[$field]=='fdm') { - $valuetoshow=yn($valuetoshow); - } - if ($fieldlist[$field]=='price') { - $valuetoshow=price($valuetoshow); - } - if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='pays_id') { - $showfield=0; - } - if ($showfield) print ''.$valuetoshow.''; - } + if ($valuetoshow=='all') { + $valuetoshow=$langs->trans('All'); + } + if ($fieldlist[$field]=='recuperableonly' || $fieldlist[$field]=='fdm') { + $valuetoshow=yn($valuetoshow); + } + if ($fieldlist[$field]=='price') { + $valuetoshow=price($valuetoshow); + } + if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='pays_id') { + $showfield=0; + } + if ($showfield) print ''.$valuetoshow.''; + } - print ''; - // Est-ce une entrée du dictionnaire qui peut etre désactivée ? - $iserasable=1; // Oui par defaut - if (isset($obj->code) && ($obj->code == '0' || $obj->code == '' || eregi('unknown',$obj->code))) $iserasable=0; - if ($obj->type && $obj->type == 'system') $iserasable=0; + print ''; + // Est-ce une entrée du dictionnaire qui peut etre désactivée ? + $iserasable=1; // Oui par defaut + if (isset($obj->code) && ($obj->code == '0' || $obj->code == '' || eregi('unknown',$obj->code))) $iserasable=0; + if ($obj->type && $obj->type == 'system') $iserasable=0; - if ($iserasable) { - print ''.$actl[$obj->active].''; - } else { - print $langs->trans("AlwaysActive"); - } - print ""; - - if ($iserasable) { - print 'rowid?$obj->rowid:$obj->code).'">'.img_edit().''; - } else { - print ' '; - } - if ($iserasable) { - print ''.img_delete().''; - } else { - print ' '; - } - print "\n"; - } + if ($iserasable) { + print ''.$actl[$obj->active].''; + } else { + print $langs->trans("AlwaysActive"); + } + print ""; + + if ($iserasable) { + print 'rowid?$obj->rowid:$obj->code).'">'.img_edit().''; + } else { + print ' '; + } + if ($iserasable) { + print ''.img_delete().''; + } else { + print ' '; + } + print "\n"; + } $i++; } } @@ -680,91 +681,92 @@ llxFooter('$Date$ - $Revision$'); function fieldList($fieldlist,$obj='') { global $conf,$langs,$db; - global $region_id,$pays_id; + global $region_id; $html = new Form($db); foreach ($fieldlist as $field => $value) - { - if ($fieldlist[$field] == 'pays') { - print ''; - $html->select_pays($pays_id,'pays'); - print ''; - } - elseif ($fieldlist[$field] == 'pays_id') { - $pays_id = $obj->$fieldlist[$field]?$obj->$fieldlist[$field]:0; - print ''; - } - elseif ($fieldlist[$field] == 'region') { - print ''; - $html->select_region($region_id,'region'); - print ''; - } - elseif ($fieldlist[$field] == 'region_id') { - $region_id = $obj->$fieldlist[$field]?$obj->$fieldlist[$field]:0; - print ''; - } - elseif ($fieldlist[$field] == 'lang') { - print ''; - $html->select_lang($conf->global->MAIN_LANG_DEFAULT,'lang'); - print ''; - } - // Le type de l'element (pour les type de contact).' - elseif ($fieldlist[$field] == 'element') - { - $langs->load("orders"); - $langs->load("contracts"); - $langs->load("project"); - $langs->load("propal"); - $langs->load("bills"); - print ''; - $elementList = array("commande"=>$langs->trans("Order"), - "contrat"=>$langs->trans("Contract"), - "projet"=>$langs->trans("Project"), - "propal"=>$langs->trans("Propal"), - "facture"=>$langs->trans("Bill")); - $html->select_array('element', $elementList,$obj->$fieldlist[$field]); - print ''; - } - // La source de l'element (pour les type de contact).' - elseif ($fieldlist[$field] == 'source') - { - print ''; - $elementList = array("internal"=>$langs->trans("Internal"), - "external"=>$langs->trans("External")); - $html->select_array('source', $elementList,$obj->$fieldlist[$field]); - print ''; - } - elseif ($fieldlist[$field] == 'type' && $tabname[$_GET["id"]] == MAIN_DB_PREFIX."c_actioncomm") - { - print ''; - print 'user'; - print ''; - } - elseif ($fieldlist[$field] == 'recuperableonly' || $fieldlist[$field] == 'fdm') { - print ''; - print $html->selectyesno($fieldlist[$field],$obj->$fieldlist[$field],1); - print ''; - } - elseif ($fieldlist[$field] == 'nbjour' || $fieldlist[$field] == 'decalage' || $fieldlist[$field] == 'taux') { - print ''; - } - elseif ($fieldlist[$field] == 'price') { - print ''; - } - elseif ($fieldlist[$field] == 'code') { - print ''; - } - elseif ($fieldlist[$field]=='unit') { - print ''; - $html->select_array('unit',array('mm','cm','point','inch'),$obj->$fieldlist[$field],0,0,1); - print ''; - } - else - { - print ''; - } - } + { + if ($fieldlist[$field] == 'pays') { + //var_dump($obj); + print ''; + $html->select_pays($obj->pays,'pays'); + print ''; + } + elseif ($fieldlist[$field] == 'pays_id') { + $pays_id = (! empty($obj->$fieldlist[$field])) ? $obj->$fieldlist[$field] : 0; + print ''; + } + elseif ($fieldlist[$field] == 'region') { + print ''; + $html->select_region($region_id,'region'); + print ''; + } + elseif ($fieldlist[$field] == 'region_id') { + $region_id = $obj->$fieldlist[$field]?$obj->$fieldlist[$field]:0; + print ''; + } + elseif ($fieldlist[$field] == 'lang') { + print ''; + $html->select_lang($conf->global->MAIN_LANG_DEFAULT,'lang'); + print ''; + } + // Le type de l'element (pour les type de contact).' + elseif ($fieldlist[$field] == 'element') + { + $langs->load("orders"); + $langs->load("contracts"); + $langs->load("project"); + $langs->load("propal"); + $langs->load("bills"); + print ''; + $elementList = array("commande"=>$langs->trans("Order"), + "contrat"=>$langs->trans("Contract"), + "projet"=>$langs->trans("Project"), + "propal"=>$langs->trans("Propal"), + "facture"=>$langs->trans("Bill")); + $html->select_array('element', $elementList,$obj->$fieldlist[$field]); + print ''; + } + // La source de l'element (pour les type de contact).' + elseif ($fieldlist[$field] == 'source') + { + print ''; + $elementList = array("internal"=>$langs->trans("Internal"), + "external"=>$langs->trans("External")); + $html->select_array('source', $elementList,$obj->$fieldlist[$field]); + print ''; + } + elseif ($fieldlist[$field] == 'type' && $tabname[$_GET["id"]] == MAIN_DB_PREFIX."c_actioncomm") + { + print ''; + print 'user'; + print ''; + } + elseif ($fieldlist[$field] == 'recuperableonly' || $fieldlist[$field] == 'fdm') { + print ''; + print $html->selectyesno($fieldlist[$field],$obj->$fieldlist[$field],1); + print ''; + } + elseif ($fieldlist[$field] == 'nbjour' || $fieldlist[$field] == 'decalage' || $fieldlist[$field] == 'taux') { + print ''; + } + elseif ($fieldlist[$field] == 'price') { + print ''; + } + elseif ($fieldlist[$field] == 'code') { + print ''; + } + elseif ($fieldlist[$field]=='unit') { + print ''; + $html->select_array('unit',array('mm','cm','point','inch'),$obj->$fieldlist[$field],0,0,1); + print ''; + } + else + { + print ''; + } + } } ?> diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php index efa254714f1..cc0cb509e44 100644 --- a/htdocs/html.form.class.php +++ b/htdocs/html.form.class.php @@ -23,13 +23,12 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * $Id$ */ /** \file htdocs/html.form.class.php \brief Fichier de la classe des fonctions prédéfinie de composants html + \version $Id$ */ @@ -370,7 +369,7 @@ class Form /** * \brief Retourne la liste déroulante des pays actifs, dans la langue de l'utilisateur - * \param selected Id ou code pays pré-sélectionné + * \param selected Id ou Code pays ou Libelle pays pré-sélectionné * \param htmlname Nom de la liste deroulante * \param htmloption Options html sur le select * \todo trier liste sur noms après traduction plutot que avant @@ -441,32 +440,33 @@ class Form { print ''; - return 0; - } + $i = 0; + if ($num) + { + $foundselected=false; + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + if ($selected && $selected != '-1' && + ($selected == $obj->rowid || $selected == $obj->code || $selected == $obj->libelle) ) + { + $foundselected=true; + print ''; + $i++; + } + } + print ''; + return 0; + } } else { diff --git a/htdocs/lib/admin.lib.php b/htdocs/lib/admin.lib.php index 593aa284b9a..4f13ed09257 100644 --- a/htdocs/lib/admin.lib.php +++ b/htdocs/lib/admin.lib.php @@ -215,6 +215,8 @@ function dolibarr_del_const($db, $name) $sql = "DELETE FROM llx_const"; $sql.=" WHERE name='".addslashes($name)."' or rowid='".addslashes($name)."'"; + + dolibarr_syslog("admin.lib::dolibarr_del_const sql=".$sql); $resql=$db->query($sql); if ($resql) { @@ -241,6 +243,8 @@ function dolibarr_get_const($db, $name) $sql ="SELECT value"; $sql.=" FROM llx_const"; $sql.=" WHERE name = '".addslashes($name)."'"; + + dolibarr_syslog("admin.lib::dolibarr_get_const sql=".$sql); $resql=$db->query($sql); if ($resql) { @@ -260,13 +264,13 @@ function dolibarr_get_const($db, $name) \param type Type de constante (chaine par défaut) \param visible La constante est elle visible (0 par défaut) \param note Explication de la constante - \return int <0 si ko, >0 si ok + \return int <0 si ko, >0 si ok */ function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='') { global $conf; - if (! $name) + if (empty($name)) { dolibarr_print_error("Error: Call to function dolibarr_set_const with wrong parameters", LOG_ERR); exit; @@ -276,12 +280,15 @@ function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $not //dolibarr_syslog("dolibarr_set_const name=$name, value=$value"); $sql = "DELETE FROM llx_const WHERE name = '".addslashes($name)."';"; - $resql=$db->query($sql); + dolibarr_syslog("admin.lib::dolibarr_set_const sql=".$sql); + $resql=$db->query($sql); if (strcmp($value,'')) // true if different. Must work for $value='0' or $value=0 { $sql = "INSERT INTO llx_const(name,value,type,visible,note)"; $sql.= " VALUES ('".$name."','".addslashes($value)."','".$type."',".$visible.",'".addslashes($note)."')"; + + dolibarr_syslog("admin.lib::dolibarr_set_const sql=".$sql); $resql=$db->query($sql); } @@ -298,6 +305,4 @@ function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $not } } - - ?> \ No newline at end of file diff --git a/mysql/migration/2.2.0-2.4.0.sql b/mysql/migration/2.2.0-2.4.0.sql index c59a7d1aac9..2e62b860f9e 100644 --- a/mysql/migration/2.2.0-2.4.0.sql +++ b/mysql/migration/2.2.0-2.4.0.sql @@ -188,4 +188,6 @@ create table llx_events ALTER TABLE llx_events ADD INDEX idx_events_dateevent (dateevent); +ALTER TABLE llx_c_forme_juridique ADD isvatexempted tinyint DEFAULT 0 NOT NULL after libelle; + diff --git a/mysql/tables/llx_c_forme_juridique.sql b/mysql/tables/llx_c_forme_juridique.sql index a6e63fde04d..a0e12d76422 100644 --- a/mysql/tables/llx_c_forme_juridique.sql +++ b/mysql/tables/llx_c_forme_juridique.sql @@ -21,11 +21,12 @@ create table llx_c_forme_juridique ( - rowid integer AUTO_INCREMENT PRIMARY KEY, - code varchar(12) UNIQUE NOT NULL, - fk_pays integer NOT NULL, - libelle varchar(255), - active tinyint DEFAULT 1 NOT NULL + rowid integer AUTO_INCREMENT PRIMARY KEY, + code varchar(12) UNIQUE NOT NULL, + fk_pays integer NOT NULL, + libelle varchar(255), + isvatexempted tinyint DEFAULT 0 NOT NULL, + active tinyint DEFAULT 1 NOT NULL )type=innodb;