Cómo Eliminar Productos SIN Stock del Carrito en PrestaShop 1.7

Eliminar Productos SIN Stock del Carrito en PrestaShop 1.7

PrestaShop 1.7 NO elimina los productos SIN Stock de los carritos de los clientes, por lo que puede causar bastantes problemas cuando se dispone de un stock limitado para ciertos productos de la tienda.

Si tenemos muchos clientes que se decanten por un mismo producto al mismo tiempo puede darse el caso de que un producto se agote cuando ya esté en el carrito de otra persona. Por ejemplo, puede pasar que dos clientes añadan al mismo tiempo la última unidad de un producto al carrito, entonces, al pasar por caja un pedido se tramitará correctamente y el otro no. Lo que sucede es que cuando el segundo cliente realiza el pedido, el producto ya no estará disponible y esto le causará una cierta confusión, especialmente si no puede reponer ese artículo específico en su carrito.

En este artículo vamos a descubrir cómo improvisar la experiencia de nuestros clientes llevando a cabo una simple modificación en PrestaShop 1.7 para solucionar el problema.

La Presentación del Carrito en PrestaShop 1.7

El archivo que necesitamos editar es “CartPresenter.php”, ya que es el encargado de mostrar la información del carrito en toda la tienda.

Este archivo se puede localizar en la siguiente ruta de la instalación de PrestaShop 1.7:

src/Adapter/Cart/CartPresenter.php

 

Una vez localizado el archivo en cuestión, hay que editarlo (en caso de estar con el Administrador de Archivos de cPanel: Click con el botón izquierdo del ratón para seleccionar el archivo. Después, click con el botón derecho del ratón para desplegar el menú y, seleccionar la opción de “Edit”, así como “Edit” de nuevo).

PS17 CartPresenter

Después de la línea 51 más o menos, en las propiedades de la clase, hay que añadir lo siguiente en la línea 52 o siguientes:

private static $removedProducts = [];

 

PS17 CartPresenter Edit

Tras ello, y justo después del siguiente segmento, que podremos encontrar a partir de la línea 280 más o menos:
 

if ($shouldSeparateGifts) {

    $rawProducts = $cart->getProductsWithSeparatedGifts();

} else {

    $rawProducts = $cart->getProducts(true);

}


Hay que añadir lo siguiente:

if(!self::$removedProducts)

    foreach ($rawProducts as $pk => $product)

    {

    // Quitar productos en caso de no estar disponibles

        if($product[‘quantity_available’] <= 0 && !Product::isAvailableWhenOutOfStock($product['out_of_stock']))

        {

            Context::getContext()->cart->deleteProduct($product[‘id_product’],$product[‘id_product_attribute’], $product[‘id_customization’], $product[‘id_address_delivery’]);

            self::$removedProducts[] = $product[‘name’];

            unset($rawProducts[$pk]);

            continue;

        }

    }

    

Context::getContext()->smarty->assign([‘removed_products’ => self::$removedProducts]);

\Media::addJsDef([‘removed_products’ => self::$removedProducts]);

 

PS17 CartPresenter Edit 2

Por cierto, NO se nos puede olvidar guardar los cambios en la parte superior del editor.

Antes de continuar, podemos asegurarnos de que el cambio introducido funciona. Para ello, podemos añadir un producto al carrito de nuestra tienda y luego editarlo a través del Backoffice de PrestaShop 1.7 para cambiarle la cantidad disponible a 0.

Cambiada la cantidad del producto a 0, si ahora refrescamos el carrito, el producto se eliminará. Sin embargo, esto queda un poco “feo”, ya que no se le avisa al cliente sobre la supuesta desaparición del producto de su carrito, así que podemos crear una especie de “Popup casero” para ello, tal y como vamos a indicar a continuación si se dispone de la plantilla original de PrestaShop 1.7.

Por lo visto con las versiones más recientes de PrestaShop 1.7 no funciona lo siguiente, sin embargo, en versiones más viejas de PrestaShop 1.7 sí.

Plantilla Original de PrestaShop 1.7

Podemos empezar por abrir el archivo “ps_shoppingcart.tpl” y editarlo.

Lo podemos encontrar en la siguiente ruta de la instalación de PrestaShop 1.7:

themes/classic/modules/ps_shoppingcart/ps_shoppingcart.tpl

 

ps_shoppingcart.tpl

Después, debemos introducir el siguiente código en la parte inferior del archivo “ps_shoppingcart.tpl” (a partir de la línea 41 por ejemplo):

{if isset($removed_products) && $removed_products}

  <div id="removed-modal" class="modal">

    <div class="modal-dialog">

      <div class="modal-content">

        <div class="modal-body">

          <p>{l s='Estos Productos No Tienen Stock Actualmente:' d='Shop.Theme.Checkout'}</p>

            <ul>

              {foreach from=$removed_products item='r_product'}

                <li>- {$r_product}</li>

              {/foreach}

            </ul>

            <p>{l s='Por lo que han sido eliminados de tu carrito' d='Shop.Theme.Checkout'}</p>

        </div>

 

      </div>

    </div>

  </div>

{/if}


ps_shoppingcart edit

Nuevamente, NO se nos puede olvidar guardar los cambios en la parte superior del editor.

Y, por último, tendríamos que añadir un código en el Javascript personalizado del theme:

themes/classic/assets/js/custom.js


ps17 custom.js

Habría que añadir lo siguiente:

if(removed_products.length > 0) {
    $('#removed-modal').modal('show');
}


ps17 custom.js edit

¡Y eso es todo!

Nota: Se puede acceder a estos archivos a través del administrador de archivos de cPanel o Plesk, así como mediante un cliente de FTP como FileZilla. Para este artículo hemos realizado capturas de pantalla del Administrador de archivos de cPanel.

¿Todavía no tienes una Tienda Online?
Con PrestaShop 1.7 puedes montar una fácilmente.

Aquí tienes todas las características de los planes PrestaShop que puedes contratar en Hostinet. Todos ellos corren bajo discos sólidos (SSD) para garantizar la máxima velocidad de carga para TU Tienda Online. Además, te garantizamos una IP española para TU Tienda Online.

  • Hosting especializado en Prestashop con discos SSDPrestashop 1desde4´38€ / mes
  • Hosting especializado en Prestashop con discos SSDPrestashop 2desde5´54€ / mes
  • Hosting especializado en Prestashop con discos SSDPrestashop 3desde8´34€ / mes
  • Hosting especializado en Prestashop con discos SSDPrestashop 1desde4´38€/mes
  • Hosting especializado en Prestashop con discos SSDPrestashop 2desde5´54€/mes
  • Hosting especializado en Prestashop con discos SSDPrestashop 3desde8´34€/mes
    • Almacenamiento en disco duro ultra rapido SSDAlmacenamiento en disco duro ultra rapido SSDAlmacenamiento en disco duro ultra rapido SSDAlmacenamiento en disco duro ultra rapido SSD
    • El espacio en disco es la suma del espacio que ocupan los archivos que forman la web y el correo electrónico.
    • La transferencia de datos mensual es la cantidad total de información que se descargan los visitantes de nuestra web en cada acceso más nuestro uso a través de FTP y correo.
    • Ideado para sacar el máximo partido a tu Prestashop
    • Tras evaluación de nuestro equipo de migraciones
    • Te ayudamos vía email y teléfono en todas tus consultas sobre hosting web
    • Elige la versión de PHP que necesites
    • Certificado SSL autofirmadoCertificados Let's Encrypt. Mas Información AQUICertificados Let's Encrypt. Mas Información AQUICertificados Let's Encrypt. Mas Información AQUI
    • Contrata tu hosting web y consigue dominios gratisUna vez dado de alta tu alojamiento web, recibirás los vales correspondientes para registrar nuevos dominios .ES, .COM, .INFO, .NET, .ORG ó .EU.
    • Migramos tu web de tu actual host a HostinetMigramos tu web de tu actual host a HostinetMigramos tu web de tu actual host a Hostinet
    • Te ayudamos vía email y teléfono en todas tus consultas sobre hosting web
    • Hosting específicamente preparado para sacar el máximo rendimiento a tu Prestashop
    • Contrata tu hosting web y consigue dominios gratisUna vez dado de alta tu alojamiento web, recibirás los vales correspondientes para registrar nuevos dominios .ES, .COM, .INFO, .NET, .ORG ó .EU.
    • Cada dominio alojado muestra un contenido único y diferente del resto
    • Aparcando un dominio secundario en el alojamiento de nuestro dominio principal conseguimos que ambos dominios resuelvan indistintamente con la misma página que tenemos colgada.
    • Cuentas de correo gestionables a través de POP, IMAP y servicio Webmail
    • Tus buzones de correo y mails limpios de virus y con un potente filtro antispam
    • Centro de datos en Madrid (España)
    • Opción de contratación de IP dedicadaPuedes contratar tu Ip dedicada por solo 11.95 € al año AQUIPuedes contratar tu Ip dedicada por solo 11.95 € al año AQUIPuedes contratar tu Ip dedicada por solo 11.95 € al año AQUI
    • Opción de contratación de certificados SSL. Se requiere Ip dedicada.Puedes contratar tu certificado SSL por solo 14.95 € al año AQUIPuedes contratar tu certificado SSL por solo 14.95 € al año AQUIPuedes contratar tu certificado SSL por solo 14.95 € al año AQUI
    • Bases de datos MySQL disponibles para su uso en cada alojamiento web
    • ¿Quieres realizar desarrollos con Python? En Hostinet innovamos dia a dia en tu beneficio y por ello te presentamos como última novedad en todos nuestros servidores Web la posibilidad de desplegar tus aplicaciones con Python directamente desde el cPanel de tu Hosting.
    • ¿Quieres desarrollar tus aplicaciones con Ruby? En Hostinet te presentamos como última novedad en todos nuestros servicios de Hosting Web la posibilidad de desplegar tus aplicaciones con Ruby on Rails directamente desde el panel de control cPanel.
    • El fichero .htaccess permite modificar diferentes variables en la configuración de nuestra cuenta de alojamiento en el servidor.
    • El módulo mod_rewrite permite crear direcciones URL alternativas a las dinámicas generadas por la programación de nuestros sitio web (blog, foro, portal…), de tal modo que sean más legibles y fáciles de recordar
    • Te ayudamos vía email y teléfono en todas tus consultas sobre hosting web. Soporte en español por personal de Hostinet.
    • Completa recopilación de tutoriales sobre Hosting, Dominios y Prestashop
    • 30 dias para probar tu servicio de Hosting y si no te convence el servicio... te devolvemos el dinero!!

VN:F [1.9.22_1171]
Rating: 0.0/5 (Votos: 0)

¿NECESITAS AYUDA? Llama a nuestro soporte técnico 946 545 762

De Lunes a Viernes de 08:00 a 20:00 horas.


Contactar