Avisos
Vaciar todo

Error en el cálculo del IVA en la factura de Prestasho 1.6.

10 Respuestas
3 Usuarios
0 Reactions
44 Visitas
Respuestas: 46
Eminent Member
Topic starter
 

Buenas tardes.
tengo Prestashop 1.6.1.

Tengo un problema con el redondeo de los precios., que me genera desajuste en las facturas.

Actualmente tengo el redondeo por producto y desglose de impuestos Activado

He probado cambiar Tipo de redondeo al Redondea por el total. Con esta opción soluciono el problema de las facturas, pero empiezan a generar errores de pago los módulos de Paypal y Redsys. Entiendo que el problema esta en que los módulos hacen la suma de los CON IVA redondeados, mientras que la factura hace la suma de los productos SIN IVA y luego aplica el redondeo. En algunos pedidos la diferencia puede llegar a 4€.

Necesito una solución menos invasiva para este problema.

Gracias

URL del sitio: Contenido solo visible a usuarios registrados


 
Respondido : 18/09/2019 4:24 pm
Pepe
 Pepe
Respuestas: 41115
Illustrious Member Admin
 

Hola Elena.

empiezan a generar errores de pago los módulos de Paypal y Redsys
Puedes explicarnos un poco más si puedes con capturas para que veamos los totales y a los desajustes que te refieres.

Revisa esta entrada del foro de prestashop que tratan el tema del redondeo:
-> https://www.prestashop.com/forums/topic/341333-prestashop-16-¿redondeo/
-> https://www.prestashop.com/forums/topic/546878-error-de-redondeo-en-combinaciones-de-productos-ps-16x-solucionado/

Nota: Tienes una versión muy desfasada de prestashop tienes que pensar en actualizar, es posible que actualizando soluciones el problema.

Un saludo


 
Respondido : 18/09/2019 4:37 pm
Respuestas: 46
Eminent Member
Topic starter
 

la semana pasada actualice la versión del prestashop.

Adjunto la capturas

del error que genera en la factura

un saludo


 
Respondido : 18/09/2019 6:54 pm
Jhon
 Jhon
Respuestas: 44989
Illustrious Member Moderator
 

Hola

Cómo has ingresado los precios de tus productos, estan con IVA incluído?, envía algunas capturas de algun producto para probar.

Saludos.


 
Respondido : 18/09/2019 7:31 pm
Respuestas: 46
Eminent Member
Topic starter
 

Hola

los productos los importo como un CSV y sin IVA.


 
Respondido : 19/09/2019 8:45 am
Pepe
 Pepe
Respuestas: 41115
Illustrious Member Admin
 

Hola Elena.

El tema del redondeo en prestashop es un Bug que llevan arrastrando desde hace mucho tiempo
-> http://forge.prestashop.com/browse/PSCSX-7630

En esta entrada dan una posible solución modificando los archivos Tools.php y ProductController.php

-> https://github.com/PrestaShop/PrestaShop/pull/5135/commits/2636a3182502686e19ff2ebeea3d5178665c974f

Un saludo


 
Respondido : 19/09/2019 10:41 am
Respuestas: 46
Eminent Member
Topic starter
 

acabo de comprobar y estos errores en los controllers ya los tenía corregidos. se ve que se han corregido con la última actualización de Prestashop.
Necesito otra solución


 
Respondido : 19/09/2019 11:36 am
Pepe
 Pepe
Respuestas: 41115
Illustrious Member Admin
 

Hola Elena.

ok, va a ser complicado ya que es un problema del propio prestashop con esas versiones, es algo que muchos usuarios reportan pero no se soluciona por parte de prestashop y dudo que lo solucionen en esa versión ya que no recibe actualizaciones.

Prueba a cambiar en preferencias - configuración - redondeo: redondear cada artículo por si soluciona el problema.

Te pasa con todos los pagos, es solo con TPV, PAYPAL....

El módulo de paypal tenia problemas con el redondeo por eso te lo comento.

En esta entrada del foro de prestashop ofrecen otra posible solución:

https://www.prestashop.com/forums/topic/619297-solucionado-redondeo-de-precios-con-un-c%C3%A9ntimo-con-combinaciones-error-en-ps-1614/

Un saludo


 
Respondido : 19/09/2019 11:55 am
Respuestas: 46
Eminent Member
Topic starter
 

hola

Actualmente tengo el redondeo por artículo, que es el que me genera el desajuste en las facturas. y me funcionan bien los módulos de pago.

Cuando dejo el redondeo por total o por línea, los módulos de Paypal y Redsys me generan error de pago por el desajuste en el total. Pero las facturas si que salen bien.

P.S. la entrada del foto citada. No encuentro en mi archivo product.js la línea que se ha de modificar.

un saludo


 
Respondido : 19/09/2019 12:27 pm
Pepe
 Pepe
Respuestas: 41115
Illustrious Member Admin
 

Hola Elena.

Ok, entonces el problema lo tenemos en otros sitios, no es de prestashop.
Vamos a ir por parte y empecemos con el de modulo de paypal.

Prueba lo siguiente:
.- Accede a modules -> paypal -> express_checkout y edita el archivo proccess.php
.- Busca el siguiente código:

private function setProductsList(&$fields, &$index, &$total) {
foreach ($this->product_list as $product) {
$fields['L_PAYMENTREQUEST_0_NUMBER'.++$index] = (int) $product['id_product'];
$fields['L_PAYMENTREQUEST_0_NAME'.$index] = $product['name'];
if (isset($product['attributes']) && (empty($product['attributes']) === false)) {
$fields['L_PAYMENTREQUEST_0_NAME'.$index] .= ' - '.$product['attributes'];
}
$fields['L_PAYMENTREQUEST_0_DESC'.$index] = Tools::substr(strip_tags($product['description_short']), 0, 50).'...';
$fields['L_PAYMENTREQUEST_0_AMT'.$index] = Tools::ps_round($product['price_wt'], $this->decimals);
$fields['L_PAYMENTREQUEST_0_QTY'.$index] = $product['quantity'];
$total = $total + ($fields['L_PAYMENTREQUEST_0_AMT'.$index] * $product['quantity']);
}
}

Modifica por lo siguiente:

private function setProductsList(&$fields, &$index, &$total)
{
foreach ($this->product_list as $product) {
$fields['L_PAYMENTREQUEST_0_NUMBER'.++$index] = 1;
$fields['L_PAYMENTREQUEST_0_NAME'.$index] = 'Total Productos '; // o el texto que deseemos
$fields['L_PAYMENTREQUEST_0_AMT'.$index] = $this->context->cart->getOrderTotal(true,Cart::ONLY_PRODUCTS);
//mandamos el total de los productos con IVA incluido
$fields['L_PAYMENTREQUEST_0_QTY'.$index] = 1;
$total = $total + ($fields['L_PAYMENTREQUEST_0_AMT'.$index] * 1);
break;
}
}

.- En el mismo archivo busca lo siguiente:

public function getTotalPaid()
{
$total = 0.00;
foreach ($this->product_list as $product) {
$price = Tools::ps_round($product['price_wt'], $this->decimals);
$quantity = Tools::ps_round($product['quantity'], $this->decimals);
$total = Tools::ps_round($total + ($price * $quantity), $this->decimals);
}
if ($this->context->cart->gift == 1) {
$total = Tools::ps_round($total + $this->getGiftWrappingPrice(), $this->decimals);
}
if (version_compare(_PS_VERSION_, '1.5', 'context->cart->getDiscounts();
$shipping_cost = $this->context->cart->getOrderShippingCost();
} else {
$discounts = $this->context->cart->getCartRules();
$shipping_cost = $this->context->cart->getTotalShippingCost();
}
if (count($discounts) > 0) {
foreach ($discounts as $product) {
$price = -1 * Tools::ps_round($product['value_real'], $this->decimals);
$total = Tools::ps_round($total + $price, $this->decimals);
}
}
return Tools::ps_round($shipping_cost, $this->decimals) + $total;
}

Sustituye por lo siguiente:

public function getTotalPaid()
{
$total = 0.00;
$total = $total + $this->context->cart->getOrderTotal(true,Cart::ONLY_PRODUCTS);
if ($this->context->cart->gift == 1) {
$total = Tools::ps_round($total + $this->getGiftWrappingPrice(), $this->decimals);
}
if (version_compare(_PS_VERSION_, '1.5', 'context->cart->getDiscounts();
$shipping_cost = $this->context->cart->getOrderShippingCost();
} else {
$discounts = $this->context->cart->getCartRules();
$shipping_cost = $this->context->cart->getTotalShippingCost();
}
if (count($discounts) > 0) {
foreach ($discounts as $product) {
$price = -1 * Tools::ps_round($product['value_real'], $this->decimals);
$total = Tools::ps_round($total + $price, $this->decimals);
}
}
return Tools::ps_round($shipping_cost, $this->decimals) + $total;
}

Comprueba si con eso solucionamos lo de paypal.

Nota: recuerda descargar el archivo antes de realizar la modificación para tener una copia del original.

Un saludo


 
Respondido : 19/09/2019 12:45 pm