// 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)), 2*user_price_dec());
+
+ return round($price / (1 + ($tax_multiplier / 100)), user_price_dec());
}
//
// Full price (incl. VAT) for item $stock_id with line price $price,
$tax_multiplier += $taxitem["rate"];
}
- return round($price * (1 + ($tax_multiplier / 100)), 2*user_price_dec());
+ 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
- //$ret_tax_array[$index]['Value'] += round($prices[$i] * $item_tax['rate']
- // / ($item_tax['rate'] + 100), user_price_dec());
- $ret_tax_array[$index]['Value'] += ($prices[$i] * $item_tax['rate'] / ($item_tax['rate'] + 100));
- $ret_tax_array[$index]['Net'] += ($prices[$i] * 100 / ($item_tax['rate'] + 100));
- } else {
- //$ret_tax_array[$index]['Value'] +=
- // round($prices[$i] * $item_tax['rate'] / 100, user_price_dec());
- $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)
{
$item_taxes = get_shipping_tax_as_array();
if ($item_taxes != null)
{
+ if ($tax_included == 1)
+ {
+ $tax_rate = 0;
+ foreach ($item_taxes as $item_tax)
+ {
+ $index = $item_tax['tax_type_id'];
+ if(isset($ret_tax_array[$index])) {
+ $tax_rate += $item_tax['rate'];
+ }
+ }
+ $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'] += round($shipping_cost * $item_tax['rate']
- // / ($item_tax['rate'] + 100), user_price_dec());
- $ret_tax_array[$index]['Value'] += ($shipping_cost * $item_tax['rate'] / ($item_tax['rate'] + 100));
- $ret_tax_array[$index]['Net'] += ($shipping_cost * 100 / ($item_tax['rate'] + 100));
- } else {
- //$ret_tax_array[$index]['Value'] +=
- // round($shipping_cost * $item_tax['rate'] / 100, user_price_dec());
- $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;
+ }
+ }
}
}
}
return $ret_tax_array;
}
-function is_tax_account($account_code)
-{
- $sql= "SELECT id FROM ".TB_PREF."tax_types WHERE
- sales_gl_code=".db_escape($account_code)." OR purchasing_gl_code=".db_escape($account_code);
- $result = db_query($sql, "checking account is tax account");
- if (db_num_rows($result) > 0) {
- $acct = db_fetch($result);
- return $acct['id'];
- } else
- return false;
-}
-
?>
\ No newline at end of file