# Gutscheine - Prozentual / Fehler

**URL:** https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941
**Category:** Shopware 3.5
**Tags:** programming
**Created:** [29. April 2013 um 09:58 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941 "2013-04-29T09:58:50Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [29. April 2013 um 09:58 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/1 "2013-04-29T09:58:50Z")

</div>

Hallo, ich manipuliere bei Artikel den Preis. Leider wird bei den Gutscheinen (10%) der original Preis verwendet und nicht der errechnete Artikelpreis. Ich kann es mir aber nicht erklären. Ich habe in der sBaset - addVoucher mal eine Dumpausgabe eingebaut. [code] $sql = " SELECT s\_order\_basket.\*, ad.packunit, ad.minpurchase,taxID,ad.instock AS `instock`, suppliernumber, ad.maxpurchase, ad.purchasesteps, ad.purchaseunit, ad.unitID, laststock, ad.shippingtime, ad.releasedate, ad.releasedate AS sReleaseDate,stockmin, su.description AS itemUnit, s\_order\_basket\_attributes.attribute1 as ob\_attr1, s\_order\_basket\_attributes.attribute2 as ob\_attr2, s\_order\_basket\_attributes.attribute3 as ob\_attr3, s\_order\_basket\_attributes.attribute4 as ob\_attr4, s\_order\_basket\_attributes.attribute5 as ob\_attr5, s\_order\_basket\_attributes.attribute6 as ob\_attr6 FROM s\_order\_basket LEFT JOIN s\_articles\_details AS ad ON ad.ordernumber = s\_order\_basket.ordernumber LEFT JOIN s\_articles a ON (a.id = ad.articleID) LEFT JOIN s\_core\_units su ON su.id = ad.unitID LEFT JOIN s\_order\_basket\_attributes ON s\_order\_basket.id = s\_order\_basket\_attributes.basketID WHERE sessionID=? ORDER BY id ASC, datum DESC "; $sql = Enlight()-\>Events()-\>filter(‚Shopware\_Modules\_Basket\_GetBasket\_FilterSQL‘, $sql, array(‚subject‘=\>$this)); echo "

```
"; var\_dump($sql); echo "

```

"; $getArticles = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>GetAll($sql,array($this-\>sSYSTEM-\>sSESSION\_ID)); echo "

* * *

"; echo "

```
"; var\_dump($getArticles); echo "

```

"; [/code] Interessant ist, schau ich direkt in die DB s\_basket\_oder, so ist der korrekte Preis im Gutschein Datensatz hinterlegt. Frage ich die SQL Query direkt in der DB ab, so erhalten ich auch den Datensatz mit dem korrekten Preis. Schaut man sich aber die Ausgabe von $getArticles aus, so habe ich hier nun den falschen Preis im Gutschein. Warum? Wann oder wie wird der Preis geändert. Zu ‚Shopware\_Modules\_Basket\_GetBasket\_FilterSQL‘ kann ich keinerlei Infos finden. Ihr könnt dies gerne mal hier Testen. Artikel mit Maß 100 x 100 in den Warenkorb legen. Dann den Warekorb anschauen und einen Gutschein ‚aaa‘ hinzufügen. Dann seht ihr die Ausgabe unten… [http://demoshop.vicasy.de/sommerwelten/ … tuch-ibiza](http://demoshop.vicasy.de/sommerwelten/beachwear/178/strandtuch-ibiza) Der Artikel kostet 105€. In der DB ist der Gutschein mit -10.50 enthalten. Die Ausgabe im Frontend ist aber 2 € Warum? Danke für eure Tipps.

---

<div class="post-metadata">

### Author: ![artep](https://avatars.discourse-cdn.com/v4/letter/a/aca169/32.png) [@artep](https://forum.shopware.com/u/artep)
#### Post date: [29. April 2013 um 10:05 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/2 "2013-04-29T10:05:25Z")

</div>

Moin, da gibt es einen Warenkorbfehler!! Und man kann die Artikelanzahl im WK nicht ändern.

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [29. April 2013 um 10:12 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/3 "2013-04-29T10:12:03Z")

</div>

Hi Petra, das mit der Artikelanzahl ändern ist Absicht. Das geht nicht! Fehler sollte es keinen geben, dass sind nur alles DUMP Ausgaben.

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [29. April 2013 um 22:21 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/4 "2013-04-29T22:21:12Z")

</div>

Schieb

---

<div class="post-metadata">

### Author: ![Patrick\_Schucker](https://avatars.discourse-cdn.com/v4/letter/p/a5b964/32.png) [@Patrick\_Schucker](https://forum.shopware.com/u/Patrick_Schucker)
#### Post date: [30. April 2013 um 08:46 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/5 "2013-04-30T08:46:53Z")

</div>

Guten Morgen, wenn man einen weiteren Artikel in den Warenkorb legt funktioniert der Gutschein wieder korrekt. Der Gutschein bezieht sich anscheinend auf deinen „Basispreis“. Dieser liegt glaube ich bei dem Strandtuch bei 19.99€, oder? Du greifst mit deiner Preismanipulation nicht auf Varianten oder ähnliches zu, oder? An der Stelle wo die Preise im Frontend von dir geändert werden scheint etwas nicht so zu laufen wie Shopware es erwartet. Ich bin leider kein Programmierer, ich kann dir daher nicht mehr sagen. Vielleicht postest du hier einmal deine Preismanipulation. Oder Teile davon. Eventuell kann dir dann weiter geholfen werden. Gruß Patrick

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [30. April 2013 um 08:54 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/6 "2013-04-30T08:54:01Z")

</div>

Hi Patrick, danke für deine AW. Der preis wird mi Prinzip manipuliert, wenn der Artikel in den Warekorb gelegt wird. Sprich s\_oder\_basket (add und update) Hier dann der price und nettoprice. Daher verstehe ich es auch nicht. Wenn ich in der DB s\_order\_basket schaue, wird der korrekte Preis angezeit. In der Programmierung sind es 2 Befehle. Es kann doch nicht sein, dass das gleiche SQL Query direkt auf dem Server ein korrektes Ergebnis hat und über den SW Code nicht. Da wird ja nichts gechached. Ich verstehe echt die Welt nicht mehr. Wie gesagt, die Manipulation beschränkt sich nur auf die Basket Tabelle. Ich bin für jeden Tipp dankbar.

---

<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: [30. April 2013 um 10:34 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/7 "2013-04-30T10:34:12Z")

</div>

Kannst du den Code von deiner Preismanipulation mal einstellen? Also die Event-Listener dazu?

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [30. April 2013 um 10:44 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/8 "2013-04-30T10:44:20Z")

</div>

Ja klar, Hier eine verkürzte version: ` $event = $this-\>createHook('sBasket', 'sUpdateArticle', 'onBasket\_UpdateArticle\_After', Enlight\_Hook\_HookHandler::TypeAfter, 0 ); $this-\>subscribeHook($event); /\*\* \* onBasket\_UpdateArticle\_After \* Update table s\_order\_basket with calculated values \* @static \* @return unknown \*/ static function onBasket\_UpdateArticle\_After (Enlight\_Hook\_HookArgs $args) { $sql = "UPDATE s\_order\_basket SET ordernumber=? WHERE ordernumber=?"; Shopware()-\>Db()-\>query($sql, array(self::$articleOrderNumber . ' ' . self::$variantId, self::$articleOrderNumber)); $id = $args-\>getId(); $quantity = $args-\>getQuantity(); $session = $args-\>getSubject()-\>sSYSTEM-\>sSESSION\_ID; //Preis ermittlung $nettoprice = $price / 1.19; // Preis und Menge in Datenbank anpassen $sql = "UPDATE s\_order\_basket SET quantity=?, price=?, netprice=? WHERE id=? AND sessionID=? AND modus=0"; Shopware()-\>Db()-\>query($sql,array( $quantity, $price, $nettoprice, $id, $session )); $basketID= Shopware()-\>Db()-\>fetchOne('Select id from s\_order\_basket WHERE id='.$id.' and sessionID="'.$session.'"'); $sql = "UPDATE s\_order\_basket\_attributes SET attribute5=?, attribute6=? WHERE basketID=?"; Shopware()-\>Db()-\>query($sql,array( $matName, $convertingName, $basketID )); } `

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [30. April 2013 um 13:08 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/9 "2013-04-30T13:08:27Z")

</div>

Der Gutschein wird wohl berechnet bevor ich den Preis manipuliere…

---

<div class="post-metadata">

### Author: ![fulltime](https://avatars.discourse-cdn.com/v4/letter/f/7ab992/32.png) [@fulltime](https://forum.shopware.com/u/fulltime)
#### Post date: [6. Juni 2013 um 11:06 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/10 "2013-06-06T11:06:08Z")

</div>

Hi, genau dasselbe Problem habe ich mit mein Plugin gerade auch. Ich habe auch ein eigenständigen Artikel der ein Preis von 1,00 € im Backend hat. Binde ich nun mein Artikel in den Warenkorb ein und manipuliere den Preis wird dennoch für den Gutschein der Grundpreis des Artikels genommen und nicht den der eigentlich errechnet(manipuliert) wurde. Ich suche jetzt schon seit ca. 3 Std. verzweifelt in dem Shopware Code wo nun genau die Definition des Gutscheins ist. Mein aktueller Stand ist der das in der Datei /engine/core/class/sBasket.php Zeile 592 vermutlich der Fehler steckt. Die funktion $amount = $this-\>sGetAmountArticles(); ruft den Preis ab. Wenn ich dies mir mit ein Standard Artikel ausgeben lasse erhalte ich immer einen einheitlichen Wert vom Artikel. Wenn ich dies aber mit mein Selbst generierten Artikel ausgeben lasse erhalte ich unterschiedliche Werte. Einmal den Korrekten und einmal mit dem falschen Wert(Artikel-Preis=1,00). Leider wird dann der falsche wert genutzt warum auch immer. Wenn ich diesen Wert manuell fest definiere ist alles fine. Hat dazu jemand neh Idee?

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [6. Juni 2013 um 12:06 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/11 "2013-06-06T12:06:36Z")

</div>

Ich habe die Lösung, da ich dies bei meinem Flächenplugin auch habe. Kann euch leider erst nächset Woche die Lösung anbieten, da ich unterwegs zur Messe bin. Falls man sich dort sieht, erkläre ich es gerne 🙂

---

<div class="post-metadata">

### Author: ![Lutz\_Elchlep](https://avatars.discourse-cdn.com/v4/letter/l/8e7dd6/32.png) [@Lutz\_Elchlep](https://forum.shopware.com/u/Lutz_Elchlep)
#### Post date: [6. Juni 2013 um 12:09 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/12 "2013-06-06T12:09:16Z")

</div>

Ein Denkansatz wäre schön, wir haben damit gegenwärtig große Probleme.

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [6. Juni 2013 um 12:24 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/13 "2013-06-06T12:24:34Z")

</div>

install ` $event = $this-\>createHook('sBasket', 'sAddVoucher', 'onBasket\_sAddVoucher\_Before', Enlight\_Hook\_HookHandler::TypeBefore, 0 ); $this-\>subscribeHook($event); $event = $this-\>createHook('sBasket', 'sUpdateVoucher', 'onBasket\_sUpdateVoucher\_Before', Enlight\_Hook\_HookHandler::TypeBefore, 0 ); $this-\>subscribeHook($event); ` in den beiden Funktionen müsst ihr dann die Manipulation des Preises machen, welche normalerweise erst im Nachinein gemacht werden.

---

<div class="post-metadata">

### Author: ![fulltime](https://avatars.discourse-cdn.com/v4/letter/f/7ab992/32.png) [@fulltime](https://forum.shopware.com/u/fulltime)
#### Post date: [6. Juni 2013 um 14:30 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/14 "2013-06-06T14:30:40Z")

</div>

Leider bringt mich dies nicht so recht weiter. Bei den genannten funktionen wird ja nichts weiter übergeben. Wie kann ich da dann den Preis manipulieren?

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [6. Juni 2013 um 15:07 UTC](https://forum.shopware.com/t/gutscheine-prozentual-fehler/12941/15 "2013-06-06T15:07:29Z")

</div>

[quote=„fulltime“]Leider bringt mich dies nicht so recht weiter. Bei den genannten funktionen wird ja nichts weiter übergeben. Wie kann ich da dann den Preis manipulieren?[/quote] Hi Patrick, lass und nächste Woche mal telefonieren, dann zeig ich es dir wie ich es bei mir mache. Bin jetzt unterwegs nach Ahaus.
