Jump to content

[Aporte] - Actualizar correctamente precios del resumen de pedido al cambiar la dirección (OPC)


Recommended Posts

He encontrado unos pequeños bugs en la parte de order opc de Prestashop. En la versión 1.0.6.14, con el tema por defecto, al ir al carrito y cambiar la dirección sobre la que se aplican los impuestos, el precio unitario no solo no se actualiza, si no que además si existe un descuento, éste desaparece. Aquí dejo como solucionarlo:

 

1. En themes/default-bootstrap/js/order-opc.js buscar:

if ($(this).find('.cart_unit span').length > 0 && $(this).find('.cart_unit span').attr('id').length > 0)
$(this).find('.cart_unit span').attr('id', $(this).find('.cart_unit span').attr('id').replace(/_\d+$/, '_'+idAddress_delivery));

Cambiar por:

if ($(this).find('.cart_unit ul').length > 0 && $(this).find('.cart_unit ul').attr('id').length > 0)
$(this).find('.cart_unit ul').attr('id', $(this).find('.cart_unit ul').attr('id').replace(/_\d+$/, '_'+idAddress_delivery));

Con esto, conseguiremos que el precio unitario cambie al cambiar la dirección. Sólo en el tema original, si habéis modificado vuestro tema y la parte de unit price no es una lista (ul) no funcionará.

 

 

Y el tema de los descuentos, en controllers/front/OrderOpcController.php, buscar:

foreach ($result['summary']['products'] as $key => &$product)
{
	$product['quantity_without_customization'] = $product['quantity'];
	if ($result['customizedDatas'])
	{
		if (isset($result['customizedDatas'][(int)$product['id_product']][(int)$product['id_product_attribute']]))
				foreach ($result['customizedDatas'][(int)$product['id_product']][(int)$product['id_product_attribute']] as $addresses)
					foreach ($addresses as $customization)
						$product['quantity_without_customization'] -= (int)$customization['quantity'];
	}
} 

Y cambiarlo por:

foreach ($result['summary']['products'] as $key => &$product)
{
	$product['quantity_without_customization'] = $product['quantity'];
	if ($result['customizedDatas'])
	{
		if (isset($result['customizedDatas'][(int)$product['id_product']][(int)$product['id_product_attribute']]))
				foreach ($result['customizedDatas'][(int)$product['id_product']][(int)$product['id_product_attribute']] as $addresses)
					foreach ($addresses as $customization)
						$product['quantity_without_customization'] -= (int)$customization['quantity'];
	}
	$product['price_without_quantity_discount'] = Product::getPriceStatic(
					$product['id_product'],
					!Product::getTaxCalculationMethod(),
					$product['id_product_attribute'],
					6,
					null,
					false,
					false);
}

Y con eso, se actualizará el descuento, si existiera, en lugar de desaparecer.

 

Un saludo.

Link to comment
Share on other sites

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