At some point the 'change_stock' key is assumed to be present
in the request data, but it might not. Fixed to test for existence
before using the value.
Create a new `request_data` method in WC_Admin_Post_Types that
just returns $_REQUEST. This is intended to ease unit testing,
as this method can be easily mocked to return test data.
For bulk edit: even if stock status was left as "No change", the
status of all variations was being changed to whatever the status
of the product was before it was converted to variable. Now
no change is performed when "No change" is selected, and all
variations change to whatever is selected otherwise.
For quick edit: a new "No change" option is added that will be
preselected when the product is variable. Previously, whatever
status the product had before being converted to variable was being
shown, and that's the status that would be set when saving.
Also, a "This will change the stock status of all variations"
message is displayed before the selector.
Two methods have been created:
- update_stock_status, replaces code that was duplicated in the
quick_edit_save and bulk_edit_save methods.
- set_new_price, replaces code that was duplicated-ish in the
bulk_edit_save for setting the new regular and sales prices
(code was not identical but very similar).
Also, `round` is now used on sale price calculations that involve
multiplying by a percent, the same was as it was done already
to calculate the regular price.
wc_update_product_stock reads product from the db twice, so if it's out of sync, strange things are happening.
Also, changes dependant on stock status might get reverted if local copy of $product is not updated after wc_update_product_stock.
When shop page is not set, shop page id is set to -1. Using absint when checking if the current page is the shop page, this was applied to post with ID 1. Using intval, this is prevented.
Fixes#19606
This PR moves the `<strong>` HTML tags from the translation strings.
Replacing: `Order scheduled for: <strong>%1$s</strong>.`
With: `Order scheduled for: %s.`
We did the same in WordPress core across several releases (4.3 - 4.7). Because it's makes the translation process to RTL language (like Hebrew) much easier.