# Wie kann ich den Einkaufspreis zu einem verkauften Artikel ermitteln?

**URL:** <https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072>\
**Category:** Programmierung\
**Created:** [27. Februar 2017 um 11:22 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072 "2017-02-27T11:22:45Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![SFeldbinder](https://avatars.discourse-cdn.com/v4/letter/s/c0e974/32.png) [@SFeldbinder](https://forum.shopware.com/u/SFeldbinder)\
**Post date:** [27. Februar 2017 um 11:22 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/1 "2017-02-27T11:22:45Z")

</div>

Hallo,

Wir haben bei uns eine komplexe Provisionsberechnung für die ich den Ver- und Einkaufspreis eines Artikels zu jeder verkauften Bestellung wissen muss (zum Zeitpunkt der Bestellung). Wie kann ich die zu den jeweiligen Artikeln einer Bestellung ermitteln (Shopware 5.1.5) ?

Ich habe in der Datenbank eine s\_articles\_prices Tabelle gefunden in der es einen baseprice gibt. Ist das der Einkaufspreis?

Wenn ja: wie kann ich den zur Bestellung zuordnen? Über articleID scheint es nicht zu gehen, da erhalte ich mehrere Einträge für 1 articleID.

---

<div class="post-metadata">

**Author:** ![MartinR](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@MartinR](https://forum.shopware.com/u/MartinR)\
**Post date:** [27. Februar 2017 um 12:10 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/2 "2017-02-27T12:10:49Z")

</div>

Hallo @SFeldbinder‍,

soweit mir bekannt ist der Einkaufspreis das Datenbankfeld purchaseprice in der Tabelle&nbsp;s\_articles\_details.

Das kann man auf der Artikeldetailseite unter Stammdaten pflegen (rechts oben wo man MwSt., Template usw. pflegt.)

&nbsp;

---

<div class="post-metadata">

**Author:** ![MartinR](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@MartinR](https://forum.shopware.com/u/MartinR)\
**Post date:** [27. Februar 2017 um 12:25 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/3 "2017-02-27T12:25:30Z")

</div>

und warum kann man das nicht über die ID zuordnen?

SQL Lösung:

1. Du hast doch eine OrderID&nbsp;in s\_order.  
Da verjoinst du die ID mit der orderID aus der Tabelle s\_order\_details und du hast&nbsp;  
deine Artikel IDs (articleID) der Bestellung.

2. Darauf ein SUM auf s\_articles\_details (purchaseprice) mit einem WHERE articleID IN (articleIDs aus der ersten Abfrage) und&nbsp;  
zack hast du den Einkaufspreis berechnet.

PS: Feld quantity aus s\_order\_details nicht vergessen. Kann ja sein, dass jemand einen Artikel mehrfach bestellt.

&nbsp;

---

<div class="post-metadata">

**Author:** ![SFeldbinder](https://avatars.discourse-cdn.com/v4/letter/s/c0e974/32.png) [@SFeldbinder](https://forum.shopware.com/u/SFeldbinder)\
**Post date:** [27. Februar 2017 um 12:31 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/4 "2017-02-27T12:31:23Z")

</div>

Hallo Martin und danke für deine Antwort, leider hilft sie mir nicht mein Problem zu lösen.In der Tabelle s\_articles\_details habe ich kein purchaseprice oder irgendwas ähnliches.

&nbsp;

---

<div class="post-metadata">

**Author:** ![MartinR](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@MartinR](https://forum.shopware.com/u/MartinR)\
**Post date:** [27. Februar 2017 um 12:58 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/5 "2017-02-27T12:58:22Z")

</div>

Hmmmmm, dann scheint das wohl in 5.2 neu hinzugekommen zu sein. Sorry, alle meine betreuten Shops sind schon auf 5.2.

&nbsp;

Wenn ich du wäre würde ich mal den baseprice pflegen.

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

Hier die Doku [http://community.shopware.com/Artikel-anlegen\_detail\_807.html](http://community.shopware.com/Artikel-anlegen_detail_807.html)

&nbsp;

&nbsp;

Auch wenn es sich um den baseprice in der Tabelle s\_articles\_prices handelt, kann man auch diesen ermitteln.

Die Tabelle hat ja auch eine articleID.

Man müsste dann&nbsp;

1. wie oben beschrieben OrderID aus s\_order mit s\_order\_detailt verjoinen.

2. Dann in der&nbsp;s\_articles\_prices die Artikel ermitteln, die sich zwischen den Feldern „from“ und „to“ befinden (falls sich euer Einkaufspreis „baseprice“ je je nach Einkaufsmenge bei euch ändert)

baseprice (aus s\_articles\_prices) \* quantity (aus s\_order)

in einer Schleife für alle Artikel aus der Order&nbsp;

und man hat auch das Ergebnis.

&nbsp;

&nbsp;

Wahlweise die Ergebnisse summieren und man hat Einkaufspreis uns Verkaufspreis einer Bestellung.  
&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![SFeldbinder](https://avatars.discourse-cdn.com/v4/letter/s/c0e974/32.png) [@SFeldbinder](https://forum.shopware.com/u/SFeldbinder)\
**Post date:** [27. Februar 2017 um 13:04 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/6 "2017-02-27T13:04:40Z")

</div>

Ok also der baseprice ist tatsächlich der Einkaufspreis, schon mal gut zu wissen.

Jetzt hab ich nur noch das Problem, dass es für eine artikelID mehrere zutreffende Einträge in s\_articles\_prices gibt. Ist das jetzt eine Fehlkonfiguration unsererseits oder ist das durchaus normal?

---

<div class="post-metadata">

**Author:** ![MartinR](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@MartinR](https://forum.shopware.com/u/MartinR)\
**Post date:** [27. Februar 2017 um 13:18 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/7 "2017-02-27T13:18:36Z")

</div>

Sehr gut.

Und nein, keine Fehlkonfiguration.

Wenn ihr mehrer Artikelpreise habt, die sich nach Anzahl der bestellten Artikel richten, dann sieht das so aus

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

Bestellt ein Kunde zwischen 1&nbsp;und 10 Artikel, kostet der Artikel mehr als wenn dieser Kunde im Rahmen 11 bis 20 Artikel bestellt.

Mann kann ja Rabatte nach Bestellmenge definieren.

&nbsp;

Deshalb habe ich oben geschrieben, dass du aus der Order die Bestellmenge mitschleifen musst (quantity) und mit abfragen.

… WHERE&nbsp;_s\_order.quantity&nbsp;BETWEEN&nbsp;s\_articles\_prices.from&nbsp;AND&nbsp;s\_articles\_prices.to;_

Dann bekommst du den richtigen Artikel mit dem richtigen Staffelpreis.

&nbsp;

---

<div class="post-metadata">

**Author:** ![SFeldbinder](https://avatars.discourse-cdn.com/v4/letter/s/c0e974/32.png) [@SFeldbinder](https://forum.shopware.com/u/SFeldbinder)\
**Post date:** [27. Februar 2017 um 13:19 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/8 "2017-02-27T13:19:46Z")

</div>

Den Fall haben wir nicht. Bei uns geht alles von 1 bis ‘beliebig’

---

<div class="post-metadata">

**Author:** ![MartinR](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@MartinR](https://forum.shopware.com/u/MartinR)\
**Post date:** [27. Februar 2017 um 13:32 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/9 "2017-02-27T13:32:30Z")

</div>

ok ich sehe schon.  
Das sind Varianten.

Dann in `s_order_details` nicht über articleID sondern über „articleordernumber“ gehen. == Die ist in „s\_articles\_details“ die „ordernumber“  
Daraus (also aus s\_articles\_details) die ID nehmen und in s\_articles\_prices die „articledetailsID“ selektieren und man&nbsp;  
hat die korrekte Variante  
&nbsp;

---

<div class="post-metadata">

**Author:** ![MartinR](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@MartinR](https://forum.shopware.com/u/MartinR)\
**Post date:** [27. Februar 2017 um 13:33 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/10 "2017-02-27T13:33:11Z")

</div>

PS: Falls noch was unlar ist bin ich in einer Stunde wieder online.

VG,

Martin&nbsp;

---

<div class="post-metadata">

**Author:** ![SFeldbinder](https://avatars.discourse-cdn.com/v4/letter/s/c0e974/32.png) [@SFeldbinder](https://forum.shopware.com/u/SFeldbinder)\
**Post date:** [27. Februar 2017 um 13:41 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/11 "2017-02-27T13:41:13Z")

</div>

Ok ich hab jetzt folgendes:

```
FROM shopware.s_order_details od ON od.ordernumber = 123
INNER JOIN shopware.s_order o ON o.id = od.orderID
INNER JOIN shopware.s_articles_details ad ON ad.ordernumber = od.articleordernumber
INNER JOIN shopware.s_articles_prices ap ON ap.articleID = ad.articleID AND ap.articledetailsID = ad.id AND ap.pricegroup = 'EK'

```

Damit ist meine Anzahl Rückgabewerte allerdings von 339 auf 250 reduziert was mich stutzig macht.

---

<div class="post-metadata">

**Author:** ![MartinR](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@MartinR](https://forum.shopware.com/u/MartinR)\
**Post date:** [27. Februar 2017 um 14:23 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/12 "2017-02-27T14:23:01Z")

</div>

```
 Jetzt bin ich aber wirklich weg für eine Stunde: Habe mal ein wenig rumgespielt: [SELECT](http://dev.mysql.com/doc/refman/5.5/en/select.html) [s\_order](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order).ordernumber, [SUM](http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_sum)(([s\_articles\_prices](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_prices).price + ([s\_articles\_prices](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_prices).price / 100 \* [s\_order\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order_details).tax\_rate)) \* [s\_order\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order_details).quantity), [SUM](http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_sum)([s\_articles\_prices](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_prices).baseprice \* [s\_order\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order_details).quantity) FROM [s\_order\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order_details) INNER [JOIN](http://dev.mysql.com/doc/refman/5.5/en/join.html) [s\_order](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order) ON [s\_order](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order).id = [s\_order\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order_details).orderID INNER [JOIN](http://dev.mysql.com/doc/refman/5.5/en/join.html) [s\_articles\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_details) ON [s\_order\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order_details).articleordernumber = [s\_articles\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_details).ordernumber INNER [JOIN](http://dev.mysql.com/doc/refman/5.5/en/join.html) [s\_articles\_prices](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_prices) ON [s\_articles\_prices](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_prices).articleID = [s\_articles\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_details).articleID [AND](http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html#operator_and)[s\_articles\_prices](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_prices).articledetailsID = [s\_articles\_details](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_details).id [AND](http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html#operator_and) [s\_articles\_prices](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_articles_prices).pricegroup = 'EK' WHERE [s\_order](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order).ordernumber != 0 [AND](http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html#operator_and)[s\_order](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order).ordernumber = 20003 GROUP BY [s\_order](http://192.168.33.10/adminer.php?username=root&db=shopware&table=s_order).ordernumber 

```

Beispiel bezieht sich auf eine meiner ordern&nbsp;20003

Lässt man die weg, dann kommt 1 Datensatz pro Bestellung

&nbsp;

PS: Keine Gewährleistung 😃

---

<div class="post-metadata">

**Author:** ![SFeldbinder](https://avatars.discourse-cdn.com/v4/letter/s/c0e974/32.png) [@SFeldbinder](https://forum.shopware.com/u/SFeldbinder)\
**Post date:** [27. Februar 2017 um 15:04 UTC](https://forum.shopware.com/t/wie-kann-ich-den-einkaufspreis-zu-einem-verkauften-artikel-ermitteln/44072/13 "2017-02-27T15:04:31Z")

</div>

Ok, klingt so als wäre mein SQL oben richtig. Danke für die Hilfe!
