Pagina 1 di 1

Errore calcolo aliquote lato admin

Inviato: 16/10/2013, 4:08
da Jarlazzi
Ho un sito internet che deve vendere oltre che in Italia anche e soprattutto in Svizzera, questo comporta non solo l'IVA al 22% tra le aliquote, ma anche quella all'8% della Svizzera.
Come è ovvio, le due aliquote non devono sommarsi ma applicarsi alle geozones impostate nel backend.
Non è la prassi, ma di colpo è capitato che nel lato admin (e solo nel lato admin) il sistema ha iniziato ad applicare al prezzo lordo entrambe le aliquote invece della sola aliquota al 22%

Ho controllato le funzioni di calcolo delle aliquote, e non capisco perchè le prenda entrambe, dato che per la maggior parte del tempo da quando l'abbiamo installato ha correttamente applicato solo l'aliquota al 21% e poi al 22%.

Avete consigli?

In alternativa, come potrei modificare nella pagina admin/categories.php la function getTaxRate in modo che peschi sempre e comunque un'aliquota utilizzando un preciso ID dalla tabella?
Grazie mille del supporto

J

Re: Errore calcolo aliquote lato admin

Inviato: 17/10/2013, 15:24
da maury2ma
è un bug noto.
l'unico "disturbo" è che devi sempre inserire il prezzo tasse escluse.
se vuoi risolvere il problema devi intervenire sul file sito/catalog/admin/includes/functions/general.php

Codice: Seleziona tutto

////
// Returns the tax rate for a tax class
// TABLES: tax_rates
  function tep_get_tax_rate_value($class_id) {
    // somma tutte le tasse, invece che prendere quella con maggiore priotita'
  //$tax_query = tep_db_query("select SUM(tax_rate) as tax_rate from " . TABLE_TAX_RATES . " where tax_class_id = '" . (int)$class_id . "' group by tax_priority");
    // fix tasse
    $tax_query = tep_db_query("select tax_rate from " . TABLE_TAX_RATES . " where tax_class_id = '" . (int)$class_id . "' order by tax_priority LIMIT 1");
    if (tep_db_num_rows($tax_query)) {
      $tax_multiplier = 0;
      while ($tax = tep_db_fetch_array($tax_query)) {
        $tax_multiplier += $tax['tax_rate'];
      }
      return $tax_multiplier;
    } else {
      return 0;
    }
  }
ovviamente devi andare nelle tasse ed impostare priorità "1" alla tassa che vuoi visualizzare e non devono esserci 2 tasse con la stessa priorità.
altra soluzione più elegante è fare il controllo "stato selezionato come sede del negozio" e "tasse", ma è decisamente articolato.