From b773ab0a9d1c8fca4a539ead7cf287e1eeb1c872 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 28 Jan 2007 22:11:42 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20Am=E9lioration=20de=20la=20gestion=20du?= =?UTF-8?q?=20code=20client=20et=20code=20fournisseur:=20-=20Ajout=20aide?= =?UTF-8?q?=20sur=20le=20champ=20de=20saisi.=20-=20Uniformisation=20du=20c?= =?UTF-8?q?ode.=20-=20Ajout=20d'un=20module=20Lion=20pour=20controler=20qu?= =?UTF-8?q?e=20les=20codes=20sont=20num=E9riques=20(sera=20utilis=E9=20pou?= =?UTF-8?q?r=20g=E9n=E9rer=20code=20compta)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/conf/conf.class.php | 2 +- .../societe/mod_codeclient_leopard.php | 78 ++-- .../modules/societe/mod_codeclient_lion.php | 221 ++++++++++ .../modules/societe/mod_codeclient_zebre.php | 390 ++++++++++-------- .../modules/societe/modules_societe.class.php | 9 + htdocs/langs/en_US/companies.lang | 5 + htdocs/langs/fr_FR/companies.lang | 5 + htdocs/langs/fr_FR/members.lang | 8 + htdocs/soc.php | 299 +++++++++----- htdocs/societe.class.php | 83 ++-- 10 files changed, 736 insertions(+), 364 deletions(-) create mode 100644 htdocs/includes/modules/societe/mod_codeclient_lion.php diff --git a/htdocs/conf/conf.class.php b/htdocs/conf/conf.class.php index 9690b855818..45a7978278a 100644 --- a/htdocs/conf/conf.class.php +++ b/htdocs/conf/conf.class.php @@ -320,7 +320,7 @@ class Conf // societe if (! $this->global->SOCIETE_CODECLIENT_ADDON) $this->global->SOCIETE_CODECLIENT_ADDON="mod_codeclient_leopard"; - if (! $this->global->SOCIETE_CODEFOURNISSEUR_ADDON) $this->global->SOCIETE_CODEFOURNISSEUR_ADDON="mod_codeclient_leopard"; + if (! $this->global->SOCIETE_CODEFOURNISSEUR_ADDON) $this->global->SOCIETE_CODEFOURNISSEUR_ADDON=$this->global->SOCIETE_CODECLIENT_ADDON; if (! $this->global->SOCIETE_CODECOMPTA_ADDON) $this->global->SOCIETE_CODECOMPTA_ADDON="mod_codecompta_panicum"; // Pour compatibilite ascendante: if ($this->global->CODECLIENT_ADDON) $this->global->SOCIETE_CODECLIENT_ADDON=$this->global->CODECLIENT_ADDON; diff --git a/htdocs/includes/modules/societe/mod_codeclient_leopard.php b/htdocs/includes/modules/societe/mod_codeclient_leopard.php index 14bce37059a..eadc18eb775 100644 --- a/htdocs/includes/modules/societe/mod_codeclient_leopard.php +++ b/htdocs/includes/modules/societe/mod_codeclient_leopard.php @@ -1,6 +1,6 @@ - * Copyright (C) 2006 Laurent Destailleur +/* Copyright (C) 2004 Rodolphe Quiedeville + * Copyright (C) 2006-2007 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +30,6 @@ require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class.php"); - /** \class mod_codeclient_leopard \brief Classe permettant la gestion leopard des codes tiers @@ -38,39 +37,56 @@ require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class. class mod_codeclient_leopard extends ModeleThirdPartyCode { + /* + * Attention ce module est utilisé par défaut si aucun module n'a + * été définit dans la configuration + * + * Le fonctionnement de celui-ci doit dont rester le plus ouvert + * possible + */ - /* - * Attention ce module est utilisé par défaut si aucun module n'a - * été définit dans la configuration - * - * Le fonctionnement de celui-ci doit dont rester le plus ouvert - * possible - */ + var $nom; // Nom du modele + var $code_modifiable; // Code modifiable + var $code_modifiable_invalide; // Code modifiable si il est invalide + var $code_modifiable_null; // Code modifiables si il est null + var $code_null; // Code facultatif - function mod_codeclient_leopard() - { - $this->nom = "Léopard"; - $this->code_modifiable = 1; + + /** \brief Constructeur classe + */ + function mod_codeclient_leopard() + { + $this->nom = "Léopard"; + $this->code_modifiable = 1; + $this->code_modifiable_invalide = 1; + $this->code_modifiable_null = 1; + $this->code_null = 1; + } - $this->code_modifiable_invalide = 1; // code modifiable si il est invalide + + /** + * \brief Renvoie la description du module + * \return string Texte descripif + */ + function info($langs) + { + return "Renvoie toujours ok, pour ceux qui ne veulent pas faire de test."; + } - $this->code_modifiable_null = 1; // code modifiable si il est null + + /** + * \brief Vérifie la validité du code + * \param $db Handler acces base + * \param $code Code a vérifier + * \param $soc Objet societe + */ + function verif($db, $code, $soc) + { + $code = strtoupper(trim($code)); - $this->code_null = 1; - - - } - - function info($langs) - { - return "Renvoie toujours ok, pour ceux qui ne veulent pas faire de test."; - } - - function verif($db, $code) - { - // Renvoie toujours ok - return 0; - } + // Renvoie toujours ok + return 0; + } } ?> diff --git a/htdocs/includes/modules/societe/mod_codeclient_lion.php b/htdocs/includes/modules/societe/mod_codeclient_lion.php new file mode 100644 index 00000000000..8b6d7a4242b --- /dev/null +++ b/htdocs/includes/modules/societe/mod_codeclient_lion.php @@ -0,0 +1,221 @@ + + * Copyright (C) 2006-2007 Laurent Destailleur + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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. + * or see http://www.gnu.org/ + * + * $Id$ + * $Source$ + */ + +/** + \file htdocs/includes/modules/societe/mod_codeclient_lion.class.php + \ingroup societe + \brief Fichier de la classe des gestion lion des codes clients + \version $Revision$ +*/ + +require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class.php"); + + +/** + \class mod_codeclient_lion + \brief Classe permettant la gestion lion des codes tiers +*/ + +class mod_codeclient_lion extends ModeleThirdPartyCode +{ + var $nom; // Nom du modele + var $code_modifiable; // Code modifiable + var $code_modifiable_invalide; // Code modifiable si il est invalide + var $code_modifiable_null; // Code modifiables si il est null + var $code_null; // Code facultatif + + + /** \brief Constructeur classe + */ + function mod_codeclient_lion() + { + $this->nom = "Lion"; + $this->code_modifiable = 0; + $this->code_modifiable_invalide = 0; + $this->code_modifiable_null = 1; + $this->code_null = 0; + } + + + /** \brief Renvoi la description du module + * \return string Texte descripif + */ + function info($langs) + { + return "Vérifie si le code client est de la forme numérique 999 et sur au moins 3 chiffres."; + } + + + /** \brief Renvoi la description du module + * \return string Texte descripif + */ + function getExample($langs) + { + return "001"; + } + + + /** + * \brief Vérifie la validité du code + * \param $db Handler acces base + * \param $code Code a vérifier/corriger + * \param $soc Objet societe + * \return int <0 si ko + */ + function verif($db, &$code, $soc) + { + $code = strtoupper(trim($code)); + + if ($this->verif_syntax($code) == 0) + { + $is_dispo = $this->verif_dispo($db, $code); + if ($is_dispo <> 0) + { + return -3; + } + } + else + { + if (strlen($code) == 0) + { + return -2; + } + else + { + return -1; + } + } + } + + + /** + * \brief Renvoi une valeur correcte + * \param $db Handler acces base + * \param $code Code reference eventuel + * \return string Code correct + */ + function get_correct($db,$code) + { + $return='001'; + + $sql = "SELECT MAX(code_client) as maxval FROM ".MAIN_DB_PREFIX."societe"; + $resql=$db->query($sql); + if ($resql) + { + $obj=$db->fetch_object($resql); + if ($obj) + { + $newval=$obj->maxval+1; + $return=sprintf('%03d',$newval); + return $return; + } + } + else + { + return -1; + } + } + + + /** + * \brief Renvoi si un code est pris ou non + * \param $db Handler acces base + * \param $code Code a verifier + * \return int 0 si dispo, <0 si erreur + */ + function verif_dispo($db, $code) + { + $sql = "SELECT code_client FROM ".MAIN_DB_PREFIX."societe"; + $sql .= " WHERE code_client = '".$code."'"; + + $resql=$db->query($sql); + if ($resql) + { + if ($db->num_rows() == 0) + { + return 0; + } + else + { + return -1; + } + } + else + { + return -2; + } + + } + + + /** + * \brief Renvoi si un code respecte la syntaxe + * \return int 0 si dispo, <0 si erreur + */ + function verif_syntax($code) + { + $res = 0; + + if (strlen($code) < 3) + { + $res = -1; + } + else + { + if (eregi('[0-9][0-9][0-9]+',$code)) + { + $res = 0; + } + else + { + $res = -2; + } + + } + return $res; + } + + + /** + * Renvoi 0 si numerique, sinon renvoi nb de car non numerique + */ + function is_num($str) + { + $ok = 0; + + $alpha = '0123456789'; + + for ($i = 0 ; $i < length($str) ; $i++) + { + if (strpos($alpha, substr($str,$i, 1)) === false) + { + $ok++; + } + } + + return $ok; + } + +} + +?> diff --git a/htdocs/includes/modules/societe/mod_codeclient_zebre.php b/htdocs/includes/modules/societe/mod_codeclient_zebre.php index 8b0e4f43bbe..42e562ee2f3 100644 --- a/htdocs/includes/modules/societe/mod_codeclient_zebre.php +++ b/htdocs/includes/modules/societe/mod_codeclient_zebre.php @@ -1,6 +1,6 @@ - * Copyright (C) 2006 Laurent Destailleur +/* Copyright (C) 2004 Rodolphe Quiedeville + * Copyright (C) 2006-2007 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,193 +35,223 @@ require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class. \class mod_codeclient_zebre \brief Classe permettant la gestion zebre des codes tiers */ - class mod_codeclient_zebre extends ModeleThirdPartyCode { + var $nom; // Nom du modele + var $code_modifiable; // Code modifiable + var $code_modifiable_invalide; // Code modifiable si il est invalide + var $code_modifiable_null; // Code modifiables si il est null + var $code_null; // Code facultatif - function mod_codeclient_zebre() - { - $this->nom = "Zèbre"; - - $this->code_modifiable = 0; // code modifiable - - $this->code_modifiable_invalide = 0; // code modifiable si il est invalide - - $this->code_modifiable_null = 1; // code modifiable si il est null - - $this->code_null = 0; // Saisi vide interdite - - } - /*! \brief Renvoi la description du module - * \return string Texte descripif - */ - function info($langs) - { - return "Vérifie si le code client est de la forme ABCD5600. Les quatres premières lettres étant une représentation mnémotechnique, suivi du code postal en 2 chiffres et un numéro d'ordre pour la prise en compte des doublons."; - } - - /** - * Vérifie la validité du code - * - * - */ - - function verif($db, &$code, $socid=0) - { - $code = strtoupper(trim($code)); - - if ($this->verif_syntax($code) == 0) - { - $i = 1; - - $is_dispo = $this->verif_dispo($db, $code, $socid); - - while ( $is_dispo <> 0 && $i < 99) - { - $arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - - $code = substr($code,0,6) . substr("00".$i, -2); - - $is_dispo = $this->verif_dispo($db, $code); - - $i++; - } - - if ($is_dispo <> 0) - { - return -3; - } - } - else - { - if (strlen(trim($code)) == 0) - { - return -2; - } - else - { - return -1; - } - } - } - - function get_correct($db, &$code) - { - $code = strtoupper(trim($code)); - - if ($this->verif_syntax($code) == 0) - { - $i = 1; - - $is_dispo = $this->verif_dispo($db, $code); - - while ( $is_dispo <> 0 && $i < 99) - { - $arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - - $code = substr($code,0,6) . substr("00".$i, -2); - - $is_dispo = $this->verif_dispo($db, $code); - - $i++; - } - - return $is_dispo; - - } - else - { - return -1; - } - - } - - function verif_dispo($db, $code) - { - $code = strtoupper(trim($code)); - - $sql = "SELECT code_client FROM ".MAIN_DB_PREFIX."societe"; - $sql .= " WHERE code_client = '".$code."'"; - - if ($db->query($sql)) - { - if ($db->num_rows() == 0) - { - return 0; - } - else - { - return -1; - } - } - else - { - return -2; - } - - } - - - function verif_syntax(&$code) - { - $res = 0; - - $code = strtoupper(trim($code)); - - if (strlen($code) <> 8) - { - $res = -1; - } - else - { - if ($this->is_alpha(substr($code,0,4)) == 0 && $this->is_num(substr($code,4,4)) == 0 ) - { - $res = 0; - } - else - { - $res = -2; - } - } - return $res; - } - - - function is_alpha($str) - { - $ok = 0; - // Je n'ai pas trouvé de fonction pour tester une chaine alpha sans les caractère accentués - // dommage - $alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; - - for ($i = 0 ; $i < 4 ; $i++) - { - if (strpos($alpha, substr($str,$i, 1)) === false) + /** \brief Constructeur classe + */ + function mod_codeclient_zebre() { - $ok++; + $this->nom = "Zèbre"; + $this->code_modifiable = 0; + $this->code_modifiable_invalide = 0; + $this->code_modifiable_null = 1; + $this->code_null = 0; } - } - - return $ok; - } - function is_num($str) - { - $ok = 0; - - $alpha = '0123456789'; - - for ($i = 0 ; $i < 4 ; $i++) - { - if (strpos($alpha, substr($str,$i, 1)) === false) + + /** + * \brief Renvoie la description du module + * \return string Texte descripif + */ + function info($langs) { - $ok++; + return "Vérifie si le code client est de la forme CCCC9999. Les quatres premières lettres étant une représentation mnémotechnique, suivi du code postal en 2 chiffres et un numéro d'ordre pour la prise en compte des doublons."; + } + + + /** \brief Renvoi la description du module + * \return string Texte descripif + */ + function getExample($langs) + { + return "ABCD7501"; + } + + + /** + * \brief Vérifie la validité du code + * \param $db Handler acces base + * \param $code Code a vérifier/corriger + * \param $soc Objet societe + */ + function verif($db, &$code, $soc) + { + $code = strtoupper(trim($code)); + + if ($this->verif_syntax($code) == 0) + { + $i = 1; + + $is_dispo = $this->verif_dispo($db, $code); + + while ($is_dispo <> 0 && $i < 99) + { + $arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + + $code = substr($code,0,6) . substr("00".$i, -2); + + $is_dispo = $this->verif_dispo($db, $code); + + $i++; + } + + if ($is_dispo <> 0) + { + return -3; + } + } + else + { + if (strlen(trim($code)) == 0) + { + return -2; + } + else + { + return -1; + } + } + } + + + /** + * \brief Renvoi une valeur correcte + * \param $db Handler acces base + * \param $code Code reference eventuel + * \return string Code correcte + */ + function get_correct($db, $code) + { + if ($this->verif_syntax($code) == 0) + { + $i = 1; + + $is_dispo = $this->verif_dispo($db, $code); + + while ( $is_dispo <> 0 && $i < 99) + { + $arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + + $code = substr($code,0,6) . substr("00".$i, -2); + + $is_dispo = $this->verif_dispo($db, $code); + + $i++; + } + + return $is_dispo; + + } + else + { + return -1; + } + + } + + + /** + * \brief Renvoi si un code est pris ou non + * \param $db Handler acces base + * \param $code Code a verifier + * \return int 0 si dispo, <0 si erreur + */ + function verif_dispo($db, $code) + { + $sql = "SELECT code_client FROM ".MAIN_DB_PREFIX."societe"; + $sql .= " WHERE code_client = '".$code."'"; + + if ($db->query($sql)) + { + if ($db->num_rows() == 0) + { + return 0; + } + else + { + return -1; + } + } + else + { + if (strlen($code) == 0) + { + return -2; + } + else + { + return -1; + } + } + } + + + function verif_syntax(&$code) + { + $res = 0; + + if (strlen($code) <> 8) + { + $res = -1; + } + else + { + if ($this->is_alpha(substr($code,0,4)) == 0 && $this->is_num(substr($code,4,4)) == 0 ) + { + $res = 0; + } + else + { + $res = -2; + } + + } + return $res; + } + + + function is_alpha($str) + { + $ok = 0; + // Je n'ai pas trouvé de fonction pour tester une chaine alpha sans les caractère accentués + // dommage + $alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + + for ($i = 0 ; $i < 4 ; $i++) + { + if (strpos($alpha, substr($str,$i, 1)) === false) + { + $ok++; + } + } + + return $ok; + } + + + function is_num($str) + { + $ok = 0; + + $alpha = '0123456789'; + + for ($i = 0 ; $i < 4 ; $i++) + { + if (strpos($alpha, substr($str,$i, 1)) === false) + { + $ok++; + } + } + + return $ok; } - } - - return $ok; - } } diff --git a/htdocs/includes/modules/societe/modules_societe.class.php b/htdocs/includes/modules/societe/modules_societe.class.php index 171a24b603e..abd6852c5f1 100644 --- a/htdocs/includes/modules/societe/modules_societe.class.php +++ b/htdocs/includes/modules/societe/modules_societe.class.php @@ -49,6 +49,15 @@ class ModeleThirdPartyCode return $langs->trans("NoDescription"); } + /** \brief Renvoi nom module + * \return string Nom du module + */ + function getNom($langs) + { + return $this->nom; + } + + /** \brief Renvoi un exemple de numérotation * \return string Example */ diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index b7ed9ceb169..e80cd31dc58 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -114,6 +114,11 @@ CustomerCode=Customer code SupplierCode=Supplier code CustomerAccount=Customer account SupplierAccount=Supplier account +CustomerCodeDesc=Customer code, unique for all customers +SupplierCodeDesc=Supplier code, unique for all suppliers +RequiredIfCustomer=Required if third party is a customer or prospect +RequiredIfSupplier=Required if third party is a supplier +ValidityControledByModule=Validity controled by module LastProspect=Last ProspectToContact=Prospect to contact CompanyDeleted=Company "%s" deleted from database. diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang index b2c0f9fdad8..21c8582be05 100644 --- a/htdocs/langs/fr_FR/companies.lang +++ b/htdocs/langs/fr_FR/companies.lang @@ -114,6 +114,11 @@ CustomerCode=Code client SupplierCode=Code fournisseur CustomerAccount=Compte client SupplierAccount=Compte fournisseur +CustomerCodeDesc=Code client unique pour chaque client +SupplierCodeDesc=Code fournisseur unique pour chaque fournisseur +RequiredIfCustomer=Requis si tiers est un client ou prospect +RequiredIfSupplier=Requis si tiers est un fournisseur +ValidityControledByModule=Validité controlée par le module LastProspect=Dernier prospect ProspectToContact=Prospect à contacter CompanyDeleted=La société "%s" a été supprimée de la base. diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index 37faa0456b5..c7317c201c4 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -93,3 +93,11 @@ BlankSubscriptionForm=Formulaire inscription MemberPublicLinks=Liens/pages publiques ExportDataset_member_1=Adhérentes et attributs LastMembers=Les %s derniers adhérents +AttributeName=Nom de l'attribut +FieldEdition=Édition du champ %s +AlphaNumOnlyCharsAndNoSpace=uniquement caratères alphanumeriques sans espace +String=Chaîne +Text=Texte long +Int=Numérique +Date=Date +DateAndTime=Date et heure diff --git a/htdocs/soc.php b/htdocs/soc.php index aeb6328989c..3b6f63b1bbe 100644 --- a/htdocs/soc.php +++ b/htdocs/soc.php @@ -1,7 +1,7 @@ * Copyright (C) 2003 Brian Fraval - * Copyright (C) 2004-2006 Laurent Destailleur + * Copyright (C) 2004-2007 Laurent Destailleur * Copyright (C) 2005 Eric Seigne * Copyright (C) 2005-2006 Regis Houssin * @@ -74,6 +74,7 @@ if (!$user->rights->commercial->client->voir && $socid && !$user->societe_id > 0 // Initialisation de l'objet Societe $soc = new Societe($db); + /* * Actions */ @@ -93,91 +94,94 @@ if ($_POST["getsuppliercode"]) if ((! $_POST["getcustomercode"] && ! $_POST["getsuppliercode"]) && ($_POST["action"] == 'add' || $_POST["action"] == 'update') && $user->rights->societe->creer) { - $soc->nom = $_POST["nom"]; - $soc->adresse = $_POST["adresse"]; - $soc->cp = $_POST["cp"]; - $soc->ville = $_POST["ville"]; - $soc->pays_id = $_POST["pays_id"]; - $soc->departement_id = $_POST["departement_id"]; - $soc->tel = $_POST["tel"]; - $soc->fax = $_POST["fax"]; - $soc->email = $_POST["email"]; - $soc->url = $_POST["url"]; - $soc->siren = $_POST["siren"]; - $soc->siret = $_POST["siret"]; - $soc->ape = $_POST["ape"]; - $soc->prefix_comm = $_POST["prefix_comm"]; - $soc->code_client = $_POST["code_client"]; - $soc->code_fournisseur = $_POST["code_fournisseur"]; - $soc->codeclient_modifiable = $_POST["codeclient_modifiable"]; - $soc->codefournisseur_modifiable = $_POST["codefournisseur_modifiable"]; - $soc->capital = $_POST["capital"]; - - $soc->tva_assuj = $_POST["assujtva_value"]; - $soc->tva_intra_code = $_POST["tva_intra_code"]; - $soc->tva_intra_num = $_POST["tva_intra_num"]; - $soc->tva_intra = $_POST["tva_intra_code"] . $_POST["tva_intra_num"]; - - $soc->forme_juridique_code = $_POST["forme_juridique_code"]; - $soc->effectif_id = $_POST["effectif_id"]; - $soc->typent_id = $_POST["typent_id"]; - $soc->client = $_POST["client"]; - $soc->fournisseur = $_POST["fournisseur"]; - $soc->fournisseur_categorie = $_POST["fournisseur_categorie"]; - - if ($_POST["action"] == 'add') - { - $result = $soc->create($user); - - if ($result >= 0) - { - if ( $soc->client == 1 ) - { - Header("Location: comm/fiche.php?socid=".$soc->id); - } - else - { - if ( $soc->fournisseur == 1 ) - { - Header("Location: fourn/fiche.php?socid=".$soc->id); - } - else - { - Header("Location: soc.php?socid=".$soc->id); - } - } - exit; - } - else - { - $mesg=$soc->error; - $_GET["action"]='create'; - } - } - - if ($_POST["action"] == 'update') - { - if ($_POST["cancel"]) - { - Header("Location: soc.php?socid=".$socid); - exit; - } - - $result = $soc->update($socid,$user); - if ($result >= 0) - { - Header("Location: soc.php?socid=".$socid); - exit; - } - else + $soc->nom = $_POST["nom"]; + $soc->adresse = $_POST["adresse"]; + $soc->cp = $_POST["cp"]; + $soc->ville = $_POST["ville"]; + $soc->pays_id = $_POST["pays_id"]; + $soc->departement_id = $_POST["departement_id"]; + $soc->tel = $_POST["tel"]; + $soc->fax = $_POST["fax"]; + $soc->email = $_POST["email"]; + $soc->url = $_POST["url"]; + $soc->siren = $_POST["siren"]; + $soc->siret = $_POST["siret"]; + $soc->ape = $_POST["ape"]; + $soc->prefix_comm = $_POST["prefix_comm"]; + $soc->code_client = $_POST["code_client"]; + $soc->code_fournisseur = $_POST["code_fournisseur"]; + $soc->codeclient_modifiable = $_POST["codeclient_modifiable"]; + $soc->codefournisseur_modifiable = $_POST["codefournisseur_modifiable"]; + $soc->capital = $_POST["capital"]; + + $soc->tva_assuj = $_POST["assujtva_value"]; + $soc->tva_intra_code = $_POST["tva_intra_code"]; + $soc->tva_intra_num = $_POST["tva_intra_num"]; + $soc->tva_intra = $_POST["tva_intra_code"] . $_POST["tva_intra_num"]; + + $soc->forme_juridique_code = $_POST["forme_juridique_code"]; + $soc->effectif_id = $_POST["effectif_id"]; + $soc->typent_id = $_POST["typent_id"]; + $soc->client = $_POST["client"]; + $soc->fournisseur = $_POST["fournisseur"]; + $soc->fournisseur_categorie = $_POST["fournisseur_categorie"]; + + if ($_POST["action"] == 'add') { - $soc->id = $socid; - $reload = 0; - $mesg = $soc->error; - $_GET["action"]= "edit"; - } - } - + $result = $soc->create($user); + + if ($result >= 0) + { + if ( $soc->client == 1 ) + { + Header("Location: comm/fiche.php?socid=".$soc->id); + return; + } + else + { + if ( $soc->fournisseur == 1 ) + { + Header("Location: fourn/fiche.php?socid=".$soc->id); + return; + } + else + { + Header("Location: soc.php?socid=".$soc->id); + return; + } + } + exit; + } + else + { + $mesg=$soc->error; + $_GET["action"]='create'; + } + } + + if ($_POST["action"] == 'update') + { + if ($_POST["cancel"]) + { + Header("Location: soc.php?socid=".$socid); + exit; + } + + $result = $soc->update($socid,$user); + if ($result >= 0) + { + Header("Location: soc.php?socid=".$socid); + exit; + } + else + { + $soc->id = $socid; + $reload = 0; + $mesg = $soc->error; + $_GET["action"]= "edit"; + } + } + } if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes' && $user->rights->societe->supprimer) @@ -214,13 +218,32 @@ $countrynotdefined=$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("Se if ($_POST["getcustomercode"] || $_POST["getsuppliercode"] || $_GET["action"] == 'create' || $_POST["action"] == 'create') { + /* + * Fiche en mode creation + */ if ($user->rights->societe->creer) { - /* + // Charge objet modCodeTiers + $module=$conf->global->SOCIETE_CODECLIENT_ADDON; + if (! $module) dolibarr_error('',$langs->trans("ErrorModuleThirdPartyCodeInCompanyModuleNotDefined")); + if (substr($module, 0, 15) == 'mod_codeclient_' && substr($module, -3) == 'php') + { + $module = substr($module, 0, strlen($module)-4); + } + require_once(DOL_DOCUMENT_ROOT ."/includes/modules/societe/".$module.".php"); + $modCodeClient = new $module; + $module=$conf->global->SOCIETE_CODEFOURNISSEUR_ADDON; + if (! $module) $module=$conf->global->SOCIETE_CODECLIENT_ADDON; + if (substr($module, 0, 15) == 'mod_codeclient_' && substr($module, -3) == 'php') + { + $module = substr($module, 0, strlen($module)-4); + } + require_once(DOL_DOCUMENT_ROOT ."/includes/modules/societe/".$module.".php"); + $modCodeFournisseur = new $module; + + /* * Fiche societe en mode création */ - $soc->fournisseur=0; - $soc->fournisseur_categorie = 0; if ($_GET["type"]=='f') { $soc->fournisseur=1; } if ($_GET["type"]=='c') { $soc->client=1; } if ($_GET["type"]=='p') { $soc->client=2; } @@ -247,7 +270,7 @@ if ($_POST["getcustomercode"] || $_POST["getsuppliercode"] || $soc->typent_id=$_POST["typent_id"]; $soc->effectif_id=$_POST["effectif_id"]; - $soc->tva_assuj = $_POST["assujtva_value"]; + $soc->tva_assuj = $_POST["assujtva_value"]; $soc->tva_intra_code=$_POST["tva_intra_code"]; $soc->tva_intra_num=$_POST["tva_intra_num"]; } @@ -297,11 +320,18 @@ if ($_POST["getcustomercode"] || $_POST["getsuppliercode"] || print ''; print ''; print ''; + print ''.$langs->trans('CustomerCode').''; - print ''; // Fournisseur @@ -310,27 +340,33 @@ if ($_POST["getcustomercode"] || $_POST["getsuppliercode"] || $form->selectyesnonum("fournisseur",$soc->fournisseur); print ''; print ''; - if ($soc->fournisseur) - { - $load = $soc->LoadSupplierCateg(); - if ( $load == 0) - { - if (sizeof($soc->SupplierCategories) > 0) - { - print ''; - print ''; - } - } - } + if ($soc->fournisseur) + { + $load = $soc->LoadSupplierCateg(); + if ( $load == 0) + { + if (sizeof($soc->SupplierCategories) > 0) + { + print ''; + print ''; + } + } + } print '
'; - print ''; - //print ''; + print '
'; + print ''; + print ''; + $s=$langs->trans("CustomerCodeDesc").'
'; + $s.=$langs->trans("ValidityControledByModule").': '.$modCodeClient->getNom($langs).'
'; + $s.=$langs->trans("RequiredIfCustomer").': '.yn(!$modCodeClient->code_null).'
'; + $s.=$langs->trans("Example").': '.$modCodeClient->getExample($langs).''; + print $form->textwithhelp('',$s,1); print '
'; + print '
'.$langs->trans('SupplierCode').''; - //print '
'; + + print '
'; print ''; - //print ''; - //print ''; - //print '
'; + print '
'; + $s=$langs->trans("SupplierCodeDesc").'
'; + $s.=$langs->trans("ValidityControledByModule").': '.$modCodeFournisseur->getNom($langs).'
'; + $s.=$langs->trans("RequiredIfSupplier").': '.yn(!$modCodeFournisseur->code_null).'
'; + $s.=$langs->trans("Example").': '.$modCodeFournisseur->getExample($langs).''; + print $form->textwithhelp('',$s,1); + print '
'; + print '
'.$langs->trans('SupplierCategory').''; - $form->select_array("fournisseur_categorie",$soc->SupplierCategories); - print '
'.$langs->trans('SupplierCategory').''; + $form->select_array("fournisseur_categorie",$soc->SupplierCategories); + print '
'.$langs->trans('Address').'