// returns the price of a given item minus any included taxes
// for item $stock_id with line price $price,
// with applicable tax rates $tax_group_array or group id $tax_group
-//
function get_tax_free_price_for_item($stock_id, $price, $tax_group, $tax_included, $tax_group_array=null)
{
if ($tax_array == null)
return $price;
- $tax_multiplier = 0;
+ $tax_multiplier = 0;
- // loop for all items
+ // loop for all taxes
foreach ($tax_array as $taxitem)
{
- $tax_multiplier += $taxitem["rate"];
+ $tax_multiplier += $taxitem["rate"];
}
+
return round($price / (1 + ($tax_multiplier / 100)), user_price_dec());
}
//
{
foreach ($item_taxes as $item_tax)
{
- $index = $item_tax['tax_type_id'];
- if($tax_included==1) {// 2008-11-26 Joe Hunt Taxes are stored without roundings
- $nprice = get_tax_free_price_for_item($items[$i], $prices[$i], $tax_group, $tax_included);
- $ret_tax_array[$index]['Value'] += $prices[$i]-$nprice;
- $ret_tax_array[$index]['Net'] += $nprice;
- } else {
- $ret_tax_array[$index]['Value'] += ($prices[$i] * $item_tax['rate'] / 100);
- $ret_tax_array[$index]['Net'] += $prices[$i];
+ if ($item_tax['rate'] != null) {
+ $index = $item_tax['tax_type_id'];
+ if($tax_included==1) {// 2008-11-26 Joe Hunt Taxes are stored without roundings
+ $nprice = get_tax_free_price_for_item($items[$i], $prices[$i], $tax_group, $tax_included, null, $item_tax['tax_type_id']);
+ $ret_tax_array[$index]['Value'] += $nprice*$item_tax['rate']/100;
+ $ret_tax_array[$index]['Net'] += $nprice;
+ } else {
+ $ret_tax_array[$index]['Value'] += ($prices[$i] * $item_tax['rate'] / 100);
+ $ret_tax_array[$index]['Net'] += $prices[$i];
+ }
}
}
}
}
-
+
// add the shipping taxes, only if non-zero, and only if tax group taxes shipping
if ($shipping_cost != 0)
{
}
}
$shipping_net = round2($shipping_cost / (1 + ($tax_rate / 100)), user_price_dec());
- }
+ }
foreach ($item_taxes as $item_tax)
{
- $index = $item_tax['tax_type_id'];
- if(isset($ret_tax_array[$index])) {
- if($tax_included==1) {// 2008-11-26 Joe Hunt Taxes are stored without roundings
- $ret_tax_array[$index]['Value'] += ($shipping_net * $item_tax['rate'] / 100);
- $ret_tax_array[$index]['Net'] += $shipping_net;
- } else {
- $ret_tax_array[$index]['Value'] += ($shipping_cost * $item_tax['rate'] / 100);
- $ret_tax_array[$index]['Net'] += $shipping_cost;
- }
+ if ($item_tax['rate'] != null) {
+ $index = $item_tax['tax_type_id'];
+ if(isset($ret_tax_array[$index])) {
+ if($tax_included==1) {// 2008-11-26 Joe Hunt Taxes are stored without roundings
+ $ret_tax_array[$index]['Value'] += ($shipping_net * $item_tax['rate'] / 100);
+ $ret_tax_array[$index]['Net'] += $shipping_net;
+ } else {
+ $ret_tax_array[$index]['Value'] += ($shipping_cost * $item_tax['rate'] / 100);
+ $ret_tax_array[$index]['Net'] += $shipping_cost;
+ }
+ }
}
}
}