This repository was archived by the owner on Feb 23, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 8 files changed +29
-309
lines changed
tests/php/StoreApi/Utilities Expand file tree Collapse file tree 8 files changed +29
-309
lines changed Original file line number Diff line number Diff line change @@ -44,6 +44,21 @@ protected function maybe_recalculate_totals() {
4444 }
4545 }
4646
47+ /**
48+ * If there is a draft order, releases stock.
49+ *
50+ * @return void
51+ */
52+ protected function maybe_release_stock () {
53+ $ draft_order = wc ()->session ->get ( 'store_api_draft_order ' , 0 );
54+
55+ if ( ! $ draft_order ) {
56+ return ;
57+ }
58+
59+ wc_release_stock_for_order ( $ draft_order );
60+ }
61+
4762 /**
4863 * Get route response when something went wrong.
4964 *
Original file line number Diff line number Diff line change @@ -57,6 +57,7 @@ protected function get_route_post_response( \WP_REST_Request $request ) {
5757 }
5858
5959 $ cart ->remove_cart_item ( $ request ['key ' ] );
60+ $ this ->maybe_release_stock ();
6061
6162 return rest_ensure_response ( $ this ->schema ->get_item_response ( $ cart ) );
6263 }
Original file line number Diff line number Diff line change 1111use Automattic \WooCommerce \Blocks \Domain \Services \CreateAccount ;
1212use Automattic \WooCommerce \Blocks \StoreApi \Utilities \CartController ;
1313use Automattic \WooCommerce \Blocks \StoreApi \Utilities \OrderController ;
14- use Automattic \WooCommerce \Blocks \ StoreApi \ Utilities \ReserveStock ;
15- use Automattic \WooCommerce \Blocks \ StoreApi \ Utilities \ReserveStockException ;
14+ use Automattic \WooCommerce \Checkout \ Helpers \ReserveStock ;
15+ use Automattic \WooCommerce \Checkout \ Helpers \ReserveStockException ;
1616use Automattic \WooCommerce \Blocks \Payments \PaymentResult ;
1717use Automattic \WooCommerce \Blocks \Payments \PaymentContext ;
1818
@@ -332,7 +332,7 @@ private function is_valid_draft_order( $order_object ) {
332332 private function create_or_update_draft_order () {
333333 $ cart_controller = new CartController ();
334334 $ order_controller = new OrderController ();
335- $ reserve_stock = \class_exists ( ' \Automattic\WooCommerce\Checkout\Helpers\ReserveStock ' ) ? new \ Automattic \ WooCommerce \ Checkout \ Helpers \ ReserveStock () : new ReserveStock ();
335+ $ reserve_stock = new ReserveStock ();
336336 $ this ->order = $ this ->get_draft_order_id () ? wc_get_order ( $ this ->get_draft_order_id () ) : null ;
337337
338338 // Validate items etc are allowed in the order before it gets created.
Original file line number Diff line number Diff line change 22namespace Automattic \WooCommerce \Blocks \StoreApi \Schemas ;
33
44use Automattic \WooCommerce \Blocks \Domain \Services \ExtendRestApi ;
5-
5+ use Automattic \ WooCommerce \ Checkout \ Helpers \ ReserveStock ;
66
77/**
88 * CartItemSchema class.
@@ -346,15 +346,10 @@ protected function get_remaining_stock( \WC_Product $product ) {
346346 return null ;
347347 }
348348
349- $ draft_order = wc ()->session ->get ( 'store_api_draft_order ' , 0 );
350-
351- if ( \class_exists ( '\Automattic\WooCommerce\Checkout\Helpers\ReserveStock ' ) ) {
352- $ reserve_stock = new \Automattic \WooCommerce \Checkout \Helpers \ReserveStock ();
353- } else {
354- $ reserve_stock = new \Automattic \WooCommerce \Blocks \StoreApi \Utilities \ReserveStock ();
355- }
356-
349+ $ draft_order = wc ()->session ->get ( 'store_api_draft_order ' , 0 );
350+ $ reserve_stock = new ReserveStock ();
357351 $ reserved_stock = $ reserve_stock ->get_reserved_stock ( $ product , $ draft_order );
352+
358353 return $ product ->get_stock_quantity () - $ reserved_stock ;
359354 }
360355
Original file line number Diff line number Diff line change 33
44use Automattic \WooCommerce \Blocks \StoreApi \Routes \RouteException ;
55use Automattic \WooCommerce \Blocks \StoreApi \Utilities \NoticeHandler ;
6+ use Automattic \WooCommerce \Checkout \Helpers \ReserveStock ;
67
78/**
89 * Woo Cart Controller class.
@@ -630,14 +631,9 @@ protected function get_product_quantity_in_cart( $product ) {
630631 * @return int
631632 */
632633 protected function get_remaining_stock_for_product ( $ product ) {
633- if ( \class_exists ( '\Automattic\WooCommerce\Checkout\Helpers\ReserveStock ' ) ) {
634- $ reserve_stock_controller = new \Automattic \WooCommerce \Checkout \Helpers \ReserveStock ();
635- } else {
636- $ reserve_stock_controller = new \Automattic \WooCommerce \Blocks \StoreApi \Utilities \ReserveStock ();
637- }
638-
639- $ draft_order = wc ()->session ->get ( 'store_api_draft_order ' , 0 );
640- $ qty_reserved = $ reserve_stock_controller ->get_reserved_stock ( $ product , $ draft_order );
634+ $ reserve_stock = new ReserveStock ();
635+ $ draft_order = wc ()->session ->get ( 'store_api_draft_order ' , 0 );
636+ $ qty_reserved = $ reserve_stock ->get_reserved_stock ( $ product , $ draft_order );
641637
642638 return $ product ->get_stock_quantity () - $ qty_reserved ;
643639 }
Load Diff This file was deleted.
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments