Booster for WooCommerce - Version 5.1.0

Version Description

  • 06/07/2020 =
  • Fix - CART & CHECKOUT - EU VAT Number - Force accessing the VAT validation url on english version to avoid possible errors.
  • Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improve compatibility with 'Pricing Deals' plugin.
  • Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Remove compatibility option with 'Prices and Currencies by Country' module.
  • Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improve compatibility option with 'WooCommerce Tree Table Rate Shipping' plugin.
  • Fix - PRICES & CURRENCIES - Prices and Currencies by Country - Fix compatibility option with 'Price Filter Widget and Sorting by Price'.
  • Fix - PRICES & CURRENCIES - Prices and Currencies by Country - Save _wcj_price_by_country_$group_id meta regardless of the 'Product Basis' option.
  • Fix - PRODUCTS - Product Images - Fix 'Replace Image on Single' option.
  • Fix - SHIPPING & ORDERS - Shipping by Cities - Improve city detection by also getting it when product quantity changes.
  • Dev - EMAILS & MISC. - Export - Add wcj_export_validation filter with 3 parameters: boolean, 'object_type', $object.
  • Dev - EMAILS & MISC. - Export - Add 'Smart Formatting' option to handle special characters as commas and quotes, formatting fields according to RFC4180 specification.
  • Dev - EMAILS & MISC. - Booster WPML - General Options - Add 'Synchronize Metas' option allowing to synchronize some Booster metas between products in different languages.
  • Dev - PDF INVOICING & PACKING SLIPS - Add wcj_invoicing_header_content_length filter allowing to add/remove the Content-Length header from the invoice.
  • Dev - PRICES & CURRENCIES - Offer Your Price - Email Options - Add %product_edit_link% template variable.
  • Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Add compatibility option with WooCommerce Free Shipping method.
  • Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Improve performance running price update with a background process.
  • Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Widget - Add option to control form method by POST or GET.
  • Dev - PRODUCTS - Product MSRP - Add 'Archive Detection Method' option allowing better control to detect the archive template.
  • Dev - SHIPPING & ORDERS - Order Minimum Amount - Add compatibility option with "WooCommerce Multilingual" plugin.
  • Dev - SHIPPING & ORDERS - Order Numbers - Add compatibility option with WPNotif plugin.
  • Dev - Shortcodes - Orders - Add add_html_on_price param.
  • Dev - Functions - Price and Currency - Add add_html_on_price param allowing to return the price without the html.
  • WC tested up to: 4.2
Download this release

Release Info

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

Code changes from version 5.0.0 to 5.1.0

Files changed (32) 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 +42 -23
  4. includes/class-wcj-offer-price.php +24 -22
  5. includes/class-wcj-order-min-amount.php +8 -2
  6. includes/class-wcj-order-numbers.php +74 -2
  7. includes/class-wcj-price-by-country.php +27 -6
  8. includes/class-wcj-product-images.php +3 -3
  9. includes/class-wcj-product-msrp.php +21 -3
  10. includes/class-wcj-shipping-by-cities.php +3 -3
  11. includes/class-wcj-wpml.php +55 -6
  12. includes/classes/class-wcj-module.php +25 -2
  13. includes/classes/class-wcj-pdf-invoice.php +5 -3
  14. includes/export/class-wcj-exporter-orders.php +12 -3
  15. includes/functions/wcj-functions-eu-vat.php +5 -4
  16. includes/functions/wcj-functions-exchange-rates.php +5 -2
  17. includes/functions/wcj-functions-price-currency.php +24 -5
  18. includes/price-by-country/class-wcj-price-by-country-core.php +328 -42
  19. includes/settings/wcj-settings-currency-exchange-rates.php +2 -2
  20. includes/settings/wcj-settings-export.php +10 -1
  21. includes/settings/wcj-settings-multicurrency.php +3 -3
  22. includes/settings/wcj-settings-offer-price.php +3 -3
  23. includes/settings/wcj-settings-order-min-amount.php +20 -1
  24. includes/settings/wcj-settings-order-numbers.php +19 -1
  25. includes/settings/wcj-settings-price-by-country.php +22 -12
  26. includes/settings/wcj-settings-product-msrp.php +8 -1
  27. includes/settings/wcj-settings-wpml.php +10 -1
  28. includes/shortcodes/class-wcj-shortcodes-orders.php +5 -4
  29. includes/widgets/class-wcj-widget-country-switcher.php +18 -4
  30. langs/woocommerce-jetpack.pot +293 -236
  31. readme.txt +25 -1
  32. 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
  */
@@ -224,7 +224,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 +235,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 +268,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' ) ) {
@@ -1065,9 +1074,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.0
6
  * @since 2.4.3
7
  * @author Pluggabl LLC.
8
  */
224
  /**
225
  * get_wc_tree_table_rate_settings.
226
  *
227
+ * @version 5.1.0
228
  * @since 4.9.0
229
  *
230
  * @param $option
235
  if ( 'no' === get_option( 'wcj_multicurrency_compatibility_wc_ttrs', 'no' ) ) {
236
  return $option;
237
  }
238
+ $transition_name = 'wcj_wc_tree_table_opt_' . md5( current_filter() );
239
+ if ( false === ( $modified_rule_result = get_transient( $transition_name ) ) ) {
240
+ $rule = json_decode( $option['rule'] );
241
+ $modified_rule = $this->recursively_convert_wc_tree_settings( $rule, array(
242
+ 'change_keys' => array( 'value', 'min', 'max' ),
243
+ 'exchange_rate' => $this->get_currency_exchange_rate( $this->get_current_currency_code() )
244
+ ) );
245
+ set_transient( $transition_name, json_encode( $modified_rule ), 5 * MINUTE_IN_SECONDS );
246
+ }
247
+ $option['rule'] = $modified_rule_result;
248
+ remove_filter( current_filter(), array( $this, 'convert_wc_tree_table_rate_settings' ) );
249
  return $option;
250
  }
251
 
252
  /**
253
  * recursively_convert_wc_tree_settings.
254
  *
255
+ * @version 5.1.0
256
  * @since 4.9.0
257
  *
258
  * @param $array
268
  $change_keys = $args['change_keys'];
269
  $exchange_rate = $args['exchange_rate'];
270
  foreach ( $array as $key => $value ) {
271
+ if ( in_array( $key, $change_keys ) ) {
272
+ if (
273
+ is_array( $array ) &&
274
+ isset( $array['condition'] ) &&
275
+ 'price' == $array['condition'] &&
276
+ ! empty( $value ) &&
277
+ is_numeric( $value )
278
+ ) {
279
+ $array[ $key ] = $value * $exchange_rate;
280
+ } elseif (
281
+ is_a( $array, 'stdClass' ) &&
282
+ property_exists( $array, 'condition' ) &&
283
+ 'price' === $array->condition &&
284
+ ! empty( $value ) &&
285
+ is_numeric( $value )
286
+ ) {
287
+ $array->$key = $value * $exchange_rate;
288
  }
289
  }
290
  if ( is_array( $value ) || is_a( $value, 'stdClass' ) ) {
1074
  /**
1075
  * change_price.
1076
  *
1077
+ * @version 5.1.0
1078
  */
1079
  function change_price( $price, $_product ) {
1080
+ //Pricing Deals
1081
+ global $vtprd_cart;
1082
+ if (
1083
+ 'yes' === get_option( 'wcj_multicurrency_compatibility_pricing_deals', 'no' ) &&
1084
+ ( is_cart() || is_checkout() ) &&
1085
+ ! empty( $vtprd_cart )
1086
+ ) {
1087
+ return $price;
1088
+ }
1089
+
1090
  if ( '' === $price ) {
1091
  return $price;
1092
  }
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
  */
@@ -152,16 +152,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.0
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  */
152
  }
153
  }
154
 
155
+ /**
156
+ * get_section_id_by_template_path.
157
+ *
158
+ * @version 5.1.0
159
+ * @since 5.1.0
160
+ *
161
+ * @param $template
162
+ *
163
+ * @return string
164
+ */
165
+ function get_section_id_by_template_path( $template ) {
166
+ $archive_detection_method = $this->get_option( 'wcj_product_msrp_archive_detection_method', 'loop' );
167
+ $archive_detection_method = array_values( array_filter( explode( PHP_EOL, $archive_detection_method ) ) );
168
+ return count( array_filter( $archive_detection_method, function ( $item ) use ( $template ) {
169
+ return strpos( $template, $item ) !== false;
170
+ } ) ) == 0 && is_singular() ? 'single' : 'archives';
171
+ }
172
+
173
  /**
174
  * display.
175
  *
176
+ * @version 5.1.0
177
  * @since 3.6.0
178
  * @todo (maybe) multicurrency
179
  * @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
180
  */
181
  function display( $price_html, $product ) {
182
+ $section_id = $this->get_section_id_by_template_path( $this->current_template_path );
183
  $display = get_option( 'wcj_product_msrp_display_on_' . $section_id, 'show' );
184
  if ( 'hide' == $display ) {
185
  return $price_html;
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.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' ),
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' ),
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-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
 
@@ -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
@@ -2165,7 +2165,7 @@ msgstr ""
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
@@ -2951,10 +2951,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 +2987,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
@@ -3088,7 +3091,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 +3332,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 +3492,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 +3684,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 +3702,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
@@ -4104,7 +4108,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 +4146,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
 
@@ -4556,7 +4560,7 @@ 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 +4877,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 +4903,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 +4928,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 +4959,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 +4988,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 +5547,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 +7220,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
@@ -7657,7 +7661,7 @@ msgstr ""
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 +7898,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 +10646,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 +10861,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 +10886,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 +10993,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 +11057,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 +11087,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
 
@@ -11102,7 +11106,7 @@ msgstr ""
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 +11181,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 +11189,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 +11197,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,7 +11205,7 @@ 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
 
@@ -11239,7 +11243,7 @@ msgstr ""
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 +11758,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
 
@@ -12291,7 +12306,7 @@ msgstr ""
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
@@ -12301,7 +12316,7 @@ msgstr ""
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
@@ -12521,14 +12536,16 @@ 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 +12679,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."
@@ -13501,7 +13503,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 +13671,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 +14596,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 +15060,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 +16855,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 +17310,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 +19143,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 +19327,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 +19525,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 +19572,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
 
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
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
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-min-amount.php:117
2955
  #: includes/settings/wcj-settings-order-numbers.php:97
2956
  #: includes/settings/wcj-settings-order-numbers.php:105
2957
  #: includes/settings/wcj-settings-order-numbers.php:112
2958
  #: includes/settings/wcj-settings-order-numbers.php:119
2959
+ #: includes/settings/wcj-settings-order-numbers.php:146
2960
  #: includes/settings/wcj-settings-order-quantities.php:23
2961
  #: includes/settings/wcj-settings-order-quantities.php:42
2962
  #: includes/settings/wcj-settings-order-quantities.php:49
2987
  #: includes/settings/wcj-settings-price-by-country.php:90
2988
  #: includes/settings/wcj-settings-price-by-country.php:106
2989
  #: includes/settings/wcj-settings-price-by-country.php:133
2990
+ #: includes/settings/wcj-settings-price-by-country.php:157
2991
+ #: includes/settings/wcj-settings-price-by-country.php:167
2992
+ #: includes/settings/wcj-settings-price-by-country.php:176
2993
+ #: includes/settings/wcj-settings-price-by-country.php:185
2994
+ #: includes/settings/wcj-settings-price-by-country.php:231
2995
  #: includes/settings/wcj-settings-price-by-user-role.php:19
2996
  #: includes/settings/wcj-settings-price-by-user-role.php:46
2997
  #: includes/settings/wcj-settings-price-by-user-role.php:93
3091
  #: includes/settings/wcj-settings-wholesale-price.php:63
3092
  #: includes/settings/wcj-settings-wpml.php:28
3093
  #: includes/settings/wcj-settings-wpml.php:35
3094
+ #: includes/settings/wcj-settings-wpml.php:44
3095
+ #: includes/settings/wcj-settings-wpml.php:62
3096
  msgid "Enable"
3097
  msgstr ""
3098
 
3332
  #: includes/settings/wcj-settings-admin-orders-list.php:71
3333
  #: includes/settings/wcj-settings-admin-products-list.php:56
3334
  #: includes/settings/wcj-settings-checkout-fees.php:76
3335
+ #: includes/settings/wcj-settings-export.php:100
3336
+ #: includes/settings/wcj-settings-export.php:171
3337
+ #: includes/settings/wcj-settings-export.php:250
3338
  #: includes/settings/wcj-settings-global-discount.php:74
3339
  msgid "Value"
3340
  msgstr ""
3492
  msgstr ""
3493
 
3494
  #: includes/class-wcj-product-by-country.php:30
3495
+ #: includes/widgets/class-wcj-widget-country-switcher.php:71
3496
  #: includes/widgets/class-wcj-widget-selector.php:64
3497
  msgid "Countries"
3498
  msgstr ""
3684
  #: includes/settings/wcj-settings-admin-orders-list.php:172
3685
  #: includes/settings/wcj-settings-checkout-fees.php:60
3686
  #: includes/settings/wcj-settings-cross-sells.php:42
3687
+ #: includes/settings/wcj-settings-export.php:84
3688
+ #: includes/settings/wcj-settings-export.php:152
3689
+ #: includes/settings/wcj-settings-export.php:234
3690
  #: includes/settings/wcj-settings-my-account.php:161
3691
  #: includes/settings/wcj-settings-product-add-to-cart.php:300
3692
  #: includes/settings/wcj-settings-product-addons.php:92
3702
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:191
3703
  #: includes/shipping/class-wc-shipping-wcj-custom.php:107
3704
  #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:334
3705
+ #: includes/widgets/class-wcj-widget-country-switcher.php:64
3706
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:52
3707
  #: includes/widgets/class-wcj-widget-multicurrency.php:69
3708
  #: includes/widgets/class-wcj-widget-selector.php:52
4108
  #: includes/settings/wcj-settings-checkout-custom-fields.php:265
4109
  #: includes/settings/wcj-settings-product-addons.php:242
4110
  #: includes/settings/wcj-settings-related-products.php:176
4111
+ #: includes/widgets/class-wcj-widget-country-switcher.php:84
4112
  msgid "No"
4113
  msgstr ""
4114
 
4146
  #: includes/settings/wcj-settings-eu-vat-number.php:154
4147
  #: includes/settings/wcj-settings-product-addons.php:241
4148
  #: includes/settings/wcj-settings-related-products.php:175
4149
+ #: includes/widgets/class-wcj-widget-country-switcher.php:85
4150
  msgid "Yes"
4151
  msgstr ""
4152
 
4560
 
4561
  #: includes/class-wcj-shipping-by-user-role.php:33
4562
  #: includes/settings/wcj-settings-multicurrency.php:314
4563
+ #: includes/settings/wcj-settings-order-min-amount.php:131
4564
  #: includes/settings/wcj-settings-price-by-user-role.php:133
4565
  #, php-format
4566
  msgid ""
4877
  "less)."
4878
  msgstr ""
4879
 
4880
+ #: includes/class-wcj-wpml.php:29
4881
  msgid "Booster WPML"
4882
  msgstr ""
4883
 
4884
+ #: includes/class-wcj-wpml.php:30
4885
  msgid "Booster for WooCommerce basic WPML support."
4886
  msgstr ""
4887
 
4888
+ #: includes/class-wcj-wpml.php:190
4889
  msgid "File wpml-config.xml successfully regenerated!"
4890
  msgstr ""
4891
 
4903
  msgid "Invisible"
4904
  msgstr ""
4905
 
4906
+ #: includes/classes/class-wcj-module.php:173
4907
  msgid "WPML: Get Terms in All Languages"
4908
  msgstr ""
4909
 
4910
+ #: includes/classes/class-wcj-module.php:175
4911
  msgid "Get tags and taxonomies in all languages"
4912
  msgstr ""
4913
 
4914
+ #: includes/classes/class-wcj-module.php:194
4915
  msgid "WPML: Get Products in All Languages"
4916
  msgstr ""
4917
 
4918
+ #: includes/classes/class-wcj-module.php:196
4919
  msgid "Get products in all languages"
4920
  msgstr ""
4921
 
4922
+ #: includes/classes/class-wcj-module.php:327
4923
  #, php-format
4924
  msgid ""
4925
  "Booster: Free plugin's version is limited to only one \"%1$s\" product with "
4928
  "\"%1$s\" products."
4929
  msgstr ""
4930
 
4931
+ #: includes/classes/class-wcj-module.php:647
4932
  #, php-format
4933
  msgid "Selected: %s."
4934
  msgstr ""
4935
 
4936
+ #: includes/classes/class-wcj-module.php:716
4937
  msgid "Back to Module Settings"
4938
  msgstr ""
4939
 
4940
+ #: includes/classes/class-wcj-module.php:734
4941
+ #: includes/settings/wcj-settings-wpml.php:96
4942
  msgid "Module Tools"
4943
  msgstr ""
4944
 
4945
+ #: includes/classes/class-wcj-module.php:807
4946
  #: includes/settings/wcj-settings-checkout-core-fields.php:77
4947
  msgid "enabled"
4948
  msgstr ""
4949
 
4950
+ #: includes/classes/class-wcj-module.php:808
4951
  msgid "disabled"
4952
  msgstr ""
4953
 
4954
+ #: includes/classes/class-wcj-module.php:816
4955
  #: includes/settings/wcj-settings-product-tabs.php:172
4956
  #: includes/settings/wcj-settings-product-tabs.php:184
4957
  #: includes/settings/wcj-settings-product-tabs.php:196
4959
  msgid "Deprecated"
4960
  msgstr ""
4961
 
4962
+ #: includes/classes/class-wcj-module.php:854
4963
  msgid "Reset Settings"
4964
  msgstr ""
4965
 
4966
+ #: includes/classes/class-wcj-module.php:860
4967
  msgid "Reset Module to Default Settings"
4968
  msgstr ""
4969
 
4970
+ #: includes/classes/class-wcj-module.php:861
4971
  msgid "Reset Submodule to Default Settings"
4972
  msgstr ""
4973
 
4974
+ #: includes/classes/class-wcj-module.php:865
4975
  msgid "Reset settings"
4976
  msgstr ""
4977
 
4978
+ #: includes/classes/class-wcj-module.php:899
4979
  msgid "Module Options"
4980
  msgstr ""
4981
 
4982
+ #: includes/classes/class-wcj-module.php:906
4983
  msgid "Enable Module"
4984
  msgstr ""
4985
 
4988
  msgid "Company Name"
4989
  msgstr ""
4990
 
4991
+ #: includes/classes/class-wcj-pdf-invoice.php:263
4992
  #: includes/functions/wcj-functions-general.php:145
4993
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:245
4994
  msgid "Unexpected error"
5547
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:83
5548
  #: includes/settings/wcj-settings-checkout-custom-fields.php:130
5549
  #: includes/settings/wcj-settings-checkout-fees.php:66
5550
+ #: includes/settings/wcj-settings-export.php:90
5551
+ #: includes/settings/wcj-settings-export.php:158
5552
+ #: includes/settings/wcj-settings-export.php:240
5553
  #: includes/settings/wcj-settings-global-discount.php:63
5554
  #: includes/settings/wcj-settings-product-addons.php:80
5555
  #: includes/settings/wcj-settings-purchase-data.php:84
7220
  #: includes/settings/wcj-settings-admin-products-list.php:43
7221
  #: includes/settings/wcj-settings-checkout-core-fields.php:83
7222
  #: includes/settings/wcj-settings-checkout-files-upload.php:40
7223
+ #: includes/settings/wcj-settings-export.php:79
7224
+ #: includes/settings/wcj-settings-export.php:147
7225
+ #: includes/settings/wcj-settings-export.php:229
7226
  #: includes/settings/wcj-settings-global-discount.php:55
7227
  #: includes/settings/wcj-settings-product-by-user.php:149
7228
  #: includes/settings/wcj-settings-products-xml.php:76
7661
  #: includes/settings/wcj-settings-multicurrency-base-price.php:63
7662
  #: includes/settings/wcj-settings-multicurrency.php:215
7663
  #: includes/settings/wcj-settings-order-min-amount.php:77
7664
+ #: includes/settings/wcj-settings-price-by-country.php:196
7665
  #: includes/settings/wcj-settings-price-by-user-role.php:106
7666
  #: includes/settings/wcj-settings-product-addons.php:230
7667
  msgid "Advanced"
7898
 
7899
  #: includes/price-by-country/class-wcj-price-by-country-local.php:111
7900
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:67
7901
+ #: includes/settings/wcj-settings-price-by-country.php:382
7902
  msgid "Make empty price"
7903
  msgstr ""
7904
 
7905
  #: includes/price-by-country/class-wcj-price-by-country-local.php:215
7906
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:17
7907
  #: includes/settings/wcj-settings-add-to-cart.php:50
7908
+ #: includes/settings/wcj-settings-price-by-country.php:276
7909
+ #: includes/settings/wcj-settings-price-by-country.php:277
7910
+ #: includes/settings/wcj-settings-price-by-country.php:282
7911
+ #: includes/settings/wcj-settings-price-by-country.php:330
7912
+ #: includes/settings/wcj-settings-price-by-country.php:373
7913
  msgid "Group"
7914
  msgstr ""
7915
 
10646
  msgstr ""
10647
 
10648
  #: includes/settings/wcj-settings-checkout-files-upload.php:313
10649
+ #: includes/settings/wcj-settings-export.php:77
10650
+ #: includes/settings/wcj-settings-export.php:145
10651
+ #: includes/settings/wcj-settings-export.php:227
10652
  msgid "Field"
10653
  msgstr ""
10654
 
10861
  msgstr ""
10862
 
10863
  #: includes/settings/wcj-settings-cross-sells.php:41
10864
+ #: includes/settings/wcj-settings-order-numbers.php:171
10865
  #: includes/settings/wcj-settings-related-products.php:22
10866
  #: includes/settings/wcj-settings-upsells.php:41
10867
  msgid "Random"
10886
  msgstr ""
10887
 
10888
  #: includes/settings/wcj-settings-cross-sells.php:59
10889
+ #: includes/settings/wcj-settings-order-numbers.php:181
10890
  #: includes/settings/wcj-settings-products-xml.php:235
10891
  #: includes/settings/wcj-settings-related-products.php:91
10892
  msgid "Descending"
10893
  msgstr ""
10894
 
10895
  #: includes/settings/wcj-settings-cross-sells.php:60
10896
+ #: includes/settings/wcj-settings-order-numbers.php:180
10897
  #: includes/settings/wcj-settings-products-xml.php:236
10898
  #: includes/settings/wcj-settings-related-products.php:90
10899
  msgid "Ascending"
10993
  #: includes/settings/wcj-settings-multicurrency-base-price.php:22
10994
  #: includes/settings/wcj-settings-multicurrency.php:22
10995
  #: includes/settings/wcj-settings-payment-gateways-currency.php:68
10996
+ #: includes/settings/wcj-settings-price-by-country.php:346
10997
  msgid "Exchange Rates Updates"
10998
  msgstr ""
10999
 
11057
  msgstr ""
11058
 
11059
  #: includes/settings/wcj-settings-currency-exchange-rates.php:119
11060
+ msgid "Free Currency Converter API Key"
11061
  msgstr ""
11062
 
11063
  #: includes/settings/wcj-settings-currency-exchange-rates.php:120
11087
  msgstr ""
11088
 
11089
  #: includes/settings/wcj-settings-currency-exchange-rates.php:173
11090
+ #: includes/settings/wcj-settings-price-by-country.php:341
11091
  msgid "Exchange Rates"
11092
  msgstr ""
11093
 
11106
  #: includes/settings/wcj-settings-currency-per-product.php:180
11107
  #: includes/settings/wcj-settings-multicurrency-base-price.php:142
11108
  #: includes/settings/wcj-settings-multicurrency.php:287
11109
+ #: includes/settings/wcj-settings-price-by-country.php:321
11110
  #: includes/settings/wcj-settings-price-formats.php:59
11111
  msgid "Currency"
11112
  msgstr ""
11181
  #: includes/settings/wcj-settings-multicurrency-base-price.php:27
11182
  #: includes/settings/wcj-settings-multicurrency.php:28
11183
  #: includes/settings/wcj-settings-payment-gateways-currency.php:73
11184
+ #: includes/settings/wcj-settings-price-by-country.php:351
11185
  msgid "Enter Rates Manually"
11186
  msgstr ""
11187
 
11189
  #: includes/settings/wcj-settings-multicurrency-base-price.php:28
11190
  #: includes/settings/wcj-settings-multicurrency.php:29
11191
  #: includes/settings/wcj-settings-payment-gateways-currency.php:74
11192
+ #: includes/settings/wcj-settings-price-by-country.php:352
11193
  msgid "Automatically via Currency Exchange Rates module"
11194
  msgstr ""
11195
 
11197
  #: includes/settings/wcj-settings-multicurrency-base-price.php:31
11198
  #: includes/settings/wcj-settings-multicurrency.php:32
11199
  #: includes/settings/wcj-settings-payment-gateways-currency.php:77
11200
+ #: includes/settings/wcj-settings-price-by-country.php:355
11201
  msgid "Visit"
11202
  msgstr ""
11203
 
11205
  #: includes/settings/wcj-settings-multicurrency-base-price.php:31
11206
  #: includes/settings/wcj-settings-multicurrency.php:32
11207
  #: includes/settings/wcj-settings-payment-gateways-currency.php:79
11208
+ #: includes/settings/wcj-settings-price-by-country.php:355
11209
  msgid "Currency Exchange Rates module"
11210
  msgstr ""
11211
 
11243
  #: includes/settings/wcj-settings-currency-per-product.php:257
11244
  #: includes/settings/wcj-settings-multicurrency-base-price.php:69
11245
  #: includes/settings/wcj-settings-multicurrency.php:245
11246
+ #: includes/settings/wcj-settings-price-by-country.php:230
11247
  msgid ""
11248
  "This may help if you are experiencing compatibility issues with other "
11249
  "plugins."
11758
  msgstr ""
11759
 
11760
  #: includes/settings/wcj-settings-export.php:26
11761
+ msgid "Smart Formatting"
11762
+ msgstr ""
11763
+
11764
+ #: includes/settings/wcj-settings-export.php:30
11765
+ #, php-format
11766
+ msgid ""
11767
+ "Tries to handle special characters as commas and quotes, formatting fields "
11768
+ "according to <a href=\"%s\">RFC4180</a>"
11769
+ msgstr ""
11770
+
11771
+ #: includes/settings/wcj-settings-export.php:35
11772
  msgid "UTF-8 BOM"
11773
  msgstr ""
11774
 
11775
+ #: includes/settings/wcj-settings-export.php:37
11776
  msgid "Add UTF-8 BOM sequence"
11777
  msgstr ""
11778
 
11779
+ #: includes/settings/wcj-settings-export.php:47
11780
  msgid "Export Orders Options"
11781
  msgstr ""
11782
 
11783
+ #: includes/settings/wcj-settings-export.php:52
11784
  msgid "Export Orders Fields"
11785
  msgstr ""
11786
 
11787
+ #: includes/settings/wcj-settings-export.php:53
11788
+ #: includes/settings/wcj-settings-export.php:121
11789
+ #: includes/settings/wcj-settings-export.php:192
11790
+ #: includes/settings/wcj-settings-export.php:271
11791
+ #: includes/settings/wcj-settings-export.php:289
11792
  msgid "Hold \"Control\" key to select multiple fields."
11793
  msgstr ""
11794
 
11795
+ #: includes/settings/wcj-settings-export.php:61
11796
  msgid "Additional Export Orders Fields"
11797
  msgstr ""
11798
 
11799
+ #: includes/settings/wcj-settings-export.php:96
11800
+ #: includes/settings/wcj-settings-export.php:165
11801
  msgid "Order Shortcode"
11802
  msgstr ""
11803
 
11804
+ #: includes/settings/wcj-settings-export.php:101
11805
  msgid ""
11806
  "If field's \"Type\" is set to \"Meta\", enter order meta key to retrieve "
11807
  "(can be custom field name)."
11808
  msgstr ""
11809
 
11810
+ #: includes/settings/wcj-settings-export.php:102
11811
  msgid "If it's set to \"Shortcode\", use Booster's Orders shortcodes here."
11812
  msgstr ""
11813
 
11814
+ #: includes/settings/wcj-settings-export.php:115
11815
  msgid "Export Orders Items Options"
11816
  msgstr ""
11817
 
11818
+ #: includes/settings/wcj-settings-export.php:120
11819
  msgid "Export Orders Items Fields"
11820
  msgstr ""
11821
 
11822
+ #: includes/settings/wcj-settings-export.php:129
11823
  msgid "Additional Export Orders Items Fields"
11824
  msgstr ""
11825
 
11826
+ #: includes/settings/wcj-settings-export.php:164
11827
  msgid "Order Item Meta"
11828
  msgstr ""
11829
 
11830
+ #: includes/settings/wcj-settings-export.php:167
11831
+ #: includes/settings/wcj-settings-export.php:246
11832
  msgid "Product Shortcode"
11833
  msgstr ""
11834
 
11835
+ #: includes/settings/wcj-settings-export.php:172
11836
  msgid ""
11837
  "If field's \"Type\" is set to \"Meta\", enter order/product meta key to "
11838
  "retrieve (can be custom field name)."
11839
  msgstr ""
11840
 
11841
+ #: includes/settings/wcj-settings-export.php:173
11842
  msgid ""
11843
  "If it's set to \"Shortcode\", use Booster's Orders/Products shortcodes here."
11844
  msgstr ""
11845
 
11846
+ #: includes/settings/wcj-settings-export.php:186
11847
  msgid "Export Products Options"
11848
  msgstr ""
11849
 
11850
+ #: includes/settings/wcj-settings-export.php:191
11851
  msgid "Export Products Fields"
11852
  msgstr ""
11853
 
11854
+ #: includes/settings/wcj-settings-export.php:200
11855
  #: includes/settings/wcj-settings-free-price.php:14
11856
  #: includes/settings/wcj-settings-order-quantities.php:56
11857
  msgid "Variable Products"
11858
  msgstr ""
11859
 
11860
+ #: includes/settings/wcj-settings-export.php:205
11861
  msgid "Export variable (main) product only"
11862
  msgstr ""
11863
 
11864
+ #: includes/settings/wcj-settings-export.php:206
11865
  msgid "Export variation products only"
11866
  msgstr ""
11867
 
11868
+ #: includes/settings/wcj-settings-export.php:207
11869
  msgid "Export variable (main) and variation products"
11870
  msgstr ""
11871
 
11872
+ #: includes/settings/wcj-settings-export.php:211
11873
  msgid "Additional Export Products Fields"
11874
  msgstr ""
11875
 
11876
+ #: includes/settings/wcj-settings-export.php:251
11877
  msgid ""
11878
  "If field's \"Type\" is set to \"Meta\", enter product meta key to retrieve "
11879
  "(can be custom field name)."
11880
  msgstr ""
11881
 
11882
+ #: includes/settings/wcj-settings-export.php:252
11883
  msgid "If it's set to \"Shortcode\", use Booster's Products shortcodes here."
11884
  msgstr ""
11885
 
11886
+ #: includes/settings/wcj-settings-export.php:265
11887
  msgid "Export Customers Options"
11888
  msgstr ""
11889
 
11890
+ #: includes/settings/wcj-settings-export.php:270
11891
  msgid "Export Customers Fields"
11892
  msgstr ""
11893
 
11894
+ #: includes/settings/wcj-settings-export.php:283
11895
  msgid "Export Customers from Orders Options"
11896
  msgstr ""
11897
 
11898
+ #: includes/settings/wcj-settings-export.php:288
11899
  msgid "Export Customers from Orders Fields"
11900
  msgstr ""
11901
 
12306
  #: includes/settings/wcj-settings-global-discount.php:201
12307
  #: includes/settings/wcj-settings-multicurrency-base-price.php:76
12308
  #: includes/settings/wcj-settings-multicurrency.php:229
12309
+ #: includes/settings/wcj-settings-price-by-country.php:201
12310
  #: includes/settings/wcj-settings-price-by-user-role.php:111
12311
  #: includes/settings/wcj-settings-product-addons.php:258
12312
  #: includes/settings/wcj-settings-product-price-by-formula.php:100
12316
  #: includes/settings/wcj-settings-global-discount.php:202
12317
  #: includes/settings/wcj-settings-multicurrency-base-price.php:77
12318
  #: includes/settings/wcj-settings-multicurrency.php:230
12319
+ #: includes/settings/wcj-settings-price-by-country.php:202
12320
  #: includes/settings/wcj-settings-price-by-user-role.php:112
12321
  #: includes/settings/wcj-settings-product-addons.php:259
12322
  #: includes/settings/wcj-settings-product-price-by-formula.php:101
12536
 
12537
  #: includes/settings/wcj-settings-multicurrency-base-price.php:68
12538
  #: includes/settings/wcj-settings-multicurrency.php:244
12539
+ #: includes/settings/wcj-settings-price-by-country.php:229
12540
  msgid "Save Calculated Products Prices"
12541
  msgstr ""
12542
 
12543
  #: includes/settings/wcj-settings-multicurrency-base-price.php:87
12544
  #: includes/settings/wcj-settings-multicurrency.php:115
12545
+ #: includes/settings/wcj-settings-order-min-amount.php:109
12546
+ #: includes/settings/wcj-settings-order-numbers.php:140
12547
  #: includes/settings/wcj-settings-payment-gateways-min-max.php:65
12548
+ #: includes/settings/wcj-settings-price-by-country.php:151
12549
  #: includes/settings/wcj-settings-product-msrp.php:105
12550
  msgid "Compatibility"
12551
  msgstr ""
12679
  "Disable it if you have some other plugin already converting it like WPML."
12680
  msgstr ""
12681
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12682
  #: includes/settings/wcj-settings-multicurrency.php:128
12683
  msgid "WooCommerce Fixed Coupons"
12684
  msgstr ""
12685
 
12686
  #: includes/settings/wcj-settings-multicurrency.php:130
12687
+ #: includes/settings/wcj-settings-price-by-country.php:177
12688
  msgid ""
12689
  "When a fixed coupon is used its value changes according to the current "
12690
  "currency."
13503
  msgid "Redirect back to Cart page"
13504
  msgstr ""
13505
 
13506
+ #: includes/settings/wcj-settings-order-min-amount.php:111
13507
+ msgid "Compatibility with other modules or plugins."
13508
+ msgstr ""
13509
+
13510
+ #: includes/settings/wcj-settings-order-min-amount.php:115
13511
+ msgid "WooCommerce Multilingual"
13512
+ msgstr ""
13513
+
13514
+ #: includes/settings/wcj-settings-order-min-amount.php:118
13515
+ #, php-format
13516
+ msgid ""
13517
+ "Adds compatibility with <a href=\"%s\" target=\"_blank\">WooCommerce "
13518
+ "Multilingual</a> plugin."
13519
+ msgstr ""
13520
+
13521
+ #: includes/settings/wcj-settings-order-min-amount.php:128
13522
  msgid "Order Minimum Amount by User Role"
13523
  msgstr ""
13524
 
13671
  msgid "Set to zero to enable numbering for all orders."
13672
  msgstr ""
13673
 
13674
+ #: includes/settings/wcj-settings-order-numbers.php:145
13675
+ msgid "WPNotif"
13676
+ msgstr ""
13677
+
13678
+ #: includes/settings/wcj-settings-order-numbers.php:147
13679
+ #, php-format
13680
+ msgid ""
13681
+ "Adds compatibility with <a href=\"%s\" target=\"_blank\">WPNotif: WordPress "
13682
+ "SMS & WhatsApp Notifications</a> plugin fixing the <code>{{wc-tracking-link}}"
13683
+ "</code> variable."
13684
+ msgstr ""
13685
+
13686
+ #: includes/settings/wcj-settings-order-numbers.php:158
13687
  msgid "Orders Renumerate Tool Options"
13688
  msgstr ""
13689
 
13690
+ #: includes/settings/wcj-settings-order-numbers.php:163
13691
  msgid "Sort by"
13692
  msgstr ""
13693
 
13694
+ #: includes/settings/wcj-settings-order-numbers.php:170
13695
  msgid "Last modified date"
13696
  msgstr ""
13697
 
13698
+ #: includes/settings/wcj-settings-order-numbers.php:175
13699
  msgid "Sort Ascending or Descending"
13700
  msgstr ""
13701
 
14596
  msgstr ""
14597
 
14598
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:25
14599
+ #: includes/settings/wcj-settings-price-by-country.php:328
14600
  #: includes/settings/wcj-settings-shipping.php:30
14601
  msgid "Admin Title"
14602
  msgstr ""
15060
  msgstr ""
15061
 
15062
  #: includes/settings/wcj-settings-price-by-country.php:132
 
 
 
 
 
 
 
 
15063
  msgid "Add Countries Flags Images to Select Drop-Down Box"
15064
  msgstr ""
15065
 
15066
+ #: includes/settings/wcj-settings-price-by-country.php:134
15067
  msgid ""
15068
  "If you are using [wcj_country_select_drop_down_list] shortcode or \"Booster: "
15069
  "Country Switcher\" widget, this will add country flags to these select boxes."
15070
  msgstr ""
15071
 
15072
+ #: includes/settings/wcj-settings-price-by-country.php:140
15073
  #: includes/settings/wcj-settings-price-by-user-role.php:61
15074
  msgid "Search Engine Bots"
15075
  msgstr ""
15076
 
15077
+ #: includes/settings/wcj-settings-price-by-country.php:141
15078
  msgid "Disable Price by Country for Bots"
15079
  msgstr ""
15080
 
15081
+ #: includes/settings/wcj-settings-price-by-country.php:156
15082
+ msgid "Price Filter Widget and Sorting by Price Support"
15083
  msgstr ""
15084
 
15085
+ #: includes/settings/wcj-settings-price-by-country.php:160
15086
+ msgid "Recalculate price filter widget and sorting by price product prices."
15087
+ msgstr ""
15088
+
15089
+ #: includes/settings/wcj-settings-price-by-country.php:166
15090
+ msgid "Free Shipping"
15091
+ msgstr ""
15092
+
15093
+ #: includes/settings/wcj-settings-price-by-country.php:169
15094
+ msgid "Converts minimum amount from WooCommerce Free Shipping native method."
15095
+ msgstr ""
15096
+
15097
+ #: includes/settings/wcj-settings-price-by-country.php:175
15098
+ msgid "WooCommerce Coupons"
15099
  msgstr ""
15100
 
15101
+ #: includes/settings/wcj-settings-price-by-country.php:183
15102
  msgid "Woo Discount Rules"
15103
  msgstr ""
15104
 
15105
+ #: includes/settings/wcj-settings-price-by-country.php:186
15106
  #, php-format
15107
  msgid ""
15108
  "Adds compatibility with <a href=\"%s\" target=\"_blank\">Woo Discount Rules</"
15109
  "a> plugin."
15110
  msgstr ""
15111
 
15112
+ #: includes/settings/wcj-settings-price-by-country.php:186
15113
  #, php-format
15114
  msgid ""
15115
  "If it doesn't work properly try to enable <a href=\"%s\">redirect to the "
15116
+ "cart page after successful addition</a> option."
15117
  msgstr ""
15118
 
15119
+ #: includes/settings/wcj-settings-price-by-country.php:208
15120
  msgid "User IP Detection Method"
15121
  msgstr ""
15122
 
15123
+ #: includes/settings/wcj-settings-price-by-country.php:218
15124
  msgid "Price Format Method"
15125
  msgstr ""
15126
 
15127
+ #: includes/settings/wcj-settings-price-by-country.php:219
15128
  msgid "The moment \"Pretty Price\" and \"Rounding\" will be applied"
15129
  msgstr ""
15130
 
15131
+ #: includes/settings/wcj-settings-price-by-country.php:224
15132
  msgid "get_price()"
15133
  msgstr ""
15134
 
15135
+ #: includes/settings/wcj-settings-price-by-country.php:225
15136
  msgid "wc_get_price_to_display()"
15137
  msgstr ""
15138
 
15139
+ #: includes/settings/wcj-settings-price-by-country.php:241
15140
  msgid "Country Groups"
15141
  msgstr ""
15142
 
15143
+ #: includes/settings/wcj-settings-price-by-country.php:246
15144
  msgid "Countries Selection"
15145
  msgstr ""
15146
 
15147
+ #: includes/settings/wcj-settings-price-by-country.php:247
15148
  msgid "Choose how do you want to enter countries groups in admin."
15149
  msgstr ""
15150
 
15151
+ #: includes/settings/wcj-settings-price-by-country.php:252
15152
  msgid "Comma separated list"
15153
  msgstr ""
15154
 
15155
+ #: includes/settings/wcj-settings-price-by-country.php:253
15156
  msgid "Multiselect"
15157
  msgstr ""
15158
 
15159
+ #: includes/settings/wcj-settings-price-by-country.php:254
15160
  #: includes/settings/wcj-settings-product-by-condition.php:82
15161
  #: includes/settings/wcj-settings-related-products.php:164
15162
  msgid "Chosen select"
15163
  msgstr ""
15164
 
15165
+ #: includes/settings/wcj-settings-price-by-country.php:258
15166
  msgid "Autogenerate Groups"
15167
  msgstr ""
15168
 
15169
+ #: includes/settings/wcj-settings-price-by-country.php:264
15170
  msgid "Groups Number"
15171
  msgstr ""
15172
 
15173
+ #: includes/settings/wcj-settings-price-by-country.php:288
15174
  msgid ""
15175
  "Countries. List of comma separated country codes.<br>For country codes and "
15176
  "predefined sets visit <a href=\"https://booster.io/country-codes/\" target="
15177
  "\"_blank\">https://booster.io/country-codes/</a>"
15178
  msgstr ""
15179
 
15180
+ #: includes/settings/wcj-settings-price-by-country.php:374
15181
  msgid "Multiply Price by"
15182
  msgstr ""
15183
 
16855
  msgid "Adds a MSRP field that will be displayed on the product archive."
16856
  msgstr ""
16857
 
16858
+ #: includes/settings/wcj-settings-product-msrp.php:142
16859
+ msgid "Archive Detection Method"
16860
+ msgstr ""
16861
+
16862
+ #: includes/settings/wcj-settings-product-msrp.php:143
16863
+ msgid "Template strings used to detect the loop."
16864
+ msgstr ""
16865
+
16866
+ #: includes/settings/wcj-settings-product-msrp.php:143
16867
+ msgid "Use 1 string per line."
16868
+ msgstr ""
16869
+
16870
+ #: includes/settings/wcj-settings-product-msrp.php:153
16871
  msgid "Template Variable Formulas"
16872
  msgstr ""
16873
 
16874
+ #: includes/settings/wcj-settings-product-msrp.php:158
16875
  msgid "You Save"
16876
  msgstr ""
16877
 
16878
+ #: includes/settings/wcj-settings-product-msrp.php:159
16879
+ #: includes/settings/wcj-settings-product-msrp.php:168
16880
  msgid "Variable: "
16881
  msgstr ""
16882
 
16883
+ #: includes/settings/wcj-settings-product-msrp.php:161
16884
  msgid "%you_save%"
16885
  msgstr ""
16886
 
16887
+ #: includes/settings/wcj-settings-product-msrp.php:167
16888
  msgid "You Save Percent"
16889
  msgstr ""
16890
 
16891
+ #: includes/settings/wcj-settings-product-msrp.php:170
16892
  msgid "%you_save_percent%"
16893
  msgstr ""
16894
 
17310
  msgstr ""
17311
 
17312
  #: includes/settings/wcj-settings-products-per-page.php:75
17313
+ #: includes/widgets/class-wcj-widget-country-switcher.php:89
17314
  #: includes/widgets/class-wcj-widget-multicurrency.php:88
17315
  msgid "Form Method"
17316
  msgstr ""
19143
  "necessary to enable MultiCurrency module"
19144
  msgstr ""
19145
 
19146
+ #: includes/settings/wcj-settings-wpml.php:42
19147
+ msgid "Synchronize Metas"
19148
+ msgstr ""
19149
+
19150
+ #: includes/settings/wcj-settings-wpml.php:45
19151
+ msgid ""
19152
+ "Try to automatically synchronize some Booster metas between products on "
19153
+ "different languages."
19154
+ msgstr ""
19155
+
19156
+ #: includes/settings/wcj-settings-wpml.php:55
19157
  msgid "WPML Language Configuration File Options"
19158
  msgstr ""
19159
 
19160
+ #: includes/settings/wcj-settings-wpml.php:57
19161
  #, php-format
19162
  msgid "Options for regenerating %s file."
19163
  msgstr ""
19164
 
19165
+ #: includes/settings/wcj-settings-wpml.php:61
19166
  msgid "Automatically Regenerate"
19167
  msgstr ""
19168
 
19169
+ #: includes/settings/wcj-settings-wpml.php:63
19170
  #, php-format
19171
  msgid "Automatically regenerate %s file on each Booster version update."
19172
  msgstr ""
19173
 
19174
+ #: includes/settings/wcj-settings-wpml.php:69
19175
  msgid "Modules to Skip"
19176
  msgstr ""
19177
 
19178
+ #: includes/settings/wcj-settings-wpml.php:70
19179
  msgid ""
19180
  "Select modules, which options you wish to exclude from wpml-config.xml file."
19181
  msgstr ""
19182
 
19183
+ #: includes/settings/wcj-settings-wpml.php:78
19184
  msgid "Option IDs to Skip"
19185
  msgstr ""
19186
 
19187
+ #: includes/settings/wcj-settings-wpml.php:79
19188
  msgid "Select options, which you wish to exclude from wpml-config.xml file."
19189
  msgstr ""
19190
 
19191
+ #: includes/settings/wcj-settings-wpml.php:80
19192
  #, php-format
19193
  msgid "Full or part of option ID. Separated by vertical bar %s."
19194
  msgstr ""
19195
 
19196
+ #: includes/settings/wcj-settings-wpml.php:102
19197
+ #: includes/settings/wcj-settings-wpml.php:104
19198
  msgid "Regenerate wpml-config.xml file"
19199
  msgstr ""
19200
 
19327
  msgid "Attribute \"name\" is required!"
19328
  msgstr ""
19329
 
19330
+ #: includes/shortcodes/class-wcj-shortcodes-orders.php:335
19331
  #, php-format
19332
  msgid "Refund #%1$s - %2$s"
19333
  msgstr ""
19525
  msgid "Customer Country Detection Method must include \"by user selection\"!"
19526
  msgstr ""
19527
 
19528
+ #: includes/widgets/class-wcj-widget-country-switcher.php:78
19529
  msgid "Replace with currency"
19530
  msgstr ""
19531
 
19532
+ #: includes/widgets/class-wcj-widget-country-switcher.php:90
19533
+ #: includes/widgets/class-wcj-widget-multicurrency.php:89
19534
+ msgid "HTML form method for \"Drop down\" and \"Radio list\" types."
19535
+ msgstr ""
19536
+
19537
+ #: includes/widgets/class-wcj-widget-country-switcher.php:95
19538
+ #: includes/widgets/class-wcj-widget-multicurrency.php:94
19539
+ msgid "Post"
19540
+ msgstr ""
19541
+
19542
+ #: includes/widgets/class-wcj-widget-country-switcher.php:96
19543
+ #: includes/widgets/class-wcj-widget-multicurrency.php:95
19544
+ msgid "Get"
19545
+ msgstr ""
19546
+
19547
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:27
19548
  msgid "Booster - Left to Free Shipping"
19549
  msgstr ""
19572
  msgid "Link list"
19573
  msgstr ""
19574
 
 
 
 
 
 
 
 
 
 
 
 
 
19575
  #: includes/widgets/class-wcj-widget-multicurrency.php:101
19576
  msgid "HTML class for \"Drop down\" type."
19577
  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,30 @@ 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.0
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.0 - 06/07/2020 =
197
+ * Fix - CART & CHECKOUT - EU VAT Number - Force accessing the VAT validation url on english version to avoid possible errors.
198
+ * Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improve compatibility with 'Pricing Deals' plugin.
199
+ * Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Remove compatibility option with 'Prices and Currencies by Country' module.
200
+ * Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improve compatibility option with 'WooCommerce Tree Table Rate Shipping' plugin.
201
+ * Fix - PRICES & CURRENCIES - Prices and Currencies by Country - Fix compatibility option with 'Price Filter Widget and Sorting by Price'.
202
+ * Fix - PRICES & CURRENCIES - Prices and Currencies by Country - Save `_wcj_price_by_country_$group_id` meta regardless of the 'Product Basis' option.
203
+ * Fix - PRODUCTS - Product Images - Fix 'Replace Image on Single' option.
204
+ * Fix - SHIPPING & ORDERS - Shipping by Cities - Improve city detection by also getting it when product quantity changes.
205
+ * Dev - EMAILS & MISC. - Export - Add `wcj_export_validation` filter with 3 parameters: `boolean`, `'object_type'`, `$object`.
206
+ * Dev - EMAILS & MISC. - Export - Add 'Smart Formatting' option to handle special characters as commas and quotes, formatting fields according to RFC4180 specification.
207
+ * Dev - EMAILS & MISC. - Booster WPML - General Options - Add 'Synchronize Metas' option allowing to synchronize some Booster metas between products in different languages.
208
+ * Dev - PDF INVOICING & PACKING SLIPS - Add `wcj_invoicing_header_content_length` filter allowing to add/remove the Content-Length header from the invoice.
209
+ * Dev - PRICES & CURRENCIES - Offer Your Price - Email Options - Add `%product_edit_link%` template variable.
210
+ * Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Add compatibility option with WooCommerce Free Shipping method.
211
+ * Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Improve performance running price update with a background process.
212
+ * Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Widget - Add option to control form method by POST or GET.
213
+ * Dev - PRODUCTS - Product MSRP - Add 'Archive Detection Method' option allowing better control to detect the archive template.
214
+ * Dev - SHIPPING & ORDERS - Order Minimum Amount - Add compatibility option with "WooCommerce Multilingual" plugin.
215
+ * Dev - SHIPPING & ORDERS - Order Numbers - Add compatibility option with WPNotif plugin.
216
+ * Dev - Shortcodes - Orders - Add `add_html_on_price` param.
217
+ * Dev - Functions - Price and Currency - Add `add_html_on_price` param allowing to return the price without the html.
218
+ * WC tested up to: 4.2
219
+
220
  = 5.0.0 - 01/06/2020 =
221
  * Fix - PRICES & CURRENCIES - Wholesale Price - Consider `heading_format` param from `[wcj_product_wholesale_price_table]` on Heading Format option.
222
  * 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.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.2
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.0';
61
 
62
  /**
63
  * @var WC_Jetpack The single instance of the class