From c21aaea1e624dd4937c9674dfd5ee6645f424280 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Jul 2011 20:47:34 +0000 Subject: [PATCH] Fix: Uniformize error management --- htdocs/compta/bank/bankid_fr.php | 6 +- htdocs/compta/bank/fiche.php | 8 +- htdocs/product/class/product.class.php | 244 ++++++++---------- htdocs/product/fiche.php | 5 +- .../class/companybankaccount.class.php | 11 +- htdocs/societe/rib.php | 6 +- 6 files changed, 125 insertions(+), 155 deletions(-) diff --git a/htdocs/compta/bank/bankid_fr.php b/htdocs/compta/bank/bankid_fr.php index 92957004b61..5ba2ef8997e 100644 --- a/htdocs/compta/bank/bankid_fr.php +++ b/htdocs/compta/bank/bankid_fr.php @@ -23,7 +23,7 @@ * \file htdocs/compta/bank/bankid_fr.php * \ingroup banque * \brief Fiche creation compte bancaire - * \version $Id$ + * \version $Id: bankid_fr.php,v 1.27 2011/07/29 20:47:35 eldy Exp $ */ require("./pre.inc.php"); @@ -75,7 +75,7 @@ if ($_POST["action"] == 'update' && ! $_POST["cancel"]) } else { - $message='
'.$account->error().'
'; + $message='
'.$account->error.'
'; $_GET["action"]='edit'; // Force chargement page edition } } @@ -386,5 +386,5 @@ if ($_GET["id"] && $_GET["action"] == 'edit' && $user->rights->banque->configure $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/29 20:47:35 $ - $Revision: 1.27 $'); ?> diff --git a/htdocs/compta/bank/fiche.php b/htdocs/compta/bank/fiche.php index 26ca15da2d3..9ee1f551048 100644 --- a/htdocs/compta/bank/fiche.php +++ b/htdocs/compta/bank/fiche.php @@ -23,7 +23,7 @@ * \file htdocs/compta/bank/fiche.php * \ingroup banque * \brief Page to create/view a bank account - * \version $Id$ + * \version $Id: fiche.php,v 1.77 2011/07/29 20:47:35 eldy Exp $ */ require("./pre.inc.php"); @@ -99,7 +99,7 @@ if ($_POST["action"] == 'add') $_GET["id"]=$id; // Force chargement page en mode visu } else { - $message='
'.$account->error().'
'; + $message='
'.$account->error.'
'; $action='create'; // Force chargement page en mode creation } } @@ -167,7 +167,7 @@ if ($_POST["action"] == 'update' && ! $_POST["cancel"]) } else { - $message='
'.$account->error().'
'; + $message='
'.$account->error.'
'; $action='edit'; // Force chargement page edition } } @@ -608,5 +608,5 @@ else $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/29 20:47:35 $ - $Revision: 1.77 $'); ?> diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index d6f7baf831e..1da2adb751e 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -25,7 +25,7 @@ * \file htdocs/product/class/product.class.php * \ingroup produit * \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"); @@ -191,14 +191,15 @@ class Product extends CommonObject /** * Insert product into database - * @param user User making insert - * @return int id of product/service if OK or number of error < 0 + * @param user User making insert + * @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 $this->ref = dol_string_nospecial(trim($this->ref)); @@ -250,172 +251,149 @@ class Product extends CommonObject $this->error='ErrorWrongParameters'; 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); - if ($this->ref) + + $this->db->begin(); + + $sql = "SELECT count(*) as nb"; + $sql.= " FROM ".MAIN_DB_PREFIX."product"; + $sql.= " WHERE ref = '" .$this->ref."'"; + $sql.= " AND entity = ".$conf->entity; + + $result = $this->db->query($sql); + if ($result) { - $this->db->begin(); - - $sql = "SELECT count(*)"; - $sql.= " FROM ".MAIN_DB_PREFIX."product"; - $sql.= " WHERE ref = '" .$this->ref."'"; - $sql.= " AND entity = ".$conf->entity; - - $result = $this->db->query($sql) ; - if ($result) + $obj = $this->db->fetch_object($result); + if ($obj->nb == 0) { - $row = $this->db->fetch_array($result); - if ($row[0] == 0) + // Produit non deja existant + $sql = "INSERT INTO ".MAIN_DB_PREFIX."product ("; + $sql.= "datec"; + $sql.= ", entity"; + $sql.= ", ref"; + $sql.= ", price_min"; + $sql.= ", price_min_ttc"; + $sql.= ", label"; + $sql.= ", fk_user_author"; + $sql.= ", fk_product_type"; + $sql.= ", price"; + $sql.= ", price_ttc"; + $sql.= ", price_base_type"; + $sql.= ", tobuy"; + $sql.= ", tosell"; + $sql.= ", canvas"; + $sql.= ", finished"; + $sql.= ", hidden"; + $sql.= ") VALUES ("; + $sql.= $this->db->idate(mktime()); + $sql.= ", ".$conf->entity; + $sql.= ", '".$this->ref."'"; + $sql.= ", ".price2num($price_min_ht); + $sql.= ", ".price2num($price_min_ttc); + $sql.= ", ".($this->libelle?"'".$this->db->escape($this->libelle)."'":"null"); + $sql.= ", ".$user->id; + $sql.= ", ".$this->type; + $sql.= ", ".price2num($price_ht); + $sql.= ", ".price2num($price_ttc); + $sql.= ", '".$this->price_base_type."'"; + $sql.= ", ".$this->status; + $sql.= ", ".$this->status_buy; + $sql.= ", '".$this->canvas."'"; + $sql.= ", ".$this->finished; + $sql.= ", ".$this->hidden; + $sql.= ")"; + + dol_syslog("Product::Create sql=".$sql); + $result = $this->db->query($sql); + if ( $result ) { - // Produit non deja existant - $sql = "INSERT INTO ".MAIN_DB_PREFIX."product ("; - $sql.= "datec"; - $sql.= ", entity"; - $sql.= ", ref"; - $sql.= ", price_min"; - $sql.= ", price_min_ttc"; - $sql.= ", label"; - $sql.= ", fk_user_author"; - $sql.= ", fk_product_type"; - $sql.= ", price"; - $sql.= ", price_ttc"; - $sql.= ", price_base_type"; - $sql.= ", canvas"; - $sql.= ", finished"; - $sql.= ", hidden"; - $sql.= ") VALUES ("; - $sql.= $this->db->idate(mktime()); - $sql.= ", ".$conf->entity; - $sql.= ", '".$this->ref."'"; - $sql.= ", ".price2num($price_min_ht); - $sql.= ", ".price2num($price_min_ttc); - $sql.= ", ".($this->libelle?"'".$this->db->escape($this->libelle)."'":"null"); - $sql.= ", ".$user->id; - $sql.= ", ".$this->type; - $sql.= ", ".price2num($price_ht); - $sql.= ", ".price2num($price_ttc); - $sql.= ", '".$this->price_base_type."'"; - $sql.= ", '".$this->canvas."'"; - $sql.= ", ".$this->finished; - $sql.= ", ".$this->hidden; - $sql.= ")"; + $id = $this->db->last_insert_id(MAIN_DB_PREFIX."product"); - dol_syslog("Product::Create sql=".$sql); - $result = $this->db->query($sql); - if ( $result ) + if ($id > 0) { - $id = $this->db->last_insert_id(MAIN_DB_PREFIX."product"); + $this->id = $id; + $this->price = $price_ht; + $this->price_ttc = $price_ttc; + $this->price_min = $price_min_ht; + $this->price_min_ttc = $price_min_ttc; - if ($id > 0) + $result = $this->_log_price($user); + if ($result > 0) { - $this->id = $id; - $this->price = $price_ht; - $this->price_ttc = $price_ttc; - $this->price_min = $price_min_ht; - $this->price_min_ttc = $price_min_ttc; - - $result = $this->_log_price($user); - if ($result > 0) + if ( $this->update($id, $user) > 0) { - if ( $this->update($id, $user) > 0) + if ($this->catid > 0) { - if ($this->catid > 0) - { - require_once(DOL_DOCUMENT_ROOT ."/categories/class/categorie.class.php"); - $cat = new Categorie($this->db, $this->catid); - $cat->add_type($this,"product"); - } - } - else - { - $this->_setErrNo("Create",260,$this->error); + require_once(DOL_DOCUMENT_ROOT ."/categories/class/categorie.class.php"); + $cat = new Categorie($this->db, $this->catid); + $cat->add_type($this,"product"); } } else { - $this->error=$this->db->error(); - $this->_setErrNo("Create",264,$this->error); + $error++; + $this->error='ErrorFailedToUpdateRecord'; } } else { - $this->_setErrNo("Create",259); + $error++; + $this->error=$this->db->lasterror(); } } else { - $this->error=$this->db->error(); - $this->_setErrNo("Create",258,$this->error); + $error++; + $this->error='ErrorFailedToGetInsertedId'; } } else { - // Le produit existe deja - $this->error='ErrorProductAlreadyExists'; + $error++; + $this->error=$this->db->lasterror(); } } else { - $this->_setErrNo("Create",263); - } - - /* - * END COMMIT - */ - - if ($this->errno === 0) - { - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('PRODUCT_CREATE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers - - $this->db->commit(); - return $id; - } - else - { - $this->db->rollback(); - return -1; + // Product already exists with this ref + $langs->trans("Error")." : ".$langs->trans("ErrorProductAlreadyExists",$this->ref); } } else { - $this->_setErrNo("Create",262); - - return -2; + $error++; + $this->error=$this->db->lasterror(); } - return -1; + if (! $error && ! $notrigger) + { + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('PRODUCT_CREATE',$this,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + } + + if (! $error) + { + $this->db->commit(); + return $this->id; + } + else + { + $this->db->rollback(); + return -$error; + } } - /** - * 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 * @param id Id of product @@ -2161,7 +2139,7 @@ class Product extends CommonObject $prods[$this->db->escape($rec['label'])][$keyChild] = $valueChild; } } - + return $prods; } else diff --git a/htdocs/product/fiche.php b/htdocs/product/fiche.php index 7908ed29d4f..a65f888ab11 100644 --- a/htdocs/product/fiche.php +++ b/htdocs/product/fiche.php @@ -26,7 +26,7 @@ * \file htdocs/product/fiche.php * \ingroup product * \brief Page to show product - * \version $Id$ + * \version $Id: fiche.php,v 1.373 2011/07/29 20:47:35 eldy Exp $ */ require("../main.inc.php"); @@ -294,6 +294,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->produit-> { $product->ref = GETPOST('clone_ref'); $product->status = 0; + $product->status_buy = 0; $product->finished = 1; $product->id = null; @@ -1645,6 +1646,6 @@ if ($product->id && $action == '' && $product->status) $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/29 20:47:35 $ - $Revision: 1.373 $'); ?> diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php index efa154c828f..79601ea1031 100644 --- a/htdocs/societe/class/companybankaccount.class.php +++ b/htdocs/societe/class/companybankaccount.class.php @@ -21,7 +21,7 @@ * \files htdocs/societe/class/companybankaccount.class.php * \ingroup societe * \brief File of class to manage bank accounts description of third parties - * \version $Id$ + * \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"); @@ -182,15 +182,6 @@ class CompanyBankAccount extends Account } } - /** - * - * - */ - function error() - { - return $this->error; - } - } ?> diff --git a/htdocs/societe/rib.php b/htdocs/societe/rib.php index b4f5f6aea66..8cf57ec0b64 100644 --- a/htdocs/societe/rib.php +++ b/htdocs/societe/rib.php @@ -23,7 +23,7 @@ * \file htdocs/societe/rib.php * \ingroup societe * \brief BAN tab for companies - * \version $Id$ + * \version $Id: rib.php,v 1.36 2011/07/29 20:47:34 eldy Exp $ */ require("../main.inc.php"); @@ -73,7 +73,7 @@ if ($_POST["action"] == 'update' && ! $_POST["cancel"]) $result = $account->update($user); if (! $result) { - $message=$account->error(); + $message=$account->error; $_GET["action"]='edit'; // Force chargement page edition } else @@ -272,5 +272,5 @@ if ($_GET["socid"] && $_GET["action"] == 'edit' && $user->rights->societe->creer $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/29 20:47:34 $ - $Revision: 1.36 $'); ?>