Jaki jest status zaokrąglania problemów w 1.7?


27

Używamy Magento CE 1.7 i mamy różne problemy z zaokrąglaniem. W różnych obliczeniach występuje różnica 0,01 EUR.

Podstawową kwestią może być to, że ceny artykułów zawierają. podatek.

Współprogramiści nadpisali Mage_Core_Model_Store::roundPrice()metodę obliczeń z dokładnością do 4 cyfr. Ale wydaje się, że powoduje to problemy z płatnościami PayPal.

Czy istnieje rozwiązanie tych problemów?

EDYTOWAĆ:

My rzeczywiście próbował oficjalną łatkę rdzenia, który w zasadzie dodaje 4-cyfrowy do zaokrąglania \Mage_Tax_Model_Sales_Total_Quote_Shipping::_round, \Mage_Tax_Model_Sales_Total_Quote_Subtotal::_deltaRoundi \Mage_Tax_Model_Sales_Total_Quote_Tax::_deltaRoundktóry rozwiązuje problem zaokrąglania kupon ale nie problemem PayPal.


O ile pamiętam Magento przechowuje ceny z 4 miejscami po przecinku. Więc jeśli ceny są wprowadzane z 4 miejscami po przecinku, obliczenia są prawidłowe. Ale mogę się mylić.
user487772,

1
Co rozumiesz przez „wkład z 4 punktami dec.”? Ale zaokrąglanie Magento działa z 2 dec. zwrotnica. Myślę też, że interfejs PayPal działa z 2 dec. punkty - wydaje się, że zaczyna się problem.
Alex

Jeśli dobrze pamiętam, jeśli wprowadzisz ceny w admin z 4 kropkami dziesiętnymi, zostaną zapisane w db z 4 kropkami dziesiętnymi. Następnie zostanie zaokrąglony do 2 punktów podczas produkcji, ale zaokrąglenie będzie poprawne, ponieważ cena z 4 miejscami po przecinku zostanie zaokrąglona.
user487772,

Jasne - ale mamy głównie problemy z całkowitą kalkulacją, szczególnie jeśli w grę wchodzą kody kuponów procentowych.
Alex

Och, więc źle zrozumiałem twoje pytanie. Przepraszam.
user487772,

Odpowiedzi:


10

Wiemy o kilku problemach związanych z zaokrąglaniem w ramach podstawowego modułu podatkowego Magento, które obejmują opisane scenariusze. Obecnie pracujemy nad tymi problemami w nadchodzącym wydaniu 1.13. Te problemy z zaokrąglaniem powodują proste sprawdzenie Paypal, które określa, czy elementy zamówienia w koszyku sumują się poprawnie. Wygląda na to, że łatka Fabiana zajmuje się czekiem Paypal w krótkim okresie.

Jeśli masz jakieś pytania, komentarze lub sugestie, w jaki sposób możemy ulepszyć moduł podatkowy Magento, nie wahaj się ze mną skontaktować, ponieważ jestem kierownikiem produktu odpowiedzialnym za podatki.

Pozdrawiam, Chuck


Świetny! Czy dostępny jest jakiś zestaw testów, który pokazuje, które problemy zostaną rozwiązane?
Alex

1
Chuck, czy mógłbyś skonfigurować swoje dane użytkownika w celu weryfikacji?
zyskuje

Testy są wyłącznie wewnętrzne. Jeśli chodzi o więcej szczegółów na temat znanych problemów z zaokrąglaniem - to trochę interesujące. Klient postrzega je jako powiązane z niektórymi konfiguracjami podatkowymi przy użyciu określonych kombinacji ceny, stawki podatkowej, rabatów itp. Nasze podejście do 1.13 polegało na identyfikacji typowych konfiguracji podatkowych i zapewnieniu, że # kombinacje nie będą matematycznie generować błędów zaokrąglania i oznaczać pewne konfiguracje (małe skrzynki narożne) jako niebezpieczne konfiguracje, których należy unikać.
Chuck

Trochę nie na temat, ale czy to oznacza, że ​​będzie także edycja CE 1.8?
Siergiej Guk,

Tak - wydania CE opóźniają wydania EE o około miesiąc. 1.13 to kolejna wersja EE.
Chuck

7

Dzięki Andreasowi Vogtowi buduję moduł, aby naprawić okrągły błąd Paypal. Andreas dał mi kilka podstawowych plików zhackowanych i zrobiłem moduł. Sprawdza, czy sumy są poprawne, a jeśli nie, jest poprawiane.

Afaik główny hack jest testowany na wolności. Wiele osób prosiło o moduł, ale żaden onw nie dał mi opinii, czy to działa. Ale jest testowany jednostkowo! (tylko wtedy, gdy przepisanie działa, ponieważ nie miałem pojęcia, na czym polega problem z paypal ;-))

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


1
Hm ... który błąd naprawia? Wygląda jak błąd transferu elementów koszyka. W rzeczywistości wyłączyliśmy transfer wózka. I czy należy go stosować z 4-cyfrową zaokrągloną łatką?
Alex

Czy jest więcej niż jeden problem? Tak jak powiedziałem, nie mam pojęcia, co to naprawia - jeśli występuje więcej niż jeden problem :(
Fabian Blechschmidt

5

Mamy do czynienia zarówno z błędem zaokrąglania paypal, jak i problemem z kodami kuponów ze 100% zniżką. Mamy tylko problemy z cenami (np. 3,99 EUR włącznie z podatkiem), gdzie cena netto na trzeciej cyfrze ma wartość 5 (3325). Tak więc podatek (tutaj z 20%) ma na trzeciej cyfrze 5 (0,665). Jeśli więc zaokrąglisz i dodasz obie ceny (co robi PayPal i Magento), całkowita kwota jest o 0,01 EUR wyższa niż cena podstawowa (4,00 EUR).

Właściwa kakulacja powinna wynosić 3,32 EUR netto + 0,67 EUR podatku = 3,99 EUR

Ponieważ próbujemy również znaleźć ogólne rozwiązanie, dajemy szansę na zaokrąglenie paypal!


świetnie, powiedz mi, jeśli masz problemy, chętnie pomogę i zobaczę poprawkę na wolności i w razie potrzeby debuguję!
Fabian Blechschmidt

1
Informacje, które opisałeś, zostały naprawione w naszym nadchodzącym wydaniu (1.8 CE / 1.13 EE).
Chuck,

@ Chuck Właśnie przetestowałem ten scenariusz z Mage_Tax_Model_Sales_Total_Quote_Tax od 1.13.0.1 i wygląda na to, że problem został rozwiązany jako zamiennik drop-in w projekcie 1.12. Dziękuję bardzo. Czy jest jeszcze ETA dla 1.8CE?
Jonathan Day

4

istnieje ogólny związek między cenami, ilością, rabatem, podatkiem i ich dokładnością.

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.

Ważną kwestią jest zaokrąglona suma częściowa, którą obliczam z wartością max. Błąd. 2 cyfry ułamkowe oznaczają 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

Jeśli chcesz obliczyć rabaty lub podatki i chcesz przeliczyć cenę, następne wyjaśnienie może być dla Ciebie interesujące. Należy pamiętać, ponieważ nie znam żadnego przypadku w interfejsie, możliwe jest, że istnieje obliczenie stażysty. A) Razem => Podatek / Rabat => Razem B) Podatek / Rabat => Razem => Podatek / Rabat

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

B) x * 10 ^ 2 / r // s * r / 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

Z dokładnością do 2 cyfr, musisz mieć stawkę BEZ CYFROWYCH CYFROWYCH. Przykład: Razem: 15,15 stawka podatku: 0,3% => podatek 0,04545 => zaokrąglony 0,0455 podatek: 0,0455 => ogółem: 15,17

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

jeśli a jest dokładnością, to musi być y mniejsze niż + 2.

Uwaga: jeśli zajmujesz się ilościami. Błąd zostanie pomnożony. Więc jeśli masz maksimum 10 ^ 5, musisz mieć dokładność 7. To jest niepokojące, jeśli obliczasz z przesunięciem!

DODATEK (9.10.2013 Magento wersja 1.7.0.2) Brutto <=> Netto i podatki // Ameryka <=> stare zestawy europejskie są liczbami całkowitymi (centami), a odwzorowanie
f (x) = okrągłe (a * x) a> 1 wynosi nie bijective. Moje słowa: Nie za każdą cenę włącznie. istnieje cena bez. lub Czasami są 2 ceny włącznie. za jedną cenę bez. lub Możesz uzyskać 2 różne wyniki w zależności od sposobu obliczania

Przykład z Niemiec:

Próbujesz wprowadzić cenę z VAT. podatki: 19,95 Otrzymujesz 16,76 (2 cyfry), ponieważ ceny nie zawierają. podatki (19%). Po obliczeniu 19% podatków otrzymujesz (16,76 * 0,19) 3,18. (Należy pamiętać: 19,95 * 019 / 1,19 ~ 3,19)

Jest więc różnica 1 centa. 16,76 => 19,94 16,77 => 19,96

W Ameryce nie ma ceny 19,95 - krainy netto.

Oblicz więc z oryginalnymi cenami, o ile to możliwe. Do uwzględnienia cen należy użyć wprowadzonej ceny i podatków (zepsuty numer).

PayPal ma tę kontrolę oszustw - teraz nie jestem pewien - ale PayPal po prostu dodaje liczbę, którą daje jej magento. patrz http://fabiankrueger.de/blog/magento-und-paypayl-rundungsfehler/ Jeśli nie jest to prawdą, a PayPal ponownie oblicza podatek lub sumę, problemu nie można rozwiązać, w przeciwnym razie ceny - błędne lub prawidłowe - zostaną pokazane wcześniej w Magento . Rozwiąż to tam. Wydaje mi się, że to działa.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.