From 9be99b298783d796228f26cc29e670e91473d8c8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 9 Dec 2014 14:27:02 +0100 Subject: [PATCH] Fixed: We must use PMP of product. Not warehouse. --- htdocs/install/mysql/tables/llx_entrepot.sql | 2 +- .../mysql/tables/llx_product_stock.sql | 2 +- htdocs/product/stock/card.php | 16 +++++++------- htdocs/product/stock/list.php | 2 +- htdocs/product/stock/product.php | 21 ++++++++++--------- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_entrepot.sql b/htdocs/install/mysql/tables/llx_entrepot.sql index 1c49ac293f8..9e9bfc9c26f 100644 --- a/htdocs/install/mysql/tables/llx_entrepot.sql +++ b/htdocs/install/mysql/tables/llx_entrepot.sql @@ -33,7 +33,7 @@ create table llx_entrepot fk_departement integer, fk_pays integer DEFAULT 0, statut tinyint DEFAULT 1, -- 1 open, 0 close - valo_pmp float(12,4), -- valoristaion du stock en PMP + valo_pmp float(12,4), -- PMP value for this warehouse (deprecated. No sens for a warehouse) fk_user_author integer, import_key varchar(14) )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_product_stock.sql b/htdocs/install/mysql/tables/llx_product_stock.sql index 5d550aadb6d..99d7d27fb77 100644 --- a/htdocs/install/mysql/tables/llx_product_stock.sql +++ b/htdocs/install/mysql/tables/llx_product_stock.sql @@ -25,7 +25,7 @@ create table llx_product_stock fk_product integer NOT NULL, fk_entrepot integer NOT NULL, reel real, -- physical stock - pmp double(24,8) default 0 NOT NULL, -- PMP value for product in this warehouse + pmp double(24,8) default 0 NOT NULL, -- PMP value for product in this warehouse (deprecated. no sens for warehouse) import_key varchar(14) -- Import key )ENGINE=innodb; diff --git a/htdocs/product/stock/card.php b/htdocs/product/stock/card.php index 2a7f64ee475..39b778536b5 100644 --- a/htdocs/product/stock/card.php +++ b/htdocs/product/stock/card.php @@ -73,13 +73,13 @@ if ($action == 'add' && $user->rights->stock->creer) $object->town = GETPOST("town"); $object->country_id = GETPOST("country_id"); - if (! empty($object->libelle)) + if (! empty($object->libelle)) { $id = $object->create($user); if ($id > 0) { setEventMessage($langs->trans("RecordSaved")); - + if (! empty($backtopage)) { header("Location: ".$backtopage); @@ -180,9 +180,9 @@ if ($action == 'create') print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="backtopage" value="'.$backtopage.'">'; - + dol_fiche_head(); - + print '<table class="border" width="100%">'; // Ref @@ -225,7 +225,7 @@ if ($action == 'create') print '</table>'; dol_fiche_end(); - + print '<center><input type="submit" class="button" value="'.$langs->trans("Create").'"></center>'; print '</form>'; @@ -445,10 +445,10 @@ else $totalunit+=$objp->value; // Price buy PMP - print '<td align="right">'.price(price2num($objp->pmp,'MU')).'</td>'; + print '<td align="right">'.price(price2num($objp->ppmp,'MU')).'</td>'; // Total PMP - print '<td align="right">'.price(price2num($objp->pmp*$objp->value,'MT')).'</td>'; - $totalvalue+=price2num($objp->pmp*$objp->value,'MT'); + print '<td align="right">'.price(price2num($objp->ppmp*$objp->value,'MT')).'</td>'; + $totalvalue+=price2num($objp->ppmp*$objp->value,'MT'); // Price sell min if (empty($conf->global->PRODUIT_MULTIPRICES)) diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index c55466ebdb1..c85c501fa58 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -52,7 +52,7 @@ $year = strftime("%Y",time()); */ $sql = "SELECT e.rowid, e.label as ref, e.statut, e.lieu, e.address, e.zip, e.town, e.fk_pays,"; -$sql.= " SUM(ps.pmp * ps.reel) as estimatedvalue, SUM(p.price * ps.reel) as sellvalue"; +$sql.= " SUM(p.pmp * ps.reel) as estimatedvalue, SUM(p.price * ps.reel) as sellvalue"; $sql.= " FROM ".MAIN_DB_PREFIX."entrepot as e"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON e.rowid = ps.fk_entrepot"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON ps.fk_product = p.rowid"; diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index e7be28b96bd..616e91d1924 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -125,7 +125,7 @@ if ($action == "correct_stock" && ! $cancel) $product = new Product($db); $result=$product->fetch($id); } - if ($product->hasbatch()) + if ($product->hasbatch()) { $d_eatby=dol_mktime(12, 0, 0, $_POST['eatbymonth'], $_POST['eatbyday'], $_POST['eatbyyear']); $d_sellby=dol_mktime(12, 0, 0, $_POST['sellbymonth'], $_POST['sellbyday'], $_POST['sellbyyear']); @@ -140,7 +140,7 @@ if ($action == "correct_stock" && ! $cancel) $d_sellby, GETPOST('batch_number') ); // We do not change value of stock for a correction - } + } else { $result=$product->correct_stock( @@ -633,9 +633,9 @@ if ($resql) print '<td colspan="4">'.$entrepotstatic->getNomUrl(1).'</td>'; print '<td align="right">'.$obj->reel.($obj->reel<0?' '.img_warning():'').'</td>'; // PMP - print '<td align="right">'.(price2num($obj->pmp)?price2num($obj->pmp,'MU'):'').'</td>'; // Ditto : Show PMP from movement or from product + print '<td align="right">'.(price2num($product->pmp)?price2num($product->pmp,'MU'):'').'</td>'; // Ditto : Show PMP from movement or from product // Value purchase - print '<td align="right">'.(price2num($obj->pmp)?price(price2num($obj->pmp*$obj->reel,'MT')):'').'</td>'; // Ditto : Show PMP from movement or from product + print '<td align="right">'.(price2num($product->pmp)?price(price2num($product->pmp*$obj->reel,'MT')):'').'</td>'; // Ditto : Show PMP from movement or from product // Sell price print '<td align="right">'; if (empty($conf->global->PRODUIT_MULTI_PRICES)) print price(price2num($product->price,'MU'),1); @@ -647,15 +647,15 @@ if ($resql) else print $langs->trans("Variable"); print '</tr>'; ; $total += $obj->reel; - if (price2num($obj->pmp)) $totalwithpmp += $obj->reel; - $totalvalue = $totalvalue + ($obj->pmp*$obj->reel); // Ditto : Show PMP from movement or from product + if (price2num($product->pmp)) $totalwithpmp += $obj->reel; + $totalvalue = $totalvalue + ($product->pmp*$obj->reel); // Ditto : Show PMP from movement or from product $totalvaluesell = $totalvaluesell + ($product->price*$obj->reel); // Ditto : Show PMP from movement or from product //Batch Detail - if ((! empty($conf->productbatch->enabled)) && $product->hasbatch()) + if ((! empty($conf->productbatch->enabled)) && $product->hasbatch()) { $details=Productbatch::findAll($db,$obj->product_stock_id); if ($details<0) dol_print_error($db); - foreach ($details as $pdluo) + foreach ($details as $pdluo) { print "\n".'<tr><td></td>'; print '<td align="right">'.$pdluo->batch.'</td>'; @@ -670,14 +670,15 @@ if ($resql) } } else dol_print_error($db); + print '<tr class="liste_total"><td align="right" class="liste_total" colspan="4">'.$langs->trans("Total").':</td>'; print '<td class="liste_total" align="right">'.$total.'</td>'; print '<td class="liste_total" align="right">'; -print ($totalwithpmp?price(price2num(price2num($totalvalue,'MT')/$totalwithpmp,'MT')):' '); // This value may have rounding errors +print ($totalwithpmp?price(price2num($totalvalue/$totalwithpmp,'MU')):' '); // This value may have rounding errors print '</td>'; // Value purchase print '<td class="liste_total" align="right">'; -print price(price2num($totalvalue,'MT'),1); +print $totalvalue?price(price2num($totalvalue,'MT'),1):' '; print '</td>'; print '<td class="liste_total" align="right">'; if (empty($conf->global->PRODUIT_MULTI_PRICES)) print ($total?price($totalvaluesell/$total,1):' '); -- GitLab