Qual è lo stato dei problemi di arrotondamento in 1.7?


27

Stiamo usando Magento CE 1.7 e abbiamo vari problemi di arrotondamento. In vari calcoli c'è una differenza di 0,01 EUR.

Il problema di base potrebbe essere che i prezzi degli articoli sono incl. imposta.

I co-programmatori hanno sovrascritto il Mage_Core_Model_Store::roundPrice()metodo per calcolare con precisione a 4 cifre. Ma questo sembra causare problemi con i pagamenti PayPal.

C'è una soluzione per questi problemi?

MODIFICARE:

Abbiamo effettivamente provato una patch nucleo ufficiale che aggiunge sostanzialmente 4 cifre arrotondamento a \Mage_Tax_Model_Sales_Total_Quote_Shipping::_round, \Mage_Tax_Model_Sales_Total_Quote_Subtotal::_deltaRounde \Mage_Tax_Model_Sales_Total_Quote_Tax::_deltaRoundche risolve un problema di arrotondamento buono ma non il problema PayPal.


Per quanto mi ricordo, Magento memorizza i prezzi con 4 punti decimali. Quindi, se i prezzi vengono inseriti con 4 punti decimali, il calcolo è corretto. Ma potrei sbagliarmi.
user487772,

1
Cosa intendi con "input con 4 punti dec"? Ma l'arrotondamento di Magento funziona con il 2 dicembre. punti. Inoltre penso che l'interfaccia di PayPal funzioni con il 2 dicembre. punti - questo sembra dove inizia il problema.
Alex,

Se ricordo bene, se inserisci i prezzi in admin con 4 punti decimali, questi verranno salvati in db con 4 punti decimali. Quindi verrà arrotondato a 2 punti durante l'output, ma l'arrotondamento sarà corretto poiché il prezzo con 4 punti decimali verrà arrotondato.
user487772,

Certo, ma abbiamo principalmente problemi con il calcolo totale, specialmente se sono coinvolti codici promozionali basati su percentuale.
Alex,

Oh, allora ho sbagliato la tua domanda. Scusate.
user487772,

Risposte:


10

Siamo a conoscenza di diversi problemi di arrotondamento all'interno del modulo fiscale Magento di base che coprono gli scenari che sono stati descritti. Attualmente stiamo lavorando a questi problemi per una prossima versione 1.13. Questi problemi di arrotondamento attivano un semplice controllo Paypal che determina se gli elementi pubblicitari nel carrello si sommano correttamente. Sembra che la patch di Fabian si occupi dell'assegno Paypal a breve termine.

In caso di domande, commenti o suggerimenti su come migliorare il modulo fiscale Magento, non esitare a contattarmi in quanto sono il product manager responsabile delle imposte.

Saluti, Chuck


Grande! È disponibile una specie di suite di test per mostrare quali problemi verranno affrontati?
Alex,

1
Chuck, ti ​​dispiacerebbe impostare le informazioni utente per verificare?
benmarks

I test sono solo interni. Per quanto riguarda maggiori dettagli su problemi di arrotondamento noti, è un po 'interessante. Un cliente li vedrebbe associati a determinate configurazioni fiscali utilizzando combinazioni specifiche di prezzo, aliquota fiscale, sconti, ecc. Il nostro approccio per 1.13 è stato quello di identificare configurazioni fiscali comuni e garantire che # combinazioni non producano matematicamente errori di arrotondamento e taggino determinate configurazioni (piccole custodie angolari) come configurazioni pericolose che dovrebbero essere evitate.
Chuck,

Un po 'fuori tema, ma significa che ci sarebbe anche l'edizione CE 1.8?
Sergei Guk,

Sì - Le versioni CE ritardano le versioni EE di circa un mese. 1.13 è la prossima versione di EE.
Chuck,

7

Grazie ad Andreas Vogt, ho creato un modulo per correggere il bug circolare di Paypal. Andreas mi ha dato alcuni file core compromessi e ho creato il modulo. Verifica se le somme sono corrette e, in caso contrario, viene corretto.

Dopo che l'hack core è stato testato in natura. Molte persone hanno chiesto il modulo, ma nessuno mi ha dato feedback se funziona. Ma è testato in unità! (solo se le riscritture funzionano, perché non avevo idea di quale fosse il problema di paypal ;-))

https://github.com/magento-hackathon/PaypalRoundBugfix


1
Hm .. quale bug risolve esattamente? Sembra il bug di trasferimento del carrello. In realtà abbiamo disattivato il trasferimento del carrello. E deve essere applicato con la patch di arrotondamento a 4 cifre?
Alex,

C'è più di un problema? Come ho detto, non ho idea di cosa
risolva

5

Stiamo affrontando sia il bug di arrotondamento paypal sia il problema con codici coupon di sconto del 100%. Abbiamo solo problemi sui prezzi (come Eur 3,99 IVA inclusa), in cui il prezzo netto ha un 3 a 3 (3,325). Quindi anche la tassa (qui con il 20%) ha sulla 3a cifra un 5 (0,665). Quindi se arrotoli e aggiungi entrambi i prezzi (cosa fanno paypal e magento) il totale è di Euro 0,01 in più rispetto al prezzo base (Euro 4,00).

Il calcolo corretto dovrebbe essere pari a 3,32 euro netti + imposta 0,67 euro = 3,99 euro

Dato che stiamo anche cercando di trovare una soluzione generale, proviamo la soluzione di arrotondamento paypal!


ottimo, dimmi se hai problemi, sono ansioso di aiutare e vedere il Bugfix in natura e debug se necessario!
Fabian Blechschmidt,

1
Cordiali saluti, il problema che hai descritto è stato risolto nella nostra prossima versione (1.8 CE / 1.13 EE).
Chuck,

@Chuck Ho appena testato questo scenario con Mage_Tax_Model_Sales_Total_Quote_Tax dall'1.11.0.1 e sembra aver risolto il problema come rimpiazzo in un progetto 1.12. Grazie mille. Esiste ancora un ETA per 1.8CE?
Jonathan Day

4

esiste una relazione generale tra i prezzi, la quantità, lo sconto, le tasse e le loro precisazioni.

Assume:
x is the price
y is the percentage
s is the rounded sub-total

2 Directions
A) incl. Tax => excl. Tax => incl. Tax
B) excl. => incl. => excl.

Il problema importante è il totale parziale arrotondato che sto calcolando con il max. Errore. 2 cifre frazionarie significano 5 * 10 ^ -3

A) x * 10 ^ 2 / (y + 10 ^ 2) // s * (y + 10 ^ 2) / 10 ^ 2

B) x * (y + 10 ^ 2) / 10 ^ 2 // s * 10 ^ 2 / (10 ^ 2 + y)

A)
Subtotal precision 2 fractional digits:
5*10^-3*(y+10^2)/10^2 => (y+10^2)/10^2<1 => no y
3 fractional digits:
5*10^-4*(y+10^2)/10^2 => (y+10^2)/10^2<10 => y<900
4 fractional digits:
5*10^-5*(y+10^2)/10^2 => (y+10^2)/10^2<10^2 => y<90900
(must be a very bad country)

......

B)
Subtotal precision 2 fractional digits:
(5*10^-3)*10^2/(10^2+y) => 10^2/(10^2+y)&lt;1 => every y

Se vuoi calcolare con sconti o tasse e vuoi ricalcolare il prezzo, la prossima spiegazione può essere interessante per te. Si prega di essere consapevoli dal momento che non conosco alcun caso nel front-end, è possibile che ci sia un calcolo stagista. A) Totale => Imposta / Sconto => Totale B) Imposta / Sconto => Totale => Imposta / Sconto

A) x * y / 10 ^ 2 // s * 10 ^ 2 / y

B) x * 10 ^ 2 / y // s * y / 10 ^ 2

A) Subtotal precision 2 fractional digits:
(5*10^-3)*10^2/y => 10^2/y < 1 => y>10^2
Subtotal precision 3 fractional digits:
(5*10^-4)*10^2/y => 10^2/y < 10 => y>10
Subtotal precision 4 fractional digits:
... 10^2/y < 10^2 => y>1

Con una precisione di 2 cifre, è necessario disporre di una velocità senza CIFRE FRAZIONALI. Esempio: totale: 15,15 aliquota fiscale: 0,3% => imposta 0,04545 => arrotondata 0,0455 imposta: 0,0455 => totale: 15,17

B) Subtotal precision 2 fractional digits:
(5*10^-3)*y/10^2 => y/10^2 &lt; 1 => y < 10^2

se a è la precisione, allora deve essere y inferiore a + 2.

Si prega di notare se si maneggiano quantità. L'errore verrà moltiplicato. Quindi, se hai un massimo di 10 ^ 5, devi avere una precisione di 7. Questo è preoccupante solo se stai calcolando con offset!

AGGIUNTA (9.10.2013 Magento versione 1.7.0.2) Brutto <=> Netto e tasse // America <=> vecchi set Europa sono numeri interi (centesimi) e la mappatura
f (x) = round (a * x) a> 1 è non biiettivo. Nelle mie parole: non per ogni prezzo incl. esiste un prezzo escl. oppure A volte ci sono 2 prezzi incl. per un prezzo escl. oppure Puoi ottenere 2 risultati diversi a seconda di come calcoli

Esempio reale dalla Germania:

Si tenta di inserire un prezzo incl. tasse: 19,95 Ottieni 16,76 (2 cifre) come prezzi escl. le tasse (19%). Se calcoli le tasse del 19% che ottieni (16,76 * 0,19) 3,18. (Attenzione: 19,95 * 019 / 1,19 ~ 3,19)

Quindi c'è una differenza di 1 centesimo. 16,76 => 19,94 16,77 => 19,96

Non esiste un prezzo di 19,95 in america - terra di netto.

Quindi calcola con i prezzi originali per quanto possibile. Per includere i prezzi utilizzare il prezzo inserito e le tasse (numero non funzionante).

PayPal ha questo controllo delle frodi - ora non ne sono sicuro - ma PayPal aggiunge semplicemente il numero fornito da Magento. vedi http://fabiankrueger.de/blog/magento-und-paypayl-rundungsfehler/ Se questo non è vero e PayPal ricalcola le tasse o il totale, questo problema non è risolvibile, altrimenti i prezzi - sbagliati o giusti - sono mostrati prima in Magento . Risolvilo lì. Per me sembra funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.