# Abschlag Zahlungsart runden?

**URL:** <https://forum.shopware.com/t/abschlag-zahlungsart-runden/800>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [23. November 2010 um 18:42 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800 "2010-11-23T18:42:19Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [23. November 2010 um 18:42 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/1 "2010-11-23T18:42:19Z")

</div>

N’Abend! Wir überlegen, für die Zahlungsart Vorkasse einen prozentualen Abschlag zu gewähren. Allerdings kommen da natürlich teils sehr unrunde Beträge raus. Ein Artikel mit einem Preis von 27,65 EUR führt z. B. zu einem Abschlag von 0,83 EUR. Gibt es die Möglichkeit, diesen Abschlag immer auf die nächsten 5 oder 10 Cent aufzurunden? Allerdings dürfte das nicht nur so ausgegeben werden, sondern müsste dann natürlich auch bei der Bestellung in die DB so geschrieben werden. Die Frage ist also wo / wie der Abschlag tatsächlich berechnet wird. Kann da jemand was zu sagen … ? AS

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [24. November 2010 um 09:11 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/2 "2010-11-24T09:11:07Z")

</div>

Schau mal in die sAdmin.php - ca. Zeile 3379. Da könntest du eingreifen - das wird dann auch direkt in die Datenbank übernommen etc. Konkret ist es die Zeile: $percent = round($amount / 100 \* $payment[‘debit\_percent’], 2); ` if(!empty($payment['debit\_percent'])&&(empty($dispatch)||$dispatch['surcharge\_calculation']!=2)) { $sql = 'SELECT SUM(quantity\*price) as amount FROM s\_order\_basket WHERE sessionID=? GROUP BY sessionID'; $amount = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>GetOne($sql, array($this-\>sSYSTEM-\>sSESSION\_ID)); $percent = round($amount / 100 \* $payment['debit\_percent'], 2); if ($percent\>0) { $percent\_name = $this-\>sSYSTEM-\>sCONFIG["sPAYMENTSURCHARGEADD"]; } else { $percent\_name = $this-\>sSYSTEM-\>sCONFIG["sPAYMENTSURCHARGEDEV"]; } if (empty($this-\>sSYSTEM-\>sUSERGROUPDATA["tax"]) && !empty($this-\>sSYSTEM-\>sUSERGROUPDATA["id"])){ $percent\_net = $percent; } else { $percent\_net = round($percent/(100+$discount\_tax)\*100,2); } $sql = ' INSERT INTO s\_order\_basket (sessionID, articlename, articleID, ordernumber, quantity, price, netprice, datum, modus, currencyFactor) VALUES (?, ?, 0, ?, 1, ?, ?, NOW(), 4, ?) '; $this-\>sSYSTEM-\>sDB\_CONNECTION-\>Execute($sql,array( $this-\>sSYSTEM-\>sSESSION\_ID, $percent\_name, $percent\_ordernumber, $percent, $percent\_net, $currencyFactor )); } `

---

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [1. Dezember 2010 um 10:47 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/3 "2010-12-01T10:47:27Z")

</div>

Anschlussfrage: Gibt’s da auch was … für die MwSt.? Hintergrund: Ich habe gesehen, dass Ihr Euch schon sehr viel Mühe gegeben habt bei der Abbildung von Länderspezifika. Konkret für die Schweiz verwendet Ihr z. B. bereits als Tausender-Trennzeichen " ’ " statt " . " und als Dezimal-Trennzeichen " . " statt " , ". Das ist soweit super. Es gibt aber für die Schweiz noch ein Spezifikum, das nicht ganz so bekannt ist. Die kleinste Geld-Münze in der Schweiz sind 5 Rappen. Aus diesem Grunde lauten alle Preise in der Schweiz hinten auf 0 oder 5, da niemand einen Betrag von z. B. 2.99 CHF in Bar bezahlen kann. Es gibt dafür schlicht keine Münzen. 🕶 Das wirkt sich auf den bargeldlosen Bereich insofern aus, als auch dort alles, aber auch wirklich alles hinten auf 0 oder 5 gerundet wird. Bei den Preisen kann ich ja selbst dafür sorgen, dass die entsprechend aussehen. Aber bei Zuschlägen, Abschlägen und MwSt. ist das eben nicht so einfach. Eben alles, was dann irgendwie prozentual aus den Preisen resultiert. Wenn Ihr da für die MwSt.-Berechnung einen HotFix für die Schweiz hättet, könntet Ihr bei Schweizern richtig punkten. 😉 Und ich habe schon gesehen, dass davon auch hier im Forum welche unterwegs sind … [tax\_neu = round(tax\_alt/0.05;0)\*0.05] AS

---

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [1. Dezember 2010 um 12:18 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/4 "2010-12-01T12:18:59Z")

</div>

Also, ich habe mal versucht zumindest das mit dem Vorkasse-Rabatt umzusetzen. Habe also in der sAdmin.php die Zeile … `$percent = round($amount / 100 \* $payment['debit\_percent'], 2);` … durch … `$percent = round(($amount / 100 \* $payment['debit\_percent']) / 0.05, 0) \* 0.05;` … ersetzt. Leider ohne Erfolg. ☹ Habe immer noch “Abschlag für Zahlungsart 10,19 EUR”. ??? AS

---

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [1. Dezember 2010 um 12:22 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/5 "2010-12-01T12:22:03Z")

</div>

… so funktioniert es: `$percent = round($amount / 100 \* $payment['debit\_percent'] / 0.05, 0) \* 0.05;` Er mochte, warum auch immer, die Klammer nicht. Jetzt bräuchte ich das nur noch für die MwSt. Und noch die Frage: updatesicher geht das so wohl nicht, oder? Denn die sAdmin.php wird wohl ziemlich oft bei Updates betroffen sein, oder? AS

---

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [8. Januar 2011 um 22:09 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/6 "2011-01-08T22:09:56Z")

</div>

N’Abend! Habe heute mal einen Gutschein-Code angelegt. Damit gibt es im Warenkorb 5% Rabatt. Allerdings habe ich jetzt wieder das Problem mit den „krummen“ Zahlen. Denn auch der Gutschein-Rabatt sollte, wie oben bereits der Abschlag bei Vorkasse-Zahlung, auf 5 Rappen gerundet werden. Ich finde aber den Code nicht, wo das berechnet wird und anzupassen wäre. Bin die sAdmin.php jetzt schon rauf und runter … Hat mir da jemand einen Ansatzpunkt, wie ich das finde? AS

---

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [9. Januar 2011 um 12:38 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/7 "2011-01-09T12:38:00Z")

</div>

Moin! Also, ich habe da was gefunden in \engine\core\class\sBasket.php ab Zeile 325. Dort ist die public function sAddVoucher. Ab Zeile 500 ist dann der relevante Code: `if ($ticketResult["percental"]){ $value = $ticketResult["value"]; $vouchername .= " ".$value." %"; $ticketResult["value"] = ($amount["totalAmount"] / 100) \* floatval($value); }` Habe den mal ersetzt durch: `if ($ticketResult["percental"]){ $value = $ticketResult["value"]; $vouchername .= " ".$value." %"; $ticketResult["value"] = ($amount["totalAmount"] / 100) \* floatval($value); $ticketResult["value"] = round($ticketResult["value"] / 0.05, 0) \* 0.05 - 0.05; }` Also, die letzte Zeile kam hinzu. Scheint zu funktionieren. Könnte sich das mal jemand noch anschaun, ob ich da auch keinen Mist baue? :wtf: Wäre super … 🙂 AS

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [10. Januar 2011 um 07:00 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/8 "2011-01-10T07:00:49Z")

</div>

Moin, sieht okay aus 😉

---

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [10. Januar 2011 um 07:09 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/9 "2011-01-10T07:09:58Z")

</div>

Moin! Danke. So ganz, ganz langsam arbeite ich mich rein … 🙂 Wünsch Euch einen guten Start in die Woche! AS

---

<div class="post-metadata">

**Author:** ![webundco](https://avatars.discourse-cdn.com/v4/letter/w/9d8465/32.png) [@webundco](https://forum.shopware.com/u/webundco)\
**Post date:** [26. November 2012 um 14:32 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/10 "2012-11-26T14:32:41Z")

</div>

Gibt es mittlerweilen eine updatesichere Lösung für die Schweiz-spezifische Rundungsproblematik (kleinste Geldeinheit 5 Rappen) für Preise, Rabatte und MWST?

---

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [26. November 2012 um 14:37 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/11 "2012-11-26T14:37:37Z")

</div>

Moin! Für uns ergibt sich diese Frage auch erneut beim anstehenden Wechsel auf die SW4. Es hat sich ja betreffend SubShops, Währungen, Steuersätze usw. einiges getan … aber an dem Punkt gibt es scheinbar noch keine wirkliche Lösung, oder? LG, AS

---

<div class="post-metadata">

**Author:** ![star7591](https://avatars.discourse-cdn.com/v4/letter/s/4da419/32.png) [@star7591](https://forum.shopware.com/u/star7591)\
**Post date:** [3. Dezember 2012 um 13:01 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/12 "2012-12-03T13:01:51Z")

</div>

Eigentlich benötigen wir nur eine Rundung auf die Totalsumme (inkl. MwSt, inkl. Rabatte, etc.) und nicht für jede einzelnde Summe. Das führt sonst auf die berühmte Rundungsdifferenz.

---

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [22. Juni 2013 um 10:38 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/13 "2013-06-22T10:38:10Z")

</div>

[quote=„Stefan Hamann“]Schau mal in die sAdmin.php - ca. Zeile 3379. Da könntest du eingreifen - das wird dann auch direkt in die Datenbank übernommen etc. Konkret ist es die Zeile: $percent = round($amount / 100 \* $payment[‚debit\_percent‘], 2); [/quote] Moin! Hat sich hier etwas verändert? Irgendwie funktioniert das nicht mehr in der SW 4. Wird in der 4.0.8 der ABschlag für Zahulngsart woanders berechnet? LG, AS

---

<div class="post-metadata">

**Author:** ![Alpine\_Swift](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@Alpine\_Swift](https://forum.shopware.com/u/Alpine_Swift)\
**Post date:** [22. Juni 2013 um 11:32 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/14 "2013-06-22T11:32:57Z")

</div>

Weil es schon ein Weilchen her ist … FALL 1: Um die Rappenrundung bei prozentualen Gutscheinen zu gewährleisten haben wir in der sBasket.php die Zeile … ` $ticketResult["value"] = ($amount["totalAmount"] / 100) \* floatval($value); ` … ergänzt durch … ` $ticketResult["value"] = ($amount["totalAmount"] / 100) \* floatval($value); $ticketResult["value"] = round($ticketResult["value"] / 0.05, 0) \* 0.05; ` … und das funktioniert in der 4.0.8 genau wie in der 3.5 ganz prima. FALL 2: Um die Rappenrundung bei prozentualen Abschlägen auf eine Zahlungsart zu gewährleisten haben wir in der sAdmin.php die Zeile … ` $percent = round($amount / 100 \* $payment['debit\_percent'], 2); ` … ergänzt durch … ` $percent = round($amount / 100 \* $payment['debit\_percent'], 2); $percent = round($percent / 0.05, 0) \* 0.05; ` … und das funktioniert in der 4.0.8 leider nicht. Es greift einfach nicht, hat in der 3.5 aber so funktioniert. Irgendwie scheint Shopware das hier komplett zu ignorieren … ☹ Hat jemand eine Idee? LG, AS

---

<div class="post-metadata">

**Author:** ![weater](https://avatars.discourse-cdn.com/v4/letter/w/ad7895/32.png) [@weater](https://forum.shopware.com/u/weater)\
**Post date:** [3. März 2017 um 10:53 UTC](https://forum.shopware.com/t/abschlag-zahlungsart-runden/800/15 "2017-03-03T10:53:48Z")

</div>

Liebe Shopware Jünger ![Wink](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/b3785da0cbf2c8566cb535dcf55b2730b5224899.png "Wink")

Habe genau das Problem jedoch ist das Thema sehr alt.

Finde die sAdmin.php Zeile gar nicht mehr in der Version 5.0.20.

Gilt das auch noch für die aktuelle Version? Oder wo kann man das verankern damit er bei uns in der Schweiz auf 5 Rappen aufrechnet?

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/f/f6db3c4fede635f88eb9dd8a121ae860fe04c1f0.png)
