lunaroja Posted August 20, 2021 Share Posted August 20, 2021 (edited) Versión 1.7.7.3, tema Classic. En descuentos por cantidad me gustaría añadir una 4ª columna con el precio total de cada grupo. Te dice lo que te ahorras pero no el precio de cada pack. ¿Sabéis como se puede hacer? Gracias. Edited September 9, 2021 by lunaroja Solucionado (see edit history) Link to comment Share on other sites More sharing options...
lunaroja Posted August 28, 2021 Author Share Posted August 28, 2021 (edited) Primero decir que he ocultado mi mensaje anterior pues era fruto de un error mío bastante ridículo, estaba haciendo los cambios en el hosting que no era. Aunque iba por buen camino. Avanzamos. Partiendo de este hilo en el foro he conseguido añadir la 4ª columna. Para ello he añadido el código en negrita al fichero themes/classic/templates/catalog/_partials/product-discounts.tpl <section class="product-discounts"> {if $product.quantity_discounts} <p class="h6 product-discounts-title">{l s='Volume discounts' d='Shop.Theme.Catalog'}</p> {block name='product_discount_table'} <table class="table-product-discounts"> <thead> <tr> <th>{l s='Quantity' d='Shop.Theme.Catalog'}</th> <th>{$configuration.quantity_discount.label}</th> <th>{l s='You Save' d='Shop.Theme.Catalog'}</th> <th>{l s='Price' d='Shop.Theme.Catalog'}</th> </tr> </thead> <tbody> {foreach from=$product.quantity_discounts item='quantity_discount' name='quantity_discounts'} <tr data-discount-type="{$quantity_discount.reduction_type}" data-discount="{$quantity_discount.real_value}" data-discount-quantity="{$quantity_discount.quantity}"> <td>{$quantity_discount.quantity}</td> <td>{$quantity_discount.discount}</td> <td>{$quantity_discount.save}</td> <td>{$quantity_discount.unit_price}</td> </tr> {/foreach} </tbody> </table> {/block} {/if} </section> Y he añadido el siguiente código en negrita al fichero classes\product\SpecificPriceFormatter.php } $this->specificPrice['save'] = $priceFormatter->format((($initialPrice * $this->specificPrice['quantity']) - ($discountPrice * $this->specificPrice['quantity']))); $this->specificPrice['unit_price'] = $priceFormatter->format($discountPrice); return $this->specificPrice; } Pero, como véis en la imagen, no funciona. Muestra la 4ª columna pero sin datos. Borré la cache. Creo que la clave está en SpecificPriceFormatter.php, no lo debo estar añadiendo bien. ¿Alguna idea? Edited August 28, 2021 by lunaroja (see edit history) Link to comment Share on other sites More sharing options...
lunaroja Posted August 28, 2021 Author Share Posted August 28, 2021 El colmo, no he hecho nada y ahora me muestra precios en la 4ª columna. Aunque no son los precios que deberían mostrarse, debería mostrar el precio del pack. Link to comment Share on other sites More sharing options...
Juanjomg Posted August 28, 2021 Share Posted August 28, 2021 Muy buenas. Mira si te funciona lo siguiente, sustituye la línea <td>{$quantity_discount.unit_price}</td> Por <td>{math equation="quantity * discount" quantity=$quantity_discount.quantity discount=$quantity_discount.discount}</td> Un saludo. Link to comment Share on other sites More sharing options...
lunaroja Posted August 28, 2021 Author Share Posted August 28, 2021 hace 3 horas, Juanjomg dijo: Muy buenas. Mira si te funciona lo siguiente, sustituye la línea <td>{$quantity_discount.unit_price}</td> Por <td>{math equation="quantity * discount" quantity=$quantity_discount.quantity discount=$quantity_discount.discount}</td> Un saludo. Gracias por responder. No funciona, no muestra nada. Pero me ha servido para experimentar, haré pruebas, no sabía como se escribía una función matemática. Link to comment Share on other sites More sharing options...
lunaroja Posted August 28, 2021 Author Share Posted August 28, 2021 He probado: <td>{assign var=quantity value='$quantity_discount.quantity'} {assign var=discount value='discount=$quantity_discount.discount'} {math equation="quantity * discount"}</td> Pero nada. Link to comment Share on other sites More sharing options...
Juanjomg Posted August 28, 2021 Share Posted August 28, 2021 Mírate el siguiente enlace de la documentación de smarty. https://www.smarty.net/docsv2/en/language.function.math.tpl 1 Link to comment Share on other sites More sharing options...
lunaroja Posted August 28, 2021 Author Share Posted August 28, 2021 hace 1 hora, Juanjomg dijo: Mírate el siguiente enlace de la documentación de smarty. https://www.smarty.net/docsv2/en/language.function.math.tpl Lo miro, gracias. Link to comment Share on other sites More sharing options...
lunaroja Posted August 29, 2021 Author Share Posted August 29, 2021 (edited) Creo que el problema son los decimales de $quantity_discount.discount De la siguiente manera le digo que sume 5 al valor $quantity_discount.quantity (que no tiene decimales pues es la cantidad de productos a comprar). <td>{math equation="x + y" x=$quantity_discount.quantity y=5}</td> Y muestra bien la suma al sumar 5 a los valores de Cantidad y mostrarlos en la columna Precio. Pero si hago lo mismo con el valor del precio unitario, que tiene decimales. <td>{math equation="x + y" x=$quantity_discount.discount y=5}</td> Entonces no muestra nada. Por eso creo que son los decimales los que causan el fallo. He probado con: <td>{math equation="x + y" x=$quantity_discount.discount y=5 format="%.2f"}</td> Pero muestra lo mismo que en la tabla 2. Seguiré investigando, creo que estamos cerca. Muchas gracias. Edited August 29, 2021 by lunaroja (see edit history) Link to comment Share on other sites More sharing options...
lunaroja Posted September 9, 2021 Author Share Posted September 9, 2021 Solución, al menos en la 1.7.7.3. Lo voy a probar en la 1.7.7.7. El fichero themes/classic/templates/catalog/_partials/product-discounts.tpl queda así, en negrita lo que se añade: <section class="product-discounts"> {if $product.quantity_discounts} <p class="h6 product-discounts-title">{l s='Volume discounts' d='Shop.Theme.Catalog'}</p> {block name='product_discount_table'} <table class="table-product-discounts"> <thead> <tr> <th>{l s='Quantity' d='Shop.Theme.Catalog'}</th> <th>{$configuration.quantity_discount.label}</th> <th>{l s='You Save' d='Shop.Theme.Catalog'}</th> <th>{l s='Price' d='Shop.Theme.Catalog'}</th> </tr> </thead> <tbody> {foreach from=$product.quantity_discounts item='quantity_discount' name='quantity_discounts'} <tr data-discount-type="{$quantity_discount.reduction_type}" data-discount="{$quantity_discount.real_value}" data-discount-quantity="{$quantity_discount.quantity}"> <td>{$quantity_discount.quantity}</td> <td>{$quantity_discount.discount}</td> <td>{$quantity_discount.save}</td> <td>{$quantity_discount.total_price}</td> </tr> {/foreach} </tbody> </table> {/block} {/if} </section> Y en el fichero classes\product\SpecificPriceFormatter.php se añade lo que está en negrita: $this->specificPrice['save'] = $priceFormatter->format((($initialPrice * $this->specificPrice['quantity']) - ($discountPrice * $this->specificPrice['quantity']))); $this->specificPrice['total_price'] = $priceFormatter->format($discountPrice * $this->specificPrice['quantity']); return $this->specificPrice; Resultado. Aunque es mejor con un % de descuento en lugar de una cantidad fija, por el tema del redondeo. Lo que me falta por hacer es igualar el ancho de las columnas, la 4ª queda muy estrecha , si sabéis donde se igualan... Link to comment Share on other sites More sharing options...
lunaroja Posted September 10, 2021 Author Share Posted September 10, 2021 (edited) Para igualar el ancho de las 4 columnas hay que ir a theme.css y cambiar el 33% por un 25% en la zona donde habla de la tabla de los descuentos. Y decir que funciona en 1.7.7.7. Edited September 10, 2021 by lunaroja añadir imagen (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now