Booster for WooCommerce - Version 5.1.1

Version Description

  • 20/07/2020 =
  • Fix - EMAILS & MISC. - My Account - Improve custom menu order algorithm.
  • Fix - PRODUCTS - Product by Condition - Fix static database table name.
  • Fix - PRODUCTS - Product MSRP - Improve 'Archive Detection Method' option using the wc_get_template_part hook besides the woocommerce_before_template_part.
  • Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improves compatibility with 'Product Add-Ons' plugin and leave it as Booster Plus feature.
  • Dev - PRICES & CURRENCIES - Product Price by Formula - Create 'Save Calculated Products Prices' option trying to avoid duplicated calculation.
  • WC tested up to: 4.3
Download this release

Release Info

Developer pluggabl
Plugin Icon 128x128 Booster for WooCommerce
Version 5.1.1
Comparing to
See all releases

Code changes from version 5.0.0 to 5.1.1

Files changed (36) hide show
  1. includes/background-process/class-wcj-price-by-country-updater.php +34 -0
  2. includes/class-wcj-export-import.php +31 -1
  3. includes/class-wcj-multicurrency.php +76 -28
  4. includes/class-wcj-my-account.php +10 -13
  5. includes/class-wcj-offer-price.php +24 -22
  6. includes/class-wcj-order-min-amount.php +8 -2
  7. includes/class-wcj-order-numbers.php +74 -2
  8. includes/class-wcj-price-by-country.php +27 -6
  9. includes/class-wcj-product-images.php +3 -3
  10. includes/class-wcj-product-msrp.php +27 -5
  11. includes/class-wcj-product-price-by-formula.php +54 -3
  12. includes/class-wcj-shipping-by-cities.php +3 -3
  13. includes/class-wcj-wpml.php +55 -6
  14. includes/classes/class-wcj-module-product-by-condition.php +3 -3
  15. includes/classes/class-wcj-module.php +25 -2
  16. includes/classes/class-wcj-pdf-invoice.php +5 -3
  17. includes/export/class-wcj-exporter-orders.php +12 -3
  18. includes/functions/wcj-functions-eu-vat.php +5 -4
  19. includes/functions/wcj-functions-exchange-rates.php +5 -2
  20. includes/functions/wcj-functions-price-currency.php +24 -5
  21. includes/price-by-country/class-wcj-price-by-country-core.php +328 -42
  22. includes/settings/wcj-settings-currency-exchange-rates.php +2 -2
  23. includes/settings/wcj-settings-export.php +10 -1
  24. includes/settings/wcj-settings-multicurrency.php +12 -3
  25. includes/settings/wcj-settings-offer-price.php +3 -3
  26. includes/settings/wcj-settings-order-min-amount.php +20 -1
  27. includes/settings/wcj-settings-order-numbers.php +19 -1
  28. includes/settings/wcj-settings-price-by-country.php +22 -12
  29. includes/settings/wcj-settings-product-msrp.php +8 -1
  30. includes/settings/wcj-settings-product-price-by-formula.php +9 -1
  31. includes/settings/wcj-settings-wpml.php +10 -1
  32. includes/shortcodes/class-wcj-shortcodes-orders.php +5 -4
  33. includes/widgets/class-wcj-widget-country-switcher.php +18 -4
  34. langs/woocommerce-jetpack.pot +347 -269
  35. readme.txt +33 -1
  36. woocommerce-jetpack.php +3 -3
includes/background-process/class-wcj-price-by-country-updater.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Background Process - Price by Country Updater
4
+ *
5
+ * Updates price metas related to the Price By Country module
6
+ *
7
+ * @version 5.1.0
8
+ * @since 5.1.0
9
+ * @author Pluggabl LLC.
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WCJ_Price_By_Country_Updater' ) ) :
17
+
18
+ class WCJ_Price_By_Country_Updater extends WP_Background_Process {
19
+
20
+ /**
21
+ * @var string
22
+ */
23
+ protected $action = 'wcj_bkg_process_price_by_country_updater';
24
+
25
+ protected function task( $item ) {
26
+ $module = 'price_by_country';
27
+ if ( wcj_is_module_enabled( $module ) ) {
28
+ wcj_update_products_price_by_country_for_single_product( $item['id'] );
29
+ }
30
+ return false;
31
+ }
32
+
33
+ }
34
+ endif;
includes/class-wcj-export-import.php CHANGED
@@ -150,10 +150,39 @@ class WCJ_Export_Import extends WCJ_Module {
150
  }
151
  }
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  /**
154
  * export_csv.
155
  *
156
- * @version 2.5.9
157
  * @since 2.4.8
158
  */
159
  function export_csv() {
@@ -162,6 +191,7 @@ class WCJ_Export_Import extends WCJ_Module {
162
  if ( is_array( $data ) ) {
163
  $csv = '';
164
  foreach ( $data as $row ) {
 
165
  $csv .= implode( get_option( 'wcj_export_csv_separator', ',' ), $row ) . PHP_EOL;
166
  }
167
  if ( 'yes' === get_option( 'wcj_export_csv_add_utf_8_bom', 'yes' ) ) {
150
  }
151
  }
152
 
153
+ /**
154
+ * smart_format_fields.
155
+ *
156
+ * @see https://stackoverflow.com/a/4617967/1193038
157
+ *
158
+ * @version 5.1.0
159
+ * @since 5.1.0
160
+ *
161
+ * @param $row
162
+ *
163
+ * @return array
164
+ */
165
+ function smart_format_fields( $row ) {
166
+ if ( 'no' === get_option( 'wcj_export_csv_smart_formatting', 'no' ) ) {
167
+ return $row;
168
+ }
169
+ $row = array_map( function ( $item ) {
170
+ $item = str_replace( '"', '""', $item );
171
+ if (
172
+ false !== strpos( $item, '"' )
173
+ || false !== strpos( $item, ',' )
174
+ ) {
175
+ $item = '"' . $item . '"';
176
+ }
177
+ return $item;
178
+ }, $row );
179
+ return $row;
180
+ }
181
+
182
  /**
183
  * export_csv.
184
  *
185
+ * @version 5.1.0
186
  * @since 2.4.8
187
  */
188
  function export_csv() {
191
  if ( is_array( $data ) ) {
192
  $csv = '';
193
  foreach ( $data as $row ) {
194
+ $row = $this->smart_format_fields( $row );
195
  $csv .= implode( get_option( 'wcj_export_csv_separator', ',' ), $row ) . PHP_EOL;
196
  }
197
  if ( 'yes' === get_option( 'wcj_export_csv_add_utf_8_bom', 'yes' ) ) {
includes/class-wcj-multicurrency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
4
  *
5
- * @version 5.0.0
6
  * @since 2.4.3
7
  * @author Pluggabl LLC.
8
  */
@@ -144,6 +144,33 @@ class WCJ_Multicurrency extends WCJ_Module {
144
 
145
  // Compatibility with Pricing Deals
146
  add_filter( 'option_' . 'vtprd_rules_set', array( $this, 'convert_pricing_deals_settings' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  }
148
 
149
  /**
@@ -224,7 +251,7 @@ class WCJ_Multicurrency extends WCJ_Module {
224
  /**
225
  * get_wc_tree_table_rate_settings.
226
  *
227
- * @version 4.9.0
228
  * @since 4.9.0
229
  *
230
  * @param $option
@@ -235,19 +262,24 @@ class WCJ_Multicurrency extends WCJ_Module {
235
  if ( 'no' === get_option( 'wcj_multicurrency_compatibility_wc_ttrs', 'no' ) ) {
236
  return $option;
237
  }
238
- $rule = json_decode( $option['rule'] );
239
- $modified_rule = $this->recursively_convert_wc_tree_settings( $rule, array(
240
- 'change_keys' => array( 'value', 'min', 'max' ),
241
- 'exchange_rate' => $this->get_currency_exchange_rate( $this->get_current_currency_code() )
242
- ) );
243
- $option['rule'] = json_encode( $modified_rule );
 
 
 
 
 
244
  return $option;
245
  }
246
 
247
  /**
248
  * recursively_convert_wc_tree_settings.
249
  *
250
- * @version 4.9.0
251
  * @since 4.9.0
252
  *
253
  * @param $array
@@ -263,19 +295,23 @@ class WCJ_Multicurrency extends WCJ_Module {
263
  $change_keys = $args['change_keys'];
264
  $exchange_rate = $args['exchange_rate'];
265
  foreach ( $array as $key => $value ) {
266
- $array_test = is_array( $array ) ? $array : get_object_vars( $array );
267
- if (
268
- in_array( $key, $change_keys ) &&
269
- ( isset( $array_test['condition'] ) && ( 'price' == $array_test['condition'] ) )
270
- ) {
271
- if ( is_array( $array ) ) {
272
- if ( ! empty( $value ) && is_numeric( $value ) ) {
273
- $array[ $key ] = $value * $exchange_rate;
274
- }
275
- } elseif ( is_a( $array, 'stdClass' ) ) {
276
- if ( ! empty( $value ) && is_numeric( $value ) ) {
277
- $array->$key = $value * $exchange_rate;
278
- }
 
 
 
 
279
  }
280
  }
281
  if ( is_array( $value ) || is_a( $value, 'stdClass' ) ) {
@@ -696,10 +732,6 @@ class WCJ_Multicurrency extends WCJ_Module {
696
  // Add "Change Price" hooks
697
  wcj_add_change_price_hooks( $this, $this->price_hooks_priority );
698
 
699
- // "WooCommerce Product Add-ons" plugin
700
- add_filter( 'woocommerce_get_item_data', array( $this, 'get_addons_item_data' ), 20, 2 );
701
- add_filter( 'woocommerce_product_addons_option_price_raw', array( $this, 'product_addons_option_price_raw' ), 10, 2 );
702
-
703
  // Handle Compatibility
704
  $this->handle_compatibility();
705
 
@@ -891,6 +923,9 @@ class WCJ_Multicurrency extends WCJ_Module {
891
  * @return float|int
892
  */
893
  function product_addons_option_price_raw( $price, $option ) {
 
 
 
894
  $price = $this->change_price( $price, null );
895
  return $price;
896
  }
@@ -898,7 +933,7 @@ class WCJ_Multicurrency extends WCJ_Module {
898
  /**
899
  * Finds old add-ons fields on cart and replace by correct price.
900
  *
901
- * @version 4.3.0
902
  * @since 4.3.0
903
  *
904
  * @param $other_data
@@ -907,6 +942,9 @@ class WCJ_Multicurrency extends WCJ_Module {
907
  * @return mixed
908
  */
909
  function get_addons_item_data( $other_data, $cart_item ) {
 
 
 
910
  if ( ! empty( $cart_item['addons'] ) ) {
911
  foreach ( $cart_item['addons'] as $addon ) {
912
  $price = isset( $cart_item['addons_price_before_calc'] ) ? $cart_item['addons_price_before_calc'] : $addon['price'];
@@ -1065,9 +1103,19 @@ class WCJ_Multicurrency extends WCJ_Module {
1065
  /**
1066
  * change_price.
1067
  *
1068
- * @version 4.9.0
1069
  */
1070
  function change_price( $price, $_product ) {
 
 
 
 
 
 
 
 
 
 
1071
  if ( '' === $price ) {
1072
  return $price;
1073
  }
2
  /**
3
  * Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
4
  *
5
+ * @version 5.1.1
6
  * @since 2.4.3
7
  * @author Pluggabl LLC.
8
  */
144
 
145
  // Compatibility with Pricing Deals
146
  add_filter( 'option_' . 'vtprd_rules_set', array( $this, 'convert_pricing_deals_settings' ) );
147
+
148
+ // "WooCommerce Product Add-ons" plugin
149
+ add_filter( 'woocommerce_get_item_data', array( $this, 'get_addons_item_data' ), 20, 2 );
150
+ add_filter( 'woocommerce_product_addons_option_price_raw', array( $this, 'product_addons_option_price_raw' ), 10, 2 );
151
+ add_filter( 'woocommerce_product_addons_price_raw', array( $this, 'product_addons_price_raw' ), 10, 2 );
152
+ }
153
+
154
+ /**
155
+ * product_addons_price_raw.
156
+ *
157
+ * @version 5.1.1
158
+ * @since 5.1.1
159
+ *
160
+ * @param $price
161
+ * @param $addon
162
+ *
163
+ * @return mixed|string
164
+ */
165
+ function product_addons_price_raw( $price, $addon ) {
166
+ if (
167
+ 'no' === get_option( 'wcj_multicurrency_compatibility_product_addons', 'no' )
168
+ || ( 'quantity_based' != $addon['price_type'] && 'flat_fee' != $addon['price_type'] )
169
+ ) {
170
+ return $price;
171
+ }
172
+ $price = $this->change_price( $price, null );
173
+ return $price;
174
  }
175
 
176
  /**
251
  /**
252
  * get_wc_tree_table_rate_settings.
253
  *
254
+ * @version 5.1.0
255
  * @since 4.9.0
256
  *
257
  * @param $option
262
  if ( 'no' === get_option( 'wcj_multicurrency_compatibility_wc_ttrs', 'no' ) ) {
263
  return $option;
264
  }
265
+ $transition_name = 'wcj_wc_tree_table_opt_' . md5( current_filter() );
266
+ if ( false === ( $modified_rule_result = get_transient( $transition_name ) ) ) {
267
+ $rule = json_decode( $option['rule'] );
268
+ $modified_rule = $this->recursively_convert_wc_tree_settings( $rule, array(
269
+ 'change_keys' => array( 'value', 'min', 'max' ),
270
+ 'exchange_rate' => $this->get_currency_exchange_rate( $this->get_current_currency_code() )
271
+ ) );
272
+ set_transient( $transition_name, json_encode( $modified_rule ), 5 * MINUTE_IN_SECONDS );
273
+ }
274
+ $option['rule'] = $modified_rule_result;
275
+ remove_filter( current_filter(), array( $this, 'convert_wc_tree_table_rate_settings' ) );
276
  return $option;
277
  }
278
 
279
  /**
280
  * recursively_convert_wc_tree_settings.
281
  *
282
+ * @version 5.1.0
283
  * @since 4.9.0
284
  *
285
  * @param $array
295
  $change_keys = $args['change_keys'];
296
  $exchange_rate = $args['exchange_rate'];
297
  foreach ( $array as $key => $value ) {
298
+ if ( in_array( $key, $change_keys ) ) {
299
+ if (
300
+ is_array( $array ) &&
301
+ isset( $array['condition'] ) &&
302
+ 'price' == $array['condition'] &&
303
+ ! empty( $value ) &&
304
+ is_numeric( $value )
305
+ ) {
306
+ $array[ $key ] = $value * $exchange_rate;
307
+ } elseif (
308
+ is_a( $array, 'stdClass' ) &&
309
+ property_exists( $array, 'condition' ) &&
310
+ 'price' === $array->condition &&
311
+ ! empty( $value ) &&
312
+ is_numeric( $value )
313
+ ) {
314
+ $array->$key = $value * $exchange_rate;
315
  }
316
  }
317
  if ( is_array( $value ) || is_a( $value, 'stdClass' ) ) {
732
  // Add "Change Price" hooks
733
  wcj_add_change_price_hooks( $this, $this->price_hooks_priority );
734
 
 
 
 
 
735
  // Handle Compatibility
736
  $this->handle_compatibility();
737
 
923
  * @return float|int
924
  */
925
  function product_addons_option_price_raw( $price, $option ) {
926
+ if ( 'no' === get_option( 'wcj_multicurrency_compatibility_product_addons', 'no' ) ) {
927
+ return $price;
928
+ }
929
  $price = $this->change_price( $price, null );
930
  return $price;
931
  }
933
  /**
934
  * Finds old add-ons fields on cart and replace by correct price.
935
  *
936
+ * @version 5.1.1
937
  * @since 4.3.0
938
  *
939
  * @param $other_data
942
  * @return mixed
943
  */
944
  function get_addons_item_data( $other_data, $cart_item ) {
945
+ if ( 'no' === get_option( 'wcj_multicurrency_compatibility_product_addons', 'no' ) ) {
946
+ return $other_data;
947
+ }
948
  if ( ! empty( $cart_item['addons'] ) ) {
949
  foreach ( $cart_item['addons'] as $addon ) {
950
  $price = isset( $cart_item['addons_price_before_calc'] ) ? $cart_item['addons_price_before_calc'] : $addon['price'];
1103
  /**
1104
  * change_price.
1105
  *
1106
+ * @version 5.1.0
1107
  */
1108
  function change_price( $price, $_product ) {
1109
+ //Pricing Deals
1110
+ global $vtprd_cart;
1111
+ if (
1112
+ 'yes' === get_option( 'wcj_multicurrency_compatibility_pricing_deals', 'no' ) &&
1113
+ ( is_cart() || is_checkout() ) &&
1114
+ ! empty( $vtprd_cart )
1115
+ ) {
1116
+ return $price;
1117
+ }
1118
+
1119
  if ( '' === $price ) {
1120
  return $price;
1121
  }
includes/class-wcj-my-account.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - My Account
4
  *
5
- * @version 4.8.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  */
@@ -361,7 +361,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
361
  /**
362
  * customize_menu.
363
  *
364
- * @version 3.8.0
365
  * @since 3.8.0
366
  * @todo (maybe) option to disable menu
367
  */
@@ -372,17 +372,6 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
372
  $items[ $item_id ] = $menu_titles[ $item_id ];
373
  }
374
  }
375
- if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_my_account_menu_order_customize_enabled', 'no' ) ) ) {
376
- $menu_order = array_map( 'trim', explode( PHP_EOL, get_option( 'wcj_my_account_menu_order', $this->menu_order_default ) ) );
377
- $modified_menu = array();
378
- foreach ( $menu_order as $item_id ) {
379
- if ( isset( $items[ $item_id ] ) ) {
380
- $modified_menu[ $item_id ] = $items[ $item_id ];
381
- unset( $items[ $item_id ] );
382
- }
383
- }
384
- $items = array_merge( $modified_menu, $items );
385
- }
386
  if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_my_account_menu_order_custom_items_enabled', 'no' ) ) ) {
387
  $custom_items = array_map( 'trim', explode( PHP_EOL, get_option( 'wcj_my_account_menu_order_custom_items', '' ) ) );
388
  foreach ( $custom_items as $custom_item ) {
@@ -392,6 +381,14 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
392
  }
393
  }
394
  }
 
 
 
 
 
 
 
 
395
  return $items;
396
  }
397
 
2
  /**
3
  * Booster for WooCommerce - Module - My Account
4
  *
5
+ * @version 5.1.1
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  */
361
  /**
362
  * customize_menu.
363
  *
364
+ * @version 5.1.1
365
  * @since 3.8.0
366
  * @todo (maybe) option to disable menu
367
  */
372
  $items[ $item_id ] = $menu_titles[ $item_id ];
373
  }
374
  }
 
 
 
 
 
 
 
 
 
 
 
375
  if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_my_account_menu_order_custom_items_enabled', 'no' ) ) ) {
376
  $custom_items = array_map( 'trim', explode( PHP_EOL, get_option( 'wcj_my_account_menu_order_custom_items', '' ) ) );
377
  foreach ( $custom_items as $custom_item ) {
381
  }
382
  }
383
  }
384
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_my_account_menu_order_customize_enabled', 'no' ) ) ) {
385
+ $menu_order = array_map( 'trim', explode( PHP_EOL, get_option( 'wcj_my_account_menu_order', $this->menu_order_default ) ) );
386
+ $menu_order = array_map( 'strtolower', $menu_order );
387
+ $menu_order = array_filter( $menu_order, function ( $item ) use ( $items ) {
388
+ return in_array( $item, array_keys( $items ) );
389
+ } );
390
+ $items = array_merge( array_flip( $menu_order ), $items );
391
+ }
392
  return $items;
393
  }
394
 
includes/class-wcj-offer-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Offer Price
4
  *
5
- * @version 4.4.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  */
@@ -469,7 +469,7 @@ class WCJ_Offer_Price extends WCJ_Module {
469
  /**
470
  * offer_price.
471
  *
472
- * @version 4.4.0
473
  * @since 2.9.0
474
  * @todo (maybe) separate customer copy email template and subject
475
  * @todo (maybe) redirect (no notice though)
@@ -504,34 +504,36 @@ class WCJ_Offer_Price extends WCJ_Module {
504
  }
505
  // Price offer array
506
  $price_offer = array(
507
- 'offer_timestamp' => current_time( 'timestamp' ),
508
- 'product_title' => $_product->get_title(),
509
- 'offered_price' => $_POST['wcj-offer-price-price'],
510
- 'currency_code' => get_woocommerce_currency(),
511
- 'customer_message' => $_POST['wcj-offer-price-message'],
512
- 'customer_name' => $_POST['wcj-offer-price-customer-name'],
513
- 'customer_email' => $_POST['wcj-offer-price-customer-email'],
514
- 'customer_id' => $_POST['wcj-offer-price-customer-id'],
515
- 'user_ip' => $_SERVER['REMOTE_ADDR'],
516
- 'user_agent' => $_SERVER['HTTP_USER_AGENT'],
517
- 'copy_to_customer' => ( isset( $_POST['wcj-offer-price-customer-copy'] ) ? $_POST['wcj-offer-price-customer-copy'] : 'no' ),
518
- 'sent_to' => $email_address,
 
519
  );
520
  // Email content
521
  $email_template = get_option( 'wcj_offer_price_email_template',
522
- sprintf( __( 'Product: %s', 'woocommerce-jetpack' ), '%product_title%' ) . '<br>' . PHP_EOL .
523
  sprintf( __( 'Offered price: %s', 'woocommerce-jetpack' ), '%offered_price%' ) . '<br>' . PHP_EOL .
524
  sprintf( __( 'From: %s %s', 'woocommerce-jetpack' ), '%customer_name%', '%customer_email%' ) . '<br>' . PHP_EOL .
525
  sprintf( __( 'Message: %s', 'woocommerce-jetpack' ), '%customer_message%' )
526
  );
527
  $replaced_values = array(
528
- '%product_title%' => $price_offer['product_title'],
529
- '%offered_price%' => wc_price( $price_offer['offered_price'] ),
530
- '%customer_message%' => $price_offer['customer_message'],
531
- '%customer_name%' => $price_offer['customer_name'],
532
- '%customer_email%' => $price_offer['customer_email'],
533
- '%user_ip%' => $price_offer['user_ip'],
534
- '%user_agent%' => $price_offer['user_agent'],
 
535
  );
536
  $email_content = str_replace( array_keys( $replaced_values ), array_values( $replaced_values ), $email_template );
537
  // Email subject and headers
2
  /**
3
  * Booster for WooCommerce - Module - Offer Price
4
  *
5
+ * @version 5.1.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  */
469
  /**
470
  * offer_price.
471
  *
472
+ * @version 5.1.0
473
  * @since 2.9.0
474
  * @todo (maybe) separate customer copy email template and subject
475
  * @todo (maybe) redirect (no notice though)
504
  }
505
  // Price offer array
506
  $price_offer = array(
507
+ 'offer_timestamp' => current_time( 'timestamp' ),
508
+ 'product_title' => $_product->get_title(),
509
+ 'product_edit_link' => get_edit_post_link( $_product->get_id() ),
510
+ 'offered_price' => $_POST['wcj-offer-price-price'],
511
+ 'currency_code' => get_woocommerce_currency(),
512
+ 'customer_message' => $_POST['wcj-offer-price-message'],
513
+ 'customer_name' => $_POST['wcj-offer-price-customer-name'],
514
+ 'customer_email' => $_POST['wcj-offer-price-customer-email'],
515
+ 'customer_id' => $_POST['wcj-offer-price-customer-id'],
516
+ 'user_ip' => $_SERVER['REMOTE_ADDR'],
517
+ 'user_agent' => $_SERVER['HTTP_USER_AGENT'],
518
+ 'copy_to_customer' => ( isset( $_POST['wcj-offer-price-customer-copy'] ) ? $_POST['wcj-offer-price-customer-copy'] : 'no' ),
519
+ 'sent_to' => $email_address,
520
  );
521
  // Email content
522
  $email_template = get_option( 'wcj_offer_price_email_template',
523
+ sprintf( __( 'Product: %s', 'woocommerce-jetpack' ), '<a href="%product_edit_link%">%product_title%</a>' ) . '<br>' . PHP_EOL .
524
  sprintf( __( 'Offered price: %s', 'woocommerce-jetpack' ), '%offered_price%' ) . '<br>' . PHP_EOL .
525
  sprintf( __( 'From: %s %s', 'woocommerce-jetpack' ), '%customer_name%', '%customer_email%' ) . '<br>' . PHP_EOL .
526
  sprintf( __( 'Message: %s', 'woocommerce-jetpack' ), '%customer_message%' )
527
  );
528
  $replaced_values = array(
529
+ '%product_title%' => $price_offer['product_title'],
530
+ '%product_edit_link%' => $price_offer['product_edit_link'],
531
+ '%offered_price%' => wc_price( $price_offer['offered_price'] ),
532
+ '%customer_message%' => $price_offer['customer_message'],
533
+ '%customer_name%' => $price_offer['customer_name'],
534
+ '%customer_email%' => $price_offer['customer_email'],
535
+ '%user_ip%' => $price_offer['user_ip'],
536
+ '%user_agent%' => $price_offer['user_agent'],
537
  );
538
  $email_content = str_replace( array_keys( $replaced_values ), array_values( $replaced_values ), $email_template );
539
  // Email subject and headers
includes/class-wcj-order-min-amount.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Order Minimum Amount
4
  *
5
- * @version 4.9.0
6
  * @since 2.5.7
7
  * @author Pluggabl LLC.
8
  * @todo order max amount
@@ -80,7 +80,7 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
80
  /**
81
  * get_order_minimum_amount_with_user_roles.
82
  *
83
- * @version 4.1.0
84
  * @since 2.5.3
85
  */
86
  function get_order_minimum_amount_with_user_roles() {
@@ -103,6 +103,12 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
103
  if ( WCJ()->modules['price_by_country']->is_enabled() ) {
104
  $minimum = WCJ()->modules['price_by_country']->core->change_price( $minimum, null );
105
  }
 
 
 
 
 
 
106
  return $minimum;
107
  }
108
 
2
  /**
3
  * Booster for WooCommerce - Module - Order Minimum Amount
4
  *
5
+ * @version 5.1.0
6
  * @since 2.5.7
7
  * @author Pluggabl LLC.
8
  * @todo order max amount
80
  /**
81
  * get_order_minimum_amount_with_user_roles.
82
  *
83
+ * @version 5.1.0
84
  * @since 2.5.3
85
  */
86
  function get_order_minimum_amount_with_user_roles() {
103
  if ( WCJ()->modules['price_by_country']->is_enabled() ) {
104
  $minimum = WCJ()->modules['price_by_country']->core->change_price( $minimum, null );
105
  }
106
+ // WooCommerce Multilingual
107
+ if ( 'yes' === get_option( 'wcj_order_minimum_compatibility_wpml_multilingual', 'no' ) ) {
108
+ global $woocommerce_wpml;
109
+ $minimum = ! empty( $woocommerce_wpml ) ? $woocommerce_wpml->multi_currency->prices->convert_price_amount( $minimum ) : $minimum;
110
+ }
111
+
112
  return $minimum;
113
  }
114
 
includes/class-wcj-order-numbers.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Order Numbers
4
  *
5
- * @version 4.2.0
6
  * @author Pluggabl LLC.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Order_Numbers extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.5.0
19
  * @todo (maybe) rename "Orders Renumerate" to "Renumerate orders"
20
  * @todo (maybe) use `woocommerce_new_order` hook instead of `wp_insert_post`
21
  */
@@ -60,7 +60,79 @@ class WCJ_Order_Numbers extends WCJ_Module {
60
  add_action( 'add_meta_boxes', array( $this, 'maybe_add_meta_box' ), PHP_INT_MAX, 2 );
61
  add_action( 'save_post_shop_order', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
62
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  }
 
64
  }
65
 
66
  /**
2
  /**
3
  * Booster for WooCommerce - Module - Order Numbers
4
  *
5
+ * @version 5.1.0
6
  * @author Pluggabl LLC.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 5.1.0
19
  * @todo (maybe) rename "Orders Renumerate" to "Renumerate orders"
20
  * @todo (maybe) use `woocommerce_new_order` hook instead of `wp_insert_post`
21
  */
60
  add_action( 'add_meta_boxes', array( $this, 'maybe_add_meta_box' ), PHP_INT_MAX, 2 );
61
  add_action( 'save_post_shop_order', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
62
  }
63
+
64
+ // Compatibility with WPNotif plugin
65
+ add_action( 'admin_init', function () {
66
+ if ( 'yes' === get_option( 'wcj_order_numbers_compatibility_wpnotif', 'no' ) ) {
67
+ remove_filter( 'wpnotif_filter_message', 'wpnotif_add_tracking_details', 10, 2 );
68
+ add_filter( 'wpnotif_filter_message', array( $this, 'wpnotif_add_tracking_details' ), 10, 2 );
69
+ }
70
+ } );
71
+ }
72
+ }
73
+
74
+ /**
75
+ * wpnotif_add_tracking_details.
76
+ *
77
+ * @see wpnotif_add_tracking_details() from WPNotif/inclues/filters.php
78
+ *
79
+ * @version 5.1.0
80
+ * @since 5.1.0
81
+ *
82
+ * @param $msg
83
+ * @param $order
84
+ *
85
+ * @return mixed
86
+ */
87
+ function wpnotif_add_tracking_details( $msg, $order ) {
88
+ $tracking_link_string = '';
89
+ if ( class_exists( 'YITH_Tracking_Data' ) ) {
90
+ $values = array();
91
+ $yith_placeholders = apply_filters( 'ywsn_sms_placeholders', array(), $order );
92
+ if ( isset( $yith_placeholders['{tracking_url}'] ) ) {
93
+ $tracking_link_string = $yith_placeholders['{tracking_url}'];
94
+ }
95
+ } else {
96
+ $tracking_links = $this->wpnotif_get_wc_tracking_links( $order );
97
+ if ( ! empty( $tracking_links ) ) {
98
+ $tracking_link_string = implode( ',', $tracking_links );
99
+ }
100
+ }
101
+ $msg = str_replace( '{{wc-tracking-link}}', $tracking_link_string, $msg );
102
+ return $msg;
103
+ }
104
+
105
+ /**
106
+ * wpnotif_get_wc_tracking_links.
107
+ *
108
+ * @see wpnotif_get_wc_tracking_links() from WPNotif/inclues/filters.php
109
+ *
110
+ * @version 5.1.0
111
+ * @since 5.1.0
112
+ *
113
+ * @param $order
114
+ *
115
+ * @return array
116
+ */
117
+ function wpnotif_get_wc_tracking_links( $order ) {
118
+ if ( class_exists( 'WC_Shipment_Tracking_Actions' ) ) {
119
+ $st = WC_Shipment_Tracking_Actions::get_instance();
120
+ } else if ( is_plugin_active( 'woo-advanced-shipment-tracking/woocommerce-advanced-shipment-tracking.php' ) ) {
121
+ $st = WC_Advanced_Shipment_Tracking_Actions::get_instance();
122
+ } else {
123
+ return array();
124
+ }
125
+ $order_id = $order->get_id();
126
+ $tracking_items = $st->get_tracking_items( $order_id );
127
+ if ( ! empty( $tracking_items ) ) {
128
+ $tracking_links = array();
129
+ foreach ( $tracking_items as $tracking_item ) {
130
+ $formated_item = $st->get_formatted_tracking_item( $order_id, $tracking_item );
131
+ $tracking_links[] = htmlspecialchars_decode( $formated_item['formatted_tracking_link'] );
132
+ break;
133
+ }
134
  }
135
+ return $tracking_links;
136
  }
137
 
138
  /**
includes/class-wcj-price-by-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Prices and Currencies by Country
4
  *
5
- * @version 4.8.0
6
  * @author Pluggabl LLC.
7
  */
8
 
@@ -19,10 +19,15 @@ class WCJ_Price_By_Country extends WCJ_Module {
19
  */
20
  public $core;
21
 
 
 
 
 
 
22
  /**
23
  * Constructor.
24
  *
25
- * @version 4.8.0
26
  */
27
  function __construct() {
28
 
@@ -69,14 +74,19 @@ class WCJ_Price_By_Country extends WCJ_Module {
69
 
70
  // Price Filter Widget
71
  if ( 'yes' === get_option( 'wcj_price_by_country_price_filter_widget_support_enabled', 'no' ) ) {
72
- if ( 'yes' === get_option( 'wcj_price_by_country_local_enabled', 'yes' ) ) {
73
- add_action( 'save_post_product', array( $this, 'update_products_price_by_country_product_saved' ), PHP_INT_MAX, 2 );
74
- add_action( 'woocommerce_ajax_save_product_variations', array( $this, 'update_products_price_by_country_product_saved_ajax' ), PHP_INT_MAX, 1 );
75
- }
76
  }
77
 
78
  // Coupons Compatibility
79
  add_filter( 'woocommerce_coupon_get_discount_amount', array( $this, 'fix_wc_coupon_currency' ), 10, 5 );
 
 
 
 
 
 
 
80
  }
81
 
82
  // Price Filter Widget
@@ -89,6 +99,17 @@ class WCJ_Price_By_Country extends WCJ_Module {
89
  }
90
  }
91
 
 
 
 
 
 
 
 
 
 
 
 
92
  /**
93
  * fix_wc_coupon_currency.
94
  *
2
  /**
3
  * Booster for WooCommerce - Module - Prices and Currencies by Country
4
  *
5
+ * @version 5.1.0
6
  * @author Pluggabl LLC.
7
  */
8
 
19
  */
20
  public $core;
21
 
22
+ /**
23
+ * @var WCJ_Price_By_Country_Updater
24
+ */
25
+ public $bkg_process_price_updater;
26
+
27
  /**
28
  * Constructor.
29
  *
30
+ * @version 5.1.0
31
  */
32
  function __construct() {
33
 
74
 
75
  // Price Filter Widget
76
  if ( 'yes' === get_option( 'wcj_price_by_country_price_filter_widget_support_enabled', 'no' ) ) {
77
+ add_action( 'save_post_product', array( $this, 'update_products_price_by_country_product_saved' ), PHP_INT_MAX, 2 );
78
+ add_action( 'woocommerce_ajax_save_product_variations', array( $this, 'update_products_price_by_country_product_saved_ajax' ), PHP_INT_MAX, 1 );
 
 
79
  }
80
 
81
  // Coupons Compatibility
82
  add_filter( 'woocommerce_coupon_get_discount_amount', array( $this, 'fix_wc_coupon_currency' ), 10, 5 );
83
+
84
+ // Bkg Process
85
+ if ( 'init' === current_filter() ) {
86
+ $this->init_bkg_process_class();
87
+ } else {
88
+ add_action( 'plugins_loaded', array( $this, 'init_bkg_process_class' ) );
89
+ }
90
  }
91
 
92
  // Price Filter Widget
99
  }
100
  }
101
 
102
+ /**
103
+ * init_bkg_process_class.
104
+ *
105
+ * @version 5.1.0
106
+ * @since 5.1.0
107
+ */
108
+ function init_bkg_process_class() {
109
+ require_once( wcj_plugin_path() . '/includes/background-process/class-wcj-price-by-country-updater.php' );
110
+ $this->bkg_process_price_updater = new WCJ_Price_By_Country_Updater();
111
+ }
112
+
113
  /**
114
  * fix_wc_coupon_currency.
115
  *
includes/class-wcj-product-images.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Images
4
  *
5
- * @version 4.3.0
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  */
@@ -221,12 +221,12 @@ class WCJ_Product_Images extends WCJ_Module {
221
  /**
222
  * customize_single_product_image_or_thumbnail_html_wc3.
223
  *
224
- * @version 2.8.0
225
  * @since 2.8.0
226
  */
227
  function customize_single_product_image_or_thumbnail_html_wc3( $html, $attachment_id ) {
228
  $post_id = get_the_ID();
229
- return ( get_post_thumbnail_id( $post_id ) === $attachment_id ?
230
  $this->customize_single_product_image_html( $html, $post_id ) :
231
  $this->customize_single_product_image_thumbnail_html( $html )
232
  );
2
  /**
3
  * Booster for WooCommerce - Module - Product Images
4
  *
5
+ * @version 5.1.0
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  */
221
  /**
222
  * customize_single_product_image_or_thumbnail_html_wc3.
223
  *
224
+ * @version 5.1.0
225
  * @since 2.8.0
226
  */
227
  function customize_single_product_image_or_thumbnail_html_wc3( $html, $attachment_id ) {
228
  $post_id = get_the_ID();
229
+ return ( (int) get_post_thumbnail_id( $post_id ) === (int) $attachment_id ?
230
  $this->customize_single_product_image_html( $html, $post_id ) :
231
  $this->customize_single_product_image_thumbnail_html( $html )
232
  );
includes/class-wcj-product-msrp.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product MSRP
4
  *
5
- * @version 4.9.0
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  */
@@ -18,7 +18,7 @@ class WCJ_Product_MSRP extends WCJ_Module {
18
  /**
19
  * Constructor.
20
  *
21
- * @version 4.4.0
22
  * @since 3.6.0
23
  * @todo (maybe) option to change `_wcj_msrp` meta key
24
  * @todo (maybe) REST API
@@ -27,7 +27,6 @@ class WCJ_Product_MSRP extends WCJ_Module {
27
  * @todo (maybe) `[wcj_product_msrp]` shortcode (and link to "Product Info" module in description)
28
  */
29
  function __construct() {
30
-
31
  $this->id = 'product_msrp';
32
  $this->short_desc = __( 'Product MSRP', 'woocommerce-jetpack' );
33
  $this->extra_desc = __( 'The <strong>manufacturer\'s suggested retail price</strong> (<strong>MSRP</strong>), also known as the <strong>list price</strong>, or the <strong>recommended retail price</strong> (<strong>RRP</strong>), or the <strong>suggested retail price</strong> (<strong>SRP</strong>), of a product is the price at which the manufacturer recommends that the retailer sell the product.', 'woocommerce-jetpack' ) . '<br>' .
@@ -57,6 +56,11 @@ class WCJ_Product_MSRP extends WCJ_Module {
57
 
58
  // Get current template path
59
  add_action( 'woocommerce_before_template_part', array( $this, 'get_current_template_path' ), 10 );
 
 
 
 
 
60
  }
61
 
62
  }
@@ -152,16 +156,34 @@ class WCJ_Product_MSRP extends WCJ_Module {
152
  }
153
  }
154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  /**
156
  * display.
157
  *
158
- * @version 4.9.0
159
  * @since 3.6.0
160
  * @todo (maybe) multicurrency
161
  * @todo (feature) (maybe) variable product's msrp: add another option to enter MSRP directly for the whole variable product, instead of taking first variation's MSRP
162
  */
163
  function display( $price_html, $product ) {
164
- $section_id = false !== strpos( $this->current_template_path, 'loop' ) ? 'archives' : 'single';
165
  $display = get_option( 'wcj_product_msrp_display_on_' . $section_id, 'show' );
166
  if ( 'hide' == $display ) {
167
  return $price_html;
2
  /**
3
  * Booster for WooCommerce - Module - Product MSRP
4
  *
5
+ * @version 5.1.1
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  */
18
  /**
19
  * Constructor.
20
  *
21
+ * @version 5.1.1
22
  * @since 3.6.0
23
  * @todo (maybe) option to change `_wcj_msrp` meta key
24
  * @todo (maybe) REST API
27
  * @todo (maybe) `[wcj_product_msrp]` shortcode (and link to "Product Info" module in description)
28
  */
29
  function __construct() {
 
30
  $this->id = 'product_msrp';
31
  $this->short_desc = __( 'Product MSRP', 'woocommerce-jetpack' );
32
  $this->extra_desc = __( 'The <strong>manufacturer\'s suggested retail price</strong> (<strong>MSRP</strong>), also known as the <strong>list price</strong>, or the <strong>recommended retail price</strong> (<strong>RRP</strong>), or the <strong>suggested retail price</strong> (<strong>SRP</strong>), of a product is the price at which the manufacturer recommends that the retailer sell the product.', 'woocommerce-jetpack' ) . '<br>' .
56
 
57
  // Get current template path
58
  add_action( 'woocommerce_before_template_part', array( $this, 'get_current_template_path' ), 10 );
59
+ add_filter( 'wc_get_template_part', function ( $template, $slug, $name ) {
60
+ $final = $slug . '-' . $name;
61
+ $this->current_template_path = $final;
62
+ return $template;
63
+ }, 10, 3 );
64
  }
65
 
66
  }
156
  }
157
  }
158
 
159
+ /**
160
+ * get_section_id_by_template_path.
161
+ *
162
+ * @version 5.1.0
163
+ * @since 5.1.0
164
+ *
165
+ * @param $template
166
+ *
167
+ * @return string
168
+ */
169
+ function get_section_id_by_template_path( $template ) {
170
+ $archive_detection_method = $this->get_option( 'wcj_product_msrp_archive_detection_method', 'loop' );
171
+ $archive_detection_method = array_values( array_filter( explode( PHP_EOL, $archive_detection_method ) ) );
172
+ return count( array_filter( $archive_detection_method, function ( $item ) use ( $template ) {
173
+ return strpos( $template, $item ) !== false;
174
+ } ) ) == 0 && is_singular() ? 'single' : 'archives';
175
+ }
176
+
177
  /**
178
  * display.
179
  *
180
+ * @version 5.1.0
181
  * @since 3.6.0
182
  * @todo (maybe) multicurrency
183
  * @todo (feature) (maybe) variable product's msrp: add another option to enter MSRP directly for the whole variable product, instead of taking first variation's MSRP
184
  */
185
  function display( $price_html, $product ) {
186
+ $section_id = $this->get_section_id_by_template_path( $this->current_template_path );
187
  $display = get_option( 'wcj_product_msrp_display_on_' . $section_id, 'show' );
188
  if ( 'hide' == $display ) {
189
  return $price_html;
includes/class-wcj-product-price-by-formula.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Price by Formula
4
  *
5
- * @version 4.2.0
6
  * @since 2.5.0
7
  * @author Pluggabl LLC.
8
  */
@@ -92,15 +92,63 @@ class WCJ_Product_Price_by_Formula extends WCJ_Module {
92
  return $the_param;
93
  }
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  /**
96
  * change_price.
97
  *
98
- * @version 4.1.0
99
  * @since 2.5.0
100
  */
101
  function change_price( $price, $_product, $output_errors = false ) {
102
  if ( $this->is_price_by_formula_product( $_product ) && '' != $price ) {
103
  $_product_id = wcj_get_product_id_or_variation_parent_id( $_product );
 
 
 
 
104
  $is_per_product = ( 'per_product' === get_post_meta( $_product_id, '_' . 'wcj_product_price_by_formula_calculation', true ) );
105
  $the_formula = ( $is_per_product )
106
  ? get_post_meta( $_product_id, '_' . 'wcj_product_price_by_formula_eval', true )
@@ -113,7 +161,9 @@ class WCJ_Product_Price_by_Formula extends WCJ_Module {
113
  if ( $total_params > 0 ) {
114
  $the_current_filter = current_filter();
115
  if ( 'woocommerce_get_price_including_tax' == $the_current_filter || 'woocommerce_get_price_excluding_tax' == $the_current_filter ) {
116
- return wcj_get_product_display_price( $_product );
 
 
117
  }
118
  $math = new WCJ_Math();
119
  $math->registerVariable( 'x', $price );
@@ -139,6 +189,7 @@ class WCJ_Product_Price_by_Formula extends WCJ_Module {
139
  if ( 'no_rounding' != $this->rounding ) {
140
  $price = wcj_round( $price, $this->rounding_precision, $this->rounding );
141
  }
 
142
  }
143
  }
144
  }
2
  /**
3
  * Booster for WooCommerce - Module - Product Price by Formula
4
  *
5
+ * @version 5.1.1
6
  * @since 2.5.0
7
  * @author Pluggabl LLC.
8
  */
92
  return $the_param;
93
  }
94
 
95
+ /**
96
+ * save_price.
97
+ *
98
+ * @version 5.1.1
99
+ * @since 5.1.1
100
+ *
101
+ * @param $product_id
102
+ * @param $price
103
+ *
104
+ * @return bool
105
+ */
106
+ function save_price( $product_id, $price ) {
107
+ if ( 'no' === $this->get_option( 'wcj_product_price_by_formula_save_prices', 'no' ) ) {
108
+ return false;
109
+ }
110
+ $filter = current_filter();
111
+ if ( '' == $filter ) {
112
+ $filter = 'wcj_filter__none';
113
+ }
114
+ WCJ()->modules['product_price_by_formula']->calculated_products_prices[ $product_id ][ $filter ] = $price;
115
+ }
116
+
117
+ /**
118
+ * @version 5.1.1
119
+ * @since 5.1.1
120
+ *
121
+ * @param $product_id
122
+ *
123
+ * @return bool
124
+ */
125
+ function get_saved_price( $product_id ) {
126
+ if ( 'no' === $this->get_option( 'wcj_product_price_by_formula_save_prices', 'no' ) ) {
127
+ return false;
128
+ }
129
+ $filter = current_filter();
130
+ if ( '' == $filter ) {
131
+ $filter = 'wcj_filter__none';
132
+ }
133
+ if ( isset( WCJ()->modules['product_price_by_formula']->calculated_products_prices[ $product_id ][ $filter ] ) ) {
134
+ return WCJ()->modules['product_price_by_formula']->calculated_products_prices[ $product_id ][ $filter ];
135
+ }
136
+ return false;
137
+ }
138
+
139
  /**
140
  * change_price.
141
  *
142
+ * @version 5.1.1
143
  * @since 2.5.0
144
  */
145
  function change_price( $price, $_product, $output_errors = false ) {
146
  if ( $this->is_price_by_formula_product( $_product ) && '' != $price ) {
147
  $_product_id = wcj_get_product_id_or_variation_parent_id( $_product );
148
+ $saved_price = $this->get_saved_price( $_product_id );
149
+ if ( false !== $saved_price ) {
150
+ return $saved_price;
151
+ }
152
  $is_per_product = ( 'per_product' === get_post_meta( $_product_id, '_' . 'wcj_product_price_by_formula_calculation', true ) );
153
  $the_formula = ( $is_per_product )
154
  ? get_post_meta( $_product_id, '_' . 'wcj_product_price_by_formula_eval', true )
161
  if ( $total_params > 0 ) {
162
  $the_current_filter = current_filter();
163
  if ( 'woocommerce_get_price_including_tax' == $the_current_filter || 'woocommerce_get_price_excluding_tax' == $the_current_filter ) {
164
+ $price = wcj_get_product_display_price( $_product );
165
+ $this->save_price( $_product_id, $price );
166
+ return $price;
167
  }
168
  $math = new WCJ_Math();
169
  $math->registerVariable( 'x', $price );
189
  if ( 'no_rounding' != $this->rounding ) {
190
  $price = wcj_round( $price, $this->rounding_precision, $this->rounding );
191
  }
192
+ $this->save_price( $_product_id, $price );
193
  }
194
  }
195
  }
includes/class-wcj-shipping-by-cities.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Shipping by Cities
4
  *
5
- * @version 4.9.0
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  */
@@ -51,7 +51,7 @@ class WCJ_Shipping_By_Cities extends WCJ_Module_Shipping_By_Condition {
51
  /**
52
  * check.
53
  *
54
- * @version 4.9.0
55
  * @since 3.6.0
56
  * @todo `$_REQUEST['city']` (i.e. billing city)
57
  * @todo `get_base_city()` - do we really need this?
@@ -59,7 +59,7 @@ class WCJ_Shipping_By_Cities extends WCJ_Module_Shipping_By_Condition {
59
  function check( $options_id, $values, $include_or_exclude, $package ) {
60
  switch ( $options_id ) {
61
  case 'cities':
62
- $customer_city = strtoupper( isset( $_REQUEST['s_city'] ) ? $_REQUEST['s_city'] : ( isset ( $_REQUEST['calc_shipping_city'] ) ? $_REQUEST['calc_shipping_city'] : ( ! empty( $user_city = WC()->customer->get_billing_city() ) ? $user_city : WC()->countries->get_base_city() ) ) );
63
  $values = array_map( 'strtoupper', array_map( 'trim', explode( PHP_EOL, $values ) ) );
64
  return in_array( $customer_city, $values );
65
  case 'postcodes':
2
  /**
3
  * Booster for WooCommerce - Module - Shipping by Cities
4
  *
5
+ * @version 5.1.0
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  */
51
  /**
52
  * check.
53
  *
54
+ * @version 5.1.0
55
  * @since 3.6.0
56
  * @todo `$_REQUEST['city']` (i.e. billing city)
57
  * @todo `get_base_city()` - do we really need this?
59
  function check( $options_id, $values, $include_or_exclude, $package ) {
60
  switch ( $options_id ) {
61
  case 'cities':
62
+ $customer_city = strtoupper( isset( $_REQUEST['s_city'] ) ? $_REQUEST['s_city'] : ( isset ( $_REQUEST['calc_shipping_city'] ) ? $_REQUEST['calc_shipping_city'] : ( ! empty( $user_city = WC()->customer->get_shipping_city() ) ? $user_city : WC()->countries->get_base_city() ) ) );
63
  $values = array_map( 'strtoupper', array_map( 'trim', explode( PHP_EOL, $values ) ) );
64
  return in_array( $customer_city, $values );
65
  case 'postcodes':
includes/class-wcj-wpml.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - WPML
4
  *
5
- * @version 4.9.0
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  */
@@ -13,10 +13,15 @@ if ( ! class_exists( 'WCJ_WPML' ) ) :
13
 
14
  class WCJ_WPML extends WCJ_Module {
15
 
 
 
 
 
 
16
  /**
17
  * Constructor.
18
  *
19
- * @version 4.9.0
20
  */
21
  function __construct() {
22
 
@@ -31,25 +36,69 @@ class WCJ_WPML extends WCJ_Module {
31
  if ( 'yes' === get_option( 'wcj_wpml_config_xml_auto_regenerate', 'no' ) ) {
32
  add_action( 'wcj_version_updated', array( $this, 'create_wpml_xml_file' ) );
33
  }
34
- add_action( 'wcml_switch_currency', array( $this, 'switch_currency' ) );
35
  add_filter( 'wcml_client_currency', function ( $currency ) {
36
- $this->switch_currency( $currency );
37
  return $currency;
38
  } );
 
 
 
39
  }
40
 
41
  $this->notice = '';
42
  }
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  /**
45
  * Set Booster currency based on WPML currency
46
  *
47
- * @version 4.5.0
48
  * @since 4.5.0
49
  *
50
  * @param $currency
51
  */
52
- function switch_currency( $currency ) {
53
  if (
54
  'no' === get_option( 'wcj_wpml_switch_booster_currency', 'no' ) ||
55
  ! WCJ()->modules['multicurrency']->is_enabled()
2
  /**
3
  * Booster for WooCommerce - Module - WPML
4
  *
5
+ * @version 5.1.0
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  */
13
 
14
  class WCJ_WPML extends WCJ_Module {
15
 
16
+ /**
17
+ * @var WCJ_WPML_Meta_Sync
18
+ */
19
+ protected $bkg_process_meta_sync;
20
+
21
  /**
22
  * Constructor.
23
  *
24
+ * @version 5.1.0
25
  */
26
  function __construct() {
27
 
36
  if ( 'yes' === get_option( 'wcj_wpml_config_xml_auto_regenerate', 'no' ) ) {
37
  add_action( 'wcj_version_updated', array( $this, 'create_wpml_xml_file' ) );
38
  }
39
+ add_action( 'wcml_switch_currency', array( $this, 'switch_currency_using_multicurrency' ) );
40
  add_filter( 'wcml_client_currency', function ( $currency ) {
41
+ $this->switch_currency_using_multicurrency( $currency );
42
  return $currency;
43
  } );
44
+
45
+ // WPML Meta Synchronizer
46
+ add_action( 'updated_postmeta', array( $this, 'update_meta_on_correspondent_language_product' ), 10, 4 );
47
  }
48
 
49
  $this->notice = '';
50
  }
51
 
52
+ /**
53
+ * update_meta_on_correspondent_language_product.
54
+ *
55
+ * @version 5.1.0
56
+ * @since 5.1.0
57
+ *
58
+ * @param $meta_id
59
+ * @param $object_id
60
+ * @param $meta_key
61
+ * @param $meta_value
62
+ */
63
+ function update_meta_on_correspondent_language_product( $meta_id, $object_id, $meta_key, $meta_value ) {
64
+ $allowed_metas_like = array( '_wcj_price_by_country_' );
65
+ if (
66
+ 'no' === get_option( 'wcj_wpml_sync_metas', 'no' )
67
+ || ( 'product' != get_post_type( $object_id ) && 'product_variation' != get_post_type( $object_id ) )
68
+ || count( array_filter( $allowed_metas_like, function ( $item ) use ( $meta_key ) {
69
+ return strpos( $meta_key, $item ) !== false;
70
+ } ) ) == 0
71
+ ) {
72
+ return;
73
+ }
74
+ $current_lang = apply_filters( 'wpml_current_language', null );
75
+ $languages = apply_filters( 'wpml_active_languages', null );
76
+ $wpml_post_info = apply_filters( 'wpml_post_language_details', null, $object_id );
77
+ if (
78
+ empty( $wpml_post_info )
79
+ || ! isset( $wpml_post_info['language_code'] )
80
+ || $current_lang != $wpml_post_info['language_code']
81
+ ) {
82
+ return;
83
+ }
84
+ unset( $languages[ $current_lang ] );
85
+ foreach ( $languages as $language ) {
86
+ $translated_post_id = apply_filters( 'wpml_object_id', $object_id, 'post', false, $language['code'] );
87
+ if ( ! empty( $translated_post_id ) && $translated_post_id != $object_id ) {
88
+ update_post_meta( $translated_post_id, $meta_key, $meta_value );
89
+ }
90
+ }
91
+ }
92
+
93
  /**
94
  * Set Booster currency based on WPML currency
95
  *
96
+ * @version 5.1.0
97
  * @since 4.5.0
98
  *
99
  * @param $currency
100
  */
101
+ function switch_currency_using_multicurrency( $currency ) {
102
  if (
103
  'no' === get_option( 'wcj_wpml_switch_booster_currency', 'no' ) ||
104
  ! WCJ()->modules['multicurrency']->is_enabled()
includes/classes/class-wcj-module-product-by-condition.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product by Condition
4
  *
5
- * @version 4.7.1
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  */
@@ -142,7 +142,7 @@ abstract class WCJ_Module_Product_By_Condition extends WCJ_Module {
142
  /**
143
  * delete_invisible_products_transient.
144
  *
145
- * @version 4.7.1
146
  * @since 4.7.1
147
  *
148
  * @param null $params
@@ -160,7 +160,7 @@ abstract class WCJ_Module_Product_By_Condition extends WCJ_Module {
160
  delete_transient( $transient_name );
161
  } elseif ( 'all_roles' === $params['remove_method'] ) {
162
  global $wpdb;
163
- $sql = "delete from wp_options where option_name REGEXP %s";
164
  $wpdb->query( $wpdb->prepare( $sql, '^_transient_' . 'wcj_' . $this->id ) );
165
  }
166
  }
2
  /**
3
  * Booster for WooCommerce - Module - Product by Condition
4
  *
5
+ * @version 5.1.1
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  */
142
  /**
143
  * delete_invisible_products_transient.
144
  *
145
+ * @version 5.1.1
146
  * @since 4.7.1
147
  *
148
  * @param null $params
160
  delete_transient( $transient_name );
161
  } elseif ( 'all_roles' === $params['remove_method'] ) {
162
  global $wpdb;
163
+ $sql = "delete from {$wpdb->options} where option_name REGEXP %s";
164
  $wpdb->query( $wpdb->prepare( $sql, '^_transient_' . 'wcj_' . $this->id ) );
165
  }
166
  }
includes/classes/class-wcj-module.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
- * @version 4.7.0
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @todo [dev] maybe should be `abstract` ?
@@ -43,7 +43,7 @@ class WCJ_Module {
43
  /**
44
  * Constructor.
45
  *
46
- * @version 4.4.0
47
  */
48
  function __construct( $type = 'module' ) {
49
  add_filter( 'wcj_settings_sections', array( $this, 'settings_section' ) );
@@ -71,6 +71,29 @@ class WCJ_Module {
71
  add_action( 'wcj_after_get_products', array( $this, 'restore_wpml_args_on_get_products' ) );
72
  add_action( 'admin_init', array( $this, 'remove_wpml_hooks' ) );
73
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  }
75
 
76
  /**
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
+ * @version 5.1.0
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @todo [dev] maybe should be `abstract` ?
43
  /**
44
  * Constructor.
45
  *
46
+ * @version 5.1.0
47
  */
48
  function __construct( $type = 'module' ) {
49
  add_filter( 'wcj_settings_sections', array( $this, 'settings_section' ) );
71
  add_action( 'wcj_after_get_products', array( $this, 'restore_wpml_args_on_get_products' ) );
72
  add_action( 'admin_init', array( $this, 'remove_wpml_hooks' ) );
73
  }
74
+
75
+ // Handle Price Functions
76
+ add_filter( 'wc_price', array( $this, 'handle_price' ), 10, 4 );
77
+ }
78
+
79
+ /**
80
+ * handle_price.
81
+ *
82
+ * @version 5.1.0
83
+ * @since 5.1.0
84
+ *
85
+ * @param $return
86
+ * @param $price
87
+ * @param $args
88
+ * @param $unformatted_price
89
+ *
90
+ * @return mixed
91
+ */
92
+ function handle_price( $return, $price, $args, $unformatted_price ) {
93
+ if ( isset( $args['add_html_on_price'] ) && ! filter_var( $args['add_html_on_price'], FILTER_VALIDATE_BOOLEAN ) ) {
94
+ $return = $price;
95
+ }
96
+ return $return;
97
  }
98
 
99
  /**
includes/classes/class-wcj-pdf-invoice.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce PDF Invoice
4
  *
5
- * @version 4.7.1
6
  * @author Pluggabl LLC.
7
  */
8
 
@@ -213,7 +213,7 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
213
  /**
214
  * get_pdf.
215
  *
216
- * @version 3.8.0
217
  * @todo [dev] (maybe) `die()` on success
218
  */
219
  function get_pdf( $dest ) {
@@ -249,7 +249,9 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
249
  if ( ! file_put_contents( $file_path, $result_pdf ) ) {
250
  return null;
251
  }
252
- header( "Content-Length: " . filesize( $file_path ) );
 
 
253
  flush(); // this doesn't really matter.
254
  if ( false !== ( $fp = fopen( $file_path, "r" ) ) ) {
255
  while ( ! feof( $fp ) ) {
2
  /**
3
  * Booster for WooCommerce PDF Invoice
4
  *
5
+ * @version 5.1.0
6
  * @author Pluggabl LLC.
7
  */
8
 
213
  /**
214
  * get_pdf.
215
  *
216
+ * @version 5.1.0
217
  * @todo [dev] (maybe) `die()` on success
218
  */
219
  function get_pdf( $dest ) {
249
  if ( ! file_put_contents( $file_path, $result_pdf ) ) {
250
  return null;
251
  }
252
+ if ( apply_filters( 'wcj_invoicing_header_content_length', true ) ) {
253
+ header( "Content-Length: " . filesize( $file_path ) );
254
+ }
255
  flush(); // this doesn't really matter.
256
  if ( false !== ( $fp = fopen( $file_path, "r" ) ) ) {
257
  while ( ! feof( $fp ) ) {
includes/export/class-wcj-exporter-orders.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Exporter Orders
4
  *
5
- * @version 3.2.1
6
  * @since 2.5.9
7
  * @author Pluggabl LLC.
8
  * @todo filter export by date
@@ -186,7 +186,7 @@ class WCJ_Exporter_Orders {
186
  /**
187
  * export_orders.
188
  *
189
- * @version 3.0.0
190
  * @since 2.4.8
191
  * @todo (maybe) metainfo as separate column
192
  */
@@ -229,6 +229,9 @@ class WCJ_Exporter_Orders {
229
  }
230
  foreach ( $loop_orders->posts as $order_id ) {
231
  $order = wc_get_order( $order_id );
 
 
 
232
 
233
  if ( isset( $_POST['wcj_filter_by_order_billing_country'] ) && '' != $_POST['wcj_filter_by_order_billing_country'] ) {
234
  if ( $order->billing_country != $_POST['wcj_filter_by_order_billing_country'] ) {
@@ -301,7 +304,7 @@ class WCJ_Exporter_Orders {
301
  /**
302
  * export_orders_items.
303
  *
304
- * @version 3.2.1
305
  * @since 2.5.9
306
  */
307
  function export_orders_items( $fields_helper ) {
@@ -343,6 +346,9 @@ class WCJ_Exporter_Orders {
343
  }
344
  foreach ( $loop_orders->posts as $order_id ) {
345
  $order = wc_get_order( $order_id );
 
 
 
346
 
347
  if ( isset( $_POST['wcj_filter_by_order_billing_country'] ) && '' != $_POST['wcj_filter_by_order_billing_country'] ) {
348
  if ( $order->billing_country != $_POST['wcj_filter_by_order_billing_country'] ) {
@@ -351,6 +357,9 @@ class WCJ_Exporter_Orders {
351
  }
352
 
353
  foreach ( $order->get_items() as $item_id => $item ) {
 
 
 
354
 
355
  $row = $this->get_export_orders_row( $fields_ids, $order_id, $order, null, null, $item, $item_id );
356
 
2
  /**
3
  * Booster for WooCommerce Exporter Orders
4
  *
5
+ * @version 5.1.0
6
  * @since 2.5.9
7
  * @author Pluggabl LLC.
8
  * @todo filter export by date
186
  /**
187
  * export_orders.
188
  *
189
+ * @version 5.1.0
190
  * @since 2.4.8
191
  * @todo (maybe) metainfo as separate column
192
  */
229
  }
230
  foreach ( $loop_orders->posts as $order_id ) {
231
  $order = wc_get_order( $order_id );
232
+ if ( ! apply_filters( 'wcj_export_validation', true, 'order', $order ) ) {
233
+ continue;
234
+ }
235
 
236
  if ( isset( $_POST['wcj_filter_by_order_billing_country'] ) && '' != $_POST['wcj_filter_by_order_billing_country'] ) {
237
  if ( $order->billing_country != $_POST['wcj_filter_by_order_billing_country'] ) {
304
  /**
305
  * export_orders_items.
306
  *
307
+ * @version 5.1.0
308
  * @since 2.5.9
309
  */
310
  function export_orders_items( $fields_helper ) {
346
  }
347
  foreach ( $loop_orders->posts as $order_id ) {
348
  $order = wc_get_order( $order_id );
349
+ if ( ! apply_filters( 'wcj_export_validation', true, 'order', $order ) ) {
350
+ continue;
351
+ }
352
 
353
  if ( isset( $_POST['wcj_filter_by_order_billing_country'] ) && '' != $_POST['wcj_filter_by_order_billing_country'] ) {
354
  if ( $order->billing_country != $_POST['wcj_filter_by_order_billing_country'] ) {
357
  }
358
 
359
  foreach ( $order->get_items() as $item_id => $item ) {
360
+ if ( ! apply_filters( 'wcj_export_validation', true, 'order_item', $item ) ) {
361
+ continue;
362
+ }
363
 
364
  $row = $this->get_export_orders_row( $fields_ids, $order_id, $order, null, null, $item, $item_id );
365
 
includes/functions/wcj-functions-eu-vat.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - EU VAT
4
  *
5
- * @version 4.7.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  */
@@ -13,15 +13,16 @@ if ( ! function_exists( 'wcj_validate_vat_no_soap' ) ) {
13
  /**
14
  * wcj_validate_vat_no_soap.
15
  *
16
- * @version 4.6.0
17
  * @since 2.5.7
18
  * @return mixed: bool on successful checking (can be true or false), null otherwise
19
  */
20
  function wcj_validate_vat_no_soap( $country_code, $vat_number, $method ) {
21
  $country_code = strtoupper( $country_code );
22
  $api_url = add_query_arg( array(
23
- 'ms' => $country_code,
24
- 'vat' => $vat_number,
 
25
  ), 'http://ec.europa.eu/taxation_customs/vies/viesquer.do' );
26
  switch ( $method ) {
27
  case 'file_get_contents':
2
  /**
3
  * Booster for WooCommerce - Functions - EU VAT
4
  *
5
+ * @version 5.1.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  */
13
  /**
14
  * wcj_validate_vat_no_soap.
15
  *
16
+ * @version 5.1.0
17
  * @since 2.5.7
18
  * @return mixed: bool on successful checking (can be true or false), null otherwise
19
  */
20
  function wcj_validate_vat_no_soap( $country_code, $vat_number, $method ) {
21
  $country_code = strtoupper( $country_code );
22
  $api_url = add_query_arg( array(
23
+ 'ms' => $country_code,
24
+ 'vat' => $vat_number,
25
+ 'locale' => 'en',
26
  ), 'http://ec.europa.eu/taxation_customs/vies/viesquer.do' );
27
  switch ( $method ) {
28
  case 'file_get_contents':
includes/functions/wcj-functions-exchange-rates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Exchange Rates
4
  *
5
- * @version 4.4.0
6
  * @since 2.7.0
7
  * @author Pluggabl LLC.
8
  */
@@ -125,10 +125,13 @@ if ( ! function_exists( 'wcj_get_exchange_rate' ) ) {
125
  /*
126
  * wcj_get_exchange_rate.
127
  *
128
- * @version 4.3.0
129
  * @since 2.6.0
130
  */
131
  function wcj_get_exchange_rate( $currency_from, $currency_to ) {
 
 
 
132
  $exchange_rates_server = wcj_get_currency_exchange_rate_server( $currency_from, $currency_to );
133
  if ( 'yes' === ( $calculate_by_invert = get_option( 'wcj_currency_exchange_rates_calculate_by_invert', 'no' ) ) ) {
134
  $_currency_to = $currency_to;
2
  /**
3
  * Booster for WooCommerce - Functions - Exchange Rates
4
  *
5
+ * @version 5.1.0
6
  * @since 2.7.0
7
  * @author Pluggabl LLC.
8
  */
125
  /*
126
  * wcj_get_exchange_rate.
127
  *
128
+ * @version 5.1.0
129
  * @since 2.6.0
130
  */
131
  function wcj_get_exchange_rate( $currency_from, $currency_to ) {
132
+ if ( $currency_from == $currency_to ) {
133
+ return 1;
134
+ }
135
  $exchange_rates_server = wcj_get_currency_exchange_rate_server( $currency_from, $currency_to );
136
  if ( 'yes' === ( $calculate_by_invert = get_option( 'wcj_currency_exchange_rates_calculate_by_invert', 'no' ) ) ) {
137
  $_currency_to = $currency_to;
includes/functions/wcj-functions-price-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
- * @version 4.4.0
6
  * @since 2.7.0
7
  * @author Pluggabl LLC.
8
  */
@@ -406,12 +406,14 @@ if ( ! function_exists( 'wcj_update_products_price_by_country' ) ) {
406
  /**
407
  * wcj_update_products_price_by_country - all products.
408
  *
409
- * @version 4.0.0
410
  * @since 2.5.3
411
  */
412
  function wcj_update_products_price_by_country() {
413
  $offset = 0;
414
  $block_size = 512;
 
 
415
  while( true ) {
416
  $args = array(
417
  'post_type' => 'product',
@@ -427,10 +429,11 @@ if ( ! function_exists( 'wcj_update_products_price_by_country' ) ) {
427
  break;
428
  }
429
  foreach ( $loop->posts as $product_id ) {
430
- wcj_update_products_price_by_country_for_single_product( $product_id );
431
  }
432
  $offset += $block_size;
433
  }
 
434
  }
435
  }
436
 
@@ -620,8 +623,24 @@ if ( ! function_exists( 'wcj_get_woocommerce_currencies_and_symbols' ) ) {
620
  if ( ! function_exists( 'wcj_price' ) ) {
621
  /**
622
  * wcj_price.
 
 
 
 
 
 
 
 
 
623
  */
624
- function wcj_price( $price, $currency, $hide_currency ) {
625
- return ( 'yes' === $hide_currency ) ? wc_price( $price, array( 'currency' => 'DISABLED' ) ) : wc_price( $price, array( 'currency' => $currency ) );
 
 
 
 
 
 
 
626
  }
627
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
+ * @version 5.1.0
6
  * @since 2.7.0
7
  * @author Pluggabl LLC.
8
  */
406
  /**
407
  * wcj_update_products_price_by_country - all products.
408
  *
409
+ * @version 5.1.0
410
  * @since 2.5.3
411
  */
412
  function wcj_update_products_price_by_country() {
413
  $offset = 0;
414
  $block_size = 512;
415
+ $bkg_process = WCJ()->modules['price_by_country']->bkg_process_price_updater;
416
+ $bkg_process->cancel_process();
417
  while( true ) {
418
  $args = array(
419
  'post_type' => 'product',
429
  break;
430
  }
431
  foreach ( $loop->posts as $product_id ) {
432
+ $bkg_process->push_to_queue( array( 'id' => $product_id ) );
433
  }
434
  $offset += $block_size;
435
  }
436
+ $bkg_process->save()->dispatch();
437
  }
438
  }
439
 
623
  if ( ! function_exists( 'wcj_price' ) ) {
624
  /**
625
  * wcj_price.
626
+ *
627
+ * @version 5.1.0
628
+ *
629
+ * @param $price
630
+ * @param $currency
631
+ * @param $hide_currency
632
+ * @param null $args
633
+ *
634
+ * @return string
635
  */
636
+ function wcj_price( $price, $currency, $hide_currency, $args = null ) {
637
+ $args = wp_parse_args( $args, array(
638
+ 'currency' => 'DISABLED',
639
+ 'add_html_on_price' => true
640
+ ) );
641
+ if ( 'yes' !== $hide_currency ) {
642
+ $args['currency'] = $currency;
643
+ }
644
+ return wc_price( $price, $args );
645
  }
646
  }
includes/price-by-country/class-wcj-price-by-country-core.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Price by Country - Core
4
  *
5
- * @version 5.0.0
6
  * @author Pluggabl LLC.
7
  */
8
 
@@ -101,7 +101,7 @@ class WCJ_Price_by_Country_Core {
101
  /**
102
  * add_hooks.
103
  *
104
- * @version 4.4.0
105
  */
106
  function add_hooks() {
107
 
@@ -120,9 +120,25 @@ class WCJ_Price_by_Country_Core {
120
 
121
  // Price Filter Widget
122
  if ( 'yes' === get_option( 'wcj_price_by_country_price_filter_widget_support_enabled', 'no' ) ) {
123
- add_filter( 'woocommerce_price_filter_meta_keys', array( $this, 'price_filter_meta_keys' ), PHP_INT_MAX, 1 );
124
- add_filter( 'woocommerce_product_query_meta_query', array( $this, 'price_filter_meta_query' ), PHP_INT_MAX, 2 );
125
- add_filter( 'woocommerce_get_catalog_ordering_args', array( $this, 'sorting_by_price_fix' ), PHP_INT_MAX );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  }
127
 
128
  // Price Format
@@ -132,6 +148,313 @@ class WCJ_Price_by_Country_Core {
132
  add_filter( 'woocommerce_get_price_excluding_tax', array( $this, 'format_price_after_including_excluding_tax' ), PHP_INT_MAX, 3 );
133
  }
134
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  }
136
 
137
  /**
@@ -167,30 +490,6 @@ class WCJ_Price_by_Country_Core {
167
  wp_enqueue_script( 'wcj-wcj-wSelect', wcj_plugin_url() . '/includes/js/wcj-wSelect.js', array(), false, true );
168
  }
169
 
170
- /*
171
- * sorting_by_price_fix.
172
- *
173
- * @version 2.7.0
174
- * @since 2.5.6
175
- */
176
- function sorting_by_price_fix( $args ) {
177
- if ( null != ( $group_id = $this->get_customer_country_group_id() ) ) {
178
- // Get ordering from query string
179
- $orderby_value = ( WCJ_IS_WC_VERSION_BELOW_3 ?
180
- ( isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) ) ) :
181
- ( isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) ) )
182
- );
183
- // Get orderby arg from string
184
- $orderby_value = explode( '-', $orderby_value );
185
- $orderby = esc_attr( $orderby_value[0] );
186
- $orderby = strtolower( $orderby );
187
- if ( 'price' == $orderby ) {
188
- $args['meta_key'] = '_' . 'wcj_price_by_country_' . $group_id;
189
- }
190
- }
191
- return $args;
192
- }
193
-
194
  /**
195
  * price_filter_meta_query.
196
  *
@@ -208,19 +507,6 @@ class WCJ_Price_by_Country_Core {
208
  return $meta_query;
209
  }
210
 
211
- /**
212
- * price_filter_meta_keys.
213
- *
214
- * @version 2.5.3
215
- * @since 2.5.3
216
- */
217
- function price_filter_meta_keys( $keys ) {
218
- if ( null != ( $group_id = $this->get_customer_country_group_id() ) ) {
219
- $keys = array( '_' . 'wcj_price_by_country_' . $group_id );
220
- }
221
- return $keys;
222
- }
223
-
224
  /**
225
  * change_price_grouped.
226
  *
2
  /**
3
  * Booster for WooCommerce - Price by Country - Core
4
  *
5
+ * @version 5.1.0
6
  * @author Pluggabl LLC.
7
  */
8
 
101
  /**
102
  * add_hooks.
103
  *
104
+ * @version 5.1.0
105
  */
106
  function add_hooks() {
107
 
120
 
121
  // Price Filter Widget
122
  if ( 'yes' === get_option( 'wcj_price_by_country_price_filter_widget_support_enabled', 'no' ) ) {
123
+ add_filter( 'woocommerce_product_query_meta_query', array( $this, 'price_filter_meta_query' ), PHP_INT_MAX, 2 );
124
+ add_filter( 'woocommerce_price_filter_sql', array( $this, 'woocommerce_price_filter_sql' ), 10, 3 );
125
+ add_action( 'wp_footer', array( $this, 'add_compatibility_with_price_filter_widget' ) );
126
+ add_filter( 'posts_clauses', array( $this, 'price_filter_post_clauses' ), 10, 2 );
127
+ add_filter( 'posts_clauses', array( $this, 'price_filter_post_clauses_sort' ), 10, 2 );
128
+ add_action( 'woocommerce_product_query', function ( $query ) {
129
+ $group_id = $this->get_customer_country_group_id();
130
+ $country_exchange_rate = get_option( 'wcj_price_by_country_exchange_rate_group_' . $group_id, 1 );
131
+ if ( 1 == (float) $country_exchange_rate ) {
132
+ return;
133
+ }
134
+ wcj_remove_class_filter( 'posts_clauses', 'WC_Query', 'order_by_price_asc_post_clauses' );
135
+ wcj_remove_class_filter( 'posts_clauses', 'WC_Query', 'order_by_price_desc_post_clauses' );
136
+ wcj_remove_class_filter( 'posts_clauses', 'WC_Query', 'price_filter_post_clauses' );
137
+ } );
138
+ add_filter( 'woocommerce_price_filter_widget_step', function ( $step ) {
139
+ $step = 1;
140
+ return $step;
141
+ } );
142
  }
143
 
144
  // Price Format
148
  add_filter( 'woocommerce_get_price_excluding_tax', array( $this, 'format_price_after_including_excluding_tax' ), PHP_INT_MAX, 3 );
149
  }
150
  }
151
+
152
+ // Free Shipping
153
+ add_filter( 'woocommerce_shipping_free_shipping_instance_option', array( $this, 'convert_free_shipping_min_amount' ), 10, 3 );
154
+ add_filter( 'woocommerce_shipping_free_shipping_option', array( $this, 'convert_free_shipping_min_amount' ), 10, 3 );
155
+ }
156
+
157
+ /**
158
+ * convert_free_shipping_min_amount.
159
+ *
160
+ * @version 5.1.0
161
+ * @since 5.1.0
162
+ *
163
+ * @param $option
164
+ * @param $key
165
+ * @param $method
166
+ *
167
+ * @return mixed
168
+ */
169
+ function convert_free_shipping_min_amount( $option, $key, $method ) {
170
+ if (
171
+ 'no' === get_option( 'wcj_price_by_country_compatibility_free_shipping', 'no' )
172
+ || 'min_amount' !== $key
173
+ || ! is_numeric( $option )
174
+ || 0 === (float) $option
175
+ ) {
176
+ return $option;
177
+ }
178
+ $option = $this->change_price( $option, null );
179
+ return $option;
180
+ }
181
+
182
+ /**
183
+ * append_price_filter_post_meta_join.
184
+ *
185
+ * @version 5.1.0
186
+ * @since 5.1.0
187
+ *
188
+ * @param $sql
189
+ * @param $country_group_id
190
+ *
191
+ * @return string
192
+ */
193
+ private function append_price_filter_post_meta_join( $sql, $country_group_id ) {
194
+ global $wpdb;
195
+ if ( ! strstr( $sql, 'postmeta AS pm' ) ) {
196
+ $join = $this->get_price_filter_post_meta_join( $country_group_id );
197
+ $sql .= " {$join} ";
198
+ }
199
+ return $sql;
200
+ }
201
+
202
+ /**
203
+ * get_price_filter_post_meta_join.
204
+ *
205
+ * @version 5.1.0
206
+ * @since 5.1.0
207
+ *
208
+ * @param $country_group_id
209
+ *
210
+ * @return string
211
+ */
212
+ private function get_price_filter_post_meta_join( $country_group_id ) {
213
+ global $wpdb;
214
+ return "LEFT JOIN {$wpdb->postmeta} AS pm ON $wpdb->posts.ID = pm.post_id AND pm.meta_key='_wcj_price_by_country_{$country_group_id}'";
215
+ }
216
+
217
+ /**
218
+ * price_filter_post_clauses_sort.
219
+ *
220
+ * @version 5.1.0
221
+ * @since 5.1.0
222
+ *
223
+ * @param $args
224
+ * @param $wp_query
225
+ *
226
+ * @return mixed
227
+ */
228
+ function price_filter_post_clauses_sort( $args, $wp_query ) {
229
+ if (
230
+ ! $wp_query->is_main_query() ||
231
+ 'price' !== $wp_query->get( 'orderby' ) ||
232
+ empty( $group_id = $this->get_customer_country_group_id() ) ||
233
+ 1 == (float) ( $country_exchange_rate = get_option( 'wcj_price_by_country_exchange_rate_group_' . $group_id, 1 ) )
234
+ ) {
235
+ return $args;
236
+ }
237
+ global $wpdb;
238
+ $order = $wp_query->get( 'order' );
239
+ $original_orderby = $args['orderby'];
240
+ if ( 'desc' === strtolower( $order ) ) {
241
+ $args['orderby'] = 'MIN(pm.meta_value+0)+0 DESC';
242
+ } else {
243
+ $args['orderby'] = 'MAX(pm.meta_value+0)+0 ASC';
244
+ }
245
+ $args['orderby'] = ! empty( $original_orderby ) ? $args['orderby'] . ', ' . $original_orderby : $args['orderby'];
246
+ $args['join'] = $this->append_price_filter_post_meta_join( $args['join'], $group_id );
247
+ return $args;
248
+ }
249
+
250
+ /**
251
+ * price_filter_post_clauses.
252
+ *
253
+ * @version 5.1.0
254
+ * @since 5.1.0
255
+ *
256
+ * @see WC_Query::price_filter_post_clauses()
257
+ *
258
+ * @param $args
259
+ * @param $wp_query
260
+ *
261
+ * @return mixed
262
+ */
263
+ function price_filter_post_clauses( $args, $wp_query ) {
264
+ global $wpdb;
265
+ if (
266
+ ! $wp_query->is_main_query() ||
267
+ ( ! isset( $_GET['max_price'] ) && ! isset( $_GET['min_price'] ) ) ||
268
+ empty( $group_id = $this->get_customer_country_group_id() ) ||
269
+ 1 == (float) ( $country_exchange_rate = get_option( 'wcj_price_by_country_exchange_rate_group_' . $group_id, 1 ) )
270
+ ) {
271
+ return $args;
272
+ }
273
+ $current_min_price = isset( $_GET['min_price'] ) ? floatval( wp_unslash( $_GET['min_price'] ) ) : 0;
274
+ $current_max_price = isset( $_GET['max_price'] ) ? floatval( wp_unslash( $_GET['max_price'] ) ) : PHP_INT_MAX;
275
+ if ( wc_tax_enabled() && 'incl' === get_option( 'woocommerce_tax_display_shop' ) && ! wc_prices_include_tax() ) {
276
+ $tax_class = apply_filters( 'woocommerce_price_filter_widget_tax_class', '' );
277
+ $tax_rates = WC_Tax::get_rates( $tax_class );
278
+ if ( $tax_rates ) {
279
+ $current_min_price -= WC_Tax::get_tax_total( WC_Tax::calc_inclusive_tax( $current_min_price, $tax_rates ) );
280
+ $current_max_price -= WC_Tax::get_tax_total( WC_Tax::calc_inclusive_tax( $current_max_price, $tax_rates ) );
281
+ }
282
+ }
283
+ $current_min_price *= $country_exchange_rate;
284
+ $current_max_price *= $country_exchange_rate;
285
+ $args['fields'] .= ', MIN(pm.meta_value+0) AS wcj_min_price, MAX(pm.meta_value+0) AS wcj_max_price';
286
+ $args['join'] = $this->append_price_filter_post_meta_join( $args['join'], $group_id );
287
+ $args['groupby'] .= $wpdb->prepare( " HAVING wcj_min_price >= %f AND wcj_max_price <= %f", $current_min_price, $current_max_price );
288
+ return $args;
289
+ }
290
+
291
+ /**
292
+ * Adds compatibility with WooCommerce Price Filter widget.
293
+ *
294
+ * @see price-slider.js->init_price_filter()
295
+ *
296
+ * @version 5.1.0
297
+ * @since 5.1.0
298
+ */
299
+ function add_compatibility_with_price_filter_widget() {
300
+ if (
301
+ ! is_active_widget( false, false, 'woocommerce_price_filter' )
302
+ || 'no' === get_option( 'wcj_price_by_country_price_filter_widget_support_enabled', 'no' )
303
+ ) {
304
+ return;
305
+ }
306
+ ?>
307
+ <?php
308
+ $group_id = $this->get_customer_country_group_id();
309
+ $exchange_rate = get_option( 'wcj_price_by_country_exchange_rate_group_' . $group_id, 1 );
310
+ if ( $exchange_rate == 1 ) {
311
+ return;
312
+ }
313
+ ?>
314
+ <input type="hidden" id="wcj_mc_exchange_rate" value="<?php echo esc_html( $exchange_rate ) ?>"/>
315
+ <script>
316
+ var wcj_mc_pf_slider = {
317
+ slider: null,
318
+ convert_rate: 1,
319
+ original_min: 1,
320
+ original_max: 1,
321
+ original_values: [],
322
+ current_min: 1,
323
+ current_max: 1,
324
+ current_values: [],
325
+ step: 1,
326
+ init(slider, convert_rate, step) {
327
+ this.step = step;
328
+ this.slider = slider;
329
+ this.convert_rate = convert_rate;
330
+ this.original_min = jQuery(this.slider).slider("option", "min");
331
+ this.original_max = jQuery(this.slider).slider("option", "max");
332
+ this.original_values = jQuery(this.slider).slider("option", "values");
333
+ this.current_min = this.original_min;
334
+ this.current_max = this.original_max;
335
+ this.current_values[0] = jQuery(this.slider).parent().find('#min_price').val();
336
+ this.current_values[1] = jQuery(this.slider).parent().find('#max_price').val();
337
+ if (
338
+ jQuery(this.slider).parent().find('#min_price').val() != this.original_min ||
339
+ jQuery(this.slider).parent().find('#max_price').val() != this.original_max
340
+ ) {
341
+ this.current_values[0] *= wcj_mc_pf_slider.convert_rate;
342
+ this.current_values[1] *= wcj_mc_pf_slider.convert_rate;
343
+ }
344
+ this.update_slider();
345
+ },
346
+ update_slider() {
347
+ jQuery(this.slider).slider("destroy");
348
+ var current_min_price = Math.floor(this.current_min);
349
+ var current_max_price = Math.ceil(this.current_max);
350
+ jQuery(this.slider).slider({
351
+ range: true,
352
+ animate: true,
353
+ min: current_min_price,
354
+ max: current_max_price,
355
+ step: parseFloat(this.step),
356
+ values: wcj_mc_pf_slider.current_values,
357
+ create: function () {
358
+ jQuery(wcj_mc_pf_slider.slider).parent().find('.price_slider_amount #min_price').val(Math.floor(wcj_mc_pf_slider.current_values[0] / wcj_mc_pf_slider.convert_rate));
359
+ jQuery(wcj_mc_pf_slider.slider).parent().find('.price_slider_amount #max_price').val(Math.ceil(wcj_mc_pf_slider.current_values[1] / wcj_mc_pf_slider.convert_rate));
360
+ jQuery(document.body).trigger('price_slider_create', [Math.floor(wcj_mc_pf_slider.current_values[0]), Math.ceil(wcj_mc_pf_slider.current_values[1])]);
361
+ },
362
+ slide: function (event, ui) {
363
+ jQuery(wcj_mc_pf_slider.slider).parent().find('.price_slider_amount #min_price').val(Math.floor(ui.values[0] / wcj_mc_pf_slider.convert_rate));
364
+ jQuery(wcj_mc_pf_slider.slider).parent().find('.price_slider_amount #max_price').val(Math.ceil(ui.values[1] / wcj_mc_pf_slider.convert_rate));
365
+ var the_min = ui.values[0] == Math.round(wcj_mc_pf_slider.current_values[0]) ? Math.floor(wcj_mc_pf_slider.current_values[0]) : ui.values[0];
366
+ var the_max = ui.values[1] == Math.round(wcj_mc_pf_slider.current_values[1]) ? Math.ceil(wcj_mc_pf_slider.current_values[1]) : ui.values[1];
367
+ jQuery(document.body).trigger('price_slider_slide', [the_min, the_max]);
368
+ },
369
+ change: function (event, ui) {
370
+ jQuery(document.body).trigger('price_slider_change', [ui.values[0], ui.values[1]]);
371
+ }
372
+ });
373
+ }
374
+ };
375
+ var wcj_mc_pf = {
376
+ price_filters: null,
377
+ rate: 1,
378
+ step: 1,
379
+ init: function (price_filters) {
380
+ this.price_filters = price_filters;
381
+ this.rate = document.getElementById('wcj_mc_exchange_rate').value;
382
+ this.update_slider();
383
+ },
384
+ update_slider: function () {
385
+ [].forEach.call(wcj_mc_pf.price_filters, function (el) {
386
+ wcj_mc_pf_slider.init(el, wcj_mc_pf.rate, wcj_mc_pf.step);
387
+ });
388
+ }
389
+ }
390
+ document.addEventListener("DOMContentLoaded", function () {
391
+ var price_filters = document.querySelectorAll('.price_slider.ui-slider');
392
+ if (price_filters.length) {
393
+ wcj_mc_pf.init(price_filters);
394
+ }
395
+ });
396
+ </script>
397
+ <?php
398
+ }
399
+
400
+ /**
401
+ * woocommerce_price_filter_sql.
402
+ *
403
+ * @version 5.1.0
404
+ * @since 5.1.0
405
+ *
406
+ * @see WC_Widget_Price_Filter::get_filtered_price()
407
+ *
408
+ * @param $sql
409
+ * @param $meta_query_sql
410
+ * @param $tax_query_sql
411
+ *
412
+ * @return string
413
+ */
414
+ function woocommerce_price_filter_sql( $sql, $meta_query_sql, $tax_query_sql){
415
+ if (
416
+ is_admin()
417
+ || 'no' === get_option( 'wcj_price_by_country_price_filter_widget_support_enabled', 'no' )
418
+ || empty( $group_id = $this->get_customer_country_group_id() )
419
+ || 1 == (float) ( $country_exchange_rate = get_option( 'wcj_price_by_country_exchange_rate_group_' . $group_id, 1 ) )
420
+ ) {
421
+ return $sql;
422
+ }
423
+
424
+ global $wpdb;
425
+ $args = WC()->query->get_main_query()->query_vars;
426
+ $tax_query = isset( $args['tax_query'] ) ? $args['tax_query'] : array();
427
+ $meta_query = isset( $args['meta_query'] ) ? $args['meta_query'] : array();
428
+
429
+ if ( ! is_post_type_archive( 'product' ) && ! empty( $args['taxonomy'] ) && ! empty( $args['term'] ) ) {
430
+ $tax_query[] = array(
431
+ 'taxonomy' => $args['taxonomy'],
432
+ 'terms' => array( $args['term'] ),
433
+ 'field' => 'slug',
434
+ );
435
+ }
436
+
437
+ foreach ( $meta_query + $tax_query as $key => $query ) {
438
+ if ( ! empty( $query['price_filter'] ) || ! empty( $query['rating_filter'] ) ) {
439
+ unset( $meta_query[ $key ] );
440
+ }
441
+ }
442
+
443
+ $search = WC_Query::get_main_search_query_sql();
444
+ $search_query_sql = $search ? ' AND ' . $search : '';
445
+ $sql = "
446
+ SELECT IFNULL(MIN(pm.meta_value+0),min_price) AS min_price, IFNULL(MAX(pm.meta_value+0),max_price) AS max_price
447
+ FROM {$wpdb->wc_product_meta_lookup}
448
+ LEFT JOIN {$wpdb->postmeta} AS pm ON (pm.post_id = product_id AND pm.meta_key='_wcj_price_by_country_{$group_id}')
449
+ WHERE product_id IN (
450
+ SELECT ID FROM {$wpdb->posts}
451
+ " . $tax_query_sql['join'] . $meta_query_sql['join'] . "
452
+ WHERE {$wpdb->posts}.post_type IN ('" . implode( "','", array_map( 'esc_sql', apply_filters( 'woocommerce_price_filter_post_type', array( 'product' ) ) ) ) . "')
453
+ AND {$wpdb->posts}.post_status = 'publish'
454
+ " . $tax_query_sql['where'] . $meta_query_sql['where'] . $search_query_sql . '
455
+ )';
456
+
457
+ return $sql;
458
  }
459
 
460
  /**
490
  wp_enqueue_script( 'wcj-wcj-wSelect', wcj_plugin_url() . '/includes/js/wcj-wSelect.js', array(), false, true );
491
  }
492
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
493
  /**
494
  * price_filter_meta_query.
495
  *
507
  return $meta_query;
508
  }
509
 
 
 
 
 
 
 
 
 
 
 
 
 
 
510
  /**
511
  * change_price_grouped.
512
  *
includes/settings/wcj-settings-currency-exchange-rates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Currency Exchange Rates
4
  *
5
- * @version 4.4.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo add "rounding" and "fixed offset" options for each pair separately (and option to enable/disable these per pair extra settings)
@@ -116,7 +116,7 @@ $settings = array(
116
  'id' => 'wcj_currency_exchange_api_key',
117
  ),
118
  array(
119
- 'title' => __( 'Free Currency Converter API', 'woocommerce-jetpack' ),
120
  'desc' => sprintf(__( 'More information at %s', 'woocommerce-jetpack' ),'<a target="_blank" href="https://free.currencyconverterapi.com/free-api-key">https://free.currencyconverterapi.com/free-api-key</a>'),
121
  'type' => 'text',
122
  'id' => 'wcj_currency_exchange_api_key_fccapi',
2
  /**
3
  * Booster for WooCommerce - Settings - Currency Exchange Rates
4
  *
5
+ * @version 5.1.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo add "rounding" and "fixed offset" options for each pair separately (and option to enable/disable these per pair extra settings)
116
  'id' => 'wcj_currency_exchange_api_key',
117
  ),
118
  array(
119
+ 'title' => __( 'Free Currency Converter API Key', 'woocommerce-jetpack' ),
120
  'desc' => sprintf(__( 'More information at %s', 'woocommerce-jetpack' ),'<a target="_blank" href="https://free.currencyconverterapi.com/free-api-key">https://free.currencyconverterapi.com/free-api-key</a>'),
121
  'type' => 'text',
122
  'id' => 'wcj_currency_exchange_api_key_fccapi',
includes/settings/wcj-settings-export.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Export
4
  *
5
- * @version 3.2.1
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo add "Additional Export Fields" for "Customers from Orders" and (maybe) "Customers"
@@ -22,6 +22,15 @@ $settings = array(
22
  'default' => ',',
23
  'type' => 'text',
24
  ),
 
 
 
 
 
 
 
 
 
25
  array(
26
  'title' => __( 'UTF-8 BOM', 'woocommerce-jetpack' ),
27
  'desc' => __( 'Add', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Export
4
  *
5
+ * @version 5.1.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo add "Additional Export Fields" for "Customers from Orders" and (maybe) "Customers"
22
  'default' => ',',
23
  'type' => 'text',
24
  ),
25
+ array(
26
+ 'title' => __( 'Smart Formatting', 'woocommerce-jetpack' ),
27
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
28
+ 'desc' => empty( $message = apply_filters( 'booster_message', '', 'desc' ) ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
29
+ 'id' => 'wcj_export_csv_smart_formatting',
30
+ 'desc_tip' => sprintf( __( 'Tries to handle special characters as commas and quotes, formatting fields according to <a href="%s">RFC4180</a>', 'woocommerce-jetpack' ), 'https://tools.ietf.org/html/rfc4180' ),
31
+ 'default' => 'no',
32
+ 'type' => 'checkbox',
33
+ ),
34
  array(
35
  'title' => __( 'UTF-8 BOM', 'woocommerce-jetpack' ),
36
  'desc' => __( 'Add', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-multicurrency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Multicurrency (Currency Switcher)
4
  *
5
- * @version 5.0.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo "pretty prices"
@@ -116,14 +116,14 @@ $settings = array(
116
  'type' => 'title',
117
  'id' => 'wcj_multicurrency_compatibility',
118
  ),
119
- array(
120
  'title' => __( 'Prices and Currencies by Country Module', 'woocommerce-jetpack' ),
121
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
122
  'desc_tip' => __( 'Switches currency according to country.', 'woocommerce-jetpack' ) . '<br />' . sprintf( __( 'Once Enabled, please set all the currency values from the <a href="%s">Country</a> module as 1. The MultiCurrency module values will be used instead.', 'woocommerce-jetpack' ), admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=price_by_country' ) ),
123
  'id' => 'wcj_multicurrency_compatibility_price_by_country_module',
124
  'default' => 'no',
125
  'type' => 'checkbox',
126
- ),
127
  array(
128
  'title' => __( 'WooCommerce Fixed Coupons', 'woocommerce-jetpack' ),
129
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
@@ -207,6 +207,15 @@ $settings = array(
207
  'default' => 'no',
208
  'type' => 'checkbox',
209
  ),
 
 
 
 
 
 
 
 
 
210
  array(
211
  'type' => 'sectionend',
212
  'id' => 'wcj_multicurrency_compatibility',
2
  /**
3
  * Booster for WooCommerce - Settings - Multicurrency (Currency Switcher)
4
  *
5
+ * @version 5.1.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo "pretty prices"
116
  'type' => 'title',
117
  'id' => 'wcj_multicurrency_compatibility',
118
  ),
119
+ /*array(
120
  'title' => __( 'Prices and Currencies by Country Module', 'woocommerce-jetpack' ),
121
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
122
  'desc_tip' => __( 'Switches currency according to country.', 'woocommerce-jetpack' ) . '<br />' . sprintf( __( 'Once Enabled, please set all the currency values from the <a href="%s">Country</a> module as 1. The MultiCurrency module values will be used instead.', 'woocommerce-jetpack' ), admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=price_by_country' ) ),
123
  'id' => 'wcj_multicurrency_compatibility_price_by_country_module',
124
  'default' => 'no',
125
  'type' => 'checkbox',
126
+ ),*/
127
  array(
128
  'title' => __( 'WooCommerce Fixed Coupons', 'woocommerce-jetpack' ),
129
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
207
  'default' => 'no',
208
  'type' => 'checkbox',
209
  ),
210
+ array(
211
+ 'title' => __( 'Product Add-Ons Plugin', 'woocommerce-jetpack' ),
212
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
213
+ 'desc' => empty( $message = apply_filters( 'booster_message', '', 'desc' ) ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
214
+ 'desc_tip' => sprintf( __( 'Adds compatibility with <a href="%s" target="_blank">Product Add-Ons</a> plugin.', 'woocommerce-jetpack' ), 'https://woocommerce.com/products/product-add-ons/' ) . '<br />' . __( 'Only works with <code>Multicurrency on per Product Basis</code> option disabled.', 'woocommerce-jetpack' ),
215
+ 'id' => 'wcj_multicurrency_compatibility_product_addons',
216
+ 'default' => 'no',
217
+ 'type' => 'checkbox',
218
+ ),
219
  array(
220
  'type' => 'sectionend',
221
  'id' => 'wcj_multicurrency_compatibility',
includes/settings/wcj-settings-offer-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Offer Price
4
  *
5
- * @version 4.4.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  */
@@ -333,11 +333,11 @@ return array(
333
  ),
334
  array(
335
  'title' => __( 'Email Template', 'woocommerce-jetpack' ),
336
- 'desc' => wcj_message_replaced_values( array( '%product_title%', '%offered_price%', '%customer_name%', '%customer_email%', '%customer_message%', '%user_ip%', '%user_agent%' ) ),
337
  'id' => 'wcj_offer_price_email_template',
338
  'type' => 'custom_textarea',
339
  'default' =>
340
- sprintf( __( 'Product: %s', 'woocommerce-jetpack' ), '%product_title%' ) . '<br>' . PHP_EOL .
341
  sprintf( __( 'Offered price: %s', 'woocommerce-jetpack' ), '%offered_price%' ) . '<br>' . PHP_EOL .
342
  sprintf( __( 'From: %s %s', 'woocommerce-jetpack' ), '%customer_name%', '%customer_email%' ) . '<br>' . PHP_EOL .
343
  sprintf( __( 'Message: %s', 'woocommerce-jetpack' ), '%customer_message%' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Offer Price
4
  *
5
+ * @version 5.1.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  */
333
  ),
334
  array(
335
  'title' => __( 'Email Template', 'woocommerce-jetpack' ),
336
+ 'desc' => wcj_message_replaced_values( array( '%product_title%', '%product_edit_link%', '%offered_price%', '%customer_name%', '%customer_email%', '%customer_message%', '%user_ip%', '%user_agent%' ) ),
337
  'id' => 'wcj_offer_price_email_template',
338
  'type' => 'custom_textarea',
339
  'default' =>
340
+ sprintf( __( 'Product: %s', 'woocommerce-jetpack' ), '<a href="%product_edit_link%">%product_title%</a>' ) . '<br>' . PHP_EOL .
341
  sprintf( __( 'Offered price: %s', 'woocommerce-jetpack' ), '%offered_price%' ) . '<br>' . PHP_EOL .
342
  sprintf( __( 'From: %s %s', 'woocommerce-jetpack' ), '%customer_name%', '%customer_email%' ) . '<br>' . PHP_EOL .
343
  sprintf( __( 'Message: %s', 'woocommerce-jetpack' ), '%customer_message%' ),
includes/settings/wcj-settings-order-min-amount.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Order Minimum Amount
4
  *
5
- * @version 4.9.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  */
@@ -105,6 +105,25 @@ $settings = array(
105
  'type' => 'sectionend',
106
  'id' => 'wcj_order_minimum_amount_options',
107
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  array(
109
  'title' => __( 'Order Minimum Amount by User Role', 'woocommerce-jetpack' ),
110
  'type' => 'title',
2
  /**
3
  * Booster for WooCommerce - Settings - Order Minimum Amount
4
  *
5
+ * @version 5.1.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  */
105
  'type' => 'sectionend',
106
  'id' => 'wcj_order_minimum_amount_options',
107
  ),
108
+ array(
109
+ 'title' => __( 'Compatibility', 'woocommerce-jetpack' ),
110
+ 'type' => 'title',
111
+ 'desc' => __( 'Compatibility with other modules or plugins.', 'woocommerce-jetpack' ),
112
+ 'id' => 'wcj_order_minimum_compatibility',
113
+ ),
114
+ array(
115
+ 'title' => __( 'WooCommerce Multilingual', 'woocommerce-jetpack' ),
116
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
117
+ 'desc' => empty( $message = apply_filters( 'booster_message', '', 'desc' ) ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
118
+ 'desc_tip' => sprintf( __( 'Adds compatibility with <a href="%s" target="_blank">WooCommerce Multilingual</a> plugin.', 'woocommerce-jetpack' ), 'http://wpml.org/documentation/related-projects/woocommerce-multilingual/' ),
119
+ 'id' => 'wcj_order_minimum_compatibility_wpml_multilingual',
120
+ 'default' => 'no',
121
+ 'type' => 'checkbox',
122
+ ),
123
+ array(
124
+ 'type' => 'sectionend',
125
+ 'id' => 'wcj_order_minimum_compatibility',
126
+ ),
127
  array(
128
  'title' => __( 'Order Minimum Amount by User Role', 'woocommerce-jetpack' ),
129
  'type' => 'title',
includes/settings/wcj-settings-order-numbers.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Order Numbers
4
  *
5
- * @version 3.5.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo (maybe) add `wcj_order_number_counter_previous_order_date` as `hidden` field (for proper module reset)
@@ -136,6 +136,24 @@ return array(
136
  'type' => 'sectionend',
137
  'id' => 'wcj_order_numbers_options',
138
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  array(
140
  'title' => __( 'Orders Renumerate Tool Options', 'woocommerce-jetpack' ),
141
  'type' => 'title',
2
  /**
3
  * Booster for WooCommerce - Settings - Order Numbers
4
  *
5
+ * @version 5.1.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo (maybe) add `wcj_order_number_counter_previous_order_date` as `hidden` field (for proper module reset)
136
  'type' => 'sectionend',
137
  'id' => 'wcj_order_numbers_options',
138
  ),
139
+ array(
140
+ 'title' => __( 'Compatibility', 'woocommerce-jetpack' ),
141
+ 'type' => 'title',
142
+ 'id' => 'wcj_order_numbers_compatibility',
143
+ ),
144
+ array(
145
+ 'title' => __( 'WPNotif', 'woocommerce-jetpack' ),
146
+ 'desc' => empty( $message = apply_filters( 'booster_message', '', 'desc' ) ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
147
+ 'desc_tip' => sprintf( __( 'Adds compatibility with <a href="%s" target="_blank">WPNotif: WordPress SMS & WhatsApp Notifications</a> plugin fixing the <code>{{wc-tracking-link}}</code> variable.', 'woocommerce-jetpack' ), 'https://wpnotif.unitedover.com/' ),
148
+ 'id' => 'wcj_order_numbers_compatibility_wpnotif',
149
+ 'default' => 'no',
150
+ 'type' => 'checkbox',
151
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
152
+ ),
153
+ array(
154
+ 'type' => 'sectionend',
155
+ 'id' => 'wcj_order_numbers_compatibility',
156
+ ),
157
  array(
158
  'title' => __( 'Orders Renumerate Tool Options', 'woocommerce-jetpack' ),
159
  'type' => 'title',
includes/settings/wcj-settings-price-by-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Prices and Currencies by Country
4
  *
5
- * @version 4.9.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  */
@@ -128,15 +128,6 @@ $settings = array(
128
  'class' => 'chosen_select',
129
  'options' => wcj_get_user_roles_options(),
130
  ),
131
- array(
132
- 'title' => __( 'Price Filter Widget and Sorting by Price Support', 'woocommerce-jetpack' ),
133
- 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
134
- 'desc_tip' => '<a href="' . add_query_arg( 'recalculate_price_filter_products_prices', '1', remove_query_arg( array( 'wcj_generate_country_groups' ) ) ) . '">' .
135
- __( 'Recalculate price filter widget and sorting by price product prices', 'woocommerce-jetpack' ) . '</a>',
136
- 'id' => 'wcj_price_by_country_price_filter_widget_support_enabled',
137
- 'default' => 'no',
138
- 'type' => 'checkbox',
139
- ),
140
  array(
141
  'title' => __( 'Add Countries Flags Images to Select Drop-Down Box', 'woocommerce-jetpack' ),
142
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
@@ -161,10 +152,29 @@ $settings = array(
161
  'type' => 'title',
162
  'id' => 'wcj_price_by_country_compatibility',
163
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  array(
165
  'title' => __( 'WooCommerce Coupons', 'woocommerce-jetpack' ),
166
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
167
- 'desc_tip' => __( 'When a fixed coupon is used its value changes according to the current currency', 'woocommerce-jetpack' ),
168
  'id' => 'wcj_price_by_country_compatibility_wc_coupons',
169
  'default' => 'no',
170
  'type' => 'checkbox',
@@ -173,7 +183,7 @@ $settings = array(
173
  'title' => __( 'Woo Discount Rules', 'woocommerce-jetpack' ),
174
  'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
175
  'desc' => empty( $message = apply_filters( 'booster_message', '', 'desc' ) ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
176
- 'desc_tip' => sprintf( __( 'Adds compatibility with <a href="%s" target="_blank">Woo Discount Rules</a> plugin.', 'woocommerce-jetpack' ), 'https://www.flycart.org/products/wordpress/woocommerce-discount-rules' ).'<br />'. sprintf( __( 'If it doesn\'t work properly try to enable <a href="%s">redirect to the cart page after successful addition</a> option', 'woocommerce-jetpack' ), admin_url( 'admin.php?page=wc-settings&tab=products' ) ),
177
  'id' => 'wcj_price_by_country_compatibility_woo_discount_rules',
178
  'default' => 'no',
179
  'type' => 'checkbox',
2
  /**
3
  * Booster for WooCommerce - Settings - Prices and Currencies by Country
4
  *
5
+ * @version 5.1.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  */
128
  'class' => 'chosen_select',
129
  'options' => wcj_get_user_roles_options(),
130
  ),
 
 
 
 
 
 
 
 
 
131
  array(
132
  'title' => __( 'Add Countries Flags Images to Select Drop-Down Box', 'woocommerce-jetpack' ),
133
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
152
  'type' => 'title',
153
  'id' => 'wcj_price_by_country_compatibility',
154
  ),
155
+ array(
156
+ 'title' => __( 'Price Filter Widget and Sorting by Price Support', 'woocommerce-jetpack' ),
157
+ 'desc' => empty( $message = apply_filters( 'booster_message', '', 'desc' ) ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
158
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
159
+ 'desc_tip' => '<a href="' . add_query_arg( 'recalculate_price_filter_products_prices', '1', remove_query_arg( array( 'wcj_generate_country_groups' ) ) ) . '">' .
160
+ __( 'Recalculate price filter widget and sorting by price product prices.', 'woocommerce-jetpack' ) . '</a>',
161
+ 'id' => 'wcj_price_by_country_price_filter_widget_support_enabled',
162
+ 'default' => 'no',
163
+ 'type' => 'checkbox',
164
+ ),
165
+ array(
166
+ 'title' => __( 'Free Shipping', 'woocommerce-jetpack' ),
167
+ 'desc' => empty( $message = apply_filters( 'booster_message', '', 'desc' ) ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
168
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
169
+ 'desc_tip' => __( 'Converts minimum amount from WooCommerce Free Shipping native method.', 'woocommerce-jetpack' ),
170
+ 'id' => 'wcj_price_by_country_compatibility_free_shipping',
171
+ 'default' => 'no',
172
+ 'type' => 'checkbox',
173
+ ),
174
  array(
175
  'title' => __( 'WooCommerce Coupons', 'woocommerce-jetpack' ),
176
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
177
+ 'desc_tip' => __( 'When a fixed coupon is used its value changes according to the current currency.', 'woocommerce-jetpack' ),
178
  'id' => 'wcj_price_by_country_compatibility_wc_coupons',
179
  'default' => 'no',
180
  'type' => 'checkbox',
183
  'title' => __( 'Woo Discount Rules', 'woocommerce-jetpack' ),
184
  'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
185
  'desc' => empty( $message = apply_filters( 'booster_message', '', 'desc' ) ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
186
+ 'desc_tip' => sprintf( __( 'Adds compatibility with <a href="%s" target="_blank">Woo Discount Rules</a> plugin.', 'woocommerce-jetpack' ), 'https://www.flycart.org/products/wordpress/woocommerce-discount-rules' ).'<br />'. sprintf( __( 'If it doesn\'t work properly try to enable <a href="%s">redirect to the cart page after successful addition</a> option.', 'woocommerce-jetpack' ), admin_url( 'admin.php?page=wc-settings&tab=products' ) ),
187
  'id' => 'wcj_price_by_country_compatibility_woo_discount_rules',
188
  'default' => 'no',
189
  'type' => 'checkbox',
includes/settings/wcj-settings-product-msrp.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product MSRP
4
  *
5
- * @version 4.9.0
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  */
@@ -138,6 +138,13 @@ $settings = array_merge( $settings, array(
138
  'default' => 'no',
139
  'type' => 'checkbox',
140
  ),
 
 
 
 
 
 
 
141
  array(
142
  'type' => 'sectionend',
143
  'id' => 'wcj_product_msrp_other_options',
2
  /**
3
  * Booster for WooCommerce - Settings - Product MSRP
4
  *
5
+ * @version 5.1.0
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  */
138
  'default' => 'no',
139
  'type' => 'checkbox',
140
  ),
141
+ array(
142
+ 'title' => __( 'Archive Detection Method', 'woocommerce-jetpack' ),
143
+ 'desc_tip' => __( 'Template strings used to detect the loop.', 'woocommerce-jetpack' ).'<br />'.__( 'Use 1 string per line.', 'woocommerce-jetpack' ),
144
+ 'id' => 'wcj_product_msrp_archive_detection_method',
145
+ 'default' => 'loop',
146
+ 'type' => 'textarea',
147
+ ),
148
  array(
149
  'type' => 'sectionend',
150
  'id' => 'wcj_product_msrp_other_options',
includes/settings/wcj-settings-product-price-by-formula.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Price by Formula
4
  *
5
- * @version 4.1.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  */
@@ -103,6 +103,14 @@ $settings = array_merge( $settings, array(
103
  'default' => 0,
104
  'type' => 'number',
105
  ),
 
 
 
 
 
 
 
 
106
  array(
107
  'type' => 'sectionend',
108
  'id' => 'wcj_product_price_by_formula_advanced_options',
2
  /**
3
  * Booster for WooCommerce - Settings - Product Price by Formula
4
  *
5
+ * @version 5.1.1
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  */
103
  'default' => 0,
104
  'type' => 'number',
105
  ),
106
+ array(
107
+ 'title' => __( 'Save Calculated Products Prices', 'woocommerce-jetpack' ),
108
+ 'desc_tip' => __( 'This may help if you are experiencing compatibility issues with other plugins.', 'woocommerce-jetpack' ),
109
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
110
+ 'id' => 'wcj_product_price_by_formula_save_prices',
111
+ 'default' => 'no',
112
+ 'type' => 'checkbox',
113
+ ),
114
  array(
115
  'type' => 'sectionend',
116
  'id' => 'wcj_product_price_by_formula_advanced_options',
includes/settings/wcj-settings-wpml.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - WPML
4
  *
5
- * @version 4.5.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  */
@@ -38,6 +38,15 @@ $settings = array(
38
  'id' => 'wcj_wpml_switch_booster_currency',
39
  'default' => 'no',
40
  ),
 
 
 
 
 
 
 
 
 
41
  array(
42
  'type' => 'sectionend',
43
  'id' => 'wcj_wpml_general_options',
2
  /**
3
  * Booster for WooCommerce - Settings - WPML
4
  *
5
+ * @version 5.1.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  */
38
  'id' => 'wcj_wpml_switch_booster_currency',
39
  'default' => 'no',
40
  ),
41
+ array(
42
+ 'title' => __( 'Synchronize Metas', 'woocommerce-jetpack' ),
43
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
44
+ 'desc' => empty( $message = apply_filters( 'booster_message', '', 'desc' ) ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
45
+ 'desc_tip' => __( "Try to automatically synchronize some Booster metas between products on different languages.", 'woocommerce-jetpack' ),
46
+ 'type' => 'checkbox',
47
+ 'id' => 'wcj_wpml_sync_metas',
48
+ 'default' => 'no',
49
+ ),
50
  array(
51
  'type' => 'sectionend',
52
  'id' => 'wcj_wpml_general_options',
includes/shortcodes/class-wcj-shortcodes-orders.php CHANGED
@@ -98,7 +98,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
98
  /**
99
  * add_extra_atts.
100
  *
101
- * @version 4.6.0
102
  */
103
  function add_extra_atts( $atts ) {
104
  $modified_atts = array_merge( array(
@@ -108,6 +108,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
108
  'date_format' => get_option( 'date_format' ),
109
  'time_format' => get_option( 'time_format' ),
110
  'hide_if_zero' => 'no',
 
111
  'field_id' => '',
112
  'name' => '',
113
  'round_by_line' => 'no',
@@ -201,7 +202,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
201
  /**
202
  * wcj_price_shortcode.
203
  *
204
- * @version 3.3.0
205
  */
206
  private function wcj_price_shortcode( $raw_price, $atts ) {
207
  if ( 'yes' === $atts['hide_if_zero'] && 0 == $raw_price ) {
@@ -209,13 +210,13 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
209
  } else {
210
  $order_currency = wcj_get_order_currency( $this->the_order );
211
  if ( '' === $atts['currency'] ) {
212
- return wcj_price( $raw_price, $order_currency, $atts['hide_currency'] );
213
  } else {
214
  $convert_to_currency = $atts['currency'];
215
  if ( '%shop_currency%' === $convert_to_currency ) {
216
  $convert_to_currency = get_option( 'woocommerce_currency' );
217
  }
218
- return wcj_price( $raw_price * wcj_get_saved_exchange_rate( $order_currency, $convert_to_currency ), $convert_to_currency, $atts['hide_currency'] );
219
  }
220
  }
221
  }
98
  /**
99
  * add_extra_atts.
100
  *
101
+ * @version 5.1.0
102
  */
103
  function add_extra_atts( $atts ) {
104
  $modified_atts = array_merge( array(
108
  'date_format' => get_option( 'date_format' ),
109
  'time_format' => get_option( 'time_format' ),
110
  'hide_if_zero' => 'no',
111
+ 'add_html_on_price' => true,
112
  'field_id' => '',
113
  'name' => '',
114
  'round_by_line' => 'no',
202
  /**
203
  * wcj_price_shortcode.
204
  *
205
+ * @version 5.1.0
206
  */
207
  private function wcj_price_shortcode( $raw_price, $atts ) {
208
  if ( 'yes' === $atts['hide_if_zero'] && 0 == $raw_price ) {
210
  } else {
211
  $order_currency = wcj_get_order_currency( $this->the_order );
212
  if ( '' === $atts['currency'] ) {
213
+ return wcj_price( $raw_price, $order_currency, $atts['hide_currency'], $atts );
214
  } else {
215
  $convert_to_currency = $atts['currency'];
216
  if ( '%shop_currency%' === $convert_to_currency ) {
217
  $convert_to_currency = get_option( 'woocommerce_currency' );
218
  }
219
+ return wcj_price( $raw_price * wcj_get_saved_exchange_rate( $order_currency, $convert_to_currency ), $convert_to_currency, $atts['hide_currency'], $atts );
220
  }
221
  }
222
  }
includes/widgets/class-wcj-widget-country-switcher.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Widget - Country Switcher
4
  *
5
- * @version 3.1.0
6
  * @since 2.4.8
7
  * @author Pluggabl LLC.
8
  */
@@ -33,7 +33,7 @@ class WCJ_Widget_Country_Switcher extends WCJ_Widget {
33
  /**
34
  * get_content.
35
  *
36
- * @version 3.1.0
37
  * @since 3.1.0
38
  */
39
  function get_content( $instance ) {
@@ -45,14 +45,16 @@ class WCJ_Widget_Country_Switcher extends WCJ_Widget {
45
  if ( ! isset( $instance['replace_with_currency'] ) ) {
46
  $instance['replace_with_currency'] = 'no';
47
  }
48
- return do_shortcode( '[wcj_country_select_drop_down_list countries="' . $instance['countries'] . '" replace_with_currency="' . $instance['replace_with_currency'] . '"]' );
 
 
49
  }
50
  }
51
 
52
  /**
53
  * get_options.
54
  *
55
- * @version 3.1.0
56
  * @since 3.1.0
57
  * @todo (maybe) `switcher_type`
58
  */
@@ -83,6 +85,18 @@ class WCJ_Widget_Country_Switcher extends WCJ_Widget {
83
  'yes' => __( 'Yes', 'woocommerce-jetpack' ),
84
  ),
85
  ),
 
 
 
 
 
 
 
 
 
 
 
 
86
  );
87
  }
88
 
2
  /**
3
  * Booster for WooCommerce - Widget - Country Switcher
4
  *
5
+ * @version 5.1.0
6
  * @since 2.4.8
7
  * @author Pluggabl LLC.
8
  */
33
  /**
34
  * get_content.
35
  *
36
+ * @version 5.1.0
37
  * @since 3.1.0
38
  */
39
  function get_content( $instance ) {
45
  if ( ! isset( $instance['replace_with_currency'] ) ) {
46
  $instance['replace_with_currency'] = 'no';
47
  }
48
+ return do_shortcode( '[wcj_country_select_drop_down_list' .
49
+ ' form_method="' . ( ! empty( $instance['form_method'] ) ? $instance['form_method'] : 'post' ) . '"' .
50
+ ' countries="' . $instance['countries'] . '" replace_with_currency="' . $instance['replace_with_currency'] . '"]' );
51
  }
52
  }
53
 
54
  /**
55
  * get_options.
56
  *
57
+ * @version 5.1.0
58
  * @since 3.1.0
59
  * @todo (maybe) `switcher_type`
60
  */
85
  'yes' => __( 'Yes', 'woocommerce-jetpack' ),
86
  ),
87
  ),
88
+ array(
89
+ 'title' => __( 'Form Method', 'woocommerce-jetpack' ),
90
+ 'desc' => '* ' . __( 'HTML form method for "Drop down" and "Radio list" types.', 'woocommerce-jetpack' ),
91
+ 'id' => 'form_method',
92
+ 'default' => 'post',
93
+ 'type' => 'select',
94
+ 'options' => array(
95
+ 'post' => __( 'Post', 'woocommerce-jetpack' ),
96
+ 'get' => __( 'Get', 'woocommerce-jetpack' ),
97
+ ),
98
+ 'class' => 'widefat',
99
+ ),
100
  );
101
  }
102
 
langs/woocommerce-jetpack.pot CHANGED
@@ -43,9 +43,9 @@ msgstr ""
43
  #: includes/class-wcj-payment-gateways.php:91
44
  #: includes/class-wcj-track-users.php:163
45
  #: includes/class-wcj-track-users.php:251
46
- #: includes/classes/class-wcj-module.php:532
47
- #: includes/classes/class-wcj-module.php:732
48
- #: includes/settings/wcj-settings-price-by-country.php:204
49
  msgid "Booster"
50
  msgstr ""
51
 
@@ -98,7 +98,7 @@ msgstr ""
98
  #: includes/admin/class-wc-settings-jetpack.php:217
99
  #: includes/class-wcj-admin-bar.php:384
100
  #: includes/settings/wcj-settings-emails-verification.php:146
101
- #: includes/settings/wcj-settings-price-by-country.php:203
102
  msgid "WooCommerce"
103
  msgstr ""
104
 
@@ -187,7 +187,7 @@ msgstr ""
187
 
188
  #: includes/admin/class-wc-settings-jetpack.php:416
189
  #: includes/class-wcj-admin-bar.php:172
190
- #: includes/classes/class-wcj-module.php:872
191
  msgid "Documentation"
192
  msgstr ""
193
 
@@ -295,7 +295,7 @@ msgid "Doesn't apply rounding, offset etc."
295
  msgstr ""
296
 
297
  #: includes/admin/class-wcj-settings-custom-fields.php:260
298
- #: includes/settings/wcj-settings-wpml.php:88
299
  msgid "To use tools, module must be enabled."
300
  msgstr ""
301
 
@@ -515,8 +515,8 @@ msgstr ""
515
 
516
  #: includes/class-wcj-admin-bar.php:245 includes/class-wcj-admin-bar.php:288
517
  #: includes/class-wcj-admin-bar.php:632
518
- #: includes/classes/class-wcj-module.php:705
519
- #: includes/settings/wcj-settings-wpml.php:82
520
  msgid "Tools"
521
  msgstr ""
522
 
@@ -854,14 +854,14 @@ msgid "All Products and All Attributes."
854
  msgstr ""
855
 
856
  #: includes/class-wcj-admin-tools.php:172
857
- #: includes/settings/wcj-settings-export.php:157
858
- #: includes/settings/wcj-settings-export.php:236
859
  msgid "Product Meta"
860
  msgstr ""
861
 
862
  #: includes/class-wcj-admin-tools.php:189
863
- #: includes/settings/wcj-settings-export.php:86
864
- #: includes/settings/wcj-settings-export.php:154
865
  msgid "Order Meta"
866
  msgstr ""
867
 
@@ -1438,7 +1438,7 @@ msgid ""
1438
  msgstr ""
1439
 
1440
  #: includes/class-wcj-custom-php.php:32
1441
- #: includes/settings/wcj-settings-multicurrency.php:222
1442
  #: includes/settings/wcj-settings-offer-price.php:84
1443
  #, php-format
1444
  msgid "E.g.: %s"
@@ -1762,44 +1762,44 @@ msgstr ""
1762
  msgid "Export Products."
1763
  msgstr ""
1764
 
1765
- #: includes/class-wcj-export-import.php:192
1766
- #: includes/class-wcj-export-import.php:198
1767
  msgid "Filter by Billing Country"
1768
  msgstr ""
1769
 
1770
- #: includes/class-wcj-export-import.php:193
1771
  msgid "Filter by Product Title"
1772
  msgstr ""
1773
 
1774
- #: includes/class-wcj-export-import.php:212
1775
  #: includes/reports/wcj-class-reports-sales-daily.php:189
1776
  #: includes/reports/wcj-class-reports-sales-gateways.php:137
1777
  #: includes/settings/wcj-settings-orders.php:45
1778
  msgid "Filter"
1779
  msgstr ""
1780
 
1781
- #: includes/class-wcj-export-import.php:232
1782
  #: includes/class-wcj-track-users.php:36
1783
  msgid "All time"
1784
  msgstr ""
1785
 
1786
- #: includes/class-wcj-export-import.php:246
1787
  msgid "Custom:"
1788
  msgstr ""
1789
 
1790
- #: includes/class-wcj-export-import.php:251
1791
  msgid "Go"
1792
  msgstr ""
1793
 
1794
- #: includes/class-wcj-export-import.php:271
1795
  msgid "Download CSV"
1796
  msgstr ""
1797
 
1798
- #: includes/class-wcj-export-import.php:274
1799
  msgid "Download XML"
1800
  msgstr ""
1801
 
1802
- #: includes/class-wcj-export-import.php:276
1803
  msgid "Filter by All Fields"
1804
  msgstr ""
1805
 
@@ -1872,7 +1872,7 @@ msgstr ""
1872
  #: includes/class-wcj-sku.php:667
1873
  #: includes/reports/wcj-class-reports-sales.php:196
1874
  #: includes/settings/wcj-settings-cross-sells.php:43
1875
- #: includes/settings/wcj-settings-order-numbers.php:150
1876
  #: includes/settings/wcj-settings-product-by-user.php:161
1877
  #: includes/settings/wcj-settings-products-xml.php:221
1878
  #: includes/settings/wcj-settings-related-products.php:30
@@ -1929,7 +1929,7 @@ msgstr ""
1929
  #: includes/settings/wcj-settings-email-options.php:20
1930
  #: includes/settings/wcj-settings-eu-vat-number.php:181
1931
  #: includes/settings/wcj-settings-eu-vat-number.php:217
1932
- #: includes/settings/wcj-settings-export.php:27
1933
  #: includes/settings/wcj-settings-order-custom-statuses.php:29
1934
  #: includes/settings/wcj-settings-order-custom-statuses.php:37
1935
  #: includes/settings/wcj-settings-order-custom-statuses.php:80
@@ -2156,16 +2156,16 @@ msgid ""
2156
  "and <a href=\"%3$s\">edit your password and account details</a>."
2157
  msgstr ""
2158
 
2159
- #: includes/class-wcj-my-account.php:418
2160
  msgid "User role"
2161
  msgstr ""
2162
 
2163
- #: includes/class-wcj-my-account.php:498
2164
  #: includes/class-wcj-product-bulk-meta-editor.php:279
2165
  #: includes/class-wcj-product-by-user.php:206
2166
  #: includes/class-wcj-purchase-data.php:94
2167
  #: includes/class-wcj-track-users.php:334
2168
- #: includes/classes/class-wcj-module.php:841
2169
  #: includes/functions/wcj-functions-general.php:189
2170
  #: includes/functions/wcj-functions-html.php:117
2171
  #: includes/reports/wcj-class-reports-monthly-sales.php:351
@@ -2191,7 +2191,7 @@ msgstr ""
2191
  #: includes/class-wcj-offer-price.php:164
2192
  #: includes/functions/wcj-functions-reports.php:21
2193
  #: includes/settings/wcj-settings-cross-sells.php:44
2194
- #: includes/settings/wcj-settings-order-numbers.php:151
2195
  #: includes/settings/wcj-settings-products-xml.php:220
2196
  #: includes/settings/wcj-settings-related-products.php:23
2197
  #: includes/settings/wcj-settings-upsells.php:44
@@ -2303,36 +2303,36 @@ msgstr ""
2303
  msgid "Make an offer"
2304
  msgstr ""
2305
 
2306
- #: includes/class-wcj-offer-price.php:522
2307
  #: includes/settings/wcj-settings-offer-price.php:340
2308
  #, php-format
2309
  msgid "Product: %s"
2310
  msgstr ""
2311
 
2312
- #: includes/class-wcj-offer-price.php:523
2313
  #: includes/settings/wcj-settings-offer-price.php:341
2314
  #, php-format
2315
  msgid "Offered price: %s"
2316
  msgstr ""
2317
 
2318
- #: includes/class-wcj-offer-price.php:524
2319
  #: includes/settings/wcj-settings-offer-price.php:342
2320
  #, php-format
2321
  msgid "From: %s %s"
2322
  msgstr ""
2323
 
2324
- #: includes/class-wcj-offer-price.php:525
2325
  #: includes/settings/wcj-settings-offer-price.php:343
2326
  #, php-format
2327
  msgid "Message: %s"
2328
  msgstr ""
2329
 
2330
- #: includes/class-wcj-offer-price.php:538
2331
  #: includes/settings/wcj-settings-offer-price.php:331
2332
  msgid "Price Offer"
2333
  msgstr ""
2334
 
2335
- #: includes/class-wcj-offer-price.php:548
2336
  #: includes/settings/wcj-settings-offer-price.php:262
2337
  msgid "Your price offer has been sent."
2338
  msgstr ""
@@ -2479,23 +2479,23 @@ msgstr ""
2479
  msgid "Tool renumerates all orders."
2480
  msgstr ""
2481
 
2482
- #: includes/class-wcj-order-numbers.php:244
2483
  msgid "Orders successfully renumerated!"
2484
  msgstr ""
2485
 
2486
- #: includes/class-wcj-order-numbers.php:247
2487
  #, php-format
2488
  msgid "Sequential number generation is enabled. Next order number will be %s."
2489
  msgstr ""
2490
 
2491
- #: includes/class-wcj-order-numbers.php:256
2492
  #, php-format
2493
  msgid ""
2494
  "Press the button below to renumerate all existing orders starting from order "
2495
  "counter settings in <a href=\"%s\">Order Numbers</a> module."
2496
  msgstr ""
2497
 
2498
- #: includes/class-wcj-order-numbers.php:263
2499
  msgid "Renumerate orders"
2500
  msgstr ""
2501
 
@@ -2764,15 +2764,15 @@ msgstr ""
2764
  msgid "You are not allowed to view the invoice."
2765
  msgstr ""
2766
 
2767
- #: includes/class-wcj-price-by-country.php:30
2768
  msgid "Prices and Currencies by Country"
2769
  msgstr ""
2770
 
2771
- #: includes/class-wcj-price-by-country.php:31
2772
  msgid "Change product price and currency automatically by customer's country."
2773
  msgstr ""
2774
 
2775
- #: includes/class-wcj-price-by-country.php:131
2776
  msgid "Price filter widget product prices recalculated."
2777
  msgstr ""
2778
 
@@ -2850,8 +2850,8 @@ msgstr ""
2850
  #: includes/class-wcj-product-info.php:235
2851
  #: includes/class-wcj-shipping-by-products.php:195
2852
  #: includes/class-wcj-shipping-options.php:121
2853
- #: includes/classes/class-wcj-module.php:151
2854
- #: includes/classes/class-wcj-module.php:172
2855
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:68
2856
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:73
2857
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:19
@@ -2911,6 +2911,7 @@ msgstr ""
2911
  #: includes/settings/wcj-settings-emails-verification.php:36
2912
  #: includes/settings/wcj-settings-emails-verification.php:43
2913
  #: includes/settings/wcj-settings-eu-vat-number.php:264
 
2914
  #: includes/settings/wcj-settings-general.php:21
2915
  #: includes/settings/wcj-settings-general.php:73
2916
  #: includes/settings/wcj-settings-general.php:146
@@ -2931,7 +2932,6 @@ msgstr ""
2931
  #: includes/settings/wcj-settings-multicurrency-base-price.php:102
2932
  #: includes/settings/wcj-settings-multicurrency.php:39
2933
  #: includes/settings/wcj-settings-multicurrency.php:103
2934
- #: includes/settings/wcj-settings-multicurrency.php:121
2935
  #: includes/settings/wcj-settings-multicurrency.php:129
2936
  #: includes/settings/wcj-settings-multicurrency.php:138
2937
  #: includes/settings/wcj-settings-multicurrency.php:146
@@ -2942,8 +2942,9 @@ msgstr ""
2942
  #: includes/settings/wcj-settings-multicurrency.php:186
2943
  #: includes/settings/wcj-settings-multicurrency.php:195
2944
  #: includes/settings/wcj-settings-multicurrency.php:204
2945
- #: includes/settings/wcj-settings-multicurrency.php:237
2946
  #: includes/settings/wcj-settings-multicurrency.php:246
 
2947
  #: includes/settings/wcj-settings-my-account.php:29
2948
  #: includes/settings/wcj-settings-my-account.php:87
2949
  #: includes/settings/wcj-settings-my-account.php:104
@@ -2951,10 +2952,12 @@ msgstr ""
2951
  #: includes/settings/wcj-settings-order-custom-statuses.php:45
2952
  #: includes/settings/wcj-settings-order-custom-statuses.php:55
2953
  #: includes/settings/wcj-settings-order-custom-statuses.php:98
 
2954
  #: includes/settings/wcj-settings-order-numbers.php:97
2955
  #: includes/settings/wcj-settings-order-numbers.php:105
2956
  #: includes/settings/wcj-settings-order-numbers.php:112
2957
  #: includes/settings/wcj-settings-order-numbers.php:119
 
2958
  #: includes/settings/wcj-settings-order-quantities.php:23
2959
  #: includes/settings/wcj-settings-order-quantities.php:42
2960
  #: includes/settings/wcj-settings-order-quantities.php:49
@@ -2985,10 +2988,11 @@ msgstr ""
2985
  #: includes/settings/wcj-settings-price-by-country.php:90
2986
  #: includes/settings/wcj-settings-price-by-country.php:106
2987
  #: includes/settings/wcj-settings-price-by-country.php:133
2988
- #: includes/settings/wcj-settings-price-by-country.php:142
2989
- #: includes/settings/wcj-settings-price-by-country.php:166
2990
- #: includes/settings/wcj-settings-price-by-country.php:175
2991
- #: includes/settings/wcj-settings-price-by-country.php:221
 
2992
  #: includes/settings/wcj-settings-price-by-user-role.php:19
2993
  #: includes/settings/wcj-settings-price-by-user-role.php:46
2994
  #: includes/settings/wcj-settings-price-by-user-role.php:93
@@ -3040,6 +3044,7 @@ msgstr ""
3040
  #: includes/settings/wcj-settings-product-open-pricing.php:109
3041
  #: includes/settings/wcj-settings-product-open-pricing.php:140
3042
  #: includes/settings/wcj-settings-product-price-by-formula.php:30
 
3043
  #: includes/settings/wcj-settings-product-tabs.php:43
3044
  #: includes/settings/wcj-settings-product-tabs.php:232
3045
  #: includes/settings/wcj-settings-product-tabs.php:240
@@ -3088,7 +3093,8 @@ msgstr ""
3088
  #: includes/settings/wcj-settings-wholesale-price.php:63
3089
  #: includes/settings/wcj-settings-wpml.php:28
3090
  #: includes/settings/wcj-settings-wpml.php:35
3091
- #: includes/settings/wcj-settings-wpml.php:53
 
3092
  msgid "Enable"
3093
  msgstr ""
3094
 
@@ -3328,9 +3334,9 @@ msgstr ""
3328
  #: includes/settings/wcj-settings-admin-orders-list.php:71
3329
  #: includes/settings/wcj-settings-admin-products-list.php:56
3330
  #: includes/settings/wcj-settings-checkout-fees.php:76
3331
- #: includes/settings/wcj-settings-export.php:91
3332
- #: includes/settings/wcj-settings-export.php:162
3333
- #: includes/settings/wcj-settings-export.php:241
3334
  #: includes/settings/wcj-settings-global-discount.php:74
3335
  msgid "Value"
3336
  msgstr ""
@@ -3488,7 +3494,7 @@ msgid ""
3488
  msgstr ""
3489
 
3490
  #: includes/class-wcj-product-by-country.php:30
3491
- #: includes/widgets/class-wcj-widget-country-switcher.php:69
3492
  #: includes/widgets/class-wcj-widget-selector.php:64
3493
  msgid "Countries"
3494
  msgstr ""
@@ -3680,9 +3686,9 @@ msgstr ""
3680
  #: includes/settings/wcj-settings-admin-orders-list.php:172
3681
  #: includes/settings/wcj-settings-checkout-fees.php:60
3682
  #: includes/settings/wcj-settings-cross-sells.php:42
3683
- #: includes/settings/wcj-settings-export.php:75
3684
- #: includes/settings/wcj-settings-export.php:143
3685
- #: includes/settings/wcj-settings-export.php:225
3686
  #: includes/settings/wcj-settings-my-account.php:161
3687
  #: includes/settings/wcj-settings-product-add-to-cart.php:300
3688
  #: includes/settings/wcj-settings-product-addons.php:92
@@ -3698,7 +3704,7 @@ msgstr ""
3698
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:191
3699
  #: includes/shipping/class-wc-shipping-wcj-custom.php:107
3700
  #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:334
3701
- #: includes/widgets/class-wcj-widget-country-switcher.php:62
3702
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:52
3703
  #: includes/widgets/class-wcj-widget-multicurrency.php:69
3704
  #: includes/widgets/class-wcj-widget-selector.php:52
@@ -3912,11 +3918,11 @@ msgid ""
3912
  "count, exclude categories, show/hide empty categories."
3913
  msgstr ""
3914
 
3915
- #: includes/class-wcj-product-msrp.php:32
3916
  msgid "Product MSRP"
3917
  msgstr ""
3918
 
3919
- #: includes/class-wcj-product-msrp.php:33
3920
  msgid ""
3921
  "The <strong>manufacturer's suggested retail price</strong> (<strong>MSRP</"
3922
  "strong>), also known as the <strong>list price</strong>, or the "
@@ -3926,17 +3932,17 @@ msgid ""
3926
  "product."
3927
  msgstr ""
3928
 
3929
- #: includes/class-wcj-product-msrp.php:34
3930
  #, php-format
3931
  msgid "Booster stores MSRP as product meta with %s key."
3932
  msgstr ""
3933
 
3934
- #: includes/class-wcj-product-msrp.php:35
3935
  msgid "Save and display product MSRP in WooCommerce."
3936
  msgstr ""
3937
 
3938
- #: includes/class-wcj-product-msrp.php:108
3939
- #: includes/class-wcj-product-msrp.php:139
3940
  #: includes/settings/meta-box/wcj-settings-meta-box-product-msrp.php:48
3941
  msgid "MSRP"
3942
  msgstr ""
@@ -3989,11 +3995,11 @@ msgstr ""
3989
  msgid "Set formula for automatic product price calculation."
3990
  msgstr ""
3991
 
3992
- #: includes/class-wcj-product-price-by-formula.php:136
3993
  msgid "Error in formula"
3994
  msgstr ""
3995
 
3996
- #: includes/class-wcj-product-price-by-formula.php:228
3997
  msgid ""
3998
  "Booster: Free plugin's version is limited to only one price by formula "
3999
  "product enabled at a time. You will need to get <a href=\"https://booster.io/"
@@ -4001,7 +4007,7 @@ msgid ""
4001
  "by formula products."
4002
  msgstr ""
4003
 
4004
- #: includes/class-wcj-product-price-by-formula.php:262
4005
  msgid "Final Price Preview"
4006
  msgstr ""
4007
 
@@ -4104,7 +4110,7 @@ msgstr ""
4104
  #: includes/settings/wcj-settings-checkout-custom-fields.php:265
4105
  #: includes/settings/wcj-settings-product-addons.php:242
4106
  #: includes/settings/wcj-settings-related-products.php:176
4107
- #: includes/widgets/class-wcj-widget-country-switcher.php:82
4108
  msgid "No"
4109
  msgstr ""
4110
 
@@ -4142,7 +4148,7 @@ msgstr ""
4142
  #: includes/settings/wcj-settings-eu-vat-number.php:154
4143
  #: includes/settings/wcj-settings-product-addons.php:241
4144
  #: includes/settings/wcj-settings-related-products.php:175
4145
- #: includes/widgets/class-wcj-widget-country-switcher.php:83
4146
  msgid "Yes"
4147
  msgstr ""
4148
 
@@ -4555,8 +4561,8 @@ msgid ""
4555
  msgstr ""
4556
 
4557
  #: includes/class-wcj-shipping-by-user-role.php:33
4558
- #: includes/settings/wcj-settings-multicurrency.php:314
4559
- #: includes/settings/wcj-settings-order-min-amount.php:112
4560
  #: includes/settings/wcj-settings-price-by-user-role.php:133
4561
  #, php-format
4562
  msgid ""
@@ -4873,15 +4879,15 @@ msgid ""
4873
  "less)."
4874
  msgstr ""
4875
 
4876
- #: includes/class-wcj-wpml.php:24
4877
  msgid "Booster WPML"
4878
  msgstr ""
4879
 
4880
- #: includes/class-wcj-wpml.php:25
4881
  msgid "Booster for WooCommerce basic WPML support."
4882
  msgstr ""
4883
 
4884
- #: includes/class-wcj-wpml.php:141
4885
  msgid "File wpml-config.xml successfully regenerated!"
4886
  msgstr ""
4887
 
@@ -4899,23 +4905,23 @@ msgstr ""
4899
  msgid "Invisible"
4900
  msgstr ""
4901
 
4902
- #: includes/classes/class-wcj-module.php:150
4903
  msgid "WPML: Get Terms in All Languages"
4904
  msgstr ""
4905
 
4906
- #: includes/classes/class-wcj-module.php:152
4907
  msgid "Get tags and taxonomies in all languages"
4908
  msgstr ""
4909
 
4910
- #: includes/classes/class-wcj-module.php:171
4911
  msgid "WPML: Get Products in All Languages"
4912
  msgstr ""
4913
 
4914
- #: includes/classes/class-wcj-module.php:173
4915
  msgid "Get products in all languages"
4916
  msgstr ""
4917
 
4918
- #: includes/classes/class-wcj-module.php:304
4919
  #, php-format
4920
  msgid ""
4921
  "Booster: Free plugin's version is limited to only one \"%1$s\" product with "
@@ -4924,30 +4930,30 @@ msgid ""
4924
  "\"%1$s\" products."
4925
  msgstr ""
4926
 
4927
- #: includes/classes/class-wcj-module.php:624
4928
  #, php-format
4929
  msgid "Selected: %s."
4930
  msgstr ""
4931
 
4932
- #: includes/classes/class-wcj-module.php:693
4933
  msgid "Back to Module Settings"
4934
  msgstr ""
4935
 
4936
- #: includes/classes/class-wcj-module.php:711
4937
- #: includes/settings/wcj-settings-wpml.php:87
4938
  msgid "Module Tools"
4939
  msgstr ""
4940
 
4941
- #: includes/classes/class-wcj-module.php:784
4942
  #: includes/settings/wcj-settings-checkout-core-fields.php:77
4943
  msgid "enabled"
4944
  msgstr ""
4945
 
4946
- #: includes/classes/class-wcj-module.php:785
4947
  msgid "disabled"
4948
  msgstr ""
4949
 
4950
- #: includes/classes/class-wcj-module.php:793
4951
  #: includes/settings/wcj-settings-product-tabs.php:172
4952
  #: includes/settings/wcj-settings-product-tabs.php:184
4953
  #: includes/settings/wcj-settings-product-tabs.php:196
@@ -4955,27 +4961,27 @@ msgstr ""
4955
  msgid "Deprecated"
4956
  msgstr ""
4957
 
4958
- #: includes/classes/class-wcj-module.php:831
4959
  msgid "Reset Settings"
4960
  msgstr ""
4961
 
4962
- #: includes/classes/class-wcj-module.php:837
4963
  msgid "Reset Module to Default Settings"
4964
  msgstr ""
4965
 
4966
- #: includes/classes/class-wcj-module.php:838
4967
  msgid "Reset Submodule to Default Settings"
4968
  msgstr ""
4969
 
4970
- #: includes/classes/class-wcj-module.php:842
4971
  msgid "Reset settings"
4972
  msgstr ""
4973
 
4974
- #: includes/classes/class-wcj-module.php:876
4975
  msgid "Module Options"
4976
  msgstr ""
4977
 
4978
- #: includes/classes/class-wcj-module.php:883
4979
  msgid "Enable Module"
4980
  msgstr ""
4981
 
@@ -4984,7 +4990,7 @@ msgstr ""
4984
  msgid "Company Name"
4985
  msgstr ""
4986
 
4987
- #: includes/classes/class-wcj-pdf-invoice.php:261
4988
  #: includes/functions/wcj-functions-general.php:145
4989
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:245
4990
  msgid "Unexpected error"
@@ -5543,9 +5549,9 @@ msgstr ""
5543
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:83
5544
  #: includes/settings/wcj-settings-checkout-custom-fields.php:130
5545
  #: includes/settings/wcj-settings-checkout-fees.php:66
5546
- #: includes/settings/wcj-settings-export.php:81
5547
- #: includes/settings/wcj-settings-export.php:149
5548
- #: includes/settings/wcj-settings-export.php:231
5549
  #: includes/settings/wcj-settings-global-discount.php:63
5550
  #: includes/settings/wcj-settings-product-addons.php:80
5551
  #: includes/settings/wcj-settings-purchase-data.php:84
@@ -7216,9 +7222,9 @@ msgstr ""
7216
  #: includes/settings/wcj-settings-admin-products-list.php:43
7217
  #: includes/settings/wcj-settings-checkout-core-fields.php:83
7218
  #: includes/settings/wcj-settings-checkout-files-upload.php:40
7219
- #: includes/settings/wcj-settings-export.php:70
7220
- #: includes/settings/wcj-settings-export.php:138
7221
- #: includes/settings/wcj-settings-export.php:220
7222
  #: includes/settings/wcj-settings-global-discount.php:55
7223
  #: includes/settings/wcj-settings-product-by-user.php:149
7224
  #: includes/settings/wcj-settings-products-xml.php:76
@@ -7655,9 +7661,9 @@ msgstr ""
7655
  #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:36
7656
  #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:62
7657
  #: includes/settings/wcj-settings-multicurrency-base-price.php:63
7658
- #: includes/settings/wcj-settings-multicurrency.php:215
7659
  #: includes/settings/wcj-settings-order-min-amount.php:77
7660
- #: includes/settings/wcj-settings-price-by-country.php:186
7661
  #: includes/settings/wcj-settings-price-by-user-role.php:106
7662
  #: includes/settings/wcj-settings-product-addons.php:230
7663
  msgid "Advanced"
@@ -7894,18 +7900,18 @@ msgstr ""
7894
 
7895
  #: includes/price-by-country/class-wcj-price-by-country-local.php:111
7896
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:67
7897
- #: includes/settings/wcj-settings-price-by-country.php:372
7898
  msgid "Make empty price"
7899
  msgstr ""
7900
 
7901
  #: includes/price-by-country/class-wcj-price-by-country-local.php:215
7902
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:17
7903
  #: includes/settings/wcj-settings-add-to-cart.php:50
7904
- #: includes/settings/wcj-settings-price-by-country.php:266
7905
- #: includes/settings/wcj-settings-price-by-country.php:267
7906
- #: includes/settings/wcj-settings-price-by-country.php:272
7907
- #: includes/settings/wcj-settings-price-by-country.php:320
7908
- #: includes/settings/wcj-settings-price-by-country.php:363
7909
  msgid "Group"
7910
  msgstr ""
7911
 
@@ -10642,9 +10648,9 @@ msgid "Replaced values: %field_id%, %field_label%, %required_html%."
10642
  msgstr ""
10643
 
10644
  #: includes/settings/wcj-settings-checkout-files-upload.php:313
10645
- #: includes/settings/wcj-settings-export.php:68
10646
- #: includes/settings/wcj-settings-export.php:136
10647
- #: includes/settings/wcj-settings-export.php:218
10648
  msgid "Field"
10649
  msgstr ""
10650
 
@@ -10857,7 +10863,7 @@ msgid "No changes (default behaviour)"
10857
  msgstr ""
10858
 
10859
  #: includes/settings/wcj-settings-cross-sells.php:41
10860
- #: includes/settings/wcj-settings-order-numbers.php:153
10861
  #: includes/settings/wcj-settings-related-products.php:22
10862
  #: includes/settings/wcj-settings-upsells.php:41
10863
  msgid "Random"
@@ -10882,14 +10888,14 @@ msgid "Cross-sells Order"
10882
  msgstr ""
10883
 
10884
  #: includes/settings/wcj-settings-cross-sells.php:59
10885
- #: includes/settings/wcj-settings-order-numbers.php:163
10886
  #: includes/settings/wcj-settings-products-xml.php:235
10887
  #: includes/settings/wcj-settings-related-products.php:91
10888
  msgid "Descending"
10889
  msgstr ""
10890
 
10891
  #: includes/settings/wcj-settings-cross-sells.php:60
10892
- #: includes/settings/wcj-settings-order-numbers.php:162
10893
  #: includes/settings/wcj-settings-products-xml.php:236
10894
  #: includes/settings/wcj-settings-related-products.php:90
10895
  msgid "Ascending"
@@ -10989,7 +10995,7 @@ msgstr ""
10989
  #: includes/settings/wcj-settings-multicurrency-base-price.php:22
10990
  #: includes/settings/wcj-settings-multicurrency.php:22
10991
  #: includes/settings/wcj-settings-payment-gateways-currency.php:68
10992
- #: includes/settings/wcj-settings-price-by-country.php:336
10993
  msgid "Exchange Rates Updates"
10994
  msgstr ""
10995
 
@@ -11053,7 +11059,7 @@ msgid "API keys provided by the Exchange Rates Servers"
11053
  msgstr ""
11054
 
11055
  #: includes/settings/wcj-settings-currency-exchange-rates.php:119
11056
- msgid "Free Currency Converter API"
11057
  msgstr ""
11058
 
11059
  #: includes/settings/wcj-settings-currency-exchange-rates.php:120
@@ -11083,7 +11089,7 @@ msgid "Custom Currency"
11083
  msgstr ""
11084
 
11085
  #: includes/settings/wcj-settings-currency-exchange-rates.php:173
11086
- #: includes/settings/wcj-settings-price-by-country.php:331
11087
  msgid "Exchange Rates"
11088
  msgstr ""
11089
 
@@ -11101,8 +11107,8 @@ msgstr ""
11101
  #: includes/settings/wcj-settings-currency-external-products.php:20
11102
  #: includes/settings/wcj-settings-currency-per-product.php:180
11103
  #: includes/settings/wcj-settings-multicurrency-base-price.php:142
11104
- #: includes/settings/wcj-settings-multicurrency.php:287
11105
- #: includes/settings/wcj-settings-price-by-country.php:311
11106
  #: includes/settings/wcj-settings-price-formats.php:59
11107
  msgid "Currency"
11108
  msgstr ""
@@ -11177,7 +11183,7 @@ msgstr ""
11177
  #: includes/settings/wcj-settings-multicurrency-base-price.php:27
11178
  #: includes/settings/wcj-settings-multicurrency.php:28
11179
  #: includes/settings/wcj-settings-payment-gateways-currency.php:73
11180
- #: includes/settings/wcj-settings-price-by-country.php:341
11181
  msgid "Enter Rates Manually"
11182
  msgstr ""
11183
 
@@ -11185,7 +11191,7 @@ msgstr ""
11185
  #: includes/settings/wcj-settings-multicurrency-base-price.php:28
11186
  #: includes/settings/wcj-settings-multicurrency.php:29
11187
  #: includes/settings/wcj-settings-payment-gateways-currency.php:74
11188
- #: includes/settings/wcj-settings-price-by-country.php:342
11189
  msgid "Automatically via Currency Exchange Rates module"
11190
  msgstr ""
11191
 
@@ -11193,7 +11199,7 @@ msgstr ""
11193
  #: includes/settings/wcj-settings-multicurrency-base-price.php:31
11194
  #: includes/settings/wcj-settings-multicurrency.php:32
11195
  #: includes/settings/wcj-settings-payment-gateways-currency.php:77
11196
- #: includes/settings/wcj-settings-price-by-country.php:345
11197
  msgid "Visit"
11198
  msgstr ""
11199
 
@@ -11201,13 +11207,13 @@ msgstr ""
11201
  #: includes/settings/wcj-settings-multicurrency-base-price.php:31
11202
  #: includes/settings/wcj-settings-multicurrency.php:32
11203
  #: includes/settings/wcj-settings-payment-gateways-currency.php:79
11204
- #: includes/settings/wcj-settings-price-by-country.php:345
11205
  msgid "Currency Exchange Rates module"
11206
  msgstr ""
11207
 
11208
  #: includes/settings/wcj-settings-currency-per-product.php:138
11209
  #: includes/settings/wcj-settings-multicurrency-base-price.php:113
11210
- #: includes/settings/wcj-settings-multicurrency.php:256
11211
  msgid "Currencies Options"
11212
  msgstr ""
11213
 
@@ -11220,7 +11226,7 @@ msgstr ""
11220
 
11221
  #: includes/settings/wcj-settings-currency-per-product.php:144
11222
  #: includes/settings/wcj-settings-multicurrency-base-price.php:118
11223
- #: includes/settings/wcj-settings-multicurrency.php:262
11224
  msgid "Total Currencies"
11225
  msgstr ""
11226
 
@@ -11238,8 +11244,9 @@ msgstr ""
11238
 
11239
  #: includes/settings/wcj-settings-currency-per-product.php:257
11240
  #: includes/settings/wcj-settings-multicurrency-base-price.php:69
11241
- #: includes/settings/wcj-settings-multicurrency.php:245
11242
- #: includes/settings/wcj-settings-price-by-country.php:220
 
11243
  msgid ""
11244
  "This may help if you are experiencing compatibility issues with other "
11245
  "plugins."
@@ -11754,133 +11761,144 @@ msgid "CSV Separator"
11754
  msgstr ""
11755
 
11756
  #: includes/settings/wcj-settings-export.php:26
 
 
 
 
 
 
 
 
 
 
 
11757
  msgid "UTF-8 BOM"
11758
  msgstr ""
11759
 
11760
- #: includes/settings/wcj-settings-export.php:28
11761
  msgid "Add UTF-8 BOM sequence"
11762
  msgstr ""
11763
 
11764
- #: includes/settings/wcj-settings-export.php:38
11765
  msgid "Export Orders Options"
11766
  msgstr ""
11767
 
11768
- #: includes/settings/wcj-settings-export.php:43
11769
  msgid "Export Orders Fields"
11770
  msgstr ""
11771
 
11772
- #: includes/settings/wcj-settings-export.php:44
11773
- #: includes/settings/wcj-settings-export.php:112
11774
- #: includes/settings/wcj-settings-export.php:183
11775
- #: includes/settings/wcj-settings-export.php:262
11776
- #: includes/settings/wcj-settings-export.php:280
11777
  msgid "Hold \"Control\" key to select multiple fields."
11778
  msgstr ""
11779
 
11780
- #: includes/settings/wcj-settings-export.php:52
11781
  msgid "Additional Export Orders Fields"
11782
  msgstr ""
11783
 
11784
- #: includes/settings/wcj-settings-export.php:87
11785
- #: includes/settings/wcj-settings-export.php:156
11786
  msgid "Order Shortcode"
11787
  msgstr ""
11788
 
11789
- #: includes/settings/wcj-settings-export.php:92
11790
  msgid ""
11791
  "If field's \"Type\" is set to \"Meta\", enter order meta key to retrieve "
11792
  "(can be custom field name)."
11793
  msgstr ""
11794
 
11795
- #: includes/settings/wcj-settings-export.php:93
11796
  msgid "If it's set to \"Shortcode\", use Booster's Orders shortcodes here."
11797
  msgstr ""
11798
 
11799
- #: includes/settings/wcj-settings-export.php:106
11800
  msgid "Export Orders Items Options"
11801
  msgstr ""
11802
 
11803
- #: includes/settings/wcj-settings-export.php:111
11804
  msgid "Export Orders Items Fields"
11805
  msgstr ""
11806
 
11807
- #: includes/settings/wcj-settings-export.php:120
11808
  msgid "Additional Export Orders Items Fields"
11809
  msgstr ""
11810
 
11811
- #: includes/settings/wcj-settings-export.php:155
11812
  msgid "Order Item Meta"
11813
  msgstr ""
11814
 
11815
- #: includes/settings/wcj-settings-export.php:158
11816
- #: includes/settings/wcj-settings-export.php:237
11817
  msgid "Product Shortcode"
11818
  msgstr ""
11819
 
11820
- #: includes/settings/wcj-settings-export.php:163
11821
  msgid ""
11822
  "If field's \"Type\" is set to \"Meta\", enter order/product meta key to "
11823
  "retrieve (can be custom field name)."
11824
  msgstr ""
11825
 
11826
- #: includes/settings/wcj-settings-export.php:164
11827
  msgid ""
11828
  "If it's set to \"Shortcode\", use Booster's Orders/Products shortcodes here."
11829
  msgstr ""
11830
 
11831
- #: includes/settings/wcj-settings-export.php:177
11832
  msgid "Export Products Options"
11833
  msgstr ""
11834
 
11835
- #: includes/settings/wcj-settings-export.php:182
11836
  msgid "Export Products Fields"
11837
  msgstr ""
11838
 
11839
- #: includes/settings/wcj-settings-export.php:191
11840
  #: includes/settings/wcj-settings-free-price.php:14
11841
  #: includes/settings/wcj-settings-order-quantities.php:56
11842
  msgid "Variable Products"
11843
  msgstr ""
11844
 
11845
- #: includes/settings/wcj-settings-export.php:196
11846
  msgid "Export variable (main) product only"
11847
  msgstr ""
11848
 
11849
- #: includes/settings/wcj-settings-export.php:197
11850
  msgid "Export variation products only"
11851
  msgstr ""
11852
 
11853
- #: includes/settings/wcj-settings-export.php:198
11854
  msgid "Export variable (main) and variation products"
11855
  msgstr ""
11856
 
11857
- #: includes/settings/wcj-settings-export.php:202
11858
  msgid "Additional Export Products Fields"
11859
  msgstr ""
11860
 
11861
- #: includes/settings/wcj-settings-export.php:242
11862
  msgid ""
11863
  "If field's \"Type\" is set to \"Meta\", enter product meta key to retrieve "
11864
  "(can be custom field name)."
11865
  msgstr ""
11866
 
11867
- #: includes/settings/wcj-settings-export.php:243
11868
  msgid "If it's set to \"Shortcode\", use Booster's Products shortcodes here."
11869
  msgstr ""
11870
 
11871
- #: includes/settings/wcj-settings-export.php:256
11872
  msgid "Export Customers Options"
11873
  msgstr ""
11874
 
11875
- #: includes/settings/wcj-settings-export.php:261
11876
  msgid "Export Customers Fields"
11877
  msgstr ""
11878
 
11879
- #: includes/settings/wcj-settings-export.php:274
11880
  msgid "Export Customers from Orders Options"
11881
  msgstr ""
11882
 
11883
- #: includes/settings/wcj-settings-export.php:279
11884
  msgid "Export Customers from Orders Fields"
11885
  msgstr ""
11886
 
@@ -12290,8 +12308,8 @@ msgstr ""
12290
 
12291
  #: includes/settings/wcj-settings-global-discount.php:201
12292
  #: includes/settings/wcj-settings-multicurrency-base-price.php:76
12293
- #: includes/settings/wcj-settings-multicurrency.php:229
12294
- #: includes/settings/wcj-settings-price-by-country.php:191
12295
  #: includes/settings/wcj-settings-price-by-user-role.php:111
12296
  #: includes/settings/wcj-settings-product-addons.php:258
12297
  #: includes/settings/wcj-settings-product-price-by-formula.php:100
@@ -12300,8 +12318,8 @@ msgstr ""
12300
 
12301
  #: includes/settings/wcj-settings-global-discount.php:202
12302
  #: includes/settings/wcj-settings-multicurrency-base-price.php:77
12303
- #: includes/settings/wcj-settings-multicurrency.php:230
12304
- #: includes/settings/wcj-settings-price-by-country.php:192
12305
  #: includes/settings/wcj-settings-price-by-user-role.php:112
12306
  #: includes/settings/wcj-settings-product-addons.php:259
12307
  #: includes/settings/wcj-settings-product-price-by-formula.php:101
@@ -12520,15 +12538,18 @@ msgid "Convert Product Prices in Admin Products List"
12520
  msgstr ""
12521
 
12522
  #: includes/settings/wcj-settings-multicurrency-base-price.php:68
12523
- #: includes/settings/wcj-settings-multicurrency.php:244
12524
- #: includes/settings/wcj-settings-price-by-country.php:219
 
12525
  msgid "Save Calculated Products Prices"
12526
  msgstr ""
12527
 
12528
  #: includes/settings/wcj-settings-multicurrency-base-price.php:87
12529
  #: includes/settings/wcj-settings-multicurrency.php:115
 
 
12530
  #: includes/settings/wcj-settings-payment-gateways-min-max.php:65
12531
- #: includes/settings/wcj-settings-price-by-country.php:160
12532
  #: includes/settings/wcj-settings-product-msrp.php:105
12533
  msgid "Compatibility"
12534
  msgstr ""
@@ -12662,27 +12683,12 @@ msgid ""
12662
  "Disable it if you have some other plugin already converting it like WPML."
12663
  msgstr ""
12664
 
12665
- #: includes/settings/wcj-settings-multicurrency.php:120
12666
- msgid "Prices and Currencies by Country Module"
12667
- msgstr ""
12668
-
12669
- #: includes/settings/wcj-settings-multicurrency.php:122
12670
- msgid "Switches currency according to country."
12671
- msgstr ""
12672
-
12673
- #: includes/settings/wcj-settings-multicurrency.php:122
12674
- #, php-format
12675
- msgid ""
12676
- "Once Enabled, please set all the currency values from the <a href=\"%s"
12677
- "\">Country</a> module as 1. The MultiCurrency module values will be used "
12678
- "instead."
12679
- msgstr ""
12680
-
12681
  #: includes/settings/wcj-settings-multicurrency.php:128
12682
  msgid "WooCommerce Fixed Coupons"
12683
  msgstr ""
12684
 
12685
  #: includes/settings/wcj-settings-multicurrency.php:130
 
12686
  msgid ""
12687
  "When a fixed coupon is used its value changes according to the current "
12688
  "currency."
@@ -12770,56 +12776,73 @@ msgid ""
12770
  "plugin."
12771
  msgstr ""
12772
 
12773
- #: includes/settings/wcj-settings-multicurrency.php:220
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12774
  msgid "Additional Price Filters"
12775
  msgstr ""
12776
 
12777
- #: includes/settings/wcj-settings-multicurrency.php:221
12778
  msgid ""
12779
  "Add additional price filters here. One per line. Leave blank if not sure."
12780
  msgstr ""
12781
 
12782
- #: includes/settings/wcj-settings-multicurrency.php:236
12783
  msgid "Save Prices on Exchange Update"
12784
  msgstr ""
12785
 
12786
- #: includes/settings/wcj-settings-multicurrency.php:238
12787
  msgid ""
12788
  "Save min and max prices on exchange rate update, via background processing."
12789
  msgstr ""
12790
 
12791
- #: includes/settings/wcj-settings-multicurrency.php:238
12792
  msgid ""
12793
  "All products with \"per product\" options registered related to the currency "
12794
  "will be affected."
12795
  msgstr ""
12796
 
12797
- #: includes/settings/wcj-settings-multicurrency.php:258
12798
  msgid ""
12799
  "One currency probably should be set to current (original) shop currency with "
12800
  "an exchange rate of 1."
12801
  msgstr ""
12802
 
12803
- #: includes/settings/wcj-settings-multicurrency.php:263
12804
  msgid ""
12805
  "Press Save changes after setting this option, so new settings fields will be "
12806
  "added."
12807
  msgstr ""
12808
 
12809
- #: includes/settings/wcj-settings-multicurrency.php:312
12810
  msgid "Role Defaults"
12811
  msgstr ""
12812
 
12813
- #: includes/settings/wcj-settings-multicurrency.php:319
12814
  msgid "Roles"
12815
  msgstr ""
12816
 
12817
- #: includes/settings/wcj-settings-multicurrency.php:320
12818
  #: includes/settings/wcj-settings-wholesale-price.php:237
12819
  msgid "Save settings after you change this option. Leave blank to disable."
12820
  msgstr ""
12821
 
12822
- #: includes/settings/wcj-settings-multicurrency.php:343
12823
  msgid "No default currency"
12824
  msgstr ""
12825
 
@@ -13501,7 +13524,22 @@ msgstr ""
13501
  msgid "Redirect back to Cart page"
13502
  msgstr ""
13503
 
13504
- #: includes/settings/wcj-settings-order-min-amount.php:109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13505
  msgid "Order Minimum Amount by User Role"
13506
  msgstr ""
13507
 
@@ -13654,19 +13692,31 @@ msgstr ""
13654
  msgid "Set to zero to enable numbering for all orders."
13655
  msgstr ""
13656
 
13657
- #: includes/settings/wcj-settings-order-numbers.php:140
 
 
 
 
 
 
 
 
 
 
 
 
13658
  msgid "Orders Renumerate Tool Options"
13659
  msgstr ""
13660
 
13661
- #: includes/settings/wcj-settings-order-numbers.php:145
13662
  msgid "Sort by"
13663
  msgstr ""
13664
 
13665
- #: includes/settings/wcj-settings-order-numbers.php:152
13666
  msgid "Last modified date"
13667
  msgstr ""
13668
 
13669
- #: includes/settings/wcj-settings-order-numbers.php:157
13670
  msgid "Sort Ascending or Descending"
13671
  msgstr ""
13672
 
@@ -14567,7 +14617,7 @@ msgid "Replace"
14567
  msgstr ""
14568
 
14569
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:25
14570
- #: includes/settings/wcj-settings-price-by-country.php:318
14571
  #: includes/settings/wcj-settings-shipping.php:30
14572
  msgid "Admin Title"
14573
  msgstr ""
@@ -15031,122 +15081,124 @@ msgid "Leave empty to show to all user roles."
15031
  msgstr ""
15032
 
15033
  #: includes/settings/wcj-settings-price-by-country.php:132
15034
- msgid "Price Filter Widget and Sorting by Price Support"
15035
- msgstr ""
15036
-
15037
- #: includes/settings/wcj-settings-price-by-country.php:135
15038
- msgid "Recalculate price filter widget and sorting by price product prices"
15039
- msgstr ""
15040
-
15041
- #: includes/settings/wcj-settings-price-by-country.php:141
15042
  msgid "Add Countries Flags Images to Select Drop-Down Box"
15043
  msgstr ""
15044
 
15045
- #: includes/settings/wcj-settings-price-by-country.php:143
15046
  msgid ""
15047
  "If you are using [wcj_country_select_drop_down_list] shortcode or \"Booster: "
15048
  "Country Switcher\" widget, this will add country flags to these select boxes."
15049
  msgstr ""
15050
 
15051
- #: includes/settings/wcj-settings-price-by-country.php:149
15052
  #: includes/settings/wcj-settings-price-by-user-role.php:61
15053
  msgid "Search Engine Bots"
15054
  msgstr ""
15055
 
15056
- #: includes/settings/wcj-settings-price-by-country.php:150
15057
  msgid "Disable Price by Country for Bots"
15058
  msgstr ""
15059
 
15060
- #: includes/settings/wcj-settings-price-by-country.php:165
15061
- msgid "WooCommerce Coupons"
15062
  msgstr ""
15063
 
15064
- #: includes/settings/wcj-settings-price-by-country.php:167
15065
- msgid ""
15066
- "When a fixed coupon is used its value changes according to the current "
15067
- "currency"
 
 
 
 
 
 
15068
  msgstr ""
15069
 
15070
- #: includes/settings/wcj-settings-price-by-country.php:173
 
 
 
 
15071
  msgid "Woo Discount Rules"
15072
  msgstr ""
15073
 
15074
- #: includes/settings/wcj-settings-price-by-country.php:176
15075
  #, php-format
15076
  msgid ""
15077
  "Adds compatibility with <a href=\"%s\" target=\"_blank\">Woo Discount Rules</"
15078
  "a> plugin."
15079
  msgstr ""
15080
 
15081
- #: includes/settings/wcj-settings-price-by-country.php:176
15082
  #, php-format
15083
  msgid ""
15084
  "If it doesn't work properly try to enable <a href=\"%s\">redirect to the "
15085
- "cart page after successful addition</a> option"
15086
  msgstr ""
15087
 
15088
- #: includes/settings/wcj-settings-price-by-country.php:198
15089
  msgid "User IP Detection Method"
15090
  msgstr ""
15091
 
15092
- #: includes/settings/wcj-settings-price-by-country.php:208
15093
  msgid "Price Format Method"
15094
  msgstr ""
15095
 
15096
- #: includes/settings/wcj-settings-price-by-country.php:209
15097
  msgid "The moment \"Pretty Price\" and \"Rounding\" will be applied"
15098
  msgstr ""
15099
 
15100
- #: includes/settings/wcj-settings-price-by-country.php:214
15101
  msgid "get_price()"
15102
  msgstr ""
15103
 
15104
- #: includes/settings/wcj-settings-price-by-country.php:215
15105
  msgid "wc_get_price_to_display()"
15106
  msgstr ""
15107
 
15108
- #: includes/settings/wcj-settings-price-by-country.php:231
15109
  msgid "Country Groups"
15110
  msgstr ""
15111
 
15112
- #: includes/settings/wcj-settings-price-by-country.php:236
15113
  msgid "Countries Selection"
15114
  msgstr ""
15115
 
15116
- #: includes/settings/wcj-settings-price-by-country.php:237
15117
  msgid "Choose how do you want to enter countries groups in admin."
15118
  msgstr ""
15119
 
15120
- #: includes/settings/wcj-settings-price-by-country.php:242
15121
  msgid "Comma separated list"
15122
  msgstr ""
15123
 
15124
- #: includes/settings/wcj-settings-price-by-country.php:243
15125
  msgid "Multiselect"
15126
  msgstr ""
15127
 
15128
- #: includes/settings/wcj-settings-price-by-country.php:244
15129
  #: includes/settings/wcj-settings-product-by-condition.php:82
15130
  #: includes/settings/wcj-settings-related-products.php:164
15131
  msgid "Chosen select"
15132
  msgstr ""
15133
 
15134
- #: includes/settings/wcj-settings-price-by-country.php:248
15135
  msgid "Autogenerate Groups"
15136
  msgstr ""
15137
 
15138
- #: includes/settings/wcj-settings-price-by-country.php:254
15139
  msgid "Groups Number"
15140
  msgstr ""
15141
 
15142
- #: includes/settings/wcj-settings-price-by-country.php:278
15143
  msgid ""
15144
  "Countries. List of comma separated country codes.<br>For country codes and "
15145
  "predefined sets visit <a href=\"https://booster.io/country-codes/\" target="
15146
  "\"_blank\">https://booster.io/country-codes/</a>"
15147
  msgstr ""
15148
 
15149
- #: includes/settings/wcj-settings-price-by-country.php:364
15150
  msgid "Multiply Price by"
15151
  msgstr ""
15152
 
@@ -16824,28 +16876,40 @@ msgstr ""
16824
  msgid "Adds a MSRP field that will be displayed on the product archive."
16825
  msgstr ""
16826
 
16827
- #: includes/settings/wcj-settings-product-msrp.php:146
 
 
 
 
 
 
 
 
 
 
 
 
16828
  msgid "Template Variable Formulas"
16829
  msgstr ""
16830
 
16831
- #: includes/settings/wcj-settings-product-msrp.php:151
16832
  msgid "You Save"
16833
  msgstr ""
16834
 
16835
- #: includes/settings/wcj-settings-product-msrp.php:152
16836
- #: includes/settings/wcj-settings-product-msrp.php:161
16837
  msgid "Variable: "
16838
  msgstr ""
16839
 
16840
- #: includes/settings/wcj-settings-product-msrp.php:154
16841
  msgid "%you_save%"
16842
  msgstr ""
16843
 
16844
- #: includes/settings/wcj-settings-product-msrp.php:160
16845
  msgid "You Save Percent"
16846
  msgstr ""
16847
 
16848
- #: includes/settings/wcj-settings-product-msrp.php:163
16849
  msgid "%you_save_percent%"
16850
  msgstr ""
16851
 
@@ -17267,6 +17331,7 @@ msgid "Template - After Form"
17267
  msgstr ""
17268
 
17269
  #: includes/settings/wcj-settings-products-per-page.php:75
 
17270
  #: includes/widgets/class-wcj-widget-multicurrency.php:88
17271
  msgid "Form Method"
17272
  msgstr ""
@@ -19099,48 +19164,58 @@ msgid ""
19099
  "necessary to enable MultiCurrency module"
19100
  msgstr ""
19101
 
19102
- #: includes/settings/wcj-settings-wpml.php:46
 
 
 
 
 
 
 
 
 
 
19103
  msgid "WPML Language Configuration File Options"
19104
  msgstr ""
19105
 
19106
- #: includes/settings/wcj-settings-wpml.php:48
19107
  #, php-format
19108
  msgid "Options for regenerating %s file."
19109
  msgstr ""
19110
 
19111
- #: includes/settings/wcj-settings-wpml.php:52
19112
  msgid "Automatically Regenerate"
19113
  msgstr ""
19114
 
19115
- #: includes/settings/wcj-settings-wpml.php:54
19116
  #, php-format
19117
  msgid "Automatically regenerate %s file on each Booster version update."
19118
  msgstr ""
19119
 
19120
- #: includes/settings/wcj-settings-wpml.php:60
19121
  msgid "Modules to Skip"
19122
  msgstr ""
19123
 
19124
- #: includes/settings/wcj-settings-wpml.php:61
19125
  msgid ""
19126
  "Select modules, which options you wish to exclude from wpml-config.xml file."
19127
  msgstr ""
19128
 
19129
- #: includes/settings/wcj-settings-wpml.php:69
19130
  msgid "Option IDs to Skip"
19131
  msgstr ""
19132
 
19133
- #: includes/settings/wcj-settings-wpml.php:70
19134
  msgid "Select options, which you wish to exclude from wpml-config.xml file."
19135
  msgstr ""
19136
 
19137
- #: includes/settings/wcj-settings-wpml.php:71
19138
  #, php-format
19139
  msgid "Full or part of option ID. Separated by vertical bar %s."
19140
  msgstr ""
19141
 
19142
- #: includes/settings/wcj-settings-wpml.php:93
19143
- #: includes/settings/wcj-settings-wpml.php:95
19144
  msgid "Regenerate wpml-config.xml file"
19145
  msgstr ""
19146
 
@@ -19273,7 +19348,7 @@ msgstr ""
19273
  msgid "Attribute \"name\" is required!"
19274
  msgstr ""
19275
 
19276
- #: includes/shortcodes/class-wcj-shortcodes-orders.php:334
19277
  #, php-format
19278
  msgid "Refund #%1$s - %2$s"
19279
  msgstr ""
@@ -19471,10 +19546,25 @@ msgstr ""
19471
  msgid "Customer Country Detection Method must include \"by user selection\"!"
19472
  msgstr ""
19473
 
19474
- #: includes/widgets/class-wcj-widget-country-switcher.php:76
19475
  msgid "Replace with currency"
19476
  msgstr ""
19477
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19478
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:27
19479
  msgid "Booster - Left to Free Shipping"
19480
  msgstr ""
@@ -19503,18 +19593,6 @@ msgstr ""
19503
  msgid "Link list"
19504
  msgstr ""
19505
 
19506
- #: includes/widgets/class-wcj-widget-multicurrency.php:89
19507
- msgid "HTML form method for \"Drop down\" and \"Radio list\" types."
19508
- msgstr ""
19509
-
19510
- #: includes/widgets/class-wcj-widget-multicurrency.php:94
19511
- msgid "Post"
19512
- msgstr ""
19513
-
19514
- #: includes/widgets/class-wcj-widget-multicurrency.php:95
19515
- msgid "Get"
19516
- msgstr ""
19517
-
19518
  #: includes/widgets/class-wcj-widget-multicurrency.php:101
19519
  msgid "HTML class for \"Drop down\" type."
19520
  msgstr ""
43
  #: includes/class-wcj-payment-gateways.php:91
44
  #: includes/class-wcj-track-users.php:163
45
  #: includes/class-wcj-track-users.php:251
46
+ #: includes/classes/class-wcj-module.php:555
47
+ #: includes/classes/class-wcj-module.php:755
48
+ #: includes/settings/wcj-settings-price-by-country.php:214
49
  msgid "Booster"
50
  msgstr ""
51
 
98
  #: includes/admin/class-wc-settings-jetpack.php:217
99
  #: includes/class-wcj-admin-bar.php:384
100
  #: includes/settings/wcj-settings-emails-verification.php:146
101
+ #: includes/settings/wcj-settings-price-by-country.php:213
102
  msgid "WooCommerce"
103
  msgstr ""
104
 
187
 
188
  #: includes/admin/class-wc-settings-jetpack.php:416
189
  #: includes/class-wcj-admin-bar.php:172
190
+ #: includes/classes/class-wcj-module.php:895
191
  msgid "Documentation"
192
  msgstr ""
193
 
295
  msgstr ""
296
 
297
  #: includes/admin/class-wcj-settings-custom-fields.php:260
298
+ #: includes/settings/wcj-settings-wpml.php:97
299
  msgid "To use tools, module must be enabled."
300
  msgstr ""
301
 
515
 
516
  #: includes/class-wcj-admin-bar.php:245 includes/class-wcj-admin-bar.php:288
517
  #: includes/class-wcj-admin-bar.php:632
518
+ #: includes/classes/class-wcj-module.php:728
519
+ #: includes/settings/wcj-settings-wpml.php:91
520
  msgid "Tools"
521
  msgstr ""
522
 
854
  msgstr ""
855
 
856
  #: includes/class-wcj-admin-tools.php:172
857
+ #: includes/settings/wcj-settings-export.php:166
858
+ #: includes/settings/wcj-settings-export.php:245
859
  msgid "Product Meta"
860
  msgstr ""
861
 
862
  #: includes/class-wcj-admin-tools.php:189
863
+ #: includes/settings/wcj-settings-export.php:95
864
+ #: includes/settings/wcj-settings-export.php:163
865
  msgid "Order Meta"
866
  msgstr ""
867
 
1438
  msgstr ""
1439
 
1440
  #: includes/class-wcj-custom-php.php:32
1441
+ #: includes/settings/wcj-settings-multicurrency.php:231
1442
  #: includes/settings/wcj-settings-offer-price.php:84
1443
  #, php-format
1444
  msgid "E.g.: %s"
1762
  msgid "Export Products."
1763
  msgstr ""
1764
 
1765
+ #: includes/class-wcj-export-import.php:222
1766
+ #: includes/class-wcj-export-import.php:228
1767
  msgid "Filter by Billing Country"
1768
  msgstr ""
1769
 
1770
+ #: includes/class-wcj-export-import.php:223
1771
  msgid "Filter by Product Title"
1772
  msgstr ""
1773
 
1774
+ #: includes/class-wcj-export-import.php:242
1775
  #: includes/reports/wcj-class-reports-sales-daily.php:189
1776
  #: includes/reports/wcj-class-reports-sales-gateways.php:137
1777
  #: includes/settings/wcj-settings-orders.php:45
1778
  msgid "Filter"
1779
  msgstr ""
1780
 
1781
+ #: includes/class-wcj-export-import.php:262
1782
  #: includes/class-wcj-track-users.php:36
1783
  msgid "All time"
1784
  msgstr ""
1785
 
1786
+ #: includes/class-wcj-export-import.php:276
1787
  msgid "Custom:"
1788
  msgstr ""
1789
 
1790
+ #: includes/class-wcj-export-import.php:281
1791
  msgid "Go"
1792
  msgstr ""
1793
 
1794
+ #: includes/class-wcj-export-import.php:301
1795
  msgid "Download CSV"
1796
  msgstr ""
1797
 
1798
+ #: includes/class-wcj-export-import.php:304
1799
  msgid "Download XML"
1800
  msgstr ""
1801
 
1802
+ #: includes/class-wcj-export-import.php:306
1803
  msgid "Filter by All Fields"
1804
  msgstr ""
1805
 
1872
  #: includes/class-wcj-sku.php:667
1873
  #: includes/reports/wcj-class-reports-sales.php:196
1874
  #: includes/settings/wcj-settings-cross-sells.php:43
1875
+ #: includes/settings/wcj-settings-order-numbers.php:168
1876
  #: includes/settings/wcj-settings-product-by-user.php:161
1877
  #: includes/settings/wcj-settings-products-xml.php:221
1878
  #: includes/settings/wcj-settings-related-products.php:30
1929
  #: includes/settings/wcj-settings-email-options.php:20
1930
  #: includes/settings/wcj-settings-eu-vat-number.php:181
1931
  #: includes/settings/wcj-settings-eu-vat-number.php:217
1932
+ #: includes/settings/wcj-settings-export.php:36
1933
  #: includes/settings/wcj-settings-order-custom-statuses.php:29
1934
  #: includes/settings/wcj-settings-order-custom-statuses.php:37
1935
  #: includes/settings/wcj-settings-order-custom-statuses.php:80
2156
  "and <a href=\"%3$s\">edit your password and account details</a>."
2157
  msgstr ""
2158
 
2159
+ #: includes/class-wcj-my-account.php:415
2160
  msgid "User role"
2161
  msgstr ""
2162
 
2163
+ #: includes/class-wcj-my-account.php:495
2164
  #: includes/class-wcj-product-bulk-meta-editor.php:279
2165
  #: includes/class-wcj-product-by-user.php:206
2166
  #: includes/class-wcj-purchase-data.php:94
2167
  #: includes/class-wcj-track-users.php:334
2168
+ #: includes/classes/class-wcj-module.php:864
2169
  #: includes/functions/wcj-functions-general.php:189
2170
  #: includes/functions/wcj-functions-html.php:117
2171
  #: includes/reports/wcj-class-reports-monthly-sales.php:351
2191
  #: includes/class-wcj-offer-price.php:164
2192
  #: includes/functions/wcj-functions-reports.php:21
2193
  #: includes/settings/wcj-settings-cross-sells.php:44
2194
+ #: includes/settings/wcj-settings-order-numbers.php:169
2195
  #: includes/settings/wcj-settings-products-xml.php:220
2196
  #: includes/settings/wcj-settings-related-products.php:23
2197
  #: includes/settings/wcj-settings-upsells.php:44
2303
  msgid "Make an offer"
2304
  msgstr ""
2305
 
2306
+ #: includes/class-wcj-offer-price.php:523
2307
  #: includes/settings/wcj-settings-offer-price.php:340
2308
  #, php-format
2309
  msgid "Product: %s"
2310
  msgstr ""
2311
 
2312
+ #: includes/class-wcj-offer-price.php:524
2313
  #: includes/settings/wcj-settings-offer-price.php:341
2314
  #, php-format
2315
  msgid "Offered price: %s"
2316
  msgstr ""
2317
 
2318
+ #: includes/class-wcj-offer-price.php:525
2319
  #: includes/settings/wcj-settings-offer-price.php:342
2320
  #, php-format
2321
  msgid "From: %s %s"
2322
  msgstr ""
2323
 
2324
+ #: includes/class-wcj-offer-price.php:526
2325
  #: includes/settings/wcj-settings-offer-price.php:343
2326
  #, php-format
2327
  msgid "Message: %s"
2328
  msgstr ""
2329
 
2330
+ #: includes/class-wcj-offer-price.php:540
2331
  #: includes/settings/wcj-settings-offer-price.php:331
2332
  msgid "Price Offer"
2333
  msgstr ""
2334
 
2335
+ #: includes/class-wcj-offer-price.php:550
2336
  #: includes/settings/wcj-settings-offer-price.php:262
2337
  msgid "Your price offer has been sent."
2338
  msgstr ""
2479
  msgid "Tool renumerates all orders."
2480
  msgstr ""
2481
 
2482
+ #: includes/class-wcj-order-numbers.php:316
2483
  msgid "Orders successfully renumerated!"
2484
  msgstr ""
2485
 
2486
+ #: includes/class-wcj-order-numbers.php:319
2487
  #, php-format
2488
  msgid "Sequential number generation is enabled. Next order number will be %s."
2489
  msgstr ""
2490
 
2491
+ #: includes/class-wcj-order-numbers.php:328
2492
  #, php-format
2493
  msgid ""
2494
  "Press the button below to renumerate all existing orders starting from order "
2495
  "counter settings in <a href=\"%s\">Order Numbers</a> module."
2496
  msgstr ""
2497
 
2498
+ #: includes/class-wcj-order-numbers.php:335
2499
  msgid "Renumerate orders"
2500
  msgstr ""
2501
 
2764
  msgid "You are not allowed to view the invoice."
2765
  msgstr ""
2766
 
2767
+ #: includes/class-wcj-price-by-country.php:35
2768
  msgid "Prices and Currencies by Country"
2769
  msgstr ""
2770
 
2771
+ #: includes/class-wcj-price-by-country.php:36
2772
  msgid "Change product price and currency automatically by customer's country."
2773
  msgstr ""
2774
 
2775
+ #: includes/class-wcj-price-by-country.php:152
2776
  msgid "Price filter widget product prices recalculated."
2777
  msgstr ""
2778
 
2850
  #: includes/class-wcj-product-info.php:235
2851
  #: includes/class-wcj-shipping-by-products.php:195
2852
  #: includes/class-wcj-shipping-options.php:121
2853
+ #: includes/classes/class-wcj-module.php:174
2854
+ #: includes/classes/class-wcj-module.php:195
2855
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:68
2856
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:73
2857
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:19
2911
  #: includes/settings/wcj-settings-emails-verification.php:36
2912
  #: includes/settings/wcj-settings-emails-verification.php:43
2913
  #: includes/settings/wcj-settings-eu-vat-number.php:264
2914
+ #: includes/settings/wcj-settings-export.php:28
2915
  #: includes/settings/wcj-settings-general.php:21
2916
  #: includes/settings/wcj-settings-general.php:73
2917
  #: includes/settings/wcj-settings-general.php:146
2932
  #: includes/settings/wcj-settings-multicurrency-base-price.php:102
2933
  #: includes/settings/wcj-settings-multicurrency.php:39
2934
  #: includes/settings/wcj-settings-multicurrency.php:103
 
2935
  #: includes/settings/wcj-settings-multicurrency.php:129
2936
  #: includes/settings/wcj-settings-multicurrency.php:138
2937
  #: includes/settings/wcj-settings-multicurrency.php:146
2942
  #: includes/settings/wcj-settings-multicurrency.php:186
2943
  #: includes/settings/wcj-settings-multicurrency.php:195
2944
  #: includes/settings/wcj-settings-multicurrency.php:204
2945
+ #: includes/settings/wcj-settings-multicurrency.php:213
2946
  #: includes/settings/wcj-settings-multicurrency.php:246
2947
+ #: includes/settings/wcj-settings-multicurrency.php:255
2948
  #: includes/settings/wcj-settings-my-account.php:29
2949
  #: includes/settings/wcj-settings-my-account.php:87
2950
  #: includes/settings/wcj-settings-my-account.php:104
2952
  #: includes/settings/wcj-settings-order-custom-statuses.php:45
2953
  #: includes/settings/wcj-settings-order-custom-statuses.php:55
2954
  #: includes/settings/wcj-settings-order-custom-statuses.php:98
2955
+ #: includes/settings/wcj-settings-order-min-amount.php:117
2956
  #: includes/settings/wcj-settings-order-numbers.php:97
2957
  #: includes/settings/wcj-settings-order-numbers.php:105
2958
  #: includes/settings/wcj-settings-order-numbers.php:112
2959
  #: includes/settings/wcj-settings-order-numbers.php:119
2960
+ #: includes/settings/wcj-settings-order-numbers.php:146
2961
  #: includes/settings/wcj-settings-order-quantities.php:23
2962
  #: includes/settings/wcj-settings-order-quantities.php:42
2963
  #: includes/settings/wcj-settings-order-quantities.php:49
2988
  #: includes/settings/wcj-settings-price-by-country.php:90
2989
  #: includes/settings/wcj-settings-price-by-country.php:106
2990
  #: includes/settings/wcj-settings-price-by-country.php:133
2991
+ #: includes/settings/wcj-settings-price-by-country.php:157
2992
+ #: includes/settings/wcj-settings-price-by-country.php:167
2993
+ #: includes/settings/wcj-settings-price-by-country.php:176
2994
+ #: includes/settings/wcj-settings-price-by-country.php:185
2995
+ #: includes/settings/wcj-settings-price-by-country.php:231
2996
  #: includes/settings/wcj-settings-price-by-user-role.php:19
2997
  #: includes/settings/wcj-settings-price-by-user-role.php:46
2998
  #: includes/settings/wcj-settings-price-by-user-role.php:93
3044
  #: includes/settings/wcj-settings-product-open-pricing.php:109
3045
  #: includes/settings/wcj-settings-product-open-pricing.php:140
3046
  #: includes/settings/wcj-settings-product-price-by-formula.php:30
3047
+ #: includes/settings/wcj-settings-product-price-by-formula.php:109
3048
  #: includes/settings/wcj-settings-product-tabs.php:43
3049
  #: includes/settings/wcj-settings-product-tabs.php:232
3050
  #: includes/settings/wcj-settings-product-tabs.php:240
3093
  #: includes/settings/wcj-settings-wholesale-price.php:63
3094
  #: includes/settings/wcj-settings-wpml.php:28
3095
  #: includes/settings/wcj-settings-wpml.php:35
3096
+ #: includes/settings/wcj-settings-wpml.php:44
3097
+ #: includes/settings/wcj-settings-wpml.php:62
3098
  msgid "Enable"
3099
  msgstr ""
3100
 
3334
  #: includes/settings/wcj-settings-admin-orders-list.php:71
3335
  #: includes/settings/wcj-settings-admin-products-list.php:56
3336
  #: includes/settings/wcj-settings-checkout-fees.php:76
3337
+ #: includes/settings/wcj-settings-export.php:100
3338
+ #: includes/settings/wcj-settings-export.php:171
3339
+ #: includes/settings/wcj-settings-export.php:250
3340
  #: includes/settings/wcj-settings-global-discount.php:74
3341
  msgid "Value"
3342
  msgstr ""
3494
  msgstr ""
3495
 
3496
  #: includes/class-wcj-product-by-country.php:30
3497
+ #: includes/widgets/class-wcj-widget-country-switcher.php:71
3498
  #: includes/widgets/class-wcj-widget-selector.php:64
3499
  msgid "Countries"
3500
  msgstr ""
3686
  #: includes/settings/wcj-settings-admin-orders-list.php:172
3687
  #: includes/settings/wcj-settings-checkout-fees.php:60
3688
  #: includes/settings/wcj-settings-cross-sells.php:42
3689
+ #: includes/settings/wcj-settings-export.php:84
3690
+ #: includes/settings/wcj-settings-export.php:152
3691
+ #: includes/settings/wcj-settings-export.php:234
3692
  #: includes/settings/wcj-settings-my-account.php:161
3693
  #: includes/settings/wcj-settings-product-add-to-cart.php:300
3694
  #: includes/settings/wcj-settings-product-addons.php:92
3704
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:191
3705
  #: includes/shipping/class-wc-shipping-wcj-custom.php:107
3706
  #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:334
3707
+ #: includes/widgets/class-wcj-widget-country-switcher.php:64
3708
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:52
3709
  #: includes/widgets/class-wcj-widget-multicurrency.php:69
3710
  #: includes/widgets/class-wcj-widget-selector.php:52
3918
  "count, exclude categories, show/hide empty categories."
3919
  msgstr ""
3920
 
3921
+ #: includes/class-wcj-product-msrp.php:31
3922
  msgid "Product MSRP"
3923
  msgstr ""
3924
 
3925
+ #: includes/class-wcj-product-msrp.php:32
3926
  msgid ""
3927
  "The <strong>manufacturer's suggested retail price</strong> (<strong>MSRP</"
3928
  "strong>), also known as the <strong>list price</strong>, or the "
3932
  "product."
3933
  msgstr ""
3934
 
3935
+ #: includes/class-wcj-product-msrp.php:33
3936
  #, php-format
3937
  msgid "Booster stores MSRP as product meta with %s key."
3938
  msgstr ""
3939
 
3940
+ #: includes/class-wcj-product-msrp.php:34
3941
  msgid "Save and display product MSRP in WooCommerce."
3942
  msgstr ""
3943
 
3944
+ #: includes/class-wcj-product-msrp.php:112
3945
+ #: includes/class-wcj-product-msrp.php:143
3946
  #: includes/settings/meta-box/wcj-settings-meta-box-product-msrp.php:48
3947
  msgid "MSRP"
3948
  msgstr ""
3995
  msgid "Set formula for automatic product price calculation."
3996
  msgstr ""
3997
 
3998
+ #: includes/class-wcj-product-price-by-formula.php:186
3999
  msgid "Error in formula"
4000
  msgstr ""
4001
 
4002
+ #: includes/class-wcj-product-price-by-formula.php:279
4003
  msgid ""
4004
  "Booster: Free plugin's version is limited to only one price by formula "
4005
  "product enabled at a time. You will need to get <a href=\"https://booster.io/"
4007
  "by formula products."
4008
  msgstr ""
4009
 
4010
+ #: includes/class-wcj-product-price-by-formula.php:313
4011
  msgid "Final Price Preview"
4012
  msgstr ""
4013
 
4110
  #: includes/settings/wcj-settings-checkout-custom-fields.php:265
4111
  #: includes/settings/wcj-settings-product-addons.php:242
4112
  #: includes/settings/wcj-settings-related-products.php:176
4113
+ #: includes/widgets/class-wcj-widget-country-switcher.php:84
4114
  msgid "No"
4115
  msgstr ""
4116
 
4148
  #: includes/settings/wcj-settings-eu-vat-number.php:154
4149
  #: includes/settings/wcj-settings-product-addons.php:241
4150
  #: includes/settings/wcj-settings-related-products.php:175
4151
+ #: includes/widgets/class-wcj-widget-country-switcher.php:85
4152
  msgid "Yes"
4153
  msgstr ""
4154
 
4561
  msgstr ""
4562
 
4563
  #: includes/class-wcj-shipping-by-user-role.php:33
4564
+ #: includes/settings/wcj-settings-multicurrency.php:323
4565
+ #: includes/settings/wcj-settings-order-min-amount.php:131
4566
  #: includes/settings/wcj-settings-price-by-user-role.php:133
4567
  #, php-format
4568
  msgid ""
4879
  "less)."
4880
  msgstr ""
4881
 
4882
+ #: includes/class-wcj-wpml.php:29
4883
  msgid "Booster WPML"
4884
  msgstr ""
4885
 
4886
+ #: includes/class-wcj-wpml.php:30
4887
  msgid "Booster for WooCommerce basic WPML support."
4888
  msgstr ""
4889
 
4890
+ #: includes/class-wcj-wpml.php:190
4891
  msgid "File wpml-config.xml successfully regenerated!"
4892
  msgstr ""
4893
 
4905
  msgid "Invisible"
4906
  msgstr ""
4907
 
4908
+ #: includes/classes/class-wcj-module.php:173
4909
  msgid "WPML: Get Terms in All Languages"
4910
  msgstr ""
4911
 
4912
+ #: includes/classes/class-wcj-module.php:175
4913
  msgid "Get tags and taxonomies in all languages"
4914
  msgstr ""
4915
 
4916
+ #: includes/classes/class-wcj-module.php:194
4917
  msgid "WPML: Get Products in All Languages"
4918
  msgstr ""
4919
 
4920
+ #: includes/classes/class-wcj-module.php:196
4921
  msgid "Get products in all languages"
4922
  msgstr ""
4923
 
4924
+ #: includes/classes/class-wcj-module.php:327
4925
  #, php-format
4926
  msgid ""
4927
  "Booster: Free plugin's version is limited to only one \"%1$s\" product with "
4930
  "\"%1$s\" products."
4931
  msgstr ""
4932
 
4933
+ #: includes/classes/class-wcj-module.php:647
4934
  #, php-format
4935
  msgid "Selected: %s."
4936
  msgstr ""
4937
 
4938
+ #: includes/classes/class-wcj-module.php:716
4939
  msgid "Back to Module Settings"
4940
  msgstr ""
4941
 
4942
+ #: includes/classes/class-wcj-module.php:734
4943
+ #: includes/settings/wcj-settings-wpml.php:96
4944
  msgid "Module Tools"
4945
  msgstr ""
4946
 
4947
+ #: includes/classes/class-wcj-module.php:807
4948
  #: includes/settings/wcj-settings-checkout-core-fields.php:77
4949
  msgid "enabled"
4950
  msgstr ""
4951
 
4952
+ #: includes/classes/class-wcj-module.php:808
4953
  msgid "disabled"
4954
  msgstr ""
4955
 
4956
+ #: includes/classes/class-wcj-module.php:816
4957
  #: includes/settings/wcj-settings-product-tabs.php:172
4958
  #: includes/settings/wcj-settings-product-tabs.php:184
4959
  #: includes/settings/wcj-settings-product-tabs.php:196
4961
  msgid "Deprecated"
4962
  msgstr ""
4963
 
4964
+ #: includes/classes/class-wcj-module.php:854
4965
  msgid "Reset Settings"
4966
  msgstr ""
4967
 
4968
+ #: includes/classes/class-wcj-module.php:860
4969
  msgid "Reset Module to Default Settings"
4970
  msgstr ""
4971
 
4972
+ #: includes/classes/class-wcj-module.php:861
4973
  msgid "Reset Submodule to Default Settings"
4974
  msgstr ""
4975
 
4976
+ #: includes/classes/class-wcj-module.php:865
4977
  msgid "Reset settings"
4978
  msgstr ""
4979
 
4980
+ #: includes/classes/class-wcj-module.php:899
4981
  msgid "Module Options"
4982
  msgstr ""
4983
 
4984
+ #: includes/classes/class-wcj-module.php:906
4985
  msgid "Enable Module"
4986
  msgstr ""
4987
 
4990
  msgid "Company Name"
4991
  msgstr ""
4992
 
4993
+ #: includes/classes/class-wcj-pdf-invoice.php:263
4994
  #: includes/functions/wcj-functions-general.php:145
4995
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:245
4996
  msgid "Unexpected error"
5549
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:83
5550
  #: includes/settings/wcj-settings-checkout-custom-fields.php:130
5551
  #: includes/settings/wcj-settings-checkout-fees.php:66
5552
+ #: includes/settings/wcj-settings-export.php:90
5553
+ #: includes/settings/wcj-settings-export.php:158
5554
+ #: includes/settings/wcj-settings-export.php:240
5555
  #: includes/settings/wcj-settings-global-discount.php:63
5556
  #: includes/settings/wcj-settings-product-addons.php:80
5557
  #: includes/settings/wcj-settings-purchase-data.php:84
7222
  #: includes/settings/wcj-settings-admin-products-list.php:43
7223
  #: includes/settings/wcj-settings-checkout-core-fields.php:83
7224
  #: includes/settings/wcj-settings-checkout-files-upload.php:40
7225
+ #: includes/settings/wcj-settings-export.php:79
7226
+ #: includes/settings/wcj-settings-export.php:147
7227
+ #: includes/settings/wcj-settings-export.php:229
7228
  #: includes/settings/wcj-settings-global-discount.php:55
7229
  #: includes/settings/wcj-settings-product-by-user.php:149
7230
  #: includes/settings/wcj-settings-products-xml.php:76
7661
  #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:36
7662
  #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:62
7663
  #: includes/settings/wcj-settings-multicurrency-base-price.php:63
7664
+ #: includes/settings/wcj-settings-multicurrency.php:224
7665
  #: includes/settings/wcj-settings-order-min-amount.php:77
7666
+ #: includes/settings/wcj-settings-price-by-country.php:196
7667
  #: includes/settings/wcj-settings-price-by-user-role.php:106
7668
  #: includes/settings/wcj-settings-product-addons.php:230
7669
  msgid "Advanced"
7900
 
7901
  #: includes/price-by-country/class-wcj-price-by-country-local.php:111
7902
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:67
7903
+ #: includes/settings/wcj-settings-price-by-country.php:382
7904
  msgid "Make empty price"
7905
  msgstr ""
7906
 
7907
  #: includes/price-by-country/class-wcj-price-by-country-local.php:215
7908
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:17
7909
  #: includes/settings/wcj-settings-add-to-cart.php:50
7910
+ #: includes/settings/wcj-settings-price-by-country.php:276
7911
+ #: includes/settings/wcj-settings-price-by-country.php:277
7912
+ #: includes/settings/wcj-settings-price-by-country.php:282
7913
+ #: includes/settings/wcj-settings-price-by-country.php:330
7914
+ #: includes/settings/wcj-settings-price-by-country.php:373
7915
  msgid "Group"
7916
  msgstr ""
7917
 
10648
  msgstr ""
10649
 
10650
  #: includes/settings/wcj-settings-checkout-files-upload.php:313
10651
+ #: includes/settings/wcj-settings-export.php:77
10652
+ #: includes/settings/wcj-settings-export.php:145
10653
+ #: includes/settings/wcj-settings-export.php:227
10654
  msgid "Field"
10655
  msgstr ""
10656
 
10863
  msgstr ""
10864
 
10865
  #: includes/settings/wcj-settings-cross-sells.php:41
10866
+ #: includes/settings/wcj-settings-order-numbers.php:171
10867
  #: includes/settings/wcj-settings-related-products.php:22
10868
  #: includes/settings/wcj-settings-upsells.php:41
10869
  msgid "Random"
10888
  msgstr ""
10889
 
10890
  #: includes/settings/wcj-settings-cross-sells.php:59
10891
+ #: includes/settings/wcj-settings-order-numbers.php:181
10892
  #: includes/settings/wcj-settings-products-xml.php:235
10893
  #: includes/settings/wcj-settings-related-products.php:91
10894
  msgid "Descending"
10895
  msgstr ""
10896
 
10897
  #: includes/settings/wcj-settings-cross-sells.php:60
10898
+ #: includes/settings/wcj-settings-order-numbers.php:180
10899
  #: includes/settings/wcj-settings-products-xml.php:236
10900
  #: includes/settings/wcj-settings-related-products.php:90
10901
  msgid "Ascending"
10995
  #: includes/settings/wcj-settings-multicurrency-base-price.php:22
10996
  #: includes/settings/wcj-settings-multicurrency.php:22
10997
  #: includes/settings/wcj-settings-payment-gateways-currency.php:68
10998
+ #: includes/settings/wcj-settings-price-by-country.php:346
10999
  msgid "Exchange Rates Updates"
11000
  msgstr ""
11001
 
11059
  msgstr ""
11060
 
11061
  #: includes/settings/wcj-settings-currency-exchange-rates.php:119
11062
+ msgid "Free Currency Converter API Key"
11063
  msgstr ""
11064
 
11065
  #: includes/settings/wcj-settings-currency-exchange-rates.php:120
11089
  msgstr ""
11090
 
11091
  #: includes/settings/wcj-settings-currency-exchange-rates.php:173
11092
+ #: includes/settings/wcj-settings-price-by-country.php:341
11093
  msgid "Exchange Rates"
11094
  msgstr ""
11095
 
11107
  #: includes/settings/wcj-settings-currency-external-products.php:20
11108
  #: includes/settings/wcj-settings-currency-per-product.php:180
11109
  #: includes/settings/wcj-settings-multicurrency-base-price.php:142
11110
+ #: includes/settings/wcj-settings-multicurrency.php:296
11111
+ #: includes/settings/wcj-settings-price-by-country.php:321
11112
  #: includes/settings/wcj-settings-price-formats.php:59
11113
  msgid "Currency"
11114
  msgstr ""
11183
  #: includes/settings/wcj-settings-multicurrency-base-price.php:27
11184
  #: includes/settings/wcj-settings-multicurrency.php:28
11185
  #: includes/settings/wcj-settings-payment-gateways-currency.php:73
11186
+ #: includes/settings/wcj-settings-price-by-country.php:351
11187
  msgid "Enter Rates Manually"
11188
  msgstr ""
11189
 
11191
  #: includes/settings/wcj-settings-multicurrency-base-price.php:28
11192
  #: includes/settings/wcj-settings-multicurrency.php:29
11193
  #: includes/settings/wcj-settings-payment-gateways-currency.php:74
11194
+ #: includes/settings/wcj-settings-price-by-country.php:352
11195
  msgid "Automatically via Currency Exchange Rates module"
11196
  msgstr ""
11197
 
11199
  #: includes/settings/wcj-settings-multicurrency-base-price.php:31
11200
  #: includes/settings/wcj-settings-multicurrency.php:32
11201
  #: includes/settings/wcj-settings-payment-gateways-currency.php:77
11202
+ #: includes/settings/wcj-settings-price-by-country.php:355
11203
  msgid "Visit"
11204
  msgstr ""
11205
 
11207
  #: includes/settings/wcj-settings-multicurrency-base-price.php:31
11208
  #: includes/settings/wcj-settings-multicurrency.php:32
11209
  #: includes/settings/wcj-settings-payment-gateways-currency.php:79
11210
+ #: includes/settings/wcj-settings-price-by-country.php:355
11211
  msgid "Currency Exchange Rates module"
11212
  msgstr ""
11213
 
11214
  #: includes/settings/wcj-settings-currency-per-product.php:138
11215
  #: includes/settings/wcj-settings-multicurrency-base-price.php:113
11216
+ #: includes/settings/wcj-settings-multicurrency.php:265
11217
  msgid "Currencies Options"
11218
  msgstr ""
11219
 
11226
 
11227
  #: includes/settings/wcj-settings-currency-per-product.php:144
11228
  #: includes/settings/wcj-settings-multicurrency-base-price.php:118
11229
+ #: includes/settings/wcj-settings-multicurrency.php:271
11230
  msgid "Total Currencies"
11231
  msgstr ""
11232
 
11244
 
11245
  #: includes/settings/wcj-settings-currency-per-product.php:257
11246
  #: includes/settings/wcj-settings-multicurrency-base-price.php:69
11247
+ #: includes/settings/wcj-settings-multicurrency.php:254
11248
+ #: includes/settings/wcj-settings-price-by-country.php:230
11249
+ #: includes/settings/wcj-settings-product-price-by-formula.php:108
11250
  msgid ""
11251
  "This may help if you are experiencing compatibility issues with other "
11252
  "plugins."
11761
  msgstr ""
11762
 
11763
  #: includes/settings/wcj-settings-export.php:26
11764
+ msgid "Smart Formatting"
11765
+ msgstr ""
11766
+
11767
+ #: includes/settings/wcj-settings-export.php:30
11768
+ #, php-format
11769
+ msgid ""
11770
+ "Tries to handle special characters as commas and quotes, formatting fields "
11771
+ "according to <a href=\"%s\">RFC4180</a>"
11772
+ msgstr ""
11773
+
11774
+ #: includes/settings/wcj-settings-export.php:35
11775
  msgid "UTF-8 BOM"
11776
  msgstr ""
11777
 
11778
+ #: includes/settings/wcj-settings-export.php:37
11779
  msgid "Add UTF-8 BOM sequence"
11780
  msgstr ""
11781
 
11782
+ #: includes/settings/wcj-settings-export.php:47
11783
  msgid "Export Orders Options"
11784
  msgstr ""
11785
 
11786
+ #: includes/settings/wcj-settings-export.php:52
11787
  msgid "Export Orders Fields"
11788
  msgstr ""
11789
 
11790
+ #: includes/settings/wcj-settings-export.php:53
11791
+ #: includes/settings/wcj-settings-export.php:121
11792
+ #: includes/settings/wcj-settings-export.php:192
11793
+ #: includes/settings/wcj-settings-export.php:271
11794
+ #: includes/settings/wcj-settings-export.php:289
11795
  msgid "Hold \"Control\" key to select multiple fields."
11796
  msgstr ""
11797
 
11798
+ #: includes/settings/wcj-settings-export.php:61
11799
  msgid "Additional Export Orders Fields"
11800
  msgstr ""
11801
 
11802
+ #: includes/settings/wcj-settings-export.php:96
11803
+ #: includes/settings/wcj-settings-export.php:165
11804
  msgid "Order Shortcode"
11805
  msgstr ""
11806
 
11807
+ #: includes/settings/wcj-settings-export.php:101
11808
  msgid ""
11809
  "If field's \"Type\" is set to \"Meta\", enter order meta key to retrieve "
11810
  "(can be custom field name)."
11811
  msgstr ""
11812
 
11813
+ #: includes/settings/wcj-settings-export.php:102
11814
  msgid "If it's set to \"Shortcode\", use Booster's Orders shortcodes here."
11815
  msgstr ""
11816
 
11817
+ #: includes/settings/wcj-settings-export.php:115
11818
  msgid "Export Orders Items Options"
11819
  msgstr ""
11820
 
11821
+ #: includes/settings/wcj-settings-export.php:120
11822
  msgid "Export Orders Items Fields"
11823
  msgstr ""
11824
 
11825
+ #: includes/settings/wcj-settings-export.php:129
11826
  msgid "Additional Export Orders Items Fields"
11827
  msgstr ""
11828
 
11829
+ #: includes/settings/wcj-settings-export.php:164
11830
  msgid "Order Item Meta"
11831
  msgstr ""
11832
 
11833
+ #: includes/settings/wcj-settings-export.php:167
11834
+ #: includes/settings/wcj-settings-export.php:246
11835
  msgid "Product Shortcode"
11836
  msgstr ""
11837
 
11838
+ #: includes/settings/wcj-settings-export.php:172
11839
  msgid ""
11840
  "If field's \"Type\" is set to \"Meta\", enter order/product meta key to "
11841
  "retrieve (can be custom field name)."
11842
  msgstr ""
11843
 
11844
+ #: includes/settings/wcj-settings-export.php:173
11845
  msgid ""
11846
  "If it's set to \"Shortcode\", use Booster's Orders/Products shortcodes here."
11847
  msgstr ""
11848
 
11849
+ #: includes/settings/wcj-settings-export.php:186
11850
  msgid "Export Products Options"
11851
  msgstr ""
11852
 
11853
+ #: includes/settings/wcj-settings-export.php:191
11854
  msgid "Export Products Fields"
11855
  msgstr ""
11856
 
11857
+ #: includes/settings/wcj-settings-export.php:200
11858
  #: includes/settings/wcj-settings-free-price.php:14
11859
  #: includes/settings/wcj-settings-order-quantities.php:56
11860
  msgid "Variable Products"
11861
  msgstr ""
11862
 
11863
+ #: includes/settings/wcj-settings-export.php:205
11864
  msgid "Export variable (main) product only"
11865
  msgstr ""
11866
 
11867
+ #: includes/settings/wcj-settings-export.php:206
11868
  msgid "Export variation products only"
11869
  msgstr ""
11870
 
11871
+ #: includes/settings/wcj-settings-export.php:207
11872
  msgid "Export variable (main) and variation products"
11873
  msgstr ""
11874
 
11875
+ #: includes/settings/wcj-settings-export.php:211
11876
  msgid "Additional Export Products Fields"
11877
  msgstr ""
11878
 
11879
+ #: includes/settings/wcj-settings-export.php:251
11880
  msgid ""
11881
  "If field's \"Type\" is set to \"Meta\", enter product meta key to retrieve "
11882
  "(can be custom field name)."
11883
  msgstr ""
11884
 
11885
+ #: includes/settings/wcj-settings-export.php:252
11886
  msgid "If it's set to \"Shortcode\", use Booster's Products shortcodes here."
11887
  msgstr ""
11888
 
11889
+ #: includes/settings/wcj-settings-export.php:265
11890
  msgid "Export Customers Options"
11891
  msgstr ""
11892
 
11893
+ #: includes/settings/wcj-settings-export.php:270
11894
  msgid "Export Customers Fields"
11895
  msgstr ""
11896
 
11897
+ #: includes/settings/wcj-settings-export.php:283
11898
  msgid "Export Customers from Orders Options"
11899
  msgstr ""
11900
 
11901
+ #: includes/settings/wcj-settings-export.php:288
11902
  msgid "Export Customers from Orders Fields"
11903
  msgstr ""
11904
 
12308
 
12309
  #: includes/settings/wcj-settings-global-discount.php:201
12310
  #: includes/settings/wcj-settings-multicurrency-base-price.php:76
12311
+ #: includes/settings/wcj-settings-multicurrency.php:238
12312
+ #: includes/settings/wcj-settings-price-by-country.php:201
12313
  #: includes/settings/wcj-settings-price-by-user-role.php:111
12314
  #: includes/settings/wcj-settings-product-addons.php:258
12315
  #: includes/settings/wcj-settings-product-price-by-formula.php:100
12318
 
12319
  #: includes/settings/wcj-settings-global-discount.php:202
12320
  #: includes/settings/wcj-settings-multicurrency-base-price.php:77
12321
+ #: includes/settings/wcj-settings-multicurrency.php:239
12322
+ #: includes/settings/wcj-settings-price-by-country.php:202
12323
  #: includes/settings/wcj-settings-price-by-user-role.php:112
12324
  #: includes/settings/wcj-settings-product-addons.php:259
12325
  #: includes/settings/wcj-settings-product-price-by-formula.php:101
12538
  msgstr ""
12539
 
12540
  #: includes/settings/wcj-settings-multicurrency-base-price.php:68
12541
+ #: includes/settings/wcj-settings-multicurrency.php:253
12542
+ #: includes/settings/wcj-settings-price-by-country.php:229
12543
+ #: includes/settings/wcj-settings-product-price-by-formula.php:107
12544
  msgid "Save Calculated Products Prices"
12545
  msgstr ""
12546
 
12547
  #: includes/settings/wcj-settings-multicurrency-base-price.php:87
12548
  #: includes/settings/wcj-settings-multicurrency.php:115
12549
+ #: includes/settings/wcj-settings-order-min-amount.php:109
12550
+ #: includes/settings/wcj-settings-order-numbers.php:140
12551
  #: includes/settings/wcj-settings-payment-gateways-min-max.php:65
12552
+ #: includes/settings/wcj-settings-price-by-country.php:151
12553
  #: includes/settings/wcj-settings-product-msrp.php:105
12554
  msgid "Compatibility"
12555
  msgstr ""
12683
  "Disable it if you have some other plugin already converting it like WPML."
12684
  msgstr ""
12685
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12686
  #: includes/settings/wcj-settings-multicurrency.php:128
12687
  msgid "WooCommerce Fixed Coupons"
12688
  msgstr ""
12689
 
12690
  #: includes/settings/wcj-settings-multicurrency.php:130
12691
+ #: includes/settings/wcj-settings-price-by-country.php:177
12692
  msgid ""
12693
  "When a fixed coupon is used its value changes according to the current "
12694
  "currency."
12776
  "plugin."
12777
  msgstr ""
12778
 
12779
+ #: includes/settings/wcj-settings-multicurrency.php:211
12780
+ msgid "Product Add-Ons Plugin"
12781
+ msgstr ""
12782
+
12783
+ #: includes/settings/wcj-settings-multicurrency.php:214
12784
+ #, php-format
12785
+ msgid ""
12786
+ "Adds compatibility with <a href=\"%s\" target=\"_blank\">Product Add-Ons</a> "
12787
+ "plugin."
12788
+ msgstr ""
12789
+
12790
+ #: includes/settings/wcj-settings-multicurrency.php:214
12791
+ msgid ""
12792
+ "Only works with <code>Multicurrency on per Product Basis</code> option "
12793
+ "disabled."
12794
+ msgstr ""
12795
+
12796
+ #: includes/settings/wcj-settings-multicurrency.php:229
12797
  msgid "Additional Price Filters"
12798
  msgstr ""
12799
 
12800
+ #: includes/settings/wcj-settings-multicurrency.php:230
12801
  msgid ""
12802
  "Add additional price filters here. One per line. Leave blank if not sure."
12803
  msgstr ""
12804
 
12805
+ #: includes/settings/wcj-settings-multicurrency.php:245
12806
  msgid "Save Prices on Exchange Update"
12807
  msgstr ""
12808
 
12809
+ #: includes/settings/wcj-settings-multicurrency.php:247
12810
  msgid ""
12811
  "Save min and max prices on exchange rate update, via background processing."
12812
  msgstr ""
12813
 
12814
+ #: includes/settings/wcj-settings-multicurrency.php:247
12815
  msgid ""
12816
  "All products with \"per product\" options registered related to the currency "
12817
  "will be affected."
12818
  msgstr ""
12819
 
12820
+ #: includes/settings/wcj-settings-multicurrency.php:267
12821
  msgid ""
12822
  "One currency probably should be set to current (original) shop currency with "
12823
  "an exchange rate of 1."
12824
  msgstr ""
12825
 
12826
+ #: includes/settings/wcj-settings-multicurrency.php:272
12827
  msgid ""
12828
  "Press Save changes after setting this option, so new settings fields will be "
12829
  "added."
12830
  msgstr ""
12831
 
12832
+ #: includes/settings/wcj-settings-multicurrency.php:321
12833
  msgid "Role Defaults"
12834
  msgstr ""
12835
 
12836
+ #: includes/settings/wcj-settings-multicurrency.php:328
12837
  msgid "Roles"
12838
  msgstr ""
12839
 
12840
+ #: includes/settings/wcj-settings-multicurrency.php:329
12841
  #: includes/settings/wcj-settings-wholesale-price.php:237
12842
  msgid "Save settings after you change this option. Leave blank to disable."
12843
  msgstr ""
12844
 
12845
+ #: includes/settings/wcj-settings-multicurrency.php:352
12846
  msgid "No default currency"
12847
  msgstr ""
12848
 
13524
  msgid "Redirect back to Cart page"
13525
  msgstr ""
13526
 
13527
+ #: includes/settings/wcj-settings-order-min-amount.php:111
13528
+ msgid "Compatibility with other modules or plugins."
13529
+ msgstr ""
13530
+
13531
+ #: includes/settings/wcj-settings-order-min-amount.php:115
13532
+ msgid "WooCommerce Multilingual"
13533
+ msgstr ""
13534
+
13535
+ #: includes/settings/wcj-settings-order-min-amount.php:118
13536
+ #, php-format
13537
+ msgid ""
13538
+ "Adds compatibility with <a href=\"%s\" target=\"_blank\">WooCommerce "
13539
+ "Multilingual</a> plugin."
13540
+ msgstr ""
13541
+
13542
+ #: includes/settings/wcj-settings-order-min-amount.php:128
13543
  msgid "Order Minimum Amount by User Role"
13544
  msgstr ""
13545
 
13692
  msgid "Set to zero to enable numbering for all orders."
13693
  msgstr ""
13694
 
13695
+ #: includes/settings/wcj-settings-order-numbers.php:145
13696
+ msgid "WPNotif"
13697
+ msgstr ""
13698
+
13699
+ #: includes/settings/wcj-settings-order-numbers.php:147
13700
+ #, php-format
13701
+ msgid ""
13702
+ "Adds compatibility with <a href=\"%s\" target=\"_blank\">WPNotif: WordPress "
13703
+ "SMS & WhatsApp Notifications</a> plugin fixing the <code>{{wc-tracking-link}}"
13704
+ "</code> variable."
13705
+ msgstr ""
13706
+
13707
+ #: includes/settings/wcj-settings-order-numbers.php:158
13708
  msgid "Orders Renumerate Tool Options"
13709
  msgstr ""
13710
 
13711
+ #: includes/settings/wcj-settings-order-numbers.php:163
13712
  msgid "Sort by"
13713
  msgstr ""
13714
 
13715
+ #: includes/settings/wcj-settings-order-numbers.php:170
13716
  msgid "Last modified date"
13717
  msgstr ""
13718
 
13719
+ #: includes/settings/wcj-settings-order-numbers.php:175
13720
  msgid "Sort Ascending or Descending"
13721
  msgstr ""
13722
 
14617
  msgstr ""
14618
 
14619
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:25
14620
+ #: includes/settings/wcj-settings-price-by-country.php:328
14621
  #: includes/settings/wcj-settings-shipping.php:30
14622
  msgid "Admin Title"
14623
  msgstr ""
15081
  msgstr ""
15082
 
15083
  #: includes/settings/wcj-settings-price-by-country.php:132
 
 
 
 
 
 
 
 
15084
  msgid "Add Countries Flags Images to Select Drop-Down Box"
15085
  msgstr ""
15086
 
15087
+ #: includes/settings/wcj-settings-price-by-country.php:134
15088
  msgid ""
15089
  "If you are using [wcj_country_select_drop_down_list] shortcode or \"Booster: "
15090
  "Country Switcher\" widget, this will add country flags to these select boxes."
15091
  msgstr ""
15092
 
15093
+ #: includes/settings/wcj-settings-price-by-country.php:140
15094
  #: includes/settings/wcj-settings-price-by-user-role.php:61
15095
  msgid "Search Engine Bots"
15096
  msgstr ""
15097
 
15098
+ #: includes/settings/wcj-settings-price-by-country.php:141
15099
  msgid "Disable Price by Country for Bots"
15100
  msgstr ""
15101
 
15102
+ #: includes/settings/wcj-settings-price-by-country.php:156
15103
+ msgid "Price Filter Widget and Sorting by Price Support"
15104
  msgstr ""
15105
 
15106
+ #: includes/settings/wcj-settings-price-by-country.php:160
15107
+ msgid "Recalculate price filter widget and sorting by price product prices."
15108
+ msgstr ""
15109
+
15110
+ #: includes/settings/wcj-settings-price-by-country.php:166
15111
+ msgid "Free Shipping"
15112
+ msgstr ""
15113
+
15114
+ #: includes/settings/wcj-settings-price-by-country.php:169
15115
+ msgid "Converts minimum amount from WooCommerce Free Shipping native method."
15116
  msgstr ""
15117
 
15118
+ #: includes/settings/wcj-settings-price-by-country.php:175
15119
+ msgid "WooCommerce Coupons"
15120
+ msgstr ""
15121
+
15122
+ #: includes/settings/wcj-settings-price-by-country.php:183
15123
  msgid "Woo Discount Rules"
15124
  msgstr ""
15125
 
15126
+ #: includes/settings/wcj-settings-price-by-country.php:186
15127
  #, php-format
15128
  msgid ""
15129
  "Adds compatibility with <a href=\"%s\" target=\"_blank\">Woo Discount Rules</"
15130
  "a> plugin."
15131
  msgstr ""
15132
 
15133
+ #: includes/settings/wcj-settings-price-by-country.php:186
15134
  #, php-format
15135
  msgid ""
15136
  "If it doesn't work properly try to enable <a href=\"%s\">redirect to the "
15137
+ "cart page after successful addition</a> option."
15138
  msgstr ""
15139
 
15140
+ #: includes/settings/wcj-settings-price-by-country.php:208
15141
  msgid "User IP Detection Method"
15142
  msgstr ""
15143
 
15144
+ #: includes/settings/wcj-settings-price-by-country.php:218
15145
  msgid "Price Format Method"
15146
  msgstr ""
15147
 
15148
+ #: includes/settings/wcj-settings-price-by-country.php:219
15149
  msgid "The moment \"Pretty Price\" and \"Rounding\" will be applied"
15150
  msgstr ""
15151
 
15152
+ #: includes/settings/wcj-settings-price-by-country.php:224
15153
  msgid "get_price()"
15154
  msgstr ""
15155
 
15156
+ #: includes/settings/wcj-settings-price-by-country.php:225
15157
  msgid "wc_get_price_to_display()"
15158
  msgstr ""
15159
 
15160
+ #: includes/settings/wcj-settings-price-by-country.php:241
15161
  msgid "Country Groups"
15162
  msgstr ""
15163
 
15164
+ #: includes/settings/wcj-settings-price-by-country.php:246
15165
  msgid "Countries Selection"
15166
  msgstr ""
15167
 
15168
+ #: includes/settings/wcj-settings-price-by-country.php:247
15169
  msgid "Choose how do you want to enter countries groups in admin."
15170
  msgstr ""
15171
 
15172
+ #: includes/settings/wcj-settings-price-by-country.php:252
15173
  msgid "Comma separated list"
15174
  msgstr ""
15175
 
15176
+ #: includes/settings/wcj-settings-price-by-country.php:253
15177
  msgid "Multiselect"
15178
  msgstr ""
15179
 
15180
+ #: includes/settings/wcj-settings-price-by-country.php:254
15181
  #: includes/settings/wcj-settings-product-by-condition.php:82
15182
  #: includes/settings/wcj-settings-related-products.php:164
15183
  msgid "Chosen select"
15184
  msgstr ""
15185
 
15186
+ #: includes/settings/wcj-settings-price-by-country.php:258
15187
  msgid "Autogenerate Groups"
15188
  msgstr ""
15189
 
15190
+ #: includes/settings/wcj-settings-price-by-country.php:264
15191
  msgid "Groups Number"
15192
  msgstr ""
15193
 
15194
+ #: includes/settings/wcj-settings-price-by-country.php:288
15195
  msgid ""
15196
  "Countries. List of comma separated country codes.<br>For country codes and "
15197
  "predefined sets visit <a href=\"https://booster.io/country-codes/\" target="
15198
  "\"_blank\">https://booster.io/country-codes/</a>"
15199
  msgstr ""
15200
 
15201
+ #: includes/settings/wcj-settings-price-by-country.php:374
15202
  msgid "Multiply Price by"
15203
  msgstr ""
15204
 
16876
  msgid "Adds a MSRP field that will be displayed on the product archive."
16877
  msgstr ""
16878
 
16879
+ #: includes/settings/wcj-settings-product-msrp.php:142
16880
+ msgid "Archive Detection Method"
16881
+ msgstr ""
16882
+
16883
+ #: includes/settings/wcj-settings-product-msrp.php:143
16884
+ msgid "Template strings used to detect the loop."
16885
+ msgstr ""
16886
+
16887
+ #: includes/settings/wcj-settings-product-msrp.php:143
16888
+ msgid "Use 1 string per line."
16889
+ msgstr ""
16890
+
16891
+ #: includes/settings/wcj-settings-product-msrp.php:153
16892
  msgid "Template Variable Formulas"
16893
  msgstr ""
16894
 
16895
+ #: includes/settings/wcj-settings-product-msrp.php:158
16896
  msgid "You Save"
16897
  msgstr ""
16898
 
16899
+ #: includes/settings/wcj-settings-product-msrp.php:159
16900
+ #: includes/settings/wcj-settings-product-msrp.php:168
16901
  msgid "Variable: "
16902
  msgstr ""
16903
 
16904
+ #: includes/settings/wcj-settings-product-msrp.php:161
16905
  msgid "%you_save%"
16906
  msgstr ""
16907
 
16908
+ #: includes/settings/wcj-settings-product-msrp.php:167
16909
  msgid "You Save Percent"
16910
  msgstr ""
16911
 
16912
+ #: includes/settings/wcj-settings-product-msrp.php:170
16913
  msgid "%you_save_percent%"
16914
  msgstr ""
16915
 
17331
  msgstr ""
17332
 
17333
  #: includes/settings/wcj-settings-products-per-page.php:75
17334
+ #: includes/widgets/class-wcj-widget-country-switcher.php:89
17335
  #: includes/widgets/class-wcj-widget-multicurrency.php:88
17336
  msgid "Form Method"
17337
  msgstr ""
19164
  "necessary to enable MultiCurrency module"
19165
  msgstr ""
19166
 
19167
+ #: includes/settings/wcj-settings-wpml.php:42
19168
+ msgid "Synchronize Metas"
19169
+ msgstr ""
19170
+
19171
+ #: includes/settings/wcj-settings-wpml.php:45
19172
+ msgid ""
19173
+ "Try to automatically synchronize some Booster metas between products on "
19174
+ "different languages."
19175
+ msgstr ""
19176
+
19177
+ #: includes/settings/wcj-settings-wpml.php:55
19178
  msgid "WPML Language Configuration File Options"
19179
  msgstr ""
19180
 
19181
+ #: includes/settings/wcj-settings-wpml.php:57
19182
  #, php-format
19183
  msgid "Options for regenerating %s file."
19184
  msgstr ""
19185
 
19186
+ #: includes/settings/wcj-settings-wpml.php:61
19187
  msgid "Automatically Regenerate"
19188
  msgstr ""
19189
 
19190
+ #: includes/settings/wcj-settings-wpml.php:63
19191
  #, php-format
19192
  msgid "Automatically regenerate %s file on each Booster version update."
19193
  msgstr ""
19194
 
19195
+ #: includes/settings/wcj-settings-wpml.php:69
19196
  msgid "Modules to Skip"
19197
  msgstr ""
19198
 
19199
+ #: includes/settings/wcj-settings-wpml.php:70
19200
  msgid ""
19201
  "Select modules, which options you wish to exclude from wpml-config.xml file."
19202
  msgstr ""
19203
 
19204
+ #: includes/settings/wcj-settings-wpml.php:78
19205
  msgid "Option IDs to Skip"
19206
  msgstr ""
19207
 
19208
+ #: includes/settings/wcj-settings-wpml.php:79
19209
  msgid "Select options, which you wish to exclude from wpml-config.xml file."
19210
  msgstr ""
19211
 
19212
+ #: includes/settings/wcj-settings-wpml.php:80
19213
  #, php-format
19214
  msgid "Full or part of option ID. Separated by vertical bar %s."
19215
  msgstr ""
19216
 
19217
+ #: includes/settings/wcj-settings-wpml.php:102
19218
+ #: includes/settings/wcj-settings-wpml.php:104
19219
  msgid "Regenerate wpml-config.xml file"
19220
  msgstr ""
19221
 
19348
  msgid "Attribute \"name\" is required!"
19349
  msgstr ""
19350
 
19351
+ #: includes/shortcodes/class-wcj-shortcodes-orders.php:335
19352
  #, php-format
19353
  msgid "Refund #%1$s - %2$s"
19354
  msgstr ""
19546
  msgid "Customer Country Detection Method must include \"by user selection\"!"
19547
  msgstr ""
19548
 
19549
+ #: includes/widgets/class-wcj-widget-country-switcher.php:78
19550
  msgid "Replace with currency"
19551
  msgstr ""
19552
 
19553
+ #: includes/widgets/class-wcj-widget-country-switcher.php:90
19554
+ #: includes/widgets/class-wcj-widget-multicurrency.php:89
19555
+ msgid "HTML form method for \"Drop down\" and \"Radio list\" types."
19556
+ msgstr ""
19557
+
19558
+ #: includes/widgets/class-wcj-widget-country-switcher.php:95
19559
+ #: includes/widgets/class-wcj-widget-multicurrency.php:94
19560
+ msgid "Post"
19561
+ msgstr ""
19562
+
19563
+ #: includes/widgets/class-wcj-widget-country-switcher.php:96
19564
+ #: includes/widgets/class-wcj-widget-multicurrency.php:95
19565
+ msgid "Get"
19566
+ msgstr ""
19567
+
19568
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:27
19569
  msgid "Booster - Left to Free Shipping"
19570
  msgstr ""
19593
  msgid "Link list"
19594
  msgstr ""
19595
 
 
 
 
 
 
 
 
 
 
 
 
 
19596
  #: includes/widgets/class-wcj-widget-multicurrency.php:101
19597
  msgid "HTML class for \"Drop down\" type."
19598
  msgstr ""
readme.txt CHANGED
@@ -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.4
6
- Stable tag: 5.0.0
7
  License: GNU General Public License v3.0
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -193,6 +193,38 @@ You can see the differences between versions in this [table](https://booster.io/
193
 
194
  == Changelog ==
195
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  = 5.0.0 - 01/06/2020 =
197
  * Fix - PRICES & CURRENCIES - Wholesale Price - Consider `heading_format` param from `[wcj_product_wholesale_price_table]` on Heading Format option.
198
  * Fix - PRICES & CURRENCIES - Wholesale Price - Change 'Price Table Format' option to 'Table Heading Format'
3
  Tags: woocommerce, booster for woocommerce, woocommerce jetpack
4
  Requires at least: 4.4
5
  Tested up to: 5.4
6
+ Stable tag: 5.1.1
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.1.1 - 20/07/2020 =
197
+ * Fix - EMAILS & MISC. - My Account - Improve custom menu order algorithm.
198
+ * Fix - PRODUCTS - Product by Condition - Fix static database table name.
199
+ * Fix - PRODUCTS - Product MSRP - Improve 'Archive Detection Method' option using the `wc_get_template_part` hook besides the `woocommerce_before_template_part`.
200
+ * Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improves compatibility with 'Product Add-Ons' plugin and leave it as Booster Plus feature.
201
+ * Dev - PRICES & CURRENCIES - Product Price by Formula - Create 'Save Calculated Products Prices' option trying to avoid duplicated calculation.
202
+ * WC tested up to: 4.3
203
+
204
+ = 5.1.0 - 06/07/2020 =
205
+ * Fix - CART & CHECKOUT - EU VAT Number - Force accessing the VAT validation url on english version to avoid possible errors.
206
+ * Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improve compatibility with 'Pricing Deals' plugin.
207
+ * Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Remove compatibility option with 'Prices and Currencies by Country' module.
208
+ * Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improve compatibility option with 'WooCommerce Tree Table Rate Shipping' plugin.
209
+ * Fix - PRICES & CURRENCIES - Prices and Currencies by Country - Fix compatibility option with 'Price Filter Widget and Sorting by Price'.
210
+ * Fix - PRICES & CURRENCIES - Prices and Currencies by Country - Save `_wcj_price_by_country_$group_id` meta regardless of the 'Product Basis' option.
211
+ * Fix - PRODUCTS - Product Images - Fix 'Replace Image on Single' option.
212
+ * Fix - SHIPPING & ORDERS - Shipping by Cities - Improve city detection by also getting it when product quantity changes.
213
+ * Dev - EMAILS & MISC. - Export - Add `wcj_export_validation` filter with 3 parameters: `boolean`, `'object_type'`, `$object`.
214
+ * Dev - EMAILS & MISC. - Export - Add 'Smart Formatting' option to handle special characters as commas and quotes, formatting fields according to RFC4180 specification.
215
+ * Dev - EMAILS & MISC. - Booster WPML - General Options - Add 'Synchronize Metas' option allowing to synchronize some Booster metas between products in different languages.
216
+ * Dev - PDF INVOICING & PACKING SLIPS - Add `wcj_invoicing_header_content_length` filter allowing to add/remove the Content-Length header from the invoice.
217
+ * Dev - PRICES & CURRENCIES - Offer Your Price - Email Options - Add `%product_edit_link%` template variable.
218
+ * Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Add compatibility option with WooCommerce Free Shipping method.
219
+ * Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Improve performance running price update with a background process.
220
+ * Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Widget - Add option to control form method by POST or GET.
221
+ * Dev - PRODUCTS - Product MSRP - Add 'Archive Detection Method' option allowing better control to detect the archive template.
222
+ * Dev - SHIPPING & ORDERS - Order Minimum Amount - Add compatibility option with "WooCommerce Multilingual" plugin.
223
+ * Dev - SHIPPING & ORDERS - Order Numbers - Add compatibility option with WPNotif plugin.
224
+ * Dev - Shortcodes - Orders - Add `add_html_on_price` param.
225
+ * Dev - Functions - Price and Currency - Add `add_html_on_price` param allowing to return the price without the html.
226
+ * WC tested up to: 4.2
227
+
228
  = 5.0.0 - 01/06/2020 =
229
  * Fix - PRICES & CURRENCIES - Wholesale Price - Consider `heading_format` param from `[wcj_product_wholesale_price_table]` on Heading Format option.
230
  * Fix - PRICES & CURRENCIES - Wholesale Price - Change 'Price Table Format' option to 'Table Heading Format'
woocommerce-jetpack.php CHANGED
@@ -3,13 +3,13 @@
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.0.0
7
  Author: Pluggabl LLC
8
  Author URI: https://booster.io
9
  Text Domain: woocommerce-jetpack
10
  Domain Path: /langs
11
  Copyright: © 2020 Pluggabl LLC.
12
- WC tested up to: 4.1
13
  License: GNU General Public License v3.0
14
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
15
  */
@@ -57,7 +57,7 @@ final class WC_Jetpack {
57
  * @var string
58
  * @since 2.4.7
59
  */
60
- public $version = '5.0.0';
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.1.1
7
  Author: Pluggabl LLC
8
  Author URI: https://booster.io
9
  Text Domain: woocommerce-jetpack
10
  Domain Path: /langs
11
  Copyright: © 2020 Pluggabl LLC.
12
+ WC tested up to: 4.3
13
  License: GNU General Public License v3.0
14
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
15
  */
57
  * @var string
58
  * @since 2.4.7
59
  */
60
+ public $version = '5.1.1';
61
 
62
  /**
63
  * @var WC_Jetpack The single instance of the class