Jump to content

(Solucionado) 1.7.7.3 En descuentos por cantidad me gustaría añadir una 4ª columna con el precio del pack


lunaroja

Recommended Posts

  • 2 weeks later...

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.

descuentos-por-cantidad.jpg.929cbe8062cbe8cf04703817a03f119a.jpg

 

 

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 by lunaroja (see edit history)
Link to comment
Share on other sites

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

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

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.

descuentos-por-cantidad.jpg.d0f32716c3baeb039ba538dae9725ebf.jpg

 

 

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.

descuentos-por-cantidad.jpg.6dedec74875398eefb8eb825af5bc333.jpg

 

 

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 by lunaroja (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

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.

4columna.png.fc7c26bf953acc31b95c8c17f08fcfcb.png

 

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

  • lunaroja changed the title to (Solucionado) 1.7.7.3 En descuentos por cantidad me gustaría añadir una 4ª columna con el precio del pack

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...