Code:
'PRODUCTS_PRICE_NETTO' => number_format(round($order_data_values['final_price']/$order_data_values['products_quantity'],2), 2,',',''),
bringt erneut den Bruttopreis zutage. Zweckmäßig ist es sicherlich nicht, dass die Shop-Software auf Basis des Bruttopreises operiert. Sie tut es aber ganz offenbar, zumindest an dieser Stelle (send_order.php)....
Code:
.
.
...
$this->billing = array('firstname' => $billing_address['entry_firstname'],
'lastname' => $billing_address['entry_lastname'],
'company' => $billing_address['entry_company'],
'street_address' => $billing_address['entry_street_address'],
'suburb' => $billing_address['entry_suburb'],
'city' => $billing_address['entry_city'],
'postcode' => $billing_address['entry_postcode'],
'state' => ((xtc_not_null($billing_address['entry_state'])) ? $billing_address['entry_state'] : $billing_address['zone_name']),
'zone_id' => $billing_address['entry_zone_id'],
'country' => array('id' => $billing_address['countries_id'], 'title' => $billing_address['countries_name'], 'iso_code_2' => $billing_address['countries_iso_code_2'], 'iso_code_3' => $billing_address['countries_iso_code_3']),
'country_id' => $billing_address['entry_country_id'],
'format_id' => $billing_address['address_format_id']);
$index = 0;
$products = $_SESSION['cart']->get_products();
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
$products_price=$xtPrice->xtcGetPrice($products[$i]['id'],
$format=false,
$products[$i]['quantity'],
$products[$i]['tax_class_id'],
'')+$xtPrice->xtcFormat($_SESSION['cart']->attributes_price($products[$i]['id']),false);
$this->products[$index] = array('qty' => $products[$i]['quantity'],
'name' => $products[$i]['name'],
'model' => $products[$i]['model'],
'tax_class_id'=> $products[$i]['tax_class_id'],
'tax' => xtc_get_tax_rate($products[$i]['tax_class_id'], $tax_address['entry_country_id'], $tax_address['entry_zone_id']),
'tax_description' => xtc_get_tax_description($products[$i]['tax_class_id'], $tax_address['entry_country_id'], $tax_address['entry_zone_id']),
'price' => $products_price ,
'final_price' => $products_price*$products[$i]['quantity'],
'weight' => $products[$i]['weight'],
'id' => $products[$i]['id']);
if ($products[$i]['attributes']) {
$subindex = 0;
reset($products[$i]['attributes']);
while (list($option, $value) = each($products[$i]['attributes'])) {
$attributes_query = xtc_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $products[$i]['id'] . "' and pa.options_id = '" . $option . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $value . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $_SESSION['languages_id'] . "' and poval.language_id = '" . $_SESSION['languages_id'] . "'");
$attributes = xtc_db_fetch_array($attributes_query);
$this->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options_name'],
'value' => $attributes['products_options_values_name'],
'option_id' => $option,
'value_id' => $value,
'prefix' => $attributes['price_prefix'],
'price' => $attributes['options_values_price']);
$subindex++;
}
}
$shown_price = $this->products[$index]['final_price'];
//echo '<br>debug:'.$shown_price;
$this->info['subtotal'] += $shown_price;
if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1){
$shown_price_tax = $shown_price-($shown_price/100 * $_SESSION['customers_status']['customers_status_ot_discount']);
}
$products_tax = $this->products[$index]['tax'];
$products_tax_description = $this->products[$index]['tax_description'];
if ($_SESSION['customers_status']['customers_status_show_price_tax'] == '1') {
if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1) {
$this->info['tax'] += $shown_price_tax - ($shown_price_tax / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));
$nc_test = (($shown_price_tax /(100+$products_tax)) * $products_tax);
//echo "1111:".$nc_test;
$this->info['tax_groups'][TAX_ADD_TAX."$products_tax_description"] += $nc_test;
} else {
$this->info['tax'] += $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));
$nc_test = (($shown_price /(100+$products_tax)) * $products_tax);
//echo "2222";
$this->info['tax_groups'][TAX_ADD_TAX . "$products_tax_description"] += $nc_test;
}
} else {
if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1) {
$this->info['tax'] += ($shown_price_tax/100) * ($products_tax);
$this->info['tax_groups'][TAX_NO_TAX . "$products_tax_description"] += ($shown_price_tax/100) * ($products_tax);
} else {
$this->info['tax'] += ($shown_price/100) * ($products_tax);
$this->info['tax_groups'][TAX_NO_TAX . "$products_tax_description"] += ($shown_price/100) * ($products_tax);
}
}
$index++;
}
Aber meine PHP-Kenntnisse reichen nicht aus, um da durchzublicken.