Advanced Order Export For WooCommerce - Version 1.5.4

Version Description

  • 2018-04-25 =
  • Prompting to save changes if user modifies settings
  • Product fields and order item fields were separated in popup "Setup fields"
  • Allow to filter by raw shipping methods (not assigned to shipping zones)
  • Record time of last export for the order (option "mark exported orders" must be ON)
  • Added order fields "Line number", "Order Subtotal - Cart Discount"
  • Added product field "Full names for categories"
  • Added operators "Is set", "Not is set" for custom fields
  • Added option "Enable debug output" to section "Misc Settings"
  • Added option "Cleanup phone" to section "Misc Settings"
  • Tags {from_date} and {to_date} can be used in filename
  • Fixed bug in UI if order item meta has many values
Download this release

Release Info

Developer algol.plus
Plugin Icon 128x128 Advanced Order Export For WooCommerce
Version 1.5.4
Comparing to
See all releases

Code changes from version 1.5.3 to 1.5.4

assets/css/export.css CHANGED
@@ -16,6 +16,20 @@
16
  width: 80%;
17
  }
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  .fields_control_style {
21
  padding: 10px;
16
  width: 80%;
17
  }
18
 
19
+ .tablenav.top {
20
+ margin-bottom: 10px;
21
+ }
22
+
23
+ .tablenav.top select {
24
+ margin: 0 6px 0 0;
25
+ width: 100%;
26
+ height: 32px;
27
+ }
28
+
29
+ .tablenav.top #doaction {
30
+ margin: 0 6px 0 0;
31
+ height: 32px;
32
+ }
33
 
34
  .fields_control_style {
35
  padding: 10px;
assets/js/export.js CHANGED
@@ -1,8 +1,41 @@
1
  var select2WODropdownOpts = {
2
  containerCssClass : 'without-dropdown',
3
  dropdownCssClass: 'without-dropdown',
4
- }
5
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
  function bind_events() {
8
 
@@ -22,12 +55,12 @@ function bind_events() {
22
  jQuery( '#select_custom_fields--select2 select' ).select2('destroy');
23
  jQuery( '#select_custom_fields, #select_custom_fields--select2' ).remove();
24
  if ( response ) {
25
- var options = '';
26
  jQuery.each( response, function( index, value ) {
27
  options += '<option>' + value + '</option>';
28
  } );
29
  var $select = jQuery( '<div id="select_custom_fields--select2" style="margin-top: 0px;margin-right: 6px; vertical-align: top;'
30
- + 'display: ' + (('LIKE' === val_op) ? 'none' : 'inline-block') + ';">'
31
  + '<select id="select_custom_fields">' + options + '</select></div>' );
32
  $select.insertBefore( jQuery( '#add_custom_fields' ) )
33
  $select.find('select').select2({ tags: true });
@@ -43,7 +76,7 @@ function bind_events() {
43
  var val2 = jQuery( '#custom_fields' ).val();
44
  var val_op = jQuery( '#custom_fields_compare' ).val();
45
  if ( val != null && val2 != null && val.length && val2.length ) {
46
- val = val2 + ' ' + val_op + ' ' + val;
47
 
48
  var f = true;
49
  jQuery( '#custom_fields_check' ).next().find( 'ul li' ).each( function() {
@@ -53,8 +86,13 @@ function bind_events() {
53
  } );
54
 
55
  if ( f ) {
 
 
 
 
 
 
56
 
57
- jQuery( '#custom_fields_check' ).append( '<option selected="selected" value="' + val + '">' + val + '</option>' );
58
  jQuery( '#custom_fields_check' ).select2();
59
 
60
  jQuery( '#custom_fields_check option' ).each( function() {
@@ -75,6 +113,11 @@ function bind_events() {
75
  jQuery( "#select_custom_fields--select2" ).hide();
76
  jQuery( "#text_custom_fields" ).css('display', 'inline' ).attr( 'disabled', false );
77
  }
 
 
 
 
 
78
  else {
79
  jQuery( "#select_custom_fields" ).css( 'display', 'inline-block' ).attr( 'disabled', false );
80
  jQuery( '#select_custom_fields--select2' ).css('display', 'inline' );
@@ -462,30 +505,55 @@ function bind_events() {
462
  });
463
 
464
  jQuery('input[name=custom_meta_products_mode]').change(function() {
 
 
465
  if ( !jQuery( this ).is( ':checked' ) ) {
466
  var options = '<option></option>';
467
  jQuery.each( window.order_products_custom_meta_fields, function( index, value ) {
468
- options += '<option value="' + escapeStr(value) + '">' + value + '</option>';
469
  } );
470
  jQuery( '#select_custom_meta_products' ).html( options );
 
 
 
 
 
 
 
 
471
  }
472
  else {
473
  jQuery('#modal-manage-products').html(jQuery('#TB_ajaxContent').html());
474
- var data = jQuery( '#export_job_settings' ).serialize();
475
- data = data + "&action=order_exporter&method=get_used_custom_products_meta&mode=" + mode + "&id=" + job_id;
 
476
 
477
- jQuery.post( ajaxurl, data, function( response ) {
478
  if ( response ) {
479
  var options = '<option></option>';
480
  jQuery.each( response, function( index, value ) {
481
  options += '<option value="' + escapeStr(value) + '">' + value + '</option>';
482
  } );
483
  jQuery( '#select_custom_meta_products' ).html( options );
 
484
  }
485
  }, 'json' );
 
 
 
 
 
 
 
 
 
 
 
 
486
  jQuery('#modal-manage-products').html('');
487
  }
488
  });
 
489
 
490
  jQuery('input[name=custom_meta_coupons_mode]').change(function() {
491
  if (jQuery(this).val() == 'all') {
@@ -652,10 +720,16 @@ function bind_events() {
652
  }
653
  return false;
654
  } )
 
 
 
 
 
 
 
655
  }
656
 
657
  function add_bind_for_custom_fields( prefix, output_format, $to ) {
658
- jQuery( '#button_custom_meta_' + prefix + '' ).off();
659
  jQuery( '#button_custom_field_' + prefix + '' ).off();
660
  jQuery( '#button_custom_field_' + prefix + '' ).click( function() {
661
  var colname = jQuery( '#colname_custom_field_' + prefix + '' ).val();
@@ -666,7 +740,7 @@ function add_bind_for_custom_fields( prefix, output_format, $to ) {
666
  jQuery( '#colname_custom_field_' + prefix + '' ).focus();
667
  return false
668
  }
669
- if ( !value )
670
  {
671
  alert( export_messages.empty_value );
672
  jQuery( '#value_custom_field_' + prefix + '' ).focus();
@@ -678,24 +752,41 @@ function add_bind_for_custom_fields( prefix, output_format, $to ) {
678
  return false;
679
  } );
680
 
681
- jQuery( '#button_custom_meta_' + prefix + '' ).click( function() {
682
- var type = jQuery( '#select_custom_meta_' + prefix + '' ).val() != '' ? 'meta' : 'taxonomies';
683
- type = type + '_' + prefix;
684
- var label = jQuery( '#select_custom_' + type + '' ).val();
685
- var colname = jQuery( '#colname_custom_meta_' + prefix + '' ).val();
686
- if ( colname == undefined || colname == '' ) {
687
- colname = label;
 
 
 
 
 
688
  }
689
- if ( !colname )
690
- {
691
- alert( export_messages.empty_column_name );
692
- return false
693
- }
694
- add_custom_meta( $to, prefix, output_format, label, colname );
695
- jQuery( '#select_custom_' + type + '' ).val( "" );
696
- jQuery( '#colname_custom_meta_' + prefix + '' ).val( "" );
697
- return false;
698
- } );
 
 
 
 
 
 
 
 
 
 
 
 
699
  }
700
 
701
  function reset_field_contorls() {
1
  var select2WODropdownOpts = {
2
  containerCssClass : 'without-dropdown',
3
  dropdownCssClass: 'without-dropdown',
4
+ };
5
+
6
+ String.prototype.hashCode = function() {
7
+ var hash = 0, i, chr;
8
+ if (this.length === 0) return hash;
9
+ for (i = 0; i < this.length; i++) {
10
+ chr = this.charCodeAt(i);
11
+ hash = ((hash << 5) - hash) + chr;
12
+ hash |= 0; // Convert to 32bit integer
13
+ }
14
+ return hash;
15
+ };
16
+ var formSubmitting = false;
17
+
18
+ var setFormSubmitting = function() { formSubmitting = true; };
19
+
20
+ window.onload = function () {
21
+ var form = jQuery( '#export_job_settings' );
22
+ var on_load_form_data = form.serialize();
23
+
24
+ var isDirty = function ( on_load_form_data ) {
25
+ return on_load_form_data.hashCode() !== form.serialize().hashCode()
26
+ };
27
+
28
+ window.addEventListener( "beforeunload", function ( e ) {
29
+ if ( isDirty( on_load_form_data ) && ! formSubmitting ) {
30
+ (
31
+ e || window.event
32
+ ).returnValue = false; //Gecko + IE
33
+ return false; //Gecko + Webkit, Safari, Chrome etc.
34
+ } else {
35
+ return undefined;
36
+ }
37
+ } );
38
+ };
39
 
40
  function bind_events() {
41
 
55
  jQuery( '#select_custom_fields--select2 select' ).select2('destroy');
56
  jQuery( '#select_custom_fields, #select_custom_fields--select2' ).remove();
57
  if ( response ) {
58
+ var options = '<option>' + export_messages.empty + '</option>';
59
  jQuery.each( response, function( index, value ) {
60
  options += '<option>' + value + '</option>';
61
  } );
62
  var $select = jQuery( '<div id="select_custom_fields--select2" style="margin-top: 0px;margin-right: 6px; vertical-align: top;'
63
+ + 'display: ' + (('LIKE' === val_op || 'NOT SET' === val_op|| 'IS SET' === val_op) ? 'none' : 'inline-block') + ';">'
64
  + '<select id="select_custom_fields">' + options + '</select></div>' );
65
  $select.insertBefore( jQuery( '#add_custom_fields' ) )
66
  $select.find('select').select2({ tags: true });
76
  var val2 = jQuery( '#custom_fields' ).val();
77
  var val_op = jQuery( '#custom_fields_compare' ).val();
78
  if ( val != null && val2 != null && val.length && val2.length ) {
79
+ var result = val2 + ' ' + val_op + ' ' + val;
80
 
81
  var f = true;
82
  jQuery( '#custom_fields_check' ).next().find( 'ul li' ).each( function() {
86
  } );
87
 
88
  if ( f ) {
89
+ if ( export_messages.empty === val ) {
90
+ result = val2 + ' ' + val_op + ' empty';
91
+ jQuery( '#custom_fields_check' ).append( '<option selected="selected" value="' + result + '">' + result + '</option>' );
92
+ } else {
93
+ jQuery( '#custom_fields_check' ).append( '<option selected="selected" value="' + result + '">' + result + '</option>' );
94
+ }
95
 
 
96
  jQuery( '#custom_fields_check' ).select2();
97
 
98
  jQuery( '#custom_fields_check option' ).each( function() {
113
  jQuery( "#select_custom_fields--select2" ).hide();
114
  jQuery( "#text_custom_fields" ).css('display', 'inline' ).attr( 'disabled', false );
115
  }
116
+ else if ( 'NOT SET' === val_op || 'IS SET' === val_op ) {
117
+ jQuery( "#select_custom_fields" ).css( 'display', 'none' ).attr( 'disabled', 'disabled' ) . val(' ');
118
+ jQuery( "#select_custom_fields--select2" ).hide();
119
+ jQuery( "#text_custom_fields" ).css('display', 'none' ).attr( 'disabled', false ). val(' ');
120
+ }
121
  else {
122
  jQuery( "#select_custom_fields" ).css( 'display', 'inline-block' ).attr( 'disabled', false );
123
  jQuery( '#select_custom_fields--select2' ).css('display', 'inline' );
505
  });
506
 
507
  jQuery('input[name=custom_meta_products_mode]').change(function() {
508
+ jQuery( '#select_custom_meta_products' ).prop( "disabled", true );
509
+ jQuery( '#select_custom_meta_order_items' ).prop( "disabled", true );
510
  if ( !jQuery( this ).is( ':checked' ) ) {
511
  var options = '<option></option>';
512
  jQuery.each( window.order_products_custom_meta_fields, function( index, value ) {
513
+ options += '<option value="' + escapeStr(value) + '">' + value + '</option>';
514
  } );
515
  jQuery( '#select_custom_meta_products' ).html( options );
516
+ jQuery( '#select_custom_meta_products' ).prop( "disabled", false );
517
+
518
+ options = '<option></option>';
519
+ jQuery.each( window.order_order_item_custom_meta_fields, function( index, value ) {
520
+ options += '<option value="' + escapeStr(value) + '">' + value + '</option>';
521
+ } );
522
+ jQuery( '#select_custom_meta_order_items' ).html( options );
523
+ jQuery( '#select_custom_meta_order_items' ).prop( "disabled", false );
524
  }
525
  else {
526
  jQuery('#modal-manage-products').html(jQuery('#TB_ajaxContent').html());
527
+ var data = jQuery( '#export_job_settings' ).serialize(),
528
+ data_products = data + "&action=order_exporter&method=get_used_custom_products_meta&mode=" + mode + "&id=" + job_id,
529
+ data_order_items = data + "&action=order_exporter&method=get_used_custom_order_items_meta&mode=" + mode + "&id=" + job_id;
530
 
531
+ jQuery.post( ajaxurl, data_products, function( response ) {
532
  if ( response ) {
533
  var options = '<option></option>';
534
  jQuery.each( response, function( index, value ) {
535
  options += '<option value="' + escapeStr(value) + '">' + value + '</option>';
536
  } );
537
  jQuery( '#select_custom_meta_products' ).html( options );
538
+ jQuery( '#select_custom_meta_products' ).prop( "disabled", false );
539
  }
540
  }, 'json' );
541
+
542
+ jQuery.post( ajaxurl, data_order_items, function( response ) {
543
+ if ( response ) {
544
+ var options = '<option></option>';
545
+ jQuery.each( response, function( index, value ) {
546
+ options += '<option value="' + escapeStr(value) + '">' + value + '</option>';
547
+ } );
548
+ jQuery( '#select_custom_meta_order_items' ).html( options );
549
+ jQuery( '#select_custom_meta_order_items' ).prop( "disabled", false );
550
+ }
551
+ }, 'json' );
552
+
553
  jQuery('#modal-manage-products').html('');
554
  }
555
  });
556
+ jQuery('input[name=custom_meta_products_mode]').trigger('change');
557
 
558
  jQuery('input[name=custom_meta_coupons_mode]').change(function() {
559
  if (jQuery(this).val() == 'all') {
720
  }
721
  return false;
722
  } )
723
+
724
+ jQuery( '#summary_report_by_products_checkbox' ).on('change', function() {
725
+ jQuery('#manage_fields').parent().toggle(jQuery('#summary_report_by_products_checkbox').val());
726
+ } );
727
+ if( jQuery('#summary_report_by_products_checkbox').prop('checked') ) {
728
+ jQuery('#manage_fields').parent().hide();
729
+ }
730
  }
731
 
732
  function add_bind_for_custom_fields( prefix, output_format, $to ) {
 
733
  jQuery( '#button_custom_field_' + prefix + '' ).off();
734
  jQuery( '#button_custom_field_' + prefix + '' ).click( function() {
735
  var colname = jQuery( '#colname_custom_field_' + prefix + '' ).val();
740
  jQuery( '#colname_custom_field_' + prefix + '' ).focus();
741
  return false
742
  }
743
+ if ( !value && 'products' !== prefix )
744
  {
745
  alert( export_messages.empty_value );
746
  jQuery( '#value_custom_field_' + prefix + '' ).focus();
752
  return false;
753
  } );
754
 
755
+ jQuery( '#button_custom_meta_' + prefix + '' ).off();
756
+ jQuery( '#button_custom_meta_' + prefix + '' ).click( function() {
757
+ var prefix_items = 'order_items',
758
+ original_prefix = prefix,
759
+ prefix_items_select = jQuery( '#select_custom_meta_' + prefix_items + '' ),
760
+ prefix_product_select = jQuery( '#select_custom_meta_' + prefix + '' );
761
+
762
+ var type = ( prefix_items_select.val() || prefix_product_select.val() ) ? 'meta' : 'taxonomies';
763
+ if ( 'meta' === type ) {
764
+ original_prefix = prefix_product_select.val() ? prefix : prefix_items;
765
+ } else {
766
+ original_prefix = prefix;
767
  }
768
+ type = type + '_' + original_prefix;
769
+ var label = jQuery( '#select_custom_' + type + '' ).val();
770
+ var colname = jQuery( '#colname_custom_meta_' + prefix + '' ).val();
771
+ if ( !label )
772
+ {
773
+ alert( export_messages.empty_meta_key_and_taxonomy );
774
+ return false
775
+ }
776
+ if ( colname == undefined || colname == '' ) {
777
+ colname = label;
778
+ }
779
+ if ( !colname )
780
+ {
781
+ alert( export_messages.empty_column_name );
782
+ return false
783
+ }
784
+ add_custom_meta( $to, prefix, output_format, label, colname );
785
+ jQuery( '#select_custom_' + type + '' ).val( "" );
786
+ jQuery( '#colname_custom_meta_' + prefix + '' ).val( "" );
787
+ return false;
788
+ } );
789
+
790
  }
791
 
792
  function reset_field_contorls() {
classes/admin/class-wc-order-export-ajax.php CHANGED
@@ -76,7 +76,16 @@ class WC_Order_Export_Ajax {
76
  public function get_used_custom_products_meta() {
77
  $settings = WC_Order_Export_Manage::make_new_settings( $_POST );
78
  $sql = WC_Order_Export_Data_Extractor::sql_get_order_ids( $settings );
79
- $ret = WC_Order_Export_Data_Extractor_UI::get_all_product_custom_meta_fields_for_orders( $sql );
 
 
 
 
 
 
 
 
 
80
  echo json_encode( $ret );
81
  }
82
 
@@ -213,12 +222,16 @@ class WC_Order_Export_Ajax {
213
  if( !$filename ) {
214
  die( __( 'Can\'t create temporary file', 'woo-order-export-lite' ) ) ;
215
  }
216
-
217
- file_put_contents( $filename, '' );
218
-
219
- do_action( 'woe_start_export_job', $_POST['id'], $settings );
220
-
221
- $total = WC_Order_Export_Engine::build_file( $settings, 'start_estimate', 'file', 0, 0, $filename );
 
 
 
 
222
  $file_id = current_time( 'timestamp' );
223
  set_transient( $this->tempfile_prefix . $file_id, $filename, 60 );
224
  $this->stop_prevent_object_cache();
76
  public function get_used_custom_products_meta() {
77
  $settings = WC_Order_Export_Manage::make_new_settings( $_POST );
78
  $sql = WC_Order_Export_Data_Extractor::sql_get_order_ids( $settings );
79
+ $ret = WC_Order_Export_Data_Extractor_UI::get_product_custom_meta_fields_for_orders( $sql );
80
+ sort($ret);
81
+ echo json_encode( $ret );
82
+ }
83
+
84
+ public function get_used_custom_order_items_meta() {
85
+ $settings = WC_Order_Export_Manage::make_new_settings( $_POST );
86
+ $sql = WC_Order_Export_Data_Extractor::sql_get_order_ids( $settings );
87
+ $ret = WC_Order_Export_Data_Extractor_UI::get_order_item_custom_meta_fields_for_orders( $sql );
88
+ sort($ret);
89
  echo json_encode( $ret );
90
  }
91
 
222
  if( !$filename ) {
223
  die( __( 'Can\'t create temporary file', 'woo-order-export-lite' ) ) ;
224
  }
225
+
226
+ //no free space or other file system errors?
227
+ try {
228
+ file_put_contents( $filename, '' );
229
+ do_action( 'woe_start_export_job', $_POST['id'], $settings );
230
+ $total = WC_Order_Export_Engine::build_file( $settings, 'start_estimate', 'file', 0, 0, $filename );
231
+ } catch (Exception $e) {
232
+ die( $e->getMessage() );
233
+ }
234
+ // file created
235
  $file_id = current_time( 'timestamp' );
236
  set_transient( $this->tempfile_prefix . $file_id, $filename, 60 );
237
  $this->stop_prevent_object_cache();
classes/admin/class-wc-order-export-manage.php CHANGED
@@ -166,7 +166,9 @@ class WC_Order_Export_Manage {
166
  static function apply_defaults( $mode, $settings ) {
167
  $defaults = array(
168
  'mode' => $mode,
 
169
  'skip_empty_file' => true,
 
170
  'from_status' => array(),
171
  'to_status' => array(),
172
  'change_order_status_to' => '',
@@ -225,12 +227,14 @@ class WC_Order_Export_Manage {
225
  'time_format' => 'H:i',
226
  'sort_direction' => 'DESC',
227
  'sort' => 'order_id',
228
- 'format_number_fields' => 0,
229
  'export_all_comments' => 0,
230
  'export_refund_notes' => 0,
231
  'strip_tags_product_fields' => 0,
 
 
232
  'format_json_start_tag' => '[',
233
- 'format_json_end_tag' => '\n]',
234
  'custom_php' => 0,
235
  'custom_php_code' => '',
236
  'mark_exported_orders' => 0,
@@ -243,6 +247,10 @@ class WC_Order_Export_Manage {
243
  $settings['format'] = 'XLS';
244
  }
245
 
 
 
 
 
246
  if ( ! isset( $settings['order_fields'] ) ) {
247
  $settings['order_fields'] = array();
248
  }
@@ -285,7 +293,7 @@ class WC_Order_Export_Manage {
285
  $all_jobs = $options;// just replace
286
  } elseif ( $mode == self::EXPORT_SCHEDULE ) {
287
  if ( $id ) {
288
- $options['schedule']['last_run'] = $all_jobs[ $id ]['schedule']['last_run'];
289
  $options['schedule']['next_run'] = WC_Order_Export_Cron::next_event_timestamp_for_schedule( $options['schedule'], $id );
290
  $all_jobs[ $id ] = $options;
291
  } else {
@@ -382,23 +390,45 @@ class WC_Order_Export_Manage {
382
  if( isset( $data[ self::EXPORT_NOW ] ) ) { // import ALL
383
  foreach ( $allowed_options as $key ) {
384
  if ( isset( $data[ $key ] ) ) {
385
- $setting_name = self::get_settings_name_for_mode( $key );
 
 
 
 
 
 
 
 
 
386
  update_option( $setting_name, $data[ $key ] );
387
  }
388
  }
389
  }
390
  elseif( isset( $data["mode"] ) AND in_array( $data["mode"], $allowed_options ) ) { // OR import single ?
391
- $setting_name = self::get_settings_name_for_mode( $data["mode"] );
392
  if( $setting_name == self::settings_name_now ) {
393
- update_option( $setting_name, $data ); // rewrite
394
  } else { // append!
395
  $items = get_option( $setting_name, array() );
 
396
  if( empty($items) )
397
- $items[ 1 ] = $data;
398
  else
399
- $items[] = $data;
 
400
  update_option( $setting_name, $items );
401
  }
402
  }// if modes
403
  }
 
 
 
 
 
 
 
 
 
 
 
404
  }
166
  static function apply_defaults( $mode, $settings ) {
167
  $defaults = array(
168
  'mode' => $mode,
169
+ 'title' => '',
170
  'skip_empty_file' => true,
171
+ 'log_results' => false,
172
  'from_status' => array(),
173
  'to_status' => array(),
174
  'change_order_status_to' => '',
227
  'time_format' => 'H:i',
228
  'sort_direction' => 'DESC',
229
  'sort' => 'order_id',
230
+ 'format_number_fields' => 0,
231
  'export_all_comments' => 0,
232
  'export_refund_notes' => 0,
233
  'strip_tags_product_fields' => 0,
234
+ 'cleanup_phone' => 0,
235
+ 'enable_debug' => 0,
236
  'format_json_start_tag' => '[',
237
+ 'format_json_end_tag' => ']',
238
  'custom_php' => 0,
239
  'custom_php_code' => '',
240
  'mark_exported_orders' => 0,
247
  $settings['format'] = 'XLS';
248
  }
249
 
250
+ if ( ! isset( $settings['export_rule_field'] ) AND $mode == WC_Order_Export_Manage::EXPORT_SCHEDULE ) {
251
+ $settings['export_rule_field'] = 'modified';
252
+ }
253
+
254
  if ( ! isset( $settings['order_fields'] ) ) {
255
  $settings['order_fields'] = array();
256
  }
293
  $all_jobs = $options;// just replace
294
  } elseif ( $mode == self::EXPORT_SCHEDULE ) {
295
  if ( $id ) {
296
+ $options['schedule']['last_run'] = isset($all_jobs[ $id ]) ? $all_jobs[ $id ]['schedule']['last_run'] : current_time("timestamp",0);
297
  $options['schedule']['next_run'] = WC_Order_Export_Cron::next_event_timestamp_for_schedule( $options['schedule'], $id );
298
  $all_jobs[ $id ] = $options;
299
  } else {
390
  if( isset( $data[ self::EXPORT_NOW ] ) ) { // import ALL
391
  foreach ( $allowed_options as $key ) {
392
  if ( isset( $data[ $key ] ) ) {
393
+ $setting_name = self::get_settings_name_for_mode( $key );
394
+
395
+ if ( isset( $data[ $key ]['mode'] ) ) {
396
+ $data[ $key ] = self::edit_import_data( $data[ $key ] );
397
+ } else {
398
+ foreach ( $data[ $key ] as $index => $import_single_data ) {
399
+ $data[$key][$index] = self::edit_import_data( $import_single_data );
400
+ }
401
+ }
402
+
403
  update_option( $setting_name, $data[ $key ] );
404
  }
405
  }
406
  }
407
  elseif( isset( $data["mode"] ) AND in_array( $data["mode"], $allowed_options ) ) { // OR import single ?
408
+ $setting_name = self::get_settings_name_for_mode( $data["mode"] );
409
  if( $setting_name == self::settings_name_now ) {
410
+ update_option( $setting_name, self::edit_import_data( $data ) ); // rewrite
411
  } else { // append!
412
  $items = get_option( $setting_name, array() );
413
+
414
  if( empty($items) )
415
+ $items[ 1 ] = self::edit_import_data( $data );
416
  else
417
+ $items[] = self::edit_import_data( $data );
418
+
419
  update_option( $setting_name, $items );
420
  }
421
  }// if modes
422
  }
423
+
424
+ private static function edit_import_data( $data ) {
425
+
426
+ $mode = $data['mode'];
427
+ if ( $mode != self::EXPORT_SCHEDULE ) {
428
+ unset( $data['export_rule'] );
429
+ unset( $data['schedule'] );
430
+ }
431
+
432
+ return $data;
433
+ }
434
  }
classes/class-wc-order-export-admin.php CHANGED
@@ -155,6 +155,7 @@ class WC_Order_Export_Admin {
155
  'ajax_orders_per_step' => '30',
156
  'limit_button_test' => '1',
157
  'cron_key' => '1234',
 
158
  ),
159
  get_option( self::settings_name_common, array() )
160
  );
@@ -165,9 +166,14 @@ class WC_Order_Export_Admin {
165
  'cron_tasks_active' => FILTER_VALIDATE_BOOLEAN,
166
  'ajax_orders_per_step' => FILTER_VALIDATE_INT,
167
  'limit_button_test' => FILTER_SANITIZE_STRING,
168
- 'cron_key' => FILTER_SANITIZE_STRING
 
169
  ) );
170
  update_option( self::settings_name_common, $settings );
 
 
 
 
171
  }
172
 
173
 
@@ -280,6 +286,25 @@ class WC_Order_Export_Admin {
280
  $url = remove_query_arg( array( 'wc_oe', 'action_id', 'status' ) );
281
  wp_redirect( $url );
282
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  }
284
  $this->render( 'tab/order-actions', array( 'ajaxurl' => $ajaxurl, 'WC_Order_Export' => $this, 'tab' => 'order_actions' ) );
285
  }
@@ -341,6 +366,25 @@ class WC_Order_Export_Admin {
341
  $url = remove_query_arg( array( 'wc_oe', 'schedule_id', 'status' ) );
342
  wp_redirect( $url );
343
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  }
345
  $this->render( 'tab/schedules', array( 'ajaxurl' => $ajaxurl, 'WC_Order_Export' => $this ) );
346
  }
@@ -411,17 +455,23 @@ class WC_Order_Export_Admin {
411
  unset( $all_items[ $profile_id ] );
412
  WC_Order_Export_Manage::save_export_settings_collection( $mode, $all_items );
413
  break;
414
- case 'change_profile_bulk_action':
415
- if( !isset( $_REQUEST['profile_id'] ) )
416
  break;
417
- $profile_id = $_REQUEST['profile_id'];
418
- if( $_REQUEST['status'] ) {
419
- $all_items[ $profile_id ][ 'use_as_bulk' ] = 'on';
420
- } else {
421
- unset( $all_items[ $profile_id ][ 'use_as_bulk' ] );
422
- }
 
 
 
 
 
 
423
  WC_Order_Export_Manage::save_export_settings_collection( $mode, $all_items );
424
- $url = remove_query_arg( array( 'wc_oe', 'profile_id', 'status' ) );
425
  wp_redirect( $url );
426
  break;
427
  }
@@ -450,16 +500,20 @@ class WC_Order_Export_Admin {
450
  wp_enqueue_script( 'export', $this->url_plugin . 'assets/js/export.js', array(), WOE_VERSION );
451
  wp_enqueue_script( 'serializejson', $this->url_plugin . 'assets/js/jquery.serializejson.js', array('jquery'), WOE_VERSION );
452
  wp_enqueue_style( 'export', $this->url_plugin . 'assets/css/export.css', array(), WOE_VERSION );
453
-
 
 
454
  // Localize the script with new data
455
  $translation_array = array(
456
  'empty_column_name' => __( 'empty column name', 'woo-order-export-lite' ),
457
  'empty_meta_key' => __( 'empty meta key', 'woo-order-export-lite' ),
 
458
  'empty_value' => __( 'empty value', 'woo-order-export-lite' ),
459
  'empty_title' => __( 'title is empty', 'woo-order-export-lite' ),
460
  'wrong_date_range' => __( 'Date From is greater than Date To', 'woo-order-export-lite' ),
461
  'no_fields' => __( 'Please, set up fields to export', 'woo-order-export-lite' ),
462
  'no_results' => __( 'Nothing to export. Please, adjust your filters', 'woo-order-export-lite' ),
 
463
  );
464
  wp_localize_script( 'export', 'export_messages', $translation_array );
465
  }
@@ -489,7 +543,9 @@ class WC_Order_Export_Admin {
489
 
490
  public function script_loader_src($src, $handle) {
491
  // don't load ANY select2.js / select2.min.js and OUTDATED select2.full.js
492
- if (!preg_match('/\/select2\.full\.js\?ver=[1-3]/', $src) && !preg_match('/\/select2\.min\.js/', $src) && !preg_match('/\/select2\.js/', $src) ) {
 
 
493
  return $src;
494
  }
495
  }
@@ -571,11 +627,12 @@ class WC_Order_Export_Admin {
571
  if ( isset( $_REQUEST['method'] ) ) {
572
  $method = $_REQUEST['method'];
573
  if ( method_exists( 'WC_Order_Export_Ajax', $method ) ) {
574
- $_POST = array_map('stripslashes_deep', $_POST);
575
  // parse json to arrays?
576
  if ( !empty($_POST['json']) ) {
577
  $json = json_decode( $_POST['json'], true );
578
  if( is_array($json) ) {
 
579
  $_POST = $_POST + $json;
580
  unset( $_POST['json'] );
581
  }
@@ -616,7 +673,7 @@ class WC_Order_Export_Admin {
616
 
617
  $all_items = WC_Order_Export_Manage::get_export_settings_collection( WC_Order_Export_Manage::EXPORT_PROFILE );
618
  foreach ( $all_items as $job_id => $job ) {
619
- if ( isset( $job['use_as_bulk'] ) )
620
  $actions['woe_export_selected_orders_profile_' . $job_id] = sprintf( __( "Export as profile '%s'", 'woo-order-export-lite' ), $job['title'] );
621
  }
622
 
155
  'ajax_orders_per_step' => '30',
156
  'limit_button_test' => '1',
157
  'cron_key' => '1234',
158
+ 'ipn_url' => '',
159
  ),
160
  get_option( self::settings_name_common, array() )
161
  );
166
  'cron_tasks_active' => FILTER_VALIDATE_BOOLEAN,
167
  'ajax_orders_per_step' => FILTER_VALIDATE_INT,
168
  'limit_button_test' => FILTER_SANITIZE_STRING,
169
+ 'cron_key' => FILTER_SANITIZE_STRING,
170
+ 'ipn_url' => FILTER_SANITIZE_STRING,
171
  ) );
172
  update_option( self::settings_name_common, $settings );
173
+
174
+ if ( isset( $settings['ipn_url'] ) ) {
175
+ update_option( WOE_IPN_URL_OPTION_KEY, $settings['ipn_url'] );
176
+ }
177
  }
178
 
179
 
286
  $url = remove_query_arg( array( 'wc_oe', 'action_id', 'status' ) );
287
  wp_redirect( $url );
288
  break;
289
+ case 'change_statuses':
290
+ if( !isset( $_REQUEST['chosen_order_actions'] ) AND !isset( $_REQUEST['doaction'] ) AND -1 == $_REQUEST['doaction'] )
291
+ break;
292
+ $chosen_order_actions = explode(',' , $_REQUEST['chosen_order_actions'] );
293
+ $doaction = $_REQUEST['doaction'];
294
+
295
+ foreach ( $chosen_order_actions as $order_action_id ) {
296
+ if ( 'activate' == $doaction ) {
297
+ $all_items[ $order_action_id ]['active'] = 1;
298
+ } elseif ( 'deactivate' == $doaction ) {
299
+ $all_items[ $order_action_id ]['active'] = 0;
300
+ } elseif ( 'delete' == $doaction ) {
301
+ unset( $all_items[ $order_action_id ] );
302
+ }
303
+ }
304
+ WC_Order_Export_Manage::save_export_settings_collection( $mode, $all_items );
305
+ $url = remove_query_arg( array( 'wc_oe', 'chosen_order_actions', 'doaction' ) );
306
+ wp_redirect( $url );
307
+ break;
308
  }
309
  $this->render( 'tab/order-actions', array( 'ajaxurl' => $ajaxurl, 'WC_Order_Export' => $this, 'tab' => 'order_actions' ) );
310
  }
366
  $url = remove_query_arg( array( 'wc_oe', 'schedule_id', 'status' ) );
367
  wp_redirect( $url );
368
  break;
369
+ case 'change_status_schedules':
370
+ if( !isset( $_REQUEST['chosen_schedules'] ) AND !isset( $_REQUEST['doaction'] ) AND -1 == $_REQUEST['doaction'] )
371
+ break;
372
+ $chosen_schedules = explode(',' , $_REQUEST['chosen_schedules'] );
373
+ $doaction = $_REQUEST['doaction'];
374
+
375
+ foreach ( $chosen_schedules as $schedule_id ) {
376
+ if ( 'activate' == $doaction ) {
377
+ $all_jobs[ $schedule_id ]['active'] = 1;
378
+ } elseif ( 'deactivate' == $doaction ) {
379
+ $all_jobs[ $schedule_id ]['active'] = 0;
380
+ } elseif ( 'delete' == $doaction ) {
381
+ unset( $all_jobs[ $schedule_id ] );
382
+ }
383
+ }
384
+ WC_Order_Export_Manage::save_export_settings_collection( $mode, $all_jobs );
385
+ $url = remove_query_arg( array( 'wc_oe', 'chosen_schedules', 'doaction' ) );
386
+ wp_redirect( $url );
387
+ break;
388
  }
389
  $this->render( 'tab/schedules', array( 'ajaxurl' => $ajaxurl, 'WC_Order_Export' => $this ) );
390
  }
455
  unset( $all_items[ $profile_id ] );
456
  WC_Order_Export_Manage::save_export_settings_collection( $mode, $all_items );
457
  break;
458
+ case 'change_profile_statuses':
459
+ if( !isset( $_REQUEST['chosen_profiles'] ) AND !isset( $_REQUEST['doaction'] ) AND -1 == $_REQUEST['doaction'] )
460
  break;
461
+ $chosen_profiles = explode(',' , $_REQUEST['chosen_profiles'] );
462
+ $doaction = $_REQUEST['doaction'];
463
+
464
+ foreach ( $chosen_profiles as $profile_id ) {
465
+ if ( 'activate' == $doaction ) {
466
+ $all_items[ $profile_id ][ 'use_as_bulk' ] = 'on';
467
+ } elseif ( 'deactivate' == $doaction ) {
468
+ unset( $all_items[ $profile_id ][ 'use_as_bulk' ] );
469
+ } elseif ( 'delete' == $doaction ) {
470
+ unset( $all_items[ $profile_id ] );
471
+ }
472
+ }
473
  WC_Order_Export_Manage::save_export_settings_collection( $mode, $all_items );
474
+ $url = remove_query_arg( array( 'wc_oe', 'chosen_profiles', 'doaction' ) );
475
  wp_redirect( $url );
476
  break;
477
  }
500
  wp_enqueue_script( 'export', $this->url_plugin . 'assets/js/export.js', array(), WOE_VERSION );
501
  wp_enqueue_script( 'serializejson', $this->url_plugin . 'assets/js/jquery.serializejson.js', array('jquery'), WOE_VERSION );
502
  wp_enqueue_style( 'export', $this->url_plugin . 'assets/css/export.css', array(), WOE_VERSION );
503
+ wp_enqueue_style( 'woocommerce_admin_styles', WC()->plugin_url() . '/assets/css/admin.css', array() );
504
+
505
+
506
  // Localize the script with new data
507
  $translation_array = array(
508
  'empty_column_name' => __( 'empty column name', 'woo-order-export-lite' ),
509
  'empty_meta_key' => __( 'empty meta key', 'woo-order-export-lite' ),
510
+ 'empty_meta_key_and_taxonomy' => __( 'select product field or item field or taxonomy', 'woo-order-export-lite' ),
511
  'empty_value' => __( 'empty value', 'woo-order-export-lite' ),
512
  'empty_title' => __( 'title is empty', 'woo-order-export-lite' ),
513
  'wrong_date_range' => __( 'Date From is greater than Date To', 'woo-order-export-lite' ),
514
  'no_fields' => __( 'Please, set up fields to export', 'woo-order-export-lite' ),
515
  'no_results' => __( 'Nothing to export. Please, adjust your filters', 'woo-order-export-lite' ),
516
+ 'empty' => __( 'empty', 'woo-order-export-lite' ),
517
  );
518
  wp_localize_script( 'export', 'export_messages', $translation_array );
519
  }
543
 
544
  public function script_loader_src($src, $handle) {
545
  // don't load ANY select2.js / select2.min.js and OUTDATED select2.full.js
546
+ if (!preg_match('/\/select2\.full\.js\?ver=[1-3]/', $src) && !preg_match('/\/select2\.min\.js/', $src) && !preg_match('/\/select2\.js/', $src)
547
+ && !preg_match('#jquery\.serialize-object\.#', $src) /*this script breaks our json!*/
548
+ ) {
549
  return $src;
550
  }
551
  }
627
  if ( isset( $_REQUEST['method'] ) ) {
628
  $method = $_REQUEST['method'];
629
  if ( method_exists( 'WC_Order_Export_Ajax', $method ) ) {
630
+ $_POST = stripslashes_deep($_POST);
631
  // parse json to arrays?
632
  if ( !empty($_POST['json']) ) {
633
  $json = json_decode( $_POST['json'], true );
634
  if( is_array($json) ) {
635
+ // add $_POST['settings'],$_POST['orders'],$_POST['products'],$_POST['coupons']
636
  $_POST = $_POST + $json;
637
  unset( $_POST['json'] );
638
  }
673
 
674
  $all_items = WC_Order_Export_Manage::get_export_settings_collection( WC_Order_Export_Manage::EXPORT_PROFILE );
675
  foreach ( $all_items as $job_id => $job ) {
676
+ if ( isset( $job['use_as_bulk'] ) )
677
  $actions['woe_export_selected_orders_profile_' . $job_id] = sprintf( __( "Export as profile '%s'", 'woo-order-export-lite' ), $job['title'] );
678
  }
679
 
classes/core/class-wc-order-export-data-extractor-ui.php CHANGED
@@ -66,11 +66,44 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
66
  (SELECT DISTINCT ID FROM {$wpdb->posts} WHERE post_type IN ('product','product_variation') AND ID IN ($sql_products))" );
67
 
68
  $fields = array_unique( array_merge( $wp_fields, $wc_fields ) );
69
- sort( $fields );
70
 
71
  return apply_filters( 'get_all_product_custom_meta_fields_for_orders', $fields );
72
  }
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  public static function get_all_product_custom_meta_fields() {
75
  global $wpdb;
76
 
@@ -199,7 +232,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
199
  public static function get_products_itemmeta_values( $key ) {
200
  global $wpdb;
201
  $meta_key_ent = esc_html($key);
202
- $metas = $wpdb->get_col( $wpdb->prepare("SELECT DISTINCT meta_value FROM {$wpdb->prefix}woocommerce_order_itemmeta where meta_key = '%s' OR meta_key='%s'", $key, $meta_key_ent ));
203
  sort( $metas );
204
  return $metas;
205
  }
@@ -271,6 +304,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
271
  'product_shipping_class' => array( 'label' => __( 'Product Shipping Class', 'woo-order-export-lite' ), 'checked' => 0 ),
272
  'post_content'=> array( 'label' => __( 'Description', 'woo-order-export-lite' ), 'checked' => 0 ),
273
  'post_excerpt'=> array( 'label' => __( 'Short Description', 'woo-order-export-lite' ), 'checked' => 0 ),
 
274
  );
275
 
276
  foreach ( $map as $key => $value ) {
@@ -322,6 +356,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
322
 
323
  public static function get_order_fields_common() {
324
  return array(
 
325
  'order_id' => array( 'label' => __( 'Order ID', 'woo-order-export-lite' ), 'checked' => 0 ),
326
  'order_number' => array( 'label' => __( 'Order Number', 'woo-order-export-lite' ), 'checked' => 1 ),
327
  'order_status' => array( 'label' => __( 'Order Status', 'woo-order-export-lite' ), 'checked' => 1 ),
@@ -410,6 +445,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
410
  'cart_discount' => array( 'label' => __( 'Cart Discount Amount', 'woo-order-export-lite' ), 'checked' => 1, 'format'=>'money' ),
411
  'cart_discount_tax' => array( 'label' => __( 'Cart Discount Amount Tax', 'woo-order-export-lite' ), 'checked' => 0, 'format'=>'money' ),
412
  'order_subtotal' => array( 'label' => __( 'Order Subtotal Amount', 'woo-order-export-lite' ), 'checked' => 1, 'format'=>'money' ),
 
413
  'order_subtotal_refunded'=> array( 'label' => __( 'Order Subtotal Amount Refunded', 'woo-order-export-lite' ), 'checked' => 0, 'format'=>'money' ),
414
  'order_subtotal_minus_refund'=> array( 'label' => __( 'Order Subtotal Amount (- Refund)', 'woo-order-export-lite' ), 'checked' => 0, 'format'=>'money' ),
415
  'order_tax' => array( 'label' => __( 'Order Tax Amount', 'woo-order-export-lite' ), 'checked' => 0, 'format'=>'money' ),
66
  (SELECT DISTINCT ID FROM {$wpdb->posts} WHERE post_type IN ('product','product_variation') AND ID IN ($sql_products))" );
67
 
68
  $fields = array_unique( array_merge( $wp_fields, $wc_fields ) );
69
+ $fields = sort( $fields );
70
 
71
  return apply_filters( 'get_all_product_custom_meta_fields_for_orders', $fields );
72
  }
73
 
74
+ public static function get_order_item_custom_meta_fields_for_orders( $sql_order_ids ) {
75
+ global $wpdb;
76
+
77
+ $wc_fields = $wpdb->get_col( "SELECT DISTINCT meta_key FROM {$wpdb->prefix}woocommerce_order_itemmeta WHERE order_item_id IN
78
+ (SELECT DISTINCT order_item_id FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_type = 'line_item' AND order_id IN ($sql_order_ids))" );
79
+ // WC internal table add attributes
80
+ $wc_attr_fields = $wpdb->get_results( "SELECT DISTINCT attribute_name FROM {$wpdb->prefix}woocommerce_attribute_taxonomies" );
81
+ foreach ( $wc_attr_fields as $f ) {
82
+ $wc_fields[] = 'pa_' . $f->attribute_name;
83
+ }
84
+
85
+ $wc_fields = array_unique($wc_fields);
86
+ sort($wc_fields);
87
+
88
+
89
+
90
+ return apply_filters( 'get_order_item_custom_meta_fields_for_orders', $wc_fields );
91
+ }
92
+
93
+ public static function get_product_custom_meta_fields_for_orders( $sql_order_ids ) {
94
+ global $wpdb;
95
+
96
+ $sql_products = "SELECT DISTINCT meta_value FROM {$wpdb->prefix}woocommerce_order_itemmeta WHERE meta_key ='_product_id' AND order_item_id IN
97
+ (SELECT DISTINCT order_item_id FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_type = 'line_item' AND order_id IN ($sql_order_ids))";
98
+
99
+ $wp_fields = $wpdb->get_col( "SELECT DISTINCT meta_key FROM {$wpdb->postmeta} WHERE post_id IN
100
+ (SELECT DISTINCT ID FROM {$wpdb->posts} WHERE post_type IN ('product','product_variation') AND ID IN ($sql_products))" );
101
+
102
+ sort($wp_fields);
103
+
104
+ return apply_filters( 'get_product_custom_meta_fields_for_orders', $wp_fields );
105
+ }
106
+
107
  public static function get_all_product_custom_meta_fields() {
108
  global $wpdb;
109
 
232
  public static function get_products_itemmeta_values( $key ) {
233
  global $wpdb;
234
  $meta_key_ent = esc_html($key);
235
+ $metas = $wpdb->get_col( $wpdb->prepare("SELECT DISTINCT meta_value FROM {$wpdb->prefix}woocommerce_order_itemmeta where meta_key = '%s' OR meta_key='%s' LIMIT 100", $key, $meta_key_ent ));
236
  sort( $metas );
237
  return $metas;
238
  }
304
  'product_shipping_class' => array( 'label' => __( 'Product Shipping Class', 'woo-order-export-lite' ), 'checked' => 0 ),
305
  'post_content'=> array( 'label' => __( 'Description', 'woo-order-export-lite' ), 'checked' => 0 ),
306
  'post_excerpt'=> array( 'label' => __( 'Short Description', 'woo-order-export-lite' ), 'checked' => 0 ),
307
+ 'full_category_names' => array( 'label' => __( 'Full names for categories', 'woo-order-export-lite' ), 'checked' => 0 )
308
  );
309
 
310
  foreach ( $map as $key => $value ) {
356
 
357
  public static function get_order_fields_common() {
358
  return array(
359
+ 'line_number' => array( 'label' => __( 'Line number', 'woo-order-export-lite' ), 'checked' => 0 ),
360
  'order_id' => array( 'label' => __( 'Order ID', 'woo-order-export-lite' ), 'checked' => 0 ),
361
  'order_number' => array( 'label' => __( 'Order Number', 'woo-order-export-lite' ), 'checked' => 1 ),
362
  'order_status' => array( 'label' => __( 'Order Status', 'woo-order-export-lite' ), 'checked' => 1 ),
445
  'cart_discount' => array( 'label' => __( 'Cart Discount Amount', 'woo-order-export-lite' ), 'checked' => 1, 'format'=>'money' ),
446
  'cart_discount_tax' => array( 'label' => __( 'Cart Discount Amount Tax', 'woo-order-export-lite' ), 'checked' => 0, 'format'=>'money' ),
447
  'order_subtotal' => array( 'label' => __( 'Order Subtotal Amount', 'woo-order-export-lite' ), 'checked' => 1, 'format'=>'money' ),
448
+ 'order_subtotal_minus_discount' => array( 'label' => 'Order Subtotal - Cart Discount', 'colname' => 'Order Subtotal - Cart Discount', 'checked' => 0 ),
449
  'order_subtotal_refunded'=> array( 'label' => __( 'Order Subtotal Amount Refunded', 'woo-order-export-lite' ), 'checked' => 0, 'format'=>'money' ),
450
  'order_subtotal_minus_refund'=> array( 'label' => __( 'Order Subtotal Amount (- Refund)', 'woo-order-export-lite' ), 'checked' => 0, 'format'=>'money' ),
451
  'order_tax' => array( 'label' => __( 'Order Tax Amount', 'woo-order-export-lite' ), 'checked' => 0, 'format'=>'money' ),
classes/core/class-wc-order-export-data-extractor.php CHANGED
@@ -13,6 +13,10 @@ class WC_Order_Export_Data_Extractor {
13
  static $current_order;
14
  static $date_format;
15
  static $object_type = 'shop_order';
 
 
 
 
16
  const HUGE_SHOP_ORDERS = 1000;// more than 1000 orders
17
  const HUGE_SHOP_PRODUCTS = 1000;// more than 1000 products
18
 
@@ -151,21 +155,33 @@ class WC_Order_Export_Data_Extractor {
151
  '=' => 'IN',
152
  '<>' => 'NOT IN',
153
  'LIKE' => 'LIKE',
 
 
154
  );
 
 
155
  foreach ( $pairs as $pair ) {
156
  $pair = trim( $pair );
157
  $op = '';
 
158
  foreach($delimiters as $delim=>$op_seek) {
159
  $t = explode( $delim, $pair );
160
- if(count($t) == 2) {
 
161
  $op = $op_seek;
162
  break;
163
  }
164
  }
165
  if( !$op )
166
  continue;
 
 
167
 
168
  list( $filter_type, $filter_value ) = array_map("trim", $t);
 
 
 
 
169
 
170
  if ( $mode == 'lower_filter_label' ) {
171
  $filter_type = strtolower( $filter_type );
@@ -349,7 +365,6 @@ class WC_Order_Export_Data_Extractor {
349
  $left_join_product_meta = join( " ", $left_join_product_meta );
350
  }
351
  }
352
-
353
  //done
354
  $product_where = join(" AND ", $product_where);
355
  $sql = "SELECT DISTINCT ID FROM {$wpdb->posts} AS products $left_join_product_meta WHERE products.post_type in ('product','product_variation') AND products.post_status<>'trash' AND $product_where ";
@@ -362,7 +377,9 @@ class WC_Order_Export_Data_Extractor {
362
  $sql = "SELECT DISTINCT ID FROM {$wpdb->posts} AS products WHERE products.post_type in ('product','product_variation') AND products.post_status<>'trash' AND post_parent IN ($values)";
363
  $settings['products'] = $wpdb->get_col($sql);
364
  }
365
-
 
 
366
  return apply_filters('woe_sql_adjust_products', $settings['products'] , $settings);
367
  }
368
 
@@ -375,19 +392,21 @@ class WC_Order_Export_Data_Extractor {
375
  if ( $settings['product_taxonomies'] ) {
376
  $attrs = self::get_product_taxonomies();
377
  $names2fields = array_flip( $attrs );
378
- $filters = self::parse_pairs( $settings['product_taxonomies'], $attrs );
379
  //print_r($filters );die();
380
- foreach ( $filters as $label => $values ) {
381
- $field = $names2fields[ $label ];
382
- $values = self::sql_subset( $values );
383
- if ( $values ) {
384
- $taxonomy_where_object_id = $taxonomy_where ? "AND object_id IN ($taxonomy_where)" : "";
385
- $taxonomy_where = "(SELECT object_id FROM {$wpdb->term_relationships} AS `{$field}_rel`
386
- INNER JOIN {$wpdb->term_taxonomy} AS `{$field}_cat` ON `{$field}_cat`.term_taxonomy_id = `{$field}_rel`.term_taxonomy_id
387
- WHERE `{$field}_cat`.term_id IN (SELECT term_id FROM {$wpdb->terms} WHERE name IN($values) ) $taxonomy_where_object_id
388
- )";
 
 
389
  }
390
- }
391
  }
392
 
393
  $product_category_where = $taxonomy_where;
@@ -527,13 +546,30 @@ class WC_Order_Export_Data_Extractor {
527
  }
528
  // shipping methods
529
  if ( ! empty( $settings['shipping_methods'] ) ) {
530
- $like_values = array();
531
- foreach($settings['shipping_methods'] as $value)
532
- $like_values[] = "(shipping_itemmeta.meta_value LIKE '$value%') ";
533
- $like_values = join( " OR ", $like_values);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
534
  $order_items_where .= " AND orders.ID IN (SELECT order_shippings.order_id FROM {$wpdb->prefix}woocommerce_order_items as order_shippings
535
  LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS shipping_itemmeta ON shipping_itemmeta.order_item_id = order_shippings.order_item_id
536
- WHERE order_shippings.order_item_type='shipping' AND shipping_itemmeta.meta_key='method_id' AND ( $like_values ) )";
537
  }
538
 
539
  // pre top
@@ -554,16 +590,20 @@ class WC_Order_Export_Data_Extractor {
554
  foreach ( $filters as $operator => $fields) {
555
  foreach ( $fields as $field => $values ) {
556
  if ( $values ) {
557
- $left_join_order_meta[] = "LEFT JOIN {$wpdb->postmeta} AS ordermeta_cf_{$pos} ON ordermeta_cf_{$pos}.post_id = orders.ID";
558
  if( $operator == 'IN' OR $operator == 'NOT IN' ) {
559
  $values = self::sql_subset( $values );
560
- $order_meta_where [] = " (ordermeta_cf_{$pos}.meta_key='$field' AND ordermeta_cf_{$pos}.meta_value $operator ($values)) ";
 
 
 
 
561
  } elseif( $operator =='LIKE' ) {
562
  $pairs = array();
563
  foreach($values as $v)
564
  $pairs[] = " ordermeta_cf_{$pos}.meta_value LIKE '$v' ";
565
  $pairs = join("OR", $pairs);
566
- $order_meta_where[] = " (ordermeta_cf_{$pos}.meta_key='$field' AND ($pairs) ) ";
567
  }
568
  $pos++;
569
  }//if values
@@ -652,13 +692,16 @@ class WC_Order_Export_Data_Extractor {
652
  $sql = "SELECT " . apply_filters( "woe_sql_get_order_ids_fields", "ID AS order_id" ) . " FROM {$wpdb->posts} AS orders
653
  {$left_join_order_meta}
654
  WHERE orders.post_type in ( $order_types) AND $order_sql $order_meta_where $order_items_where";
 
 
 
655
  //die($sql);
656
  return $sql;
657
  }
658
 
659
  private static function add_date_filter(&$where, &$where_meta, $date_field, $value) {
660
  if( $date_field == 'date_paid' OR $date_field == 'date_completed') // 3.0+ uses timestamp
661
- $where_meta[] = "(order_$date_field.meta_value>0 AND FROM_UNIXTIME(order_$date_field.meta_value) " . $value.")";
662
  elseif( $date_field == 'paid_date' OR $date_field == 'completed_date') // previous versions use mysql datetime
663
  $where_meta[] = "(order_$date_field.meta_value<>'' AND order_$date_field.meta_value " . $value.")";
664
  else
@@ -672,28 +715,25 @@ class WC_Order_Export_Data_Extractor {
672
  $settings[ 'export_rule_field' ] = 'modified';
673
 
674
  $date_field = $settings[ 'export_rule_field' ];
 
675
  //rename this field for 2.6 and less
676
  if( !method_exists( 'WC_Order', "get_date_completed") ) {
677
- if( $date_field == 'date_paid')
 
678
  $date_field = 'paid_date';
679
- elseif( $date_field == 'date_completed')
680
  $date_field = 'completed_date';
681
  }
682
  $where_meta = array();
683
 
 
684
 
685
- if ( $settings['from_date'] ) {
686
- $from_date = date( 'Y-m-d', strtotime( $settings['from_date'] ) );
687
- if ( $from_date ) {
688
- self::add_date_filter($where, $where_meta, $date_field, ">='$from_date 00:00:00'" );
689
- }
690
- }
691
- if ( $settings['to_date'] ) {
692
- $to_date = date( 'Y-m-d', strtotime( $settings['to_date'] ) );
693
- if ( $to_date ) {
694
- self::add_date_filter($where, $where_meta, $date_field, "<='$to_date 23:59:59'" );
695
- }
696
  }
 
 
 
697
  if ( $settings['statuses'] ) {
698
  $values = self::sql_subset( $settings['statuses'] );
699
  if ( $values ) {
@@ -701,99 +741,159 @@ class WC_Order_Export_Data_Extractor {
701
  }
702
  }
703
 
704
- //export rule
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
705
  $_time = current_time( "timestamp", 0 );
706
 
707
- //skip rules if data range defined
708
- if( ! isset($settings[ 'export_rule' ])/* OR $settings['from_date'] OR $settings['to_date']*/ )
709
- $settings[ 'export_rule' ] = '';
710
 
711
- switch ( $settings[ 'export_rule' ] ) {
 
 
 
 
712
  case "last_run":
713
- if ( !empty( $settings[ 'schedule' ][ 'last_run' ] ) ) {
714
- self::add_date_filter($where, $where_meta, $date_field, ' >= "' . date( 'Y-m-d H:i:s', $settings[ 'schedule' ][ 'last_run' ] ) . '"' );
 
715
  }
716
  break;
717
  case "today":
718
- $_date = date( 'Y-m-d', $_time );
719
- self::add_date_filter($where, $where_meta, $date_field, ">='$_date 00:00:00'" );
720
- self::add_date_filter($where, $where_meta, $date_field, "<='$_date 23:59:59'" );
 
721
  break;
722
  case "this_week":
723
- $day = date( 'w', $_time );
724
- $_date = date( 'Y-m-d', $_time );
725
- $week_start = date( 'Y-m-d', strtotime( $_date . ' -' . $day . ' days' ) );
726
- $week_end = date( 'Y-m-d', strtotime( $_date . ' +' . (6 - $day) . ' days' ) );
727
- self::add_date_filter($where, $where_meta, $date_field, ">='$week_start 00:00:00'" );
728
- self::add_date_filter($where, $where_meta, $date_field, "<='$week_end 23:59:59'" );
 
729
  break;
730
  case "this_month":
731
  $month_start = date( 'Y-m-01', $_time );
732
- $month_end = date( 'Y-m-t', $_time );
733
- self::add_date_filter($where, $where_meta, $date_field, ">='$month_start 00:00:00'" );
734
- self::add_date_filter($where, $where_meta, $date_field, "<='$month_end 23:59:59'" );
 
735
  break;
736
  case "last_day":
737
- $_date = date( 'Y-m-d', $_time );
738
- $last_day = strtotime($_date." -1 day");
739
- $_date = date( 'Y-m-d', $last_day );
740
- self::add_date_filter($where, $where_meta, $date_field, ">='$_date 00:00:00'" );
741
- self::add_date_filter($where, $where_meta, $date_field, "<='$_date 23:59:59'" );
 
742
  break;
743
  case "last_week":
744
- $day = date( 'w', $_time );
745
- $_date = date( 'Y-m-d', $_time );
746
- $last_week = strtotime($_date." -1 week");
747
- $week_start = date( 'Y-m-d', strtotime( date( 'Y-m-d', $last_week ) . ' -' . $day . ' days' ) );
748
- $week_end = date( 'Y-m-d', strtotime( date( 'Y-m-d', $last_week ) . ' +' . (6 - $day) . ' days' ) );
749
- self::add_date_filter($where, $where_meta, $date_field, ">='$week_start 00:00:00'" );
750
- self::add_date_filter($where, $where_meta, $date_field, "<='$week_end 23:59:59'" );
 
751
  break;
752
  case "last_month":
753
- $_date = date( 'Y-m-d', $_time );
754
- $last_month = strtotime($_date." -1 month");
755
  $month_start = date( 'Y-m-01', $last_month );
756
- $month_end = date( 'Y-m-t', $last_month );
757
- self::add_date_filter($where, $where_meta, $date_field, ">='$month_start 00:00:00'" );
758
- self::add_date_filter($where, $where_meta, $date_field, "<='$month_end 23:59:59'" );
 
759
  break;
760
  case "last_quarter":
761
- $_date = date( 'Y-m-d', $_time );
762
- $last_month = strtotime($_date." -3 month");
763
- $quarter_start = date( 'Y-'. self::get_quarter_month($last_month).'-01', $last_month );
764
- $quarter_end = date( 'Y-'. (self::get_quarter_month($last_month)+2).'-31', $last_month );
765
- self::add_date_filter($where, $where_meta, $date_field, ">='$quarter_start 00:00:00'" );
766
- self::add_date_filter($where, $where_meta, $date_field, "<='$quarter_end 23:59:59'" );
 
767
  break;
768
  case "this_year":
769
- $year_start = date( 'Y-01-01', $_time );
770
- self::add_date_filter($where, $where_meta, $date_field, ">='$year_start 00:00:00'" );
 
771
  break;
772
  case "custom":
773
- if ( isset( $settings[ 'export_rule_custom' ] ) && ($settings[ 'export_rule_custom' ]) ) {
774
- $day_start = date( 'Y-m-d', strtotime( date( 'Y-m-d', $_time ) . ' -' . intval( $settings[ 'export_rule_custom' ] ) . ' days' ) );
775
- $day_end = date( 'Y-m-d', $_time );
776
- self::add_date_filter($where, $where_meta, $date_field, ">='$day_start 00:00:00'" );
777
- self::add_date_filter($where, $where_meta, $date_field, "<='$day_end 23:59:59'" );
 
 
 
778
  }
779
  break;
780
  default:
781
  break;
782
  }
783
- //end export rule
784
 
785
- //for date_paid or date_completed
786
- if( $where_meta ) {
787
- $where_meta = join( " AND ", $where_meta );
788
- $where[] = "orders.id IN ( SELECT post_id FROM {$wpdb->postmeta} AS order_$date_field WHERE order_$date_field.meta_key ='_$date_field' AND $where_meta)";
 
 
 
789
  }
790
-
791
- // skip child orders?
792
- if( $settings['skip_suborders'] AND !$settings['export_refunds'])
793
- $where[] = "orders.post_parent=0";
794
 
795
- // Skip drafts and deleted
796
- $where[] = "orders.post_status NOT in ('auto-draft','trash')";
 
 
 
 
 
 
 
 
797
  }
798
 
799
  public static function get_quarter_month( $time ) {
@@ -815,8 +915,21 @@ class WC_Order_Export_Data_Extractor {
815
  self::$decimal_separator = wc_get_price_decimal_separator();
816
  self::$thousands_separator = apply_filters( 'woe_thousands_separator', '' );
817
  self::$decimals = wc_get_price_decimals();
 
 
 
 
 
 
 
 
 
 
 
 
818
  }
819
 
 
820
  public static function get_max_order_items( $type, $ids ) {
821
  global $wpdb;
822
 
@@ -877,7 +990,6 @@ class WC_Order_Export_Data_Extractor {
877
  } else {
878
  $row[ $field ] = '';
879
  }
880
-
881
  if ( isset( $filters_active[ $field ] ) ) {
882
  $row[ $field ] = apply_filters( "woe_get_order_coupon_value_{$field}", $row[ $field ], $order, $item );
883
  $row[ $field ] = apply_filters( "woe_get_order_coupon_{$format}_value_{$field}", $row[ $field ], $order, $item );
@@ -976,14 +1088,6 @@ class WC_Order_Export_Data_Extractor {
976
  $row[ $field ] = ""; // unknown class
977
  } elseif ( $field == 'line_total_plus_tax' ) {
978
  $row[ $field ] = $item_meta["_line_total"][0] + $item_meta["_line_tax"][0];
979
- } elseif ( isset( $item_meta[ $field ] ) ) { //meta from order
980
- $row[ $field ] = $item_meta[ $field ][0];
981
- } elseif ( isset( $item_meta[ "_" . $field ] ) ) {// or hidden field
982
- $row[ $field ] = $item_meta[ "_" . $field ][0];
983
- } elseif ( isset( $item['item_meta'][ $field ] ) ) { // meta from item line
984
- $row[ $field ] = $item['item_meta'][ $field ][0];
985
- } elseif ( isset( $item['item_meta'][ "_" . $field ] ) ) { // or hidden field
986
- $row[ $field ] = $item['item_meta'][ "_" . $field ][0];
987
  } elseif ( $field == 'name' ) {
988
  $row['name'] = $item["name"];
989
  } elseif ( $field == 'product_variation' ) {
@@ -1055,7 +1159,9 @@ class WC_Order_Export_Data_Extractor {
1055
  }
1056
  $row[ $field ] = ($subtotal_amount>0) ? round( 100*$subtotal_tax/$subtotal_amount, 2) : 0;
1057
  } elseif ( $field == 'product_url' ) {
1058
- $row[ $field ] = get_permalink( $product_id );
 
 
1059
  } elseif ( $field == 'download_url' ) {
1060
  $row[ $field ] = '';
1061
  if ( $product AND $product->is_downloadable() ) {
@@ -1068,9 +1174,20 @@ class WC_Order_Export_Data_Extractor {
1068
  $row[ $field ] = implode( "\n", $links );
1069
  }
1070
  } elseif ( $field == 'image_url' ) {
1071
- $row[ $field ] = ($product AND $product->get_image_id() ) ? current( wp_get_attachment_image_src( $product->get_image_id(), 'full') ) : ''; // make full url
 
 
 
1072
  } elseif ( isset( $static_vals[ $field ] ) ) {
1073
  $row[ $field ] = $static_vals[ $field ];
 
 
 
 
 
 
 
 
1074
  } else {
1075
  $row[ $field ] = '';
1076
  if( !empty( $item['variation_id'] ) )
@@ -1102,6 +1219,29 @@ class WC_Order_Export_Data_Extractor {
1102
  return apply_filters( "woe_fetch_order_products", $products, $order, $labels, $format, $static_vals );
1103
  }
1104
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1105
  public static function get_order_item_taxes_refund($order, $item_id) {
1106
  $tax_refund = 0;
1107
  $order_taxes = $order->get_taxes();
@@ -1218,6 +1358,8 @@ class WC_Order_Export_Data_Extractor {
1218
  $row['order_number'] = $parent_order ? $parent_order->get_order_number() : $order->get_order_number(); // use parent order number
1219
  } elseif ( $field == 'order_subtotal' ) {
1220
  $row['order_subtotal'] = wc_format_decimal( $order->get_subtotal(), 2);
 
 
1221
  } elseif ( $field == 'order_subtotal_refunded' ) {
1222
  $row['order_subtotal_refunded'] = wc_format_decimal( self::get_order_subtotal_refunded($order), 2);
1223
  } elseif ( $field == 'order_subtotal_minus_refund' ) {
@@ -1389,7 +1531,7 @@ class WC_Order_Export_Data_Extractor {
1389
  }
1390
 
1391
  // Must fill child cells?
1392
- if ( !$options['item_rows_start_from_new_line'] AND @$options['populate_other_columns_product_rows'] AND $extra_rows ) {
1393
  foreach ( $extra_rows as $idx=> $extra_row ) {
1394
  foreach ( $row as $key=> $val ) {
1395
  if ( in_array( $key, $order_fields) )
@@ -1416,7 +1558,7 @@ class WC_Order_Export_Data_Extractor {
1416
  return apply_filters("woe_fetch_order_data",$extra_rows);
1417
  }
1418
 
1419
- private static function get_city_state_postcode_field_value( $order, $type ) {
1420
  if ( $type != 'shipping' && $type != 'billing') {
1421
  return null;
1422
  }
@@ -1573,21 +1715,21 @@ class WC_Order_Export_Data_Extractor {
1573
  * @return array
1574
  */
1575
  public static function get_shipping_methods() {
1576
-
 
 
 
 
 
 
 
 
 
1577
  if( !class_exists("WC_Shipping_Zone") )
1578
- return array();
1579
 
1580
  if( !method_exists("WC_Shipping_Zone", "get_shipping_methods") )
1581
- return array();
1582
-
1583
- $shipping_methods = array();
1584
-
1585
- $zone = new WC_Shipping_Zone( 0 );
1586
- $methods = $zone->get_shipping_methods();
1587
- /** @var WC_Shipping_Method $method */
1588
- foreach ( $methods as $method ) {
1589
- $shipping_methods[ $method->get_rate_id() ] = __('[Rest of the World]', 'woo-order-export-lite' ) .' '. $method->get_title();
1590
- }
1591
 
1592
  foreach ( WC_Shipping_Zones::get_zones() as $zone ) {
1593
  $methods = $zone['shipping_methods'];
@@ -1596,6 +1738,14 @@ class WC_Order_Export_Data_Extractor {
1596
  $shipping_methods[ $method->get_rate_id() ] = '[' . $zone['zone_name'] . '] ' . $method->get_title();
1597
  }
1598
  }
 
 
 
 
 
 
 
 
1599
  return $shipping_methods;
1600
  }
1601
 
13
  static $current_order;
14
  static $date_format;
15
  static $object_type = 'shop_order';
16
+ static $export_subcategories_separator;
17
+ static $export_line_categories_separator;
18
+ static $track_sql_queries = false;
19
+ static $sql_queries;
20
  const HUGE_SHOP_ORDERS = 1000;// more than 1000 orders
21
  const HUGE_SHOP_PRODUCTS = 1000;// more than 1000 products
22
 
155
  '=' => 'IN',
156
  '<>' => 'NOT IN',
157
  'LIKE' => 'LIKE',
158
+ 'NOT SET' => 'NOT SET',
159
+ 'IS SET' => 'IS SET',
160
  );
161
+ $single_ops = array('NOT SET', 'IS SET');
162
+
163
  foreach ( $pairs as $pair ) {
164
  $pair = trim( $pair );
165
  $op = '';
166
+ $single_op = false;
167
  foreach($delimiters as $delim=>$op_seek) {
168
  $t = explode( $delim, $pair );
169
+ $single_op = in_array($delim,$single_ops);
170
+ if( count($t) == 2 ) {
171
  $op = $op_seek;
172
  break;
173
  }
174
  }
175
  if( !$op )
176
  continue;
177
+ if( $single_op )
178
+ $t[1] = '';
179
 
180
  list( $filter_type, $filter_value ) = array_map("trim", $t);
181
+ $empty = __( 'empty', 'woo-order-export-lite' );
182
+ if ( $empty == $filter_value ) {
183
+ $filter_value = '';
184
+ }
185
 
186
  if ( $mode == 'lower_filter_label' ) {
187
  $filter_type = strtolower( $filter_type );
365
  $left_join_product_meta = join( " ", $left_join_product_meta );
366
  }
367
  }
 
368
  //done
369
  $product_where = join(" AND ", $product_where);
370
  $sql = "SELECT DISTINCT ID FROM {$wpdb->posts} AS products $left_join_product_meta WHERE products.post_type in ('product','product_variation') AND products.post_status<>'trash' AND $product_where ";
377
  $sql = "SELECT DISTINCT ID FROM {$wpdb->posts} AS products WHERE products.post_type in ('product','product_variation') AND products.post_status<>'trash' AND post_parent IN ($values)";
378
  $settings['products'] = $wpdb->get_col($sql);
379
  }
380
+ if( !empty($sql) AND self::$track_sql_queries )
381
+ self::$sql_queries[] = $sql;
382
+
383
  return apply_filters('woe_sql_adjust_products', $settings['products'] , $settings);
384
  }
385
 
392
  if ( $settings['product_taxonomies'] ) {
393
  $attrs = self::get_product_taxonomies();
394
  $names2fields = array_flip( $attrs );
395
+ $filters = self::parse_complex_pairs( $settings['product_taxonomies'], $attrs );
396
  //print_r($filters );die();
397
+ foreach ( $filters as $operator => $fields) {
398
+ foreach ( $fields as $label => $values ) {
399
+ $field = $names2fields[ $label ];
400
+ $values = self::sql_subset( $values );
401
+ if ( $values ) {
402
+ $taxonomy_where_object_id = $taxonomy_where ? "AND object_id IN ($taxonomy_where)" : "";
403
+ $taxonomy_where = "(SELECT object_id FROM {$wpdb->term_relationships} AS `{$field}_rel`
404
+ INNER JOIN {$wpdb->term_taxonomy} AS `{$field}_cat` ON `{$field}_cat`.term_taxonomy_id = `{$field}_rel`.term_taxonomy_id
405
+ WHERE `{$field}_cat`.term_id IN (SELECT term_id FROM {$wpdb->terms} WHERE name $operator ($values) ) $taxonomy_where_object_id
406
+ )";
407
+ }
408
  }
409
+ }
410
  }
411
 
412
  $product_category_where = $taxonomy_where;
546
  }
547
  // shipping methods
548
  if ( ! empty( $settings['shipping_methods'] ) ) {
549
+ $zone_values = $itemname_values = array();
550
+ foreach($settings['shipping_methods'] as $value) {
551
+ if( preg_match('#^order_item_name:(.+)#',$value, $m) )
552
+ $itemname_values[] = "'" . esc_sql($m[1]) . "'";
553
+ else
554
+ $zone_values[] = "(shipping_itemmeta.meta_value LIKE '$value%') ";
555
+ }
556
+
557
+ // where by type!
558
+ $ship_where = array();
559
+ if( $zone_values ) {
560
+ $zone_values = join( " OR ", $zone_values);
561
+ $ship_where[] = " (shipping_itemmeta.meta_key='method_id' AND ( $zone_values ) ) ";
562
+ }
563
+ if( $itemname_values ) {
564
+ $itemname_values = join(",", $itemname_values );
565
+ $ship_where[] = " (order_shippings.order_item_name IN ( $itemname_values ) ) ";
566
+ }
567
+ $ship_where = join( ' OR ', $ship_where);
568
+
569
+ //done
570
  $order_items_where .= " AND orders.ID IN (SELECT order_shippings.order_id FROM {$wpdb->prefix}woocommerce_order_items as order_shippings
571
  LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS shipping_itemmeta ON shipping_itemmeta.order_item_id = order_shippings.order_item_id
572
+ WHERE order_shippings.order_item_type='shipping' AND $ship_where )";
573
  }
574
 
575
  // pre top
590
  foreach ( $filters as $operator => $fields) {
591
  foreach ( $fields as $field => $values ) {
592
  if ( $values ) {
593
+ $left_join_order_meta[] = "LEFT JOIN {$wpdb->postmeta} AS ordermeta_cf_{$pos} ON ordermeta_cf_{$pos}.post_id = orders.ID AND ordermeta_cf_{$pos}.meta_key='$field'";
594
  if( $operator == 'IN' OR $operator == 'NOT IN' ) {
595
  $values = self::sql_subset( $values );
596
+ $order_meta_where [] = " ( ordermeta_cf_{$pos}.meta_value $operator ($values) ) ";
597
+ } elseif( $operator == 'NOT SET' ) {
598
+ $order_meta_where [] = " ( ordermeta_cf_{$pos}.meta_value IS NULL ) ";
599
+ } elseif( $operator == 'IS SET' ) {
600
+ $order_meta_where [] = " ( ordermeta_cf_{$pos}.meta_value IS NOT NULL ) ";
601
  } elseif( $operator =='LIKE' ) {
602
  $pairs = array();
603
  foreach($values as $v)
604
  $pairs[] = " ordermeta_cf_{$pos}.meta_value LIKE '$v' ";
605
  $pairs = join("OR", $pairs);
606
+ $order_meta_where[] = " ( $pairs ) ";
607
  }
608
  $pos++;
609
  }//if values
692
  $sql = "SELECT " . apply_filters( "woe_sql_get_order_ids_fields", "ID AS order_id" ) . " FROM {$wpdb->posts} AS orders
693
  {$left_join_order_meta}
694
  WHERE orders.post_type in ( $order_types) AND $order_sql $order_meta_where $order_items_where";
695
+
696
+ if( self::$track_sql_queries )
697
+ self::$sql_queries[] = $sql;
698
  //die($sql);
699
  return $sql;
700
  }
701
 
702
  private static function add_date_filter(&$where, &$where_meta, $date_field, $value) {
703
  if( $date_field == 'date_paid' OR $date_field == 'date_completed') // 3.0+ uses timestamp
704
+ $where_meta[] = "(order_$date_field.meta_value>0 AND order_$date_field.meta_value $value )";
705
  elseif( $date_field == 'paid_date' OR $date_field == 'completed_date') // previous versions use mysql datetime
706
  $where_meta[] = "(order_$date_field.meta_value<>'' AND order_$date_field.meta_value " . $value.")";
707
  else
715
  $settings[ 'export_rule_field' ] = 'modified';
716
 
717
  $date_field = $settings[ 'export_rule_field' ];
718
+ $use_timestamps = ( $date_field == 'date_paid' OR $date_field == 'date_completed' );
719
  //rename this field for 2.6 and less
720
  if( !method_exists( 'WC_Order', "get_date_completed") ) {
721
+ $use_timestamps = false;
722
+ if( $date_field == 'date_paid' )
723
  $date_field = 'paid_date';
724
+ elseif( $date_field == 'date_completed' )
725
  $date_field = 'completed_date';
726
  }
727
  $where_meta = array();
728
 
729
+ // export and date rule
730
 
731
+ foreach (self::get_date_range( $settings, true, $use_timestamps ) as $date ) {
732
+ self::add_date_filter( $where, $where_meta, $date_field, $date );
 
 
 
 
 
 
 
 
 
733
  }
734
+
735
+ // end export and date rule
736
+
737
  if ( $settings['statuses'] ) {
738
  $values = self::sql_subset( $settings['statuses'] );
739
  if ( $values ) {
741
  }
742
  }
743
 
744
+ //for date_paid or date_completed
745
+ if( $where_meta ) {
746
+ $where_meta = join( " AND ", $where_meta );
747
+ $where[] = "orders.id IN ( SELECT post_id FROM {$wpdb->postmeta} AS order_$date_field WHERE order_$date_field.meta_key ='_$date_field' AND $where_meta)";
748
+ }
749
+
750
+ // skip child orders?
751
+ if( $settings['skip_suborders'] AND !$settings['export_refunds'])
752
+ $where[] = "orders.post_parent=0";
753
+
754
+ // Skip drafts and deleted
755
+ $where[] = "orders.post_status NOT in ('auto-draft','trash')";
756
+ }
757
+
758
+ public static function get_date_range( $settings, $is_for_sql, $use_timestamps=false ) {
759
+ $result = array();
760
+
761
+ // fixed date range
762
+ if ( !empty( $settings['from_date'] ) OR !empty( $settings['to_date'] ) ) {
763
+ if ( $settings['from_date'] ) {
764
+ $from_date = date( 'Y-m-d', strtotime( $settings['from_date'] ) ) . " 00:00:00";
765
+ if ( $is_for_sql ) {
766
+ if( $use_timestamps )
767
+ $from_date = mysql2date( 'U', $from_date );
768
+ $from_date = sprintf( ">='%s'", $from_date );
769
+ }
770
+ $result['from_date'] = $from_date;
771
+ }
772
+
773
+ if ( $settings['to_date'] ) {
774
+ $to_date = date( 'Y-m-d', strtotime( $settings['to_date'] ) ) . " 23:59:59";
775
+ if ( $is_for_sql ) {
776
+ if( $use_timestamps )
777
+ $to_date = mysql2date( 'U', $to_date );
778
+ $to_date = sprintf( "<='%s'", $to_date );
779
+ }
780
+ $result['to_date'] = $to_date;
781
+ }
782
+ return $result;
783
+ }
784
+
785
  $_time = current_time( "timestamp", 0 );
786
 
787
+ $export_rule = isset( $settings['export_rule'] ) ? $settings['export_rule'] : '';
 
 
788
 
789
+ switch ( $export_rule ) {
790
+ case "none":
791
+ unset( $from_date );
792
+ unset( $to_date );
793
+ break;
794
  case "last_run":
795
+ $last_run = isset( $settings['schedule']['last_run'] ) ? $settings['schedule']['last_run'] : '';
796
+ if ( isset( $last_run ) AND $last_run ) {
797
+ $from_date = date( 'Y-m-d H:i:s', $last_run );
798
  }
799
  break;
800
  case "today":
801
+ $_date = date( 'Y-m-d', $_time );
802
+
803
+ $from_date = sprintf( '%s %s', $_date, '00:00:00' );
804
+ $to_date = sprintf( '%s %s', $_date, '23:59:59' );
805
  break;
806
  case "this_week":
807
+ $day = ( date( 'w', $_time ) + 6 ) % 7;// 0 - Sun , must be Mon = 0
808
+ $_date = date( 'Y-m-d', $_time );
809
+ $week_start = date( 'Y-m-d', strtotime( $_date . ' -' . $day . ' days' ) );
810
+ $week_end = date( 'Y-m-d', strtotime( $_date . ' +' . ( 6 - $day ) . ' days' ) );
811
+
812
+ $from_date = sprintf( '%s %s', $week_start, '00:00:00' );
813
+ $to_date = sprintf( '%s %s', $week_end, '23:59:59' );
814
  break;
815
  case "this_month":
816
  $month_start = date( 'Y-m-01', $_time );
817
+ $month_end = date( 'Y-m-t', $_time );
818
+
819
+ $from_date = sprintf( '%s %s', $month_start, '00:00:00' );
820
+ $to_date = sprintf( '%s %s', $month_end, '23:59:59' );
821
  break;
822
  case "last_day":
823
+ $_date = date( 'Y-m-d', $_time );
824
+ $last_day = strtotime( $_date . " -1 day" );
825
+ $_date = date( 'Y-m-d', $last_day );
826
+
827
+ $from_date = sprintf( '%s %s', $_date, '00:00:00' );
828
+ $to_date = sprintf( '%s %s', $_date, '23:59:59' );
829
  break;
830
  case "last_week":
831
+ $day = ( date( 'w', $_time ) + 6 ) % 7;// 0 - Sun , must be Mon = 0
832
+ $_date = date( 'Y-m-d', $_time );
833
+ $last_week = strtotime( $_date . " -1 week" );
834
+ $week_start = date( 'Y-m-d', strtotime( date( 'Y-m-d', $last_week ) . ' -' . $day . ' days' ) );
835
+ $week_end = date( 'Y-m-d', strtotime( date( 'Y-m-d', $last_week ) . ' +' . ( 6 - $day ) . ' days' ) );
836
+
837
+ $from_date = sprintf( '%s %s', $week_start, '00:00:00' );
838
+ $to_date = sprintf( '%s %s', $week_end, '23:59:59' );
839
  break;
840
  case "last_month":
841
+ $_date = date( 'Y-m-d', $_time );
842
+ $last_month = strtotime( $_date . " -1 month" );
843
  $month_start = date( 'Y-m-01', $last_month );
844
+ $month_end = date( 'Y-m-t', $last_month );
845
+
846
+ $from_date = sprintf( '%s %s', $month_start, '00:00:00' );
847
+ $to_date = sprintf( '%s %s', $month_end, '23:59:59' );
848
  break;
849
  case "last_quarter":
850
+ $_date = date( 'Y-m-d', $_time );
851
+ $last_month = strtotime( $_date . " -3 month" );
852
+ $quarter_start = date( 'Y-' . self::get_quarter_month( $last_month ) . '-01', $last_month );
853
+ $quarter_end = date( 'Y-' . ( self::get_quarter_month( $last_month ) + 2 ) . '-31', $last_month );
854
+
855
+ $from_date = sprintf( '%s %s', $quarter_start, '00:00:00' );
856
+ $to_date = sprintf( '%s %s', $quarter_end, '23:59:59' );
857
  break;
858
  case "this_year":
859
+ $year_start = date( 'Y-01-01', $_time );
860
+
861
+ $from_date = sprintf( '%s %s', $year_start, '00:00:00' );
862
  break;
863
  case "custom":
864
+ $export_rule_custom = isset( $settings['export_rule_custom'] ) ? $settings['export_rule_custom'] : '';
865
+ if ( isset( $export_rule_custom ) AND $export_rule_custom ) {
866
+ $day_start = date( 'Y-m-d',
867
+ strtotime( date( 'Y-m-d', $_time ) . ' -' . intval( $export_rule_custom ) . ' days' ) );
868
+ $day_end = date( 'Y-m-d', $_time );
869
+
870
+ $from_date = sprintf( '%s %s', $day_start, '00:00:00' );
871
+ $to_date = sprintf( '%s %s', $day_end, '23:59:59' );
872
  }
873
  break;
874
  default:
875
  break;
876
  }
 
877
 
878
+ if ( isset( $from_date ) AND $from_date ) {
879
+ if ( $is_for_sql ) {
880
+ if( $use_timestamps )
881
+ $from_date = mysql2date( 'U', $from_date );
882
+ $from_date = sprintf( ">='%s'", $from_date );
883
+ }
884
+ $result['from_date'] = $from_date;
885
  }
 
 
 
 
886
 
887
+ if ( isset( $to_date ) AND $to_date ) {
888
+ if ( $is_for_sql ) {
889
+ if( $use_timestamps )
890
+ $to_date = mysql2date( 'U', $to_date );
891
+ $to_date = sprintf( "<='%s'", $to_date );
892
+ }
893
+ $result['to_date'] = $to_date;
894
+ }
895
+
896
+ return $result;
897
  }
898
 
899
  public static function get_quarter_month( $time ) {
915
  self::$decimal_separator = wc_get_price_decimal_separator();
916
  self::$thousands_separator = apply_filters( 'woe_thousands_separator', '' );
917
  self::$decimals = wc_get_price_decimals();
918
+ self::$export_subcategories_separator = apply_filters( 'woe_export_subcategories_separator', ">" );
919
+ self::$export_line_categories_separator = apply_filters( 'woe_export_line_categories_separator', ",\n" );
920
+ }
921
+
922
+ //for debug
923
+ public static function start_track_queries() {
924
+ self::$track_sql_queries = true;
925
+ self::$sql_queries = array();
926
+ }
927
+
928
+ public static function get_sql_queries() {
929
+ return self::$sql_queries;
930
  }
931
 
932
+ //for csv/excel
933
  public static function get_max_order_items( $type, $ids ) {
934
  global $wpdb;
935
 
990
  } else {
991
  $row[ $field ] = '';
992
  }
 
993
  if ( isset( $filters_active[ $field ] ) ) {
994
  $row[ $field ] = apply_filters( "woe_get_order_coupon_value_{$field}", $row[ $field ], $order, $item );
995
  $row[ $field ] = apply_filters( "woe_get_order_coupon_{$format}_value_{$field}", $row[ $field ], $order, $item );
1088
  $row[ $field ] = ""; // unknown class
1089
  } elseif ( $field == 'line_total_plus_tax' ) {
1090
  $row[ $field ] = $item_meta["_line_total"][0] + $item_meta["_line_tax"][0];
 
 
 
 
 
 
 
 
1091
  } elseif ( $field == 'name' ) {
1092
  $row['name'] = $item["name"];
1093
  } elseif ( $field == 'product_variation' ) {
1159
  }
1160
  $row[ $field ] = ($subtotal_amount>0) ? round( 100*$subtotal_tax/$subtotal_amount, 2) : 0;
1161
  } elseif ( $field == 'product_url' ) {
1162
+ $row[ $field ] = get_permalink( $product_id );
1163
+ } elseif ( $field == 'sku' ) {
1164
+ $row[ $field ] = method_exists($product,'get_'.$field) ? $product->{'get_'.$field}() : get_post_meta( $product_id, '_' . $field, true );
1165
  } elseif ( $field == 'download_url' ) {
1166
  $row[ $field ] = '';
1167
  if ( $product AND $product->is_downloadable() ) {
1174
  $row[ $field ] = implode( "\n", $links );
1175
  }
1176
  } elseif ( $field == 'image_url' ) {
1177
+ $row[ $field ] = ( is_object( $product ) AND $product->get_image_id() ) ? current( wp_get_attachment_image_src( $product->get_image_id(),
1178
+ 'full' ) ) : ''; // make full url
1179
+ } elseif ( $field == 'full_category_names' ) {
1180
+ $row[ $field ] = self::get_product_category_full( $product );
1181
  } elseif ( isset( $static_vals[ $field ] ) ) {
1182
  $row[ $field ] = $static_vals[ $field ];
1183
+ } elseif ( isset( $item_meta[ $field ] ) ) { //meta from order
1184
+ $row[ $field ] = $item_meta[ $field ][0];
1185
+ } elseif ( isset( $item_meta[ "_" . $field ] ) ) {// or hidden field
1186
+ $row[ $field ] = $item_meta[ "_" . $field ][0];
1187
+ } elseif ( isset( $item['item_meta'][ $field ] ) ) { // meta from item line
1188
+ $row[ $field ] = $item['item_meta'][ $field ][0];
1189
+ } elseif ( isset( $item['item_meta'][ "_" . $field ] ) ) { // or hidden field
1190
+ $row[ $field ] = $item['item_meta'][ "_" . $field ][0];
1191
  } else {
1192
  $row[ $field ] = '';
1193
  if( !empty( $item['variation_id'] ) )
1219
  return apply_filters( "woe_fetch_order_products", $products, $order, $labels, $format, $static_vals );
1220
  }
1221
 
1222
+ public static function get_product_category_full( $product ) {
1223
+ $full_names = array();
1224
+ if ( ! $product ) {
1225
+ return '';
1226
+ }
1227
+ $prod_terms = get_the_terms( $product->get_id(), 'product_cat' );
1228
+ if ( ! $prod_terms ) {
1229
+ return '';
1230
+ }
1231
+
1232
+ foreach ( $prod_terms as $prod_term ) {
1233
+ $parts = array( $prod_term->name );
1234
+ $product_parent_categories_all_hierachy = get_ancestors( $prod_term->term_id, 'product_cat' );
1235
+ foreach ( $product_parent_categories_all_hierachy as $id ) {
1236
+ $parent = get_term( $id );
1237
+ $parts[] = $parent->name;
1238
+ }
1239
+ $full_names[] = join( self::$export_subcategories_separator, array_reverse( $parts ) );
1240
+ }
1241
+
1242
+ return join( self::$export_line_categories_separator, $full_names );
1243
+ }
1244
+
1245
  public static function get_order_item_taxes_refund($order, $item_id) {
1246
  $tax_refund = 0;
1247
  $order_taxes = $order->get_taxes();
1358
  $row['order_number'] = $parent_order ? $parent_order->get_order_number() : $order->get_order_number(); // use parent order number
1359
  } elseif ( $field == 'order_subtotal' ) {
1360
  $row['order_subtotal'] = wc_format_decimal( $order->get_subtotal(), 2);
1361
+ } elseif ( $field == 'order_subtotal_minus_discount' ) {
1362
+ $row[ $field ] = $order->get_subtotal() - $order->get_total_discount();
1363
  } elseif ( $field == 'order_subtotal_refunded' ) {
1364
  $row['order_subtotal_refunded'] = wc_format_decimal( self::get_order_subtotal_refunded($order), 2);
1365
  } elseif ( $field == 'order_subtotal_minus_refund' ) {
1531
  }
1532
 
1533
  // Must fill child cells?
1534
+ if ( empty($options['item_rows_start_from_new_line']) AND !empty($options['populate_other_columns_product_rows']) AND $extra_rows ) {
1535
  foreach ( $extra_rows as $idx=> $extra_row ) {
1536
  foreach ( $row as $key=> $val ) {
1537
  if ( in_array( $key, $order_fields) )
1558
  return apply_filters("woe_fetch_order_data",$extra_rows);
1559
  }
1560
 
1561
+ public static function get_city_state_postcode_field_value( $order, $type ) {
1562
  if ( $type != 'shipping' && $type != 'billing') {
1563
  return null;
1564
  }
1715
  * @return array
1716
  */
1717
  public static function get_shipping_methods() {
1718
+ global $wpdb;
1719
+
1720
+ $shipping_methods = array();
1721
+
1722
+ // get raw names
1723
+ $raw_methods = $wpdb->get_col( "SELECT DISTINCT order_item_name FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_type='shipping' ORDER BY order_item_name" );
1724
+ foreach($raw_methods as $method)
1725
+ $shipping_methods[ 'order_item_name:' . $method ] = $method;
1726
+
1727
+ // try get methods for zones
1728
  if( !class_exists("WC_Shipping_Zone") )
1729
+ return $shipping_methods;
1730
 
1731
  if( !method_exists("WC_Shipping_Zone", "get_shipping_methods") )
1732
+ return $shipping_methods;
 
 
 
 
 
 
 
 
 
1733
 
1734
  foreach ( WC_Shipping_Zones::get_zones() as $zone ) {
1735
  $methods = $zone['shipping_methods'];
1738
  $shipping_methods[ $method->get_rate_id() ] = '[' . $zone['zone_name'] . '] ' . $method->get_title();
1739
  }
1740
  }
1741
+
1742
+ $zone = new WC_Shipping_Zone( 0 );
1743
+ $methods = $zone->get_shipping_methods();
1744
+ /** @var WC_Shipping_Method $method */
1745
+ foreach ( $methods as $method ) {
1746
+ $shipping_methods[ $method->get_rate_id() ] = __('[Rest of the World]', 'woo-order-export-lite' ) .' '. $method->get_title();
1747
+ }
1748
+
1749
  return $shipping_methods;
1750
  }
1751
 
classes/core/class-wc-order-export-engine.php CHANGED
@@ -14,7 +14,7 @@ class WC_Order_Export_Engine {
14
  //
15
  public static function export( $settings, $filepath ) {
16
  if( empty($settings['destination']['type']) ) {
17
- return __( "No format selected", 'woo-order-export-lite' );
18
  }
19
 
20
  if( !is_array( $settings[ 'destination' ][ 'type' ] ) ) {
@@ -51,6 +51,9 @@ class WC_Order_Export_Engine {
51
  $mask = implode( '.', $mask_parts );
52
  }
53
  $time = apply_filters( 'woe_make_filename_current_time', current_time( 'timestamp' ) );
 
 
 
54
  $subst = apply_filters( 'woe_make_filename_replacements', array(
55
  '%d' => date( 'd',$time ),
56
  '%m' => date( 'm',$time ),
@@ -61,6 +64,8 @@ class WC_Order_Export_Engine {
61
  '%order_id' => self::$order_id,
62
  '%orderid' => self::$order_id,
63
  '%id' => self::$order_id,
 
 
64
  ) );
65
 
66
  return apply_filters( 'woe_make_filename', strtr( $mask, $subst ) );
@@ -268,6 +273,25 @@ class WC_Order_Export_Engine {
268
  $options['export_all_comments'] = $settings['export_all_comments'];
269
  $options['export_refund_notes'] = $settings['export_refund_notes'];
270
  $options['format_number_fields'] = $settings['format_number_fields'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
  $options['strip_tags_product_fields'] = !empty($settings['strip_tags_product_fields']);
272
 
273
  return $options;
@@ -315,7 +339,7 @@ class WC_Order_Export_Engine {
315
 
316
  private static function try_mark_order( $order_id, $settings ) {
317
  if ( $settings[ 'mark_exported_orders' ] ) {
318
- update_post_meta( $order_id, 'woe_order_exported', 1 );
319
  }
320
  }
321
 
@@ -342,7 +366,6 @@ class WC_Order_Export_Engine {
342
  $filename = ( ! empty( $filename ) ? $filename : self::tempnam( sys_get_temp_dir(), $settings['format'] ) );
343
  }
344
 
345
-
346
  if ( $make_mode !== 'estimate' )
347
  $formater = self::init_formater( $make_mode, $settings, $filename, $labels, $static_vals );
348
  $format = strtolower( $settings['format'] );
@@ -353,6 +376,10 @@ class WC_Order_Export_Engine {
353
  return $filename;
354
  }
355
 
 
 
 
 
356
  //get IDs
357
  $sql = WC_Order_Export_Data_Extractor::sql_get_order_ids( $settings );
358
  if ( $make_mode == 'estimate' ) { //if estimate return total count
@@ -400,7 +427,7 @@ class WC_Order_Export_Engine {
400
  $rows = WC_Order_Export_Data_Extractor::fetch_order_data( $order_id, $labels, $format, $filters_active,
401
  $csv_max, $export, $get_coupon_meta, $static_vals, self::$extractor_options );
402
  foreach ( $rows as $row ) {
403
- $row=apply_filters( "woe_fetch_order_row", $row, $order_id);
404
  if ($row) {
405
  $formater->output( $row );
406
  do_action( "woe_order_row_exported", $row, $order_id);
@@ -419,9 +446,20 @@ class WC_Order_Export_Engine {
419
  $formater->finish_partial();
420
  elseif ( $make_mode == 'preview') {
421
  self::maybe_output_summary_report( $formater );
 
 
 
 
 
 
 
 
 
 
422
  $formater->finish();
423
  }
424
 
 
425
  return $filename;
426
  }
427
 
@@ -494,6 +532,7 @@ class WC_Order_Export_Engine {
494
  self::maybe_output_summary_report( $formater );
495
  $formater->finish();
496
 
 
497
  return $filename;
498
  }
499
 
@@ -573,7 +612,8 @@ class WC_Order_Export_Engine {
573
  }
574
  self::$order_id = '';
575
  }
576
-
 
577
  return $result; //return last result
578
  }
579
 
14
  //
15
  public static function export( $settings, $filepath ) {
16
  if( empty($settings['destination']['type']) ) {
17
+ return __( "No destination selected", 'woo-order-export-lite' );
18
  }
19
 
20
  if( !is_array( $settings[ 'destination' ][ 'type' ] ) ) {
51
  $mask = implode( '.', $mask_parts );
52
  }
53
  $time = apply_filters( 'woe_make_filename_current_time', current_time( 'timestamp' ) );
54
+
55
+ $date = WC_Order_Export_Data_Extractor::get_date_range( self::$current_job_settings, false );
56
+
57
  $subst = apply_filters( 'woe_make_filename_replacements', array(
58
  '%d' => date( 'd',$time ),
59
  '%m' => date( 'm',$time ),
64
  '%order_id' => self::$order_id,
65
  '%orderid' => self::$order_id,
66
  '%id' => self::$order_id,
67
+ '{from_date}' => isset( $date['from_date'] ) ? date( "Y-m-d", strtotime( $date['from_date'] ) ) : '',
68
+ '{to_date}' => isset( $date['to_date'] ) ? date( "Y-m-d", strtotime( $date['to_date'] ) ) : '',
69
  ) );
70
 
71
  return apply_filters( 'woe_make_filename', strtr( $mask, $subst ) );
273
  $options['export_all_comments'] = $settings['export_all_comments'];
274
  $options['export_refund_notes'] = $settings['export_refund_notes'];
275
  $options['format_number_fields'] = $settings['format_number_fields'];
276
+
277
+ if ( $settings['enable_debug'] AND ! ini_get( 'display_errors' ) ) {
278
+ ini_set( 'display_errors', 1 );
279
+ $old_error_reporting = error_reporting( E_ALL );
280
+ add_action( 'woe_export_finished', function () use ( $old_error_reporting ) {
281
+ ini_set( 'display_errors', 0 );
282
+ error_reporting( $old_error_reporting );
283
+ } );
284
+ }
285
+
286
+ if ( $settings['cleanup_phone'] ) {
287
+ foreach ( array( "billing_phone", "USER_billing_phone" ) as $field ) {
288
+ add_filter( 'woe_get_order_value_' . $field, function ( $value, $order, $fieldname ) {
289
+ $value = preg_replace( "#[^\d]+#", "", $value );
290
+ return $value;
291
+ }, 10, 3 );
292
+ }
293
+ }
294
+
295
  $options['strip_tags_product_fields'] = !empty($settings['strip_tags_product_fields']);
296
 
297
  return $options;
339
 
340
  private static function try_mark_order( $order_id, $settings ) {
341
  if ( $settings[ 'mark_exported_orders' ] ) {
342
+ update_post_meta( $order_id, 'woe_order_exported', current_time('timestamp') );
343
  }
344
  }
345
 
366
  $filename = ( ! empty( $filename ) ? $filename : self::tempnam( sys_get_temp_dir(), $settings['format'] ) );
367
  }
368
 
 
369
  if ( $make_mode !== 'estimate' )
370
  $formater = self::init_formater( $make_mode, $settings, $filename, $labels, $static_vals );
371
  $format = strtolower( $settings['format'] );
376
  return $filename;
377
  }
378
 
379
+ //debug sql!
380
+ if ( $make_mode == 'preview' AND $settings['enable_debug'] )
381
+ WC_Order_Export_Data_Extractor::start_track_queries( );
382
+
383
  //get IDs
384
  $sql = WC_Order_Export_Data_Extractor::sql_get_order_ids( $settings );
385
  if ( $make_mode == 'estimate' ) { //if estimate return total count
427
  $rows = WC_Order_Export_Data_Extractor::fetch_order_data( $order_id, $labels, $format, $filters_active,
428
  $csv_max, $export, $get_coupon_meta, $static_vals, self::$extractor_options );
429
  foreach ( $rows as $row ) {
430
+ $row = apply_filters( "woe_fetch_order_row", $row, $order_id);
431
  if ($row) {
432
  $formater->output( $row );
433
  do_action( "woe_order_row_exported", $row, $order_id);
446
  $formater->finish_partial();
447
  elseif ( $make_mode == 'preview') {
448
  self::maybe_output_summary_report( $formater );
449
+ if( $settings['enable_debug'] ) {
450
+ echo "<b>" . __( 'Main SQL queries are listed below', 'woo-order-export-lite' ) . "</b>";
451
+ echo '<textarea rows=5 style="width:100%">';
452
+ $s = array();
453
+ foreach(WC_Order_Export_Data_Extractor::get_sql_queries() as $sql) {
454
+ $s[] = preg_replace("#\s+#"," ",$sql);
455
+ }
456
+ echo join("\n\n", $s);
457
+ echo '</textarea>';
458
+ }
459
  $formater->finish();
460
  }
461
 
462
+ // no action woe_export_finished here!
463
  return $filename;
464
  }
465
 
532
  self::maybe_output_summary_report( $formater );
533
  $formater->finish();
534
 
535
+ do_action( 'woe_export_finished');
536
  return $filename;
537
  }
538
 
612
  }
613
  self::$order_id = '';
614
  }
615
+
616
+ do_action( 'woe_export_finished');
617
  return $result; //return last result
618
  }
619
 
classes/formats/abstract-class-woe-formatter.php CHANGED
@@ -13,6 +13,7 @@ abstract class WOE_Formatter {
13
  var $field_formats;
14
  var $date_format;
15
  var $auto_format_dates = true;
 
16
 
17
  public function __construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format ) {
18
  $this->has_output_filter = has_filter( "woe_{$format}_output_filter" );
@@ -32,6 +33,16 @@ abstract class WOE_Formatter {
32
  $this->string_format_fields = apply_filters( "woe_{$format}_string_format_fields", $field_formats['string'] );
33
  $this->date_format_fields = apply_filters( "woe_{$format}_date_format_fields", $field_formats['date'] );
34
  $this->date_format = apply_filters( "woe_{$format}_date_format", $date_format );
 
 
 
 
 
 
 
 
 
 
35
  }
36
 
37
  public function start( $data = '' ) {
@@ -43,11 +54,16 @@ abstract class WOE_Formatter {
43
  $this->handle = apply_filters( "woe_formatter_set_handler_for_" . $this->format . "_row", $this->handle );
44
  if( $this->auto_format_dates )
45
  $rec = $this->format_dates( $rec );
 
 
 
 
46
  return $rec;
47
  }
48
 
49
  public function finish() {
50
  fclose( $this->handle );
 
51
  do_action("woe_formatter_finish", $this);
52
  do_action("woe_formatter_" .$this->format. "_finished", $this);
53
  }
@@ -81,4 +97,28 @@ abstract class WOE_Formatter {
81
  }
82
  return $rec;
83
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
13
  var $field_formats;
14
  var $date_format;
15
  var $auto_format_dates = true;
16
+ var $counter_value;
17
 
18
  public function __construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format ) {
19
  $this->has_output_filter = has_filter( "woe_{$format}_output_filter" );
33
  $this->string_format_fields = apply_filters( "woe_{$format}_string_format_fields", $field_formats['string'] );
34
  $this->date_format_fields = apply_filters( "woe_{$format}_date_format_fields", $field_formats['date'] );
35
  $this->date_format = apply_filters( "woe_{$format}_date_format", $date_format );
36
+
37
+ $this->counter_value = $this->get_counter();
38
+ if ( !$this->counter_value ) {
39
+ $this->counter_value = 1;
40
+ $this->set_counter( $this->counter_value );
41
+ }
42
+ }
43
+
44
+ function __destruct() {
45
+ $this->set_counter( $this->counter_value );
46
  }
47
 
48
  public function start( $data = '' ) {
54
  $this->handle = apply_filters( "woe_formatter_set_handler_for_" . $this->format . "_row", $this->handle );
55
  if( $this->auto_format_dates )
56
  $rec = $this->format_dates( $rec );
57
+ if ( isset( $rec['line_number'] ) ) {
58
+ $rec['line_number'] = $this->counter_value;
59
+ $this->counter_value++;
60
+ }
61
  return $rec;
62
  }
63
 
64
  public function finish() {
65
  fclose( $this->handle );
66
+ $this->delete_counter();
67
  do_action("woe_formatter_finish", $this);
68
  do_action("woe_formatter_" .$this->format. "_finished", $this);
69
  }
97
  }
98
  return $rec;
99
  }
100
+
101
+
102
+ protected function generate_key() {
103
+ return $this->mode . '+' . $this->filename;
104
+ }
105
+
106
+ protected function delete_counter() {
107
+ delete_transient( $this->generate_key() );
108
+ }
109
+
110
+ protected function set_counter( $count_value ) {
111
+ $this->counter_value = $count_value;
112
+ if ( $this->mode != 'preview' ) {
113
+ set_transient( $this->generate_key(), $count_value );
114
+ }
115
+ }
116
+
117
+ protected function get_counter() {
118
+ if ( $this->mode == 'preview' ) {
119
+ return false;
120
+ } else {
121
+ return get_transient( $this->generate_key() );
122
+ }
123
+ }
124
  }
classes/formats/class-woe-formatter-json.php CHANGED
@@ -19,7 +19,8 @@ class WOE_Formatter_Json extends WOE_Formatter {
19
  if ( $this->prev_added ) {
20
  fwrite( $this->handle, "," );
21
  }
22
- fwrite( $this->handle, "\n" );
 
23
 
24
  //rename fields in array
25
  $rec_out = array();
@@ -67,8 +68,10 @@ class WOE_Formatter_Json extends WOE_Formatter {
67
  }
68
 
69
  public function finish( $data = '' ) {
70
- $end_text = $this->convert_literals( $this->settings[ 'end_tag' ] );
 
71
 
 
72
  fwrite( $this->handle, apply_filters( "woe_json_end_text", $end_text) );
73
  parent::finish();
74
  }
19
  if ( $this->prev_added ) {
20
  fwrite( $this->handle, "," );
21
  }
22
+ if ( $this->mode == 'preview' )
23
+ fwrite( $this->handle, "\n" );
24
 
25
  //rename fields in array
26
  $rec_out = array();
68
  }
69
 
70
  public function finish( $data = '' ) {
71
+ if ( $this->mode == 'preview' )
72
+ fwrite( $this->handle, "\n" );
73
 
74
+ $end_text = $this->convert_literals( $this->settings[ 'end_tag' ] );
75
  fwrite( $this->handle, apply_filters( "woe_json_end_text", $end_text) );
76
  parent::finish();
77
  }
classes/formats/class-woe-formatter-xls.php CHANGED
@@ -101,7 +101,7 @@ class WOE_Formatter_Xls extends WOE_Formatter {
101
  foreach ( $rec as $field => $text ) {
102
  if( $this->string_format_force OR in_array($field, $this->string_format_fields) ) {
103
  $this->objPHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow( $pos, $this->last_row, $text );
104
- }elseif( in_array($field, $this->date_format_fields) ) {// DATE!
105
  if( $text ) {
106
  if( empty($this->settings['global_job_settings']['time_format']) ) { // must remove time!
107
  $text = date( "Y-m-d", strtotime( $text ) );
101
  foreach ( $rec as $field => $text ) {
102
  if( $this->string_format_force OR in_array($field, $this->string_format_fields) ) {
103
  $this->objPHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow( $pos, $this->last_row, $text );
104
+ } elseif( in_array($field, $this->date_format_fields) ) {// DATE!
105
  if( $text ) {
106
  if( empty($this->settings['global_job_settings']['time_format']) ) { // must remove time!
107
  $text = date( "Y-m-d", strtotime( $text ) );
i18n/languages/woo-order-export-lite.pot CHANGED
@@ -3,688 +3,458 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: PACKAGE VERSION\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2018-02-12 06:52+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
10
  "Language: \n"
11
- "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Loco - https://localise.biz/"
16
 
17
- #: woo-order-export-lite.php:60
18
  msgid ""
19
  "Please, <a href=\"plugins.php\">deactivate</a> Free version of Advanced "
20
- "Order Export For WooCommerce !"
21
  msgstr ""
22
 
23
- #: view/settings-form.php:41 view/settings-form.php:49
24
- #: view/settings-form.php:84
25
- msgid "Title"
26
- msgstr ""
27
-
28
- #: view/settings-form.php:56 view/settings-form.php:64
29
- msgid "Empty means \"any status\""
30
- msgstr ""
31
-
32
- #: view/settings-form.php:56
33
- msgid "From status"
34
- msgstr ""
35
-
36
- #: view/settings-form.php:64
37
- msgid "To status"
38
- msgstr ""
39
-
40
- #: view/settings-form.php:75 view/settings-form.php:192
41
- msgid "Log results"
42
- msgstr ""
43
-
44
- #: view/settings-form.php:75 view/settings-form.php:192
45
- msgid "View logs"
46
- msgstr ""
47
-
48
- #: view/settings-form.php:91
49
- msgid "Don't send empty file"
50
- msgstr ""
51
-
52
- #: view/settings-form.php:97
53
- msgid "Schedule"
54
- msgstr ""
55
-
56
- #: view/settings-form.php:109
57
- msgid "Run at"
58
- msgstr ""
59
-
60
- #: view/settings-form.php:134
61
- msgid "Choose"
62
- msgstr ""
63
-
64
- #: view/settings-form.php:135
65
- msgid "Custom"
66
- msgstr ""
67
-
68
- #: view/settings-form.php:144
69
- msgid "On the 1st day of the month"
70
- msgstr ""
71
-
72
- #: view/settings-form.php:145
73
- msgid "On the 1st day of the quarter"
74
- msgstr ""
75
-
76
- #: view/settings-form.php:148
77
- msgid "interval (min)"
78
- msgstr ""
79
-
80
- #: view/settings-form.php:185
81
- msgid "Add"
82
- msgstr ""
83
-
84
- #: view/settings-form.php:200
85
- msgid "Export date range"
86
- msgstr ""
87
-
88
- #: view/settings-form.php:204
89
- msgid "Since last run of this job"
90
- msgstr ""
91
-
92
- #: view/settings-form.php:209
93
- msgid "Today"
94
- msgstr ""
95
-
96
- #: view/settings-form.php:214
97
- msgid "Yesterday"
98
- msgstr ""
99
-
100
- #: view/settings-form.php:219
101
- msgid "Current week"
102
- msgstr ""
103
-
104
- #: view/settings-form.php:224
105
- msgid "Current month"
106
- msgstr ""
107
-
108
- #: view/settings-form.php:229
109
- msgid "Last week"
110
- msgstr ""
111
-
112
- #: view/settings-form.php:234
113
- msgid "Last month"
114
- msgstr ""
115
-
116
- #: view/settings-form.php:239
117
- msgid "Last quarter"
118
- msgstr ""
119
-
120
- #: view/settings-form.php:244
121
- msgid "This year"
122
- msgstr ""
123
-
124
- #: view/settings-form.php:253
125
- #, php-format
126
- msgid "Last %s days"
127
- msgstr ""
128
-
129
- #: view/settings-form.php:264
130
  msgid "Filter orders by"
131
  msgstr ""
132
 
133
- #: view/settings-form.php:268 view/settings-form.php:437
134
- #: classes/core/class-wc-order-export-data-extractor-ui.php:328
135
  msgid "Order Date"
136
  msgstr ""
137
 
138
- #: view/settings-form.php:273 view/settings-form.php:438
139
- #: classes/core/class-wc-order-export-data-extractor-ui.php:329
140
  msgid "Modification Date"
141
  msgstr ""
142
 
143
- #: view/settings-form.php:278
144
- #: classes/core/class-wc-order-export-data-extractor-ui.php:332
145
  msgid "Paid Date"
146
  msgstr ""
147
 
148
- #: view/settings-form.php:283
149
- #: classes/core/class-wc-order-export-data-extractor-ui.php:331
150
  msgid "Completed Date"
151
  msgstr ""
152
 
153
- #: view/settings-form.php:287
154
  msgid "This date range should not be saved in the scheduled task"
155
  msgstr ""
156
 
157
- #: view/settings-form.php:289
158
  msgid "Date range"
159
  msgstr ""
160
 
161
- #: view/settings-form.php:291
162
  msgid "to"
163
  msgstr ""
164
 
165
- #: view/settings-form.php:295
166
  msgid "Express export"
167
  msgstr ""
168
 
169
- #: view/settings-form.php:296
170
  msgid "Summary Report By Products"
171
  msgstr ""
172
 
173
- #: view/settings-form.php:297
174
  msgid "Set up fields"
175
  msgstr ""
176
 
177
- #: view/settings-form.php:305
178
  msgid "Export filename"
179
  msgstr ""
180
 
181
- #: view/settings-form.php:315
182
  msgid "Format"
183
  msgstr ""
184
 
185
- #: view/settings-form.php:326
186
  msgid "XLS options"
187
  msgstr ""
188
 
189
- #: view/settings-form.php:332
190
  msgid "Export as .xls (Binary File Format)"
191
  msgstr ""
192
 
193
- #: view/settings-form.php:333
194
  msgid "Use sheet name"
195
  msgstr ""
196
 
197
- #: view/settings-form.php:334 view/settings-form.php:346
198
- #: view/settings-form.php:376
199
  msgid "Output column titles as first line"
200
  msgstr ""
201
 
202
- #: view/settings-form.php:335
203
  msgid "Auto column width"
204
  msgstr ""
205
 
206
- #: view/settings-form.php:336 view/settings-form.php:347
207
- #: view/settings-form.php:377
208
  msgid "Populate other columns if products exported as rows"
209
  msgstr ""
210
 
211
- #: view/settings-form.php:337
212
  msgid "Right-to-Left direction"
213
  msgstr ""
214
 
215
- #: view/settings-form.php:339
216
  msgid "CSV options"
217
  msgstr ""
218
 
219
- #: view/settings-form.php:345 view/settings-form.php:375
220
  msgid "Output UTF-8 BOM"
221
  msgstr ""
222
 
223
- #: view/settings-form.php:348
224
  msgid "Convert line breaks to literals"
225
  msgstr ""
226
 
227
- #: view/settings-form.php:349
228
  msgid "Item rows start from new line"
229
  msgstr ""
230
 
231
- #: view/settings-form.php:350
232
  msgid "Enclosure"
233
  msgstr ""
234
 
235
- #: view/settings-form.php:351
236
  msgid "Field Delimiter"
237
  msgstr ""
238
 
239
- #: view/settings-form.php:352 view/settings-form.php:378
240
  msgid "Line Break"
241
  msgstr ""
242
 
243
- #: view/settings-form.php:354 view/settings-form.php:380
244
  msgid "Character encoding"
245
  msgstr ""
246
 
247
- #: view/settings-form.php:357
248
  msgid "XML options"
249
  msgstr ""
250
 
251
- #: view/settings-form.php:359
252
  msgid "Prepend XML"
253
  msgstr ""
254
 
255
- #: view/settings-form.php:360
256
  msgid "Root tag"
257
  msgstr ""
258
 
259
- #: view/settings-form.php:361
260
  msgid "Order tag"
261
  msgstr ""
262
 
263
- #: view/settings-form.php:362
264
  msgid "Product tag"
265
  msgstr ""
266
 
267
- #: view/settings-form.php:363
268
  msgid "Coupon tag"
269
  msgstr ""
270
 
271
- #: view/settings-form.php:364
272
  msgid "Append XML"
273
  msgstr ""
274
 
275
- #: view/settings-form.php:365
276
  msgid "Self closing tags"
277
  msgstr ""
278
 
279
- #: view/settings-form.php:367
280
  msgid "JSON options"
281
  msgstr ""
282
 
283
- #: view/settings-form.php:368
284
  msgid "Start tag"
285
  msgstr ""
286
 
287
- #: view/settings-form.php:369
288
  msgid "End tag"
289
  msgstr ""
290
 
291
- #: view/settings-form.php:371
292
  msgid "TSV options"
293
  msgstr ""
294
 
295
- #: view/settings-form.php:387
296
  msgid "Date"
297
  msgstr ""
298
 
299
- #: view/settings-form.php:400 view/settings-form.php:422
300
  msgid "-"
301
  msgstr ""
302
 
303
- #: view/settings-form.php:402 view/settings-form.php:424
304
  msgid "custom"
305
  msgstr ""
306
 
307
- #: view/settings-form.php:410
308
  msgid "Time"
309
  msgstr ""
310
 
311
- #: view/settings-form.php:436
312
- #: classes/core/class-wc-order-export-data-extractor-ui.php:325
313
  msgid "Order ID"
314
  msgstr ""
315
 
316
- #: view/settings-form.php:453
317
  msgid "Descending"
318
  msgstr ""
319
 
320
- #: view/settings-form.php:454
321
  msgid "Ascending"
322
  msgstr ""
323
 
324
- #: view/settings-form.php:459
325
  #, php-format
326
  msgid "Sort orders by %s in %s order"
327
  msgstr ""
328
 
329
- #: view/settings-form.php:464
330
  msgid "Change order status to"
331
  msgstr ""
332
 
333
- #: view/settings-form.php:466
334
  msgid "- don't modify -"
335
  msgstr ""
336
 
337
- #: view/settings-form.php:476
338
  msgid "Misc settings"
339
  msgstr ""
340
 
341
- #: view/settings-form.php:481
342
  msgid "Format numbers (use WC decimal separator)"
343
  msgstr ""
344
 
345
- #: view/settings-form.php:485
346
  msgid "Export all order notes"
347
  msgstr ""
348
 
349
- #: view/settings-form.php:489
350
  msgid "Export refund notes as Customer Note"
351
  msgstr ""
352
 
353
- #: view/settings-form.php:493
354
  msgid "Strip tags from Product Description/Variation"
355
  msgstr ""
356
 
357
- #: view/settings-form.php:497
358
- msgid "Custom PHP code to modify output"
359
- msgstr ""
360
-
361
- #: view/settings-form.php:498
362
- msgid "Use only unnamed functions!"
363
- msgstr ""
364
-
365
- #: view/settings-form.php:507
366
- msgid "Destination"
367
- msgstr ""
368
-
369
- #: view/settings-form.php:515
370
- msgid "Email"
371
- msgstr ""
372
-
373
- #: view/settings-form.php:521
374
- msgid "FTP"
375
- msgstr ""
376
-
377
- #: view/settings-form.php:527
378
- msgid "SFTP"
379
- msgstr ""
380
-
381
- #: view/settings-form.php:533
382
- msgid "HTTP POST"
383
- msgstr ""
384
-
385
- #: view/settings-form.php:539
386
- msgid "Directory"
387
- msgstr ""
388
-
389
- #: view/settings-form.php:544
390
- msgid "Email settings"
391
- msgstr ""
392
-
393
- #: view/settings-form.php:547
394
- msgid "From email"
395
- msgstr ""
396
-
397
- #: view/settings-form.php:554
398
- msgid "From name"
399
- msgstr ""
400
-
401
- #: view/settings-form.php:561
402
- msgid "Recipient(s)"
403
- msgstr ""
404
-
405
- #: view/settings-form.php:568
406
- msgid "CC Recipient(s)"
407
- msgstr ""
408
-
409
- #: view/settings-form.php:575
410
- msgid "Email subject"
411
- msgstr ""
412
-
413
- #: view/settings-form.php:583 view/settings-form.php:592
414
- msgid "Email body"
415
- msgstr ""
416
-
417
- #: view/settings-form.php:584
418
- msgid "Edit email body"
419
- msgstr ""
420
-
421
- #: view/settings-form.php:585
422
- msgid "Append file contents to email body"
423
- msgstr ""
424
-
425
- #: view/settings-form.php:601 view/settings-form.php:656
426
- #: view/settings-form.php:699 view/settings-form.php:718
427
- #: view/settings-form.php:737
428
- msgid "Test"
429
- msgstr ""
430
-
431
- #: view/settings-form.php:601 view/settings-form.php:656
432
- #: view/settings-form.php:718 view/settings-form.php:737
433
- msgid "It sends only last order!"
434
- msgstr ""
435
-
436
- #: view/settings-form.php:608
437
- msgid "FTP settings"
438
- msgstr ""
439
-
440
- #: view/settings-form.php:611 view/settings-form.php:666
441
- msgid "Server name"
442
- msgstr ""
443
-
444
- #: view/settings-form.php:616 view/settings-form.php:671
445
- msgid "Port"
446
- msgstr ""
447
-
448
- #: view/settings-form.php:624 view/settings-form.php:679
449
- msgid "Username"
450
- msgstr ""
451
-
452
- #: view/settings-form.php:629 view/settings-form.php:684
453
- msgid "Password"
454
- msgstr ""
455
-
456
- #: view/settings-form.php:636 view/settings-form.php:691
457
- msgid "Initial path"
458
- msgstr ""
459
-
460
- #: view/settings-form.php:644
461
- msgid "Passive mode"
462
  msgstr ""
463
 
464
- #: view/settings-form.php:649
465
- msgid "Append to existing file (need custom code!)"
466
- msgstr ""
467
-
468
- #: view/settings-form.php:663
469
- msgid "SFTP settings"
470
- msgstr ""
471
-
472
- #: view/settings-form.php:706
473
- msgid "HTTP POST settings"
474
- msgstr ""
475
-
476
- #: view/settings-form.php:710
477
- msgid "URL"
478
- msgstr ""
479
-
480
- #: view/settings-form.php:725
481
- msgid "Directory settings"
482
- msgstr ""
483
-
484
- #: view/settings-form.php:729
485
- msgid "Path"
486
  msgstr ""
487
 
488
- #: view/settings-form.php:744
489
- msgid "Test Results"
490
  msgstr ""
491
 
492
- #: view/settings-form.php:754
493
- msgid "Make separate file for each order"
494
  msgstr ""
495
 
496
- #: view/settings-form.php:764
497
  msgid "Filter by order"
498
  msgstr ""
499
 
500
- #: view/settings-form.php:767
501
  msgid "Don't export child orders"
502
  msgstr ""
503
 
504
- #: view/settings-form.php:768
505
  msgid "Export refunds"
506
  msgstr ""
507
 
508
- #: view/settings-form.php:769
509
  msgid "Mark exported orders"
510
  msgstr ""
511
 
512
- #: view/settings-form.php:770
513
  msgid "Export unmarked orders only"
514
  msgstr ""
515
 
516
- #: view/settings-form.php:771
517
  msgid "Order statuses"
518
  msgstr ""
519
 
520
- #: view/settings-form.php:778
521
  msgid "Custom fields"
522
  msgstr ""
523
 
524
- #: view/settings-form.php:811
525
  msgid ""
526
  "The filters won't work correctly.<br>Another plugin(or theme) has loaded "
527
  "outdated Select2.js"
528
  msgstr ""
529
 
530
- #: view/settings-form.php:812
531
  msgid "Filter by product"
532
  msgstr ""
533
 
534
- #: view/settings-form.php:815
535
  msgid "Export all products from a order"
536
  msgstr ""
537
 
538
- #: view/settings-form.php:816
539
  msgid "Skip fully refunded items"
540
  msgstr ""
541
 
542
- #: view/settings-form.php:817
543
  msgid "Product categories"
544
  msgstr ""
545
 
546
- #: view/settings-form.php:827
547
  msgid "Vendor/creator"
548
  msgstr ""
549
 
550
- #: view/settings-form.php:840
551
  msgid "Product"
552
  msgstr ""
553
 
554
- #: view/settings-form.php:852
555
  msgid "Product taxonomies"
556
  msgstr ""
557
 
558
- #: view/settings-form.php:877
559
  msgid "Product custom fields"
560
  msgstr ""
561
 
562
- #: view/settings-form.php:904
563
  msgid "Variable product attributes"
564
  msgstr ""
565
 
566
- #: view/settings-form.php:931
567
  msgid "Item meta data"
568
  msgstr ""
569
 
570
- #: view/settings-form.php:964
571
  msgid "Filter by customers"
572
  msgstr ""
573
 
574
- #: view/settings-form.php:967
575
  msgid "User roles"
576
  msgstr ""
577
 
578
- #: view/settings-form.php:976
579
  msgid "Usernames"
580
  msgstr ""
581
 
582
- #: view/settings-form.php:992
583
  msgid "Filter by coupons"
584
  msgstr ""
585
 
586
- #: view/settings-form.php:997
587
  msgid "Any coupon used"
588
  msgstr ""
589
 
590
- #: view/settings-form.php:999
591
- #: classes/core/class-wc-order-export-data-extractor-ui.php:399
592
- #: classes/core/class-wc-order-export-data-extractor-ui.php:460
593
  msgid "Coupons"
594
  msgstr ""
595
 
596
- #: view/settings-form.php:1014
597
  msgid "Filter by billing"
598
  msgstr ""
599
 
600
- #: view/settings-form.php:1017
601
  msgid "Billing locations"
602
  msgstr ""
603
 
604
- #: view/settings-form.php:1041
605
  msgid "Payment methods"
606
  msgstr ""
607
 
608
- #: view/settings-form.php:1053
609
  msgid "Filter by shipping"
610
  msgstr ""
611
 
612
- #: view/settings-form.php:1056
613
  msgid "Shipping locations"
614
  msgstr ""
615
 
616
- #: view/settings-form.php:1080
617
  msgid "Shipping methods"
618
  msgstr ""
619
 
620
- #: view/settings-form.php:1094 view/settings-form.php:1457
621
  msgid "Set up fields to export"
622
  msgstr ""
623
 
624
- #: view/settings-form.php:1100 view/modal-controls.php:3
625
- #: view/modal-controls.php:34
626
  msgid "Meta key"
627
  msgstr ""
628
 
629
- #: view/settings-form.php:1108 view/settings-form.php:1120
630
- #: view/modal-controls.php:18 view/modal-controls.php:24
631
- #: view/modal-controls.php:41 view/modal-controls.php:47
632
  msgid "Column name"
633
  msgstr ""
634
 
635
- #: view/settings-form.php:1111
636
  msgid "or type meta key here"
637
  msgstr ""
638
 
639
- #: view/settings-form.php:1112 view/settings-form.php:1140
640
- #: view/modal-controls.php:5 view/modal-controls.php:37
641
  msgid "Hide unused fields"
642
  msgstr ""
643
 
644
- #: view/settings-form.php:1115 view/settings-form.php:1123
645
  msgid "Confirm"
646
  msgstr ""
647
 
648
- #: view/settings-form.php:1116 view/settings-form.php:1124
649
  msgid "Cancel"
650
  msgstr ""
651
 
652
- #: view/settings-form.php:1121 view/modal-controls.php:25
653
- #: view/modal-controls.php:48
654
  msgid "Value"
655
  msgstr ""
656
 
657
- #: view/settings-form.php:1127
658
  msgid "Use sections"
659
  msgstr ""
660
 
661
- #: view/settings-form.php:1134
662
  msgid "Actions"
663
  msgstr ""
664
 
665
- #: view/settings-form.php:1135 view/modal-controls.php:20
666
- #: view/modal-controls.php:43
667
  msgid "Add field"
668
  msgstr ""
669
 
670
- #: view/settings-form.php:1137 view/modal-controls.php:27
671
- #: view/modal-controls.php:50
672
  msgid "Add static field"
673
  msgstr ""
674
 
675
- #: view/settings-form.php:1141
676
  msgid "Show unused fields"
677
  msgstr ""
678
 
679
- #: view/settings-form.php:1149
680
  msgid "Select all"
681
  msgstr ""
682
 
683
- #: view/settings-form.php:1152
684
  msgid "Drag rows to reorder exported fields"
685
  msgstr ""
686
 
687
- #: view/settings-form.php:1163
688
  #, php-format
689
  msgid ""
690
  "If you see this message after page load, user interface won't work correctly!"
@@ -692,52 +462,52 @@ msgid ""
692
  "it). Probably, it's a conflict with another plugin or active theme."
693
  msgstr ""
694
 
695
- #: view/settings-form.php:1165
696
  msgid "Preview"
697
  msgstr ""
698
 
699
- #: view/settings-form.php:1165
700
  msgid "Might be different from actual export!"
701
  msgstr ""
702
 
703
- #: view/settings-form.php:1166
704
  msgid "Save settings"
705
  msgstr ""
706
 
707
- #: view/settings-form.php:1168
708
  msgid "Export"
709
  msgstr ""
710
 
711
- #: view/settings-form.php:1171
712
  msgid "Export [w/o progressbar]"
713
  msgstr ""
714
 
715
- #: view/settings-form.php:1171
716
  msgid "It might not work for huge datasets!"
717
  msgstr ""
718
 
719
- #: view/settings-form.php:1174
720
  msgid "Save as a profile"
721
  msgstr ""
722
 
723
- #: view/settings-form.php:1177
724
  #, php-format
725
  msgid "Export total: %s orders"
726
  msgstr ""
727
 
728
- #: view/settings-form.php:1178
729
  msgid "Preview size"
730
  msgstr ""
731
 
732
- #: view/settings-form.php:1186
733
  msgid "Press 'Esc' to cancel the export"
734
  msgstr ""
735
 
736
- #: view/settings-form.php:1187
737
  msgid "Click here to download"
738
  msgstr ""
739
 
740
- #: view/settings-form.php:1408
741
  #, php-format
742
  msgid "Add %s as %s columns %s as rows"
743
  msgstr ""
@@ -770,15 +540,23 @@ msgstr ""
770
  msgid "Help"
771
  msgstr ""
772
 
 
 
 
 
773
  #: view/modal-controls.php:9
 
 
 
 
774
  msgid "OR"
775
  msgstr ""
776
 
777
- #: view/modal-controls.php:10
778
  msgid "Taxonomy"
779
  msgstr ""
780
 
781
- #: view/modal-controls.php:36
782
  msgid "All meta"
783
  msgstr ""
784
 
@@ -804,78 +582,86 @@ msgstr ""
804
  msgid "Support"
805
  msgstr ""
806
 
807
- #: classes/class-wc-order-export-admin.php:185
808
- #: classes/class-wc-order-export-admin.php:185
809
- #: classes/class-wc-order-export-admin.php:187
810
- #: classes/class-wc-order-export-admin.php:187
811
  msgid "Export Orders"
812
  msgstr ""
813
 
814
- #: classes/class-wc-order-export-admin.php:433
815
  msgid "Copied from \"Export now\""
816
  msgstr ""
817
 
818
- #: classes/class-wc-order-export-admin.php:456
819
  msgid "empty column name"
820
  msgstr ""
821
 
822
- #: classes/class-wc-order-export-admin.php:457
823
  msgid "empty meta key"
824
  msgstr ""
825
 
826
- #: classes/class-wc-order-export-admin.php:458
 
 
 
 
827
  msgid "empty value"
828
  msgstr ""
829
 
830
- #: classes/class-wc-order-export-admin.php:459
831
  msgid "title is empty"
832
  msgstr ""
833
 
834
- #: classes/class-wc-order-export-admin.php:460
835
  msgid "Date From is greater than Date To"
836
  msgstr ""
837
 
838
- #: classes/class-wc-order-export-admin.php:461
839
  msgid "Please, set up fields to export"
840
  msgstr ""
841
 
842
- #: classes/class-wc-order-export-admin.php:462
843
- #: classes/admin/class-wc-order-export-ajax.php:313
844
- #: classes/core/class-wc-order-export-engine.php:594
845
  msgid "Nothing to export. Please, adjust your filters"
846
  msgstr ""
847
 
848
- #: classes/class-wc-order-export-admin.php:552
 
 
 
 
 
849
  #, php-format
850
  msgid "Status change job #%s for order #%s. Result: %s"
851
  msgstr ""
852
 
853
- #: classes/class-wc-order-export-admin.php:611
854
  #, php-format
855
  msgid "Export as %s"
856
  msgstr ""
857
 
858
- #: classes/class-wc-order-export-admin.php:614
859
  msgid "Mark exported"
860
  msgstr ""
861
 
862
- #: classes/class-wc-order-export-admin.php:615
863
  msgid "Unmark exported"
864
  msgstr ""
865
 
866
- #: classes/class-wc-order-export-admin.php:620
867
  #, php-format
868
  msgid "Export as profile '%s'"
869
  msgstr ""
870
 
871
- #: classes/class-wc-order-export-admin.php:686
872
  #, php-format
873
  msgid "%s order marked."
874
  msgid_plural "%s orders marked."
875
  msgstr[0] ""
876
  msgstr[1] ""
877
 
878
- #: classes/class-wc-order-export-admin.php:695
879
  #, php-format
880
  msgid "%s order unmarked."
881
  msgid_plural "%s orders unmarked."
@@ -982,12 +768,12 @@ msgstr ""
982
  msgid "<td colspan=10><b>No results</b></td>"
983
  msgstr ""
984
 
985
- #: classes/formats/abstract-class-woe-formatter.php:25
986
  msgid "can not open for output"
987
  msgstr ""
988
 
989
  #: classes/formats/class-woe-formatter-xls.php:72
990
- #: classes/admin/class-wc-order-export-manage.php:194
991
  msgid "Orders"
992
  msgstr ""
993
 
@@ -1023,509 +809,521 @@ msgstr ""
1023
  msgid "Wrong key for cron url!"
1024
  msgstr ""
1025
 
1026
- #: classes/admin/class-wc-order-export-ajax.php:214
1027
  msgid "Can't create temporary file"
1028
  msgstr ""
1029
 
1030
- #: classes/admin/class-wc-order-export-ajax.php:232
1031
  msgid "Can't find exported file"
1032
  msgstr ""
1033
 
1034
- #: classes/core/class-wc-order-export-data-extractor-ui.php:240
1035
  msgid "Item ID"
1036
  msgstr ""
1037
 
1038
- #: classes/core/class-wc-order-export-data-extractor-ui.php:241
1039
  msgid "Item #"
1040
  msgstr ""
1041
 
1042
- #: classes/core/class-wc-order-export-data-extractor-ui.php:242
1043
  msgid "SKU"
1044
  msgstr ""
1045
 
1046
- #: classes/core/class-wc-order-export-data-extractor-ui.php:243
1047
  msgid "Name"
1048
  msgstr ""
1049
 
1050
- #: classes/core/class-wc-order-export-data-extractor-ui.php:244
1051
  msgid "Product Variation"
1052
  msgstr ""
1053
 
1054
- #: classes/core/class-wc-order-export-data-extractor-ui.php:245
1055
  msgid "Item Seller"
1056
  msgstr ""
1057
 
1058
- #: classes/core/class-wc-order-export-data-extractor-ui.php:246
1059
  msgid "Quantity"
1060
  msgstr ""
1061
 
1062
- #: classes/core/class-wc-order-export-data-extractor-ui.php:247
1063
  msgid "Quantity (- Refund)"
1064
  msgstr ""
1065
 
1066
- #: classes/core/class-wc-order-export-data-extractor-ui.php:248
1067
  msgid "Item Cost"
1068
  msgstr ""
1069
 
1070
- #: classes/core/class-wc-order-export-data-extractor-ui.php:249
1071
  msgid "Product Current Price"
1072
  msgstr ""
1073
 
1074
- #: classes/core/class-wc-order-export-data-extractor-ui.php:250
1075
  msgid "Order Line (w/o tax)"
1076
  msgstr ""
1077
 
1078
- #: classes/core/class-wc-order-export-data-extractor-ui.php:251
1079
  msgid "Order Line Tax"
1080
  msgstr ""
1081
 
1082
- #: classes/core/class-wc-order-export-data-extractor-ui.php:252
1083
  msgid "Order Line Tax Refunded"
1084
  msgstr ""
1085
 
1086
- #: classes/core/class-wc-order-export-data-extractor-ui.php:253
1087
  msgid "Order Line Tax (- Refund)"
1088
  msgstr ""
1089
 
1090
- #: classes/core/class-wc-order-export-data-extractor-ui.php:254
1091
  msgid "Order Line Subtotal"
1092
  msgstr ""
1093
 
1094
- #: classes/core/class-wc-order-export-data-extractor-ui.php:255
1095
  msgid "Order Line Total"
1096
  msgstr ""
1097
 
1098
- #: classes/core/class-wc-order-export-data-extractor-ui.php:256
1099
  msgid "Order Line Total (include tax)"
1100
  msgstr ""
1101
 
1102
- #: classes/core/class-wc-order-export-data-extractor-ui.php:257
1103
  msgid "Order Line Total Refunded"
1104
  msgstr ""
1105
 
1106
- #: classes/core/class-wc-order-export-data-extractor-ui.php:258
1107
  msgid "Order Line Total (- Refund)"
1108
  msgstr ""
1109
 
1110
- #: classes/core/class-wc-order-export-data-extractor-ui.php:259
1111
  msgid "Item Discount Amount"
1112
  msgstr ""
1113
 
1114
- #: classes/core/class-wc-order-export-data-extractor-ui.php:260
1115
  msgid "Item Tax Rate"
1116
  msgstr ""
1117
 
1118
- #: classes/core/class-wc-order-export-data-extractor-ui.php:261
1119
  msgid "Type"
1120
  msgstr ""
1121
 
1122
- #: classes/core/class-wc-order-export-data-extractor-ui.php:262
1123
  msgid "Category"
1124
  msgstr ""
1125
 
1126
- #: classes/core/class-wc-order-export-data-extractor-ui.php:263
1127
  msgid "Tags"
1128
  msgstr ""
1129
 
1130
- #: classes/core/class-wc-order-export-data-extractor-ui.php:264
1131
  msgid "Width"
1132
  msgstr ""
1133
 
1134
- #: classes/core/class-wc-order-export-data-extractor-ui.php:265
1135
  msgid "Length"
1136
  msgstr ""
1137
 
1138
- #: classes/core/class-wc-order-export-data-extractor-ui.php:266
1139
  msgid "Height"
1140
  msgstr ""
1141
 
1142
- #: classes/core/class-wc-order-export-data-extractor-ui.php:267
1143
  msgid "Weight"
1144
  msgstr ""
1145
 
1146
- #: classes/core/class-wc-order-export-data-extractor-ui.php:268
1147
  msgid "Product URL"
1148
  msgstr ""
1149
 
1150
- #: classes/core/class-wc-order-export-data-extractor-ui.php:269
1151
  msgid "Download URL"
1152
  msgstr ""
1153
 
1154
- #: classes/core/class-wc-order-export-data-extractor-ui.php:270
1155
  msgid "Image URL"
1156
  msgstr ""
1157
 
1158
- #: classes/core/class-wc-order-export-data-extractor-ui.php:271
1159
  msgid "Product Shipping Class"
1160
  msgstr ""
1161
 
1162
- #: classes/core/class-wc-order-export-data-extractor-ui.php:272
1163
  msgid "Description"
1164
  msgstr ""
1165
 
1166
- #: classes/core/class-wc-order-export-data-extractor-ui.php:273
1167
  msgid "Short Description"
1168
  msgstr ""
1169
 
1170
- #: classes/core/class-wc-order-export-data-extractor-ui.php:286
 
 
 
 
1171
  msgid "Coupon Code"
1172
  msgstr ""
1173
 
1174
- #: classes/core/class-wc-order-export-data-extractor-ui.php:287
1175
  msgid "Discount Amount"
1176
  msgstr ""
1177
 
1178
- #: classes/core/class-wc-order-export-data-extractor-ui.php:288
1179
  msgid "Discount Amount Tax"
1180
  msgstr ""
1181
 
1182
- #: classes/core/class-wc-order-export-data-extractor-ui.php:289
1183
  msgid "Discount Amount + Tax"
1184
  msgstr ""
1185
 
1186
- #: classes/core/class-wc-order-export-data-extractor-ui.php:290
1187
  msgid "Coupon Description"
1188
  msgstr ""
1189
 
1190
- #: classes/core/class-wc-order-export-data-extractor-ui.php:291
1191
  msgid "Coupon Type"
1192
  msgstr ""
1193
 
1194
- #: classes/core/class-wc-order-export-data-extractor-ui.php:292
1195
  msgid "Coupon Amount"
1196
  msgstr ""
1197
 
1198
- #: classes/core/class-wc-order-export-data-extractor-ui.php:326
 
 
 
 
1199
  msgid "Order Number"
1200
  msgstr ""
1201
 
1202
- #: classes/core/class-wc-order-export-data-extractor-ui.php:327
1203
  msgid "Order Status"
1204
  msgstr ""
1205
 
1206
- #: classes/core/class-wc-order-export-data-extractor-ui.php:330
1207
  msgid "Transaction ID"
1208
  msgstr ""
1209
 
1210
- #: classes/core/class-wc-order-export-data-extractor-ui.php:333
1211
  msgid "Date of first refund"
1212
  msgstr ""
1213
 
1214
- #: classes/core/class-wc-order-export-data-extractor-ui.php:334
1215
  msgid "Customer Note"
1216
  msgstr ""
1217
 
1218
- #: classes/core/class-wc-order-export-data-extractor-ui.php:335
1219
  msgid "Order Notes"
1220
  msgstr ""
1221
 
1222
- #: classes/core/class-wc-order-export-data-extractor-ui.php:341
1223
  msgid "Customer IP address"
1224
  msgstr ""
1225
 
1226
- #: classes/core/class-wc-order-export-data-extractor-ui.php:342
1227
  msgid "Customer User ID"
1228
  msgstr ""
1229
 
1230
- #: classes/core/class-wc-order-export-data-extractor-ui.php:343
1231
  msgid "Customer Username"
1232
  msgstr ""
1233
 
1234
- #: classes/core/class-wc-order-export-data-extractor-ui.php:344
1235
  msgid "Customer User Email"
1236
  msgstr ""
1237
 
1238
- #: classes/core/class-wc-order-export-data-extractor-ui.php:345
1239
  msgid "Customer Role"
1240
  msgstr ""
1241
 
1242
- #: classes/core/class-wc-order-export-data-extractor-ui.php:351
1243
  msgid "First Name (Billing)"
1244
  msgstr ""
1245
 
1246
- #: classes/core/class-wc-order-export-data-extractor-ui.php:352
1247
  msgid "Last Name (Billing)"
1248
  msgstr ""
1249
 
1250
- #: classes/core/class-wc-order-export-data-extractor-ui.php:353
1251
  msgid "Full Name (Billing)"
1252
  msgstr ""
1253
 
1254
- #: classes/core/class-wc-order-export-data-extractor-ui.php:354
1255
  msgid "Company (Billing)"
1256
  msgstr ""
1257
 
1258
- #: classes/core/class-wc-order-export-data-extractor-ui.php:355
1259
  msgid "Address 1&2 (Billing)"
1260
  msgstr ""
1261
 
1262
- #: classes/core/class-wc-order-export-data-extractor-ui.php:356
1263
  msgid "Address 1 (Billing)"
1264
  msgstr ""
1265
 
1266
- #: classes/core/class-wc-order-export-data-extractor-ui.php:357
1267
  msgid "Address 2 (Billing)"
1268
  msgstr ""
1269
 
1270
- #: classes/core/class-wc-order-export-data-extractor-ui.php:358
1271
  msgid "City (Billing)"
1272
  msgstr ""
1273
 
1274
- #: classes/core/class-wc-order-export-data-extractor-ui.php:359
1275
  msgid "State Code (Billing)"
1276
  msgstr ""
1277
 
1278
- #: classes/core/class-wc-order-export-data-extractor-ui.php:360
1279
  msgid "City, State, Zip (Billing)"
1280
  msgstr ""
1281
 
1282
- #: classes/core/class-wc-order-export-data-extractor-ui.php:361
1283
  msgid "State Name (Billing)"
1284
  msgstr ""
1285
 
1286
- #: classes/core/class-wc-order-export-data-extractor-ui.php:362
1287
  msgid "Postcode (Billing)"
1288
  msgstr ""
1289
 
1290
- #: classes/core/class-wc-order-export-data-extractor-ui.php:363
1291
  msgid "Country Code (Billing)"
1292
  msgstr ""
1293
 
1294
- #: classes/core/class-wc-order-export-data-extractor-ui.php:364
1295
  msgid "Country Name (Billing)"
1296
  msgstr ""
1297
 
1298
- #: classes/core/class-wc-order-export-data-extractor-ui.php:365
1299
  msgid "Email (Billing)"
1300
  msgstr ""
1301
 
1302
- #: classes/core/class-wc-order-export-data-extractor-ui.php:366
1303
  msgid "Phone (Billing)"
1304
  msgstr ""
1305
 
1306
- #: classes/core/class-wc-order-export-data-extractor-ui.php:372
1307
  msgid "First Name (Shipping)"
1308
  msgstr ""
1309
 
1310
- #: classes/core/class-wc-order-export-data-extractor-ui.php:373
1311
  msgid "Last Name (Shipping)"
1312
  msgstr ""
1313
 
1314
- #: classes/core/class-wc-order-export-data-extractor-ui.php:374
1315
  msgid "Full Name (Shipping)"
1316
  msgstr ""
1317
 
1318
- #: classes/core/class-wc-order-export-data-extractor-ui.php:375
1319
  msgid "Company (Shipping)"
1320
  msgstr ""
1321
 
1322
- #: classes/core/class-wc-order-export-data-extractor-ui.php:376
1323
  msgid "Address 1&2 (Shipping)"
1324
  msgstr ""
1325
 
1326
- #: classes/core/class-wc-order-export-data-extractor-ui.php:377
1327
  msgid "Address 1 (Shipping)"
1328
  msgstr ""
1329
 
1330
- #: classes/core/class-wc-order-export-data-extractor-ui.php:378
1331
  msgid "Address 2 (Shipping)"
1332
  msgstr ""
1333
 
1334
- #: classes/core/class-wc-order-export-data-extractor-ui.php:379
1335
  msgid "City (Shipping)"
1336
  msgstr ""
1337
 
1338
- #: classes/core/class-wc-order-export-data-extractor-ui.php:380
1339
  msgid "State Code (Shipping)"
1340
  msgstr ""
1341
 
1342
- #: classes/core/class-wc-order-export-data-extractor-ui.php:381
1343
  msgid "City, State, Zip (Shipping)"
1344
  msgstr ""
1345
 
1346
- #: classes/core/class-wc-order-export-data-extractor-ui.php:382
1347
  msgid "State Name (Shipping)"
1348
  msgstr ""
1349
 
1350
- #: classes/core/class-wc-order-export-data-extractor-ui.php:383
1351
  msgid "Postcode (Shipping)"
1352
  msgstr ""
1353
 
1354
- #: classes/core/class-wc-order-export-data-extractor-ui.php:384
1355
  msgid "Country Code (Shipping)"
1356
  msgstr ""
1357
 
1358
- #: classes/core/class-wc-order-export-data-extractor-ui.php:385
1359
  msgid "Country Name (Shipping)"
1360
  msgstr ""
1361
 
1362
- #: classes/core/class-wc-order-export-data-extractor-ui.php:392
1363
- #: classes/core/class-wc-order-export-data-extractor-ui.php:459
1364
  msgid "Products"
1365
  msgstr ""
1366
 
1367
- #: classes/core/class-wc-order-export-data-extractor-ui.php:405
1368
  msgid "Shipping Method Title"
1369
  msgstr ""
1370
 
1371
- #: classes/core/class-wc-order-export-data-extractor-ui.php:406
1372
  msgid "Shipping Method"
1373
  msgstr ""
1374
 
1375
- #: classes/core/class-wc-order-export-data-extractor-ui.php:407
1376
  msgid "Payment Method Title"
1377
  msgstr ""
1378
 
1379
- #: classes/core/class-wc-order-export-data-extractor-ui.php:408
1380
  msgid "Payment Method"
1381
  msgstr ""
1382
 
1383
- #: classes/core/class-wc-order-export-data-extractor-ui.php:409
1384
  msgid "Coupons Used"
1385
  msgstr ""
1386
 
1387
- #: classes/core/class-wc-order-export-data-extractor-ui.php:410
1388
  msgid "Cart Discount Amount"
1389
  msgstr ""
1390
 
1391
- #: classes/core/class-wc-order-export-data-extractor-ui.php:411
1392
  msgid "Cart Discount Amount Tax"
1393
  msgstr ""
1394
 
1395
- #: classes/core/class-wc-order-export-data-extractor-ui.php:412
1396
  msgid "Order Subtotal Amount"
1397
  msgstr ""
1398
 
1399
- #: classes/core/class-wc-order-export-data-extractor-ui.php:413
1400
  msgid "Order Subtotal Amount Refunded"
1401
  msgstr ""
1402
 
1403
- #: classes/core/class-wc-order-export-data-extractor-ui.php:414
1404
  msgid "Order Subtotal Amount (- Refund)"
1405
  msgstr ""
1406
 
1407
- #: classes/core/class-wc-order-export-data-extractor-ui.php:415
1408
  msgid "Order Tax Amount"
1409
  msgstr ""
1410
 
1411
- #: classes/core/class-wc-order-export-data-extractor-ui.php:416
1412
  msgid "Order Shipping Amount"
1413
  msgstr ""
1414
 
1415
- #: classes/core/class-wc-order-export-data-extractor-ui.php:417
1416
  msgid "Order Shipping Amount Refunded"
1417
  msgstr ""
1418
 
1419
- #: classes/core/class-wc-order-export-data-extractor-ui.php:418
1420
  msgid "Order Shipping Amount (- Refund)"
1421
  msgstr ""
1422
 
1423
- #: classes/core/class-wc-order-export-data-extractor-ui.php:419
1424
  msgid "Order Shipping Tax Amount"
1425
  msgstr ""
1426
 
1427
- #: classes/core/class-wc-order-export-data-extractor-ui.php:420
1428
  msgid "Order Shipping Tax Refunded"
1429
  msgstr ""
1430
 
1431
- #: classes/core/class-wc-order-export-data-extractor-ui.php:421
1432
  msgid "Order Shipping Tax Amount (- Refund)"
1433
  msgstr ""
1434
 
1435
- #: classes/core/class-wc-order-export-data-extractor-ui.php:422
1436
  msgid "Order Refund Amount"
1437
  msgstr ""
1438
 
1439
- #: classes/core/class-wc-order-export-data-extractor-ui.php:423
1440
  msgid "Order Total Amount (- Refund)"
1441
  msgstr ""
1442
 
1443
- #: classes/core/class-wc-order-export-data-extractor-ui.php:424
1444
  msgid "Order Total Amount"
1445
  msgstr ""
1446
 
1447
- #: classes/core/class-wc-order-export-data-extractor-ui.php:425
1448
  msgid "Order Total Amount without Tax"
1449
  msgstr ""
1450
 
1451
- #: classes/core/class-wc-order-export-data-extractor-ui.php:426
1452
  msgid "Order Total Tax Amount"
1453
  msgstr ""
1454
 
1455
- #: classes/core/class-wc-order-export-data-extractor-ui.php:427
1456
  msgid "Order Total Tax Amount Refunded"
1457
  msgstr ""
1458
 
1459
- #: classes/core/class-wc-order-export-data-extractor-ui.php:428
1460
  msgid "Order Total Tax Amount (- Refund)"
1461
  msgstr ""
1462
 
1463
- #: classes/core/class-wc-order-export-data-extractor-ui.php:429
1464
  msgid "Currency"
1465
  msgstr ""
1466
 
1467
- #: classes/core/class-wc-order-export-data-extractor-ui.php:435
1468
  msgid "Total weight"
1469
  msgstr ""
1470
 
1471
- #: classes/core/class-wc-order-export-data-extractor-ui.php:436
1472
  msgid "Total items"
1473
  msgstr ""
1474
 
1475
- #: classes/core/class-wc-order-export-data-extractor-ui.php:437
1476
  msgid "Total products"
1477
  msgstr ""
1478
 
1479
- #: classes/core/class-wc-order-export-data-extractor-ui.php:455
1480
  msgid "Common"
1481
  msgstr ""
1482
 
1483
- #: classes/core/class-wc-order-export-data-extractor-ui.php:456
1484
  msgid "User"
1485
  msgstr ""
1486
 
1487
- #: classes/core/class-wc-order-export-data-extractor-ui.php:457
1488
  msgid "Billing"
1489
  msgstr ""
1490
 
1491
- #: classes/core/class-wc-order-export-data-extractor-ui.php:458
1492
  msgid "Shipping"
1493
  msgstr ""
1494
 
1495
- #: classes/core/class-wc-order-export-data-extractor-ui.php:461
1496
  msgid "Cart"
1497
  msgstr ""
1498
 
1499
- #: classes/core/class-wc-order-export-data-extractor-ui.php:462
1500
  msgid "Others"
1501
  msgstr ""
1502
 
1503
- #: classes/core/class-wc-order-export-data-extractor.php:1589
1504
  msgid "[Rest of the World]"
1505
  msgstr ""
1506
 
1507
  #: classes/core/class-wc-order-export-engine.php:17
1508
- msgid "No format selected"
1509
  msgstr ""
1510
 
1511
  #: classes/core/class-wc-order-export-engine.php:27
1512
  msgid "Wrong format"
1513
  msgstr ""
1514
 
1515
- #: classes/core/class-wc-order-export-engine.php:302
1516
  msgid "Don't Panic"
1517
  msgstr ""
1518
 
1519
- #: classes/core/class-wc-order-export-engine.php:303
1520
  #, php-format
1521
  msgid "The code you are trying to save produced a fatal error on line %d:"
1522
  msgstr ""
1523
 
1524
- #: classes/core/class-wc-order-export-engine.php:623
 
 
 
 
1525
  msgid "Total Quantity"
1526
  msgstr ""
1527
 
1528
- #: classes/core/class-wc-order-export-engine.php:623
1529
  msgid "Total Amount"
1530
  msgstr ""
1531
 
@@ -1534,8 +1332,7 @@ msgid "Advanced Order Export For WooCommerce"
1534
  msgstr ""
1535
 
1536
  #. Description of the plugin
1537
- msgid ""
1538
- "Export orders from WooCommerce with ease ( Excel/CSV/XML/Json supported )"
1539
  msgstr ""
1540
 
1541
  #. Author of the plugin
3
  msgstr ""
4
  "Project-Id-Version: PACKAGE VERSION\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2018-04-25 12:28+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
10
  "Language: \n"
11
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Loco https://localise.biz/"
16
 
17
+ #: woo-order-export-lite.php:59
18
  msgid ""
19
  "Please, <a href=\"plugins.php\">deactivate</a> Free version of Advanced "
20
+ "Order Export For WooCommerce!"
21
  msgstr ""
22
 
23
+ #: view/settings-form.php:52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  msgid "Filter orders by"
25
  msgstr ""
26
 
27
+ #: view/settings-form.php:56 view/settings-form.php:225
28
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:363
29
  msgid "Order Date"
30
  msgstr ""
31
 
32
+ #: view/settings-form.php:61 view/settings-form.php:226
33
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:364
34
  msgid "Modification Date"
35
  msgstr ""
36
 
37
+ #: view/settings-form.php:66
38
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:367
39
  msgid "Paid Date"
40
  msgstr ""
41
 
42
+ #: view/settings-form.php:71
43
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:366
44
  msgid "Completed Date"
45
  msgstr ""
46
 
47
+ #: view/settings-form.php:75
48
  msgid "This date range should not be saved in the scheduled task"
49
  msgstr ""
50
 
51
+ #: view/settings-form.php:77
52
  msgid "Date range"
53
  msgstr ""
54
 
55
+ #: view/settings-form.php:79
56
  msgid "to"
57
  msgstr ""
58
 
59
+ #: view/settings-form.php:83
60
  msgid "Express export"
61
  msgstr ""
62
 
63
+ #: view/settings-form.php:84
64
  msgid "Summary Report By Products"
65
  msgstr ""
66
 
67
+ #: view/settings-form.php:85
68
  msgid "Set up fields"
69
  msgstr ""
70
 
71
+ #: view/settings-form.php:93
72
  msgid "Export filename"
73
  msgstr ""
74
 
75
+ #: view/settings-form.php:103
76
  msgid "Format"
77
  msgstr ""
78
 
79
+ #: view/settings-form.php:114
80
  msgid "XLS options"
81
  msgstr ""
82
 
83
+ #: view/settings-form.php:120
84
  msgid "Export as .xls (Binary File Format)"
85
  msgstr ""
86
 
87
+ #: view/settings-form.php:121
88
  msgid "Use sheet name"
89
  msgstr ""
90
 
91
+ #: view/settings-form.php:122 view/settings-form.php:134
92
+ #: view/settings-form.php:164
93
  msgid "Output column titles as first line"
94
  msgstr ""
95
 
96
+ #: view/settings-form.php:123
97
  msgid "Auto column width"
98
  msgstr ""
99
 
100
+ #: view/settings-form.php:124 view/settings-form.php:135
101
+ #: view/settings-form.php:165
102
  msgid "Populate other columns if products exported as rows"
103
  msgstr ""
104
 
105
+ #: view/settings-form.php:125
106
  msgid "Right-to-Left direction"
107
  msgstr ""
108
 
109
+ #: view/settings-form.php:127
110
  msgid "CSV options"
111
  msgstr ""
112
 
113
+ #: view/settings-form.php:133 view/settings-form.php:163
114
  msgid "Output UTF-8 BOM"
115
  msgstr ""
116
 
117
+ #: view/settings-form.php:136
118
  msgid "Convert line breaks to literals"
119
  msgstr ""
120
 
121
+ #: view/settings-form.php:137
122
  msgid "Item rows start from new line"
123
  msgstr ""
124
 
125
+ #: view/settings-form.php:138
126
  msgid "Enclosure"
127
  msgstr ""
128
 
129
+ #: view/settings-form.php:139
130
  msgid "Field Delimiter"
131
  msgstr ""
132
 
133
+ #: view/settings-form.php:140 view/settings-form.php:166
134
  msgid "Line Break"
135
  msgstr ""
136
 
137
+ #: view/settings-form.php:142 view/settings-form.php:168
138
  msgid "Character encoding"
139
  msgstr ""
140
 
141
+ #: view/settings-form.php:145
142
  msgid "XML options"
143
  msgstr ""
144
 
145
+ #: view/settings-form.php:147
146
  msgid "Prepend XML"
147
  msgstr ""
148
 
149
+ #: view/settings-form.php:148
150
  msgid "Root tag"
151
  msgstr ""
152
 
153
+ #: view/settings-form.php:149
154
  msgid "Order tag"
155
  msgstr ""
156
 
157
+ #: view/settings-form.php:150
158
  msgid "Product tag"
159
  msgstr ""
160
 
161
+ #: view/settings-form.php:151
162
  msgid "Coupon tag"
163
  msgstr ""
164
 
165
+ #: view/settings-form.php:152
166
  msgid "Append XML"
167
  msgstr ""
168
 
169
+ #: view/settings-form.php:153
170
  msgid "Self closing tags"
171
  msgstr ""
172
 
173
+ #: view/settings-form.php:155
174
  msgid "JSON options"
175
  msgstr ""
176
 
177
+ #: view/settings-form.php:156
178
  msgid "Start tag"
179
  msgstr ""
180
 
181
+ #: view/settings-form.php:157
182
  msgid "End tag"
183
  msgstr ""
184
 
185
+ #: view/settings-form.php:159
186
  msgid "TSV options"
187
  msgstr ""
188
 
189
+ #: view/settings-form.php:175
190
  msgid "Date"
191
  msgstr ""
192
 
193
+ #: view/settings-form.php:188 view/settings-form.php:210
194
  msgid "-"
195
  msgstr ""
196
 
197
+ #: view/settings-form.php:190 view/settings-form.php:212
198
  msgid "custom"
199
  msgstr ""
200
 
201
+ #: view/settings-form.php:198
202
  msgid "Time"
203
  msgstr ""
204
 
205
+ #: view/settings-form.php:224
206
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:360
207
  msgid "Order ID"
208
  msgstr ""
209
 
210
+ #: view/settings-form.php:241
211
  msgid "Descending"
212
  msgstr ""
213
 
214
+ #: view/settings-form.php:242
215
  msgid "Ascending"
216
  msgstr ""
217
 
218
+ #: view/settings-form.php:247
219
  #, php-format
220
  msgid "Sort orders by %s in %s order"
221
  msgstr ""
222
 
223
+ #: view/settings-form.php:252
224
  msgid "Change order status to"
225
  msgstr ""
226
 
227
+ #: view/settings-form.php:254
228
  msgid "- don't modify -"
229
  msgstr ""
230
 
231
+ #: view/settings-form.php:264
232
  msgid "Misc settings"
233
  msgstr ""
234
 
235
+ #: view/settings-form.php:269
236
  msgid "Format numbers (use WC decimal separator)"
237
  msgstr ""
238
 
239
+ #: view/settings-form.php:273
240
  msgid "Export all order notes"
241
  msgstr ""
242
 
243
+ #: view/settings-form.php:277
244
  msgid "Export refund notes as Customer Note"
245
  msgstr ""
246
 
247
+ #: view/settings-form.php:281
248
  msgid "Strip tags from Product Description/Variation"
249
  msgstr ""
250
 
251
+ #: view/settings-form.php:285
252
+ msgid "Cleanup phone (export only digits)"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  msgstr ""
254
 
255
+ #: view/settings-form.php:289
256
+ msgid "Enable debug output"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
257
  msgstr ""
258
 
259
+ #: view/settings-form.php:293
260
+ msgid "Custom PHP code to modify output"
261
  msgstr ""
262
 
263
+ #: view/settings-form.php:294
264
+ msgid "Use only unnamed functions!"
265
  msgstr ""
266
 
267
+ #: view/settings-form.php:307
268
  msgid "Filter by order"
269
  msgstr ""
270
 
271
+ #: view/settings-form.php:310
272
  msgid "Don't export child orders"
273
  msgstr ""
274
 
275
+ #: view/settings-form.php:311
276
  msgid "Export refunds"
277
  msgstr ""
278
 
279
+ #: view/settings-form.php:312
280
  msgid "Mark exported orders"
281
  msgstr ""
282
 
283
+ #: view/settings-form.php:313
284
  msgid "Export unmarked orders only"
285
  msgstr ""
286
 
287
+ #: view/settings-form.php:314
288
  msgid "Order statuses"
289
  msgstr ""
290
 
291
+ #: view/settings-form.php:321
292
  msgid "Custom fields"
293
  msgstr ""
294
 
295
+ #: view/settings-form.php:356
296
  msgid ""
297
  "The filters won't work correctly.<br>Another plugin(or theme) has loaded "
298
  "outdated Select2.js"
299
  msgstr ""
300
 
301
+ #: view/settings-form.php:357
302
  msgid "Filter by product"
303
  msgstr ""
304
 
305
+ #: view/settings-form.php:360
306
  msgid "Export all products from a order"
307
  msgstr ""
308
 
309
+ #: view/settings-form.php:361
310
  msgid "Skip fully refunded items"
311
  msgstr ""
312
 
313
+ #: view/settings-form.php:362
314
  msgid "Product categories"
315
  msgstr ""
316
 
317
+ #: view/settings-form.php:372
318
  msgid "Vendor/creator"
319
  msgstr ""
320
 
321
+ #: view/settings-form.php:385
322
  msgid "Product"
323
  msgstr ""
324
 
325
+ #: view/settings-form.php:397
326
  msgid "Product taxonomies"
327
  msgstr ""
328
 
329
+ #: view/settings-form.php:423
330
  msgid "Product custom fields"
331
  msgstr ""
332
 
333
+ #: view/settings-form.php:450
334
  msgid "Variable product attributes"
335
  msgstr ""
336
 
337
+ #: view/settings-form.php:477
338
  msgid "Item meta data"
339
  msgstr ""
340
 
341
+ #: view/settings-form.php:510
342
  msgid "Filter by customers"
343
  msgstr ""
344
 
345
+ #: view/settings-form.php:513
346
  msgid "User roles"
347
  msgstr ""
348
 
349
+ #: view/settings-form.php:522
350
  msgid "Usernames"
351
  msgstr ""
352
 
353
+ #: view/settings-form.php:538
354
  msgid "Filter by coupons"
355
  msgstr ""
356
 
357
+ #: view/settings-form.php:543
358
  msgid "Any coupon used"
359
  msgstr ""
360
 
361
+ #: view/settings-form.php:545
362
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:434
363
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:496
364
  msgid "Coupons"
365
  msgstr ""
366
 
367
+ #: view/settings-form.php:560
368
  msgid "Filter by billing"
369
  msgstr ""
370
 
371
+ #: view/settings-form.php:563
372
  msgid "Billing locations"
373
  msgstr ""
374
 
375
+ #: view/settings-form.php:587
376
  msgid "Payment methods"
377
  msgstr ""
378
 
379
+ #: view/settings-form.php:599
380
  msgid "Filter by shipping"
381
  msgstr ""
382
 
383
+ #: view/settings-form.php:602
384
  msgid "Shipping locations"
385
  msgstr ""
386
 
387
+ #: view/settings-form.php:626
388
  msgid "Shipping methods"
389
  msgstr ""
390
 
391
+ #: view/settings-form.php:640 view/settings-form.php:1003
392
  msgid "Set up fields to export"
393
  msgstr ""
394
 
395
+ #: view/settings-form.php:646 view/modal-controls.php:36
 
396
  msgid "Meta key"
397
  msgstr ""
398
 
399
+ #: view/settings-form.php:654 view/settings-form.php:666
400
+ #: view/modal-controls.php:20 view/modal-controls.php:26
401
+ #: view/modal-controls.php:43 view/modal-controls.php:49
402
  msgid "Column name"
403
  msgstr ""
404
 
405
+ #: view/settings-form.php:657
406
  msgid "or type meta key here"
407
  msgstr ""
408
 
409
+ #: view/settings-form.php:658 view/settings-form.php:686
410
+ #: view/modal-controls.php:4 view/modal-controls.php:39
411
  msgid "Hide unused fields"
412
  msgstr ""
413
 
414
+ #: view/settings-form.php:661 view/settings-form.php:669
415
  msgid "Confirm"
416
  msgstr ""
417
 
418
+ #: view/settings-form.php:662 view/settings-form.php:670
419
  msgid "Cancel"
420
  msgstr ""
421
 
422
+ #: view/settings-form.php:667 view/modal-controls.php:27
423
+ #: view/modal-controls.php:50
424
  msgid "Value"
425
  msgstr ""
426
 
427
+ #: view/settings-form.php:673
428
  msgid "Use sections"
429
  msgstr ""
430
 
431
+ #: view/settings-form.php:680
432
  msgid "Actions"
433
  msgstr ""
434
 
435
+ #: view/settings-form.php:681 view/modal-controls.php:22
436
+ #: view/modal-controls.php:45
437
  msgid "Add field"
438
  msgstr ""
439
 
440
+ #: view/settings-form.php:683 view/modal-controls.php:29
441
+ #: view/modal-controls.php:52
442
  msgid "Add static field"
443
  msgstr ""
444
 
445
+ #: view/settings-form.php:687
446
  msgid "Show unused fields"
447
  msgstr ""
448
 
449
+ #: view/settings-form.php:695
450
  msgid "Select all"
451
  msgstr ""
452
 
453
+ #: view/settings-form.php:698
454
  msgid "Drag rows to reorder exported fields"
455
  msgstr ""
456
 
457
+ #: view/settings-form.php:709
458
  #, php-format
459
  msgid ""
460
  "If you see this message after page load, user interface won't work correctly!"
462
  "it). Probably, it's a conflict with another plugin or active theme."
463
  msgstr ""
464
 
465
+ #: view/settings-form.php:711
466
  msgid "Preview"
467
  msgstr ""
468
 
469
+ #: view/settings-form.php:711
470
  msgid "Might be different from actual export!"
471
  msgstr ""
472
 
473
+ #: view/settings-form.php:712
474
  msgid "Save settings"
475
  msgstr ""
476
 
477
+ #: view/settings-form.php:714
478
  msgid "Export"
479
  msgstr ""
480
 
481
+ #: view/settings-form.php:717
482
  msgid "Export [w/o progressbar]"
483
  msgstr ""
484
 
485
+ #: view/settings-form.php:717
486
  msgid "It might not work for huge datasets!"
487
  msgstr ""
488
 
489
+ #: view/settings-form.php:720
490
  msgid "Save as a profile"
491
  msgstr ""
492
 
493
+ #: view/settings-form.php:723
494
  #, php-format
495
  msgid "Export total: %s orders"
496
  msgstr ""
497
 
498
+ #: view/settings-form.php:724
499
  msgid "Preview size"
500
  msgstr ""
501
 
502
+ #: view/settings-form.php:732
503
  msgid "Press 'Esc' to cancel the export"
504
  msgstr ""
505
 
506
+ #: view/settings-form.php:733
507
  msgid "Click here to download"
508
  msgstr ""
509
 
510
+ #: view/settings-form.php:954
511
  #, php-format
512
  msgid "Add %s as %s columns %s as rows"
513
  msgstr ""
540
  msgid "Help"
541
  msgstr ""
542
 
543
+ #: view/modal-controls.php:6
544
+ msgid "Product fields"
545
+ msgstr ""
546
+
547
  #: view/modal-controls.php:9
548
+ msgid "Order item fields"
549
+ msgstr ""
550
+
551
+ #: view/modal-controls.php:11
552
  msgid "OR"
553
  msgstr ""
554
 
555
+ #: view/modal-controls.php:12
556
  msgid "Taxonomy"
557
  msgstr ""
558
 
559
+ #: view/modal-controls.php:38
560
  msgid "All meta"
561
  msgstr ""
562
 
582
  msgid "Support"
583
  msgstr ""
584
 
585
+ #: classes/class-wc-order-export-admin.php:191
586
+ #: classes/class-wc-order-export-admin.php:193
587
+ #: classes/class-wc-order-export-admin.php:193
 
588
  msgid "Export Orders"
589
  msgstr ""
590
 
591
+ #: classes/class-wc-order-export-admin.php:483
592
  msgid "Copied from \"Export now\""
593
  msgstr ""
594
 
595
+ #: classes/class-wc-order-export-admin.php:508
596
  msgid "empty column name"
597
  msgstr ""
598
 
599
+ #: classes/class-wc-order-export-admin.php:509
600
  msgid "empty meta key"
601
  msgstr ""
602
 
603
+ #: classes/class-wc-order-export-admin.php:510
604
+ msgid "select product field or item field or taxonomy"
605
+ msgstr ""
606
+
607
+ #: classes/class-wc-order-export-admin.php:511
608
  msgid "empty value"
609
  msgstr ""
610
 
611
+ #: classes/class-wc-order-export-admin.php:512
612
  msgid "title is empty"
613
  msgstr ""
614
 
615
+ #: classes/class-wc-order-export-admin.php:513
616
  msgid "Date From is greater than Date To"
617
  msgstr ""
618
 
619
+ #: classes/class-wc-order-export-admin.php:514
620
  msgid "Please, set up fields to export"
621
  msgstr ""
622
 
623
+ #: classes/class-wc-order-export-admin.php:515
624
+ #: classes/admin/class-wc-order-export-ajax.php:326
625
+ #: classes/core/class-wc-order-export-engine.php:634
626
  msgid "Nothing to export. Please, adjust your filters"
627
  msgstr ""
628
 
629
+ #: classes/class-wc-order-export-admin.php:516
630
+ #: classes/core/class-wc-order-export-data-extractor.php:181
631
+ msgid "empty"
632
+ msgstr ""
633
+
634
+ #: classes/class-wc-order-export-admin.php:608
635
  #, php-format
636
  msgid "Status change job #%s for order #%s. Result: %s"
637
  msgstr ""
638
 
639
+ #: classes/class-wc-order-export-admin.php:668
640
  #, php-format
641
  msgid "Export as %s"
642
  msgstr ""
643
 
644
+ #: classes/class-wc-order-export-admin.php:671
645
  msgid "Mark exported"
646
  msgstr ""
647
 
648
+ #: classes/class-wc-order-export-admin.php:672
649
  msgid "Unmark exported"
650
  msgstr ""
651
 
652
+ #: classes/class-wc-order-export-admin.php:677
653
  #, php-format
654
  msgid "Export as profile '%s'"
655
  msgstr ""
656
 
657
+ #: classes/class-wc-order-export-admin.php:743
658
  #, php-format
659
  msgid "%s order marked."
660
  msgid_plural "%s orders marked."
661
  msgstr[0] ""
662
  msgstr[1] ""
663
 
664
+ #: classes/class-wc-order-export-admin.php:752
665
  #, php-format
666
  msgid "%s order unmarked."
667
  msgid_plural "%s orders unmarked."
768
  msgid "<td colspan=10><b>No results</b></td>"
769
  msgstr ""
770
 
771
+ #: classes/formats/abstract-class-woe-formatter.php:26
772
  msgid "can not open for output"
773
  msgstr ""
774
 
775
  #: classes/formats/class-woe-formatter-xls.php:72
776
+ #: classes/admin/class-wc-order-export-manage.php:196
777
  msgid "Orders"
778
  msgstr ""
779
 
809
  msgid "Wrong key for cron url!"
810
  msgstr ""
811
 
812
+ #: classes/admin/class-wc-order-export-ajax.php:223
813
  msgid "Can't create temporary file"
814
  msgstr ""
815
 
816
+ #: classes/admin/class-wc-order-export-ajax.php:245
817
  msgid "Can't find exported file"
818
  msgstr ""
819
 
820
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:273
821
  msgid "Item ID"
822
  msgstr ""
823
 
824
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:274
825
  msgid "Item #"
826
  msgstr ""
827
 
828
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:275
829
  msgid "SKU"
830
  msgstr ""
831
 
832
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:276
833
  msgid "Name"
834
  msgstr ""
835
 
836
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:277
837
  msgid "Product Variation"
838
  msgstr ""
839
 
840
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:278
841
  msgid "Item Seller"
842
  msgstr ""
843
 
844
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:279
845
  msgid "Quantity"
846
  msgstr ""
847
 
848
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:280
849
  msgid "Quantity (- Refund)"
850
  msgstr ""
851
 
852
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:281
853
  msgid "Item Cost"
854
  msgstr ""
855
 
856
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:282
857
  msgid "Product Current Price"
858
  msgstr ""
859
 
860
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:283
861
  msgid "Order Line (w/o tax)"
862
  msgstr ""
863
 
864
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:284
865
  msgid "Order Line Tax"
866
  msgstr ""
867
 
868
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:285
869
  msgid "Order Line Tax Refunded"
870
  msgstr ""
871
 
872
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:286
873
  msgid "Order Line Tax (- Refund)"
874
  msgstr ""
875
 
876
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:287
877
  msgid "Order Line Subtotal"
878
  msgstr ""
879
 
880
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:288
881
  msgid "Order Line Total"
882
  msgstr ""
883
 
884
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:289
885
  msgid "Order Line Total (include tax)"
886
  msgstr ""
887
 
888
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:290
889
  msgid "Order Line Total Refunded"
890
  msgstr ""
891
 
892
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:291
893
  msgid "Order Line Total (- Refund)"
894
  msgstr ""
895
 
896
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:292
897
  msgid "Item Discount Amount"
898
  msgstr ""
899
 
900
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:293
901
  msgid "Item Tax Rate"
902
  msgstr ""
903
 
904
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:294
905
  msgid "Type"
906
  msgstr ""
907
 
908
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:295
909
  msgid "Category"
910
  msgstr ""
911
 
912
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:296
913
  msgid "Tags"
914
  msgstr ""
915
 
916
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:297
917
  msgid "Width"
918
  msgstr ""
919
 
920
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:298
921
  msgid "Length"
922
  msgstr ""
923
 
924
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:299
925
  msgid "Height"
926
  msgstr ""
927
 
928
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:300
929
  msgid "Weight"
930
  msgstr ""
931
 
932
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:301
933
  msgid "Product URL"
934
  msgstr ""
935
 
936
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:302
937
  msgid "Download URL"
938
  msgstr ""
939
 
940
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:303
941
  msgid "Image URL"
942
  msgstr ""
943
 
944
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:304
945
  msgid "Product Shipping Class"
946
  msgstr ""
947
 
948
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:305
949
  msgid "Description"
950
  msgstr ""
951
 
952
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:306
953
  msgid "Short Description"
954
  msgstr ""
955
 
956
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:307
957
+ msgid "Full names for categories"
958
+ msgstr ""
959
+
960
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:320
961
  msgid "Coupon Code"
962
  msgstr ""
963
 
964
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:321
965
  msgid "Discount Amount"
966
  msgstr ""
967
 
968
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:322
969
  msgid "Discount Amount Tax"
970
  msgstr ""
971
 
972
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:323
973
  msgid "Discount Amount + Tax"
974
  msgstr ""
975
 
976
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:324
977
  msgid "Coupon Description"
978
  msgstr ""
979
 
980
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:325
981
  msgid "Coupon Type"
982
  msgstr ""
983
 
984
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:326
985
  msgid "Coupon Amount"
986
  msgstr ""
987
 
988
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:359
989
+ msgid "Line number"
990
+ msgstr ""
991
+
992
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:361
993
  msgid "Order Number"
994
  msgstr ""
995
 
996
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:362
997
  msgid "Order Status"
998
  msgstr ""
999
 
1000
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:365
1001
  msgid "Transaction ID"
1002
  msgstr ""
1003
 
1004
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:368
1005
  msgid "Date of first refund"
1006
  msgstr ""
1007
 
1008
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:369
1009
  msgid "Customer Note"
1010
  msgstr ""
1011
 
1012
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:370
1013
  msgid "Order Notes"
1014
  msgstr ""
1015
 
1016
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:376
1017
  msgid "Customer IP address"
1018
  msgstr ""
1019
 
1020
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:377
1021
  msgid "Customer User ID"
1022
  msgstr ""
1023
 
1024
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:378
1025
  msgid "Customer Username"
1026
  msgstr ""
1027
 
1028
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:379
1029
  msgid "Customer User Email"
1030
  msgstr ""
1031
 
1032
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:380
1033
  msgid "Customer Role"
1034
  msgstr ""
1035
 
1036
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:386
1037
  msgid "First Name (Billing)"
1038
  msgstr ""
1039
 
1040
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:387
1041
  msgid "Last Name (Billing)"
1042
  msgstr ""
1043
 
1044
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:388
1045
  msgid "Full Name (Billing)"
1046
  msgstr ""
1047
 
1048
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:389
1049
  msgid "Company (Billing)"
1050
  msgstr ""
1051
 
1052
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:390
1053
  msgid "Address 1&2 (Billing)"
1054
  msgstr ""
1055
 
1056
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:391
1057
  msgid "Address 1 (Billing)"
1058
  msgstr ""
1059
 
1060
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:392
1061
  msgid "Address 2 (Billing)"
1062
  msgstr ""
1063
 
1064
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:393
1065
  msgid "City (Billing)"
1066
  msgstr ""
1067
 
1068
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:394
1069
  msgid "State Code (Billing)"
1070
  msgstr ""
1071
 
1072
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:395
1073
  msgid "City, State, Zip (Billing)"
1074
  msgstr ""
1075
 
1076
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:396
1077
  msgid "State Name (Billing)"
1078
  msgstr ""
1079
 
1080
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:397
1081
  msgid "Postcode (Billing)"
1082
  msgstr ""
1083
 
1084
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:398
1085
  msgid "Country Code (Billing)"
1086
  msgstr ""
1087
 
1088
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:399
1089
  msgid "Country Name (Billing)"
1090
  msgstr ""
1091
 
1092
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:400
1093
  msgid "Email (Billing)"
1094
  msgstr ""
1095
 
1096
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:401
1097
  msgid "Phone (Billing)"
1098
  msgstr ""
1099
 
1100
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:407
1101
  msgid "First Name (Shipping)"
1102
  msgstr ""
1103
 
1104
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:408
1105
  msgid "Last Name (Shipping)"
1106
  msgstr ""
1107
 
1108
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:409
1109
  msgid "Full Name (Shipping)"
1110
  msgstr ""
1111
 
1112
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:410
1113
  msgid "Company (Shipping)"
1114
  msgstr ""
1115
 
1116
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:411
1117
  msgid "Address 1&2 (Shipping)"
1118
  msgstr ""
1119
 
1120
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:412
1121
  msgid "Address 1 (Shipping)"
1122
  msgstr ""
1123
 
1124
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:413
1125
  msgid "Address 2 (Shipping)"
1126
  msgstr ""
1127
 
1128
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:414
1129
  msgid "City (Shipping)"
1130
  msgstr ""
1131
 
1132
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:415
1133
  msgid "State Code (Shipping)"
1134
  msgstr ""
1135
 
1136
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:416
1137
  msgid "City, State, Zip (Shipping)"
1138
  msgstr ""
1139
 
1140
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:417
1141
  msgid "State Name (Shipping)"
1142
  msgstr ""
1143
 
1144
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:418
1145
  msgid "Postcode (Shipping)"
1146
  msgstr ""
1147
 
1148
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:419
1149
  msgid "Country Code (Shipping)"
1150
  msgstr ""
1151
 
1152
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:420
1153
  msgid "Country Name (Shipping)"
1154
  msgstr ""
1155
 
1156
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:427
1157
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:495
1158
  msgid "Products"
1159
  msgstr ""
1160
 
1161
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:440
1162
  msgid "Shipping Method Title"
1163
  msgstr ""
1164
 
1165
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:441
1166
  msgid "Shipping Method"
1167
  msgstr ""
1168
 
1169
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:442
1170
  msgid "Payment Method Title"
1171
  msgstr ""
1172
 
1173
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:443
1174
  msgid "Payment Method"
1175
  msgstr ""
1176
 
1177
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:444
1178
  msgid "Coupons Used"
1179
  msgstr ""
1180
 
1181
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:445
1182
  msgid "Cart Discount Amount"
1183
  msgstr ""
1184
 
1185
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:446
1186
  msgid "Cart Discount Amount Tax"
1187
  msgstr ""
1188
 
1189
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:447
1190
  msgid "Order Subtotal Amount"
1191
  msgstr ""
1192
 
1193
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:449
1194
  msgid "Order Subtotal Amount Refunded"
1195
  msgstr ""
1196
 
1197
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:450
1198
  msgid "Order Subtotal Amount (- Refund)"
1199
  msgstr ""
1200
 
1201
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:451
1202
  msgid "Order Tax Amount"
1203
  msgstr ""
1204
 
1205
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:452
1206
  msgid "Order Shipping Amount"
1207
  msgstr ""
1208
 
1209
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:453
1210
  msgid "Order Shipping Amount Refunded"
1211
  msgstr ""
1212
 
1213
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:454
1214
  msgid "Order Shipping Amount (- Refund)"
1215
  msgstr ""
1216
 
1217
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:455
1218
  msgid "Order Shipping Tax Amount"
1219
  msgstr ""
1220
 
1221
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:456
1222
  msgid "Order Shipping Tax Refunded"
1223
  msgstr ""
1224
 
1225
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:457
1226
  msgid "Order Shipping Tax Amount (- Refund)"
1227
  msgstr ""
1228
 
1229
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:458
1230
  msgid "Order Refund Amount"
1231
  msgstr ""
1232
 
1233
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:459
1234
  msgid "Order Total Amount (- Refund)"
1235
  msgstr ""
1236
 
1237
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:460
1238
  msgid "Order Total Amount"
1239
  msgstr ""
1240
 
1241
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:461
1242
  msgid "Order Total Amount without Tax"
1243
  msgstr ""
1244
 
1245
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:462
1246
  msgid "Order Total Tax Amount"
1247
  msgstr ""
1248
 
1249
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:463
1250
  msgid "Order Total Tax Amount Refunded"
1251
  msgstr ""
1252
 
1253
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:464
1254
  msgid "Order Total Tax Amount (- Refund)"
1255
  msgstr ""
1256
 
1257
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:465
1258
  msgid "Currency"
1259
  msgstr ""
1260
 
1261
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:471
1262
  msgid "Total weight"
1263
  msgstr ""
1264
 
1265
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:472
1266
  msgid "Total items"
1267
  msgstr ""
1268
 
1269
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:473
1270
  msgid "Total products"
1271
  msgstr ""
1272
 
1273
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:491
1274
  msgid "Common"
1275
  msgstr ""
1276
 
1277
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:492
1278
  msgid "User"
1279
  msgstr ""
1280
 
1281
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:493
1282
  msgid "Billing"
1283
  msgstr ""
1284
 
1285
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:494
1286
  msgid "Shipping"
1287
  msgstr ""
1288
 
1289
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:497
1290
  msgid "Cart"
1291
  msgstr ""
1292
 
1293
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:498
1294
  msgid "Others"
1295
  msgstr ""
1296
 
1297
+ #: classes/core/class-wc-order-export-data-extractor.php:1746
1298
  msgid "[Rest of the World]"
1299
  msgstr ""
1300
 
1301
  #: classes/core/class-wc-order-export-engine.php:17
1302
+ msgid "No destination selected"
1303
  msgstr ""
1304
 
1305
  #: classes/core/class-wc-order-export-engine.php:27
1306
  msgid "Wrong format"
1307
  msgstr ""
1308
 
1309
+ #: classes/core/class-wc-order-export-engine.php:326
1310
  msgid "Don't Panic"
1311
  msgstr ""
1312
 
1313
+ #: classes/core/class-wc-order-export-engine.php:327
1314
  #, php-format
1315
  msgid "The code you are trying to save produced a fatal error on line %d:"
1316
  msgstr ""
1317
 
1318
+ #: classes/core/class-wc-order-export-engine.php:450
1319
+ msgid "Main SQL queries are listed below"
1320
+ msgstr ""
1321
+
1322
+ #: classes/core/class-wc-order-export-engine.php:663
1323
  msgid "Total Quantity"
1324
  msgstr ""
1325
 
1326
+ #: classes/core/class-wc-order-export-engine.php:663
1327
  msgid "Total Amount"
1328
  msgstr ""
1329
 
1332
  msgstr ""
1333
 
1334
  #. Description of the plugin
1335
+ msgid "Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)"
 
1336
  msgstr ""
1337
 
1338
  #. Author of the plugin
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: woocommerce,export,order,xls,csv,xml,woo export lite,export orders,orders
5
  Requires PHP: 5.3.0
6
  Requires at least: 4.7
7
  Tested up to: 4.9
8
- Stable tag: 1.5.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -103,6 +103,19 @@ Yes, you can email a request to aprokaev@gmail.com. We intensively develop this
103
 
104
  == Changelog ==
105
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  = 1.5.3 - 2018-02-12 =
107
  * The plugin is compatible with WooCommerce 3.3.1
108
  * Supports complex structures (arrays,objects) in the fields, export it as JSON string
5
  Requires PHP: 5.3.0
6
  Requires at least: 4.7
7
  Tested up to: 4.9
8
+ Stable tag: 1.5.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
103
 
104
  == Changelog ==
105
 
106
+ = 1.5.4 - 2018-04-25 =
107
+ * Prompting to save changes if user modifies settings
108
+ * Product fields and order item fields were separated in popup "Setup fields"
109
+ * Allow to filter by raw shipping methods (not assigned to shipping zones)
110
+ * Record time of last export for the order (option "mark exported orders" must be ON)
111
+ * Added order fields "Line number", "Order Subtotal - Cart Discount"
112
+ * Added product field "Full names for categories"
113
+ * Added operators "Is set", "Not is set" for custom fields
114
+ * Added option "Enable debug output" to section "Misc Settings"
115
+ * Added option "Cleanup phone" to section "Misc Settings"
116
+ * Tags {from_date} and {to_date} can be used in filename
117
+ * Fixed bug in UI if order item meta has many values
118
+
119
  = 1.5.3 - 2018-02-12 =
120
  * The plugin is compatible with WooCommerce 3.3.1
121
  * Supports complex structures (arrays,objects) in the fields, export it as JSON string
view/modal-controls.php CHANGED
@@ -1,11 +1,13 @@
1
  <div id='fields_control_products' class='fields_control_style' style="display: none;">
2
  <div class='div_meta' >
3
- <label><?php _e('Meta key', 'woo-order-export-lite')?>:</label>
4
  <div id="custom_meta_products_mode">
5
  <label><input id="custom_meta_products_mode_used" type="checkbox" name="custom_meta_products_mode" value="used"> <?php _e('Hide unused fields', 'woo-order-export-lite') ?></label>
6
  </div>
7
- <select id='select_custom_meta_products'>
8
- </select>
 
 
 
9
  <div style="width: 80%; text-align: center;"><?php _e('OR', 'woo-order-export-lite') ?></div>
10
  <label><?php _e('Taxonomy', 'woo-order-export-lite')?>:</label><select id='select_custom_taxonomies_products'>
11
  <option></option>
1
  <div id='fields_control_products' class='fields_control_style' style="display: none;">
2
  <div class='div_meta' >
 
3
  <div id="custom_meta_products_mode">
4
  <label><input id="custom_meta_products_mode_used" type="checkbox" name="custom_meta_products_mode" value="used"> <?php _e('Hide unused fields', 'woo-order-export-lite') ?></label>
5
  </div>
6
+ <label for="select_custom_meta_products"><?php _e('Product fields', 'woo-order-export-lite')?>:</label>
7
+ <select id='select_custom_meta_products'></select>
8
+
9
+ <label for="select_custom_meta_order_items"><?php _e('Order item fields', 'woo-order-export-lite')?>:</label>
10
+ <select id='select_custom_meta_order_items'></select>
11
  <div style="width: 80%; text-align: center;"><?php _e('OR', 'woo-order-export-lite') ?></div>
12
  <label><?php _e('Taxonomy', 'woo-order-export-lite')?>:</label><select id='select_custom_taxonomies_products'>
13
  <option></option>
view/settings-form.php CHANGED
@@ -18,7 +18,8 @@ $readonly_php = WC_Order_Export_Admin::user_can_add_custom_php() ? '' : 'readonl
18
  var order_products_fields = <?php echo json_encode( $settings[ 'order_product_fields' ] ) ?>;
19
  var order_coupons_fields = <?php echo json_encode( $settings[ 'order_coupon_fields' ] ) ?>;
20
  var order_custom_meta_fields = <?php echo json_encode( $order_custom_meta_fields ) ?>;
21
- var order_products_custom_meta_fields = <?php echo json_encode( WC_Order_Export_Data_Extractor_UI::get_all_product_custom_meta_fields() ) ?>;
 
22
  var order_coupons_custom_meta_fields = <?php echo json_encode( WC_Order_Export_Data_Extractor_UI::get_all_coupon_custom_meta_fields() ) ?>;
23
  var flat_formats = ['XLS', 'CSV', 'TSV'];
24
  var object_formats = ['XML', 'JSON'];
@@ -35,228 +36,15 @@ $readonly_php = WC_Order_Export_Admin::user_can_add_custom_php() ? '' : 'readonl
35
  <?php endif; ?>
36
 
37
  <div id="my-left" style="float: left; width: 49%; max-width: 500px;">
38
- <?php if ( $mode === WC_Order_Export_Manage::EXPORT_PROFILE ): ?>
39
- <div class="my-block">
40
- <div style="display: inline;">
41
- <span class="wc-oe-header"><?php _e( 'Title', 'woo-order-export-lite' ) ?></span>
42
- <input type=text style="width: 90%;" id="settings_title" name="settings[title]" value='<?php echo ( isset( $settings[ 'title' ] ) ? $settings[ 'title' ] : '' ) ?>'>
43
- </div>
44
- </div>
45
- <br>
46
- <?php elseif ( $mode === WC_Order_Export_Manage::EXPORT_ORDER_ACTION ): ?>
47
- <div class="my-block">
48
- <div style="display: inline;">
49
- <span class="wc-oe-header"><?php _e( 'Title', 'woo-order-export-lite' ) ?></span>
50
- <input type=text style="width: 90%;" id="settings_title" name="settings[title]" value='<?php echo ( isset( $settings[ 'title' ] ) ? $settings[ 'title' ] : '' ) ?>'>
51
- </div>
52
- </div>
53
- <br>
54
- <div class="my-block">
55
- <div>
56
- <span class="wc-oe-header" title="<?php _e( 'Empty means "any status"', 'woo-order-export-lite' ) ?>"><?php _e( 'From status', 'woo-order-export-lite' )?></span>
57
- <select id="from_status" name="settings[from_status][]" multiple="multiple" style="width: 100%; max-width: 25%;">
58
- <?php foreach ( wc_get_order_statuses() as $i => $status ) { ?>
59
- <option value="<?php echo $i ?>" <?php if ( in_array( $i, $settings[ 'from_status' ] ) ) echo 'selected'; ?>><?php echo $status ?></option>
60
- <?php } ?>
61
- </select>
62
- </div>
63
- <div>
64
- <span class="wc-oe-header" title="<?php _e( 'Empty means "any status"', 'woo-order-export-lite' ) ?>"><?php _e( 'To status', 'woo-order-export-lite' ) ?></span>
65
- <select id="to_status" name="settings[to_status][]" multiple="multiple" style="width: 100%; max-width: 25%;">
66
- <?php foreach ( wc_get_order_statuses() as $i => $status ) { ?>
67
- <option value="<?php echo $i ?>" <?php if ( in_array( $i, $settings[ 'to_status' ] ) ) echo 'selected'; ?>><?php echo $status ?></option>
68
- <?php } ?>
69
- </select>
70
- </div>
71
- <?php if( function_exists( "wc_get_logger" ) ) : ?>
72
- <div>
73
- <label>
74
- <input type="checkbox" name="settings[log_results]" <?php echo isset( $settings[ 'log_results' ] ) ? 'checked' : '' ?>>
75
- <?php _e( 'Log results', 'woo-order-export-lite' ) ?>&nbsp;<a href="admin.php?page=wc-status&tab=logs&source=woocommerce-order-export" target=_blank><?php _e( 'View logs', 'woo-order-export-lite' ) ?></a>
76
- </label>
77
- </div>
78
- <?php endif; ?>
79
- </div>
80
- <hr>
81
- <?php elseif ( $mode === WC_Order_Export_Manage::EXPORT_SCHEDULE ): ?>
82
- <div class="my-block">
83
- <div style="display: inline;">
84
- <span class="wc-oe-header"><?php _e( 'Title', 'woo-order-export-lite' ) ?></span>
85
- <input type=text style="width: 90%;" id="settings_title" name="settings[title]" value='<?php echo ( isset( $settings[ 'title' ] ) ? $settings[ 'title' ] : '' ) ?>'>
86
- </div>
87
- <div>
88
- <label>
89
- <input type="hidden" name="settings[skip_empty_file]" value="" />
90
- <input type="checkbox" name="settings[skip_empty_file]" <?php echo !empty( $settings[ 'skip_empty_file' ] ) ? 'checked' : '' ?>>
91
- <?php _e( "Don't send empty file", 'woo-order-export-lite' ) ?>
92
- </label>
93
- </div>
94
- </div>
95
- <br>
96
- <div id="my-shedule-days" class="my-block">
97
- <div class="wc-oe-header"><?php _e( 'Schedule', 'woo-order-export-lite' ) ?></div>
98
- <div id="d-schedule-1">
99
- <input type="radio" name="settings[schedule][type]" value="schedule-1" id="schedule-1" class="wc-oe-schedule-type" <?php echo ((isset( $settings[ 'schedule' ] ) and $settings[ 'schedule' ][ 'type' ] == 'schedule-1') or ! isset( $settings[ 'schedule' ] )) ? 'checked' : '' ?>>
100
- <div class="weekday">
101
- <?php foreach( WC_Order_Export_Manage::get_days() as $kday=>$day ) : ?>
102
- <label>
103
- <?php echo $day; ?>
104
- <input type="checkbox" name="settings[schedule][weekday][<?php echo $kday; ?>]" <?php echo isset( $settings[ 'schedule' ][ 'weekday' ][ $kday ] ) ? 'checked' : '' ?>>
105
- </label>
106
- <?php endforeach; ?>
107
- </div>
108
- <div class="">
109
- <label style="margin-left: 10px;"><?php _e( 'Run at', 'woo-order-export-lite' ) ?>:
110
- <select name="settings[schedule][run_at]" style="width: 80px">
111
- <?php
112
- for ( $i = 0; $i <= 23; $i++ ) :
113
- $h = ($i < 10) ? '0'.$i : $i;
114
-
115
- for($m =0; $m<60;$m+=5) :
116
- $time = "$h:" . ( $m<10 ? "0".$m : $m );
117
- ?>
118
- <option <?php echo (isset( $settings[ 'schedule' ][ 'run_at' ] ) and $time == $settings[ 'schedule' ][ 'run_at' ]) ? 'selected' : '' ?>>
119
- <?php
120
- echo $time;
121
- ?>
122
- </option>
123
- <?php endfor; ?>
124
- <?php endfor; ?>
125
- </select>
126
- </label>
127
- </div>
128
- </div>
129
- <div class="clearfix"></div>
130
-
131
- <div id="d-schedule-2" class="padding-bottom-10">
132
- <input type="radio" name="settings[schedule][type]" value="schedule-2" id="schedule-2" class="wc-oe-schedule-type" <?php echo (isset( $settings[ 'schedule' ] ) and $settings[ 'schedule' ][ 'type' ] == 'schedule-2') ? 'checked' : '' ?>>
133
- <select class="wc_oe-select-interval" name="settings[schedule][interval]">
134
- <option value="-1"><?php _e( 'Choose', 'woo-order-export-lite' ) ?></option>
135
- <option value="custom" <?php echo (isset( $settings[ 'schedule' ][ 'interval' ] ) AND $settings[ 'schedule' ][ 'interval' ] == 'custom') ? 'selected' : '' ?>><?php _e( 'Custom', 'woo-order-export-lite' ) ?></option>
136
- <?php
137
- $schedules = wp_get_schedules();
138
- foreach ( $schedules as $name => $schedule ) :
139
- ?>
140
- <option value="<?php echo $name ?>" <?php echo (isset( $settings[ 'schedule' ][ 'interval' ] ) AND $settings[ 'schedule' ][ 'interval' ] == $name ) ? 'selected' : '' ?>>
141
- <?php echo $schedule[ 'display' ] ?>
142
- </option>
143
- <?php endforeach; ?>
144
- <option value="first_day_month" <?php echo (isset( $settings[ 'schedule' ][ 'interval' ] ) AND $settings[ 'schedule' ][ 'interval' ] == 'first_day_month') ? 'selected' : '' ?>><?php _e( 'On the 1st day of the month', 'woo-order-export-lite' ) ?></option>
145
- <option value="first_day_quarter" <?php echo (isset( $settings[ 'schedule' ][ 'interval' ] ) AND $settings[ 'schedule' ][ 'interval' ] == 'first_day_quarter') ? 'selected' : '' ?>><?php _e( 'On the 1st day of the quarter', 'woo-order-export-lite' ) ?></option>
146
- </select>
147
- <label id="custom_interval">
148
- <?php _e( 'interval (min)', 'woo-order-export-lite' ) ?>:
149
- <input name="settings[schedule][custom_interval]" value="<?php echo isset( $settings[ 'schedule' ][ 'custom_interval' ] ) ? $settings[ 'schedule' ][ 'custom_interval' ] : '' ?>" >
150
- </label>
151
- </div>
152
- <div id="d-schedule-3" class="padding-bottom-10">
153
- <input type="radio" name="settings[schedule][type]" value="schedule-3" id="schedule-3" class="wc-oe-schedule-type" <?php echo (isset( $settings[ 'schedule' ] ) and $settings[ 'schedule' ][ 'type' ] == 'schedule-3') ? 'checked' : '' ?>>
154
- <input type="hidden" name="settings[schedule][times]" value="<?php echo isset( $settings[ 'schedule' ][ 'times' ] ) ? $settings[ 'schedule' ][ 'times' ] : '' ?>">
155
- <div class="block">
156
- <div class="input-times"></div>
157
-
158
- <select style="width:80px" class="wc_oe-select-weekday">
159
- <?php
160
- foreach ( WC_Order_Export_Manage::get_days() as $kday=>$day ) :
161
- ?>
162
- <option value="<?php echo $kday ?>">
163
- <?php echo $day ?>
164
- </option>
165
- <?php endforeach; ?>
166
- </select>
167
-
168
- <select style="width: 80px" class="wc_oe-select-time">
169
- <?php
170
- for ( $i = 0; $i <= 23; $i++ ) :
171
- $h = ($i < 10) ? '0'.$i : $i;
172
-
173
- for($m =0; $m<60;$m+=5) :
174
- $time = "$h:" . ( $m<10 ? "0".$m : $m );
175
- ?>
176
- <option <?php echo (isset( $settings[ 'schedule' ][ 'run_at' ] ) and $time == $settings[ 'schedule' ][ 'run_at' ]) ? 'selected' : '' ?>>
177
- <?php
178
- echo $time;
179
- ?>
180
- </option>
181
- <?php endfor; ?>
182
- <?php endfor; ?>
183
- </select>
184
-
185
- <input type="button" style="margin:3px" class="button-secondary btn-add" value="<?php _e( 'Add', 'woo-order-export-lite' ) ?>">
186
- </div>
187
- </div>
188
- <?php if( function_exists( "wc_get_logger" ) ) : ?>
189
- <div id="d-schedule-4" class="padding-bottom-10">
190
- <label>
191
- <input type="checkbox" name="settings[log_results]" <?php echo isset( $settings[ 'log_results' ] ) ? 'checked' : '' ?>>
192
- <?php _e( 'Log results', 'woo-order-export-lite' ) ?>&nbsp;<a href="admin.php?page=wc-status&tab=logs&source=woocommerce-order-export" target=_blank><?php _e( 'View logs', 'woo-order-export-lite' ) ?></a>
193
- </label>
194
- </div>
195
- <?php endif; ?>
196
- </div>
197
- <br>
198
- <div id="my-export-options" class="my-block">
199
- <div class="wc-oe-header">
200
- <?php _e( 'Export date range', 'woo-order-export-lite' ) ?>:
201
- </div>
202
- <label>
203
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (!isset( $settings[ 'export_rule' ] ) || ($settings[ 'export_rule' ] == 'last_run')) ? 'checked' : '' ?> value="last_run" >
204
- <?php _e( 'Since last run of this job', 'woo-order-export-lite' ) ?>
205
- </label>
206
- <br>
207
- <label>
208
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (isset( $settings[ 'export_rule' ] ) && ($settings[ 'export_rule' ] == 'today')) ? 'checked' : '' ?> value="today" >
209
- <?php _e( 'Today', 'woo-order-export-lite' ) ?>
210
- </label>
211
- <br>
212
- <label>
213
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (isset( $settings[ 'export_rule' ] ) && ($settings[ 'export_rule' ] == 'last_day')) ? 'checked' : '' ?> value="last_day" >
214
- <?php _e( 'Yesterday', 'woo-order-export-lite' ) ?>
215
- </label>
216
- <br>
217
- <label>
218
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (isset( $settings[ 'export_rule' ] ) && ($settings[ 'export_rule' ] == 'this_week')) ? 'checked' : '' ?> value="this_week" >
219
- <?php _e( 'Current week', 'woo-order-export-lite' ) ?>
220
- </label>
221
- <br>
222
- <label>
223
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (isset( $settings[ 'export_rule' ] ) && ($settings[ 'export_rule' ] == 'this_month')) ? 'checked' : '' ?> value="this_month" >
224
- <?php _e( 'Current month', 'woo-order-export-lite' ) ?>
225
- </label>
226
- <br>
227
- <label>
228
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (isset( $settings[ 'export_rule' ] ) && ($settings[ 'export_rule' ] == 'last_week')) ? 'checked' : '' ?> value="last_week" >
229
- <?php _e( 'Last week', 'woo-order-export-lite' ) ?>
230
- </label>
231
- <br>
232
- <label>
233
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (isset( $settings[ 'export_rule' ] ) && ($settings[ 'export_rule' ] == 'last_month')) ? 'checked' : '' ?> value="last_month" >
234
- <?php _e( 'Last month', 'woo-order-export-lite' ) ?>
235
- </label>
236
- <br>
237
- <label>
238
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (isset( $settings[ 'export_rule' ] ) && ($settings[ 'export_rule' ] == 'last_quarter')) ? 'checked' : '' ?> value="last_quarter" >
239
- <?php _e( 'Last quarter', 'woo-order-export-lite' ) ?>
240
- </label>
241
- <br>
242
- <label>
243
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (isset( $settings[ 'export_rule' ] ) && ($settings[ 'export_rule' ] == 'this_year')) ? 'checked' : '' ?> value="this_year" >
244
- <?php _e( 'This year', 'woo-order-export-lite' ) ?>
245
- </label>
246
- <br>
247
- <label>
248
- <input type="radio" name="settings[export_rule]" class="width-100" <?php echo (isset( $settings[ 'export_rule' ] ) && ($settings[ 'export_rule' ] == 'custom')) ? 'checked' : '' ?> value="custom" >
249
- <?php
250
- $input_days = isset( $settings[ 'export_rule_custom' ] ) ? $settings[ 'export_rule_custom' ] : 3;
251
- $input_days = '<input class="width-15" name="settings[export_rule_custom]" value="' . $input_days . '">';
252
- ?>
253
- <?php echo sprintf( __( 'Last %s days', 'woo-order-export-lite' ), $input_days ) ?>
254
- </label>
255
- </div>
256
- <br>
257
- <?php elseif ( $mode === WC_Order_Export_Manage::EXPORT_NOW ): ?>
258
- <input type="hidden" name="settings[title]" value=''>
259
- <?php endif; ?>
260
 
261
  <?php if ( $show[ 'date_filter' ] ) : ?>
262
  <div id="my-export-date-field" class="my-block">
@@ -491,6 +279,14 @@ $readonly_php = WC_Order_Export_Admin::user_can_add_custom_php() ? '' : 'readonl
491
  <div>
492
  <input type="hidden" name="settings[strip_tags_product_fields]" value="0"/>
493
  <label><input type="checkbox" name="settings[strip_tags_product_fields]" value="1" <?php checked($settings['strip_tags_product_fields']) ?>/><?php _e( 'Strip tags from Product Description/Variation', 'woo-order-export-lite' ) ?></label>
 
 
 
 
 
 
 
 
494
  </div>
495
  <div>
496
  <input type="hidden" name="settings[custom_php]" value="0"/>
@@ -502,263 +298,10 @@ $readonly_php = WC_Order_Export_Admin::user_can_add_custom_php() ? '' : 'readonl
502
  </div>
503
 
504
  <div id="my-right" style="float: left; width: 48%; margin: 0px 10px; max-width: 500px;">
505
- <?php if ( in_array( $mode, array( WC_Order_Export_Manage::EXPORT_SCHEDULE, WC_Order_Export_Manage::EXPORT_ORDER_ACTION ) ) ): ?>
506
- <div id="my-shedule-destination" class="my-block">
507
- <div class="wc-oe-header"><?php _e( 'Destination', 'woo-order-export-lite' ) ?></div>
508
- <?php
509
- if( isset( $settings[ 'destination' ][ 'type' ] ) && !is_array( $settings[ 'destination' ][ 'type' ] ) ) {
510
- $settings[ 'destination' ][ 'type' ] = array( $settings[ 'destination' ][ 'type' ] );
511
- }
512
- ?>
513
- <div class="button-secondary output_destination"><input type="checkbox" name="settings[destination][type][]" value="email"
514
- <?php if ( isset( $settings[ 'destination' ][ 'type' ] ) AND in_array( 'email', $settings[ 'destination' ][ 'type' ] ) ) echo 'checked'; ?>
515
- > <?php _e( 'Email', 'woo-order-export-lite' ) ?>
516
- <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span>
517
- </div>
518
-
519
- <div class="button-secondary output_destination"><input type="checkbox" name="settings[destination][type][]" value="ftp"
520
- <?php if ( isset( $settings[ 'destination' ][ 'type' ] ) AND in_array( 'ftp', $settings[ 'destination' ][ 'type' ] ) ) echo 'checked'; ?>
521
- > <?php _e( 'FTP', 'woo-order-export-lite' ) ?>
522
- <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span>
523
- </div>
524
-
525
- <div class="button-secondary output_destination"><input type="checkbox" name="settings[destination][type][]" value="sftp"
526
- <?php if ( isset( $settings[ 'destination' ][ 'type' ] ) AND in_array( 'sftp', $settings[ 'destination' ][ 'type' ] ) ) echo 'checked'; ?>
527
- > <?php _e( 'SFTP', 'woo-order-export-lite' ) ?>
528
- <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span>
529
- </div>
530
-
531
- <div class="button-secondary output_destination"><input type="checkbox" name="settings[destination][type][]" value="http"
532
- <?php if ( isset( $settings[ 'destination' ][ 'type' ] ) AND in_array( 'http', $settings[ 'destination' ][ 'type' ] ) ) echo 'checked'; ?>
533
- > <?php _e( 'HTTP POST', 'woo-order-export-lite' ) ?>
534
- <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span>
535
- </div>
536
-
537
- <div class="button-secondary output_destination"><input type="checkbox" name="settings[destination][type][]" value="folder"
538
- <?php if ( isset( $settings[ 'destination' ][ 'type' ] ) AND in_array( 'folder', $settings[ 'destination' ][ 'type' ] ) ) echo 'checked'; ?>
539
- > <?php _e( 'Directory', 'woo-order-export-lite' ) ?>
540
- <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span>
541
- </div>
542
-
543
- <div class="padding-bottom-10 set-destination my-block" id="email" style="display: none;" >
544
- <div class="wc-oe-header"><?php _e( 'Email settings', 'woo-order-export-lite' ) ?></div>
545
- <div class="wc_oe-row">
546
- <div class="col-100pr">
547
- <label><div><?php _e( 'From email', 'woo-order-export-lite' ) ?></div>
548
- <input type="text" name="settings[destination][email_from]" class="width-100" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][email_from]" ); ?>">
549
- </label>
550
- </div>
551
- </div>
552
- <div class="wc_oe-row">
553
- <div class="col-100pr">
554
- <label><div><?php _e( 'From name', 'woo-order-export-lite' ) ?></div>
555
- <input type="text" name="settings[destination][email_from_name]" class="width-100" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][email_from_name]" ); ?>">
556
- </label>
557
- </div>
558
- </div>
559
- <div class="wc_oe-row">
560
- <div class="col-100pr">
561
- <label><div><?php _e( 'Recipient(s)', 'woo-order-export-lite' ) ?></div>
562
- <textarea name="settings[destination][email_recipients]" class="width-100"><?php echo $WC_Order_Export->get_value( $settings, "[destination][email_recipients]" ); ?></textarea>
563
- </label>
564
- </div>
565
- </div>
566
- <div class="wc_oe-row">
567
- <div class="col-100pr">
568
- <label><div><?php _e( 'CC Recipient(s)', 'woo-order-export-lite' ) ?></div>
569
- <textarea name="settings[destination][email_recipients_cc]" class="width-100"><?php echo $WC_Order_Export->get_value( $settings, "[destination][email_recipients_cc]" ); ?></textarea>
570
- </label>
571
- </div>
572
- </div>
573
- <div class="wc_oe-row">
574
- <div class="col-100pr">
575
- <label><div><?php _e( 'Email subject', 'woo-order-export-lite' ) ?></div>
576
- <input type="text" name="settings[destination][email_subject]" class="width-100" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][email_subject]" ); ?>">
577
- </label>
578
- </div>
579
- </div>
580
-
581
- <div class="wc_oe-row">
582
- <div class="col-100pr">
583
- <label><div><?php _e( 'Email body', 'woo-order-export-lite' ) ?></div>
584
- <a href="#TB_inline?width=400&height=400&inlineId=modal-email-body" class="thickbox"><?php _e( 'Edit email body', 'woo-order-export-lite' ) ?></a>
585
- <div class=""><input name="settings[destination][email_body_append_file_contents]" type="checkbox" <?php echo $WC_Order_Export->get_value( $settings, "[destination][email_body_append_file_contents]" ) ? 'checked' : ''; ?>><?php _e( 'Append file contents to email body', 'woo-order-export-lite' ) ?></div>
586
- </label>
587
- </div>
588
- </div>
589
-
590
-
591
- <div id="modal-email-body" >
592
- <label><div><?php _e( 'Email body', 'woo-order-export-lite' ) ?></div>
593
- <textarea name="settings[destination][email_body]" class="email_body_textarea" ><?php echo $WC_Order_Export->get_value( $settings, "[destination][email_body]" ); ?></textarea>
594
- </label>
595
- </div>
596
-
597
-
598
- <div class="wc_oe-row">
599
- <div class="col-100pr">
600
- <label>
601
- <div class="wrap"><input name="" class="wc_oe_test my-test-button add-new-h2" data-test="email" type="button" value="<?php _e( 'Test', 'woo-order-export-lite' ) ?>" title="<?php _e( 'It sends only last order!', 'woo-order-export-lite' ) ?>"></div>
602
- </label>
603
- </div>
604
- </div>
605
- </div>
606
-
607
- <div class="padding-bottom set-destination my-block" id="ftp" style="display: none;">
608
- <div class="wc-oe-header"><?php _e( 'FTP settings', 'woo-order-export-lite' ) ?></div>
609
- <div class="wc_oe-row">
610
- <div class="col-50pr">
611
- <label><div><?php _e( 'Server name', 'woo-order-export-lite' ) ?></div>
612
- <input type="text" name="settings[destination][ftp_server]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][ftp_server]" ); ?>">
613
- </label>
614
- </div>
615
- <div class="col-50pr">
616
- <label><div><?php _e( 'Port', 'woo-order-export-lite' ) ?></div>
617
- <input type="text" name="settings[destination][ftp_port]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][ftp_port]" ); ?>">
618
- </label>
619
- </div>
620
- </div>
621
- <div class="wc_oe-row">
622
-
623
- <div class="col-50pr">
624
- <label><div><?php _e( 'Username', 'woo-order-export-lite' ) ?></div>
625
- <input type="text" name="settings[destination][ftp_user]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][ftp_user]" ); ?>">
626
- </label>
627
- </div>
628
- <div class="col-50pr">
629
- <label><div><?php _e( 'Password', 'woo-order-export-lite' ) ?></div>
630
- <input type="text" name="settings[destination][ftp_pass]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][ftp_pass]" ); ?>">
631
- </label>
632
- </div>
633
- </div>
634
- <div class="wc_oe-row">
635
- <div class="col-100pr">
636
- <label><div><?php _e( 'Initial path', 'woo-order-export-lite' ) ?></div>
637
- <input type="text" class="width-100" name="settings[destination][ftp_path]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][ftp_path]" ); ?>">
638
- </label>
639
- </div>
640
- </div>
641
- <div class="wc_oe-row">
642
- <div class="col-100pr">
643
- <label>
644
- <div class=""><input name="settings[destination][ftp_passive_mode]" type="checkbox" <?php echo $WC_Order_Export->get_value( $settings, "[destination][ftp_passive_mode]" ) ? 'checked' : ''; ?>><?php _e( 'Passive mode', 'woo-order-export-lite' ) ?></div>
645
- </label>
646
- </div>
647
- <div class="col-100pr">
648
- <label>
649
- <div class=""><input name="settings[destination][ftp_append_existing]" type="checkbox" <?php echo $WC_Order_Export->get_value( $settings, "[destination][ftp_append_existing]" ) ? 'checked' : ''; ?>><?php _e( 'Append to existing file (need custom code!)', 'woo-order-export-lite' ) ?></div>
650
- </label>
651
- </div>
652
- </div>
653
- <div class="wc_oe-row">
654
- <div class="col-100pr">
655
- <label>
656
- <div class="wrap"><input name="" class="wc_oe_test my-test-button add-new-h2" data-test="ftp" type="button" value="<?php _e( 'Test', 'woo-order-export-lite' ) ?>" title="<?php _e( 'It sends only last order!', 'woo-order-export-lite' ) ?>"></div>
657
- </label>
658
- </div>
659
- </div>
660
- </div>
661
-
662
- <div class="padding-bottom set-destination my-block" id="sftp" style="display: none;">
663
- <div class="wc-oe-header"><?php _e( 'SFTP settings', 'woo-order-export-lite' ) ?></div>
664
- <div class="wc_oe-row">
665
- <div class="col-50pr">
666
- <label><div><?php _e( 'Server name', 'woo-order-export-lite' ) ?></div>
667
- <input type="text" name="settings[destination][sftp_server]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][sftp_server]" ); ?>">
668
- </label>
669
- </div>
670
- <div class="col-50pr">
671
- <label><div><?php _e( 'Port', 'woo-order-export-lite' ) ?></div>
672
- <input type="text" name="settings[destination][sftp_port]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][sftp_port]" ); ?>">
673
- </label>
674
- </div>
675
- </div>
676
- <div class="wc_oe-row">
677
-
678
- <div class="col-50pr">
679
- <label><div><?php _e( 'Username', 'woo-order-export-lite' ) ?></div>
680
- <input type="text" name="settings[destination][sftp_user]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][sftp_user]" ); ?>">
681
- </label>
682
- </div>
683
- <div class="col-50pr">
684
- <label><div><?php _e( 'Password', 'woo-order-export-lite' ) ?></div>
685
- <input type="text" name="settings[destination][sftp_pass]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][sftp_pass]" ); ?>">
686
- </label>
687
- </div>
688
- </div>
689
- <div class="wc_oe-row">
690
- <div class="col-100pr">
691
- <label><div><?php _e( 'Initial path', 'woo-order-export-lite' ) ?></div>
692
- <input type="text" class="width-100" name="settings[destination][sftp_path]" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][sftp_path]" ); ?>">
693
- </label>
694
- </div>
695
- </div>
696
- <div class="wc_oe-row">
697
- <div class="col-100pr">
698
- <label>
699
- <div class="wrap"><input name="" class="wc_oe_test my-test-button add-new-h2" data-test="sftp" type="button" value="<?php _e( 'Test', 'woo-order-export-lite' ) ?>"></div>
700
- </label>
701
- </div>
702
- </div>
703
- </div>
704
-
705
- <div class="padding-bottom-10 set-destination my-block" id="http" style="display: none;" >
706
- <div class="wc-oe-header"><?php _e( 'HTTP POST settings', 'woo-order-export-lite' ) ?></div>
707
- <div class="wc_oe-row">
708
- <div class="col-100pr">
709
- <label>
710
- <div><?php _e( 'URL', 'woo-order-export-lite' ) ?></div>
711
- <input type="text" name="settings[destination][http_post_url]" class="width-100" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][http_post_url]" ); ?>">
712
- </label>
713
- </div>
714
- </div>
715
- <div class="wc_oe-row">
716
- <div class="col-100pr">
717
- <label>
718
- <div class="wrap"><input name="" class="wc_oe_test my-test-button add-new-h2" data-test="http" type="button" value="<?php _e( 'Test', 'woo-order-export-lite' ) ?>" title="<?php _e( 'It sends only last order!', 'woo-order-export-lite' ) ?>"></div>
719
- </label>
720
- </div>
721
- </div>
722
- </div>
723
-
724
- <div class="padding-bottom-10 set-destination my-block" id="folder" style="display: none;" >
725
- <div class="wc-oe-header"><?php _e( 'Directory settings', 'woo-order-export-lite' ) ?></div>
726
- <div class="wc_oe-row">
727
- <div class="col-100pr">
728
- <label>
729
- <div><?php _e( 'Path', 'woo-order-export-lite' ) ?></div>
730
- <input type="text" name="settings[destination][path]" class="width-100" value="<?php echo $WC_Order_Export->get_value( $settings, "[destination][path]" ) ? $WC_Order_Export->get_value( $settings, "[destination][path]" ) : ABSPATH; ?>">
731
- </label>
732
- </div>
733
- </div>
734
- <div class="wc_oe-row">
735
- <div class="col-100pr">
736
- <label>
737
- <div class="wrap"><input name="" class="wc_oe_test my-test-button add-new-h2" data-test="folder" type="button" value="<?php _e( 'Test', 'woo-order-export-lite' ) ?>" title="<?php _e( 'It sends only last order!', 'woo-order-export-lite' ) ?>"></div>
738
- </label>
739
- </div>
740
- </div>
741
- </div>
742
-
743
- <div id='test_reply_div'>
744
- <b><?php _e( 'Test Results', 'woo-order-export-lite' ) ?></b><br>
745
- <textarea rows=5 id='test_reply' style="overflow: auto; width:100%" wrap='off'></textarea>
746
- </div>
747
-
748
- <div class="clear"></div>
749
- <br/>
750
- <div id="extend_desstination">
751
- <?php if ( $mode !== WC_Order_Export_Manage::EXPORT_ORDER_ACTION ): ?>
752
- <div>
753
- <label>
754
- <input name="settings[destination][separate_files]" type="checkbox" value="1" <?php echo $WC_Order_Export->get_value( $settings, "[destination][separate_files]" ) ? 'checked' : ''; ?>><?php _e( 'Make separate file for each order', 'woo-order-export-lite' ) ?>
755
- </label>
756
- </div>
757
- <?php endif; ?>
758
- </div>
759
- </div>
760
- <br>
761
- <?php endif; ?>
762
 
763
  <div class="my-block">
764
  <span class="my-hide-next "><?php _e( 'Filter by order', 'woo-order-export-lite' ) ?>
@@ -787,6 +330,8 @@ $readonly_php = WC_Order_Export_Admin::user_can_add_custom_php() ? '' : 'readonl
787
  <option>=</option>
788
  <option>&lt;&gt;</option>
789
  <option>LIKE</option>
 
 
790
  </select>
791
 
792
  <input type="text" id="text_custom_fields" disabled class="like-input" style="display: none;">
@@ -859,6 +404,7 @@ $readonly_php = WC_Order_Export_Admin::user_can_add_custom_php() ? '' : 'readonl
859
 
860
  <select id="taxonomies_compare" class="select_compare">
861
  <option>=</option>
 
862
  </select>
863
 
864
  <input type="text" id="text_taxonomies" disabled style="display: none;">
@@ -1146,7 +692,7 @@ $readonly_php = WC_Order_Export_Admin::user_can_add_custom_php() ? '' : 'readonl
1146
  <br>
1147
  <div class="mapping_col_2">
1148
  <label style="margin-left: 3px;">
1149
- <input type="checkbox" name="orders_all" value="1"> <?php _e( 'Select all', 'woo-order-export-lite' ) ?></label>
1150
  </div>
1151
  <label class="mapping_col_3" style="color: red; font-size: medium;">
1152
  <?php _e( 'Drag rows to reorder exported fields', 'woo-order-export-lite' ) ?>
@@ -1637,21 +1183,7 @@ function makeJson( obj ) {
1637
  jQuery( "#order_fields" ).sortable({ scroll: true, scrollSensitivity: 100, scrollSpeed: 100 });/*.disableSelection()*/;
1638
 
1639
 
1640
- /*jQuery('#btn_modal_manage_products').click(function(){
1641
- jQuery('#custom_meta_products_mode_all').attr('checked', 'checked');
1642
- jQuery('#custom_meta_products_mode_all').change();
1643
- jQuery('#link_modal_manage_products').click();
1644
- return false;
1645
- });
1646
-
1647
- jQuery('#btn_modal_manage_coupons').click(function(){
1648
- jQuery('#custom_meta_coupons_mode_all').attr('checked', 'checked');
1649
- jQuery('#custom_meta_coupons_mode_all').change();
1650
- jQuery('#link_modal_manage_coupons').click();
1651
- return false;
1652
- });*/
1653
-
1654
- modal_buttons();
1655
 
1656
  jQuery( '.date' ).datepicker( {
1657
  dateFormat: 'yy-mm-dd'
@@ -2032,6 +1564,7 @@ function makeJson( obj ) {
2032
  if (!validateExport()) {
2033
  return false;
2034
  }
 
2035
 
2036
  var data = 'json=' + makeJsonVar( $( '#export_job_settings' ) )
2037
  data = data + "&action=order_exporter&method=save_settings&mode=" + mode + "&id=" + job_id;
18
  var order_products_fields = <?php echo json_encode( $settings[ 'order_product_fields' ] ) ?>;
19
  var order_coupons_fields = <?php echo json_encode( $settings[ 'order_coupon_fields' ] ) ?>;
20
  var order_custom_meta_fields = <?php echo json_encode( $order_custom_meta_fields ) ?>;
21
+ var order_products_custom_meta_fields = <?php echo json_encode( WC_Order_Export_Data_Extractor_UI::get_product_custom_fields() ) ?>;
22
+ var order_order_item_custom_meta_fields = <?php echo json_encode( WC_Order_Export_Data_Extractor_UI::get_product_itemmeta() ) ?>;
23
  var order_coupons_custom_meta_fields = <?php echo json_encode( WC_Order_Export_Data_Extractor_UI::get_all_coupon_custom_meta_fields() ) ?>;
24
  var flat_formats = ['XLS', 'CSV', 'TSV'];
25
  var object_formats = ['XML', 'JSON'];
36
  <?php endif; ?>
37
 
38
  <div id="my-left" style="float: left; width: 49%; max-width: 500px;">
39
+ <?php
40
+ if ( $mode === WC_Order_Export_Manage::EXPORT_PROFILE ):
41
+ include 'pro-version/top-profile.php';
42
+ elseif ( $mode === WC_Order_Export_Manage::EXPORT_ORDER_ACTION ):
43
+ include 'pro-version/top-order-actions.php';
44
+ elseif ( $mode === WC_Order_Export_Manage::EXPORT_SCHEDULE ):
45
+ include 'pro-version/top-scheduled-jobs.php';
46
+ endif;
47
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  <?php if ( $show[ 'date_filter' ] ) : ?>
50
  <div id="my-export-date-field" class="my-block">
279
  <div>
280
  <input type="hidden" name="settings[strip_tags_product_fields]" value="0"/>
281
  <label><input type="checkbox" name="settings[strip_tags_product_fields]" value="1" <?php checked($settings['strip_tags_product_fields']) ?>/><?php _e( 'Strip tags from Product Description/Variation', 'woo-order-export-lite' ) ?></label>
282
+ </div>
283
+ <div>
284
+ <input type="hidden" name="settings[cleanup_phone]" value="0"/>
285
+ <label><input type="checkbox" name="settings[cleanup_phone]" value="1" <?php checked($settings['cleanup_phone']) ?>/><?php _e( 'Cleanup phone (export only digits)', 'woo-order-export-lite' ) ?></label>
286
+ </div>
287
+ <div>
288
+ <input type="hidden" name="settings[enable_debug]" value="0"/>
289
+ <label><input type="checkbox" name="settings[enable_debug]" value="1" <?php checked($settings['enable_debug']) ?>/><?php _e( 'Enable debug output', 'woo-order-export-lite' ) ?></label>
290
  </div>
291
  <div>
292
  <input type="hidden" name="settings[custom_php]" value="0"/>
298
  </div>
299
 
300
  <div id="my-right" style="float: left; width: 48%; margin: 0px 10px; max-width: 500px;">
301
+ <?php
302
+ if ( in_array( $mode, array( WC_Order_Export_Manage::EXPORT_SCHEDULE, WC_Order_Export_Manage::EXPORT_ORDER_ACTION ) ) ):
303
+ include "pro-version/destinations.php";
304
+ endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
 
306
  <div class="my-block">
307
  <span class="my-hide-next "><?php _e( 'Filter by order', 'woo-order-export-lite' ) ?>
330
  <option>=</option>
331
  <option>&lt;&gt;</option>
332
  <option>LIKE</option>
333
+ <option>NOT SET</option>
334
+ <option>IS SET</option>
335
  </select>
336
 
337
  <input type="text" id="text_custom_fields" disabled class="like-input" style="display: none;">
404
 
405
  <select id="taxonomies_compare" class="select_compare">
406
  <option>=</option>
407
+ <option>&lt;&gt;</option>
408
  </select>
409
 
410
  <input type="text" id="text_taxonomies" disabled style="display: none;">
692
  <br>
693
  <div class="mapping_col_2">
694
  <label style="margin-left: 3px;">
695
+ <input type="checkbox" name="orders_all"> <?php _e( 'Select all', 'woo-order-export-lite' ) ?></label>
696
  </div>
697
  <label class="mapping_col_3" style="color: red; font-size: medium;">
698
  <?php _e( 'Drag rows to reorder exported fields', 'woo-order-export-lite' ) ?>
1183
  jQuery( "#order_fields" ).sortable({ scroll: true, scrollSensitivity: 100, scrollSpeed: 100 });/*.disableSelection()*/;
1184
 
1185
 
1186
+ modal_buttons();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1187
 
1188
  jQuery( '.date' ).datepicker( {
1189
  dateFormat: 'yy-mm-dd'
1564
  if (!validateExport()) {
1565
  return false;
1566
  }
1567
+ setFormSubmitting();
1568
 
1569
  var data = 'json=' + makeJsonVar( $( '#export_job_settings' ) )
1570
  data = data + "&action=order_exporter&method=save_settings&mode=" + mode + "&id=" + job_id;
woo-order-export-lite.php CHANGED
@@ -1,15 +1,15 @@
1
  <?php
2
  /**
3
  * Plugin Name: Advanced Order Export For WooCommerce
4
- * Plugin URI:
5
- * Description: Export orders from WooCommerce with ease ( Excel/CSV/XML/Json supported )
6
  * Author: AlgolPlus
7
  * Author URI: https://algolplus.com/
8
- * Version: 1.5.3
9
  * Text Domain: woo-order-export-lite
10
  * Domain Path: /i18n/languages/
11
  * WC requires at least: 2.6.0
12
- * WC tested up to: 3.3.1
13
  *
14
  * Copyright: (c) 2015 AlgolPlus LLC. (algol.plus@gmail.com)
15
  *
@@ -25,31 +25,30 @@
25
  if ( !defined( 'ABSPATH' ) )
26
  exit; // Exit if accessed directly
27
 
 
 
 
28
  // a small function to check startup conditions
29
  if( ! function_exists("woe_check_running_options") ) {
30
  function woe_check_running_options() {
 
31
  $is_backend = is_admin();
32
  $is_cron = defined( 'DOING_CRON' );
33
  $is_frontend_checkout = isset( $_REQUEST['wc-ajax'] ) && $_REQUEST['wc-ajax'] === 'checkout'
34
  || isset( $_POST['woocommerce_checkout_place_order'] )
35
- || preg_match( '/\bwc\-api\b/', filter_input( INPUT_SERVER, 'REQUEST_URI' ) );
 
 
 
 
36
 
37
- return $is_backend || $is_cron || $is_frontend_checkout;
38
  }
39
  }
40
 
41
  if ( ! woe_check_running_options() ) {
42
  return;
43
  } //don't load for frontend !
44
-
45
- // Check if WooCommerce is active
46
- if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
47
- // do 2nd check for Multisite !
48
- include_once( ABSPATH . '/wp-admin/includes/plugin.php' );
49
- if ( ! is_plugin_active_for_network( 'woocommerce/woocommerce.php' ) ) {
50
- return;
51
- }
52
- }
53
 
54
  //Stop if another version is active!
55
  if( class_exists( 'WC_Order_Export_Admin' ) ) {
@@ -57,14 +56,15 @@ if( class_exists( 'WC_Order_Export_Admin' ) ) {
57
  function woe_warn_free_admin() {
58
  ?>
59
  <div class="notice notice-warning is-dismissible">
60
- <p><?php _e( 'Please, <a href="plugins.php">deactivate</a> Free version of Advanced Order Export For WooCommerce !', 'woo-order-export-lite' ); ?></p>
61
  </div>
62
  <?php
63
  }
64
  }
65
  add_action('admin_notices', 'woe_warn_free_admin');
66
- return;
67
- }
 
68
 
69
  include 'classes/class-wc-order-export-admin.php';
70
  include 'classes/admin/class-wc-order-export-ajax.php';
@@ -73,13 +73,16 @@ include 'classes/core/class-wc-order-export-engine.php';
73
  include 'classes/core/class-wc-order-export-data-extractor.php';
74
  include 'classes/core/class-wc-order-export-data-extractor-ui.php';
75
 
76
- define( 'WOE_VERSION', '1.5.3' );
77
  define( 'WOE_PLUGIN_BASENAME', plugin_basename(__FILE__) );
 
78
  $wc_order_export = new WC_Order_Export_Admin();
79
  register_activation_hook( __FILE__, array($wc_order_export,'install') );
80
- register_deactivation_hook( __FILE__, array($wc_order_export,'uninstall') );
 
81
 
82
  // fight with ugly themes which add empty lines
83
- if ( $wc_order_export->must_run_ajax_methods() AND !ob_get_level() )
84
  ob_start();
85
- //Done
 
1
  <?php
2
  /**
3
  * Plugin Name: Advanced Order Export For WooCommerce
4
+ * Plugin URI:
5
+ * Description: Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)
6
  * Author: AlgolPlus
7
  * Author URI: https://algolplus.com/
8
+ * Version: 1.5.4
9
  * Text Domain: woo-order-export-lite
10
  * Domain Path: /i18n/languages/
11
  * WC requires at least: 2.6.0
12
+ * WC tested up to: 3.4.0
13
  *
14
  * Copyright: (c) 2015 AlgolPlus LLC. (algol.plus@gmail.com)
15
  *
25
  if ( !defined( 'ABSPATH' ) )
26
  exit; // Exit if accessed directly
27
 
28
+ if ( !defined( 'WOE_IPN_URL_OPTION_KEY') )
29
+ define( 'WOE_IPN_URL_OPTION_KEY', 'woe_ipn_url_key' );
30
+
31
  // a small function to check startup conditions
32
  if( ! function_exists("woe_check_running_options") ) {
33
  function woe_check_running_options() {
34
+
35
  $is_backend = is_admin();
36
  $is_cron = defined( 'DOING_CRON' );
37
  $is_frontend_checkout = isset( $_REQUEST['wc-ajax'] ) && $_REQUEST['wc-ajax'] === 'checkout'
38
  || isset( $_POST['woocommerce_checkout_place_order'] )
39
+ || preg_match( '/\bwc\-api\b/', filter_input( INPUT_SERVER, 'REQUEST_URI' )) // WC_API
40
+ || preg_match( '/\bwc\/v\d+\b/', filter_input( INPUT_SERVER, 'REQUEST_URI' )); // Rest API
41
+
42
+ $ipn_url = get_option( WOE_IPN_URL_OPTION_KEY );
43
+ $is_ipn = ( $ipn_url AND stripos( $_SERVER['REQUEST_URI'], $ipn_url ) );
44
 
45
+ return $is_backend || $is_cron || $is_frontend_checkout || $is_ipn;
46
  }
47
  }
48
 
49
  if ( ! woe_check_running_options() ) {
50
  return;
51
  } //don't load for frontend !
 
 
 
 
 
 
 
 
 
52
 
53
  //Stop if another version is active!
54
  if( class_exists( 'WC_Order_Export_Admin' ) ) {
56
  function woe_warn_free_admin() {
57
  ?>
58
  <div class="notice notice-warning is-dismissible">
59
+ <p><?php _e( 'Please, <a href="plugins.php">deactivate</a> Free version of Advanced Order Export For WooCommerce!', 'woo-order-export-lite' ); ?></p>
60
  </div>
61
  <?php
62
  }
63
  }
64
  add_action('admin_notices', 'woe_warn_free_admin');
65
+ return;
66
+ }
67
+
68
 
69
  include 'classes/class-wc-order-export-admin.php';
70
  include 'classes/admin/class-wc-order-export-ajax.php';
73
  include 'classes/core/class-wc-order-export-data-extractor.php';
74
  include 'classes/core/class-wc-order-export-data-extractor-ui.php';
75
 
76
+ define( 'WOE_VERSION', '1.5.4' );
77
  define( 'WOE_PLUGIN_BASENAME', plugin_basename(__FILE__) );
78
+ define( 'WOE_PLUGIN_BASEPATH', dirname(__FILE__) );
79
  $wc_order_export = new WC_Order_Export_Admin();
80
  register_activation_hook( __FILE__, array($wc_order_export,'install') );
81
+ register_deactivation_hook( __FILE__, array($wc_order_export,'deactivate') );
82
+ register_uninstall_hook( __FILE__, array('WC_Order_Export_Admin','uninstall') );
83
 
84
  // fight with ugly themes which add empty lines
85
+ if ( $wc_order_export->must_run_ajax_methods() AND !ob_get_level() ) {
86
  ob_start();
87
+ }
88
+ //Done