From acdf13d769f06eaab2a5d13df79aceb226c1e6ad Mon Sep 17 00:00:00 2001 From: atm-greg Date: Mon, 12 Aug 2019 15:08:15 +0200 Subject: [PATCH 1/3] add fk_projet on stock movements --- .../install/mysql/migration/7.0.0-8.0.0.sql | 2 ++ .../mysql/tables/llx_stock_mouvement.sql | 3 ++- .../stock/class/mouvementstock.class.php | 22 ++++++++++++++++--- htdocs/product/stock/mouvement.php | 17 ++++++++++++++ 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql index 380c64c28fc..7a6f837fd7f 100644 --- a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql +++ b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql @@ -562,3 +562,5 @@ ALTER TABLE llx_advtargetemailing DROP COLUMN fk_mailing; DROP TABLE llx_ticket_logs; ALTER TABLE llx_actioncomm MODIFY COLUMN code varchar(50); + +ALTER TABLE llx_stock_mouvement ADD COLUMN fk_projet INTEGER NOT NULL DEFAULT 0 AFTER model_pdf; diff --git a/htdocs/install/mysql/tables/llx_stock_mouvement.sql b/htdocs/install/mysql/tables/llx_stock_mouvement.sql index 1e78e7a9820..88d7aed98a7 100644 --- a/htdocs/install/mysql/tables/llx_stock_mouvement.sql +++ b/htdocs/install/mysql/tables/llx_stock_mouvement.sql @@ -35,5 +35,6 @@ create table llx_stock_mouvement inventorycode varchar(128), -- Code used to group different movement line into one operation (may be an inventory, a mass picking) fk_origin integer, origintype varchar(32), - model_pdf varchar(255) + model_pdf varchar(255), + fk_projet integer NOT NULL DEFAULT 0 )ENGINE=innodb; diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index 825034b87cb..268b2127d68 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -322,17 +322,31 @@ class MouvementStock extends CommonObject if ($movestock && $entrepot_id > 0) // Change stock for current product, change for subproduct is done after { + $fk_project = 0; if(!empty($this->origin)) { // This is set by caller for tracking reason $origintype = $this->origin->element; $fk_origin = $this->origin->id; + if($origintype == 'project') $fk_project = $fk_origin; + else + { + $res = $this->origin->fetch($fk_origin); + if ($res > 0) + { + if (!empty($this->origin->fk_project)) + { + $fk_project = $this->origin->fk_project; + } + } + } } else { $origintype = ''; $fk_origin = 0; + $fk_project = 0; } $sql = "INSERT INTO ".MAIN_DB_PREFIX."stock_mouvement("; $sql.= " datem, fk_product, batch, eatby, sellby,"; - $sql.= " fk_entrepot, value, type_mouvement, fk_user_author, label, inventorycode, price, fk_origin, origintype"; + $sql.= " fk_entrepot, value, type_mouvement, fk_user_author, label, inventorycode, price, fk_origin, origintype, fk_projet"; $sql.= ")"; $sql.= " VALUES ('".$this->db->idate($now)."', ".$this->product_id.", "; $sql.= " ".($batch?"'".$batch."'":"null").", "; @@ -344,7 +358,8 @@ class MouvementStock extends CommonObject $sql.= " ".($inventorycode?"'".$this->db->escape($inventorycode)."'":"null").","; $sql.= " '".price2num($price)."',"; $sql.= " '".$fk_origin."',"; - $sql.= " '".$origintype."'"; + $sql.= " '".$origintype."',"; + $sql.= " ". $fk_project; $sql.= ")"; dol_syslog(get_class($this)."::_create insert record into stock_mouvement", LOG_DEBUG); @@ -548,7 +563,8 @@ class MouvementStock extends CommonObject $sql .= " t.inventorycode,"; $sql .= " t.batch,"; $sql .= " t.eatby,"; - $sql .= " t.sellby"; + $sql .= " t.sellby,"; + $sql .= " t.fk_projet"; $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; $sql.= ' WHERE 1 = 1'; //if (null !== $ref) { diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index 331d39efccb..ca09469ca2d 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -109,6 +109,7 @@ $arrayfields=array( 'origin'=>array('label'=>$langs->trans("Origin"), 'checked'=>1), 'm.value'=>array('label'=>$langs->trans("Qty"), 'checked'=>1), 'm.price'=>array('label'=>$langs->trans("UnitPurchaseValue"), 'checked'=>0), + 'm.fk_projet'=>array('label'=>$langs->trans('Project'), 'checked'=>0) //'m.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), //'m.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500) ); @@ -442,6 +443,7 @@ $sql.= " e.ref as stock, e.rowid as entrepot_id, e.lieu,"; $sql.= " m.rowid as mid, m.value as qty, m.datem, m.fk_user_author, m.label, m.inventorycode, m.fk_origin, m.origintype,"; $sql.= " m.batch, m.price,"; $sql.= " m.type_mouvement,"; +$sql.= " m.fk_projet,"; $sql.= " pl.rowid as lotid, pl.eatby, pl.sellby,"; $sql.= " u.login, u.photo, u.lastname, u.firstname"; // Add fields from extrafields @@ -874,6 +876,13 @@ if ($resql) print '  '; print ''; } + if (! empty($arrayfields['m.fk_projet']['checked'])) + { + // Price + print ''; + print '  '; + print ''; + } // Extra fields @@ -918,6 +927,7 @@ if ($resql) if (! empty($arrayfields['origin']['checked'])) print_liste_field_titre($arrayfields['origin']['label'],$_SERVER["PHP_SELF"], "","",$param,"",$sortfield,$sortorder); if (! empty($arrayfields['m.value']['checked'])) print_liste_field_titre($arrayfields['m.value']['label'],$_SERVER["PHP_SELF"], "m.value","",$param,'align="right"',$sortfield,$sortorder); if (! empty($arrayfields['m.price']['checked'])) print_liste_field_titre($arrayfields['m.price']['label'],$_SERVER["PHP_SELF"], "m.price","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['m.fk_projet']['checked'])) print_liste_field_titre($arrayfields['m.fk_projet']['label'],$_SERVER["PHP_SELF"], "m.fk_projet","",$param,'align="right"',$sortfield,$sortorder); // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; @@ -1060,6 +1070,13 @@ if ($resql) if ($objp->price != 0) print price($objp->price); print ''; } + if (! empty($arrayfields['m.fk_projet']['checked'])) + { + // fk_projet + print ''; + if ($objp->fk_projet != 0) print $movement->get_origin($objp->fk_projet, 'project'); + print ''; + } // Action column print ''; if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined From 7c136e77ece52644d8029873601e3ea27956cd69 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Mon, 12 Aug 2019 15:18:40 +0200 Subject: [PATCH 2/3] bad migration file --- htdocs/install/mysql/migration/10.0.0-11.0.0.sql | 2 ++ htdocs/install/mysql/migration/7.0.0-8.0.0.sql | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/10.0.0-11.0.0.sql b/htdocs/install/mysql/migration/10.0.0-11.0.0.sql index 63a71d59f44..4f70af3b566 100644 --- a/htdocs/install/mysql/migration/10.0.0-11.0.0.sql +++ b/htdocs/install/mysql/migration/10.0.0-11.0.0.sql @@ -74,3 +74,5 @@ ALTER TABLE llx_payment_salary_extrafields ADD INDEX idx_payment_salary_extrafie ALTER TABLE llx_c_price_expression MODIFY COLUMN expression varchar(255) NOT NULL; UPDATE llx_bank_url set url = REPLACE( url, 'compta/salaries/', 'salaries/'); + +ALTER TABLE llx_stock_mouvement ADD COLUMN fk_projet INTEGER NOT NULL DEFAULT 0 AFTER model_pdf; diff --git a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql index 7a6f837fd7f..380c64c28fc 100644 --- a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql +++ b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql @@ -562,5 +562,3 @@ ALTER TABLE llx_advtargetemailing DROP COLUMN fk_mailing; DROP TABLE llx_ticket_logs; ALTER TABLE llx_actioncomm MODIFY COLUMN code varchar(50); - -ALTER TABLE llx_stock_mouvement ADD COLUMN fk_projet INTEGER NOT NULL DEFAULT 0 AFTER model_pdf; From b36df2303be281b4da982c37686f9ceb6e19b384 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 15 Aug 2019 19:26:46 +0200 Subject: [PATCH 3/3] Update movement_list.php --- htdocs/product/stock/movement_list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/stock/movement_list.php b/htdocs/product/stock/movement_list.php index a64a8baa70e..f62b732cf7e 100644 --- a/htdocs/product/stock/movement_list.php +++ b/htdocs/product/stock/movement_list.php @@ -943,7 +943,7 @@ if ($resql) print_liste_field_titre($arrayfields['m.price']['label'], $_SERVER["PHP_SELF"], "m.price", "", $param, '', $sortfield, $sortorder, 'right '); } if (! empty($arrayfields['m.fk_projet']['checked'])) { - print_liste_field_titre($arrayfields['m.fk_projet']['label'],$_SERVER["PHP_SELF"], "m.fk_projet","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($arrayfields['m.fk_projet']['label'], $_SERVER["PHP_SELF"], "m.fk_projet", "", $param, 'align="right"', $sortfield, $sortorder); } // Extra fields