xxxxxxxxxxxxxxxxxxxx Posted May 21, 2014 Share Posted May 21, 2014 (edited) Buongiorno, sto usando l'ultima versione di PrestaShop 1.6.0.6 e ho la necessità di permettere gli acquisti di uno stesso prodotto con differenti aliquote IVA: normale al 22% e due rate di IVA agevolata al 4% e al 10%. Ho creato le mie 3 tasse. Ho creato 3 nuovi gruppi di utenti. E' possibile associare una tassa ad un gruppo di utenti? Quindi tutti gli utenti nel gruppo A avranno l'iva al 22%, quelli nel gruppo B al 10% e quelli nel gruppo C al 4%. E possibile poi permettere agli utenti, in fase di registrazione, di scegliere a quale gruppo appartengono A, B o C tramite un dropdown? Oppure esiste un'altra soluzione/plugin per poter gestire acquisti con iva agevolata? Nessuno ha mai avuto questa necessità? Grazie mille Stefano Edited May 21, 2014 by stefanoginella (see edit history) Link to comment Share on other sites More sharing options...
xxxxxxxxxxxxxxxxxxxx Posted May 21, 2014 Author Share Posted May 21, 2014 Ho provato a prendere il file classes/tax/Tax.php e copiarlo in override/classes/tax/Tax.phpquindi ho modificato la funzione public static function getProductTaxRate($id_product, $id_address = null, Context $context = null) { if ($context == null) $context = Context::getContext(); $address = Address::initialize($id_address); $id_tax_rules = (int)Product::getIdTaxRulesGroupByIdProduct($id_product, $context); $tax_manager = TaxManagerFactory::getManager($address, $id_tax_rules); $tax_calculator = $tax_manager->getTaxCalculator(); return $tax_calculator->getTotalRate(); } in questa versione public static function getProductTaxRate($id_product, $id_address = null, Context $context = null) { if ($context == null) $context = Context::getContext(); $address = Address::initialize($id_address); $groups = Customer::getGroupsStatic((int)($address->id_customer)); $taxratenew = null; foreach ($groups as $g) { if ($g <= 4) { //set the group you want here ( '>;' or '=') $taxratenew = 1; //set the tax rate you want here (e.g. "0") } else if ($g == 5) { //set the group you want here ( '>;' or '=') $taxratenew = 2; //set the tax rate you want here (e.g. "0") } else if ($g == 6) { //set the group you want here ( '>;' or '=') $taxratenew = 4; //set the tax rate you want here (e.g. "0") } } if (!$taxratenew) { $id_tax_rules = (int)Product::getIdTaxRulesGroupByIdProduct($id_product, $context); $tax_manager = TaxManagerFactory::getManager($address, $id_tax_rules); $tax_calculator = $tax_manager->getTaxCalculator(); $taxratenew = 22; } return $taxratenew; } Il problema è che $g, che contiene il risultato di Customer::getGroupsStatic((int)($address->id_customer)); è sempre uguale a 1, indipendentemente dal gruppo a cui è assegnato l'utente. Cosa sbaglio? Qual'è il modo corretto per ottenere l'id del gruppo a cui appartiene l'utente? Link to comment Share on other sites More sharing options...
xxxxxxxxxxxxxxxxxxxx Posted May 22, 2014 Author Share Posted May 22, 2014 Ora funziona! La funzione corretta è questa. Unico problema è che per cambiare le aliquote iva devo modificare questo file, le aliquote impostate nel pannello di controllo sono praticamente ignorate. public static function getProductTaxRate($id_product, $id_address = null, Context $context = null) { if ($context == null) $context = Context::getContext(); $groups = Customer::getGroupsStatic($context->cart->id_customer); $taxratenew = null; foreach ($groups as $g) { switch ($g) { case 1: case 2: case 3: case 4: $taxratenew = 22; break; case 5: $taxratenew = 10; break; case 6: $taxratenew = 4; break; default: $taxratenew = 10; } } if (!$taxratenew) { $id_tax_rules = (int)Product::getIdTaxRulesGroupByIdProduct($id_product, $context); $tax_manager = TaxManagerFactory::getManager($address, $id_tax_rules); $tax_calculator = $tax_manager->getTaxCalculator(); $taxratenew = $tax_calculator->getTotalRate(); } return $taxratenew; } Link to comment Share on other sites More sharing options...
vio328 Posted June 11, 2014 Share Posted June 11, 2014 Ciao, interesserebbe anche a me sei riuscito a risolvere? Link to comment Share on other sites More sharing options...
xxxxxxxxxxxxxxxxxxxx Posted June 11, 2014 Author Share Posted June 11, 2014 Per ora ho risolto con l'hack che ho scritto sopra, anche se un po' "sporco" mi fa ottenere il risultato voluto nel carrello. Ancora non ho fatto una prova completando un acquisto fino in fondo, ma dovrebbe funzionare. Ora, quando un utente manda al gestore del sito la documentazione per l'iva agevolata, bisogna solo assegnare il gruppo corretto all'utente. Link to comment Share on other sites More sharing options...
Lenny76 Posted June 14, 2014 Share Posted June 14, 2014 ciao. scusa ma per curiosità per quali motivi si può cambiare l'iva applicata? a quali prodotti applichi il 4%? Link to comment Share on other sites More sharing options...
xxxxxxxxxxxxxxxxxxxx Posted June 15, 2014 Author Share Posted June 15, 2014 Iva agevolata sulla ristrutturazione della prima casa. Link to comment Share on other sites More sharing options...
assisassi Posted June 15, 2014 Share Posted June 15, 2014 Ora funziona! La funzione corretta è questa. Unico problema è che per cambiare le aliquote iva devo modificare questo file, le aliquote impostate nel pannello di controllo sono praticamente ignorate. Magari non è come dico, ma oltre alle aliquote, vanno applicati i regimi fiscali per ogni nazione (se vendi extra UE non devi applicare l'IVA), e forse è per questo motivo che ti sembra che le aliquote impostate vengono ignorate... Comunque la tua soluzione è interessante, ma se non hai tenuto conto dei regimi, potresti avere qualche problema ad impostare le vendite extra UE (ammesso che ti interessi). Link to comment Share on other sites More sharing options...
xxxxxxxxxxxxxxxxxxxx Posted June 15, 2014 Author Share Posted June 15, 2014 Ho tenuto in cosiderazione questa cosa. Fortunatamente vendono solo nel mercato italiano Link to comment Share on other sites More sharing options...
xxxxxxxxxxxxxxxxxxxx Posted June 15, 2014 Author Share Posted June 15, 2014 Lecvslie, hon ho capito a cosa si riferisce la tua domanda Link to comment Share on other sites More sharing options...
vio328 Posted June 20, 2014 Share Posted June 20, 2014 Stefano ti ringrazio anche se non può essere impostato dal pannello è lo stesso, provo subito, ancora grazie! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now