Jump to content

[SOLUCIONADO] Mostrar total ahorrado en carrito


Recommended Posts

Hola.

 

Me gustaría que en el carrito, debajo del total, saliera la cantidad total ahorrada en los productos con descuento. ¿Alguien sabe si existe algún módulo o código para ello?. Lo he intentado con las variables del product.tpl pero no lo consigo. LO quiero mostrar en el carrito no en la página resumen del carrito.

 

Saludos.

Edited by pbt (see edit history)
Link to comment
Share on other sites

Si puedo le echaré un vistazo. El módulo del carrito es blockcart.php con su plantilla blockcart.tpl. Dentro de blockcart.php en assignContentVars() se meten las variables para la plantilla, como

$totalToPay = $params['cart']->getOrderTotal($useTax);

 

No se si en la clase Cart.php con getCartRules se pueden obtener los descuentos.

Link to comment
Share on other sites

Bueno, en blockcart.php en assignContentVars() podemos añadir la/s variables para la plantilla del carrito.

Modificamos el bucle que recorre los productos para calcular la cantidad que se descuenta ($quant_discount)

 

$quant_discount=0.0;//Añadido para que se vea el descuento total por cantidad.
 foreach ($products as $product){
  $nbTotalProducts += (int)$product['cart_quantity'];
  if($product['quantity_discount_applies']){
$price_without_specific_price = Product::getPriceStatic($product['id_product'],!Product::getTaxCalculationMethod(),$product['id_product_attribute'],2,
  null,false,false,1,false,null,null,null,$null,true,true,null,true);
$quant_discount += ((int)$product['cart_quantity']*$price_without_specific_price)-$product['total_wt'];
  }  
 }

 

Esta variable la añadimos

 

$this->smarty->assign(array(
  'products' => $products,
  'customizedDatas' => Product::getAllCustomizedDatas((int)($params['cart']->id)),
  'CUSTOMIZE_FILE' => _CUSTOMIZE_FILE_,
  'CUSTOMIZE_TEXTFIELD' => _CUSTOMIZE_TEXTFIELD_,
  'discounts' => $cart_rules,
  'nb_total_products' => (int)($nbTotalProducts),
  'shipping_cost' => $shipping_cost,
  'shipping_cost_float' => $shipping_cost_float,
  'show_wrapping' => $wrappingCost > 0 ? true : false,
  'show_tax' => (int)(Configuration::get('PS_TAX_DISPLAY') == 1 && (int)Configuration::get('PS_TAX')),
  'wrapping_cost' => Tools::displayPrice($wrappingCost, $currency),
  'product_total' => Tools::displayPrice($params['cart']->getOrderTotal($useTax, Cart::BOTH_WITHOUT_SHIPPING), $currency),
  'total' => Tools::displayPrice($totalToPay, $currency),
  'order_process' => Configuration::get('PS_ORDER_PROCESS_TYPE') ? 'order-opc' : 'order',
  'ajax_allowed' => (int)(Configuration::get('PS_BLOCK_CART_AJAX')) == 1 ? true : false,
  'static_token' => Tools::getToken(false),
  'quant_discount' =>$quant_discount
 ));

 

 

Luego en la plantilla blockcart.tpl despues de <p id="cart-prices"> añadimos un div

{* Añadido para que se vea el descuento total por cantidad. *}  
 <div id="div_cart_total_quant_discount" {if $quant_discount == 0} style="display: none;" {/if} >
  <span id="cart_block_total_quant_discount" class="price ajax_block_cart_total_quant_discount">{convertPrice price=$quant_discount}</span>
  <span>{l s='Total discount' mod='blockcart'}</span>
 </div>

 

El css en global.css

 

#div_cart_total_quant_discount{
color: darkred;
font-weight: bold;
margin-bottom: 10px;
padding: 0 4px;
}

 

Falta el tema de ajax para el carrito

Edited by egomezpe (see edit history)
Link to comment
Share on other sites

Bueno, en blockcart.php en assignContentVars() podemos añadir la/s variables para la plantilla del carrito.

Modificamos el bucle que recorre los productos para calcular la cantidad que se descuenta ($quant_discount)

 

$quant_discount=0.0;//Añadido para que se vea el descuento total por cantidad.
 foreach ($products as $product){
  $nbTotalProducts += (int)$product['cart_quantity'];
  if($product['quantity_discount_applies']){
$price_without_specific_price = Product::getPriceStatic($product['id_product'],!Product::getTaxCalculationMethod(),$product['id_product_attribute'],2,
  null,false,false,1,false,null,null,null,$null,true,true,null,true);
$quant_discount += ((int)$product['cart_quantity']*$price_without_specific_price)-$product['total_wt'];
  }  
 }

 

Esta variable la añadimos

 

$this->smarty->assign(array(
  'products' => $products,
  'customizedDatas' => Product::getAllCustomizedDatas((int)($params['cart']->id)),
  'CUSTOMIZE_FILE' => _CUSTOMIZE_FILE_,
  'CUSTOMIZE_TEXTFIELD' => _CUSTOMIZE_TEXTFIELD_,
  'discounts' => $cart_rules,
  'nb_total_products' => (int)($nbTotalProducts),
  'shipping_cost' => $shipping_cost,
  'shipping_cost_float' => $shipping_cost_float,
  'show_wrapping' => $wrappingCost > 0 ? true : false,
  'show_tax' => (int)(Configuration::get('PS_TAX_DISPLAY') == 1 && (int)Configuration::get('PS_TAX')),
  'wrapping_cost' => Tools::displayPrice($wrappingCost, $currency),
  'product_total' => Tools::displayPrice($params['cart']->getOrderTotal($useTax, Cart::BOTH_WITHOUT_SHIPPING), $currency),
  'total' => Tools::displayPrice($totalToPay, $currency),
  'order_process' => Configuration::get('PS_ORDER_PROCESS_TYPE') ? 'order-opc' : 'order',
  'ajax_allowed' => (int)(Configuration::get('PS_BLOCK_CART_AJAX')) == 1 ? true : false,
  'static_token' => Tools::getToken(false),
  'quant_discount' =>$quant_discount
 ));

 

 

Luego en la plantilla blockcart.tpl despues de <p id="cart-prices"> añadimos un div

{* Añadido para que se vea el descuento total por cantidad. *}  
 <div id="div_cart_total_quant_discount" {if $quant_discount == 0} style="display: none;" {/if} >
  <span id="cart_block_total_quant_discount" class="price ajax_block_cart_total_quant_discount">{convertPrice price=$quant_discount}</span>
  <span>{l s='Total discount' mod='blockcart'}</span>
 </div>

 

El css en global.css

 

#div_cart_total_quant_discount{
color: darkred;
font-weight: bold;
margin-bottom: 10px;
padding: 0 4px;
}

 

Falta el tema de ajax para el carrito

 

No me funciona, no me lo calcula bien, pero gracias.

Link to comment
Share on other sites

Para el tema de ajax del carrito la plantilla es blockcart-json.tpl. Después de "productTotal" añadimos

"quantDiscountFloat": "{$quant_discount|html_entity_decode:2:'UTF-8'}",{* Añadido para que se vea el descuento total por cantidad. *}
"quantDiscount": "{convertPrice price=$quant_discount|html_entity_decode:2:'UTF-8'}",

 

Por último el fichero ajax-cart.js en el método updateCartEverywhere añadimos al principio

 

//Añadido para que se vea el descuento total por cantidad.
 if (parseFloat(jsonData.quantDiscountFloat) > 0){
  $('#div_cart_total_quant_discount').show();
  $('.ajax_block_cart_total_quant_discount').text(jsonData.quantDiscount);
 }else{
  $('#div_cart_total_quant_discount').hide();
 }

Link to comment
Share on other sites

Para el tema de ajax del carrito la plantilla es blockcart-json.tpl. Después de "productTotal" añadimos

"quantDiscountFloat": "{$quant_discount|html_entity_decode:2:'UTF-8'}",{* Añadido para que se vea el descuento total por cantidad. *}
"quantDiscount": "{convertPrice price=$quant_discount|html_entity_decode:2:'UTF-8'}",

 

Por último el fichero ajax-cart.js en el método updateCartEverywhere añadimos al principio

 

//Añadido para que se vea el descuento total por cantidad.
 if (parseFloat(jsonData.quantDiscountFloat) > 0){
  $('#div_cart_total_quant_discount').show();
  $('.ajax_block_cart_total_quant_discount').text(jsonData.quantDiscount);
 }else{
  $('#div_cart_total_quant_discount').hide();
 }

 

Me sigue sin funcionar, pero gracias.

Link to comment
Share on other sites

  • 1 month later...
me funcionó

Estimado pbt,

 

Si das el tema como solucionado, edita el titulo del tema, editando el primer mensaje, pulsando en editar, y después en "Usar editor completo", añadiendo la palabra "Solucionado" al titulo, esto ayudara, a mantener una mayor organización en el foro.

Link to comment
Share on other sites

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