From c213624c14c97d4538dcc19d31c2227868644d6c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 27 Jun 2017 16:42:37 +0200 Subject: [PATCH] Fix migration into product_lot --- htdocs/install/mysql/migration/repair.sql | 12 ++++- .../product/stock/class/productlot.class.php | 46 +++++++++---------- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index a5549d33b25..f9ec23d4f69 100755 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -31,6 +31,15 @@ -- Requests to clean corrupted data +-- VMYSQL4.1 INSERT IGNORE INTO llx_product_lot (entity, fk_product, batch, eatby, sellby, datec, fk_user_creat, fk_user_modif) SELECT DISTINCT e.entity, ps.fk_product, pb.batch, pb.eatby, pb.sellby, pb.tms, e.fk_user_author, e.fk_user_author from llx_product_batch as pb, llx_product_stock as ps, llx_entrepot as e WHERE pb.fk_product_stock = ps.rowid AND ps.fk_entrepot = e.rowid; +-- -- a tester VPGSQL9.5 INSERT IGNORE INTO llx_product_lot (entity, fk_product, batch, eatby, sellby, datec, fk_user_creat, fk_user_modif) SELECT DISTINCT e.entity, ps.fk_product, pb.batch, pb.eatby, pb.sellby, pb.tms, e.fk_user_author, e.fk_user_author from llx_product_batch as pb, llx_product_stock as ps, llx_entrepot as e WHERE pb.fk_product_stock = ps.rowid AND ps.fk_entrepot = e.rowid ON CONFLICT DO NOTHING; +-- -- avant 9.5 faire en variant x pour qu'au 2eme passage, le premier doublon soit dans la tabel cible +-- -- INSERT INTO llx_product_lot (entity, fk_product, batch, eatby, sellby, datec, fk_user_creat, fk_user_modif) +-- -- SELECT DISTINCT e.entity, ps.fk_product, pb.batch, pb.eatby, pb.sellby, pb.tms, e.fk_user_author, e.fk_user_author +-- -- from llx_product_batch as pb, llx_product_stock as ps, llx_entrepot as e +-- -- WHERE pb.fk_product_stock = ps.rowid AND ps.fk_entrepot = e.rowid +-- -- AND NOT EXISTS (SELECT 1 FROM llx_product_lot as b WHERE b.fk_product=ps.fk_product and pb.batch=b.batch) LIMIT x + UPDATE llx_user set api_key = null where api_key = ''; @@ -99,6 +108,8 @@ DELETE FROM llx_product_lot WHERE fk_product NOT IN (select rowid from llx_produ DELETE FROM llx_product_stock WHERE fk_product NOT IN (select rowid from llx_product); DELETE FROM llx_product_stock WHERE reel = 0 AND rowid NOT IN (SELECT fk_product_stock FROM llx_product_batch as pb); + + -- Merge splitted lines into one in table llx_product_batch DROP TABLE tmp_llx_product_batch; DROP TABLE tmp_llx_product_batch2; @@ -356,4 +367,3 @@ drop table tmp_c_shipment_mode; -- Backport a change of value into the hourly rate. -- update llx_projet_task_time as ptt set ptt.thm = (SELECT thm from llx_user as u where ptt.fk_user = u.rowid) where (ptt.thm is null) - \ No newline at end of file diff --git a/htdocs/product/stock/class/productlot.class.php b/htdocs/product/stock/class/productlot.class.php index f28f3fd00d3..78ea81bd41d 100644 --- a/htdocs/product/stock/class/productlot.class.php +++ b/htdocs/product/stock/class/productlot.class.php @@ -43,12 +43,12 @@ class Productlot extends CommonObject * @var string Name of table without prefix where object is stored */ public $table_element = 'product_lot'; - + public $picto='barcode'; - + public $isnolinkedbythird = 1; public $ismultientitymanaged = 1; - + /** * @var ProductlotLine[] Lines */ @@ -56,7 +56,7 @@ class Productlot extends CommonObject /** */ - + public $entity; public $fk_product; public $batch; @@ -70,7 +70,7 @@ class Productlot extends CommonObject /** */ - + /** * Constructor @@ -97,7 +97,7 @@ class Productlot extends CommonObject $error = 0; // Clean parameters - + if (isset($this->entity)) { $this->entity = trim($this->entity); } @@ -117,7 +117,7 @@ class Productlot extends CommonObject $this->import_key = trim($this->import_key); } - + // Check parameters // Put here code to add control on parameters values @@ -207,7 +207,7 @@ class Productlot extends CommonObject $sql .= " t.import_key"; $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; if ($product_id > 0 && $batch != '') { - $sql .= ' WHERE t.batch = ' . '\'' . $this->db->escape($batch) . '\' AND t.fk_product = ' . $product_id; + $sql .= " WHERE t.batch = '". $this->db->escape($batch) . "' AND t.fk_product = " . $product_id; } else { $sql .= ' WHERE t.rowid = ' . $id; } @@ -221,9 +221,9 @@ class Productlot extends CommonObject $this->id = $obj->rowid; $this->ref = $obj->rowid; //$this->ref = $obj->fk_product.'_'.$obj->batch; - + $this->batch = $obj->batch; - + $this->entity = $obj->entity; $this->fk_product = $obj->fk_product; $this->eatby = $this->db->jdate($obj->eatby); @@ -239,7 +239,7 @@ class Productlot extends CommonObject require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; $extrafields=new ExtraFields($this->db); $extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true); - $this->fetch_optionals($this->id,$extralabels); + $this->fetch_optionals($this->id,$extralabels); } $this->db->free($resql); @@ -271,7 +271,7 @@ class Productlot extends CommonObject dol_syslog(__METHOD__, LOG_DEBUG); // Clean parameters - + if (isset($this->entity)) { $this->entity = trim($this->entity); } @@ -437,8 +437,8 @@ class Productlot extends CommonObject return - 1; } } - - + + /** * Return label of status of object * @@ -449,7 +449,7 @@ class Productlot extends CommonObject { return $this->LibStatut(0,$mode); } - + /** * Return label of a given status * @@ -460,13 +460,13 @@ class Productlot extends CommonObject function LibStatut($statut,$mode=0) { global $langs; - + //$langs->load('stocks'); return ''; } - - + + /** * Return a link to the a lot card (with optionaly the picto) * Use this->id,this->lastname, this->firstname @@ -498,7 +498,7 @@ class Productlot extends CommonObject { $label.= '
' . $langs->trans('SellByDate') . ': ' . dol_print_date($this->sellby, 'day'); } - + $link = 'batch . $linkend; return $result; } - - - /** + + + /** * Initialise object with example values * Id must be 0 if object instance is a specimen * @@ -523,7 +523,7 @@ class Productlot extends CommonObject public function initAsSpecimen() { $this->id = 0; - + $this->entity = ''; $this->fk_product = ''; $this->batch = '';