Inviato: 10/05/2005, 12:09
a me funziona alla grande....il calcolo è esatto!!! anke in fattura!!
comunità di utenti e sviluppatori italiani per osCommerce
http://oscommerceitalia.com/forums/
Quale sarebbe la modifica che hai apportato alla function tep_add_tax per forzare le 3 cifre nel calcolo?varr98 ha scritto:in general.php (sia admin\includes\function che in includes\function)
ho modificato anche la function tep_add_tax forzando le 3 cifre nel calcolo ....
da
return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']) + tep_calculate_tax($price, $tax);
a
return tep_round($price, 3) + tep_calculate_tax($price, $tax);
così ottengo un numero maggiore di calcoli esatti (in alcuni casi però ho delle discrepanze)
che ne pensate?
marcus ha scritto:provider ha scritto:-----------------------
Lo stesso problema mi si presenta in fattura.
N.B.: il problema lo risolverei impostando la visualizzazione dei prezzi senz'iva, ma molti clienti preferiscono vederli ivati. Quindi cerco una soluzione alternativa. Prezzi ivati ma subtotale non ivato per la somma finale con l'iva!
Come fare????
Grazie in anticipo!!!Affermazione corretta!provider ha scritto:Ho il Total Pack di phobos più altre contrib installate.
Ma credo la cosa accadeva anche su precedenti versioni pulite di OSC.
Infatti Osc opera in due modi:
1) display prices with TAX - il sub totale viene calcolato sui i prezzi comprensivi di IVA
2) display prices without TAX - il sub totale viene calcolato sui prezzi al netto di IVA.
Tu vuoi un comportamento diciamo asimmetrico che non è previsto.
Devi mettere mano alla classe order lato cliente.
La seguente modifica che ti propongo dovrebbe 'forzare' il calcolo del subtotale NON comprendendo l'iva pur continuando a mostrare i singoli prezzi comprensivi di iva.
Per la fattura le cose dovrebbero automaticamente funzionare allo stesso modo ..ma sicuramente sono troppo ottimista
Nella classe order cerca le linee
e sostituiscile con:Codice: Seleziona tutto
$shown_price = tep_add_tax($this->products[$index]['final_price'], $this->products[$index]['tax']) * $this->products[$index]['qty']; $this->info['subtotal'] += $shown_price;
Poi cerca queste:Codice: Seleziona tutto
$shown_price = tep_add_tax($this->products[$index]['final_price'], $this->products[$index]['tax']) * $this->products[$index]['qty']; $shown_price_wt = $this->products[$index]['final_price'] * $this->products[$index]['qty']; $this->info['subtotal'] += $shown_price_wt;
e sostituisci conCodice: Seleziona tutto
if (DISPLAY_PRICE_WITH_TAX == 'true') { $this->info['total'] = $this->info['subtotal'] + $this->info['shipping_cost']; } else { $this->info['total'] = $this->info['subtotal'] + $this->info['tax'] + $this->info['shipping_cost']; } }
Ovviamente non ti garantisco nienteCodice: Seleziona tutto
$this->info['total'] = $this->info['subtotal'] + $this->info['tax'] + $this->info['shipping_cost'];
Buno lavoro
Marzullus
Codice: Seleziona tutto
$shown_price = $currencies->calculate_price($this->products[$index]['final_price'], $this->products[$index]['tax'], $this->products[$index]['qty']);
$this->info['subtotal'] += $shown_price;
$products_tax = $this->products[$index]['tax'];
$products_tax_description = $this->products[$index]['tax_description'];
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$this->info['tax'] += $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));
if (isset($this->info['tax_groups']["$products_tax_description"])) {
$this->info['tax_groups']["$products_tax_description"] += $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));
} else {
$this->info['tax_groups']["$products_tax_description"] = $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));
}
} else {
$this->info['tax'] += ($products_tax / 100) * $shown_price;
if (isset($this->info['tax_groups']["$products_tax_description"])) {
$this->info['tax_groups']["$products_tax_description"] += ($products_tax / 100) * $shown_price;
} else {
$this->info['tax_groups']["$products_tax_description"] = ($products_tax / 100) * $shown_price;
}
}
$index++;
}
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$this->info['total'] = $this->info['subtotal'] + $this->info['shipping_cost'];
} else {
$this->info['total'] = $this->info['subtotal'] + $this->info['tax'] + $this->info['shipping_cost'];
}
Codice: Seleziona tutto
$shown_price = $currencies->calculate_price($this->products[$index]['final_price'], '', $this->products[$index]['qty']);
$this->info['subtotal'] += $shown_price;
$products_tax = $this->products[$index]['tax'];
$products_tax_description = $this->products[$index]['tax_description'];
/*if (DISPLAY_PRICE_WITH_TAX == 'true') {
$this->info['tax'] += $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));
if (isset($this->info['tax_groups']["$products_tax_description"])) {
$this->info['tax_groups']["$products_tax_description"] += $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));
} else {
$this->info['tax_groups']["$products_tax_description"] = $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));
}
} else {*/
$this->info['tax'] += ($products_tax / 100) * $shown_price;
if (isset($this->info['tax_groups']["$products_tax_description"])) {
$this->info['tax_groups']["$products_tax_description"] += ($products_tax / 100) * $shown_price;
} else {
$this->info['tax_groups']["$products_tax_description"] = ($products_tax / 100) * $shown_price;
}
//}
$index++;
}
//if (DISPLAY_PRICE_WITH_TAX == 'true') {
//$this->info['total'] = $this->info['subtotal'] + $this->info['tax'] + $this->info['shipping_cost'];
//} else {
$this->info['total'] = $this->info['subtotal'] + $this->info['tax'] + $this->info['shipping_cost'];
//}