Rabatte anzeigen

Hallo Community,

[B]17.09.2012: Endgltige und fehlerfreie Version siehe letzten Post.[/B]
http://forum.oxid-esales.com/showthread.php?p=102179#post102179

Die vorangegangenen Posts zeigen die entwicklung und fehlerkorrektur. Habt ihr also eine etwas andere umsetzung vor, dann können diese entwicklungsschritte evtl. helfen.


bitter verzeiht den tippfehler im titel.:smiley:

nachdem ich schon alles was ich im forum finden konnte, ohne erfolg, gebastelt habe, habe ich mich nun noch einmal an diese lösung hier gehängt:

http://forum.oxid-esales.com/showthread.php?t=1299#post7515

ich habe den entsprechenden code an folgender stelle in der productmain.tpl eingefügt:

  [{block name="details_productmain_tprice"}]
                [{oxhasrights ident="SHOWARTICLEPRICE"}]
                    [{assign var=tprice value=$oDetailsProduct->getTPrice()}]
                    [{assign var=price  value=$oDetailsProduct->getPrice()}]
                    [{if $tprice && $tprice->getBruttoPrice() > $price->getBruttoPrice()}]
                        <p class="oldPrice">
                            <strong>[{oxmultilang ident="DETAILS_REDUCEDFROM"}] <del>[{$oDetailsProduct->getFTPrice()}] [{$currency->sign}]</del></strong>
                            <span>[{ if  $oDetailsProduct->oxarticles__oxtprice->value > 0 }]Sie sparen [{assign  var="uvp" value=$oDetailsProduct->oxarticles__oxtprice->value }][{assign var="price" value=$oDetailsProduct->oxarticles__oxprice->value }][{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%[{/if}]</span>
                        </p>
                    [{/if}]
                [{/oxhasrights}]
            [{/block}]

ok das funktioniert soweit! jubel freu

nach tagen der frustration freut es mich sehr, dass ich es soweit hinbekommen habe, aber ich habe festgestellt das sich die berechnung auf den vaterartikelpreis bezieht. und so kommt es bei unterschiedlichen preisen der varianten zu falschen angaben.

könnte mir jemand sagen in welcher datei und an welcher stelle ich den code einbauen muss damit sich die berechnung auf den variantenpreis bezieht?

Gruß
Maik

bemüh mal die Suche mit “Sie sparen x Prozent” - da gibts schon was

  • erledigt - bitte entschuldigt den leeren beitrag
  • erledigt - bitte entschuldigt den leeren beitrag
  • erledigt - bitte entschuldigt den leeren beitrag
  • erledigt - bitte entschuldigt den leeren beitrag

ein problem gelöst und auf ein neues gestoßen. ich bitte um eure hilfe.

Gruß
Maik

welches ist denn das “neue” Problem?

die anzeige “Sie sparen…” wird berechnet in bezug auf den Vaterartikel. nun haben die varianten artikel aber ganz andere uvp und preise und somit ist die angabe “Sie sparen…” bei artikelvarianten nicht korrekt.

wie kann man das lösen? also so das sich die berechnung auf den vaterartikel bezieht wenn es keine varianten gibt und wenn varianten vorhanden sind dann soll sich die berechnung auf die variantenartikel beziehen.

für den sonderfall, wenn noch keine variante ausgewählt ist und am produkt ein “ab…€” preis steht, soll der günstigste varianten preis genommen werden und angezeigt werden “Sie sparen [B]bis zu[/B]…”

is vermutlich viel bastelei oder?

Gruß
Maik

Du darfst Deine Beiträge ruhig stehen lassen - auch wenn sichs mittlerweile erledigt hat.

ich dachte diese ganzen doppelposts sind vielleicht nicht gern gesehen und lenken auch ab…

Gruß
Maik

ich habe nochmal ein wenig umgebaut. wenn nun der artikel varianten besitzt und KEINE ausgewählt ist und unter dem artikel der oxvarminprice steht, dann erfolgt die berechnung “Sie sparen…” in bezug auf oxvarminprice, sonst nach oxprice.

so sieht es jetzt aus:

[{block name="details_productmain_tprice"}]
                [{oxhasrights ident="SHOWARTICLEPRICE"}]
                    [{assign var=tprice value=$oDetailsProduct->getTPrice()}]
                    [{assign var=price  value=$oDetailsProduct->getPrice()}]
                    [{if $tprice && $tprice->getBruttoPrice() > $price->getBruttoPrice()}]
                        <p class="oldPrice">
                            <strong>[{oxmultilang ident="DETAILS_REDUCEDFROM"}] <del>[{$oDetailsProduct->getFTPrice()}] [{$currency->sign}]</del></strong>
                            <span class="bigFatRed">
[COLOR=Red][{ if $oDetailsProduct->oxarticles__oxtprice->value > 0 }]
[{ if $oDetailsProduct->oxarticles__oxvarminprice->value > 0 }]
Sie sparen
[{assign var="uvp" value=$oDetailsProduct->oxarticles__oxtprice->value }][{assign var="price" value=$oDetailsProduct->oxarticles__oxvarminprice->value }]
[{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%[{/if}]
[{else}]
Sie sparen
[{assign var="uvp" value=$oDetailsProduct->oxarticles__oxtprice->value }][{assign var="price" value=$oDetailsProduct->oxarticles__oxprice->value }]
[{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%[{/if}]
</span>[/COLOR]
                        </p>
                    [{/if}]
                [{/oxhasrights}]
            [{/block}]

ABER ein problem! sobald nun eine variante ausgewählt wurde und der verknüpfte preis angezeigt wird, dann wird “Sie sparen…” gar nicht mehr angezeigt.

vor der anpassung, als der code noch so aussah:

<span class="bigFatRed">[{ if $oDetailsProduct->oxarticles__oxtprice->value > 0 }]Sie sparen [{assign var="uvp" value=$oDetailsProduct->oxarticles__oxtprice->value }][{assign var="price" value=$oDetailsProduct->oxarticles__oxprice->value }][{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%[{/if}]</span>

da wurde nach auswahl der variante “Sie sparen…” neu berechnet und auch angezeigt.

wo liegt das problem das nun nach auswahl einer variante “Sie sparen…” nicht mehr angezeigt wird? der ursprüngliche code (oben rot gekennzeichnet) ist doch noch immer UNVERÄNDERT vorhanden. lediglich durch eine zusätzliche “if” gegliedert.

hat jemand ne idee?

Gruß
Maik

nun ja habs doch mal wieder selbst gelöst.:smiley:

aber ich poste diesen schritt als anleitung, falls jemand anders das gleiche vor hat. der fehler lag ganz einfach daran, dass ein [{/if}] an der falschen stellen saß. mehr nicht. böses [{/if}]:smiley:

wo? - \out\azure pl\page\details\incproductmain.tpl
zeile? - unter zeile 232

<strong>[{oxmultilang ident="DETAILS_REDUCEDFROM"}] <del>[{$oDetailsProduct->getFTPrice()}] [{$currency->sign}]</del></strong>

so sieht es nun richtig aus:

[{block name="details_productmain_tprice"}]
                [{oxhasrights ident="SHOWARTICLEPRICE"}]
                    [{assign var=tprice value=$oDetailsProduct->getTPrice()}]
                    [{assign var=price  value=$oDetailsProduct->getPrice()}]
                    [{if $tprice && $tprice->getBruttoPrice() > $price->getBruttoPrice()}]
                        <p class="oldPrice">
                            <strong>[{oxmultilang ident="DETAILS_REDUCEDFROM"}] <del>[{$oDetailsProduct->getFTPrice()}] [{$currency->sign}]</del></strong>
                            <span class="bigFatRed">
[{ if $oDetailsProduct->oxarticles__oxtprice->value > 0 }]
[{ if $oDetailsProduct->oxarticles__oxvarminprice->value > 0 }]
Sie sparen
[{assign var="uvp" value=$oDetailsProduct->oxarticles__oxtprice->value }][{assign var="price" value=$oDetailsProduct->oxarticles__oxvarminprice->value }]
[{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%
[{else}]
Sie sparen
[{assign var="uvp" value=$oDetailsProduct->oxarticles__oxtprice->value }][{assign var="price" value=$oDetailsProduct->oxarticles__oxprice->value }]
[{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%[{/if}][COLOR=Red][{/if}]
</span>[/COLOR]
                        </p>
                    [{/if}]
                [{/oxhasrights}]
            [{/block}]

das rote [{/if}] stand weiter oben vor dem [{else}], was dazu führte das die bedingungen nicht korrekt durchlaufen wurden. nun funktioniert alles einwandfrei.

also wer möchte kann das gerne so übernehmen.

[B]Achtung:[/B]
Ich habe gerade festgestellt, dass es doch noch ein Problem gibt. Wenn ein Artikel im Backend einer Rabattgruppe zugeordnet ist, dann wird der Rabatt nicht mit einberechnet, sondern “Sie sparen…” unverändert auf den nicht-rabattierten preis berechnet, der da aber natürlich gar nicht steht und auch nicht gültig ist.

ich denke das problem ist, das der rabattierte preis in einer anderen variblen oder feld in der db liegt und oxprice natürlich unverändert bleibt, aber weiterhin als berechnungsgrundlage dient.

falls jemand eine idee hat wo die var/feld liegt und wie man das lösen kann, dann bitte immer her mit der lösung. ich steh grad aufm schlauch, brauch auch ne pause, kann nicht mehr denken.:smiley:

wenn ich wieder denken kann finde ich vielleicht das feld bzw. variable wo der rabattierte preis liegt und passe den code nochmal entsprechend an, aber nur vielleicht finde ich das. :wink:

also wer es jetzt besagtes feld/var kennt immer her mit dem hinweis oder auch gleich ne lösung;)

Gruß
Maik

ok diesmal komme ich wirklich nicht weiter. wenn artikel in rabattgruppen sind, dann wird dieser rabatt nicht bei “Sie sparen…” mit einbezogen. ich habe habe es schon mit “getPrice” und co versucht, aber nur fehlermeldungen.

ich brauche bitte hilfe. wie schaffe ich es, dass rabatte aus rabattgruppen mit eingerechnet werden bei “Sie sparen…”???

ich versuche die ganze zeit die preise über “getFPrice” und “getFTPrice” zu errechnen, indem ich den rechen variablen die werte über die funktion, anstatt über das db feld, übergebe, da ich denke das in diesem fall dann die rabatte mit berücksichtigt werden müssten.

die änderung sieht wie folgt aus:

aus

[{assign var="price" value=$oDetailsProduct->oxarticles__oxprice->value }]

wird

[{assign var="price" value=$oDetailsProduct->getFPrice()|replace:",":"." }]

leider funktioniert das einfach nicht. ich bekomme immer folgende fehlermeldung im shop:

[B]Warning[/B]:  Smarty error: math: parameter y: is not numeric in [B]/var/www/web1057/html/core/smarty/Smarty.class.php[/B] on line [B]1093[/B]

in “smarty.clas.php” line 1093 habe ich bereits geschaut. da steht ja nur die ausgabe der fehlermeldung.

“parameter y: is not numeric in…” das irritiert mich total. warum nicht numeric? der var “y” wird doch “getFPrice…” zugeordnet und diese funktion holt doch den preis aus der db und rechnet mwst drauf und rabatte und ähnliches runter, warum ist der wert dann nicht numeric?

ich kann mit der fehlermeldung mal überhaupt nichts anfangen. ich habs auch schon mit “getPrice” ohne formatierung versucht, da gibs dann auch fehler.

ich wäre über hilfe wirklich sehr dankbar! bitte ich möchte das ganze endlich zu ende bringen. schlage mich schon seit tagen damit rum.

Gruß
Maik

versuchs mal so zu formatieren:


$oDetailsProduct->getFPrice()|replace:".":""|replace:",":"."

danke für die hilfe. führt allerdings ebenso zu folgenden fehler:

[B]Warning[/B]:  Smarty error: math: parameter y: is not numeric in [B]/var/www/web1057/html/core/smarty/Smarty.class.php[/B] on line [B]1093[/B]

andere vorschläge?

Gruß
Maik

Lass Dir doch Y mal ausgeben. Was bekommst Du zurück?

Kann es sein, dass Du das bei einem Vaterartikel mit Varianten versuchst, und Du einen String zurück bekommst, mit dem “ab” davor?

die anzeige soll für alle möglichen fälle funktionieren, also auch bei varianten mit “ab…” preis.

ich dachte

getPrice()

gibt nur den reinen wert wieder und

get[B]F[/B]Price()

formatiert doch die ausgabe mit evtl. nen “ab” davor?

is das nicht richtig?

wie bekomme ich denn alternativ den tatsächlichen preis also abzüglich rabatten und so, als reine zahl? ich dachte das macht

getPrice()

oder nicht?

Edit:

ich habe mir die variablen mal ausgeben lassen:


[{assign var="Price" value=$oDetailsProduct->getPrice()}]
[{$Price}]

Ausgabe in allen Fällen: führt zu Fehler


[{assign var="fPrice" value=$oDetailsProduct->getFPrice()}]
[{$fPrice}]

Ausgabe Artikel mit Varianten: ab "Wert"
Ausgabe ohne Varianten: “Wert”

also mit dem string hast du bei fPrice schon recht da steht das “ab” mit drin. da ich das aber bei fPrice schon vermutet habe, habe ich versucht mit Price zu arbeiten und wie ich nun sehe gibt Price keinen Wert zurück sondern führt zu fehler??

[B][B]Catchable fatal error[/B]:  Object of class oxPrice could not be converted to string in [B]/var/www/web1057/html/tmp/2256bb0ae64e073ce3bbe9e9818593c7^%%5E^5E9^5E9B9D5B%%productmain.tpl.php[/B] on line [B]345[/B][/B]

warum funktioniert getPrice() nicht? in zeile 345 hab ich überhaupt nichts geändert. ich habe die ausgabe beim artikel direkt hinter dem eigentlichen preis eingebaut zeile 267.

<strong >
                                    <span>[{$fPrice}]</span>
                                    <span>[{ $currency->sign}]</span>
                                    <span>*</>
                                    [{assign var="Price" value=$oDetailsProduct->getPrice()}]
                                    Preis: [{$Price}]
                        fPreis: [{$fPrice}]
                                </strong>

die var “fPrice” wird schon weiter oben deklariert und befüllt, darum habe ich die hier nicht noch zusätzlich drin.

ich versteh das alles nicht. kann mir jemand helfen? ich werd noch verrückt. ich bastel und bastel und stöber durch alle threads die ich finde, aber ich komme nicht weiter. Please Help!

Gruß
Maik

Schau Dir doch mal die Funktion getPrice() an. Was fällt Dir auf? Was gibt diese zurück?

Wenn, dann kann das nur so funktionieren:


[{assign var="Price" value=$oDetailsProduct->getPrice()}]
[{ $Price->getBruttoPrice() }]

danke das hilft schonmal sehr weiter!

[{ $Price->getBruttoPrice() }]

gibt den reinen zahlenwert wieder. genau das was ich gesucht habe. allerdings bekomme ich das irgendwie nicht in der “Sie sparen…” anzeige korrekt zugeordnet.

ich habs so gemacht:

[{assign var="uvp" value=$oDetailsProduct->getTPrice() }][{assign var="price" value=$oDetailsProduct->getPrice()->getBruttoPrice() }]
[{math equation="(( z / x ) * ( x - y))" x=$uvp y=$price z=100 format="%.0f"}]%

allerdings bekomme ich auf diese weise folgenden fehler:

[B]Catchable fatal error[/B]:  Object of class oxArticle could not be converted to string in [B]/var/www/web1057/html/tmp/2256bb0ae64e073ce3bbe9e9818593c7^%%5E^5E9^5E9B9D5B%%productmain.tpl.php[/B] on line [B]310[/B]

hab in zeile 31 aber gar nichts geändert. meine änderungen sind zeile 233-243.

wahrscheinlich habe ich da jetzt irgendwo nen winzigen syntax fehler drin. da zeigt sich wieder meine kleine syntax schwäche:D

es ist wahrscheinlich irgendwas total einfaches, aber ich steh aufm schlauch.

bitte, bitte könnt ihr mir da nochmal eben schnell helfen? dann wäre es endlich fertig das ganze und tagelange verzweiflungen hätten ein ende!:smiley:

das wäre super nett. ich würde mich tierisch freuen.

Gruß
Maik