Hallo Zusammen,
so hier mal ein Ansatz womit die Sache prozentual gesplittet wird, dann kann der modified eCommerce Shopsoftware Shop das schon fast...
In /includes/classes/order.php
Nach Z.479:
$this->info['tax'] += $shown_price_tax - ($shown_price_tax / (($products_tax <10) ?
"1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax))); $this->info['tax_groups'][TAX_ADD_TAX
."$products_tax_description"] += (($shown_price_tax /(100+$products_tax)) * $products_tax); das einfügen:
$this->info['shipping_tax_value'][(int)$products_tax_id] = $this->products[$index]['tax']; // franky_n - 2010-12-29 - Shipping costs split into tax rates
$this->info['shipping_tax_text'][(int)$products_tax_id] = TAX_NO_TAX . $products_tax_description; // franky_n - 2010-12-29 - Shipping costs split into tax rates
$this->info['shipping_tax_prices'][(int)$products_tax_id] += $shown_price; // franky_n - 2010-12-29 - Shipping costs split into tax rates
Nach Z.482:
$this->info['tax'] += $shown_price - ($shown_price / (($products_tax <10) ?
"1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax))); $this->info['tax_groups'][TAX_ADD_TAX
. "$products_tax_description"] += (($shown_price /(100+$products_tax)) * $products_tax); das einfügen:
$this->info['shipping_tax_value'][(int)$products_tax_id] = $this->products[$index]['tax']; // franky_n - 2010-12-29 - Shipping costs split into tax rates
$this->info['shipping_tax_text'][(int)$products_tax_id] = TAX_NO_TAX . $products_tax_description; // franky_n - 2010-12-29 - Shipping costs split into tax rates
$this->info['shipping_tax_prices'][(int)$products_tax_id] += $shown_price; // franky_n - 2010-12-29 - Shipping costs split into tax rates
In Z.490 das ersetzen:
$this->info['tax_groups'][TAX_NO_TAX . "$products_tax_description"] += ($shown_price_tax/100) * ($products_tax);
durch das:
$this->info['shipping_tax_value'][(int)$products_tax_id] = $this->products[$index]['tax']; // franky_n - 2010-12-29 - Shipping costs split into tax rates
$this->info['shipping_tax_text'][(int)$products_tax_id] = TAX_NO_TAX . $products_tax_description; // franky_n - 2010-12-29 - Shipping costs split into tax rates
$this->info['shipping_tax_prices'][(int)$products_tax_id] += $shown_price; // franky_n - 2010-12-29 - Shipping costs split into tax rates
Nach Z. 493:
$this->info['tax'] += ($shown_price/100) * ($products_tax);
$this->info['tax_groups'][TAX_NO_TAX . "$products_tax_description"] += ($shown_price/100) * ($products_tax);
das einfügen:
$this->info['shipping_tax_value'][(int)$products_tax_id] = $this->products[$index]['tax']; // franky_n - 2010-12-29 - Shipping costs split into tax rates
$this->info['shipping_tax_text'][(int)$products_tax_id] = TAX_NO_TAX . $products_tax_description; // franky_n - 2010-12-29 - Shipping costs split into tax rates
$this->info['shipping_tax_prices'][(int)$products_tax_id] += $shown_price; // franky_n - 2010-12-29 - Shipping costs split into tax rates
Nach Z.497:
$index++;
}
das einfügen:
// BOF - franky_n - 2010-12-29 - Shipping costs split into tax rates
foreach ($this->info['shipping_tax_value'] AS $shipping_tax_prices_key => $shipping_tax_prices_value) {
$groups_key = $this->info['shipping_tax_text'][$shipping_tax_prices_key]; // Tax text
$shipping_tax_products_value = $this->info['shipping_tax_value'][$shipping_tax_prices_key]; // Tax rate
$shipping_tax_products_prices = $this->info['shipping_tax_prices'][$shipping_tax_prices_key]; // Products in tax group
$shipping_tax_products_final_price = $this->info['subtotal']; // Complete order products
$shipping_tax_ratio = $shipping_tax_products_prices/$shipping_tax_products_final_price; // Ratio
$this->info['shipping_tax_groups'][$groups_key] = xtc_add_tax(($this->info['shipping_cost'] * $shipping_tax_ratio), $shipping_tax_products_value)-($this->info['shipping_cost'] * $shipping_tax_ratio);
}
// EOF - franky_n - 2010-12-29 - Shipping costs split into tax rates
Dann in der /includes/modules/order_total/ot_shipping.php
In Z.59 das:
// price with tax
$shipping_tax = xtc_get_tax_rate($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
$shipping_tax_description = xtc_get_tax_description($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
$tax = $xtPrice->xtcFormat(xtc_add_tax($order->info['shipping_cost'], $shipping_tax),false,0,false)-$order->info['shipping_cost'];
$tax = $xtPrice->xtcFormat($tax,false,0,true);
$order->info['shipping_cost'] = xtc_add_tax($order->info['shipping_cost'], $shipping_tax);
$order->info['tax'] += $tax;
$order->info['tax_groups'][TAX_ADD_TAX . "$shipping_tax_description"] += $tax;
$order->info['total'] += $tax;
ersetzen durch das:
define('AUTOMATIC_SHIPPING_TAX', 1); // <= DAS kann raus sobald Admin bereich da if(AUTOMATIC_SHIPPING_TAX
== 1) { //>= DAS muesste noch in den Admin Bereich (automatische Steuer oder fest eingestellt) // Automatic tax rates with different taxes - franky_n - 2010-12-29 // Tax rates in shop // key = number of tax percent // value = complete price for taxgroup reset($order->info['shipping_tax_groups']); $tax_value = 0; while (list($key, $value) = each($order->info['shipping_tax_groups'])) { if ($value> 0) { if ($_SESSION['customers_status']['customers_status_show_price_tax'] != 0) { $this->output[] = array('title' => $key . ':', 'text' =>$xtPrice->xtcFormat($value,true), 'value' => $xtPrice->xtcFormat($value, false)); $tax_value += $xtPrice->xtcFormat($value, false); } if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) { $this->output[] = array('title' => $key . ':', 'text' =>$xtPrice->xtcFormat($value,true), 'value' => $xtPrice->xtcFormat($value, false)); $tax_value += $xtPrice->xtcFormat($value, false); } } } $order->info['shipping_cost'] = $order->info['shipping_cost'] + $tax_value; $order->info['total'] += $tax_value; } else { // price with one tax $shipping_tax = xtc_get_tax_rate
($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']); $shipping_tax_description = xtc_get_tax_description
($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']); $tax = $xtPrice->xtcFormat(xtc_add_tax
($order->info['shipping_cost'], $shipping_tax),false,0,false)-$order->info['shipping_cost']; $tax = $xtPrice->xtcFormat($tax,false,0,true); $order->info['shipping_cost'] = xtc_add_tax
($order->info['shipping_cost'], $shipping_tax); $order->info['tax'] += $tax; $order->info['tax_groups'][TAX_ADD_TAX
. "$shipping_tax_description"] += $tax; $order->info['total'] += $tax; } Soo dann müsste nur noch jemand das so erweitern, dass es einstellbar ist im Admin und die Anzeige in der checkout_confirmation richtig herum dargestellt wird denn derzeit stehen die Steuersätze der Versandkosten über dem Versandkosten Betrag...
Wäre schön wenn jemand das Werk vollendet.
Viele Grüße
Franky