# Bestellung Positionen Rabattieren - Backend

**URL:** https://forum.shopware.com/t/bestellung-positionen-rabattieren-backend/33986
**Category:** Programmierung
**Created:** [28. Januar 2016 um 08:38 UTC](https://forum.shopware.com/t/bestellung-positionen-rabattieren-backend/33986 "2016-01-28T08:38:49Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![camelmoto](https://avatars.discourse-cdn.com/v4/letter/c/eb8c5e/32.png) [@camelmoto](https://forum.shopware.com/u/camelmoto)
#### Post date: [28. Januar 2016 um 08:38 UTC](https://forum.shopware.com/t/bestellung-positionen-rabattieren-backend/33986/1 "2016-01-28T08:38:49Z")

</div>

Hallo liebe Community,

bin schon 2 Tage beschäftigt mit folgende Problem:

&nbsp;

**Aufgabe:**

Im Backend unter Kunden -\> Bestellungen -\> Bestellung -\> Positionen soll eine neue Spalte „Rabatt %“ eingepflegt werden. Anhand diese Spalte sollen einzelne Positionen Rabattiert werden können.

&nbsp;

**Was ist bereits getan:**

Ich habe bereits die Tabelle „s\_order\_details\_attributes“ um ein Attribut „positionDiscount“ erweitert. Spalte „Rabatt %“ hinzugefügt. Also Rabatt wird erfolgreich gespeichert und ausgelesen und im Backend dargestellt.

&nbsp;

**Problem:**

Beim Speichern „savePositionAction()“ muss ich „invoice\_amount“ und „invoice\_amount\_net“ modifizieren. Die Logik zum Berechnen habe ich unter „Models\Order\Order.php“ in die Funktion „calculateInvoiceAmount“ gefunden. Leider kann ich mich an diese Funktion nicht anhooken da es hier um eine Model geht ☹

&nbsp;

Hat jemand einen Vorschlag oder Idee wie ich dieses Problem lösen kann?

&nbsp;

Danke!

Grüße

&nbsp;

---

<div class="post-metadata">

### Author: ![camelmoto](https://avatars.discourse-cdn.com/v4/letter/c/eb8c5e/32.png) [@camelmoto](https://forum.shopware.com/u/camelmoto)
#### Post date: [28. Januar 2016 um 15:27 UTC](https://forum.shopware.com/t/bestellung-positionen-rabattieren-backend/33986/2 "2016-01-28T15:27:31Z")

</div>

Verstehe irgendwie nicht, warum solche Logik in eine Model ausgelagert wird. Das mag natürlich sin machen, aber man muss doch die Möglichkeit haben diese Logik verändern zu können.

Im Frontend musste ich auch die Gesamtsumme Modifizieren, da diese Rabatte schon dort zugewiesen werden, aber im Frontend gibt es eine Funktion „getBasketArticles“ die mir zwei schöne Filter Events bietet und damit die Möglichkeit die Berechnung modifizieren zu können.

---

<div class="post-metadata">

### Author: ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)
#### Post date: [28. Januar 2016 um 16:59 UTC](https://forum.shopware.com/t/bestellung-positionen-rabattieren-backend/33986/3 "2016-01-28T16:59:55Z")

</div>

Hi,

ja, in die Models gehört solche Logik nicht und im Normalfall vermeiden wir das auch. In dem Fall wurde das (meines Wissens) so gemacht, weil wir über die Order-Lifecycle-Events direkt die Lagerbestände oder die Order-History aktualisieren können. Finde ich auch nicht übermäßig prickelnd - von daher kannst du vielleicht echt eben ein Ticket anlegen - meine Stimme hast du :).

Als Lösung würde mir gerade echt nur einfallen, dich selbst auf die Lifecycle-Events zu hängen, dir zu “merken”, welche Order-Models verändert wurden - und dann am Ende des Dispatches über DBAL / SQL deine Rabatt-Kalkulation vorzunehmen - als Übergangslösung. Sonst kommst du da mMn echt schwer ran, leider.&nbsp;

Besten Gruß,

Daniel

---

<div class="post-metadata">

### Author: ![camelmoto](https://avatars.discourse-cdn.com/v4/letter/c/eb8c5e/32.png) [@camelmoto](https://forum.shopware.com/u/camelmoto)
#### Post date: [29. Januar 2016 um 07:59 UTC](https://forum.shopware.com/t/bestellung-positionen-rabattieren-backend/33986/4 "2016-01-29T07:59:31Z")

</div>

Hallo Daniel,

ich bedanke mich für dein Antwort. Das hilft mir schon mal weiter. Ich werde dann gleich ein Ticket anlegen.

&nbsp;

Grüße,

Nikita

---

<div class="post-metadata">

### Author: ![camelmoto](https://avatars.discourse-cdn.com/v4/letter/c/eb8c5e/32.png) [@camelmoto](https://forum.shopware.com/u/camelmoto)
#### Post date: [29. Januar 2016 um 08:20 UTC](https://forum.shopware.com/t/bestellung-positionen-rabattieren-backend/33986/5 "2016-01-29T08:20:09Z")

</div>

Ticket Status kann man [hier](https://issues.shopware.com/#/issues/SW-13974?status=1&status=3&status=10001&status=4&status=10010&status=10025&status=10017&swversion=In%20Verification%20%28Core%29) verfolgen.

---

<div class="post-metadata">

### Author: ![benick](https://avatars.discourse-cdn.com/v4/letter/b/85e7bf/32.png) [@benick](https://forum.shopware.com/u/benick)
#### Post date: [5. Juli 2016 um 09:35 UTC](https://forum.shopware.com/t/bestellung-positionen-rabattieren-backend/33986/6 "2016-07-05T09:35:59Z")

</div>

Hallo,

hast du hier eine Lösung gefunden? Würde mich auch interessieren.

Grüße,

Benick
