Jump to content

Redondeo de porcentaje de descuento al alza


Esther

Recommended Posts

Hola,

necesito poner porcentajes condecimales en los precios para conseguir el precio final que quiero, con precios psicológicos cómo 11.95 por ejemplo. Para ello tengo que aplicar porcentajes de 39.96356.

El hecho de querer poner un porcentaje en vez del precio final es poruq equiero que salga en las "flags" sobre la foto del producto en el listado de producto en la categoría.

He conseguido quitar el decimal con {round($product.discount_percentage_absolute) %} pero no redondea al alza, solo quita los decimales.  En la configuración de prestashop tengo que redondee al alza cuando pase de la mitad, pero no está funcionando para este caso. Veo en la documentación de Symfony y el redondeo al alza se hace con un round_up o round_half_up pero si lo uso en el archivo product-prices.tpl se genera un error que deja la pantalla en blanco.

¿Alquien sabe cómo hacer este redodeo?

Gracias

 

Link to comment
Share on other sites

Hola,

dejo la respuesta por si a alguien le viene bien:

-{ROUND($product.discount_percentage_absolute,0, PHP_ROUND_HALF_UP))}%

En caso de querer pasar el total de descuento a porcentaje de descuento, se puede aplicar ésta formula:

-{ROUND((1-$product.price/$product.regular_price)*100,0, PHP_ROUND_HALF_UP)} %

De esta forma, en vez de salir por ejempplo descuento de 30€, saldrá el porentaje redondeado al alza cuando el primer decimal sea mayor de 5.

 

Link to comment
Share on other sites

  • 9 months later...
  • 11 months later...

Yo lo he solucionado modificando en el archivo src\Adapter\Presenter\Product\ProductLazyArray.php las siguientes líneas:

            // TODO: add percent sign according to locale preferences
            $this->product['discount_percentage'] = Tools::displayNumber($presNegativeReduction) . '%';
            $this->product['discount_percentage_absolute'] = Tools::displayNumber($presAbsoluteReduction) . '%';

Añado round(..., 0)

            // TODO: add percent sign according to locale preferences
            $this->product['discount_percentage'] = Tools::displayNumber(round($presNegativeReduction, 0)) . '%';
            $this->product['discount_percentage_absolute'] = Tools::displayNumber(round($presAbsoluteReduction, 0)) . '%';

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...