From 1b8c9df55204e20ac91b01c13ec182c646d97a3c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Jul 2009 07:58:26 +0000 Subject: [PATCH] New: An external module can force the third party code to be required whatever is the rule of third party code module. --- ChangeLog | 2 + .../societe/mod_codeclient_elephant.php | 22 ++-- .../societe/mod_codeclient_leopard.php | 72 +++++++----- .../modules/societe/mod_codeclient_monkey.php | 110 ++++++++++-------- htdocs/soc.php | 2 +- htdocs/societe.class.php | 21 +++- 6 files changed, 139 insertions(+), 90 deletions(-) diff --git a/ChangeLog b/ChangeLog index 40dcb31a4bb..778a196048b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -38,6 +38,8 @@ For translators: - Update some language files. For developers: +- An external module can force the third party code to be required whatever is the rule of + third party code module. - Update fckeditor to 2.6.4. - Removed some deprecated files. - Creation of directory in module descriptor is simpler. diff --git a/htdocs/includes/modules/societe/mod_codeclient_elephant.php b/htdocs/includes/modules/societe/mod_codeclient_elephant.php index 618eb067f0e..d913267f529 100644 --- a/htdocs/includes/modules/societe/mod_codeclient_elephant.php +++ b/htdocs/includes/modules/societe/mod_codeclient_elephant.php @@ -197,12 +197,16 @@ class mod_codeclient_elephant extends ModeleThirdPartyCode /** - * \brief Verifie la validite du code - * \param $db Handler acces base - * \param $code Code a verifier/corriger - * \param $soc Objet societe - * \param $type 0 = client/prospect , 1 = fournisseur - * \return int <0 if KO, 0 if OK + * \brief Check validity of code according to its rules + * \param $db Database handler + * \param $code Code to check/correct + * \param $soc Object third party + * \param $type 0 = customer/prospect , 1 = supplier + * \return int 0 if OK + * -1 ErrorBadCustomerCodeSyntax + * -2 ErrorCustomerCodeRequired + * -3 ErrorCustomerCodeAlreadyUsed + * -4 ErrorPrefixRequired */ function verif($db, &$code, $soc, $type) { @@ -213,10 +217,14 @@ class mod_codeclient_elephant extends ModeleThirdPartyCode $result=0; $code = strtoupper(trim($code)); - if (! $code && $this->code_null) + if (empty($code) && $this->code_null && empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) { $result=0; } + else if (empty($code) && (! $this->code_null || ! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) ) + { + $result=-2; + } else { // Get Mask value diff --git a/htdocs/includes/modules/societe/mod_codeclient_leopard.php b/htdocs/includes/modules/societe/mod_codeclient_leopard.php index fbc660eb583..712cd67a0d1 100644 --- a/htdocs/includes/modules/societe/mod_codeclient_leopard.php +++ b/htdocs/includes/modules/societe/mod_codeclient_leopard.php @@ -29,17 +29,17 @@ require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class. /** - \class mod_codeclient_leopard - \brief Classe permettant la gestion leopard des codes tiers -*/ + \class mod_codeclient_leopard + \brief Classe permettant la gestion leopard des codes tiers + */ class mod_codeclient_leopard extends ModeleThirdPartyCode { /* - * Attention ce module est utilise par defaut si aucun module n'a - * ete definit dans la configuration - * - * Le fonctionnement de celui-ci doit dont rester le plus ouvert possible - */ + * Attention ce module est utilise par defaut si aucun module n'a + * ete definit 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 @@ -51,7 +51,7 @@ class mod_codeclient_leopard extends ModeleThirdPartyCode /** \brief Constructeur classe - */ + */ function mod_codeclient_leopard() { $this->nom = "Leopard"; @@ -65,9 +65,9 @@ class mod_codeclient_leopard extends ModeleThirdPartyCode /** - * \brief Renvoie la description du module - * \return string Texte descripif - */ + * \brief Renvoie la description du module + * \return string Texte descripif + */ function info($langs) { return $langs->trans("LeopardNumRefModelDesc"); @@ -75,27 +75,45 @@ class mod_codeclient_leopard extends ModeleThirdPartyCode /** \brief Return next value available - * \return string Value - */ - function getNextValue($objsoc=0,$type=-1) - { - global $langs; - return ''; - } + * \return string Value + */ + function getNextValue($objsoc=0,$type=-1) + { + global $langs; + return ''; + } /** - * \brief check validity of code - * \param $db Handler acces base - * \param $code Code to check - * \param $soc Objet societe - */ - function verif($db, &$code, $soc) + * \brief Check validity of code according to its rules + * \param $db Database handler + * \param $code Code to check/correct + * \param $soc Object third party + * \param $type 0 = customer/prospect , 1 = supplier + * \return int 0 if OK + * -1 ErrorBadCustomerCodeSyntax + * -2 ErrorCustomerCodeRequired + * -3 ErrorCustomerCodeAlreadyUsed + * -4 ErrorPrefixRequired + */ + function verif($db, &$code, $soc, $type) { + global $conf; + + $result=0; $code = strtoupper(trim($code)); - // Renvoie toujours ok - return 0; + if (empty($code) && $this->code_null && empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) + { + $result=0; + } + else if (empty($code) && (! $this->code_null || ! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) ) + { + $result=-2; + } + + dol_syslog("mod_codeclient_leopard::verif type=".$type." result=".$result); + return $result; } } diff --git a/htdocs/includes/modules/societe/mod_codeclient_monkey.php b/htdocs/includes/modules/societe/mod_codeclient_monkey.php index 0b7b8cd47f2..ba65a7736c1 100644 --- a/htdocs/includes/modules/societe/mod_codeclient_monkey.php +++ b/htdocs/includes/modules/societe/mod_codeclient_monkey.php @@ -29,9 +29,9 @@ require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class. /** - \class mod_codeclient_monkey - \brief Classe permettant la gestion monkey des codes tiers -*/ + \class mod_codeclient_monkey + \brief Classe permettant la gestion monkey des codes tiers + */ class mod_codeclient_monkey extends ModeleThirdPartyCode { var $nom; // Nom du modele @@ -46,7 +46,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode var $prefixsupplier='SU'; /** \brief Constructeur classe - */ + */ function mod_codeclient_monkey() { $this->nom = "Monkey"; @@ -60,8 +60,8 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode /** \brief Renvoi la description du module - * \return string Texte descripif - */ + * \return string Texte descripif + */ function info($langs) { return $langs->trans("MonkeyNumRefModelDesc",$this->prefixcustomer,$this->prefixsupplier); @@ -69,8 +69,8 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode /** \brief Renvoi la description du module - * \return string Texte descripif - */ + * \return string Texte descripif + */ function getExample($langs,$objsoc=0,$type=-1) { return $this->prefixcustomer.'0901-0001
'.$this->prefixsupplier.'0901-0001'; @@ -105,51 +105,62 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode if ($type == 0) $prefix=$this->prefixcustomer; if ($type == 1) $prefix=$this->prefixsupplier; - // D'abord on r�cup�re la valeur max (r�ponse imm�diate car champ ind�x�) - $posindice=8; - $sql = "SELECT MAX(0+SUBSTRING(".$field.",".$posindice.")) as max"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe"; + // D'abord on r�cup�re la valeur max (r�ponse imm�diate car champ ind�x�) + $posindice=8; + $sql = "SELECT MAX(0+SUBSTRING(".$field.",".$posindice.")) as max"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe"; $sql.= " WHERE ".$field." LIKE '".$prefix."%'"; - $resql=$db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - if ($obj) $max = $obj->max; - else $max=0; - } - else - { - dol_syslog("mod_codeclient_monkey::getNextValue sql=".$sql); - return -1; - } + $resql=$db->query($sql); + if ($resql) + { + $obj = $db->fetch_object($resql); + if ($obj) $max = $obj->max; + else $max=0; + } + else + { + dol_syslog("mod_codeclient_monkey::getNextValue sql=".$sql); + return -1; + } - //$date=time(); - $date=gmmktime(); - $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + //$date=time(); + $date=gmmktime(); + $yymm = strftime("%y%m",$date); + $num = sprintf("%04s",$max+1); - dol_syslog("mod_codeclient_monkey::getNextValue return ".$prefix.$yymm."-".$num); - return $prefix.$yymm."-".$num; + dol_syslog("mod_codeclient_monkey::getNextValue return ".$prefix.$yymm."-".$num); + return $prefix.$yymm."-".$num; } /** - * \brief Verifie la validite du code - * \param $db Handler acces base - * \param $code Code a verifier/corriger - * \param $soc Objet societe - * \return int <0 si KO, 0 si OK - */ - function verif($db, &$code, $soc) + * \brief Check validity of code according to its rules + * \param $db Database handler + * \param $code Code to check/correct + * \param $soc Object third party + * \param $type 0 = customer/prospect , 1 = supplier + * \return int 0 if OK + * -1 ErrorBadCustomerCodeSyntax + * -2 ErrorCustomerCodeRequired + * -3 ErrorCustomerCodeAlreadyUsed + * -4 ErrorPrefixRequired + */ + function verif($db, &$code, $soc, $type) { + global $conf; + $result=0; $code = strtoupper(trim($code)); - if (! $code && $this->code_null) + if (empty($code) && $this->code_null && empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) { $result=0; } + else if (empty($code) && (! $this->code_null || ! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) ) + { + $result=-2; + } else { if ($this->verif_syntax($code) >= 0) @@ -176,18 +187,19 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode } } } - dol_syslog("mod_codeclient_monkey::verif result=".$result); + + dol_syslog("mod_codeclient_monkey::verif type=".$type." result=".$result); return $result; } /** - * \brief Renvoi si un code est pris ou non (par autre tiers) - * \param $db Handler acces base - * \param $code Code a verifier - * \param $soc Objet societe - * \return int 0 si dispo, <0 si erreur - */ + * \brief Renvoi si un code est pris ou non (par autre tiers) + * \param $db Handler acces base + * \param $code Code a verifier + * \param $soc Objet societe + * \return int 0 si dispo, <0 si erreur + */ function verif_dispo($db, $code, $soc) { $sql = "SELECT code_client FROM ".MAIN_DB_PREFIX."societe"; @@ -215,10 +227,10 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode /** - * \brief Renvoi si un code respecte la syntaxe - * \param $code Code a verifier - * \return int 0 si OK, <0 si KO - */ + * \brief Renvoi si un code respecte la syntaxe + * \param $code Code a verifier + * \return int 0 si OK, <0 si KO + */ function verif_syntax($code) { $res = 0; diff --git a/htdocs/soc.php b/htdocs/soc.php index 8b9ef64168c..c1470b23dfa 100644 --- a/htdocs/soc.php +++ b/htdocs/soc.php @@ -4,7 +4,7 @@ * Copyright (C) 2004-2009 Laurent Destailleur * Copyright (C) 2005 Eric Seigne * Copyright (C) 2005-2009 Regis Houssin - * Copyright (C) 2008 Patrick Raguin + * Copyright (C) 2008 Patrick Raguin * * 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 diff --git a/htdocs/societe.class.php b/htdocs/societe.class.php index 97b8c4db2d6..d9ad1972cda 100644 --- a/htdocs/societe.class.php +++ b/htdocs/societe.class.php @@ -147,10 +147,11 @@ class Societe extends CommonObject $this->db->begin(); - // For automatic creation during create action (not used by Dolibarr) + // For automatic creation during create action (not used by Dolibarr GUI, can be used by scripts) if ($this->code_client == -1) $this->get_codeclient($this->prefix_comm,0); if ($this->code_fournisseur == -1) $this->get_codefournisseur($this->prefix_comm,1); + // Check more parameters $result = $this->verify(); if ($result >= 0) @@ -229,7 +230,7 @@ class Societe extends CommonObject } /** - * \brief Check properties of third party are ok + * \brief Check properties of third party are ok (like name, third party codes, ...) * \return int 0 if OK, <0 if KO */ function verify() @@ -1553,8 +1554,12 @@ class Societe extends CommonObject /** - * \brief Verifie code client - * \return int <0 si KO, 0 si OK, peut modifier le code client suivant le module utilise + * \brief Check customer code + * \return int 0 if OK + * -1 ErrorBadCustomerCodeSyntax + * -2 ErrorCustomerCodeRequired + * -3 ErrorCustomerCodeAlreadyUsed + * -4 ErrorPrefixRequired */ function check_codeclient() { @@ -1578,8 +1583,12 @@ class Societe extends CommonObject } /** - * \brief Verifie code fournisseur - * \return int <0 si KO, 0 si OK, peut modifier le code client suivant le module utilise + * \brief Check supplier code + * \return int 0 if OK + * -1 ErrorBadCustomerCodeSyntax + * -2 ErrorCustomerCodeRequired + * -3 ErrorCustomerCodeAlreadyUsed + * -4 ErrorPrefixRequired */ function check_codefournisseur() {