Fix: supplier accountancy code was not loaded

This commit is contained in:
Laurent Destailleur 2008-05-13 19:47:18 +00:00
parent fe0100bab0
commit 05426c956c
2 changed files with 129 additions and 120 deletions

View File

@ -17,132 +17,141 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* or see http://www.gnu.org/ * or see http://www.gnu.org/
*
* $Id$
* $Source$
*/ */
/** /**
\file htdocs/includes/modules/societe/mod_codecompta_aquarium.class.php \file htdocs/includes/modules/societe/mod_codecompta_aquarium.class.php
\ingroup societe \ingroup societe
\brief Fichier de la classe des gestion aquarium des codes compta des societes clientes \brief Fichier de la classe des gestion aquarium des codes compta des societes clientes
\version $Revision$ \version $Id$
*/ */
require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class.php");
/** /**
\class mod_codecompta_aquarium \class mod_codecompta_aquarium
\brief Classe permettant la gestion aquarium des codes compta des societes clients \brief Classe permettant la gestion aquarium des codes compta des societes clients
*/ */
class mod_codecompta_aquarium extends ModeleAccountancyCode class mod_codecompta_aquarium extends ModeleAccountancyCode
{ {
var $nom; 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;
dolibarr_syslog("mod_codecompta_aquarium::get_code search code for type=".$type." company=".$societe->nom);
/**
// Regle gestion compte compta * \brief Constructor
$codetouse=''; */
if ($type == 'customer') $codetouse = $prefixcodecomptacustomer; function mod_codecompta_aquarium()
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)
{ {
$arr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $this->nom = "Aquarium";
$altcodetouse = $codetouse . substr($arr, $i, 1); }
$is_dispo = $this->verif($DB, $altcodetouse, $societe, $type);
/**
$i++; * \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
}
}
} }
?> ?>

View File

@ -91,13 +91,13 @@ class Societe extends CommonObject
var $code_compta_fournisseur; var $code_compta_fournisseur;
var $note; var $note;
//! code statut prospect //! code statut prospect
var $stcomm_id; var $stcomm_id;
var $statut_commercial; 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_typent as typent_id';
$sql .= ', s.fk_effectif as effectif_id'; $sql .= ', s.fk_effectif as effectif_id';
$sql .= ', s.fk_forme_juridique as forme_juridique_code'; $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_departement, s.fk_pays, s.fk_stcomm, s.remise_client, s.mode_reglement, s.cond_reglement, s.tva_assuj';
$sql .= ', s.fk_prospectlevel'; $sql .= ', s.fk_prospectlevel';
$sql .= ', fj.libelle as forme_juridique'; $sql .= ', fj.libelle as forme_juridique';