diff --git a/htdocs/admin/proxy.php b/htdocs/admin/proxy.php
index f02e3d6203a..2c284c5cae8 100755
--- a/htdocs/admin/proxy.php
+++ b/htdocs/admin/proxy.php
@@ -12,15 +12,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see .
*/
/**
* \file htdocs/admin/proxy.php
* \ingroup core
* \brief Page setup proxy to use for external web access
- * \version $Id: proxy.php,v 1.6 2011/07/29 21:04:27 eldy Exp $
+ * \version $Id: proxy.php,v 1.7 2011/07/31 22:23:24 eldy Exp $
*/
require("../main.inc.php");
@@ -206,5 +205,5 @@ dol_htmloutput_mesg($mesg);
$db->close();
-llxFooter('$Date: 2011/07/29 21:04:27 $ - $Revision: 1.6 $');
+llxFooter('$Date: 2011/07/31 22:23:24 $ - $Revision: 1.7 $');
?>
diff --git a/htdocs/admin/security_other.php b/htdocs/admin/security_other.php
index c0aaaa86213..c1d629f7b7b 100644
--- a/htdocs/admin/security_other.php
+++ b/htdocs/admin/security_other.php
@@ -13,15 +13,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see .
*/
/**
* \file htdocs/admin/security_other.php
* \ingroup core
* \brief Security options setup
- * \version $Id: security_other.php,v 1.40 2011/07/29 21:04:27 eldy Exp $
+ * \version $Id: security_other.php,v 1.41 2011/07/31 22:23:22 eldy Exp $
*/
require("../main.inc.php");
@@ -348,5 +347,5 @@ $formfile->form_attach_new_file(DOL_URL_ROOT.'/admin/security_other.php',$langs-
$db->close();
-llxFooter('$Date: 2011/07/29 21:04:27 $ - $Revision: 1.40 $');
+llxFooter('$Date: 2011/07/31 22:23:22 $ - $Revision: 1.41 $');
?>
diff --git a/htdocs/compta/bank/bankid_fr.php b/htdocs/compta/bank/bankid_fr.php
index 5ba2ef8997e..0c262ba2936 100644
--- a/htdocs/compta/bank/bankid_fr.php
+++ b/htdocs/compta/bank/bankid_fr.php
@@ -15,15 +15,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see .
*/
/**
* \file htdocs/compta/bank/bankid_fr.php
* \ingroup banque
* \brief Fiche creation compte bancaire
- * \version $Id: bankid_fr.php,v 1.27 2011/07/29 20:47:35 eldy Exp $
+ * \version $Id: bankid_fr.php,v 1.28 2011/07/31 22:23:20 eldy Exp $
*/
require("./pre.inc.php");
@@ -386,5 +385,5 @@ if ($_GET["id"] && $_GET["action"] == 'edit' && $user->rights->banque->configure
$db->close();
-llxFooter('$Date: 2011/07/29 20:47:35 $ - $Revision: 1.27 $');
+llxFooter('$Date: 2011/07/31 22:23:20 $ - $Revision: 1.28 $');
?>
diff --git a/htdocs/compta/bank/fiche.php b/htdocs/compta/bank/fiche.php
index 9ee1f551048..525160df9ef 100644
--- a/htdocs/compta/bank/fiche.php
+++ b/htdocs/compta/bank/fiche.php
@@ -15,15 +15,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see .
*/
/**
* \file htdocs/compta/bank/fiche.php
* \ingroup banque
* \brief Page to create/view a bank account
- * \version $Id: fiche.php,v 1.77 2011/07/29 20:47:35 eldy Exp $
+ * \version $Id: fiche.php,v 1.78 2011/07/31 22:23:16 eldy Exp $
*/
require("./pre.inc.php");
@@ -608,5 +607,5 @@ else
$db->close();
-llxFooter('$Date: 2011/07/29 20:47:35 $ - $Revision: 1.77 $');
+llxFooter('$Date: 2011/07/31 22:23:16 $ - $Revision: 1.78 $');
?>
diff --git a/htdocs/compta/prelevement/create.php b/htdocs/compta/prelevement/create.php
index 689e2639773..79d00ae00c7 100644
--- a/htdocs/compta/prelevement/create.php
+++ b/htdocs/compta/prelevement/create.php
@@ -15,14 +15,13 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see .
*/
/**
* \file htdocs/compta/prelevement/create.php
* \brief Prelevement
- * \version $Id: create.php,v 1.34 2011/07/29 21:15:39 eldy Exp $
+ * \version $Id: create.php,v 1.35 2011/07/31 22:23:29 eldy Exp $
*/
require("../bank/pre.inc.php");
@@ -276,5 +275,5 @@ else
$db->close();
-llxFooter('$Date: 2011/07/29 21:15:39 $ - $Revision: 1.34 $');
+llxFooter('$Date: 2011/07/31 22:23:29 $ - $Revision: 1.35 $');
?>
diff --git a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql
index e32055ea452..cdc633ca281 100755
--- a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql
+++ b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql
@@ -1,5 +1,5 @@
--
--- $Id: 3.0.0-3.1.0.sql,v 1.84 2011/07/29 19:59:10 eldy Exp $
+-- $Id: 3.0.0-3.1.0.sql,v 1.83 2011/07/28 22:22:32 eldy Exp $
--
-- Be carefull to requests order.
-- This file must be loaded by calling /install/index.php page
@@ -131,9 +131,6 @@ ALTER TABLE llx_usergroup_user ADD CONSTRAINT fk_usergroup_user_fk_user FOR
-- V4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup);
ALTER TABLE llx_usergroup_user ADD CONSTRAINT fk_usergroup_user_fk_usergroup FOREIGN KEY (fk_usergroup) REFERENCES llx_usergroup (rowid);
--- V4.1 DELETE FROM llx_product_fournisseur where fk_product NOT IN (SELECT rowid from llx_product);
-ALTER TABLE llx_product_fournisseur ADD CONSTRAINT fk_product_fournisseur_fk_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid);
-
ALTER TABLE llx_commande ADD COLUMN ref_int varchar(30) AFTER ref_ext;
ALTER TABLE llx_facture ADD COLUMN ref_int varchar(30) AFTER ref_ext;
ALTER TABLE llx_societe ADD COLUMN ref_int varchar(60) AFTER ref_ext;
@@ -483,4 +480,3 @@ ALTER TABLE llx_don ADD phone_mobile varchar(24) after email;
ALTER TABLE llx_don ADD phone varchar(24) after email;
ALTER TABLE llx_user ADD civilite varchar(6) after entity;
-
diff --git a/htdocs/install/mysql/tables/llx_product_fournisseur.key.sql b/htdocs/install/mysql/tables/llx_product_fournisseur.key.sql
index 612755ce349..8925d93d301 100644
--- a/htdocs/install/mysql/tables/llx_product_fournisseur.key.sql
+++ b/htdocs/install/mysql/tables/llx_product_fournisseur.key.sql
@@ -1,6 +1,6 @@
-- ============================================================================
-- Copyright (C) 2002-2004 Rodolphe Quiedeville
--- Copyright (C) 2004-2011 Laurent Destailleur
+-- Copyright (C) 2004-2005 Laurent Destailleur
-- Copyright (C) 2005-2009 Regis Houssin
--
-- This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--
--- $Id: llx_product_fournisseur.key.sql,v 1.3 2011/07/29 19:59:33 eldy Exp $
+-- $Id: llx_product_fournisseur.key.sql,v 1.2 2011/07/29 06:58:52 tiaris Exp $
-- ============================================================================
@@ -26,4 +26,4 @@ ALTER TABLE llx_product_fournisseur ADD UNIQUE INDEX uk_product_fournisseur_ref
ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_product (fk_product, entity);
ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_soc (fk_soc, entity);
-ALTER TABLE llx_product_fournisseur ADD CONSTRAINT fk_product_fournisseur_fk_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid);
+ALTER TABLE llx_product_fournisseur ADD CONSTRAINT fk_product_fournisseur_fk_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid);
diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php
index 1da2adb751e..d6f7baf831e 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.47 2011/07/29 20:47:35 eldy Exp $
+ * \version $Id: product.class.php,v 1.46 2011/07/29 06:59:36 tiaris Exp $
*/
require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php");
@@ -191,15 +191,14 @@ class Product extends CommonObject
/**
* Insert product into database
- * @param user User making insert
- * @param notrigger Disable triggers
- * @return int Id of product/service if OK or number of error < 0
+ * @param user User making insert
+ * @return int id of product/service if OK or number of error < 0
*/
- function create($user,$notrigger=0)
+ function create($user)
{
- global $conf, $langs;
+ global $conf ;
- $error=0;
+ $this->errno = 0;
// Clean parameters
$this->ref = dol_string_nospecial(trim($this->ref));
@@ -251,149 +250,172 @@ 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);
-
- $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)
+ if ($this->ref)
{
- $obj = $this->db->fetch_object($result);
- if ($obj->nb == 0)
+ $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)
{
- // 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 )
+ $row = $this->db->fetch_array($result);
+ if ($row[0] == 0)
{
- $id = $this->db->last_insert_id(MAIN_DB_PREFIX."product");
+ // 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.= ")";
- if ($id > 0)
+ dol_syslog("Product::Create sql=".$sql);
+ $result = $this->db->query($sql);
+ if ( $result )
{
- $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;
+ $id = $this->db->last_insert_id(MAIN_DB_PREFIX."product");
- $result = $this->_log_price($user);
- if ($result > 0)
+ if ($id > 0)
{
- if ( $this->update($id, $user) > 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->catid > 0)
+ if ( $this->update($id, $user) > 0)
{
- require_once(DOL_DOCUMENT_ROOT ."/categories/class/categorie.class.php");
- $cat = new Categorie($this->db, $this->catid);
- $cat->add_type($this,"product");
+ 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);
}
}
else
{
- $error++;
- $this->error='ErrorFailedToUpdateRecord';
+ $this->error=$this->db->error();
+ $this->_setErrNo("Create",264,$this->error);
}
}
else
{
- $error++;
- $this->error=$this->db->lasterror();
+ $this->_setErrNo("Create",259);
}
}
else
{
- $error++;
- $this->error='ErrorFailedToGetInsertedId';
+ $this->error=$this->db->error();
+ $this->_setErrNo("Create",258,$this->error);
}
}
else
{
- $error++;
- $this->error=$this->db->lasterror();
+ // Le produit existe deja
+ $this->error='ErrorProductAlreadyExists';
}
}
else
{
- // Product already exists with this ref
- $langs->trans("Error")." : ".$langs->trans("ErrorProductAlreadyExists",$this->ref);
+ $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;
}
}
else
{
- $error++;
- $this->error=$this->db->lasterror();
+ $this->_setErrNo("Create",262);
+
+ return -2;
}
- 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;
- }
+ 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
* @param id Id of product
@@ -2139,7 +2161,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 a65f888ab11..efbd289cb3f 100644
--- a/htdocs/product/fiche.php
+++ b/htdocs/product/fiche.php
@@ -18,15 +18,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see .
*/
/**
* \file htdocs/product/fiche.php
* \ingroup product
* \brief Page to show product
- * \version $Id: fiche.php,v 1.373 2011/07/29 20:47:35 eldy Exp $
+ * \version $Id: fiche.php,v 1.374 2011/07/31 23:19:26 eldy Exp $
*/
require("../main.inc.php");
@@ -1646,6 +1645,6 @@ if ($product->id && $action == '' && $product->status)
$db->close();
-llxFooter('$Date: 2011/07/29 20:47:35 $ - $Revision: 1.373 $');
+llxFooter('$Date: 2011/07/31 23:19:26 $ - $Revision: 1.374 $');
?>
diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php
index 79601ea1031..8f373b577e8 100644
--- a/htdocs/societe/class/companybankaccount.class.php
+++ b/htdocs/societe/class/companybankaccount.class.php
@@ -13,15 +13,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see .
*/
/*
* \files htdocs/societe/class/companybankaccount.class.php
* \ingroup societe
* \brief File of class to manage bank accounts description of third parties
- * \version $Id: companybankaccount.class.php,v 1.10 2011/07/29 20:47:35 eldy Exp $
+ * \version $Id: companybankaccount.class.php,v 1.11 2011/07/31 23:22:58 eldy Exp $
*/
require_once(DOL_DOCUMENT_ROOT ."/compta/bank/class/account.class.php");
diff --git a/htdocs/societe/rib.php b/htdocs/societe/rib.php
index 8cf57ec0b64..724900dc500 100644
--- a/htdocs/societe/rib.php
+++ b/htdocs/societe/rib.php
@@ -15,15 +15,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program. If not, see .
*/
/**
* \file htdocs/societe/rib.php
* \ingroup societe
* \brief BAN tab for companies
- * \version $Id: rib.php,v 1.36 2011/07/29 20:47:34 eldy Exp $
+ * \version $Id: rib.php,v 1.37 2011/07/31 23:22:56 eldy Exp $
*/
require("../main.inc.php");
@@ -272,5 +271,5 @@ if ($_GET["socid"] && $_GET["action"] == 'edit' && $user->rights->societe->creer
$db->close();
-llxFooter('$Date: 2011/07/29 20:47:34 $ - $Revision: 1.36 $');
+llxFooter('$Date: 2011/07/31 23:22:56 $ - $Revision: 1.37 $');
?>