diff --git a/ChangeLog b/ChangeLog index 319bde9bfa1b7f0733a70e00d0ffc85802331fe2..ac0f5d5e9c373fc17c1e0a3b9299d5d0f73c4240 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ -------------------------------------------------------------- English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 3.4.2 compared to 3.4.1 ***** +Fix: Bad rounding on margin calculations and display ***** ChangeLog for 3.4.1 compared to 3.4.0 ***** Fix: Display buying price on line edit when no supplier price is defined diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index f6a1d7ef32c201523c8d26b2a15111c4b2467e96..8343c219d3107acc59ca464d2f431de8c924909a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2,7 +2,7 @@ /* Copyright (C) 2006-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr> + * Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr> * Copyright (C) 2011-2012 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2012 Marcos GarcĂa <marcosgdf@gmail.com> * @@ -3175,14 +3175,14 @@ abstract class CommonObject } } if ($marginInfos['pa_products'] > 0) - $marginInfos['margin_rate_products'] = 100 * round($marginInfos['margin_on_products'] / $marginInfos['pa_products'],5); + $marginInfos['margin_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pa_products']; if ($marginInfos['pv_products'] > 0) - $marginInfos['mark_rate_products'] = 100 * round($marginInfos['margin_on_products'] / $marginInfos['pv_products'],5); + $marginInfos['mark_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pv_products']; if ($marginInfos['pa_services'] > 0) - $marginInfos['margin_rate_services'] = 100 * round($marginInfos['margin_on_services'] / $marginInfos['pa_services'],5); + $marginInfos['margin_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pa_services']; if ($marginInfos['pv_services'] > 0) - $marginInfos['mark_rate_services'] = 100 * round($marginInfos['margin_on_services'] / $marginInfos['pv_services'],5); + $marginInfos['mark_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pv_services']; // if credit note, margin = -1 * (abs(selling_price) - buying_price) if ($marginInfos['pv_total'] < 0) @@ -3190,9 +3190,9 @@ abstract class CommonObject else $marginInfos['total_margin'] = $marginInfos['pv_total'] - $marginInfos['pa_total']; if ($marginInfos['pa_total'] > 0) - $marginInfos['total_margin_rate'] = 100 * round($marginInfos['total_margin'] / $marginInfos['pa_total'],5); + $marginInfos['total_margin_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pa_total']; if ($marginInfos['pv_total'] > 0) - $marginInfos['total_mark_rate'] = 100 * round($marginInfos['total_margin'] / $marginInfos['pv_total'],5); + $marginInfos['total_mark_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pv_total']; return $marginInfos; } @@ -3209,6 +3209,8 @@ abstract class CommonObject if (! empty($user->societe_id)) return; + $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); + $marginInfo = $this->getMarginInfos($force_price); print '<table class="noborder" width="100%">'; @@ -3228,34 +3230,34 @@ abstract class CommonObject //if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) { print '<tr class="impair">'; print '<td>'.$langs->trans('MarginOnProducts').'</td>'; - print '<td align="right">'.price($marginInfo['pv_products']).'</td>'; - print '<td align="right">'.price($marginInfo['pa_products']).'</td>'; - print '<td align="right">'.price($marginInfo['margin_on_products']).'</td>'; + print '<td align="right">'.price($marginInfo['pv_products'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>'; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'n/a':price($marginInfo['margin_rate_products']).'%').'</td>'; + print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'n/a':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>'; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'n/a':price($marginInfo['mark_rate_products']).'%').'</td>'; + print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'n/a':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>'; print '</tr>'; print '<tr class="pair">'; print '<td>'.$langs->trans('MarginOnServices').'</td>'; - print '<td align="right">'.price($marginInfo['pv_services']).'</td>'; - print '<td align="right">'.price($marginInfo['pa_services']).'</td>'; - print '<td align="right">'.price($marginInfo['margin_on_services']).'</td>'; + print '<td align="right">'.price($marginInfo['pv_services'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['pa_services'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>'; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'n/a':price($marginInfo['margin_rate_services']).'%').'</td>'; + print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'n/a':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>'; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'n/a':price($marginInfo['mark_rate_services']).'%').'</td>'; + print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'n/a':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>'; print '</tr>'; //} print '<tr class="impair">'; print '<td>'.$langs->trans('TotalMargin').'</td>'; - print '<td align="right">'.price($marginInfo['pv_total']).'</td>'; - print '<td align="right">'.price($marginInfo['pa_total']).'</td>'; - print '<td align="right">'.price($marginInfo['total_margin']).'</td>'; + print '<td align="right">'.price($marginInfo['pv_total'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['pa_total'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>'; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'n/a':price($marginInfo['total_margin_rate']).'%').'</td>'; + print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'n/a':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>'; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'n/a':price($marginInfo['total_mark_rate']).'%').'</td>'; + print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'n/a':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>'; print '</tr>'; print '</table>'; } diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index dcb46ac1857b166643c524ec222f5139effed396..742a1ff7061a4bd5aa845e8f976731db39b689d4 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -1,7 +1,7 @@ <?php /* Copyright (C) 2010-2013 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2010-2011 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr> + * Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -120,14 +120,15 @@ <?php } if (! empty($conf->margin->enabled) && empty($user->societe_id)) { + $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); ?> <td align="right" class="nowrap"><?php echo price($line->pa_ht); ?></td> <?php if (! empty($conf->global->DISPLAY_MARGIN_RATES)) {?> - <td align="right" class="nowrap"><?php echo (($line->pa_ht == 0)?'n/a':price($line->marge_tx).'%'); ?></td> + <td align="right" class="nowrap"><?php echo (($line->pa_ht == 0)?'n/a':price($line->marge_tx, null, null, null, null, $rounding).'%'); ?></td> <?php } if (! empty($conf->global->DISPLAY_MARK_RATES)) {?> - <td align="right" class="nowrap"><?php echo price($line->marque_tx).'%'; ?></td> + <td align="right" class="nowrap"><?php echo price($line->marque_tx, null, null, null, null, $rounding).'%'; ?></td> <?php } } ?> <?php if ($line->special_code == 3) { ?> diff --git a/htdocs/margin/agentMargins.php b/htdocs/margin/agentMargins.php index dc858d66b76b15d8104ce30f2f6e73e764f3d8e8..9836b6408c3d5819a849a16e6a22c5893f57e947 100644 --- a/htdocs/margin/agentMargins.php +++ b/htdocs/margin/agentMargins.php @@ -172,9 +172,6 @@ if ($result) print_liste_field_titre($langs->trans("MarkRate"),$_SERVER["PHP_SELF"],"","","&agentid=".$agentid,'align="right"',$sortfield,$sortorder); print "</tr>\n"; - $cumul_achat = 0; - $cumul_vente = 0; - $cumul_qty = 0; $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); if ($num > 0) @@ -191,13 +188,13 @@ if ($result) if ($marge < 0) { - $marginRate = ($pa != 0)?-1*(100 * round($marge / $pa, 5)):'' ; - $markRate = ($pv != 0)?-1*(100 * round($marge / $pv, 5)):'' ; + $marginRate = ($pa != 0)?-1*(100 * $marge / $pa):'' ; + $markRate = ($pv != 0)?-1*(100 * $marge / $pv):'' ; } else { - $marginRate = ($pa != 0)?(100 * round($marge / $pa, 5)):'' ; - $markRate = ($pv != 0)?(100 * round($marge / $pv, 5)):'' ; + $marginRate = ($pa != 0)?(100 * $marge / $pa):'' ; + $markRate = ($pv != 0)?(100 * $marge / $pv):'' ; } $var=!$var; @@ -214,18 +211,16 @@ if ($result) print "<td>".$userstatic->getFullName($langs,0,0,0)."</td>\n"; } - print "<td align=\"right\">".price($pv)."</td>\n"; - print "<td align=\"right\">".price($pa)."</td>\n"; - print "<td align=\"right\">".price($marge)."</td>\n"; + print "<td align=\"right\">".price($pv, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($pa, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($marge, null, null, null, null, $rounding)."</td>\n"; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n"; + print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n"; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n"; + print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n"; print "</tr>\n"; $i++; - $cumul_achat += round($objp->buying_price, $rounding); - $cumul_vente += round($objp->selling_price, $rounding); } } print "</table>"; diff --git a/htdocs/margin/customerMargins.php b/htdocs/margin/customerMargins.php index c42f73bb87cb36854b147dd741228db76c85e3f7..e4f29260e09266103c8eb5ff175cda4b9bc169f1 100644 --- a/htdocs/margin/customerMargins.php +++ b/htdocs/margin/customerMargins.php @@ -213,7 +213,7 @@ if ($result) $cumul_achat = 0; $cumul_vente = 0; - $cumul_qty = 0; + $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); if ($num > 0) @@ -230,13 +230,13 @@ if ($result) if ($marge < 0) { - $marginRate = ($pa != 0)?-1*(100 * round($marge / $pa, 5)):'' ; - $markRate = ($pv != 0)?-1*(100 * round($marge / $pv, 5)):'' ; + $marginRate = ($pa != 0)?-1*(100 * $marge / $pa):'' ; + $markRate = ($pv != 0)?-1*(100 * $marge / $pv):'' ; } else { - $marginRate = ($pa != 0)?(100 * round($marge / $pa, 5)):'' ; - $markRate = ($pv != 0)?(100 * round($marge / $pv, 5)):'' ; + $marginRate = ($pa != 0)?(100 * $marge / $pa):'' ; + $markRate = ($pv != 0)?(100 * $marge / $pv):'' ; } $var=!$var; @@ -258,18 +258,18 @@ if ($result) print "<td>".$companystatic->getNomUrl(1,'customer')."</td>\n"; } - print "<td align=\"right\">".price($pv)."</td>\n"; - print "<td align=\"right\">".price($pa)."</td>\n"; - print "<td align=\"right\">".price($marge)."</td>\n"; + print "<td align=\"right\">".price($pv, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($pa, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($marge, null, null, null, null, $rounding)."</td>\n"; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n"; + print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n"; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n"; + print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n"; print "</tr>\n"; $i++; - $cumul_achat += round($objp->buying_price, $rounding); - $cumul_vente += round($objp->selling_price, $rounding); + $cumul_achat += $objp->buying_price; + $cumul_vente += $objp->selling_price; } } @@ -278,13 +278,13 @@ if ($result) $totalMargin = $cumul_vente - $cumul_achat; if ($totalMargin < 0) { - $marginRate = ($cumul_achat != 0)?-1*(100 * round($totalMargin / $cumul_achat, 5)):''; - $markRate = ($cumul_vente != 0)?-1*(100 * round($totalMargin / $cumul_vente, 5)):''; + $marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):''; } else { - $marginRate = ($cumul_achat != 0)?(100 * round($totalMargin / $cumul_achat, 5)):''; - $markRate = ($cumul_vente != 0)?(100 * round($totalMargin / $cumul_vente, 5)):''; + $marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):''; } print '<tr '.$bc[$var].' style="border-top: 1px solid #ccc; font-weight: bold">'; @@ -293,13 +293,13 @@ if ($result) else print '<td>'; print $langs->trans('TotalMargin')."</td>"; - print "<td align=\"right\">".price($cumul_vente)."</td>\n"; - print "<td align=\"right\">".price($cumul_achat)."</td>\n"; - print "<td align=\"right\">".price($totalMargin)."</td>\n"; + print "<td align=\"right\">".price($cumul_vente, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($cumul_achat, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($totalMargin, null, null, null, null, $rounding)."</td>\n"; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n"; + print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n"; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n"; + print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n"; print "</tr>\n"; print "</table>"; @@ -325,9 +325,9 @@ $(document).ready(function() { $("div.fiche form").submit(); }); - $("#totalMargin").html("<?php echo price($totalMargin); ?>"); - $("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate)."%"); ?>"); - $("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate)."%"); ?>"); + $("#totalMargin").html("<?php echo price($totalMargin, null, null, null, null, $rounding); ?>"); + $("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%"); ?>"); + $("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%"); ?>"); }); </script> diff --git a/htdocs/margin/lib/margins.lib.php b/htdocs/margin/lib/margins.lib.php index bfa5d530e295579f31910d9b2bf5899c0b5b8a4a..6d1ded0341914fe17513f99b7489198d32ace665 100644 --- a/htdocs/margin/lib/margins.lib.php +++ b/htdocs/margin/lib/margins.lib.php @@ -125,10 +125,10 @@ function getMarginInfos($pvht, $remise_percent, $tva_tx, $localtax1_tx, $localta // calcul taux marge if ($paht_ret != 0) - $marge_tx_ret = round((100 * $marge) / $paht_ret, 3); + $marge_tx_ret = (100 * $marge) / $paht_ret; // calcul taux marque if ($pu_ht_remise != 0) - $marque_tx_ret = round((100 * $marge) / $pu_ht_remise, 3); + $marque_tx_ret = (100 * $marge) / $pu_ht_remise; return array($paht_ret, $marge_tx_ret, $marque_tx_ret); } diff --git a/htdocs/margin/productMargins.php b/htdocs/margin/productMargins.php index 334f8f998bde924a14f716f11797fa109a3f9d48..931f2f54951b164ea5d583a3ba6e08cc3c8b36f4 100644 --- a/htdocs/margin/productMargins.php +++ b/htdocs/margin/productMargins.php @@ -217,7 +217,6 @@ if ($result) $cumul_achat = 0; $cumul_vente = 0; - $cumul_qty = 0; $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); if ($num > 0) @@ -233,13 +232,13 @@ if ($result) if ($marge < 0) { - $marginRate = ($pa != 0)?-1*(100 * round($marge / $pa, 5)):'' ; - $markRate = ($pv != 0)?-1*(100 * round($marge / $pv, 5)):'' ; + $marginRate = ($pa != 0)?-1*(100 * $marge / $pa):'' ; + $markRate = ($pv != 0)?-1*(100 * $marge / $pv):'' ; } else { - $marginRate = ($pa != 0)?(100 * round($marge / $pa, 5)):'' ; - $markRate = ($pv != 0)?(100 * round($marge / $pv, 5)):'' ; + $marginRate = ($pa != 0)?(100 * $marge / $pa):'' ; + $markRate = ($pv != 0)?(100 * $marge / $pv):'' ; } $var=!$var; @@ -263,18 +262,18 @@ if ($result) $text.= ' - '.$objp->label; print "<td>".$product_static->getNomUrl(1)."</td>\n"; } - print "<td align=\"right\">".price($pv)."</td>\n"; - print "<td align=\"right\">".price($pa)."</td>\n"; - print "<td align=\"right\">".price($marge)."</td>\n"; + print "<td align=\"right\">".price($pv, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($pa, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($marge, null, null, null, null, $rounding)."</td>\n"; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n"; + print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n"; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n"; + print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n"; print "</tr>\n"; $i++; - $cumul_achat += round($objp->buying_price, $rounding); - $cumul_vente += round($objp->selling_price, $rounding); + $cumul_achat += $objp->buying_price; + $cumul_vente += $objp->selling_price; } } @@ -284,13 +283,13 @@ if ($result) $totalMargin = $cumul_vente - $cumul_achat; if ($totalMargin < 0) { - $marginRate = ($cumul_achat != 0)?-1*(100 * round($totalMargin / $cumul_achat, 5)):''; - $markRate = ($cumul_vente != 0)?-1*(100 * round($totalMargin / $cumul_vente, 5)):''; + $marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):''; } else { - $marginRate = ($cumul_achat != 0)?(100 * round($totalMargin / $cumul_achat, 5)):''; - $markRate = ($cumul_vente != 0)?(100 * round($totalMargin / $cumul_vente, 5)):''; + $marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):''; } print '<tr '.$bc[$var].' style="border-top: 1px solid #ccc; font-weight: bold">'; if ($id > 0) @@ -298,13 +297,13 @@ if ($result) else print '<td>'; print $langs->trans('TotalMargin')."</td>"; - print "<td align=\"right\">".price($cumul_vente)."</td>\n"; - print "<td align=\"right\">".price($cumul_achat)."</td>\n"; - print "<td align=\"right\">".price($totalMargin)."</td>\n"; + print "<td align=\"right\">".price($cumul_vente, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($cumul_achat, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($totalMargin, null, null, null, null, $rounding)."</td>\n"; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n"; + print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n"; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n"; + print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n"; print "</tr>\n"; print "</table>"; @@ -332,9 +331,9 @@ $(document).ready(function() { $("div.fiche form").submit(); }); - $("#totalMargin").html("<?php echo price($totalMargin); ?>"); - $("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate)."%"); ?>"); - $("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate)."%"); ?>"); + $("#totalMargin").html("<?php echo price($totalMargin, null, null, null, null, $rounding); ?>"); + $("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%"); ?>"); + $("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%"); ?>"); }); </script> diff --git a/htdocs/margin/tabs/productMargins.php b/htdocs/margin/tabs/productMargins.php index 9b31514c7c91412730db324edb07d6302027f119..214cf72b86a8e106cde573169f9856ba0ddaf3eb 100644 --- a/htdocs/margin/tabs/productMargins.php +++ b/htdocs/margin/tabs/productMargins.php @@ -196,13 +196,13 @@ if ($id > 0 || ! empty($ref)) if ($objp->marge < 0) { - $marginRate = ($objp->buying_price != 0)?-1*(100 * round($objp->marge / $objp->buying_price, 5)):'' ; - $markRate = ($objp->selling_price != 0)?-1*(100 * round($objp->marge / $objp->selling_price, 5)):'' ; + $marginRate = ($objp->buying_price != 0)?-1*(100 * $objp->marge / $objp->buying_price):'' ; + $markRate = ($objp->selling_price != 0)?-1*(100 * $objp->marge / $objp->selling_price):'' ; } else { - $marginRate = ($objp->buying_price != 0)?(100 * round($objp->marge / $objp->buying_price, 5)):'' ; - $markRate = ($objp->selling_price != 0)?(100 * round($objp->marge / $objp->selling_price, 5)):'' ; + $marginRate = ($objp->buying_price != 0)?(100 * $objp->marge / $objp->buying_price):'' ; + $markRate = ($objp->selling_price != 0)?(100 * $objp->marge / $objp->selling_price):'' ; } print "<tr ".$bc[$var].">"; @@ -215,19 +215,19 @@ if ($id > 0 || ! empty($ref)) print "<td>".$objp->code_client."</td>\n"; print "<td align=\"center\">"; print dol_print_date($db->jdate($objp->datef),'day')."</td>"; - print "<td align=\"right\">".price($objp->selling_price)."</td>\n"; - print "<td align=\"right\">".price($objp->buying_price)."</td>\n"; - print "<td align=\"right\">".price($objp->qty)."</td>\n"; - print "<td align=\"right\">".price($objp->marge)."</td>\n"; + print "<td align=\"right\">".price($objp->selling_price, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($objp->buying_price, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($objp->qty, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($objp->marge, null, null, null, null, $rounding)."</td>\n"; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n"; + print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n"; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n"; + print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n"; print '<td align="right">'.$invoicestatic->LibStatut($objp->paye,$objp->statut,5).'</td>'; print "</tr>\n"; $i++; - $cumul_achat += round($objp->buying_price, $rounding); - $cumul_vente += round($objp->selling_price, $rounding); + $cumul_achat += $objp->buying_price; + $cumul_vente += $objp->selling_price; $cumul_qty += $objp->qty; } } @@ -237,24 +237,24 @@ if ($id > 0 || ! empty($ref)) $totalMargin = $cumul_vente - $cumul_achat; if ($totalMargin < 0) { - $marginRate = ($cumul_achat != 0)?-1*(100 * round($totalMargin / $cumul_achat, 5)):''; - $markRate = ($cumul_vente != 0)?-1*(100 * round($totalMargin / $cumul_vente, 5)):''; + $marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):''; } else { - $marginRate = ($cumul_achat != 0)?(100 * round($totalMargin / $cumul_achat, 5)):''; - $markRate = ($cumul_vente != 0)?(100 * round($totalMargin / $cumul_vente, 5)):''; + $marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):''; } print '<tr '.$bc[$var].' style="border-top: 1px solid #ccc; font-weight: bold">'; print '<td colspan=4>'.$langs->trans('TotalMargin')."</td>"; - print "<td align=\"right\">".price($cumul_vente)."</td>\n"; - print "<td align=\"right\">".price($cumul_achat)."</td>\n"; - print "<td align=\"right\">".price($cumul_qty)."</td>\n"; - print "<td align=\"right\">".price($totalMargin)."</td>\n"; + print "<td align=\"right\">".price($cumul_vente, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($cumul_achat, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($cumul_qty, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($totalMargin, null, null, null, null, $rounding)."</td>\n"; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n"; + print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n"; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n"; + print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n"; print '<td align="right"> </td>'; print "</tr>\n"; } @@ -278,8 +278,8 @@ $db->close(); ?> <script type="text/javascript"> $(document).ready(function() { - $("#totalMargin").html("<?php echo price($totalMargin); ?>"); - $("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate)."%"); ?>"); - $("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate)."%"); ?>"); + $("#totalMargin").html("<?php echo price($totalMargin, null, null, null, null, $rounding); ?>"); + $("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%"); ?>"); + $("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%"); ?>"); }); </script> diff --git a/htdocs/margin/tabs/thirdpartyMargins.php b/htdocs/margin/tabs/thirdpartyMargins.php index aead7467f83a0fc80c107a4eaeabf60709d4038c..ad2dcbe98116746b51d4a6b640a6262c7ff44fa4 100644 --- a/htdocs/margin/tabs/thirdpartyMargins.php +++ b/htdocs/margin/tabs/thirdpartyMargins.php @@ -175,7 +175,7 @@ if ($socid > 0) $cumul_achat = 0; $cumul_vente = 0; - $cumul_qty = 0; + $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); if ($num > 0) @@ -187,13 +187,13 @@ if ($socid > 0) if ($objp->marge < 0) { - $marginRate = ($objp->buying_price != 0)?-1*(100 * round($objp->marge / $objp->buying_price, 5)):'' ; - $markRate = ($objp->selling_price != 0)?-1*(100 * round($objp->marge / $objp->selling_price, 5)):'' ; + $marginRate = ($objp->buying_price != 0)?-1*(100 * $objp->marge / $objp->buying_price):'' ; + $markRate = ($objp->selling_price != 0)?-1*(100 * $objp->marge / $objp->selling_price):'' ; } else { - $marginRate = ($objp->buying_price != 0)?(100 * round($objp->marge / $objp->buying_price, 5)):'' ; - $markRate = ($objp->selling_price != 0)?(100 * round($objp->marge / $objp->selling_price, 5)):'' ; + $marginRate = ($objp->buying_price != 0)?(100 * $objp->marge / $objp->buying_price):'' ; + $markRate = ($objp->selling_price != 0)?(100 * $objp->marge / $objp->selling_price):'' ; } $var=!$var; @@ -206,18 +206,18 @@ if ($socid > 0) print "</td>\n"; print "<td align=\"center\">"; print dol_print_date($db->jdate($objp->datef),'day')."</td>"; - print "<td align=\"right\">".price($objp->selling_price)."</td>\n"; - print "<td align=\"right\">".price($objp->buying_price)."</td>\n"; - print "<td align=\"right\">".price($objp->marge)."</td>\n"; + print "<td align=\"right\">".price($objp->selling_price, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($objp->buying_price, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($objp->marge, null, null, null, null, $rounding)."</td>\n"; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n"; + print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n"; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n"; + print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n"; print '<td align="right">'.$invoicestatic->LibStatut($objp->paye,$objp->statut,5).'</td>'; print "</tr>\n"; $i++; - $cumul_achat += round($objp->buying_price, $rounding); - $cumul_vente += round($objp->selling_price, $rounding); + $cumul_achat += $objp->buying_price; + $cumul_vente += $objp->selling_price; } } @@ -226,23 +226,23 @@ if ($socid > 0) $totalMargin = $cumul_vente - $cumul_achat; if ($totalMargin < 0) { - $marginRate = ($cumul_achat != 0)?-1*(100 * round($totalMargin / $cumul_achat, 5)):''; - $markRate = ($cumul_vente != 0)?-1*(100 * round($totalMargin / $cumul_vente, 5)):''; + $marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):''; } else { - $marginRate = ($cumul_achat != 0)?(100 * round($totalMargin / $cumul_achat, 5)):''; - $markRate = ($cumul_vente != 0)?(100 * round($totalMargin / $cumul_vente, 5)):''; + $marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):''; } print '<tr '.$bc[$var].' style="border-top: 1px solid #ccc; font-weight: bold">'; print '<td colspan=2>'.$langs->trans('TotalMargin')."</td>"; - print "<td align=\"right\">".price($cumul_vente)."</td>\n"; - print "<td align=\"right\">".price($cumul_achat)."</td>\n"; - print "<td align=\"right\">".price($totalMargin)."</td>\n"; + print "<td align=\"right\">".price($cumul_vente, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($cumul_achat, null, null, null, null, $rounding)."</td>\n"; + print "<td align=\"right\">".price($totalMargin, null, null, null, null, $rounding)."</td>\n"; if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n"; + print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n"; if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n"; + print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n"; print '<td align="right"> </td>'; print "</tr>\n"; }