Oxdiscount abfragen

Hallo liebes Forum,

leider komme ich gerade nicht weiter. Ich habe im Backend einen Rabatt angelegt für eine Kategorie und alle Unterkategorien. Jetzt möchte ich im Template sagen:

Wenn Rabatt “test” auf diesen Artikel zutrifft zeige das Bild…

Leider komme ich nicht weiter bei der Abfrage weil ich nicht weis wo ich in der Datenbank die Zuordnung der Rabatte für denjenigen Artikel finde.

Weis einer Rat? Vielen Dank schonmal :slight_smile:

Ich bin schonmal einen Schritt weiter:

 [{assign var="product_rabatt_preis" value=""}]
 [{assign var="product_rabatt_preis" value=$oDetailsProduct->getFPrice()|replace:',':'.'}]
 [{if $oDetailsProduct->oxarticles__oxprice->value > $oDetailsProduct_rabatt_preis|floatval}]
    <span class="priceOld">
        Unser regulärer Preis: <br/>
        <del>[{$oDetailsProduct->oxarticles__oxprice->value|number_format:2:',':'.'}] [{$currency->sign}]</del>
    </span>


    ( Sie sparen
    [{assign var="rabatt_preis" value=$oDetailsProduct->getFPrice()|replace:',':'.' }]
    [{assign var="price" value=$oDetailsProduct->oxarticles__oxprice->value }]
    [{math equation="(( y - x))" x=$rabatt_preis y=$price}] € / entspricht [{math equation="(( z / x ) * ( x - y))" y=$rabatt_preis x=$price z=100 format="%.0f"}] % )

 [{/if}]

Jetzt wird mir zumindest schonmal der originale Preis angezeigt und zusätzlich was man spart…

Wie schaffe ich es jetzt aber das dieser NUR angezeigt wird wenn sich auch tatsächlich ein Rabatt auf den Artikel befindet? Momentan wird mir die Ausgabe des Codes nämlich in jedem Artikel angezeigt… Wenn dann steht: Anstatt 19,90 Euro Jetzt nur 19,90 Euro wäre das nicht vom Vorteil… Vielen Dank für eure Hilfe! :slight_smile:

            [{ if $oDetailsProduct->oxarticles__oxprice->value > $oDetailsProduct->getFPrice()|replace:',':'.' }]
            <div id="discount-box">
             [{assign var="product_rabatt_preis" value=""}]
             [{assign var="product_rabatt_preis" value=$oDetailsProduct->getFPrice()|replace:',':'.'}]
             [{if $oDetailsProduct->oxarticles__oxprice->value > $oDetailsProduct_rabatt_preis|floatval}]
              <span class="priceOld">
               Unser regulärer Preis: <br/>
               <del>[{$oDetailsProduct->oxarticles__oxprice->value|number_format:2:',':'.'}] [{$currency->sign}]</del>
              </span>
              ( Sie sparen [{assign var="rabatt_preis" value=$oDetailsProduct->getFPrice()|replace:',':'.' }]
              [{assign var="price" value=$oDetailsProduct->oxarticles__oxprice->value }]
              [{math equation="(( y - x))" x=$rabatt_preis y=$price}] € / entspricht [{math equation="(( z / x ) * ( x - y))" y=$rabatt_preis x=$price z=100 format="%.0f"}] % )
             [{/if}]
            </div>
            [{/if}]

Edit #1

jetzt wird zwar bei vielen Produkten wenn der gleiche Preis da steht, das obere nicht dargestellt, aber bei einigen Produkten kommt es dennoch vor das das obere dargestellt wird mit der Fehlermeldung:

Unser regulärer Preis:
1.549,00 € ( Sie sparen
Warning: Smarty error: math: parameter x: is not numeric in ...\core\smarty\Smarty.class.php on line 1093
€ / entspricht
Warning: Smarty error: math: parameter y: is not numeric in ...\core\smarty\Smarty.class.php on line 1093
% ) 

was stimmt an der Darstellungsbedingung nicht? :frowning:

Schau dir den Preis an: “1.549,00”, dann ersetzt du das Komma: “1.549.00”.

Hallo leofonic,

danke für den Tipp. Das Problem, vielleicht habe ich es unverständlich ausgedrückt (sorry), die Abfrage scheint zu stimmen bei den Artikeln die einem Rabatt zugeordnet sind.

Das kuriose ist aber das auch wenige unterschiedliche Artikel diesen Fehler zeigen OBWOHL kein Rabatt zugeordnet ist. Lösche ich alle Rabatte im Backend, werden diese Artikel dennoch als “Aktion” angezeigt.

Die if Abfrage sagt doch “zeige NUR wenn der Preis kleiner ist (Rabatt) als der eigentliche Preis”. Oder sehe ich das falsch?

“1.549.00” ist halt keine Zahl. Du musst erst den Punkt durch nichts ersetzen und dann erst das Komma durch einen Punkt.

Ah ok, jetzt weis ich was du meinst und stimmt, das Problem tritt auf bei Zahlen ab 1.000,00… Dachte aber eigentlich das das

replace:',':'.'

das abändert?!

Das ersetzt das Komma durch einen Punkt, jetzt fehlt noch “erst den Punkt durch nichts ersetzen”

Danke… :wink: Dir ein Bier spendier :smiley:

Ich komm drauf zurück ;), poste doch noch den neuen Code für die Nachwelt.

            [{ if $oDetailsProduct->oxarticles__oxprice->value > $oDetailsProduct->getFPrice()|replace:'.':'':',':'.'}]
            <div id="discount-box">
             [{assign var="product_rabatt_preis" value=""}]
             [{assign var="product_rabatt_preis" value=$oDetailsProduct->getFPrice()|replace:',':'.'}]
             [{if $oDetailsProduct->oxarticles__oxprice->value > $oDetailsProduct_rabatt_preis|floatval}]
              <span class="priceOld">
               Unser regulärer Preis: <br/>
               <del>[{$oDetailsProduct->oxarticles__oxprice->value|number_format:2:',':'.'}] [{$currency->sign}]</del>
              </span>
              ( Sie sparen
              [{assign var="rabatt_preis" value=$oDetailsProduct->getFPrice()|replace:',':'.' }]
              [{assign var="price" value=$oDetailsProduct->oxarticles__oxprice->value }]
              [{math equation="(( y - x))" x=$rabatt_preis y=$price}] € / entspricht [{math equation="(( z / x ) * ( x - y))" y=$rabatt_preis x=$price z=100 format="%.0f"}] % )
             [{/if}]
            </div>
            [{/if}]

sollte jetzt eigentlich korrekt sein und damit alle Fragen zu Rabatten und Preisanzeige aus dem Weg räumen.

Hallo zusammen,

ich versuche gerade den Code zum laufen zu bringen. Leider ohne Erfolg.
Wir geben Nettopreise im Admin ein. Bruttopreise und Nettopreise werden im frontend angezeigt.

Die Anzeige die dabei rauskommt ist folgende:
Unser regulärer Preis: 1.350,00 EUR
( Sie sparen € / entspricht % )

Es werden keine Ergebnisse angezeigt.:confused:

Der Testshop ist eine EE 5.1.6

Hoffe auf Eure Hilfe
Rene

Hi Rene,

ich hatte dazu mal was geschrieben - schau mal, ob das hilft:
http://planet.oxidforge.org/2013/06/how-to-write-a-module-for-oxid-eshop-display-you-will-save-x-on-the-product-details-page.html

Gruß

Danke Marco, das Modul funktioniert soweit.

Was mich aber stört ist, das der Code von Maik bei mir keine Zahlen ausgibt…:confused:

Werde mal versuchen zu vergleichen.

Gruß
Rene