From f816fae86cfd523dfb3c57888100666f11c8ee7d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 20 Apr 2020 12:21:13 +0200 Subject: [PATCH] Fix a duplicated index --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 5 +++++ htdocs/install/mysql/migration/3.5.0-3.6.0.sql | 4 ---- htdocs/product/class/product.class.php | 2 +- .../product/stock/class/mouvementstock.class.php | 16 ++++++++-------- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 628b298329d..681731e27a5 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -45,6 +45,11 @@ UPDATE llx_accounting_system SET fk_country = NULL, active = 0 WHERE pcg_version -- For v12 + +-- Delete an old index that is duplicated +-- VMYSQL4.1 DROP INDEX ix_fk_product_stock on llx_product_batch; +-- VPGSQL8.2 DROP INDEX ix_fk_product_stock + DELETE FROM llx_menu where module='supplier_proposal'; UPDATE llx_website SET lang = 'en' WHERE lang like 'en_%'; diff --git a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql index 65752a542ca..5727b946bcb 100644 --- a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql +++ b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql @@ -216,10 +216,6 @@ ALTER TABLE llx_expeditiondet_batch ADD INDEX idx_fk_expeditiondet (fk_expeditio ALTER TABLE llx_expeditiondet_batch ADD CONSTRAINT fk_expeditiondet_batch_fk_expeditiondet FOREIGN KEY (fk_expeditiondet) REFERENCES llx_expeditiondet(rowid); -ALTER TABLE llx_product_batch ADD INDEX ix_fk_product_stock (fk_product_stock); -ALTER TABLE llx_product_batch ADD CONSTRAINT fk_product_batch_fk_product_stock FOREIGN KEY (fk_product_stock) REFERENCES llx_product_stock (rowid); - - -- New 1074 : Stock mouvement link to origin ALTER TABLE llx_stock_mouvement ADD fk_origin integer; ALTER TABLE llx_stock_mouvement ADD origintype VARCHAR(32); diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 8fac5fb3028..c37dbaeb3f7 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4734,7 +4734,7 @@ class Product extends CommonObject $op[1] = "-".trim($nbpiece); $movementstock = new MouvementStock($this->db); - $movementstock->setOrigin($origin_element, $origin_id); + $movementstock->setOrigin($origin_element, $origin_id); // Set ->origin and ->origin->id $result = $movementstock->_create($user, $this->id, $id_entrepot, $op[$movement], $movement, $price, $label, $inventorycode); if ($result >= 0) { diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index b7c92215e2a..5bbc3f9d92c 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -142,7 +142,7 @@ class MouvementStock extends CommonObject require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php'; - $langs->load("errors"); + $error = 0; dol_syslog(get_class($this)."::_create start userid=$user->id, fk_product=$fk_product, warehouse_id=$entrepot_id, qty=$qty, type=$type, price=$price, label=$label, inventorycode=$inventorycode, datem=".$datem.", eatby=".$eatby.", sellby=".$sellby.", batch=".$batch.", skip_batch=".$skip_batch); @@ -408,13 +408,13 @@ class MouvementStock extends CommonObject $sql .= " ".($batch ? "'".$batch."'" : "null").", "; $sql .= " ".($eatby ? "'".$this->db->idate($eatby)."'" : "null").", "; $sql .= " ".($sellby ? "'".$this->db->idate($sellby)."'" : "null").", "; - $sql .= " ".$this->entrepot_id.", ".$this->qty.", ".$this->type.","; + $sql .= " ".$this->entrepot_id.", ".$this->qty.", ".((int) $this->type).","; $sql .= " ".$user->id.","; $sql .= " '".$this->db->escape($label)."',"; $sql .= " ".($inventorycode ? "'".$this->db->escape($inventorycode)."'" : "null").","; - $sql .= " '".price2num($price)."',"; - $sql .= " '".$fk_origin."',"; - $sql .= " '".$origintype."',"; + $sql .= " ".price2num($price).","; + $sql .= " ".$fk_origin.","; + $sql .= " '".$this->db->escape($origintype)."',"; $sql .= " ".$fk_project; $sql .= ")"; @@ -438,7 +438,7 @@ class MouvementStock extends CommonObject $oldpmp = $product->pmp; $oldqtywarehouse = 0; - // Test if there is already a record for couple (warehouse / product) + // Test if there is already a record for couple (warehouse / product), so later we will make an update or create. $alreadyarecord = 0; if (!$error) { @@ -486,7 +486,7 @@ class MouvementStock extends CommonObject } elseif ($type == 1 || $type == 2) { - // After a stock decrease, we don't change value of PMP for product. + // After a stock decrease, we don't change value of the AWP/PMP of a product. $newpmp = $oldpmp; } else @@ -543,7 +543,7 @@ class MouvementStock extends CommonObject // $sql = "UPDATE ".MAIN_DB_PREFIX."product SET pmp = ".$newpmp.", stock = ".$this->db->ifsql("stock IS NULL", 0, "stock") . " + ".$qty; // $sql.= " WHERE rowid = ".$fk_product; // Update pmp + denormalized fields because we change content of produt_stock. Warning: Do not use "SET p.stock", does not works with pgsql - $sql = "UPDATE ".MAIN_DB_PREFIX."product as p SET pmp = ".$newpmp.", "; + $sql = "UPDATE ".MAIN_DB_PREFIX."product as p SET pmp = ".$newpmp.","; $sql .= " stock=(SELECT SUM(ps.reel) FROM ".MAIN_DB_PREFIX."product_stock as ps WHERE ps.fk_product = p.rowid)"; $sql .= " WHERE rowid = ".$fk_product;