Version Description
24/02/2021 =
PHP 8.0.2 tested
WooCommerce 5.0 tested
Dev - PRODUCTS - Stock - For a Variable product, the custom stock message should be shown before option selection, if stock management is set at the product level.
Dev - PRODUCTS - Stock - Show product availability message on shop/loop/search etc.
Fix - PRICES & CURRENCIES - Global Discount - Discount conflict when we enable global and wholesale both discounts.
Dev - SHIPPING & ORDERS - Order Minimum Amount - Compatibility issue has been resolved with Woocommerce Blocks plugin
Fix - SHIPPING & ORDERS - Order Numbers - Custom order number search is not working when the date parameter is set
Dev - PDF INVOICING & PACKING SLIPS - Add addition, subtraction, division attributes to shortcodes like multiply_by
Dev - PRODUCTS - Shortcodes - Exclude Item_total from order total and order subtotal if the product has been excluded by tag, category or attribute name in invoice pdf.
Release Info
Developer | ronyp |
Plugin | Booster for WooCommerce |
Version | 5.3.8 |
Comparing to | |
See all releases |
Code changes from version 5.3.7 to 5.3.8
- includes/class-wcj-global-discount.php +7 -2
- includes/class-wcj-order-min-amount.php +6 -2
- includes/class-wcj-order-numbers.php +10 -1
- includes/class-wcj-payment-gateways-currency.php +5 -3
- includes/class-wcj-product-by-date.php +3 -0
- includes/class-wcj-stock.php +59 -3
- includes/functions/wcj-functions-products.php +5 -5
- includes/settings/wcj-settings-product-by-date.php +9 -1
- includes/shortcodes/class-wcj-shortcodes-orders.php +171 -17
- includes/shortcodes/class-wcj-shortcodes-products.php +34 -5
- langs/woocommerce-jetpack.pot +53 -42
- readme.txt +14 -1
- woocommerce-jetpack.php +2 -2
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Global Discount
|
4 |
*
|
5 |
-
* @version 5.
|
6 |
* @since 2.5.7
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
@@ -231,13 +231,17 @@ class WCJ_Global_Discount extends WCJ_Module {
|
|
231 |
/**
|
232 |
* change_price.
|
233 |
*
|
234 |
-
* @version 3.
|
235 |
* @since 3.1.0
|
236 |
* @todo `WCJ_PRODUCT_GET_REGULAR_PRICE_FILTER, 'woocommerce_variation_prices_regular_price', 'woocommerce_product_variation_get_regular_price'`
|
237 |
*/
|
238 |
function change_price( $price, $_product ) {
|
239 |
$_current_filter = current_filter();
|
240 |
if ( in_array( $_current_filter, array( WCJ_PRODUCT_GET_PRICE_FILTER, 'woocommerce_variation_prices_price', 'woocommerce_product_variation_get_price' ) ) ) {
|
|
|
|
|
|
|
|
|
241 |
return $this->add_global_discount( $price, $_product, 'price' );
|
242 |
} elseif ( in_array( $_current_filter, array( WCJ_PRODUCT_GET_SALE_PRICE_FILTER, 'woocommerce_variation_prices_sale_price', 'woocommerce_product_variation_get_sale_price' ) ) ) {
|
243 |
return $this->add_global_discount( $price, $_product, 'sale_price' );
|
@@ -355,6 +359,7 @@ class WCJ_Global_Discount extends WCJ_Module {
|
|
355 |
* @since 2.5.7
|
356 |
*/
|
357 |
function add_global_discount( $price, $_product, $price_type ) {
|
|
|
358 |
if ( 'price' === $price_type && '' === $price ) {
|
359 |
return $price; // no changes
|
360 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Global Discount
|
4 |
*
|
5 |
+
* @version 5.3.8
|
6 |
* @since 2.5.7
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
231 |
/**
|
232 |
* change_price.
|
233 |
*
|
234 |
+
* @version 5.3.8
|
235 |
* @since 3.1.0
|
236 |
* @todo `WCJ_PRODUCT_GET_REGULAR_PRICE_FILTER, 'woocommerce_variation_prices_regular_price', 'woocommerce_product_variation_get_regular_price'`
|
237 |
*/
|
238 |
function change_price( $price, $_product ) {
|
239 |
$_current_filter = current_filter();
|
240 |
if ( in_array( $_current_filter, array( WCJ_PRODUCT_GET_PRICE_FILTER, 'woocommerce_variation_prices_price', 'woocommerce_product_variation_get_price' ) ) ) {
|
241 |
+
if(isset($_product->wcj_wholesale_price)){
|
242 |
+
|
243 |
+
return $_product->wcj_wholesale_price;
|
244 |
+
}
|
245 |
return $this->add_global_discount( $price, $_product, 'price' );
|
246 |
} elseif ( in_array( $_current_filter, array( WCJ_PRODUCT_GET_SALE_PRICE_FILTER, 'woocommerce_variation_prices_sale_price', 'woocommerce_product_variation_get_sale_price' ) ) ) {
|
247 |
return $this->add_global_discount( $price, $_product, 'sale_price' );
|
359 |
* @since 2.5.7
|
360 |
*/
|
361 |
function add_global_discount( $price, $_product, $price_type ) {
|
362 |
+
|
363 |
if ( 'price' === $price_type && '' === $price ) {
|
364 |
return $price; // no changes
|
365 |
}
|
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Minimum Amount
|
4 |
*
|
5 |
-
* @version 5.
|
6 |
* @since 2.5.7
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo order max amount
|
@@ -39,7 +39,7 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
|
|
39 |
/**
|
40 |
* add_order_minimum_amount_hooks.
|
41 |
*
|
42 |
-
* @version
|
43 |
* @since 2.5.3
|
44 |
* @todo (maybe) `template_redirect` instead of `wp`
|
45 |
*/
|
@@ -58,6 +58,10 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
|
|
58 |
if ( $is_order_minimum_amount_enabled ) {
|
59 |
add_action( 'woocommerce_checkout_process', array( $this, 'order_minimum_amount' ) );
|
60 |
add_action( 'woocommerce_before_cart', array( $this, 'order_minimum_amount' ) );
|
|
|
|
|
|
|
|
|
61 |
if ( 'yes' === wcj_get_option( 'wcj_order_minimum_amount_stop_from_seeing_checkout', 'no' ) ) {
|
62 |
add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), 100 );
|
63 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Minimum Amount
|
4 |
*
|
5 |
+
* @version 5.3.8
|
6 |
* @since 2.5.7
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo order max amount
|
39 |
/**
|
40 |
* add_order_minimum_amount_hooks.
|
41 |
*
|
42 |
+
* @version 5.3.8
|
43 |
* @since 2.5.3
|
44 |
* @todo (maybe) `template_redirect` instead of `wp`
|
45 |
*/
|
58 |
if ( $is_order_minimum_amount_enabled ) {
|
59 |
add_action( 'woocommerce_checkout_process', array( $this, 'order_minimum_amount' ) );
|
60 |
add_action( 'woocommerce_before_cart', array( $this, 'order_minimum_amount' ) );
|
61 |
+
if( wcj_is_plugin_activated( 'woo-gutenberg-products-block', 'woocommerce-gutenberg-products-block.php' ) ){
|
62 |
+
// For the Woocommerce blocks plugin
|
63 |
+
add_action( 'wooocommerce_store_api_validate_cart_item', array( $this, 'order_minimum_amount' ) );
|
64 |
+
}
|
65 |
if ( 'yes' === wcj_get_option( 'wcj_order_minimum_amount_stop_from_seeing_checkout', 'no' ) ) {
|
66 |
add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), 100 );
|
67 |
}
|
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Numbers
|
4 |
*
|
5 |
-
* @version 5.
|
6 |
* @author Pluggabl LLC.
|
7 |
*/
|
8 |
|
@@ -204,6 +204,15 @@ class WCJ_Order_Numbers extends WCJ_Module {
|
|
204 |
$search_no_suffix_and_prefix = preg_replace( "/{$suffix}\z/i", '', $search_no_suffix );
|
205 |
$final_search = empty( $search_no_suffix_and_prefix ) ? $search : $search_no_suffix_and_prefix;
|
206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
// Post Status
|
208 |
$post_status = isset( $_GET['post_status'] ) ? $_GET['post_status'] : 'any';
|
209 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Numbers
|
4 |
*
|
5 |
+
* @version 5.3.8
|
6 |
* @author Pluggabl LLC.
|
7 |
*/
|
8 |
|
204 |
$search_no_suffix_and_prefix = preg_replace( "/{$suffix}\z/i", '', $search_no_suffix );
|
205 |
$final_search = empty( $search_no_suffix_and_prefix ) ? $search : $search_no_suffix_and_prefix;
|
206 |
|
207 |
+
if($search == $final_search){
|
208 |
+
|
209 |
+
$final_search = substr($final_search,strlen( $prefix ));
|
210 |
+
$final_search = ltrim($final_search,0);
|
211 |
+
if(strlen( $suffix ) > 0)
|
212 |
+
{
|
213 |
+
$final_search = substr($final_search,0,-strlen( $suffix ));
|
214 |
+
}
|
215 |
+
}
|
216 |
// Post Status
|
217 |
$post_status = isset( $_GET['post_status'] ) ? $_GET['post_status'] : 'any';
|
218 |
|
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Gateways Currency Converter
|
4 |
*
|
5 |
-
* @version 5.3.
|
6 |
* @since 2.3.0
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
@@ -136,7 +136,7 @@ class WCJ_Payment_Gateways_Currency extends WCJ_Module {
|
|
136 |
/**
|
137 |
* change_price_by_gateway.
|
138 |
*
|
139 |
-
* @version
|
140 |
* @since 2.3.0
|
141 |
*/
|
142 |
function change_price_by_gateway( $price, $product ) {
|
@@ -145,7 +145,9 @@ class WCJ_Payment_Gateways_Currency extends WCJ_Module {
|
|
145 |
if ( '' != $current_gateway ) {
|
146 |
$gateway_currency_exchange_rate = wcj_get_option( 'wcj_gateways_currency_exchange_rate_' . $current_gateway );
|
147 |
$gateway_currency_exchange_rate = str_replace( ',', '.', $gateway_currency_exchange_rate );
|
148 |
-
$price
|
|
|
|
|
149 |
}
|
150 |
}
|
151 |
return $price;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Gateways Currency Converter
|
4 |
*
|
5 |
+
* @version 5.3.8
|
6 |
* @since 2.3.0
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
136 |
/**
|
137 |
* change_price_by_gateway.
|
138 |
*
|
139 |
+
* @version 5.3.8
|
140 |
* @since 2.3.0
|
141 |
*/
|
142 |
function change_price_by_gateway( $price, $product ) {
|
145 |
if ( '' != $current_gateway ) {
|
146 |
$gateway_currency_exchange_rate = wcj_get_option( 'wcj_gateways_currency_exchange_rate_' . $current_gateway );
|
147 |
$gateway_currency_exchange_rate = str_replace( ',', '.', $gateway_currency_exchange_rate );
|
148 |
+
if(is_numeric($price)){
|
149 |
+
$price = $price * $gateway_currency_exchange_rate;
|
150 |
+
}
|
151 |
}
|
152 |
}
|
153 |
return $price;
|
@@ -52,6 +52,9 @@ class WCJ_Product_By_Date extends WCJ_Module {
|
|
52 |
add_filter( 'woocommerce_is_purchasable', array( $this, 'check_is_purchasable_by_date' ), PHP_INT_MAX, 2 );
|
53 |
}
|
54 |
add_action( 'woocommerce_single_product_summary', array( $this, 'maybe_add_unavailable_by_date_message' ), 30 );
|
|
|
|
|
|
|
55 |
}
|
56 |
}
|
57 |
}
|
52 |
add_filter( 'woocommerce_is_purchasable', array( $this, 'check_is_purchasable_by_date' ), PHP_INT_MAX, 2 );
|
53 |
}
|
54 |
add_action( 'woocommerce_single_product_summary', array( $this, 'maybe_add_unavailable_by_date_message' ), 30 );
|
55 |
+
if('yes' === wcj_get_option( 'wcj_product_by_date_show_message_on_shop_enabled', 'no' )){
|
56 |
+
add_action( 'woocommerce_shop_loop_item_title', array( $this, 'maybe_add_unavailable_by_date_message' ), 30 );
|
57 |
+
}
|
58 |
}
|
59 |
}
|
60 |
}
|
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Stock
|
4 |
*
|
5 |
-
* @version 5.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
@@ -16,7 +16,7 @@ class WCJ_Stock extends WCJ_Module {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version 5.
|
20 |
* @since 2.8.0
|
21 |
* @todo (maybe) change `link_slug` to "woocommerce-products-stock" or "woocommerce-product-stock"
|
22 |
* @todo customize "Available on backorder" message in cart
|
@@ -44,6 +44,7 @@ class WCJ_Stock extends WCJ_Module {
|
|
44 |
if ( $this->is_custom_in_stock || $this->is_custom_out_of_stock || $this->is_custom_backorder ) {
|
45 |
if ( $this->is_custom_in_stock_text || $this->is_custom_out_of_stock_text || $this->is_custom_backorder_text ) {
|
46 |
add_filter( 'woocommerce_get_availability_text', array( $this, 'custom_availability_text' ), PHP_INT_MAX, 2 );
|
|
|
47 |
}
|
48 |
if ( $this->is_custom_in_stock_class || $this->is_custom_out_of_stock_class || $this->is_custom_backorder_class ) {
|
49 |
add_filter( 'woocommerce_get_availability_class', array( $this, 'custom_availability_class' ), PHP_INT_MAX, 2 );
|
@@ -64,7 +65,60 @@ class WCJ_Stock extends WCJ_Module {
|
|
64 |
}
|
65 |
|
66 |
}
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
/**
|
69 |
* custom_availability_text.
|
70 |
*
|
@@ -82,8 +136,10 @@ class WCJ_Stock extends WCJ_Module {
|
|
82 |
return do_shortcode( wcj_get_option( 'wcj_stock_custom_out_of_stock', '' ) );
|
83 |
}
|
84 |
} elseif ( $_product->managing_stock() && $_product->is_on_backorder( 1 ) ) {
|
|
|
85 |
if ( $this->is_custom_backorder && $this->is_custom_backorder_text ) {
|
86 |
// Available on backorder
|
|
|
87 |
return $_product->backorders_require_notification() ? do_shortcode( wcj_get_option( 'wcj_stock_custom_backorder', '' ) ) : '';
|
88 |
}
|
89 |
} elseif ( $_product->managing_stock() ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Stock
|
4 |
*
|
5 |
+
* @version 5.3.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 5.3.8
|
20 |
* @since 2.8.0
|
21 |
* @todo (maybe) change `link_slug` to "woocommerce-products-stock" or "woocommerce-product-stock"
|
22 |
* @todo customize "Available on backorder" message in cart
|
44 |
if ( $this->is_custom_in_stock || $this->is_custom_out_of_stock || $this->is_custom_backorder ) {
|
45 |
if ( $this->is_custom_in_stock_text || $this->is_custom_out_of_stock_text || $this->is_custom_backorder_text ) {
|
46 |
add_filter( 'woocommerce_get_availability_text', array( $this, 'custom_availability_text' ), PHP_INT_MAX, 2 );
|
47 |
+
add_filter( 'woocommerce_before_variations_form', array( $this, 'custom_availability_for_variable_product' ), PHP_INT_MAX, 2 );
|
48 |
}
|
49 |
if ( $this->is_custom_in_stock_class || $this->is_custom_out_of_stock_class || $this->is_custom_backorder_class ) {
|
50 |
add_filter( 'woocommerce_get_availability_class', array( $this, 'custom_availability_class' ), PHP_INT_MAX, 2 );
|
65 |
}
|
66 |
|
67 |
}
|
68 |
+
/**
|
69 |
+
* custom_availability_for_variable_product.
|
70 |
+
*
|
71 |
+
* @version 5.3.8
|
72 |
+
* @since 3.6.0
|
73 |
+
* @see `wc_format_stock_for_display()`
|
74 |
+
* */
|
75 |
+
function custom_availability_for_variable_product(){
|
76 |
+
global $product;
|
77 |
+
$_product = $product;
|
78 |
+
if( $_product->is_type( 'variable' )) {
|
79 |
+
$stock = get_post_meta( $_product->get_id(), '_manage_stock', true );
|
80 |
+
if($stock ==='yes'){
|
81 |
+
if ( !$_product->is_in_stock() ) {
|
82 |
+
if($this->is_custom_out_of_stock && $this->is_custom_out_of_stock_text){
|
83 |
+
$variable="<div class='stock'>".do_shortcode( wcj_get_option( 'wcj_stock_custom_out_of_stock', '' ) )."</div>";
|
84 |
+
echo $variable;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
elseif ( $_product->managing_stock() && $_product->is_on_backorder( 1 ) ) {
|
88 |
+
if ( $this->is_custom_backorder && $this->is_custom_backorder_text ) {
|
89 |
+
// Available on backorder
|
90 |
+
echo $_product->backorders_require_notification() ? do_shortcode( wcj_get_option( 'wcj_stock_custom_backorder', '' ) ) : '';
|
91 |
+
}
|
92 |
+
}
|
93 |
+
elseif ( $_product->managing_stock() ) {
|
94 |
+
if ( $this->is_custom_in_stock && $this->is_custom_in_stock_text ) {
|
95 |
+
// In stock
|
96 |
+
if (
|
97 |
+
'' != ( $low_amount_text = wcj_get_option( 'wcj_stock_custom_in_stock_low_amount', '' ) ) &&
|
98 |
+
'low_amount' === wcj_get_option( 'woocommerce_stock_format' ) && $_product->get_stock_quantity() <= wcj_get_option( 'woocommerce_notify_low_stock_amount' )
|
99 |
+
) {
|
100 |
+
// Only %s left in stock
|
101 |
+
$return = sprintf( do_shortcode( $low_amount_text ),
|
102 |
+
wc_format_stock_quantity_for_display( $_product->get_stock_quantity(), $_product ) );
|
103 |
+
} else {
|
104 |
+
// %s in stock && In stock
|
105 |
+
$return = sprintf( do_shortcode( wcj_get_option( 'wcj_stock_custom_in_stock', '' ) ),
|
106 |
+
wc_format_stock_quantity_for_display( $_product->get_stock_quantity(), $_product ) );
|
107 |
+
}
|
108 |
+
if ( '' != ( $can_be_backordered_text = wcj_get_option( 'wcj_stock_custom_in_stock_can_be_backordered', '' ) ) &&
|
109 |
+
$_product->backorders_allowed() && $_product->backorders_require_notification()
|
110 |
+
) {
|
111 |
+
// (can be backordered)
|
112 |
+
$return .= $can_be_backordered_text;
|
113 |
+
}
|
114 |
+
echo $return;
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
}
|
122 |
/**
|
123 |
* custom_availability_text.
|
124 |
*
|
136 |
return do_shortcode( wcj_get_option( 'wcj_stock_custom_out_of_stock', '' ) );
|
137 |
}
|
138 |
} elseif ( $_product->managing_stock() && $_product->is_on_backorder( 1 ) ) {
|
139 |
+
|
140 |
if ( $this->is_custom_backorder && $this->is_custom_backorder_text ) {
|
141 |
// Available on backorder
|
142 |
+
|
143 |
return $_product->backorders_require_notification() ? do_shortcode( wcj_get_option( 'wcj_stock_custom_backorder', '' ) ) : '';
|
144 |
}
|
145 |
} elseif ( $_product->managing_stock() ) {
|
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Products
|
4 |
*
|
5 |
-
* @version 5.3.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
@@ -151,7 +151,7 @@ if ( ! function_exists( 'wcj_get_product_display_price' ) ) {
|
|
151 |
/**
|
152 |
* wcj_get_product_display_price.
|
153 |
*
|
154 |
-
* @version 3.8
|
155 |
* @since 2.7.0
|
156 |
* @todo `$scope` in `WCJ_IS_WC_VERSION_BELOW_3` (i.e. `cart`)
|
157 |
*/
|
@@ -163,9 +163,9 @@ if ( ! function_exists( 'wcj_get_product_display_price' ) ) {
|
|
163 |
return $_product->get_display_price( $price, $qty );
|
164 |
} else {
|
165 |
$minus_sign = '';
|
166 |
-
if ( $price < 0 ) {
|
167 |
-
|
168 |
-
|
169 |
}
|
170 |
if ( 'cart' === $scope ) {
|
171 |
$display_price = ( 'incl' === wcj_get_option( 'woocommerce_tax_display_cart' ) ?
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Products
|
4 |
*
|
5 |
+
* @version 5.3.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
151 |
/**
|
152 |
* wcj_get_product_display_price.
|
153 |
*
|
154 |
+
* @version 5.3.8
|
155 |
* @since 2.7.0
|
156 |
* @todo `$scope` in `WCJ_IS_WC_VERSION_BELOW_3` (i.e. `cart`)
|
157 |
*/
|
163 |
return $_product->get_display_price( $price, $qty );
|
164 |
} else {
|
165 |
$minus_sign = '';
|
166 |
+
if ( $price < 0 && is_numeric($price) ) {
|
167 |
+
$minus_sign = '-';
|
168 |
+
$price *= -1;
|
169 |
}
|
170 |
if ( 'cart' === $scope ) {
|
171 |
$display_price = ( 'incl' === wcj_get_option( 'woocommerce_tax_display_cart' ) ?
|
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Product Availability by Date
|
4 |
*
|
5 |
-
* @version
|
6 |
* @since 2.9.1
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
@@ -118,6 +118,14 @@ $settings = array_merge( $settings, array(
|
|
118 |
'type' => 'title',
|
119 |
'id' => 'wcj_product_by_date_advanced_options',
|
120 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
array(
|
122 |
'title' => __( 'Action', 'woocommerce-jetpack' ),
|
123 |
'desc' => '<br>' . __( 'Action to be taken, when product is not available by date.', 'woocommerce-jetpack' ),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Product Availability by Date
|
4 |
*
|
5 |
+
* @version 5.3.8
|
6 |
* @since 2.9.1
|
7 |
* @author Pluggabl LLC.
|
8 |
*/
|
118 |
'type' => 'title',
|
119 |
'id' => 'wcj_product_by_date_advanced_options',
|
120 |
),
|
121 |
+
array(
|
122 |
+
'title' => __( 'Show Message on Category/shop Page', 'woocommerce-jetpack' ),
|
123 |
+
'desc' => '<strong>' . __( 'Show Message on shop Page', 'woocommerce-jetpack' ) . '</strong>',
|
124 |
+
'desc_tip' => __( 'Enable this if you also want to show message on shop page.', 'woocommerce-jetpack' ),
|
125 |
+
'id' => 'wcj_product_by_date_show_message_on_shop_enabled',
|
126 |
+
'default' => 'no',
|
127 |
+
'type' => 'checkbox',
|
128 |
+
),
|
129 |
array(
|
130 |
'title' => __( 'Action', 'woocommerce-jetpack' ),
|
131 |
'desc' => '<br>' . __( 'Action to be taken, when product is not available by date.', 'woocommerce-jetpack' ),
|
@@ -144,6 +144,9 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
144 |
'color' => 'black',
|
145 |
'currency' => '',
|
146 |
'doc_type' => 'invoice',
|
|
|
|
|
|
|
147 |
'show_label' => true
|
148 |
), $atts );
|
149 |
|
@@ -1199,9 +1202,50 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
1199 |
*
|
1200 |
* @version 3.1.2
|
1201 |
*/
|
|
|
1202 |
function wcj_order_total_tax( $atts ) {
|
1203 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1204 |
}
|
|
|
1205 |
|
1206 |
/**
|
1207 |
* wcj_order_total_tax_after_refund.
|
@@ -1232,18 +1276,84 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
1232 |
* wcj_order_subtotal.
|
1233 |
*/
|
1234 |
function wcj_order_subtotal( $atts ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1235 |
|
1236 |
-
if ( 'yes' === $atts['round_by_line'] ) {
|
1237 |
-
$the_subtotal = 0;
|
1238 |
-
foreach ( $this->the_order->get_items() as $item ) {
|
1239 |
-
$the_subtotal += $this->the_order->get_line_subtotal( $item, false, true );
|
1240 |
-
}
|
1241 |
-
} else {
|
1242 |
-
$the_subtotal = $this->the_order->get_subtotal();
|
1243 |
-
}
|
1244 |
-
|
1245 |
-
return $this->wcj_price_shortcode( $the_subtotal, $atts );
|
1246 |
-
}
|
1247 |
|
1248 |
/**
|
1249 |
* wcj_order_subtotal_to_display.
|
@@ -1294,14 +1404,58 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
1294 |
* @version 5.3.7
|
1295 |
*
|
1296 |
*/
|
|
|
|
|
1297 |
function wcj_order_total( $atts ) {
|
1298 |
-
$
|
1299 |
-
$
|
1300 |
-
|
1301 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1302 |
}
|
|
|
|
|
|
|
|
|
|
|
1303 |
return $this->wcj_price_shortcode( $order_total, $atts );
|
1304 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1305 |
|
1306 |
/**
|
1307 |
* wcj_order_total_after_refund.
|
@@ -1373,4 +1527,4 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
1373 |
|
1374 |
endif;
|
1375 |
|
1376 |
-
return new WCJ_Orders_Shortcodes();
|
144 |
'color' => 'black',
|
145 |
'currency' => '',
|
146 |
'doc_type' => 'invoice',
|
147 |
+
'exclude_by_categories' => '',
|
148 |
+
'exclude_by_tags' => '',
|
149 |
+
'exclude_by_attribute__name' => '',
|
150 |
'show_label' => true
|
151 |
), $atts );
|
152 |
|
1202 |
*
|
1203 |
* @version 3.1.2
|
1204 |
*/
|
1205 |
+
|
1206 |
function wcj_order_total_tax( $atts ) {
|
1207 |
+
$the_items = $this->the_order->get_items();
|
1208 |
+
$exclude_item_total = 0;
|
1209 |
+
|
1210 |
+
foreach ( $the_items as $item_id => $item ) {
|
1211 |
+
$the_product = $item->get_product( $item );
|
1212 |
+
|
1213 |
+
// Check if it's not excluded by category
|
1214 |
+
if ( '' != $atts['exclude_by_categories'] && $the_product ) {
|
1215 |
+
if ( wcj_product_has_terms( $the_product, $atts['exclude_by_categories'], 'product_cat' ) ) {
|
1216 |
+
$exclude_item_tax += $item->get_subtotal_tax();
|
1217 |
+
}
|
1218 |
+
}
|
1219 |
+
|
1220 |
+
// Check if it's not excluded by tag
|
1221 |
+
if ( '' != $atts['exclude_by_tags'] && $the_product ) {
|
1222 |
+
if ( wcj_product_has_terms( $the_product, $atts['exclude_by_tags'], 'product_tag' ) ) {
|
1223 |
+
$exclude_item_tax += $item->get_subtotal_tax();
|
1224 |
+
}
|
1225 |
+
}
|
1226 |
+
|
1227 |
+
// Check if it's not excluded by product attribute
|
1228 |
+
if ( $the_product && '' != $atts['exclude_by_attribute__name'] ) {
|
1229 |
+
$product_attributes = $the_product->get_attributes();
|
1230 |
+
if ( isset( $product_attributes[ $atts['exclude_by_attribute__name'] ] ) ) {
|
1231 |
+
$product_attribute = $product_attributes[ $atts['exclude_by_attribute__name'] ];
|
1232 |
+
if ( is_object( $product_attribute ) ) {
|
1233 |
+
if ( 'WC_Product_Attribute' === get_class( $product_attribute ) && in_array( $atts['exclude_by_attribute__value'], $product_attribute->get_options() ) ) {
|
1234 |
+
$exclude_item_tax += $item->get_subtotal_tax();
|
1235 |
+
}
|
1236 |
+
} elseif ( $atts['exclude_by_attribute__name'] ) {
|
1237 |
+
$exclude_item_tax += $item->get_subtotal_tax();
|
1238 |
+
}
|
1239 |
+
}
|
1240 |
+
}
|
1241 |
+
}
|
1242 |
+
$total_tax = $this->the_order->get_total_tax();
|
1243 |
+
$total_tax -= $exclude_item_tax;
|
1244 |
+
$total_tax = $this->wcj_price_shortcode( apply_filters( 'wcj_order_total_tax', $total_tax, $this->the_order ), $atts );
|
1245 |
+
//$total_tax -= $exclude_item_tax;
|
1246 |
+
return $total_tax;
|
1247 |
}
|
1248 |
+
|
1249 |
|
1250 |
/**
|
1251 |
* wcj_order_total_tax_after_refund.
|
1276 |
* wcj_order_subtotal.
|
1277 |
*/
|
1278 |
function wcj_order_subtotal( $atts ) {
|
1279 |
+
|
1280 |
+
|
1281 |
+
if ( 'yes' === $atts['round_by_line'] ) {
|
1282 |
+
$the_subtotal = 0;
|
1283 |
+
foreach ( $this->the_order->get_items() as $item ) {
|
1284 |
+
$the_product = $item->get_product( $item ) ;
|
1285 |
+
// Check if it's not excluded by category
|
1286 |
+
if ( '' != $atts['exclude_by_categories'] && $the_product ) {
|
1287 |
+
if ( wcj_product_has_terms( $the_product, $atts['exclude_by_categories'], 'product_cat' ) ) {
|
1288 |
+
continue;
|
1289 |
+
}
|
1290 |
+
}
|
1291 |
+
// Check if it's not excluded by tag
|
1292 |
+
if ( '' != $atts['exclude_by_tags'] && $the_product ) {
|
1293 |
+
if ( wcj_product_has_terms( $the_product, $atts['exclude_by_tags'], 'product_tag' ) ) {
|
1294 |
+
continue;
|
1295 |
+
}
|
1296 |
+
}
|
1297 |
+
// Check if it's not excluded by product attribute
|
1298 |
+
if ( '' != $atts['exclude_by_attribute__name'] && $the_product ) {
|
1299 |
+
$product_attributes = $the_product->get_attributes();
|
1300 |
+
if ( isset( $product_attributes[ $atts['exclude_by_attribute__name'] ] ) ) {
|
1301 |
+
$product_attribute = $product_attributes[ $atts['exclude_by_attribute__name'] ];
|
1302 |
+
if ( is_object( $product_attribute ) ) {
|
1303 |
+
if ( 'WC_Product_Attribute' === get_class( $product_attribute ) && in_array( $atts['exclude_by_attribute__value'], $product_attribute->get_options() ) ) {
|
1304 |
+
continue;
|
1305 |
+
}
|
1306 |
+
} elseif ( $atts['exclude_by_attribute__name'] ) {
|
1307 |
+
continue;
|
1308 |
+
}
|
1309 |
+
}
|
1310 |
+
}
|
1311 |
+
|
1312 |
+
$the_subtotal += $this->the_order->get_line_subtotal( $item, false, true );
|
1313 |
+
}
|
1314 |
+
} else {
|
1315 |
+
$the_items = $this->the_order->get_items();
|
1316 |
+
$exclude_item_total = 0;
|
1317 |
+
|
1318 |
+
foreach ( $the_items as $item_id => $item ) {
|
1319 |
+
$the_product = $item->get_product( $item );
|
1320 |
+
|
1321 |
+
// Check if it's not excluded by category
|
1322 |
+
if ( '' != $atts['exclude_by_categories'] && $the_product ) {
|
1323 |
+
if ( wcj_product_has_terms( $the_product, $atts['exclude_by_categories'], 'product_cat' ) ) {
|
1324 |
+
$exclude_item_subtotal += $item['total'];
|
1325 |
+
}
|
1326 |
+
}
|
1327 |
+
|
1328 |
+
// Check if it's not excluded by tag
|
1329 |
+
if ( '' != $atts['exclude_by_tags'] && $the_product ) {
|
1330 |
+
if ( wcj_product_has_terms( $the_product, $atts['exclude_by_tags'], 'product_tag' ) ) {
|
1331 |
+
$exclude_item_subtotal += $item['total'];
|
1332 |
+
}
|
1333 |
+
}
|
1334 |
+
|
1335 |
+
// Check if it's not excluded by product attribute
|
1336 |
+
if ( $the_product && '' != $atts['exclude_by_attribute__name'] ) {
|
1337 |
+
$product_attributes = $the_product->get_attributes();
|
1338 |
+
if ( isset( $product_attributes[ $atts['exclude_by_attribute__name'] ] ) ) {
|
1339 |
+
$product_attribute = $product_attributes[ $atts['exclude_by_attribute__name'] ];
|
1340 |
+
if ( is_object( $product_attribute ) ) {
|
1341 |
+
if ( 'WC_Product_Attribute' === get_class( $product_attribute ) && in_array( $atts['exclude_by_attribute__value'], $product_attribute->get_options() ) ) {
|
1342 |
+
$exclude_item_subtotal += $item['total'];;
|
1343 |
+
}
|
1344 |
+
} elseif ( $atts['exclude_by_attribute__name'] ) {
|
1345 |
+
$exclude_item_subtotal += $item['total'];
|
1346 |
+
}
|
1347 |
+
}
|
1348 |
+
}
|
1349 |
+
}
|
1350 |
+
$the_subtotal = $this->the_order->get_subtotal();
|
1351 |
+
$the_subtotal -= $exclude_item_subtotal;
|
1352 |
+
}
|
1353 |
+
|
1354 |
+
return $this->wcj_price_shortcode( $the_subtotal, $atts );
|
1355 |
+
}
|
1356 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1357 |
|
1358 |
/**
|
1359 |
* wcj_order_subtotal_to_display.
|
1404 |
* @version 5.3.7
|
1405 |
*
|
1406 |
*/
|
1407 |
+
|
1408 |
+
|
1409 |
function wcj_order_total( $atts ) {
|
1410 |
+
$the_items = $this->the_order->get_items();
|
1411 |
+
$exclude_item_total = 0;
|
1412 |
+
|
1413 |
+
foreach ( $the_items as $item_id => $item ) {
|
1414 |
+
$the_product = $item->get_product( $item );
|
1415 |
+
|
1416 |
+
// Check if it's not excluded by category
|
1417 |
+
if ( '' != $atts['exclude_by_categories'] && $the_product ) {
|
1418 |
+
if ( wcj_product_has_terms( $the_product, $atts['exclude_by_categories'], 'product_cat' ) ) {
|
1419 |
+
$exclude_item_total += $item->get_total();
|
1420 |
+
}
|
1421 |
+
}
|
1422 |
+
|
1423 |
+
// Check if it's not excluded by tag
|
1424 |
+
if ( '' != $atts['exclude_by_tags'] && $the_product ) {
|
1425 |
+
if ( wcj_product_has_terms( $the_product, $atts['exclude_by_tags'], 'product_tag' ) ) {
|
1426 |
+
$exclude_item_total += $item->get_total();
|
1427 |
+
}
|
1428 |
+
}
|
1429 |
+
|
1430 |
+
// Check if it's not excluded by product attribute
|
1431 |
+
if ( $the_product && '' != $atts['exclude_by_attribute__name'] ) {
|
1432 |
+
$product_attributes = $the_product->get_attributes();
|
1433 |
+
if ( isset( $product_attributes[ $atts['exclude_by_attribute__name'] ] ) ) {
|
1434 |
+
$product_attribute = $product_attributes[ $atts['exclude_by_attribute__name'] ];
|
1435 |
+
if ( is_object( $product_attribute ) ) {
|
1436 |
+
if ( 'WC_Product_Attribute' === get_class( $product_attribute ) && in_array( $atts['exclude_by_attribute__value'], $product_attribute->get_options() ) ) {
|
1437 |
+
$exclude_item_total += $item->get_total();
|
1438 |
+
}
|
1439 |
+
} elseif ( $atts['exclude_by_attribute__name']) {
|
1440 |
+
$exclude_item_total += $item->get_total();
|
1441 |
+
}
|
1442 |
+
}
|
1443 |
+
}
|
1444 |
}
|
1445 |
+
|
1446 |
+
$order_total = ( true === $atts['excl_tax'] ) ? $this->the_order->get_total() - $this->the_order->get_total_tax() : $this->the_order->get_total();
|
1447 |
+
|
1448 |
+
$order_total -= $exclude_item_total;
|
1449 |
+
|
1450 |
return $this->wcj_price_shortcode( $order_total, $atts );
|
1451 |
}
|
1452 |
+
|
1453 |
+
|
1454 |
+
|
1455 |
+
|
1456 |
+
|
1457 |
+
|
1458 |
+
|
1459 |
|
1460 |
/**
|
1461 |
* wcj_order_total_after_refund.
|
1527 |
|
1528 |
endif;
|
1529 |
|
1530 |
+
return new WCJ_Orders_Shortcodes();
|
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Products
|
4 |
*
|
5 |
-
* @version 5.3.
|
6 |
* @author Pluggabl LLC.
|
7 |
*/
|
8 |
|
@@ -15,7 +15,7 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version 3.6.
|
19 |
* @todo (maybe) add `[wcj_product_stock_price]`
|
20 |
*/
|
21 |
function __construct() {
|
@@ -78,6 +78,9 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
78 |
'image_nr' => 1,
|
79 |
'multiply_by' => '',
|
80 |
'multiply_by_meta' => '',
|
|
|
|
|
|
|
81 |
'hide_currency' => 'no',
|
82 |
'excerpt_length' => 0, // deprecated
|
83 |
'length' => 0,
|
@@ -386,7 +389,7 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
386 |
/**
|
387 |
* get_product_price_including_or_excluding_tax.
|
388 |
*
|
389 |
-
* @version 2.7.
|
390 |
* @since 2.5.7
|
391 |
*/
|
392 |
function get_product_price_including_or_excluding_tax( $atts, $including_or_excluding ) {
|
@@ -410,6 +413,23 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
410 |
$min = $min * $atts['multiply_by'];
|
411 |
$max = $max * $atts['multiply_by'];
|
412 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
413 |
if ( 'yes' !== $atts['hide_currency'] ) {
|
414 |
$min = wc_price( $min );
|
415 |
$max = wc_price( $max );
|
@@ -426,6 +446,15 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
426 |
if ( 0 != $atts['multiply_by'] && is_numeric( $atts['multiply_by'] ) ) {
|
427 |
$the_price = $the_price * $atts['multiply_by'];
|
428 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
429 |
return ( 'yes' === $atts['hide_currency'] ) ? $the_price : wc_price( $the_price );
|
430 |
}
|
431 |
}
|
@@ -630,13 +659,13 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
630 |
/**
|
631 |
* wcj_product_total_sales.
|
632 |
*
|
633 |
-
* @version
|
634 |
* @since 2.2.6
|
635 |
*/
|
636 |
function wcj_product_total_sales( $atts ) {
|
637 |
$product_custom_fields = get_post_custom( wcj_get_product_id_or_variation_parent_id( $this->the_product ) );
|
638 |
$total_sales = ( isset( $product_custom_fields['total_sales'][0] ) ) ? $product_custom_fields['total_sales'][0] : '';
|
639 |
-
if ( 0 != $atts['offset'] ) {
|
640 |
$total_sales += $atts['offset'];
|
641 |
}
|
642 |
return ( 0 == $total_sales && 'yes' === $atts['hide_if_zero'] ) ? '' : $total_sales;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Products
|
4 |
*
|
5 |
+
* @version 5.3.8
|
6 |
* @author Pluggabl LLC.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 3.6.1
|
19 |
* @todo (maybe) add `[wcj_product_stock_price]`
|
20 |
*/
|
21 |
function __construct() {
|
78 |
'image_nr' => 1,
|
79 |
'multiply_by' => '',
|
80 |
'multiply_by_meta' => '',
|
81 |
+
'addition_by' =>'',
|
82 |
+
'subtraction_by' =>'',
|
83 |
+
'division_by' =>'',
|
84 |
'hide_currency' => 'no',
|
85 |
'excerpt_length' => 0, // deprecated
|
86 |
'length' => 0,
|
389 |
/**
|
390 |
* get_product_price_including_or_excluding_tax.
|
391 |
*
|
392 |
+
* @version 2.7.1
|
393 |
* @since 2.5.7
|
394 |
*/
|
395 |
function get_product_price_including_or_excluding_tax( $atts, $including_or_excluding ) {
|
413 |
$min = $min * $atts['multiply_by'];
|
414 |
$max = $max * $atts['multiply_by'];
|
415 |
}
|
416 |
+
// For Additon
|
417 |
+
if ( 0 != $atts['addition_by'] && is_numeric( $atts['addition_by'] ) ) {
|
418 |
+
$min = $min + $atts['addition_by'];
|
419 |
+
$max = $max + $atts['addition_by'];
|
420 |
+
}
|
421 |
+
|
422 |
+
//For Subsaction
|
423 |
+
if ( 0 != $atts['subtraction_by'] && is_numeric( $atts['subtraction_by'] ) ) {
|
424 |
+
$min = $min - $atts['subtraction_by'];
|
425 |
+
$max = $max - $atts['subtraction_by'];
|
426 |
+
}
|
427 |
+
|
428 |
+
//For Division
|
429 |
+
if ( 0 != $atts['division_by'] && is_numeric( $atts['division_by'] ) ) {
|
430 |
+
$min = $min / $atts['division_by'];
|
431 |
+
$max = $max / $atts['division_by'];
|
432 |
+
}
|
433 |
if ( 'yes' !== $atts['hide_currency'] ) {
|
434 |
$min = wc_price( $min );
|
435 |
$max = wc_price( $max );
|
446 |
if ( 0 != $atts['multiply_by'] && is_numeric( $atts['multiply_by'] ) ) {
|
447 |
$the_price = $the_price * $atts['multiply_by'];
|
448 |
}
|
449 |
+
if ( 0 != $atts['addition_by'] && is_numeric( $atts['addition_by'] ) ) {
|
450 |
+
$the_price = $the_price + $atts['addition_by'];
|
451 |
+
}
|
452 |
+
if ( 0 != $atts['subtraction_by'] && is_numeric( $atts['subtraction_by'] ) ) {
|
453 |
+
$the_price = $the_price - $atts['subtraction_by'];
|
454 |
+
}
|
455 |
+
if ( 0 != $atts['division_by'] && is_numeric( $atts['division_by'] ) ) {
|
456 |
+
$the_price = $the_price / $atts['division_by'];
|
457 |
+
}
|
458 |
return ( 'yes' === $atts['hide_currency'] ) ? $the_price : wc_price( $the_price );
|
459 |
}
|
460 |
}
|
659 |
/**
|
660 |
* wcj_product_total_sales.
|
661 |
*
|
662 |
+
* @version 5.3.8
|
663 |
* @since 2.2.6
|
664 |
*/
|
665 |
function wcj_product_total_sales( $atts ) {
|
666 |
$product_custom_fields = get_post_custom( wcj_get_product_id_or_variation_parent_id( $this->the_product ) );
|
667 |
$total_sales = ( isset( $product_custom_fields['total_sales'][0] ) ) ? $product_custom_fields['total_sales'][0] : '';
|
668 |
+
if ( 0 != $atts['offset'] && !is_numeric($total_sales) ) {
|
669 |
$total_sales += $atts['offset'];
|
670 |
}
|
671 |
return ( 0 == $total_sales && 'yes' === $atts['hide_if_zero'] ) ? '' : $total_sales;
|
@@ -193,7 +193,7 @@ msgid "Export all Booster's options to a file."
|
|
193 |
msgstr ""
|
194 |
|
195 |
#: includes/admin/class-wc-settings-jetpack.php:473
|
196 |
-
#: includes/class-wcj-purchase-data.php:
|
197 |
msgid "Import"
|
198 |
msgstr ""
|
199 |
|
@@ -699,7 +699,7 @@ msgstr ""
|
|
699 |
#: includes/class-wcj-admin-bar.php:440
|
700 |
#: includes/settings/wcj-settings-offer-price.php:49
|
701 |
#: includes/settings/wcj-settings-stock.php:101
|
702 |
-
#: includes/shortcodes/class-wcj-shortcodes-products.php:
|
703 |
msgid "Out of stock"
|
704 |
msgstr ""
|
705 |
|
@@ -1043,17 +1043,17 @@ msgstr ""
|
|
1043 |
msgid "Add custom info to the cart page."
|
1044 |
msgstr ""
|
1045 |
|
1046 |
-
#: includes/class-wcj-checkout-core-fields.php:
|
1047 |
msgid "Checkout Core Fields"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
-
#: includes/class-wcj-checkout-core-fields.php:
|
1051 |
msgid ""
|
1052 |
"Customize core checkout fields. Disable/enable fields, set required, change "
|
1053 |
"labels and/or placeholders; Setup fields by category (Plus)"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
-
#: includes/class-wcj-checkout-core-fields.php:
|
1057 |
msgid ""
|
1058 |
"Customize core checkout fields. Disable/enable fields, set required, change "
|
1059 |
"labels and/or placeholders etc."
|
@@ -2400,7 +2400,7 @@ msgstr ""
|
|
2400 |
#: includes/class-wcj-my-account.php:496
|
2401 |
#: includes/class-wcj-product-bulk-meta-editor.php:280
|
2402 |
#: includes/class-wcj-product-by-user.php:207
|
2403 |
-
#: includes/class-wcj-purchase-data.php:
|
2404 |
#: includes/class-wcj-track-users.php:335
|
2405 |
#: includes/classes/class-wcj-module.php:891
|
2406 |
#: includes/functions/wcj-functions-general.php:189
|
@@ -2741,23 +2741,23 @@ msgstr ""
|
|
2741 |
msgid "Tool renumerates all orders."
|
2742 |
msgstr ""
|
2743 |
|
2744 |
-
#: includes/class-wcj-order-numbers.php:
|
2745 |
msgid "Orders successfully renumerated!"
|
2746 |
msgstr ""
|
2747 |
|
2748 |
-
#: includes/class-wcj-order-numbers.php:
|
2749 |
#, php-format
|
2750 |
msgid "Sequential number generation is enabled. Next order number will be %s."
|
2751 |
msgstr ""
|
2752 |
|
2753 |
-
#: includes/class-wcj-order-numbers.php:
|
2754 |
#, php-format
|
2755 |
msgid ""
|
2756 |
"Press the button below to renumerate all existing orders starting from order "
|
2757 |
"counter settings in <a href=\"%s\">Order Numbers</a> module."
|
2758 |
msgstr ""
|
2759 |
|
2760 |
-
#: includes/class-wcj-order-numbers.php:
|
2761 |
msgid "Renumerate orders"
|
2762 |
msgstr ""
|
2763 |
|
@@ -3726,7 +3726,7 @@ msgid "Save"
|
|
3726 |
msgstr ""
|
3727 |
|
3728 |
#: includes/class-wcj-product-bulk-meta-editor.php:390
|
3729 |
-
#: includes/class-wcj-purchase-data.php:
|
3730 |
#: includes/export/class-wcj-fields-helper.php:280
|
3731 |
#: includes/functions/wcj-functions-reports.php:24
|
3732 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:42
|
@@ -3805,7 +3805,7 @@ msgid "Products category"
|
|
3805 |
msgstr ""
|
3806 |
|
3807 |
#: includes/class-wcj-product-bulk-price-converter.php:262
|
3808 |
-
#: includes/shortcodes/class-wcj-shortcodes-products.php:
|
3809 |
msgid "Any"
|
3810 |
msgstr ""
|
3811 |
|
@@ -3950,19 +3950,19 @@ msgstr ""
|
|
3950 |
msgid "Set product availability by date."
|
3951 |
msgstr ""
|
3952 |
|
3953 |
-
#: includes/class-wcj-product-by-date.php:
|
3954 |
#: includes/settings/wcj-settings-product-by-date.php:107
|
3955 |
msgid "%product_title% is not available until %direct_date%."
|
3956 |
msgstr ""
|
3957 |
|
3958 |
-
#: includes/class-wcj-product-by-date.php:
|
3959 |
-
#: includes/class-wcj-product-by-date.php:
|
3960 |
#: includes/settings/wcj-settings-product-by-date.php:95
|
3961 |
msgid "<p style=\"color:red;\">%product_title% is not available this month.</p>"
|
3962 |
msgstr ""
|
3963 |
|
3964 |
-
#: includes/class-wcj-product-by-date.php:
|
3965 |
-
#: includes/class-wcj-product-by-date.php:
|
3966 |
#: includes/settings/wcj-settings-product-by-date.php:83
|
3967 |
msgid ""
|
3968 |
"<p style=\"color:red;\">%product_title% is available only on %date_this_month"
|
@@ -4435,7 +4435,6 @@ msgid ""
|
|
4435 |
msgstr ""
|
4436 |
|
4437 |
#: includes/class-wcj-product-price-by-formula.php:241
|
4438 |
-
#: includes/class-wcj-purchase-data.php:256
|
4439 |
msgid "Error in formula"
|
4440 |
msgstr ""
|
4441 |
|
@@ -4668,41 +4667,41 @@ msgstr ""
|
|
4668 |
msgid "Products XML file #%s created successfully."
|
4669 |
msgstr ""
|
4670 |
|
4671 |
-
#: includes/class-wcj-purchase-data.php:
|
4672 |
msgid "Cost of Goods"
|
4673 |
msgstr ""
|
4674 |
|
4675 |
-
#: includes/class-wcj-purchase-data.php:
|
4676 |
msgid ""
|
4677 |
"Save product purchase costs data for admin reports (1 custom field allowed in "
|
4678 |
"free version)."
|
4679 |
msgstr ""
|
4680 |
|
4681 |
-
#: includes/class-wcj-purchase-data.php:
|
4682 |
msgid "Save product purchase costs data for admin reports."
|
4683 |
msgstr ""
|
4684 |
|
4685 |
-
#: includes/class-wcj-purchase-data.php:
|
4686 |
msgid "\"WooCommerce Cost of Goods\" Data Import"
|
4687 |
msgstr ""
|
4688 |
|
4689 |
-
#: includes/class-wcj-purchase-data.php:
|
4690 |
msgid "Import products costs from \"WooCommerce Cost of Goods\"."
|
4691 |
msgstr ""
|
4692 |
|
4693 |
-
#: includes/class-wcj-purchase-data.php:
|
4694 |
msgid "Product Title"
|
4695 |
msgstr ""
|
4696 |
|
4697 |
-
#: includes/class-wcj-purchase-data.php:
|
4698 |
msgid "WooCommerce Cost of Goods (source)"
|
4699 |
msgstr ""
|
4700 |
|
4701 |
-
#: includes/class-wcj-purchase-data.php:
|
4702 |
msgid "Booster: Product cost (destination)"
|
4703 |
msgstr ""
|
4704 |
|
4705 |
-
#: includes/class-wcj-purchase-data.php:
|
4706 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:139
|
4707 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:209
|
4708 |
#: includes/shipping/class-wc-shipping-wcj-custom.php:122
|
@@ -4710,30 +4709,30 @@ msgstr ""
|
|
4710 |
msgid "Cost"
|
4711 |
msgstr ""
|
4712 |
|
4713 |
-
#: includes/class-wcj-purchase-data.php:
|
4714 |
-
#: includes/class-wcj-purchase-data.php:
|
4715 |
-
#: includes/class-wcj-purchase-data.php:
|
4716 |
#: includes/functions/wcj-functions-reports.php:28
|
4717 |
#: includes/settings/wcj-settings-purchase-data.php:144
|
4718 |
#: includes/settings/wcj-settings-purchase-data.php:172
|
4719 |
msgid "Profit"
|
4720 |
msgstr ""
|
4721 |
|
4722 |
-
#: includes/class-wcj-purchase-data.php:
|
4723 |
#: includes/settings/wcj-settings-purchase-data.php:153
|
4724 |
#: includes/settings/wcj-settings-purchase-data.php:179
|
4725 |
msgid "Purchase Cost"
|
4726 |
msgstr ""
|
4727 |
|
4728 |
-
#: includes/class-wcj-purchase-data.php:
|
4729 |
msgid "Selling"
|
4730 |
msgstr ""
|
4731 |
|
4732 |
-
#: includes/class-wcj-purchase-data.php:
|
4733 |
msgid "Buying"
|
4734 |
msgstr ""
|
4735 |
|
4736 |
-
#: includes/class-wcj-purchase-data.php:
|
4737 |
msgid "Report"
|
4738 |
msgstr ""
|
4739 |
|
@@ -16850,18 +16849,30 @@ msgid "Message when product is not available by direct date."
|
|
16850 |
msgstr ""
|
16851 |
|
16852 |
#: includes/settings/wcj-settings-product-by-date.php:122
|
16853 |
-
msgid "
|
16854 |
msgstr ""
|
16855 |
|
16856 |
#: includes/settings/wcj-settings-product-by-date.php:123
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16857 |
msgid "Action to be taken, when product is not available by date."
|
16858 |
msgstr ""
|
16859 |
|
16860 |
-
#: includes/settings/wcj-settings-product-by-date.php:
|
16861 |
msgid "Make product non-purchasable"
|
16862 |
msgstr ""
|
16863 |
|
16864 |
-
#: includes/settings/wcj-settings-product-by-date.php:
|
16865 |
msgid "Only output message"
|
16866 |
msgstr ""
|
16867 |
|
@@ -20066,7 +20077,7 @@ msgstr ""
|
|
20066 |
msgid "Attribute \"name\" is required!"
|
20067 |
msgstr ""
|
20068 |
|
20069 |
-
#: includes/shortcodes/class-wcj-shortcodes-orders.php:
|
20070 |
#, php-format
|
20071 |
msgid "Refund #%1$s - %2$s"
|
20072 |
msgstr ""
|
@@ -20109,20 +20120,20 @@ msgstr ""
|
|
20109 |
msgid "Edit Product"
|
20110 |
msgstr ""
|
20111 |
|
20112 |
-
#: includes/shortcodes/class-wcj-shortcodes-products.php:
|
20113 |
#, php-format
|
20114 |
msgid "%s ago"
|
20115 |
msgstr ""
|
20116 |
|
20117 |
-
#: includes/shortcodes/class-wcj-shortcodes-products.php:
|
20118 |
msgid "No sales yet."
|
20119 |
msgstr ""
|
20120 |
|
20121 |
-
#: includes/shortcodes/class-wcj-shortcodes-products.php:
|
20122 |
msgid "In stock"
|
20123 |
msgstr ""
|
20124 |
|
20125 |
-
#: includes/shortcodes/class-wcj-shortcodes-products.php:
|
20126 |
msgid "from %level_min_qty% pcs."
|
20127 |
msgstr ""
|
20128 |
|
193 |
msgstr ""
|
194 |
|
195 |
#: includes/admin/class-wc-settings-jetpack.php:473
|
196 |
+
#: includes/class-wcj-purchase-data.php:94
|
197 |
msgid "Import"
|
198 |
msgstr ""
|
199 |
|
699 |
#: includes/class-wcj-admin-bar.php:440
|
700 |
#: includes/settings/wcj-settings-offer-price.php:49
|
701 |
#: includes/settings/wcj-settings-stock.php:101
|
702 |
+
#: includes/shortcodes/class-wcj-shortcodes-products.php:594
|
703 |
msgid "Out of stock"
|
704 |
msgstr ""
|
705 |
|
1043 |
msgid "Add custom info to the cart page."
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: includes/class-wcj-checkout-core-fields.php:25
|
1047 |
msgid "Checkout Core Fields"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
+
#: includes/class-wcj-checkout-core-fields.php:26
|
1051 |
msgid ""
|
1052 |
"Customize core checkout fields. Disable/enable fields, set required, change "
|
1053 |
"labels and/or placeholders; Setup fields by category (Plus)"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
+
#: includes/class-wcj-checkout-core-fields.php:27
|
1057 |
msgid ""
|
1058 |
"Customize core checkout fields. Disable/enable fields, set required, change "
|
1059 |
"labels and/or placeholders etc."
|
2400 |
#: includes/class-wcj-my-account.php:496
|
2401 |
#: includes/class-wcj-product-bulk-meta-editor.php:280
|
2402 |
#: includes/class-wcj-product-by-user.php:207
|
2403 |
+
#: includes/class-wcj-purchase-data.php:95
|
2404 |
#: includes/class-wcj-track-users.php:335
|
2405 |
#: includes/classes/class-wcj-module.php:891
|
2406 |
#: includes/functions/wcj-functions-general.php:189
|
2741 |
msgid "Tool renumerates all orders."
|
2742 |
msgstr ""
|
2743 |
|
2744 |
+
#: includes/class-wcj-order-numbers.php:326
|
2745 |
msgid "Orders successfully renumerated!"
|
2746 |
msgstr ""
|
2747 |
|
2748 |
+
#: includes/class-wcj-order-numbers.php:329
|
2749 |
#, php-format
|
2750 |
msgid "Sequential number generation is enabled. Next order number will be %s."
|
2751 |
msgstr ""
|
2752 |
|
2753 |
+
#: includes/class-wcj-order-numbers.php:338
|
2754 |
#, php-format
|
2755 |
msgid ""
|
2756 |
"Press the button below to renumerate all existing orders starting from order "
|
2757 |
"counter settings in <a href=\"%s\">Order Numbers</a> module."
|
2758 |
msgstr ""
|
2759 |
|
2760 |
+
#: includes/class-wcj-order-numbers.php:345
|
2761 |
msgid "Renumerate orders"
|
2762 |
msgstr ""
|
2763 |
|
3726 |
msgstr ""
|
3727 |
|
3728 |
#: includes/class-wcj-product-bulk-meta-editor.php:390
|
3729 |
+
#: includes/class-wcj-purchase-data.php:78
|
3730 |
#: includes/export/class-wcj-fields-helper.php:280
|
3731 |
#: includes/functions/wcj-functions-reports.php:24
|
3732 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:42
|
3805 |
msgstr ""
|
3806 |
|
3807 |
#: includes/class-wcj-product-bulk-price-converter.php:262
|
3808 |
+
#: includes/shortcodes/class-wcj-shortcodes-products.php:357
|
3809 |
msgid "Any"
|
3810 |
msgstr ""
|
3811 |
|
3950 |
msgid "Set product availability by date."
|
3951 |
msgstr ""
|
3952 |
|
3953 |
+
#: includes/class-wcj-product-by-date.php:114
|
3954 |
#: includes/settings/wcj-settings-product-by-date.php:107
|
3955 |
msgid "%product_title% is not available until %direct_date%."
|
3956 |
msgstr ""
|
3957 |
|
3958 |
+
#: includes/class-wcj-product-by-date.php:121
|
3959 |
+
#: includes/class-wcj-product-by-date.php:123
|
3960 |
#: includes/settings/wcj-settings-product-by-date.php:95
|
3961 |
msgid "<p style=\"color:red;\">%product_title% is not available this month.</p>"
|
3962 |
msgstr ""
|
3963 |
|
3964 |
+
#: includes/class-wcj-product-by-date.php:124
|
3965 |
+
#: includes/class-wcj-product-by-date.php:126
|
3966 |
#: includes/settings/wcj-settings-product-by-date.php:83
|
3967 |
msgid ""
|
3968 |
"<p style=\"color:red;\">%product_title% is available only on %date_this_month"
|
4435 |
msgstr ""
|
4436 |
|
4437 |
#: includes/class-wcj-product-price-by-formula.php:241
|
|
|
4438 |
msgid "Error in formula"
|
4439 |
msgstr ""
|
4440 |
|
4667 |
msgid "Products XML file #%s created successfully."
|
4668 |
msgstr ""
|
4669 |
|
4670 |
+
#: includes/class-wcj-purchase-data.php:28
|
4671 |
msgid "Cost of Goods"
|
4672 |
msgstr ""
|
4673 |
|
4674 |
+
#: includes/class-wcj-purchase-data.php:29
|
4675 |
msgid ""
|
4676 |
"Save product purchase costs data for admin reports (1 custom field allowed in "
|
4677 |
"free version)."
|
4678 |
msgstr ""
|
4679 |
|
4680 |
+
#: includes/class-wcj-purchase-data.php:30
|
4681 |
msgid "Save product purchase costs data for admin reports."
|
4682 |
msgstr ""
|
4683 |
|
4684 |
+
#: includes/class-wcj-purchase-data.php:36
|
4685 |
msgid "\"WooCommerce Cost of Goods\" Data Import"
|
4686 |
msgstr ""
|
4687 |
|
4688 |
+
#: includes/class-wcj-purchase-data.php:37
|
4689 |
msgid "Import products costs from \"WooCommerce Cost of Goods\"."
|
4690 |
msgstr ""
|
4691 |
|
4692 |
+
#: includes/class-wcj-purchase-data.php:79
|
4693 |
msgid "Product Title"
|
4694 |
msgstr ""
|
4695 |
|
4696 |
+
#: includes/class-wcj-purchase-data.php:80
|
4697 |
msgid "WooCommerce Cost of Goods (source)"
|
4698 |
msgstr ""
|
4699 |
|
4700 |
+
#: includes/class-wcj-purchase-data.php:81
|
4701 |
msgid "Booster: Product cost (destination)"
|
4702 |
msgstr ""
|
4703 |
|
4704 |
+
#: includes/class-wcj-purchase-data.php:116
|
4705 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:139
|
4706 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:209
|
4707 |
#: includes/shipping/class-wc-shipping-wcj-custom.php:122
|
4709 |
msgid "Cost"
|
4710 |
msgstr ""
|
4711 |
|
4712 |
+
#: includes/class-wcj-purchase-data.php:119
|
4713 |
+
#: includes/class-wcj-purchase-data.php:182
|
4714 |
+
#: includes/class-wcj-purchase-data.php:269
|
4715 |
#: includes/functions/wcj-functions-reports.php:28
|
4716 |
#: includes/settings/wcj-settings-purchase-data.php:144
|
4717 |
#: includes/settings/wcj-settings-purchase-data.php:172
|
4718 |
msgid "Profit"
|
4719 |
msgstr ""
|
4720 |
|
4721 |
+
#: includes/class-wcj-purchase-data.php:185
|
4722 |
#: includes/settings/wcj-settings-purchase-data.php:153
|
4723 |
#: includes/settings/wcj-settings-purchase-data.php:179
|
4724 |
msgid "Purchase Cost"
|
4725 |
msgstr ""
|
4726 |
|
4727 |
+
#: includes/class-wcj-purchase-data.php:267
|
4728 |
msgid "Selling"
|
4729 |
msgstr ""
|
4730 |
|
4731 |
+
#: includes/class-wcj-purchase-data.php:268
|
4732 |
msgid "Buying"
|
4733 |
msgstr ""
|
4734 |
|
4735 |
+
#: includes/class-wcj-purchase-data.php:276
|
4736 |
msgid "Report"
|
4737 |
msgstr ""
|
4738 |
|
16849 |
msgstr ""
|
16850 |
|
16851 |
#: includes/settings/wcj-settings-product-by-date.php:122
|
16852 |
+
msgid "Show Message on Category/shop Page"
|
16853 |
msgstr ""
|
16854 |
|
16855 |
#: includes/settings/wcj-settings-product-by-date.php:123
|
16856 |
+
msgid "Show Message on shop Page"
|
16857 |
+
msgstr ""
|
16858 |
+
|
16859 |
+
#: includes/settings/wcj-settings-product-by-date.php:124
|
16860 |
+
msgid "Enable this if you also want to show message on shop page."
|
16861 |
+
msgstr ""
|
16862 |
+
|
16863 |
+
#: includes/settings/wcj-settings-product-by-date.php:130
|
16864 |
+
msgid "Action"
|
16865 |
+
msgstr ""
|
16866 |
+
|
16867 |
+
#: includes/settings/wcj-settings-product-by-date.php:131
|
16868 |
msgid "Action to be taken, when product is not available by date."
|
16869 |
msgstr ""
|
16870 |
|
16871 |
+
#: includes/settings/wcj-settings-product-by-date.php:136
|
16872 |
msgid "Make product non-purchasable"
|
16873 |
msgstr ""
|
16874 |
|
16875 |
+
#: includes/settings/wcj-settings-product-by-date.php:137
|
16876 |
msgid "Only output message"
|
16877 |
msgstr ""
|
16878 |
|
20077 |
msgid "Attribute \"name\" is required!"
|
20078 |
msgstr ""
|
20079 |
|
20080 |
+
#: includes/shortcodes/class-wcj-shortcodes-orders.php:339
|
20081 |
#, php-format
|
20082 |
msgid "Refund #%1$s - %2$s"
|
20083 |
msgstr ""
|
20120 |
msgid "Edit Product"
|
20121 |
msgstr ""
|
20122 |
|
20123 |
+
#: includes/shortcodes/class-wcj-shortcodes-products.php:331
|
20124 |
#, php-format
|
20125 |
msgid "%s ago"
|
20126 |
msgstr ""
|
20127 |
|
20128 |
+
#: includes/shortcodes/class-wcj-shortcodes-products.php:338
|
20129 |
msgid "No sales yet."
|
20130 |
msgstr ""
|
20131 |
|
20132 |
+
#: includes/shortcodes/class-wcj-shortcodes-products.php:591
|
20133 |
msgid "In stock"
|
20134 |
msgstr ""
|
20135 |
|
20136 |
+
#: includes/shortcodes/class-wcj-shortcodes-products.php:1009
|
20137 |
msgid "from %level_min_qty% pcs."
|
20138 |
msgstr ""
|
20139 |
|
@@ -3,7 +3,7 @@ Contributors: anbinder, karzin, pluggabl
|
|
3 |
Tags: woocommerce, booster for woocommerce, woocommerce jetpack
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 5.6
|
6 |
-
Stable tag: 5.3.
|
7 |
License: GNU General Public License v3.0
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -193,11 +193,24 @@ You can see the differences between versions in this [table](https://booster.io/
|
|
193 |
|
194 |
== Changelog ==
|
195 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
= 5.3.7 - 28/01/2021 =
|
197 |
* Fix - CART & CHECKOUT - Checkout Core Fields - Fix "Checkout Field arragement not working" issue.
|
198 |
* Fix - PRICES & CURRENCIES - Currency Exchange Rates - Fix "Woocommerce store base currency Exchange rate" issue.
|
199 |
* Dev - EMAILS & MISC. - Export - Added feature to export new column for 'allowed_user_roles' and 'not_allowed_user_roles'.
|
200 |
* Fix - PDF INVOICING & PACKING SLIPS - PDF Invoicing - Fix "Order total after refund" shortcode with new attribute.
|
|
|
201 |
* Fix - CART & CHECKOUT - EU VAT Number - Fix "EU VAT Number" should be required for EU countries only.
|
202 |
|
203 |
= 5.3.6 - 30/12/2020 =
|
3 |
Tags: woocommerce, booster for woocommerce, woocommerce jetpack
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 5.6
|
6 |
+
Stable tag: 5.3.8
|
7 |
License: GNU General Public License v3.0
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
193 |
|
194 |
== Changelog ==
|
195 |
|
196 |
+
= 5.3.8 - 24/02/2021 =
|
197 |
+
|
198 |
+
* PHP 8.0.2 tested
|
199 |
+
* WooCommerce 5.0 tested
|
200 |
+
* Dev - PRODUCTS - Stock - For a Variable product, the custom stock message should be shown before option selection, if stock management is set at the product level.
|
201 |
+
* Dev - PRODUCTS - Stock - Show product availability message on shop/loop/search etc.
|
202 |
+
* Fix - PRICES & CURRENCIES - Global Discount - Discount conflict when we enable global and wholesale both discounts.
|
203 |
+
* Dev - SHIPPING & ORDERS - Order Minimum Amount - Compatibility issue has been resolved with Woocommerce Blocks plugin
|
204 |
+
* Fix - SHIPPING & ORDERS - Order Numbers - Custom order number search is not working when the date parameter is set
|
205 |
+
* Dev - PDF INVOICING & PACKING SLIPS - Add addition, subtraction, division attributes to shortcodes like multiply_by
|
206 |
+
* Dev - PRODUCTS - Shortcodes - Exclude Item_total from order total and order subtotal if the product has been excluded by tag, category or attribute name in invoice pdf.
|
207 |
+
|
208 |
= 5.3.7 - 28/01/2021 =
|
209 |
* Fix - CART & CHECKOUT - Checkout Core Fields - Fix "Checkout Field arragement not working" issue.
|
210 |
* Fix - PRICES & CURRENCIES - Currency Exchange Rates - Fix "Woocommerce store base currency Exchange rate" issue.
|
211 |
* Dev - EMAILS & MISC. - Export - Added feature to export new column for 'allowed_user_roles' and 'not_allowed_user_roles'.
|
212 |
* Fix - PDF INVOICING & PACKING SLIPS - PDF Invoicing - Fix "Order total after refund" shortcode with new attribute.
|
213 |
+
* Fix - PRODUCTS - Cost of Goods - Fix "Profit" amount to consider "Wholesale discount","product price by formula" and also made it compatible with multi-currency.
|
214 |
* Fix - CART & CHECKOUT - EU VAT Number - Fix "EU VAT Number" should be required for EU countries only.
|
215 |
|
216 |
= 5.3.6 - 30/12/2020 =
|
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Booster for WooCommerce
|
4 |
Plugin URI: https://booster.io
|
5 |
Description: Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules. All in one WooCommerce plugin.
|
6 |
-
Version: 5.3.
|
7 |
Author: Pluggabl LLC
|
8 |
Author URI: https://booster.io
|
9 |
Text Domain: woocommerce-jetpack
|
@@ -57,7 +57,7 @@ final class WC_Jetpack {
|
|
57 |
* @var string
|
58 |
* @since 2.4.7
|
59 |
*/
|
60 |
-
public $version = '5.3.
|
61 |
|
62 |
/**
|
63 |
* @var WC_Jetpack The single instance of the class
|
3 |
Plugin Name: Booster for WooCommerce
|
4 |
Plugin URI: https://booster.io
|
5 |
Description: Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules. All in one WooCommerce plugin.
|
6 |
+
Version: 5.3.8
|
7 |
Author: Pluggabl LLC
|
8 |
Author URI: https://booster.io
|
9 |
Text Domain: woocommerce-jetpack
|
57 |
* @var string
|
58 |
* @since 2.4.7
|
59 |
*/
|
60 |
+
public $version = '5.3.8';
|
61 |
|
62 |
/**
|
63 |
* @var WC_Jetpack The single instance of the class
|