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 = '';
@@ -512,9 +512,9 @@ class Productlot extends CommonObject
$result.= $link . $this->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 = '';