fix bad rounding on margin calculation and display
This commit is contained in:
parent
d6b2d44350
commit
ba0273ccc4
@ -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
|
||||
|
||||
@ -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>';
|
||||
}
|
||||
|
||||
@ -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) { ?>
|
||||
|
||||
@ -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>";
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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";
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user