2
0
forked from Wavyzz/dolibarr

New: An external module can force the third party code to be required whatever is the rule of third party code module.

This commit is contained in:
Laurent Destailleur
2009-07-06 07:58:26 +00:00
parent 1910f3232c
commit 1b8c9df552
6 changed files with 139 additions and 90 deletions

View File

@@ -38,6 +38,8 @@ For translators:
- Update some language files. - Update some language files.
For developers: 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. - Update fckeditor to 2.6.4.
- Removed some deprecated files. - Removed some deprecated files.
- Creation of directory in module descriptor is simpler. - Creation of directory in module descriptor is simpler.

View File

@@ -197,12 +197,16 @@ class mod_codeclient_elephant extends ModeleThirdPartyCode
/** /**
* \brief Verifie la validite du code * \brief Check validity of code according to its rules
* \param $db Handler acces base * \param $db Database handler
* \param $code Code a verifier/corriger * \param $code Code to check/correct
* \param $soc Objet societe * \param $soc Object third party
* \param $type 0 = client/prospect , 1 = fournisseur * \param $type 0 = customer/prospect , 1 = supplier
* \return int <0 if KO, 0 if OK * \return int 0 if OK
* -1 ErrorBadCustomerCodeSyntax
* -2 ErrorCustomerCodeRequired
* -3 ErrorCustomerCodeAlreadyUsed
* -4 ErrorPrefixRequired
*/ */
function verif($db, &$code, $soc, $type) function verif($db, &$code, $soc, $type)
{ {
@@ -213,10 +217,14 @@ class mod_codeclient_elephant extends ModeleThirdPartyCode
$result=0; $result=0;
$code = strtoupper(trim($code)); $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; $result=0;
} }
else if (empty($code) && (! $this->code_null || ! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) )
{
$result=-2;
}
else else
{ {
// Get Mask value // Get Mask value

View File

@@ -29,17 +29,17 @@ require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class.
/** /**
\class mod_codeclient_leopard \class mod_codeclient_leopard
\brief Classe permettant la gestion leopard des codes tiers \brief Classe permettant la gestion leopard des codes tiers
*/ */
class mod_codeclient_leopard extends ModeleThirdPartyCode class mod_codeclient_leopard extends ModeleThirdPartyCode
{ {
/* /*
* Attention ce module est utilise par defaut si aucun module n'a * Attention ce module est utilise par defaut si aucun module n'a
* ete definit dans la configuration * ete definit dans la configuration
* *
* Le fonctionnement de celui-ci doit dont rester le plus ouvert possible * Le fonctionnement de celui-ci doit dont rester le plus ouvert possible
*/ */
var $nom; // Nom du modele var $nom; // Nom du modele
var $code_modifiable; // Code modifiable var $code_modifiable; // Code modifiable
@@ -51,7 +51,7 @@ class mod_codeclient_leopard extends ModeleThirdPartyCode
/** \brief Constructeur classe /** \brief Constructeur classe
*/ */
function mod_codeclient_leopard() function mod_codeclient_leopard()
{ {
$this->nom = "Leopard"; $this->nom = "Leopard";
@@ -65,9 +65,9 @@ class mod_codeclient_leopard extends ModeleThirdPartyCode
/** /**
* \brief Renvoie la description du module * \brief Renvoie la description du module
* \return string Texte descripif * \return string Texte descripif
*/ */
function info($langs) function info($langs)
{ {
return $langs->trans("LeopardNumRefModelDesc"); return $langs->trans("LeopardNumRefModelDesc");
@@ -75,27 +75,45 @@ class mod_codeclient_leopard extends ModeleThirdPartyCode
/** \brief Return next value available /** \brief Return next value available
* \return string Value * \return string Value
*/ */
function getNextValue($objsoc=0,$type=-1) function getNextValue($objsoc=0,$type=-1)
{ {
global $langs; global $langs;
return ''; return '';
} }
/** /**
* \brief check validity of code * \brief Check validity of code according to its rules
* \param $db Handler acces base * \param $db Database handler
* \param $code Code to check * \param $code Code to check/correct
* \param $soc Objet societe * \param $soc Object third party
*/ * \param $type 0 = customer/prospect , 1 = supplier
function verif($db, &$code, $soc) * \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)); $code = strtoupper(trim($code));
// Renvoie toujours ok if (empty($code) && $this->code_null && empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED))
return 0; {
$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;
} }
} }

View File

@@ -29,9 +29,9 @@ require_once(DOL_DOCUMENT_ROOT."/includes/modules/societe/modules_societe.class.
/** /**
\class mod_codeclient_monkey \class mod_codeclient_monkey
\brief Classe permettant la gestion monkey des codes tiers \brief Classe permettant la gestion monkey des codes tiers
*/ */
class mod_codeclient_monkey extends ModeleThirdPartyCode class mod_codeclient_monkey extends ModeleThirdPartyCode
{ {
var $nom; // Nom du modele var $nom; // Nom du modele
@@ -46,7 +46,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode
var $prefixsupplier='SU'; var $prefixsupplier='SU';
/** \brief Constructeur classe /** \brief Constructeur classe
*/ */
function mod_codeclient_monkey() function mod_codeclient_monkey()
{ {
$this->nom = "Monkey"; $this->nom = "Monkey";
@@ -60,8 +60,8 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode
/** \brief Renvoi la description du module /** \brief Renvoi la description du module
* \return string Texte descripif * \return string Texte descripif
*/ */
function info($langs) function info($langs)
{ {
return $langs->trans("MonkeyNumRefModelDesc",$this->prefixcustomer,$this->prefixsupplier); return $langs->trans("MonkeyNumRefModelDesc",$this->prefixcustomer,$this->prefixsupplier);
@@ -69,8 +69,8 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode
/** \brief Renvoi la description du module /** \brief Renvoi la description du module
* \return string Texte descripif * \return string Texte descripif
*/ */
function getExample($langs,$objsoc=0,$type=-1) function getExample($langs,$objsoc=0,$type=-1)
{ {
return $this->prefixcustomer.'0901-0001<br>'.$this->prefixsupplier.'0901-0001'; return $this->prefixcustomer.'0901-0001<br>'.$this->prefixsupplier.'0901-0001';
@@ -105,51 +105,62 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode
if ($type == 0) $prefix=$this->prefixcustomer; if ($type == 0) $prefix=$this->prefixcustomer;
if ($type == 1) $prefix=$this->prefixsupplier; if ($type == 1) $prefix=$this->prefixsupplier;
// D'abord on r<>cup<75>re la valeur max (r<>ponse imm<6D>diate car champ ind<6E>x<EFBFBD>) // D'abord on r<>cup<75>re la valeur max (r<>ponse imm<6D>diate car champ ind<6E>x<EFBFBD>)
$posindice=8; $posindice=8;
$sql = "SELECT MAX(0+SUBSTRING(".$field.",".$posindice.")) as max"; $sql = "SELECT MAX(0+SUBSTRING(".$field.",".$posindice.")) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."societe"; $sql.= " FROM ".MAIN_DB_PREFIX."societe";
$sql.= " WHERE ".$field." LIKE '".$prefix."%'"; $sql.= " WHERE ".$field." LIKE '".$prefix."%'";
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
{ {
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
if ($obj) $max = $obj->max; if ($obj) $max = $obj->max;
else $max=0; else $max=0;
} }
else else
{ {
dol_syslog("mod_codeclient_monkey::getNextValue sql=".$sql); dol_syslog("mod_codeclient_monkey::getNextValue sql=".$sql);
return -1; return -1;
} }
//$date=time(); //$date=time();
$date=gmmktime(); $date=gmmktime();
$yymm = strftime("%y%m",$date); $yymm = strftime("%y%m",$date);
$num = sprintf("%04s",$max+1); $num = sprintf("%04s",$max+1);
dol_syslog("mod_codeclient_monkey::getNextValue return ".$prefix.$yymm."-".$num); dol_syslog("mod_codeclient_monkey::getNextValue return ".$prefix.$yymm."-".$num);
return $prefix.$yymm."-".$num; return $prefix.$yymm."-".$num;
} }
/** /**
* \brief Verifie la validite du code * \brief Check validity of code according to its rules
* \param $db Handler acces base * \param $db Database handler
* \param $code Code a verifier/corriger * \param $code Code to check/correct
* \param $soc Objet societe * \param $soc Object third party
* \return int <0 si KO, 0 si OK * \param $type 0 = customer/prospect , 1 = supplier
*/ * \return int 0 if OK
function verif($db, &$code, $soc) * -1 ErrorBadCustomerCodeSyntax
* -2 ErrorCustomerCodeRequired
* -3 ErrorCustomerCodeAlreadyUsed
* -4 ErrorPrefixRequired
*/
function verif($db, &$code, $soc, $type)
{ {
global $conf;
$result=0; $result=0;
$code = strtoupper(trim($code)); $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; $result=0;
} }
else if (empty($code) && (! $this->code_null || ! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) )
{
$result=-2;
}
else else
{ {
if ($this->verif_syntax($code) >= 0) 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; return $result;
} }
/** /**
* \brief Renvoi si un code est pris ou non (par autre tiers) * \brief Renvoi si un code est pris ou non (par autre tiers)
* \param $db Handler acces base * \param $db Handler acces base
* \param $code Code a verifier * \param $code Code a verifier
* \param $soc Objet societe * \param $soc Objet societe
* \return int 0 si dispo, <0 si erreur * \return int 0 si dispo, <0 si erreur
*/ */
function verif_dispo($db, $code, $soc) function verif_dispo($db, $code, $soc)
{ {
$sql = "SELECT code_client FROM ".MAIN_DB_PREFIX."societe"; $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 * \brief Renvoi si un code respecte la syntaxe
* \param $code Code a verifier * \param $code Code a verifier
* \return int 0 si OK, <0 si KO * \return int 0 si OK, <0 si KO
*/ */
function verif_syntax($code) function verif_syntax($code)
{ {
$res = 0; $res = 0;

View File

@@ -4,7 +4,7 @@
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2008 Patrick Raguin <patrick.raguin@auguria.net> * Copyright (C) 2008 Patrick Raguin <patrick.raguin@auguria.net>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by

View File

@@ -147,10 +147,11 @@ class Societe extends CommonObject
$this->db->begin(); $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_client == -1) $this->get_codeclient($this->prefix_comm,0);
if ($this->code_fournisseur == -1) $this->get_codefournisseur($this->prefix_comm,1); if ($this->code_fournisseur == -1) $this->get_codefournisseur($this->prefix_comm,1);
// Check more parameters
$result = $this->verify(); $result = $this->verify();
if ($result >= 0) 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 * \return int 0 if OK, <0 if KO
*/ */
function verify() function verify()
@@ -1553,8 +1554,12 @@ class Societe extends CommonObject
/** /**
* \brief Verifie code client * \brief Check customer code
* \return int <0 si KO, 0 si OK, peut modifier le code client suivant le module utilise * \return int 0 if OK
* -1 ErrorBadCustomerCodeSyntax
* -2 ErrorCustomerCodeRequired
* -3 ErrorCustomerCodeAlreadyUsed
* -4 ErrorPrefixRequired
*/ */
function check_codeclient() function check_codeclient()
{ {
@@ -1578,8 +1583,12 @@ class Societe extends CommonObject
} }
/** /**
* \brief Verifie code fournisseur * \brief Check supplier code
* \return int <0 si KO, 0 si OK, peut modifier le code client suivant le module utilise * \return int 0 if OK
* -1 ErrorBadCustomerCodeSyntax
* -2 ErrorCustomerCodeRequired
* -3 ErrorCustomerCodeAlreadyUsed
* -4 ErrorPrefixRequired
*/ */
function check_codefournisseur() function check_codefournisseur()
{ {