Fix: Uniformize error management

This commit is contained in:
Laurent Destailleur
2011-07-29 20:47:34 +00:00
parent 2404acb977
commit 9a07e42f59
6 changed files with 130 additions and 147 deletions

View File

@@ -15,14 +15,15 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
/** /**
* \file htdocs/compta/bank/bankid_fr.php * \file htdocs/compta/bank/bankid_fr.php
* \ingroup banque * \ingroup banque
* \brief Fiche creation compte bancaire * \brief Fiche creation compte bancaire
* \version $Id: bankid_fr.php,v 1.28 2011/07/31 22:23:20 eldy Exp $ * \version $Id: bankid_fr.php,v 1.27 2011/07/29 20:47:35 eldy Exp $
*/ */
require("./pre.inc.php"); require("./pre.inc.php");
@@ -385,5 +386,5 @@ if ($_GET["id"] && $_GET["action"] == 'edit' && $user->rights->banque->configure
$db->close(); $db->close();
llxFooter('$Date: 2011/07/31 22:23:20 $ - $Revision: 1.28 $'); llxFooter('$Date: 2011/07/29 20:47:35 $ - $Revision: 1.27 $');
?> ?>

View File

@@ -15,14 +15,15 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
/** /**
* \file htdocs/compta/bank/fiche.php * \file htdocs/compta/bank/fiche.php
* \ingroup banque * \ingroup banque
* \brief Page to create/view a bank account * \brief Page to create/view a bank account
* \version $Id: fiche.php,v 1.78 2011/07/31 22:23:16 eldy Exp $ * \version $Id: fiche.php,v 1.77 2011/07/29 20:47:35 eldy Exp $
*/ */
require("./pre.inc.php"); require("./pre.inc.php");
@@ -607,5 +608,5 @@ else
$db->close(); $db->close();
llxFooter('$Date: 2011/07/31 22:23:16 $ - $Revision: 1.78 $'); llxFooter('$Date: 2011/07/29 20:47:35 $ - $Revision: 1.77 $');
?> ?>

View File

@@ -25,7 +25,7 @@
* \file htdocs/product/class/product.class.php * \file htdocs/product/class/product.class.php
* \ingroup produit * \ingroup produit
* \brief Fichier de la classe des produits predefinis * \brief Fichier de la classe des produits predefinis
* \version $Id: product.class.php,v 1.46 2011/07/29 06:59:36 tiaris Exp $ * \version $Id: product.class.php,v 1.47 2011/07/29 20:47:35 eldy Exp $
*/ */
require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php"); require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php");
@@ -192,13 +192,14 @@ class Product extends CommonObject
/** /**
* Insert product into database * Insert product into database
* @param user User making insert * @param user User making insert
* @return int id of product/service if OK or number of error < 0 * @param notrigger Disable triggers
* @return int Id of product/service if OK or number of error < 0
*/ */
function create($user) function create($user,$notrigger=0)
{ {
global $conf ; global $conf, $langs;
$this->errno = 0; $error=0;
// Clean parameters // Clean parameters
$this->ref = dol_string_nospecial(trim($this->ref)); $this->ref = dol_string_nospecial(trim($this->ref));
@@ -250,23 +251,27 @@ class Product extends CommonObject
$this->error='ErrorWrongParameters'; $this->error='ErrorWrongParameters';
return -1; return -1;
} }
if (empty($this->ref))
{
$this->error='ErrorWrongParameters';
return -2;
}
dol_syslog("Product::Create ref=".$this->ref." price=".$this->price." price_ttc=".$this->price_ttc." tva_tx=".$this->tva_tx." price_base_type=".$this->price_base_type." Category : ".$this->catid, LOG_DEBUG); dol_syslog("Product::Create ref=".$this->ref." price=".$this->price." price_ttc=".$this->price_ttc." tva_tx=".$this->tva_tx." price_base_type=".$this->price_base_type." Category : ".$this->catid, LOG_DEBUG);
if ($this->ref)
{
$this->db->begin(); $this->db->begin();
$sql = "SELECT count(*)"; $sql = "SELECT count(*) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."product"; $sql.= " FROM ".MAIN_DB_PREFIX."product";
$sql.= " WHERE ref = '" .$this->ref."'"; $sql.= " WHERE ref = '" .$this->ref."'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$result = $this->db->query($sql) ; $result = $this->db->query($sql);
if ($result) if ($result)
{ {
$row = $this->db->fetch_array($result); $obj = $this->db->fetch_object($result);
if ($row[0] == 0) if ($obj->nb == 0)
{ {
// Produit non deja existant // Produit non deja existant
$sql = "INSERT INTO ".MAIN_DB_PREFIX."product ("; $sql = "INSERT INTO ".MAIN_DB_PREFIX."product (";
@@ -281,6 +286,8 @@ class Product extends CommonObject
$sql.= ", price"; $sql.= ", price";
$sql.= ", price_ttc"; $sql.= ", price_ttc";
$sql.= ", price_base_type"; $sql.= ", price_base_type";
$sql.= ", tobuy";
$sql.= ", tosell";
$sql.= ", canvas"; $sql.= ", canvas";
$sql.= ", finished"; $sql.= ", finished";
$sql.= ", hidden"; $sql.= ", hidden";
@@ -296,6 +303,8 @@ class Product extends CommonObject
$sql.= ", ".price2num($price_ht); $sql.= ", ".price2num($price_ht);
$sql.= ", ".price2num($price_ttc); $sql.= ", ".price2num($price_ttc);
$sql.= ", '".$this->price_base_type."'"; $sql.= ", '".$this->price_base_type."'";
$sql.= ", ".$this->status;
$sql.= ", ".$this->status_buy;
$sql.= ", '".$this->canvas."'"; $sql.= ", '".$this->canvas."'";
$sql.= ", ".$this->finished; $sql.= ", ".$this->finished;
$sql.= ", ".$this->hidden; $sql.= ", ".$this->hidden;
@@ -329,42 +338,41 @@ class Product extends CommonObject
} }
else else
{ {
$this->_setErrNo("Create",260,$this->error); $error++;
$this->error='ErrorFailedToUpdateRecord';
} }
} }
else else
{ {
$this->error=$this->db->error(); $error++;
$this->_setErrNo("Create",264,$this->error); $this->error=$this->db->lasterror();
} }
} }
else else
{ {
$this->_setErrNo("Create",259); $error++;
$this->error='ErrorFailedToGetInsertedId';
} }
} }
else else
{ {
$this->error=$this->db->error(); $error++;
$this->_setErrNo("Create",258,$this->error); $this->error=$this->db->lasterror();
} }
} }
else else
{ {
// Le produit existe deja // Product already exists with this ref
$this->error='ErrorProductAlreadyExists'; $langs->trans("Error")." : ".$langs->trans("ErrorProductAlreadyExists",$this->ref);
} }
} }
else else
{ {
$this->_setErrNo("Create",263); $error++;
$this->error=$this->db->lasterror();
} }
/* if (! $error && ! $notrigger)
* END COMMIT
*/
if ($this->errno === 0)
{ {
// Appel des triggers // Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
@@ -372,49 +380,19 @@ class Product extends CommonObject
$result=$interface->run_triggers('PRODUCT_CREATE',$this,$user,$langs,$conf); $result=$interface->run_triggers('PRODUCT_CREATE',$this,$user,$langs,$conf);
if ($result < 0) { $error++; $this->errors=$interface->errors; } if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers // Fin appel triggers
}
if (! $error)
{
$this->db->commit(); $this->db->commit();
return $id; return $this->id;
} }
else else
{ {
$this->db->rollback(); $this->db->rollback();
return -1; return -$error;
} }
} }
else
{
$this->_setErrNo("Create",262);
return -2;
}
return -1;
}
/**
* Positionne le numero d'erreur
* @param func Nom de la fonction
* @param num Numero de l'erreur
* @param error string
*/
function _setErrNo($func, $num, $error='')
{
$this->errno = $num;
dol_syslog(get_class($this)."::".$func." - ERRNO(".$this->errno.")".($error?' - '.$error:''), LOG_ERR);
}
/**
* Retourne le texte de l'erreur
*/
function error()
{
$errs[257] = "ErrorProductAlreadyExists";
$errs[262] = "ErrorProductBadRefOrLabel";
return $errs[$this->errno];
}
/** /**
* Update a record into database * Update a record into database

View File

@@ -18,14 +18,15 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
/** /**
* \file htdocs/product/fiche.php * \file htdocs/product/fiche.php
* \ingroup product * \ingroup product
* \brief Page to show product * \brief Page to show product
* \version $Id: fiche.php,v 1.374 2011/07/31 23:19:26 eldy Exp $ * \version $Id: fiche.php,v 1.373 2011/07/29 20:47:35 eldy Exp $
*/ */
require("../main.inc.php"); require("../main.inc.php");
@@ -1645,6 +1646,6 @@ if ($product->id && $action == '' && $product->status)
$db->close(); $db->close();
llxFooter('$Date: 2011/07/31 23:19:26 $ - $Revision: 1.374 $'); llxFooter('$Date: 2011/07/29 20:47:35 $ - $Revision: 1.373 $');
?> ?>

View File

@@ -13,14 +13,15 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
/* /*
* \files htdocs/societe/class/companybankaccount.class.php * \files htdocs/societe/class/companybankaccount.class.php
* \ingroup societe * \ingroup societe
* \brief File of class to manage bank accounts description of third parties * \brief File of class to manage bank accounts description of third parties
* \version $Id: companybankaccount.class.php,v 1.11 2011/07/31 23:22:58 eldy Exp $ * \version $Id: companybankaccount.class.php,v 1.10 2011/07/29 20:47:35 eldy Exp $
*/ */
require_once(DOL_DOCUMENT_ROOT ."/compta/bank/class/account.class.php"); require_once(DOL_DOCUMENT_ROOT ."/compta/bank/class/account.class.php");

View File

@@ -15,14 +15,15 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
/** /**
* \file htdocs/societe/rib.php * \file htdocs/societe/rib.php
* \ingroup societe * \ingroup societe
* \brief BAN tab for companies * \brief BAN tab for companies
* \version $Id: rib.php,v 1.37 2011/07/31 23:22:56 eldy Exp $ * \version $Id: rib.php,v 1.36 2011/07/29 20:47:34 eldy Exp $
*/ */
require("../main.inc.php"); require("../main.inc.php");
@@ -271,5 +272,5 @@ if ($_GET["socid"] && $_GET["action"] == 'edit' && $user->rights->societe->creer
$db->close(); $db->close();
llxFooter('$Date: 2011/07/31 23:22:56 $ - $Revision: 1.37 $'); llxFooter('$Date: 2011/07/29 20:47:34 $ - $Revision: 1.36 $');
?> ?>