ACSD-59786: GraphQL returns an error when fetching a quote_id for an expired quote

The ACSD-59786 patch fixes the issue where a GraphQL query returns an error when fetching a quote_id for an expired quote. This patch is available when the Quality Patches Tool (QPT) 1.1.51 is installed. The patch ID is ACSD-59786. Please note that the issue is scheduled to be fixed in Adobe Commerce 2.4.8.

Affected products and versions

The patch is created for Adobe Commerce version:

  • Adobe Commerce (all deployment methods) 2.4.6-p3

Compatible with Adobe Commerce versions:

  • Adobe Commerce (all deployment methods) 2.4.6 - 2.4.7-p3
NOTE
The patch might become applicable to other versions with new Quality Patches Tool releases. To check if the patch is compatible with your Adobe Commerce version, update the magento/quality-patches package to the latest version and check the compatibility on the Quality Patches Tool: Search for patches page. Use the patch ID as a search keyword to locate the patch.

Issue

A GraphQL query returns an error when fetching a quote_id for an expired quote.

Steps to reproduce:

  1. Enable Companies and Purchase Orders.

    • Stores > Configuration > General > B2B Features and set Enable Company to Yes.
    • Stores > Configuration > General > B2B Features > Order Approval Configuration and set Enable Purchase Orders to Yes.
  2. Create a new company and set Enable Purchase Orders to Yes for the same.

  3. Create a simple product and assign it to a category.

  4. Log in to Storefront using the company Admin account and create a new order using Purchase Order as the payment method.

  5. Change the Quote Lifetime (days).

    • Stores > Configuration > Sales > Checkout > Shopping Cart > Quote Lifetime (days) = 0.
  6. Run the command bin/magento c:f.

  7. Go to the DB quote_table and change the created_at and updated_at values with one day in the past.

  8. Run the command bin/magento cron:run --group="sales_clean_quotes.

  9. Execute the GraphQL request given below using an authorized token for the Admin who creates the Purchase Order:

    code language-graphql
    {
        customer {
            purchase_order(uid: "MQ==") {
                quote {
                    id
                }
            }
        }
    }
    

Expected results:

The GraphQL query returns the quote_id.

Actual results:

The GraphQL query returns an internal server error.

Apply the patch

To apply individual patches, use the following links depending on your deployment method:

To learn more about Quality Patches Tool, refer to:

For info about other patches available in QPT, refer to Quality Patches Tool: Search for patches in the Quality Patches Tool guide.

recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3