magento / inventory

Magento Inventory Project (a.k.a MSI)
Open Software License 3.0
337 stars 248 forks source link

Configurable product in cart is "IN_STOCK" even if the associated simple product is out of stock #3406

Open ereztaiar opened 9 months ago

ereztaiar commented 9 months ago

Summary (*)

Adding configurable product with simple product that has stock and arriving to the checkout when the product has no stock available. Quiring the GRAPHQL endpoint if the product has stock result in "IN_STOCK" instead of "OUT_OF_STOCK" (only the configurable product is taken into account)

Examples (*)

When running the getCheckoutDetails graphql query on a cart with configurable product and simple product that had available qty when added to cart the query returns the product as in stock

query getCheckoutDetails($cartId: String!) {
  cart(cart_id: $cartId) {
    id
    ...CheckoutPageFragment
    ...ItemsReviewFragment
    __typename
  }
}
fragment CheckoutPageFragment on Cart {
  id
  items {
    uid
    product {
      uid
      stock_status
      __typename
    }
    __typename
  }
  total_quantity
  available_payment_methods {
    code
    __typename
  }
  __typename
}
fragment ItemsReviewFragment on Cart {
  id
  total_quantity
  items {
    uid
    product {
      uid
      sku
      name
      thumbnail {
        url
        __typename
      }
      __typename
    }
    prices {
      price {
        currency
        value
        __typename
      }
      row_total {
        value
        __typename
      }
      total_item_discount {
        value
        __typename
      }
      __typename
    }
    quantity
    ... on ConfigurableCartItem {
      configurable_options {
        configurable_product_option_uid
        option_label
        configurable_product_option_value_uid
        value_label
        __typename
      }
      __typename
    }
    __typename
  }
  __typename
}

variables:

{
  "cartId":  "XXXXX"
}

This query is mapped to the PHP file Magento\InventoryGraphQl\Model\Resolver\StockStatusProvider where in the resolve function the product model is the configurable product only note: the PHP file listed above looks like a copy of the PHP file Magento\CatalogInventoryGraphQl\Model\Resolver\StockStatusProvider

Proposed solution

A solution to this could be passing the cart object with the selected values of the configuration and testing each added simple product by itself

m2-assistant[bot] commented 9 months ago

Hi @ereztaiar. Thank you for your report. To speed up processing of this issue, make sure that you provided sufficient information. Add a comment to assign the issue: @magento I am working on this


Join Magento Community Engineering Slack and ask your questions in #github channel.