Korting probleem

  • Gast
  • Onderwerp Auteur
  • Gebruiker
  • Gebruiker
Meer
26 nov 2014 14:04 #10784 door Gast
Korting probleem werd gestart door Gast
Als ik een korting op een product zet, wil ik dat graag laten zien door de originele prijs te tonen met een streep erdoor en het nieuwe bedrag eronder.

In de configuratie heb ik verschillende dingen geprobeerd (vinkjes aan en uit).
Maar als ik het mooi vind bij de producten met een korting, staat er bij de producten zonder korting ook de prijs 2x met een streep door de bovenste (zelfde bedragen).
Dit op de productpagina, op de categoriepagina gaat het wel goed.

Wat doen we fout???
Ik word er gestoord van.

Klant zit op Joomla 2.5.24 en op VM 2.6.10 (alles pas geupdate).
Template van Virtueplanet (ook al veel problemen mee gehad).

Ik hoor het heel graag!
Dank alvast!
Marion
Onderwerp is gesloten.
  • Gast
  • Onderwerp Auteur
  • Gebruiker
  • Gebruiker
Meer
26 nov 2014 14:04 #10785 door Gast
Beantwoord door Gast in topic Korting probleem
Ik heb toevallig dezelfde template en hetzelfde probleem gehad ... als je niet met cijfers achter de komma werkt kun je mijn code meteen overnemen. Ik veronderstel dat hun kortingsverwerking gelijk zal lopen doorheen de verschillende templates.

file \templates\**template naam**\html\com_virtuemart\productdetails\default_showprices.php

regel 80
[PHP] <?php if (round($this->product->prices, $currency->_priceConfig[1]) != $this->product->prices) {?>
<span class="price-before-discount-class-restore"></span>
<?php }?>
<span class="final-price-class-restore final-price"></span>
<?php if (round($this->product->prices, $currency->_priceConfig[1]) != $this->product->prices) {?>
<div class="product-discount-class-restore"></div>
<?php }?>[/PHP]vervangen door

[PHP]<?php if (round($this->product->prices, $currency->_priceConfig[1]) != round($this->product->prices, $currency->_priceConfig[1])) {?>
<span class="price-before-discount-class-restore"></span>
<?php }?>
<span class="final-price-class-restore final-price"></span>
<?php if (round($this->product->prices, $currency->_priceConfig[1]) != round($this->product->prices, $currency->_priceConfig[1])) {?>
<div class="product-discount-class-restore"></div>
<?php }?>[/PHP]

De oorzaak ligt in het feit dat de template een korting detecteert door met php de salesprice te vergelijken met baseprice + tax. Doordat de baseprice+tax ook in het backend voor een product vaak niet afgerond wordt, denkt de template dat er een korting is.

voorbeeld: Een product met een verkoopsprijs van €100 kan in het backend (door VM bepaalt voor berekeningsdoeleiden) weergegeven zijn als 99.99856 of zoiets. De template ziet dat de basisprijs met btw verschillend is (groter of kleiner doet er niet toe) en denkt dat er een korting is.

De oplossing is door de getallen die je template vergelijkt allebei op dezelfde manier af te ronden (php round) en dan pas te vergelijken. Als je met getallen na de komma werkt, moet je volgens mij die [1] in $currency->_priceConfig[1] aanpassen naar 2 of 3. Als ik me goed herinner bepaalt die het aantal cijfers na de komma.

Anderzijds kun je die baseprice ook gewoon wissen op regel 60 à 61 met twee schuine strepen ervoor.

[PHP]$SalesPrice = number_format((float)$this->product->prices, 2, '.', '');
$BasePrice = number_format((float)$this->product->prices, 2, '.', '');[/PHP]
Onderwerp is gesloten.
Gemaakt door Kunena