FROM CACHE - fr_header
Cette communauté a fait place à une assistance de pair-à-pair. L’assistance Shopify ne sera plus proposée pour cette communauté. Nous vous encourageons à entrer en contact avec d’autres marchands et partenaires pour obtenir de l’aide et partager vos expériences ! Veuillez continuer à signaler tout ce qui va à l'encontre de notre Code de conduite ou tout contenu que vous souhaitez faire supprimer.

Limité la quantité d'un article

Limité la quantité d'un article

FabriceM
Nouveau membre
7 0 0

Bonjour,

Je ne trouve pas ou on peut limiter la quantité d'un article par rapport au stock que l'on dispose.

Je m'explique, j'ai par exemple en stock un produit avec 5 dans le stock, et quand je veux les mettre dans mon panier d'achat, je peux sélectionner 20 ou plus. J'aimerais ne pas pouvoir sélectionner plus que la quantité de mon stock pour l'article, donc mon exemple 5 maximum.

Est-ce possible de le faire ?

Merci,

Fabrice

2 RÉPONSES 2

zmo
Touriste
12 0 6

Certains thèmes le proposent, comme notamment le thème Venture que j'utilise.

Voici la partie de `theme.js` qui correspond à cette fonctionnalité :

  QtySelector.prototype.validateAvailability = function(line, quantity) {
    var product = theme.cartObject.items[line - 1]; // 0-based index in API
    var handle = product.handle; // needed for the ajax request
    var id = product.id; // needed to find right variant from ajax results

    var params = {
      type: 'GET',
      url: '/products/' + handle + '.js',
      dataType: 'json',
      success: $.proxy(function(cartProduct) {
        this.validateAvailabilityCallback(line, quantity, id, cartProduct);
      }, this)
    };

    $.ajax(params);
  };

  QtySelector.prototype.validateAvailabilityCallback = function(
    line,
    quantity,
    id,
    product
  ) {
    var quantityIsAvailable = true;

    // This returns all variants of a product.
    // Loop through them to get our desired one.
    for (var i = 0; i < product.variants.length; i++) {
      var variant = product.variants[i];
      if (variant.id === id) {
        break;
      }
    }

    // If the variant tracks inventory and does not sell when sold out
    // we can compare the requested with available quantity
    if (
      variant.inventory_management !== null &&
      variant.inventory_policy === 'deny'
    ) {
      if (variant.inventory_quantity < quantity) {
        // Show notification with error message
        theme.Notify.open('error', theme.strings.noStockAvailable, true);

        // Set quantity to max amount available
        this.$wrapper.find('.js-qty__input').val(variant.inventory_quantity);

        quantityIsAvailable = false;
        this.$wrapper.removeClass(this.settings.loadingClass);
      }
    }

    if (quantityIsAvailable) {
      this.updateItemQuantity(line, quantity);
    }
  };

 

La partie intéressante est sur l'appel Ajax au endpoint /products dans validateAvailability(), et dans le callback, le second argument donne la quantité disponible.

Pour plus d'infos, voila la référence : https://shopify.dev/docs/themes/ajax-api/reference/product.

FabriceM
Nouveau membre
7 0 0

Merci beaucoup pour l'info. 

Je vais partir sur ce thème là, ça sera plus simple. (J'avais le minimal)