Jump to content

Precios del carrito no se actualizan al modificar la cantidad.


jla290

Recommended Posts

Hola!

Tengo un pequeño problema en mi tienda online con Prestashop, y es que si elimino productos del carrito o modifico la cantidad no se actualizan automáticamente los precios. Sin embargo, si actualizo la página dándole a F5 o continúo con la compra, sí que surten efecto los cambios que hubiese realizado.

La página es: https://sistemasenrollables.com/domotica, donde podéis comprobar el problema mencionado.

Espero vuestra ayuda,

Gracias.

Link to comment
Share on other sites

3 minutes ago, Nickz said:

Cómo no se el precio anterior:

Motor Somfy Altus RTS

Precio 490,05 € es el precio actual. Limpiaste al cache, el del browser, el de la tienda?

Hola, @Nickz 

Efectivamente ese es el precio de una unidad, si te metes en el carrito y pones dos unidades el precio no se cambia automáticamente. Para que cambie tendrías que actualizar la página.

Compruébalo y me dices.

Link to comment
Share on other sites

21 minutes ago, jla290 said:

Compruébalo y me dices.

se actualiza al poner el articulo en el carrito

Precio singular: 326,70 €

Total de productos: 653,40 €

Envío total: Gratis

Total: 653,40 € (impuestos inc.)

Ahora bien, tu tienda a tenido una actualización? Me imagino que estos popup de querer recibir el correo interfiera con la acción.

Link to comment
Share on other sites

11 minutes ago, Nickz said:

se actualiza al poner el articulo en el carrito

Precio singular: 326,70 €

Total de productos: 653,40 €

Envío total: Gratis

Total: 653,40 € (impuestos inc.)

Ahora bien, tu tienda a tenido una actualización? Me imagino que estos popup de querer recibir el correo interfiera con la acción.

Donde no se actualiza visualmente es al cambiar las cantidades en la página de carrito: https://sistemasenrollables.com/carrito?action=show

La tienda está actualizada a la última versión de prestashop, pero esto viene de antes y nunca le he metido mano.

Link to comment
Share on other sites

On 9/13/2024 at 5:03 PM, aixos said:

Hola

esto lo recuerdo bien y aquí tienes la solución :

 

 

 

Hola, @aixos

Tiene buena pinta esa solución pero no he logrado que funcione. Te cuento lo que he he hecho por si me falta algo:

1. Copiar el contenido del archivo ps_shoppingcart.js

2. Pegarlo al final de siguiente archivo: themes/mitema/assets/js/custom.js

3. Borrar caché desde parámetros avanzados / rendimiento

4. Borrar cookies del navegador

Ya me dices si me faltó algo, sino, me temo que esta no es la solución.

Link to comment
Share on other sites

1. No has de copiar el contenido ps_shoppingcart.js

2. Pegarlo al final de siguiente archivo: themes/mitema/assets/js/custom.js

Este estaría adaptado para prestashop 8.1.7

document.addEventListener('DOMContentLoaded', function () {
  prestashop.blockcart = prestashop.blockcart || {};

  var showModal = prestashop.blockcart.showModal || function (modal) {
    document.body.insertAdjacentHTML('beforeend', modal);
    document.getElementById('blockcart-modal').addEventListener('click', function (event) {
      if (event.target.id === 'blockcart-modal') {
        event.target.remove();
      }
    });
  };

  prestashop.on('updateCart', function (event) {
    var blockcart = document.querySelector('.blockcart');
    var refreshURL = blockcart ? blockcart.dataset.refreshUrl : '';
    var requestData = {};

    if (event && event.reason) {
      requestData = {
        id_product_attribute: event.reason.idProductAttribute,
        id_product: event.reason.idProduct,
        action: event.reason.linkAction
      };
    }

    fetch(refreshURL, {
      method: 'POST',
      body: JSON.stringify(requestData),
      headers: {
        'Content-Type': 'application/json'
      }
    })
    .then(response => response.json())
    .then(function (resp) {
      if (blockcart) {
        blockcart.innerHTML = new DOMParser().parseFromString(resp.preview, 'text/html').querySelector('.blockcart').innerHTML;
      }
      if (resp.modal) {
        showModal(resp.modal);
      }
    })
    .catch(function (resp) {
      prestashop.emit('handleError', { eventType: 'updateShoppingCart', resp: resp });
    });
  });
});

3.Borrar caché desde parámetros avanzados / rendimiento

4. Borrar cookies del navegador

Link to comment
Share on other sites

12 hours ago, aixos said:

1. No has de copiar el contenido ps_shoppingcart.js

2. Pegarlo al final de siguiente archivo: themes/mitema/assets/js/custom.js

Este estaría adaptado para prestashop 8.1.7

document.addEventListener('DOMContentLoaded', function () {
  prestashop.blockcart = prestashop.blockcart || {};

  var showModal = prestashop.blockcart.showModal || function (modal) {
    document.body.insertAdjacentHTML('beforeend', modal);
    document.getElementById('blockcart-modal').addEventListener('click', function (event) {
      if (event.target.id === 'blockcart-modal') {
        event.target.remove();
      }
    });
  };

  prestashop.on('updateCart', function (event) {
    var blockcart = document.querySelector('.blockcart');
    var refreshURL = blockcart ? blockcart.dataset.refreshUrl : '';
    var requestData = {};

    if (event && event.reason) {
      requestData = {
        id_product_attribute: event.reason.idProductAttribute,
        id_product: event.reason.idProduct,
        action: event.reason.linkAction
      };
    }

    fetch(refreshURL, {
      method: 'POST',
      body: JSON.stringify(requestData),
      headers: {
        'Content-Type': 'application/json'
      }
    })
    .then(response => response.json())
    .then(function (resp) {
      if (blockcart) {
        blockcart.innerHTML = new DOMParser().parseFromString(resp.preview, 'text/html').querySelector('.blockcart').innerHTML;
      }
      if (resp.modal) {
        showModal(resp.modal);
      }
    })
    .catch(function (resp) {
      prestashop.emit('handleError', { eventType: 'updateShoppingCart', resp: resp });
    });
  });
});

3.Borrar caché desde parámetros avanzados / rendimiento

4. Borrar cookies del navegador

Hola, @aixos

Mi web corre con Prestashop 1.7.8.11 y el archivo ps_shoppingcart.js tiene el siguiente código que he copiado y pegado en el custom.js del tema, pero no funciona:

$(document).ready(function () {
  prestashop.blockcart = prestashop.blockcart || {};

  var showModal = prestashop.blockcart.showModal || function (modal) {
    var $body = $('body');
    $body.append(modal);
    $body.one('click', '#blockcart-modal', function (event) {
      if (event.target.id === 'blockcart-modal') {
        $(event.target).remove();
      }
    });
  };

  prestashop.on(
    'updateCart',
    function (event) {
      var refreshURL = $('.blockcart').data('refresh-url');
      var requestData = {};
      if (event && event.reason && typeof event.resp !== 'undefined' && !event.resp.hasError) {
        requestData = {
          id_customization: event.reason.idCustomization,
          id_product_attribute: event.reason.idProductAttribute,
          id_product: event.reason.idProduct,
          action: event.reason.linkAction
        };
      }
      if (event && event.resp && event.resp.hasError) {
        prestashop.emit('showErrorNextToAddtoCartButton', { errorMessage: event.resp.errors.join('<br/>')});
      }
      $.post(refreshURL, requestData).then(function (resp) {
        var html = $('<div />').append($.parseHTML(resp.preview));
        $('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
        if (resp.modal) {
          showModal(resp.modal);
        }
      }).fail(function (resp) {
        prestashop.emit('handleError', { eventType: 'updateShoppingCart', resp: resp });
      });
    }
  );
});

 

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

Hola

eso que dices esta mal hecho no debes tocar nada del ps_shoppingcart.js   :

Cita

el archivo ps_shoppingcart.js tiene el siguiente código que he copiado y pegado en el custom.js

Lo que debes probar es esto así en el custom.js:

El código es este para Prestashop 1.7.8.11 y el fichero esta el la ruta /themes/xxxxx/assets/js/custom.js :

$(document).ready(function () {
  prestashop.blockcart = prestashop.blockcart || {};

  var showModal = prestashop.blockcart.showModal || function (modal) {
    var $body = $('body');
    $body.append(modal);
    $body.one('click', '#blockcart-modal', function (event) {
      if (event.target.id === 'blockcart-modal') {
        $(event.target).remove();
      }
    });
  };

  $(document).ready(function () {
    prestashop.on(
      'updateCart',
      function (event) {
        var refreshURL = $('.blockcart').data('refresh-url');
        var requestData = {};

        if (event && event.reason) {
          requestData = {
            id_product_attribute: event.reason.idProductAttribute,
            id_product: event.reason.idProduct,
            action: event.reason.linkAction
          };
        }

        $.post(refreshURL, requestData).then(function (resp) {
          $('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
          if (resp.modal) {
            showModal(resp.modal);
          }
        }).fail(function (resp) {
          prestashop.emit('handleError', {eventType: 'updateShoppingCart', resp: resp});
        });
      }
    );
  });
});

3.Borrar caché desde parámetros avanzados / rendimiento

4. Borrar cookies del navegador

Link to comment
Share on other sites

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...