FROM CACHE - de_header

Rundungsfehler in Shopify?

Sini
Entdecker
16 0 5

Hallo Leute, 

ich habe gestern bemerkt, daß in der Shopify Order Summary offensichtlich ein Rundungsfehler auftritt. Und zwar bei der Berechnung eines prozentualen Rabatts. 

In meinem Beispiel kostet mein Produkt 79,99€. Wenn ich einen Rabatt-Code für 10% Preisnachlass anwende, dann sollte der absolute Rabattbetrag 8,00€ sein. Weil 10% von 79,99€ eben 7,999 ergibt und das kaufmännisch auf zwei Dezimalstellen gerundet 8,00€ sind und nicht wie - fälschlicherweise in Shopify - 7,99€ sind. Wenn man nun diese 7,99€ von 79,99€ abzieht bleibt 72,00€ übrig. Aber das ist halt auch falsch. 79,99€ abzüglich 10% sind 71,99€ und nicht 72,00€.

An der Stelle wäre das noch zu verschmerzen. Den meisten Kunden wird es eventuell nicht auffallen. Manchen aber schon. 

Das größere Problem stellt für mich folgendes dar:

Ich habe eine App die im Cart die Eingabe von Discount Codes ermöglicht. Liegt ein Produkt mit 79,99€ im Cart, dann wird nach Abzug vom Rabatt als Summe 71,99€ angezeigt. Das ist korrekt. Nur wenn dann der Kunde auf den Paypal Express Button klickt, sendet Shopify einen Gesamtbetrag von 72,00€ an Paypal. Das ist sehr schlecht, weil es für den Kunden nun sehr verwirrend ist warum im Cart 71,99€ angezeigt wird und er in Paypal 72,00€ abgezogen bekommt. 1 Cent mag jetzt nicht die Welt sein, aber es ist eine Ungereimtheit die der Kunde nicht nachvollziehen kann und steigert mit Sicherheit nicht das Vertrauen in meinen Shop.

Kennt jemand dieses Problem und gibt es dafür Abhilfe?

Vielen Dank im voraus!

12 ANTWORTEN 12
Gabe
Shopify Staff
Shopify Staff
7534 1204 1959

Hey @Sini 

Danke für die Angaben bzgl. der Rundung. Dazu möchte ich folgendes zuerst mal feststellen, weshalb deine Preise gerundet werden, und zwar ob du einen gerundeten Währungswert wie {{ amount_no_decimals }} in den Währungs/Zahlungseinstellungen aktiv hast? Dies kann in zwei Szenarien vorkommen und das kann man im Admin ändern -> Einstellungen -> Allgemein -> Währung des Shops -> Formatierung ändern zu sowas wie:

  • €{{amount_with_comma_separator}} EUR

image.png

Das sieht dann ähnlich wie das folgende fiktive Beispiel aus:

image.png

Prüfe bitte auch ob es ein Skript in deinem Theme, das die Werte im Adminbereich überschreibt. Um das zu bestätigen, kann man im Theme nach amount_no_decimals suchen, um zu bestätigen, dass im Hintergrund nicht gerundet wird.

Wenn das ein Shopify Theme ist und du auf einem bezahlten Plan dann können wir das ggf. anschauen als Teil deiner 60-Min Design Time. Schicke uns eine E-Mail hier und lass mich hier die Ticket Nr. wissen.

VG,

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

Sini
Entdecker
16 0 5

Hey @Gabe,

Danke für deine Antwort!

also bei mir sieht es folgendermaßen aus:

Bildschirmfoto 2021-02-03 um 22.16.23.pngBildschirmfoto 2021-02-03 um 22.16.36.png

Ich will die Dezimalstellen natürlich drin haben. Allerdings wüßte ich jetzt nicht wo ich im Theme suchen soll, da der Rundungsfehler erst in der Order Summary im Checkout zu sehen ist. Gebe ich dort einen Rabattcode ein, der um 10% ermäßigt, dann tritt der Fehler auf.

VG

Sini 

Sini
Entdecker
16 0 5

ah, jetzt habe ich doch was entdeckt. Im theme.dev.js steht das hier:

 switch (formatString.match(placeholderRegex)[1]) {
      case 'amount':
        value = formatWithDelimiters(cents, 2);
        break;
      case 'amount_no_decimals':
        value = formatWithDelimiters(cents, 0);
        break;
      case 'amount_with_comma_separator':
        value = formatWithDelimiters(cents, 2, '.', ',');
        break;
      case 'amount_no_decimals_with_comma_separator':
        value = formatWithDelimiters(cents, 0, '.', ',');
        break;
      case 'amount_no_decimals_with_space_separator':
        value = formatWithDelimiters(cents, 0, ' ');
        break;
    }

 

Sini
Entdecker
16 0 5

In theme.min.js i found this:

  switch(a.match(i)[1]){case"amount":o=n(t,2);break;case"amount_no_decimals":o=n(t,0);break;case"amount_with_comma_separator":o=n(t,2,".",",");break;case"amount_no_decimals_with_comma_separator":o=n(t,0,".",",");break;case"amount_no_decimals_with_space_separator":o=n(t,0," ")}return a.replace(i,o)}

But that all looks rather like formatting than changing values. 

Gabe
Shopify Staff
Shopify Staff
7534 1204 1959

Hey @Sini 

Verstehe, da wir mit dem Code vorsichtig umgehen müssen, können unsere Techniker das ggf. anschauen wenn das ein Shopify Theme ist und du auf einem bezahlten Plan (als Teil deiner 60-Min Design Time). Schicke uns eine E-Mail hier und lass mich hier die Ticket Nr. wissen. Du kannst auch gerne auf diese Unterhaltung hier verweisen.

VG,

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

Sini
Entdecker
16 0 5

Ich wüßte jetzt nicht was das mit dem Theme zu tun, da der Rundungsfehler erst im Checkout zu sehen ist. Egal was ich davor eingebe. 

Teste doch mal in einem jungfräulichen Shop die Eingabe eines 10%-Rabatt-Codes bei einem Preis von 79,99 in der Gesamtsumme. 

VG

Sini
Entdecker
16 0 5

Hi @Gabe,

so berechnet das Shopify wenn ich das Debut Theme verwende. Im Checkout der gleiche Fehler:

Bildschirmfoto 2021-02-05 um 01.20.18.png

Und so sollte es berechnet werden:

Bildschirmfoto 2021-02-05 um 01.17.53.png

 

VG

Gabe
Shopify Staff
Shopify Staff
7534 1204 1959

Hey @Sini 

Danke für die Bilder und ich kann voll verstehen warum das verwirrend für die Kunden ist, wenn einmal brutto 71,99 angezeigt wird, und dann brutto 72 im Checkout. Es ist in der Tat nicht das Theme, da hast du recht, sondern es liegt scheinbar daran, dass die Discount App und Shopify beide anders brutto abrunden (siehe meine Rechnung unten). Hast du mit den App Entwickler sprechen können? Ich habe das in der Tat in meinem eigenen Testshop getestet, wie man unten sieht, und folgendes war meine Rechnung:

  • 79,99 mal 10% = 7,999 (wird auf zwei Dezimalstellen aufgerundet da Shopify nur bis zu 2 Stellen berechnet = 7,99 - nicht 8 wie in deinem Bild)
  • 79,99 minus 7,99 = 72

Leuchtet das ein? Deine Discount App zeigt aber 71,99 im Warenkorb an, ist das richtig? 

Wenn du aber nicht einverstanden bist dann schicke uns eine E-Mail hier und wir können das gerne anschauen oder an die App Entwickler weiterleiten, so dass die das mal anschauen warum die App anders abrundet als Shopify.

image.png

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

Sini
Entdecker
16 0 5

Hi @Gabe,

ich benutze keine App mehr. Ich hab sie gelöscht. Den Code im cart.liquid hab ich auf Werkseinstellung zurück gesetzt. Der Fehler tritt in der Order Summary auf. Im Checkout. 

Du schreibst 

  • 79,99 mal 10% = 7,999 (wird auf zwei Dezimalstellen aufgerundet da Shopify nur bis zu 2 Stellen berechnet = 7,99 - nicht 8 wie in deinem Bild)

Das ist aber kein Runden sondern nur Abschneiden. Wenn man 7,999 auf zwei Dezimalstellen kaufännisch rundet, dann muß das 8,00 sein und nicht 7,99. Du kannst das in jedem Taschenrechner der Welt, in jeder Software der Welt testen. Probier in Excel, in Google Sheets. 

Ihr rundet falsch. 

Wo kann ich das umstellen?

VG

Gabe
Shopify Staff
Shopify Staff
7534 1204 1959

@Sini 

Das System macht es aufgrund des folgenden Use-Case:

Da das System auf zwei Dezimal aufrunden muss (es arbeitet z. B. nicht mit der Ziffer 7,999) kann es entweder aufrunden oder runter-runden. In einem Fall spart der Kunde einen Cent und der Händler zahlt drauf. Im anderen Fall das Gegenteil. Die Entwickler haben sich entschieden, dass der Kunde den einen Cent zahlt anstatt der Händler. Sprich, das Berechnungssystem von Shopify sorgt dafür, dass du den Cent nicht verlierst, wenn du einen Rabatt verwendest.

Wie gesagt, das ist teil des derzeitigen Systemverhalten und du kannst uns eine E-Mail hier schicken wenn du damit nicht einverstanden bist, und wir können das gerne anschauen. Viel werden wir da aber nicht machen können ausser das für ein zukünftiges release in Anbetracht zu nehmen. Ändern wir das aber zugunsten des Kunden, werden viele andere Händler nicht einverstanden sein, wenn du verstehst was ich meine.

Lass mich hier die Ticket Nr. wissen, so dass ich das an unsere Entwickler beschleunigen kann. Hast du auch den App Code erfolgreich entfernen können? 

VG,

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

Sini
Entdecker
16 0 5

Hi @Gabe,

Danke für deine ausführliche Schilderung.

Ja ich verstehe das. 

Ich sehe es aber auch so, daß aus verkaufspsychologischer Sicht nach Abzug des Rabatts ein Preis von 71,99€ "deutlich niedriger" wirkt als 72,00€. Eigentlich sollte das jeder Verkäufer verstanden haben. Dieser eine gesparte Cent kann die Verringerung der Conversion niemals aufwiegen. Jedenfalls aus meiner Sicht.

Zudem sollten nicht Entwickler entscheiden wie gerundet wird sondern eure UX Consultants wenn ich mir diese Empfehlung erlauben darf. Oder wenn nicht die, dann sollte man sich an kaufmännischen Buchhaltungsrichtlinien halten. Aber ich weiß auch wie es oft läuft und will euch nun nicht erzählen wie ihr euren Job machen sollt. Ich hätte halt gerne eine Lösung die für meine Kunden transparent ist. Die Discount Stacking App für den Cart mußte ich wieder entfernen weil sie nicht richtig funktioniert. Aufgrund von beschränkten Möglichkeiten der API. Und den PayPal Express Checkout hab ich nun auch entfernt, insofern fällt der Fehler nicht so stark auf, weil für meine Kunden keine zwei verschiedenen "Zahlendimensionen" nebeneinander auftauchen werden. 

Ich hab aber gesehen, daß der Shopify Plus Plan stacked discounts im Cart ermöglicht. Insofern werde ich halt warten bis ich mir den Plus Plan leisten kann und das dann umsetzen. Bis dahin gibts halt nur Rabatt im Checkout zu sehen.

Ich hab dem Support eine Email geschickt. Die Ticketnummer lautet: 22170454

Ich freue mich über weitere Nachrichten und falls es keine Änderung der Rundungsmethode geben wird, über Vorschläge für einen Workarround.

Vielen Dank nochmal für deine Mühe und Unterstützung @Gabe!

VG

Sini

Gabe
Shopify Staff
Shopify Staff
7534 1204 1959

@Sini 

Da hast du recht und wenn ich "Entwickler" sage dann meine ich in der Tat unser UX Team. Diesen Begriff verwende ich meist nicht, da nicht alle diesen Begriff verstehen, aber ich sehe, dass du ein Power-User bist und daher bist du hier am richtigen Ort : )

In deinem Beispiel ist es auch so, dass der Sachverhalt auftritt aufgrund eines % Rabattcodes und nicht eines Fixed Price oder Flat Rate Rabbatts. Dein Produkt wird ja schon auf der Produktseite beispielsweise mit €79,99 beworben, was aus den bekannten verkaufspsychologischen Gründen die Wahrscheinlichkeit erhöhen wird, dass der Besucher das Produkt durch den Salesfunnel führen wird ohne abzubrechen, denke ich mal. Wenn dann im letzten Schritt des Checkouts €72 statt €71,99 steht dann wird dies wahrscheinlich keinen großen negativen Effekt haben oder zu einem Abbruch führen, hoffe ich mal auch wenn die 3rd party App einen anderen Betrag angeben hat. Das könnte man aber sicherlich mit etwas A/B Split Testing testen. Siehe mehr dazu hier in unserem Blogartikel hier.

Use-Case

Aber um den technischen Sachverhalt zu erklären, siehe ein typisches Beispiel wie das berechnet wird im Backend und da sieht man wie schwierig der mathematische Umgang mit Cent Bruchteile sein kann:

irb(main):002:0> 8.78 * 0.03
=> 0.26339999999999997

Wenn ein Händler einen 10 %-Rabattcode anbietet und die Produkte vor dem Rabatt beispielsweise auf 30,49 € kommen, wird ein Rabatt von 3,04 € angewandt und nicht 3,05 € (so würden 10 % von 30,49 = 3,049 normalerweise auf den Cent gerundet). Dies kann schlecht für die Buchhaltung sein und ist mühsam abzustimmen. Man ist auch nicht in der Lage, einen Rabattcode aufzurunden (z. B. auf den nächsten Cent). Manchmal wird ein einzelnes Produkt anders gerundet als die Gesamtsumme, wenn es mehrere vom selben gibt - z.B. 2 Produkte, die auf €24.03 rabattiert sind, ergeben zusammen €48.05 statt €48.06. Siehe ein fiktives Beispiel hier:

image.png

ABHILFE(N)

Man kann versuchen, mit den Produktpreisen herumzuspielen (z. B. alle geraden Zahlen zu machen) oder andere Rabattypen wie fixed-price oder flat-rate Rabatte verwenden statt %-Rabatte.

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog