Jump to content

Desactivar redondeo en precio total 1.3.7


Recommended Posts

Hola a tod@s,

Tengo un pequeño problema que espero que alguien me pueda ayudar.

Tengo una tienda 1.3.7 y el por ser B2B tiene que salir sin IVA, pero en el resumen si que debe de salir. El problema viene con el redondeo del precio final. Me varía el IVA para ajustar a un precio final redondeado.

Ejemplo:

FICHA DE PRODUCTO:

Sin IVA=3.95€
Con IVA=4.66€

PESTAÑA RESUMEN:

PRODUCTO=3.95€
IVA 18%=¿ 1,05€ ? Debería de ser 0.71€
TOTAL=5,00 (Este es el culpable)

Parece ser que varía el IVA para dar un precio total redondeado. En este caso 5,00€, en vez de 4,66€.

En Preferencias -> Modo de redondeo he tocado las tres opciones con los siguiente resultados:

Clásico: 5,00€
Inferior: 4,00€ (IVA de ¿0,05€?)
Superior: Idem a clásico

No hay ninguna manera de que si el precio final es de 4,66€ sea 4,66€. Es decir DESACTIVAR por completo el redondeo?


Muchas gracias a todos por adelantado.

Un saludo,

Link to comment
Share on other sites

Había dado con esta solución pero al logearme en la tienda se queda incluso en negativo el IVA. Así que NO ES VÁLIDA, pero la dejo por si alguien que controle le puede dar alguna pista.


En classes/Tools.php

    static public function ceilf($value, $precision = 0)
   {
       $precisionFactor = $precision == 0 ? 1 : pow(10, $precision);
       $tmp = $value * $precisionFactor;
       $tmp2 = (string)$tmp;
       // If the current value has already the desired precision
       if (strpos($tmp2, '.') === false)
           return ($value);
       if ($tmp2[strlen($tmp2) - 1] == 0)
           return $value;
       return ceil($tmp) / $precisionFactor;
   }

   static public function floorf($value, $precision = 0)
   {
       $precisionFactor = $precision == 0 ? 1 : pow(10, $precision);
       $tmp = $value * $precisionFactor;
       $tmp2 = (string)$tmp;
       // If the current value has already the desired precision
       if (strpos($tmp2, '.') === false)
           return ($value);
       if ($tmp2[strlen($tmp2) - 1] == 0)
           return $value;
       return floor($tmp) / $precisionFactor;
   }



Sustituir ambos:

$tmp = $value * $precisionFactor;



Por

$tmp = $precisionFactor;




Saludos!!

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...