Ich stand vor einem ähnlichen Problem, zur Eröffnung des Shops sollte es einen Rabatt geben, dieser wurde auch richtig angezeigt, allerdings nicht der Standard-Preis.
Die Lösung mit UVP auf Standardpreis setzen halte ich gelinde gesagt irgendwie blödsinnig, denn UVP ist ja der Unverbindliche Preis des Herstellers, der normalerweise fast immer über dem eigenen Preis liegt.
Ich denke daher das der UVP dafür gedacht ist, um zu zeigen, wieviel günstiger man den Artikel anbietet als dies der Hersteller vorgibt.
Bsp.
UVP bei 399€,
mein Preis bei 349€
mit 15% Rabatt gibt den Endpreis von ~297€
Was jetzt angezeigt werden sollte wäre im Optimalfall
UVP => 399€
eigener Preis => 349€
Endpreis => 297€
Mit eingestelltem UVP würde aber nur da stehen
UVP 399€
Endpreis 297€
Auf jedenfall habe ich mir dann ein Modul geschrieben, das den selbst vorgegebenen Normal-Preis anzeigt, sofern er größer ist als der, den Oxid mit getFPrice() ausgibt.
Dafür gibt es zum Teil schon fertige Methoden, z.B. getBasePrice() => gibt den Normalen Preis als Zahl zurück.
Mein Modul erweitert nun die oxArticles Objekte um ein paar eigene Funktionen, die mir ein oxPrice Object zurückgeben, bei dem keine Rabatte eingerechnet werden, aber trotzdem z.B. die Währung umgerechnet wird. Dieses kann auch als Währung formatiert ausgegeben werden.
Im Template sieht das dann wie folgt aus, die Funktionen mit “em” als Präfix stammen von meinem Modul. Diese sind grundsätzlich den getPrice, getFPrice, sowie _calculatePrice Funktionen von oxArticle nachempfunden.
[{block name="em_discounts_productmain"}]
[{assign var="emBasePrice" value=$oDetailsProduct->emGetBasePrice()}]
[{assign var="emDiscountedPrice" value=$oDetailsProduct->getPrice()}]
[{* only show base price if it is more than the shown price *}]
[{if $emBasePrice && $emBasePrice->getBruttoPrice() > $emDiscountedPrice->getBruttoPrice()}]
[{assign var="fEmBasePrice" value=$oDetailsProduct->emGetFBasePrice()}]
<strong>
<span class="base-price text-error">[{$fEmBasePrice}] [{$currency->sign}]</span> =></strong>
[{/if}]
[{/block}]
[{$smarty.block.parent}]
Das ganze wird über das Modul direkt in einen smarty-block eingesetzt, den ich um die Ausgabe des Preises im jeweiligen Template gewrapped habe.
Mit freundlichen Grüßen
Marc-Oliver Ristau
P.S. Da ich die Funktionen nur mit kleinen Anpassungen aus der oxArticles Klasse entnommen habe, poste ich jetzt hier nicht noch mehr Code, falls gewünscht, kann ich das aber auch nachholen. Wie bereits gesagt handelt es sich um die getPrice, getFPrice, sowie _calculatePrice