Produktexport - Eigene Filter - Abfrage mit Preis

Hallo, leider sind die Informationen und Beispiele bzgl. der Funktion “Eigene Filter” im Produktexport etwas rar. Hier gibt es in der Shopware Dokumentation noch einiges an Verbesserungspotential, da manche der Beispiele auch gar nicht mehr oder noch nie funktionierten.

Im Moment habe ich einen funktionierenden Filter der nur Produkte ausspielt die einen Einkaufspreis größer als 10 Euro haben oder lagernd (attr1=1) sind. Sieht so aus:

d.purchaseprice > "10" OR at.attr1="1"

Statt dem Einkaufspreis hätte ich jetzt aber gerne den default Verkaufspreis. Wie bekomme ich den? Woher weiß ich welches Kürzel z.B.: at. , d. , … eine Tabelle hat?

 

LG Andy

 

 

 

Hier wird die query zusammen gebastelt: shopware/sExport.php at 5.2 · shopware/shopware · GitHub

Viele Grüße

1 Like

Danke das hilft ein wenig weiter und wahrscheinlich auch bei den meisten Problemen zu 100% wenn es nicht gerade um den Preis geht :wink:

Habe irgendwie durch ausprobieren rausbekommen das ich zumindest mit p.price den nettoverkaufspreis bekommen kann. Würde zur Not auch noch gehen wenn man die Steuer rausrechnet, wären da nicht die Produkte mit nur 7% Steuersatz!

Wie bekomme ich den Bruttoverkaufspreis. Ist das wirklich so ein riesiges SQL Statement das man dann in dem Filter verbauen soll? und ist das performant/sinnvoll?
Müsste doch ein Teil dieses Parts hier sein oder?

 ROUND(CAST(IFNULL($grouppricefield, $pricefield)*(100-IF(pd.discount,pd.discount,0)-{$this->sCustomergroup['discount']})/100*{$this->sCurrency['factor']} AS DECIMAL(10,3)),2) as netprice,
                IFNULL($grouppricefield, $pricefield)*(100-IF(pd.discount,pd.discount,0)-{$this->sCustomergroup['discount']})/100*{$this->sCurrency['factor']} as netprice_numeric,
                ROUND(CAST(IFNULL($grouppricefield, $pricefield)*(100+t.tax)/100*(100-IF(pd.discount,pd.discount,0)-{$this->sCustomergroup['discount']})/100*{$this->sCurrency['factor']} AS DECIMAL(10,3)),2) as price,
                IFNULL($grouppricefield, $pricefield)*(100+t.tax)/100*(100-IF(pd.discount,pd.discount,0)-{$this->sCustomergroup['discount']})/100*{$this->sCurrency['factor']} as price_numeric,
                pd.discount,
                ROUND(CAST($pseudoprice*{$this->sCurrency['factor']} AS DECIMAL(10,3)),2) as netpseudoprice,
                ROUND(CAST($pseudoprice*(100+t.tax)*{$this->sCurrency['factor']}/100 AS DECIMAL(10,3)),2) as pseudoprice,
IF(file IS NULL,0,1) as esd

Wer kann helfen oder macht das so überhaupt niemand in Shopware? Feeds besser auslagern in ein externes Programm oder alle Regeln über ein Blacklist Freitextfeld von extern Steuern?

Gesucht wird die Abfrage des “Bruttoverkaufspreis” für die “Eigene Filter” im “Produktexport”.

LG Andy

An dem SQL-Querry sieht man ganz gut, dass das Kürzel für die Preistabelle “p.” ist. Dann kannst du auch mit p.price darauf zugreifen. Funktioniert bei mir einwandfrei.

Generell bedeutet natürlich jeder zusätzliche Filtern auch eine geringere Performance beim erzeugen des Feeds. Es kann hier auch besser sein, die Filterung einfach direkt in Smarty zu machen und um das Template ein {if $variable > 100}{/if} zu setzen.

Naja, so ganz gut sieht man das vielleicht wenn man bei Shopware arbeitet, aber nicht als Beginner :slight_smile:

Das mit dem Filtern in Smarty wäre dann aber wohl ein Filter für alle vorhandenen Feeds oder hat jeder Feed ein eigenes Smarty-Template? das ich dann wo bearbeiten kann ? (Sorry falls das eine blöde Frage ist, aber so ganz steige ich noch nicht durch und die Doku ist sehr rar!)

Meine eigentliche Frage wie ich den Bruttopreis bekomme wurde ja leider nicht beantwortet. Macht das jemand so? Geht das überhaupt? Wie?
Würde mir helfen abzuwägen ob wir alles was wir brauchen mit dem Shopware Produktexporter lösen könnten oder ob doch was einfaches eigenes besser wäre und die Last von Shopware nehmen würde.

Es werden so ca. 100000 Produkte in 4 Sprachen = 20-30 Feeds am besten alle 2 Stunden aktualisisert.

 

Das Template für den Produktexport stellst du in jedem Produktexport im Bereich “Template” ein, wenn du ihn bearbeitest.

Die Variable p.price ist immer Netto. Du müsstest da höchstens direkt im Filter mit den Bruttopreis berechnen. Bspw.: (p.price*1.19) < 100

Oder so, wenn die Steuer unterschiedlich ist: (p.price*(t.tax*0.01+1)) < 100

1 Like