Commit 0b31239a40 for woocommerce

commit 0b31239a409789d3b7e3337f452ed793b632d953
Author: Josh Heald <joshheald@users.noreply.github.com>
Date:   Thu Dec 4 13:49:51 2025 +0000

    Include variation_id in order item invalid variation error data (#62240)

    * Include ID in orderItem invalid_variation_id error

    * Add changefile(s) from automation for the following project(s): woocommerce

    ---------

    Co-authored-by: github-actions <github-actions@github.com>

diff --git a/plugins/woocommerce/changelog/62240-feat-woomob-1844-add-variation_id-to-error-data-for b/plugins/woocommerce/changelog/62240-feat-woomob-1844-add-variation_id-to-error-data-for
new file mode 100644
index 0000000000..9fd121dbaf
--- /dev/null
+++ b/plugins/woocommerce/changelog/62240-feat-woomob-1844-add-variation_id-to-error-data-for
@@ -0,0 +1,4 @@
+Significance: minor
+Type: add
+
+Add variation_id in error data for `order_item_product_invalid_variation_id` errors.
\ No newline at end of file
diff --git a/plugins/woocommerce/includes/class-wc-order-item-product.php b/plugins/woocommerce/includes/class-wc-order-item-product.php
index d9d301b694..e8c319b37f 100644
--- a/plugins/woocommerce/includes/class-wc-order-item-product.php
+++ b/plugins/woocommerce/includes/class-wc-order-item-product.php
@@ -102,7 +102,12 @@ class WC_Order_Item_Product extends WC_Order_Item {
 	 */
 	public function set_variation_id( $value ) {
 		if ( $value > 0 && 'product_variation' !== get_post_type( $value ) ) {
-			$this->error( 'order_item_product_invalid_variation_id', __( 'Invalid variation ID', 'woocommerce' ) );
+			$this->error(
+				'order_item_product_invalid_variation_id',
+				__( 'Invalid variation ID', 'woocommerce' ),
+				400,
+				array( 'variation_id' => $value )
+			);
 		}
 		$this->set_prop( 'variation_id', absint( $value ) );
 	}
diff --git a/plugins/woocommerce/tests/php/includes/class-wc-order-item-product-test.php b/plugins/woocommerce/tests/php/includes/class-wc-order-item-product-test.php
index 0fb9aa3525..14565fc974 100644
--- a/plugins/woocommerce/tests/php/includes/class-wc-order-item-product-test.php
+++ b/plugins/woocommerce/tests/php/includes/class-wc-order-item-product-test.php
@@ -269,4 +269,23 @@ class WC_Order_Item_Product_Test extends WC_Unit_Test_Case {

 		WC_Helper_Product::delete_product( $product_without_cogs->get_id() );
 	}
+
+	/**
+	 * @testdox set_variation_id throws exception with variation_id in error data for invalid ID.
+	 */
+	public function test_set_variation_id_throws_exception_with_data_for_invalid_id() {
+		$invalid_id = 999999;
+		$item       = new WC_Order_Item_Product();
+
+		try {
+			$item->set_variation_id( $invalid_id );
+			$this->fail( 'Setting an invalid variation ID should have thrown an exception.' );
+		} catch ( WC_Data_Exception $e ) {
+			$this->assertEquals( 'order_item_product_invalid_variation_id', $e->getErrorCode() );
+			$error_data = $e->getErrorData();
+			$this->assertEquals( 400, $error_data['status'] );
+			$this->assertArrayHasKey( 'variation_id', $error_data );
+			$this->assertEquals( $invalid_id, $error_data['variation_id'] );
+		}
+	}
 }