marcoberri Posted April 1, 2011 Share Posted April 1, 2011 Salve a tutti,ho notato che nella classe Cart.php il calcolo dei valori del Voucher viene eseguito nel seguente modo:Lo sconto calcolato sul totale dei prodotti lordi. Questo sconto viene sottratto al totale dell'ordine compreso di tasse e spese di spedizione.vi torna questa cosa?..in realtà il voucher dovrebbe essere calcolato come sopra ma sottratto solo al netto dei prodotti....devo mettere mano a Cart.php nella parte di modifica degli sconti...qualche suggerimento/commento?grazie! Link to comment Share on other sites More sharing options...
jacky75 Posted April 1, 2011 Share Posted April 1, 2011 Ciao,piuttosto che modificarlo, apri un bug a prestashop se ritieni ci sia un problema così tutta la comunity gioverà della risoluzione del problema. Link to comment Share on other sites More sharing options...
marcoberri Posted April 1, 2011 Author Share Posted April 1, 2011 ciao,sto risolvendo il problema, poi posto il codiceciao! Link to comment Share on other sites More sharing options...
marcoberri Posted April 1, 2011 Author Share Posted April 1, 2011 sto risolvendo la cosa che non risulta banale, per ora sono riuscito a far funzionare il voucher nella casistica dello sconto percentuale, nei primi giorni a partire dal lunedì concluderò il tutto e vi posto il risultato (lo mando anche al team di prestahop). grazie e buon fine settimana. Link to comment Share on other sites More sharing options...
marcoberri Posted April 6, 2011 Author Share Posted April 6, 2011 Vi allego la funzione contenuta nel file Cart.php modificata in modo da calcolare i voucher in base al totale dei prodotti senza iva escluse tutte le altre spese.inoltre nel file Discount.php bisogna far sempre restituire lo sconto senza tasse applicatemodificando questo foreach ($products AS $product) if (count($categories) AND Product::idIsOnCategoryId($product['id_product'], $categories)) $totalAmount += $useTax ? $product['total_wt'] : $product['total']; con foreach ($products AS $product) if (count($categories) AND Product::idIsOnCategoryId($product['id_product'], $categories)) $totalAmount += $product['total']; //$totalAmount += $useTax ? $product['total_wt'] : $product['total']; naturalmente bisogna anche modificare la stampa della fattura che sto ancora modificando... che fatica...ciao a tutti e buona serata.ciao a tutti! voucher.txt Link to comment Share on other sites More sharing options...
Alberto769 Posted April 6, 2011 Share Posted April 6, 2011 Noto che nessuno si fa avanti x ringraziarti, be io sono il primo, grazie. Link to comment Share on other sites More sharing options...
LionMuscle Posted April 7, 2011 Share Posted April 7, 2011 Mi associo anche io ai RINGRAZIAMENTI ed ai COMPLIMENTI!!! Grande marcoberri... Link to comment Share on other sites More sharing options...
Luca S. Posted April 12, 2011 Share Posted April 12, 2011 ragazzi io invece ho un problema con voucher e prestashop 1.4.in poche parole voglio regalare un prodotto ma l'utente mi deve solo pagare le spedizioni, così ho pensato di creare un voucher che sconta il 100% del prezzo del prodotto che ho messo singolarmente in una categoria nascosta, quindi quel voucher è attivo solo per quella categoria nascosta, però se nel carrello il cliente incrementa le quantità otterrà sempre lo sconto del 100% su anche 100000 quantità eheheh (così vado in fallimento), io voglio limitarla solo ad 1 quantità!al massimo nn c'è un opzioni per definire la quantità massima acquistabile nelle opzioni del prodotto?? Link to comment Share on other sites More sharing options...
juanjump Posted May 11, 2011 Share Posted May 11, 2011 naturalmente bisogna anche modificare la stampa della fattura che sto ancora modificando... che fatica...ciao a tutti e buona serata.ciao a tutti! Grazie della soluzione, comunque da quello che ho visto non è un vero e proprio bug ma una scelta dei creatori.Infatti se andiamo in Clienti --> Gruppi --> Edita gruppo e selezioniamo la voce "Visualizza tasse escluse" il calcolo avviene sul prezzo netto. Per il mercato italiano la trovo un pò assurda questa cosa (almeno per la mia esperienza), magari all'estero si adatta meglio. Link to comment Share on other sites More sharing options...
Codencode Posted May 21, 2011 Share Posted May 21, 2011 Buonasera, io ho provato le modifiche, ma non sembrano funzionare, poi mi sembra che il metodo getOrderTotal() (presente nel file voucher.txt) sia molto diverso rispetto a quello originale. Inoltre mi trovo daccordo con juanjump nel senseo che se si mostrano i prezzi iva inclusa, tutto sembra funzionare.Quindi molto probabilmente non funziona solo quando vengono mostrati i prezzi iva esclusa, nel senso che sia l'IVA sia l'importo del buono vengono calcolate sul prezzo netto, a meno che nel caso di buoni bisogna fare così, questo lo chiederò al commercialista. Per il mercato italiano la trovo un pò assurda questa cosa (almeno per la mia esperienza), magari all'estero si adatta meglio. Credo che servi per chi vende a rivenditori e non utenti finali, quindi vuole far vedere i prezzi iva esclusa. Link to comment Share on other sites More sharing options...
juanjump Posted May 21, 2011 Share Posted May 21, 2011 Credo che servi per chi vende a rivenditori e non utenti finali, quindi vuole far vedere i prezzi iva esclusa. Si si, fino a qui ci sono.Le mie perplessità sono sul fatto che lo sconto è calcolato sul lordo. Link to comment Share on other sites More sharing options...
Codencode Posted May 22, 2011 Share Posted May 22, 2011 In realtà lo sconto viene calcolato sul netto così come l'IVA, es.Articolo A costo 100, IVA 20% totale = 120 €,Ora applichiamo lo sconto del 10%, lo sconto viene calcolato su 100 (quindi il netto) e risulta essere 10 €, quindi ricapitolanto:100 (netto) + 20 (VA) - 10 (sconto) = 110mentre in realtà dovrebbe essere:100 (netto) - 10 (sconto) = 90 ora va calcolata l'IVA su 90 che risulta essere 18,quindi totale = 108 €Il mio dubbio è che forse mostrando i prezzi iva esclusa, il calcolo non è come ho supporto io, ma come fa il prestashop, anche se logicamente dovrebbe essere come suppongo io, nel senso che l'iva va calcolata sul costo al netto dello sconto.Comunque chiederò al commercialista.Ultima cosa che faccio notare, a me sembra che il problema ci sia solo con sconti in percentuale, nel caso di sconto fisso (es. 10€) funziona sia per i prezzi mostrati con iva sia per i prezzi mostrati senza iva. Confermate? Link to comment Share on other sites More sharing options...
Codencode Posted May 22, 2011 Share Posted May 22, 2011 Se i ragionamenti fatti sono giusti, credo di aver trovato il problema.Nella classe Cart metodo getProducts(), ad un certo punto c'è questo if else if ($this->_taxCalculationMethod == PS_TAX_EXC) { $row ['price'] = Product::getPriceStatic ( ( int ) $row ['id_product'], false, isset ( $row ['id_product_attribute'] ) ? ( int ) ($row ['id_product_attribute']) : NULL, 2, NULL, false, true, ( int ) ($row ['cart_quantity']), false, (( int ) ($this->id_customer) ? ( int ) ($this->id_customer) : NULL), ( int ) ($this->id), (( int ) ($this->{Configuration::get ( 'PS_TAX_ADDRESS_TYPE' )}) ? ( int ) ($this->{Configuration::get ( 'PS_TAX_ADDRESS_TYPE' )}) : NULL), $specificPriceOutput ); // Here taxes are computed only once the quantity has been applied to the product price $row ['price_wt'] = Product::getPriceStatic ( ( int ) $row ['id_product'], true, isset ( $row ['id_product_attribute'] ) ? ( int ) ($row ['id_product_attribute']) : NULL, 2, NULL, false, true, ( int ) ($row ['cart_quantity']), false, (( int ) ($this->id_customer) ? ( int ) ($this->id_customer) : NULL), ( int ) ($this->id), (( int ) ($this->{Configuration::get ( 'PS_TAX_ADDRESS_TYPE' )}) ? ( int ) ($this->{Configuration::get ( 'PS_TAX_ADDRESS_TYPE' )}) : NULL) ); $tax_rate = Tax::getProductTaxRate(( int ) $id_product,( int ) ($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); $row ['total_wt'] = Tools::ps_round ( $row ['price'] * ( float ) $row ['cart_quantity'] * (1 + ( float ) ($tax_rate) / 100), 2 ); $row ['total'] = $row ['price'] * ( int ) ($row ['cart_quantity']); } else { $row ['price'] = Product::getPriceStatic ( ( int ) $row ['id_product'], false, ( int ) $row ['id_product_attribute'], 6, NULL, false, true, $row ['cart_quantity'], false, (( int ) ($this->id_customer) ? ( int ) ($this->id_customer) : NULL), ( int ) ($this->id), (( int ) ($this->{Configuration::get ( 'PS_TAX_ADDRESS_TYPE' )}) ? ( int ) ($this->{Configuration::get ( 'PS_TAX_ADDRESS_TYPE' )}) : NULL), $specificPriceOutput ); $row ['price_wt'] = Product::getPriceStatic ( ( int ) $row ['id_product'], true, ( int ) $row ['id_product_attribute'], 2, NULL, false, true, $row ['cart_quantity'], false, (( int ) ($this->id_customer) ? ( int ) ($this->id_customer) : NULL), ( int ) ($this->id), (( int ) ($this->{Configuration::get ( 'PS_TAX_ADDRESS_TYPE' )}) ? ( int ) ($this->{Configuration::get ( 'PS_TAX_ADDRESS_TYPE' )}) : NULL) ); /* In case when you use QuantityDiscount, getPriceStatic() can be return more of 2 decimals */ $row ['price_wt'] = Tools::ps_round ( $row ['price_wt'], 2 ); $row ['total_wt'] = $row ['price_wt'] * ( int ) ($row ['cart_quantity']); $row ['total'] = Tools::ps_round ( $row ['price'] * ( int ) ($row ['cart_quantity']), 2 ); } nell'if c'è questa istruzione: $tax_rate = Tax::getProductTaxRate(( int ) $id_product,( int ) ($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); In pratica viene presa l'aliquota relativa al prodotto, ma quando non viene passato $id_product (parametro del metodo), l'aliquota risulta essere 0 (perchè la variabile è null), quindi sostituendo l'istruzione incriminata con la seguente: $tax_rate = Tax::getProductTaxRate ( ( int ) ($id_product ? $id_product : $row ['id_product']), ( int ) ($this->{Configuration::get ( 'PS_TAX_ADDRESS_TYPE' )}) ); sembra funzionare, così facendo, se $id_product non è valorizzato, viene preso l'id dell'articolo dall'array $row.Ovviamente bisogna ancora vedere cosa succede in fattura.Aspetto riscontri. Link to comment Share on other sites More sharing options...
Codencode Posted May 23, 2011 Share Posted May 23, 2011 Buongiorno, ho esposto la questione al commercialista e mi ha detto che il calcolo non è proprio sbagliato, nel senso che funziona in entrambi i casi, quindi:Articolo A costo 100, IVA 20% totale = 120 €Caso 1)sconto del 10%, su 100 (quindi il netto) = 10 €, 100 (netto) + 20 (VA) – 10 (sconto) = 110Caso 2)sconto del 10%, su 120 (quindi il lordo) = 12 €, 100 (netto) + 20 (VA) – 12 (sconto) = 108L'IVA viene calcolata bene in entrmabi i casi, quindi funziona. Nel primo caso l'utente paga 2 € di IVA in più, quindi ho apportato la modifica in modo che il calcolo viene eseguito com enel secondo caso in modo che l'utente risparmi i 2 € di IVA. Link to comment Share on other sites More sharing options...
D4rkNight Posted May 27, 2011 Share Posted May 27, 2011 ricapitolando? non c'ho capito una mazza... :-Dil codice è corretto o è sbagliato?? =Dahahahahahah Link to comment Share on other sites More sharing options...
Codencode Posted May 29, 2011 Share Posted May 29, 2011 Da come mi ha detto il mio commercialista è corretto in entrambi i modi, quindi sta a te decidere come fare. Link to comment Share on other sites More sharing options...
universo Posted July 11, 2013 Share Posted July 11, 2013 (edited) rispolvero questo post in quanto non trovo una soluzione riguardo all'ultima versione, anche provando i metodi descritti credo che i codici siamo cambiati. grazie a chi mi volesse illuminare. la fattura con il buono scorpora l'iva dal totale prodotto iva inclusa meno il buono, ossia 89.90 - 32.90 = 57.00 iva scorporata 9.89 ma in relta dovrebbe lasciare i conteggi come la fattura senza buoni e scalare il buono alla fine e poi fare il totale fattura. è possibile trattare il buono come una spedizione?grazie Edited July 12, 2013 by universo (see edit history) Link to comment Share on other sites More sharing options...
rossella21 Posted September 6, 2013 Share Posted September 6, 2013 io ho lo stesso problema descritto da universo, è stata trovata una soluzione? 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