Jump to content

Código para Disponible = Sí cuando stock = 0?


Eowyn_86

Recommended Posts

Buenos días,

 

Tengo una tienda que funciona a través de dropshipping. Tengo que subir los productos a través de un .csv que me proporciona la empresa, lo que pasa es que en ese archivo no vienen las unidades de cada producto, simplemente dice si hay o no hay stock.

 

Aquí viene el problema. Prestashop entiende que si el stock del producto es igual o menor a 0 significa que el producto está agotado.

 

¿Alguien sabe cómo modificar el código para que, estando el stock del producto a 0 o menos, Prestashop entienda que el producto siga estando disponible, y por tanto, me aparezca el texto de Texto mostrado cuando está disponible, en la ficha del producto?

 

Mi versión de Prestashop es la 1.4.7.

 

Gracias de antemano =)

Link to comment
Share on other sites

Yo te podría arrojar algo de luz, aunque tengo la versión 1.5.3.1 y no sé si será lo mismo ...

 

Lo que realmente pretendes es que cualquier producto que tengas activo en la tienda indique que está disponible, por lo que tendrás que tener cuidado de ir desactivando (o eliminando) los productos que no tengas.

 

Bueno, tienes que modificar dos archivos, por un lado el product.tpl, y por otra parte el product.js.

 

1) /themes/TU-TEMA/product.tpl:

 

Código original
<!-- availability -->
  <p id="availability_statut"{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) OR ($product->quantity > 0 && !$product->available_now) OR !$product->available_for_order OR $PS_CATALOG_MODE} style="display: none;"{/if}>
<span id="availability_label">{l s='Availability:'}</span>
<span id="availability_value"{if $product->quantity <= 0} class="warning_inline"{/if}>
{if $product->quantity <= 0}{if $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{else}{$product->available_now}{/if}
</span>
  </p>

 

Código modificado
<!-- availability -->
  <p id="availability_statut"{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) OR ($product->quantity > 0 && !$product->available_now) OR !$product->available_for_order OR $PS_CATALOG_MODE} style="display: none;"{/if}>
<span id="availability_label">{l s='Availability:'}</span>
<span id="availability_value"{if $product->quantity <= 0} class="warning_inline"{/if}>
{$product->available_now}
</span>
  </p>

 

2) /themes/TU-TEMA/js/product.js:

 

Creo que habría que meter mano por aquí, pero no tengo muy claro el texto por qué cambia.
//availability value management
 if (availableNowValue != '')
 {
  //update the availability statut of the product
  $('#availability_value').removeClass('warning_inline');
  $('#availability_value').text(availableNowValue);
  if(stock_management == 1)
   $('#availability_statut:hidden').show();
 }
 else
 {
  //hide the availability value
  $('#availability_statut:visible').hide();
 }

 

 

Edit: todo lo que se está planteando aquí es susceptible (en un % bastante alto) de dar errores, así que haz una copia de los archivos originales antes de modificarlos!

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

Hola damnboy, gracias por contestar!!

 

A ver, no es exactamente lo que busco pero se acerca mucho. He preparado mi csv de forma que, al importarlo, en la casilla Texto mostrado cuando está disponible aparezca el texto Hay Stock o No Hay Stock. Y en la casilla Mostrar texto cuando es posible dejar pendiente un pedido, aparezca la fecha de llegada del producto, que es el dato que nos da el proveedor en caso de no haber stock.

 

Ejemplo:

 

Si un producto está disponible, se mostrará lo siguiente:

 

Disponibilidad: Hay Stock

 

Pero si no está disponible, se mostrará lo siguiente:

 

 

Disponibilidad: No Hay Stock - Fecha aproximada: 20/07/2013

 

O sea, se tiene que mostrar lo que ponga en la casilla Texto mostrado cuando está disponible más lo de la casilla de Mostrar texto cuando es posible dejar pendiente un pedido, ambas a la vez.

 

El problema es que Prestashop interpreta que los productos con stock 0 no estan disponibles, por tanto no muestra la casilla Texto mostrado cuando está disponible. Ni siquiera muestra la palabra "Disponibilidad:".

 

Lo que quiero es que el valor de esta casilla aparezca SIEMPRE en la ficha del producto.

 

Espero haberme explicado.

 

Un saludo!

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

Creo que si en "Preferencias > Productos" marcas "Sí" en "Permitir ventas de productos que no están en stock", debería salir el cartel de "Disponibilidad: No Hay Stock" también (que es como lo estoy gastando yo y me sale tanto disponible en verde como en reposición en rojo).

 

No sé si esto ya lo habrás mirado, pero ahora mismo no se me ocurre otra cosa. Seguiré mirando.

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

No, eso ya lo probé. Pero gracias igualmente por la intención!

 

Eso sólo es para dar la opción de añadir al carrito el producto aunque no esté en stock.

 

Lo que yo necesito exactamente, es que tanto si hay stock como si no lo hay, que en la ficha del producto salga la información de esas dos casillas "Texto mostrado cuando está disponible" y "Mostrar texto cuando es posible dejar pendiente un pedido", de manera, que cuando esté en stock, saldrá solamente en disponibilidad: "HAY STOCK" porque en la casilla de fechas no habrá nada.

 

Por el contrario, cuando no haya stock, por defecto, habrá fecha de llegada en la casilla de "Mostrar texto cuando es posible dejar pendiente un pedido", y NO HAY STOCK en la casilla de "Texto mostrado cuando está disponible" , así que en ese caso saldrá en disponibilidad: No hay stock - Fecha prevista 27-06-2013.

 

Eso es lo que quiero. Y para ello, me temo que solo es código, pero no hay forma por más que pruebe a retocar el archivo products.tpl.

 

Copio aquí el código original y el que he retocado, a ver si ves lo que falla:

 

 

Código original

 

<p id="availability_statut"{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) OR ($product->quantity > 0 && !$product->available_now) OR !$product->available_for_order OR $PS_CATALOG_MODE} style="display:none;"{/if}>
<span id="availability_label">{l s='Availability:'}</span>
<span id="availability_value"{if $product->quantity <= 0} class="warning_inline"{/if}>
{if $product->quantity <= 0}{if $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{else}{$product->available_now}{/if}
</span>
</p>

 

Código retocado

<p id="availability_statut"
{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp)}
style="display:block;"
{/if}>

<span id="availability_label">
{l s='Availability:'}
{$product->available_now}
</span>
<span id="availability_value"
{if $product->quantity <= 0}
class="warning_inline"
{/if}>
{if $product->quantity <= 0 && $allow_oosp}
{if $product->available_later}
{l s='Fecha aproximada: '}{$product->available_later}
{/if}
{else}
{l s='This product is no longer in stock'}

{/if}
</span>
</p>

Link to comment
Share on other sites

No, no aparece en ningún momento.

 

Lo raro es que una vez probé este mismo código en una tienda de prueba y funcionó, por eso me lo guardé para la tienda definitiva, pero ahora no me hace ni caso.

 

Pienso que tal que tal vez sea por la versión de Prestashop. Cuando lo probé, fue en la versión 1.5.3 y ahora lo estoy haciendo en la 1.4.7. Puede que la 1.5.3 tenga mejoras que hiciera que ese código funcionara, no lo sé...

 

El caso es que dices que a parte del product.tpl se tiene que tocar también el product.js, no? Yo no lo estaba tocando, puede que sea eso...

Link to comment
Share on other sites

Mis conocimientos sobre desarrollo web no son muy elevados, pero por lo que he podido ir comprobando (si no estoy equivocado) el tpl te define la página inicial, pero es luego el js el que realiza los cambios de forma dinámica, por lo que muchas veces aun definiendo cosas en el tpl luego se cambian porque el js dinámicamente una vez cargada la página las modifica! Eso me pasaba a mí, que me aparecía un campo, pero desaparecía enseguida (se veía como desaparecía!) y era el js el que lo ocultaba.

Link to comment
Share on other sites

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