Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ereztaiar opened this issue Jan 22, 2024 · 1 comment

Comments

@ereztaiar
Copy link

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

Copy link

m2-assistant bot commented Jan 22, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Ready for Grooming
Development

No branches or pull requests

1 participant