From 10e632375f7940a6edc120f15614eeb61d57d626 Mon Sep 17 00:00:00 2001 From: simnandez Date: Fri, 13 Jul 2012 14:40:51 +0200 Subject: [PATCH 1/2] Fix: Bad local taxes if price base type is TTC --- htdocs/core/lib/price.lib.php | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index 11161c32258..58b03485b2c 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -94,14 +94,14 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $txlocalta //Local taxes if ($txlocaltax1>0) { - $result[14] = price2num(($tot_sans_remise * (1 + ( $txlocaltax1 / 100))) - $tot_sans_remise, 'MT'); - $result[8] = price2num($result[8] + $result[14], 'MT'); + $result[14] = price2num(($result[6] * ( 1 + ( $txlocaltax1 / 100))) - $result[6], 'MT'); + $result[8] = $result[8] + $result[14]; - $result[9] = price2num(($tot_avec_remise * (1 + ( $txlocaltax1 / 100))) - $tot_avec_remise, 'MT'); - $result[2] = price2num($result[2] + $result[9], 'MT'); + $result[9] = price2num(($result[0] * ( 1 + ( $txlocaltax1 / 100))) - $result[0], 'MT'); + $result[2] = $result[2] + $result[9]; - $result[11] = price2num(($pu * (1 + ( $txlocaltax1 / 100))) - $pu, 'MT'); - $result[5] = price2num($result[5] + $result[11], 'MT'); + $result[11] = price2num(($result[3] * ( 1 + ( $txlocaltax1 / 100))) - $pu, 'MT'); + $result[5] = $result[5] + $result[11]; } else { @@ -112,22 +112,22 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $txlocalta if ($txlocaltax2>0) { - $result[15] = price2num(($tot_sans_remise * (1 + ( $txlocaltax2 / 100))) - $tot_sans_remise, 'MT'); - $result[10] = price2num(($tot_avec_remise * (1 + ( $txlocaltax2 / 100))) - $tot_avec_remise, 'MT'); - $result[12] = price2num(($pu * (1 + ( $txlocaltax2 / 100))) - $pu, 'MT'); + $result[15] = price2num(($result[6] * ( 1 + ( $txlocaltax2 / 100))) - $result[6], 'MT'); + $result[10] = price2num(($result[0] * ( 1 + ( $txlocaltax2 / 100))) - $result[0], 'MT'); + $result[12] = price2num(($result[3] * ( 1 + ( $txlocaltax2 / 100))) - $pu, 'MT'); //If Country is Spain, localtax2 (IRPF) will be subtracted - if ($mysoc->country_code=='ES') + if ($mysoc->pays_code=='ES') { - $result[8] = price2num($result[8] - $result[15], 'MT'); - $result[2] = price2num($result[2] - $result[10], 'MT'); - $result[5] = price2num($result[5] - $result[12], 'MU'); + $result[8] = $result[8] - $result[15]; + $result[2] = $result[2] - $result[10]; + $result[5] = $result[5] - $result[12]; } else { - $result[8] = price2num($result[8] + $result[15], 'MT'); - $result[2] = price2num($result[2] + $result[10], 'MT'); - $result[5] = price2num($result[5] + $result[12], 'MU'); + $result[8] = $result[8] + $result[15]; + $result[2] = $result[2] + $result[10]; + $result[5] = $result[5] + $result[12]; } } else @@ -136,7 +136,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $txlocalta $result[10] = 0; $result[12] = 0; } - + // If rounding is not using base 10 (rare) if (! empty($conf->global->MAIN_ROUNDING_RULE_TOT)) { From 80147137957782fac75f4d4d919d21ae4782aeb0 Mon Sep 17 00:00:00 2001 From: simnandez Date: Fri, 13 Jul 2012 15:02:02 +0200 Subject: [PATCH 2/2] Fix: Bad local taxes if price base type is TTC --- htdocs/core/lib/price.lib.php | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index 58b03485b2c..18a4b49533d 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -95,13 +95,14 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $txlocalta if ($txlocaltax1>0) { $result[14] = price2num(($result[6] * ( 1 + ( $txlocaltax1 / 100))) - $result[6], 'MT'); - $result[8] = $result[8] + $result[14]; + $result[8] = price2num($result[8] + $result[14], 'MT'); $result[9] = price2num(($result[0] * ( 1 + ( $txlocaltax1 / 100))) - $result[0], 'MT'); - $result[2] = $result[2] + $result[9]; + $result[2] = price2num($result[2] + $result[9], 'MT'); $result[11] = price2num(($result[3] * ( 1 + ( $txlocaltax1 / 100))) - $pu, 'MT'); - $result[5] = $result[5] + $result[11]; + $result[5] = price2num($result[5] + $result[11], 'MT'); + } else { @@ -111,23 +112,23 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $txlocalta } if ($txlocaltax2>0) - { - $result[15] = price2num(($result[6] * ( 1 + ( $txlocaltax2 / 100))) - $result[6], 'MT'); - $result[10] = price2num(($result[0] * ( 1 + ( $txlocaltax2 / 100))) - $result[0], 'MT'); + { + $result[15] = price2num(($result[6] * ( 1 + ( $txlocaltax2 / 100))) - $result[6], 'MT'); + $result[10] = price2num(($result[0] * ( 1 + ( $txlocaltax2 / 100))) - $result[0], 'MT'); $result[12] = price2num(($result[3] * ( 1 + ( $txlocaltax2 / 100))) - $pu, 'MT'); //If Country is Spain, localtax2 (IRPF) will be subtracted - if ($mysoc->pays_code=='ES') + if ($mysoc->country_code=='ES') { - $result[8] = $result[8] - $result[15]; - $result[2] = $result[2] - $result[10]; - $result[5] = $result[5] - $result[12]; + $result[8] = price2num($result[8] - $result[15], 'MT'); + $result[2] = price2num($result[2] - $result[10], 'MT'); + $result[5] = price2num($result[5] - $result[12], 'MU'); } else { - $result[8] = $result[8] + $result[15]; - $result[2] = $result[2] + $result[10]; - $result[5] = $result[5] + $result[12]; + $result[8] = price2num($result[8] + $result[15], 'MT'); + $result[2] = price2num($result[2] + $result[10], 'MT'); + $result[5] = price2num($result[5] + $result[12], 'MU'); } } else @@ -136,7 +137,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $txlocalta $result[10] = 0; $result[12] = 0; } - + // If rounding is not using base 10 (rare) if (! empty($conf->global->MAIN_ROUNDING_RULE_TOT)) {