From 05426c956ccf5113ed4ed8d8f1e087ebeb7d960c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 13 May 2008 19:47:18 +0000 Subject: [PATCH] Fix: supplier accountancy code was not loaded --- .../societe/mod_codecompta_aquarium.php | 237 +++++++++--------- htdocs/societe.class.php | 12 +- 2 files changed, 129 insertions(+), 120 deletions(-) diff --git a/htdocs/includes/modules/societe/mod_codecompta_aquarium.php b/htdocs/includes/modules/societe/mod_codecompta_aquarium.php index 9a5cbf5b321..16470d49156 100644 --- a/htdocs/includes/modules/societe/mod_codecompta_aquarium.php +++ b/htdocs/includes/modules/societe/mod_codecompta_aquarium.php @@ -17,132 +17,141 @@ * 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_codecompta_aquarium.class.php - \ingroup societe - \brief Fichier de la classe des gestion aquarium des codes compta des societes clientes - \version $Revision$ -*/ + \file htdocs/includes/modules/societe/mod_codecompta_aquarium.class.php + \ingroup societe + \brief Fichier de la classe des gestion aquarium des codes compta des societes clientes + \version $Id$ + */ require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class.php"); /** - \class mod_codecompta_aquarium - \brief Classe permettant la gestion aquarium des codes compta des societes clients -*/ - + \class mod_codecompta_aquarium + \brief Classe permettant la gestion aquarium des codes compta des societes clients + */ class mod_codecompta_aquarium extends ModeleAccountancyCode { - var $nom; - - function mod_codecompta_aquarium() - { - $this->nom = "Aquarium"; - } - - function info($langs) - { - return $langs->trans("ModuleCompanyCode".$this->nom); - } - - - /** - \brief Renvoi code compta d'une societe - \param DB Handler d'accès base - \param societe Objet societe - \param type Type de tiers ('customer' ou 'supplier') - \return int >=0 ok, <0 ko - */ - function get_code($DB, $societe, $type) - { - $prefixcodecomptacustomer='411'; - $prefixcodecomptasupplier='401'; - - $i = 0; - $this->db = $DB; + var $nom; - dolibarr_syslog("mod_codecompta_aquarium::get_code search code for type=".$type." company=".$societe->nom); - - // Regle gestion compte compta - $codetouse=''; - if ($type == 'customer') $codetouse = $prefixcodecomptacustomer; - if ($type == 'supplier') $codetouse = $prefixcodecomptasupplier; - if ($type == 'customer') $codetouse.=$societe->code_client; - if ($type == 'supplier') $codetouse.=$societe->code_fournisseur; - $codetouse=eregi_replace('[^0-9]','',$codetouse); - - $is_dispo = $this->verif($DB, $codetouse, $societe, $type); - if (! $is_dispo) - { - /* - // On tente ajout suffix - while ($is_dispo == 0 && $i < 37) + + /** + * \brief Constructor + */ + function mod_codecompta_aquarium() { - $arr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - $altcodetouse = $codetouse . substr($arr, $i, 1); - - $is_dispo = $this->verif($DB, $altcodetouse, $societe, $type); - - $i++; + $this->nom = "Aquarium"; + } + + + /** + * \brief Return description of module + * \param $langs Object langs + * \return string Description + */ + function info($langs) + { + return $langs->trans("ModuleCompanyCode".$this->nom); + } + + + /** + * \brief Return accountancy account code for a third party + * \param DB Database handler + * \param societe Third party object + * \param type 'customer' or 'supplier' + * \return int >=0 if OK, <0 if KO + */ + function get_code($DB, $societe, $type) + { + $prefixcodecomptacustomer='411'; + $prefixcodecomptasupplier='401'; + + $i = 0; + $this->db = $DB; + + dolibarr_syslog("mod_codecompta_aquarium::get_code search code for type=".$type." company=".$societe->nom); + + // Regle gestion compte compta + $codetouse=''; + if ($type == 'customer') $codetouse = $prefixcodecomptacustomer; + if ($type == 'supplier') $codetouse = $prefixcodecomptasupplier; + if ($type == 'customer') $codetouse.=$societe->code_client; + if ($type == 'supplier') $codetouse.=$societe->code_fournisseur; + $codetouse=strtoupper(eregi_replace('[^a-z0-9]','',$codetouse)); + + $is_dispo = $this->verif($DB, $codetouse, $societe, $type); + if (! $is_dispo) + { + /* + // On tente ajout suffix + while ($is_dispo == 0 && $i < 37) + { + $arr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + $altcodetouse = $codetouse . substr($arr, $i, 1); + + $is_dispo = $this->verif($DB, $altcodetouse, $societe, $type); + + $i++; + } + */ + // Pour retour + // $this->code=$altcodetouse; + $this->code=$codetouse; + } + else + { + // Pour retour + $this->code=$codetouse; + } + dolibarr_syslog("mod_codecompta_aquarium::get_code found code=".$this->code); + return $is_dispo; + } + + + /** + * \brief Return if a code is available + * \param db Database handler + * \param code Code of third party + * \param societe Object third party + * \param type 'supplier' or 'customer' + * \return int 0 if OK but not available, >0 if OK and available, <0 if KO + */ + function verif($db, $code, $societe, $type) + { + $sql = "SELECT "; + if ($type == 'customer') $sql.= "code_compta"; + if ($type == 'supplier') $sql.= "code_compta_fournisseur"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe"; + $sql.= " WHERE "; + if ($type == 'customer') $sql.= "code_compta"; + if ($type == 'supplier') $sql.= "code_compta_fournisseur"; + $sql.= " = '".$code."'"; + $sql.= " AND rowid != ".$societe->id; + + $resql=$db->query($sql); + if ($resql) + { + if ($db->num_rows($resql) == 0) + { + dolibarr_syslog("mod_codecompta_aquarium::verif code '".$code."' available"); + return 1; // Dispo + } + else + { + dolibarr_syslog("mod_codecompta_aquarium::verif code '".$code."' not available"); + return 0; // Non dispo + } + } + else + { + $this->error=$db->error()." sql=".$sql; + dolibarr_syslog("mod_codecompta_aquarium::verif error".$this->error); + return -1; // Erreur + } } - */ - // Pour retour - // $this->code=$altcodetouse; - $this->code=$codetouse; - } - else - { - // Pour retour - $this->code=$codetouse; - } - dolibarr_syslog("mod_codecompta_aquarium::get_code found code=".$this->code); - return $is_dispo; - } - - - /** - \brief Renvoi si un code compta est dispo - \return int 0 non dispo, >0 dispo, <0 erreur - */ - function verif($db, $code, $societe, $type) - { - $sql = "SELECT "; - if ($type == 'customer') $sql.= "code_compta"; - if ($type == 'supplier') $sql.= "code_compta_fournisseur"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe"; - $sql.= " WHERE "; - if ($type == 'customer') $sql.= "code_compta"; - if ($type == 'supplier') $sql.= "code_compta_fournisseur"; - $sql.= " = '".$code."'"; - $sql.= " AND rowid != ".$societe->id; - - $resql=$db->query($sql); - if ($resql) - { - if ($db->num_rows($resql) == 0) - { - dolibarr_syslog("mod_codecompta_aquarium::verif code '".$code."' available"); - return 1; // Dispo - } - else - { - dolibarr_syslog("mod_codecompta_aquarium::verif code '".$code."' not available"); - return 0; // Non dispo - } - } - else - { - $this->error=$db->error()." sql=".$sql; - dolibarr_syslog("mod_codecompta_aquarium::verif error".$this->error); - return -1; // Erreur - } - } - } ?> diff --git a/htdocs/societe.class.php b/htdocs/societe.class.php index ac8f7236794..723d6219fc1 100644 --- a/htdocs/societe.class.php +++ b/htdocs/societe.class.php @@ -91,13 +91,13 @@ class Societe extends CommonObject var $code_compta_fournisseur; var $note; - //! code statut prospect - var $stcomm_id; - var $statut_commercial; + //! code statut prospect + var $stcomm_id; + var $statut_commercial; - var $price_level; + var $price_level; - var $commercial_id; //Id du commercial affecte + var $commercial_id; //Id du commercial affecte /** @@ -498,7 +498,7 @@ class Societe extends CommonObject $sql .= ', s.fk_typent as typent_id'; $sql .= ', s.fk_effectif as effectif_id'; $sql .= ', s.fk_forme_juridique as forme_juridique_code'; - $sql .= ', s.code_client, s.code_compta, s.code_fournisseur, s.parent'; + $sql .= ', s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur, s.parent'; $sql .= ', s.fk_departement, s.fk_pays, s.fk_stcomm, s.remise_client, s.mode_reglement, s.cond_reglement, s.tva_assuj'; $sql .= ', s.fk_prospectlevel'; $sql .= ', fj.libelle as forme_juridique';