Hi, gibt es einen Grund, dass in der sArticle der Preis der Staffeln erst auf 3 Stellen gerundet wird, und dann später auf 2? Da kommt es zu bösen Fehlern. Beispiel: Function sCalculatingPrice-> $price = $this->sFormatPrice(round($price*(100+$tax)/100,3)); 0,247478991596639 * 119 / 100 = 0,2945000000000004 = 0,295 Und später dann in der Function sFormatprice-> $price = $this->sRound($price); Also kommt dann 0,30€ raus. Gibt es einen Sinn dahinter, welcher mir Unklar ist? Bitte um Hilfe. Danke
Hi ottscho, soweit ich informiert bin, steht das Thema Preisberechnung ebenfalls zu Shopware 4 auf der Roadmap bzw. wird geprüft. Dazu gibt es hier und im Trac einige Hinweise und Tickets. Bei deinem Fall kann ich jetzt allerdings im Moment noch kein Ptokem erkennen. Das auf zwei Stellen gerundet wird ist ja kein Fehler?! 29,5 Cent kann man ja nicht bezahlen Oder kannst du genauer beschreiben, an welcher Stelle das bei dir Probleme macht? PS: wenn du netto Preise im Shop anbietest, z.B. in der Händlergruppe, so empfehle ich die Preise auch in netto zu hinterlegen. So umgehst du immer die Umrechnungen. Bei Shopware werden die Preise nämlich netto gespeichert.
[quote=„harald“]Hi ottscho, soweit ich informiert bin, steht das Thema Preisberechnung ebenfalls zu Shopware 4 auf der Roadmap bzw. wird geprüft. Dazu gibt es hier und im Trac einige Hinweise und Tickets. Bei deinem Fall kann ich jetzt allerdings im Moment noch kein Ptokem erkennen. Das auf zwei Stellen gerundet wird ist ja kein Fehler?! 29,5 Cent kann man ja nicht bezahlen Oder kannst du genauer beschreiben, an welcher Stelle das bei dir Probleme macht? PS: wenn du netto Preise im Shop anbietest, z.B. in der Händlergruppe, so empfehle ich die Preise auch in netto zu hinterlegen. So umgehst du immer die Umrechnungen. Bei Shopware werden die Preise nämlich netto gespeichert.[/quote] Hi Harald, 2 Stellen nach dem Komma wären ja korrekt. Aber in meinem Beispiel wird der Preis erst auf 3 Stellen gerundet und dann auf 2. Das Verfälscht den Preis um 1 Cent. 0,247478991596639 * 119 / 100 = 0,2945000000000004 Wenn ich den Preis nun direkt auf 2 Stellen runde, würde der korrekte Preis erscheinen. 0,29€ Aber erst auf 3 Stellen runden 0,2945 und später im Verlauf der Programmierung dann auf 2 Stellen ergibt 0,30€ Ich hoffe ich habe es nun verständlich erklärt. Danke für dein Feedback. P.s. Die Preise kommen aus dem ERP und sind in dem Beispiel Bruttopreise
Hi, vielleicht hilft das weiter post19044.html?#p19044 Scheint also zusammen zuhängen. Ggf. hilft Dur due Änderung. Schaun wa mal was mit Shopware 4 noch in dieser Richtung kommt.
[quote=„harald“]Hi, vielleicht hilft das weiter post19044.html?#p19044 Scheint also zusammen zuhängen. Ggf. hilft Dur due Änderung. Schaun wa mal was mit Shopware 4 noch in dieser Richtung kommt.[/quote] Das sieht ganz gut aus. Werde ich morgen mal testen. Danke dir
Hi Harald, leider keine Lösung für mich. Anbei ein bisschen Mathe für den Abend Folgendes kann ich berichten: In der Shopware DB sind die Nettopreise angegeben: Ab 1 Stück: netto 0,2605042016806723 / brutto 0,31 Ab 200 Stück: netto 0,247478991597 / brutto 0,29450000000043 Bei “Ab 1 Stück” stimmt die Rechnung noch komplett. Z.B. 100 Stück Brutto: 100 x 0,31 = 31,00 € Netto: 100 x 0,2605042016806723 = 26,05042016806723 = 26,05€ MwSt: 31,00€ - 26,05 = 4,95 Als Dreisatz: 31 / 119 * 19 = 4,949579831932773 = 4,95 Also identisch! Bei “Ab 200 Stück” passt es rein rechnerisch nicht mehr. Brutto1: 200 x 0,29450000000043 = 58,900000000086 = 58,90€ Brutto2: 200 x 0,29 = 58€ Netto1: 200 x 0,2605042016806723 = 52,10084033613446 = 52,10€ Netto2: 200 x 0,26 = 52€ MwSt1: 58,900000000086 - 52,10084033613446 = 6,79915966395154 = 6,80€ MwSt2: 58 - 52 = 6,00€ Shopware subtrahiert den Netto-Betrag vom Brutto-Betrag um die MwSt zu erhalten. Rechne ich die MwSt im Dreisatz, kommt dies raus: MwSt1: 58,900000000086 / 119 * 19 = 9,404201680686 = 9,40 MwSt2: 58 / 119 * 19 = 9,260504201680672 = 9,26 Meiner Meinung nach, könnte ich das problem nur lösen, wenn der MwSt Betrag und der Netto Betrag vom Brutto abgeleitet wird. Was meinst du?