Advanced Order Export For WooCommerce - Version 3.3.0

Version Description

  • 2022-05-18 =
  • Allow to sort by any field, for XLS/PDF formats only
  • Output summary row, for XLS/PDF formats only
  • Added fields "Phone (Shipping)", "Currency Symbol", "Subscription Relationship"
  • Added fields "Qty-Refund","Amount-Refund", "Total Amount (inc. tax)" for "Summary report by products"
  • Fixed bug - added workaround for last versions of PHP 8.0 and 8.1, they have bug for ob_clean()
  • Fixed bug - option "Remove emojis" damaged last product in export
  • Fixed bug - field type "Link" ignored for XLS format
  • Fixed bug - long text (for some languages) breaks layout for section Setup Fields
  • Fixed bug - can't correctly export custom attribute if it was unused in variations
  • Fixed bug - wrong fee amount exported , in rare cases
  • Fixed bug - incorrect export for mode "Add products as XX columns", rare case too
  • Fixed bug - page was not loaded if website has 10,000+ coupons
Download this release

Release Info

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

Code changes from version 3.2.2 to 3.3.0

assets/css/export.css CHANGED
@@ -1,5 +1,4 @@
1
  #fields, #unselected_fields {
2
- height: 800px;
3
  /*overflow: scroll;*/
4
  padding: 20px;
5
  border-color: rgb(187, 180, 180);
@@ -922,3 +921,28 @@ input[type=number] {
922
  }
923
  }
924
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  #fields, #unselected_fields {
 
2
  /*overflow: scroll;*/
3
  padding: 20px;
4
  border-color: rgb(187, 180, 180);
921
  }
922
  }
923
 
924
+ .mapping_row-sum_field_block .mapping_row-sum_field {
925
+ color: grey;
926
+ text-decoration: none;
927
+ }
928
+
929
+ .mapping_row-sum_field_block .mapping_row-sum_field.active {
930
+ color: red;
931
+ text-decoration: none;
932
+ }
933
+
934
+ #order_fields .mapping_row .mapping_row-sum_field_block {
935
+ position: absolute;
936
+ top: 0px;
937
+ right: 75px;
938
+ font-size: 16px;
939
+ }
940
+
941
+ #order_fields .mapping_row .mapping_row-sum_field_block input {
942
+ display: none;
943
+ }
944
+
945
+ #fields .summary-row-title {
946
+ margin-bottom: 10px;
947
+ }
948
+
assets/js/buttons.js CHANGED
@@ -393,9 +393,15 @@ jQuery( document ).ready( function ( $ ) {
393
  data = data + "&action=order_exporter&method=save_settings&mode=" + mode + "&id=" + job_id + '&woe_nonce=' + settings_form.woe_nonce + '&tab=' + settings_form.woe_active_tab;
394
 
395
  $( '#Settings_updated' ).hide();
 
396
 
397
  $.post( ajaxurl, data, function ( response ) {
398
- $( '#Settings_updated' ).show().delay( 5000 ).fadeOut();
 
 
 
 
 
399
  }, "json" );
400
 
401
  return false;
@@ -416,7 +422,12 @@ jQuery( document ).ready( function ( $ ) {
416
  data = data + "&action=order_exporter&method=save_settings&mode=" + mode + "&id=" + job_id + '&woe_nonce=' + settings_form.woe_nonce + '&tab=' + settings_form.woe_active_tab;
417
 
418
  $.post( ajaxurl, data, function ( response ) {
 
 
 
 
419
  document.location = settings_form.save_settings_url;
 
420
  }, "json" );
421
 
422
  return false;
393
  data = data + "&action=order_exporter&method=save_settings&mode=" + mode + "&id=" + job_id + '&woe_nonce=' + settings_form.woe_nonce + '&tab=' + settings_form.woe_active_tab;
394
 
395
  $( '#Settings_updated' ).hide();
396
+ $( '#Settings_error' ).hide();
397
 
398
  $.post( ajaxurl, data, function ( response ) {
399
+ if (response.error) {
400
+ $( '#Settings_error' ).html(response.error);
401
+ $( '#Settings_error' ).show().delay( 5000 ).fadeOut();
402
+ } else {
403
+ $( '#Settings_updated' ).show().delay( 5000 ).fadeOut();
404
+ }
405
  }, "json" );
406
 
407
  return false;
422
  data = data + "&action=order_exporter&method=save_settings&mode=" + mode + "&id=" + job_id + '&woe_nonce=' + settings_form.woe_nonce + '&tab=' + settings_form.woe_active_tab;
423
 
424
  $.post( ajaxurl, data, function ( response ) {
425
+ if (response.error) {
426
+ $( '#Settings_error' ).html(response.error);
427
+ $( '#Settings_error' ).show().delay( 5000 ).fadeOut();
428
+ } else {
429
  document.location = settings_form.save_settings_url;
430
+ }
431
  }, "json" );
432
 
433
  return false;
assets/js/export-fields.js CHANGED
@@ -10,6 +10,8 @@ function woe_create_selected_fields( old_output_format, format, format_changed )
10
  jQuery( "#fields .fields-control-block" ).addClass( 'hidden' );
11
  jQuery( "#order_fields" ).addClass( 'non_flat_height' );
12
 
 
 
13
  /*
14
  Clone elements for using in create_modal_fields ($old_format_order_fields) and
15
  before insert fields in 'order_fields' element ($old_format_modal_content) for
@@ -92,6 +94,15 @@ function woe_create_selected_fields( old_output_format, format, format_changed )
92
  var label_prefix = '';
93
  var index_api = index;
94
 
 
 
 
 
 
 
 
 
 
95
  if ( index.indexOf( 'static_field' ) >= 0 ) {
96
  value_part = '<div class="mapping_col_3"><input class="mapping_fieldname" type=input name="orders[][value]" value="' + value.value + '"></div>';
97
  }
@@ -115,7 +126,7 @@ function woe_create_selected_fields( old_output_format, format, format_changed )
115
  <input type=hidden name="orders[][format]" value="' + value.format + '">\
116
  </div>\
117
  <div class="mapping_col_2" title="' + index_api + '">' + '<span class="field-prefix">' + label_prefix + '</span>' + value.label + label_part + '</div>\
118
- <div class="mapping_col_3"><input class="mapping_fieldname" type=input name="orders[][colname]" value="' + colname + '"></div> ' + value_part + delete_btn + '\
119
  </li>\
120
  ';
121
  }
@@ -126,6 +137,10 @@ function woe_create_selected_fields( old_output_format, format, format_changed )
126
 
127
  jQuery( "#order_fields" ).html( html );
128
 
 
 
 
 
129
  if ( ! jQuery( "#fields .fields-control-block" ).html() ) {
130
  fields_control_block_elements.forEach( function ( currentValue ) {
131
  jQuery( "#fields .fields-control-block" ).append( currentValue );
@@ -141,8 +156,8 @@ function woe_create_selected_fields( old_output_format, format, format_changed )
141
  woe_add_bind_for_custom_fields( 'product_items', output_format, jQuery( "#order_fields" ) );
142
  woe_add_bind_for_custom_fields( 'coupons', output_format, jQuery( "#order_fields" ) );
143
 
144
- jQuery( "#sortable_products" ).sortable();
145
- jQuery( "#sortable_coupons" ).sortable();
146
 
147
  woe_check_sortable_groups();
148
 
@@ -178,6 +193,12 @@ function woe_create_group_fields( format, index_p, format_changed ) {
178
  var label_part = '';
179
  var delete_btn = '<div class="mapping_col_3 mapping_row-delete_field_block"><a href="#" class="mapping_row-delete_field"><span class="dashicons dashicons-trash"></span></a></div>';
180
 
 
 
 
 
 
 
181
  if ( index.indexOf( 'static_field' ) >= 0 ) {
182
  value_part = '<div class="mapping_col_3"><input class="mapping_fieldname" type=input name="' + index_p + '[][value]" value="' + value.value + '"></div>';
183
  }
@@ -190,7 +211,7 @@ function woe_create_group_fields( format, index_p, format_changed ) {
190
  <input type=hidden name="' + index_p + '[][format]" value="' + value.format + '">\
191
  </div>\
192
  <div class="mapping_col_2" title="' + index + '">' + value.label + label_part + '</div>\
193
- <div class="mapping_col_3"><input class="mapping_fieldname" type=input name="' + index_p + '[][colname]" value="' + colname + '"></div> ' + value_part + delete_btn + '\
194
  </li>\
195
  ';
196
 
@@ -350,7 +371,7 @@ function woe_create_unselected_fields( old_output_format, format, format_changed
350
  }
351
 
352
  jQuery.each( window['all_fields'], function ( segment, fields ) {
353
-
354
  fields.forEach( function ( value ) {
355
 
356
  var $unselected_field_segment = jQuery( '#' + woe_sprintf( $unselected_segment_id, segment ) );
@@ -463,6 +484,12 @@ function woe_make_unselected_field( $index, $field_data, $format, $format_change
463
  }
464
  var delete_btn = '<div class="mapping_col_3 mapping_row-delete_field_block"><a href="#" class="mapping_row-delete_field"><span class="dashicons dashicons-trash"></span></a></div>';
465
 
 
 
 
 
 
 
466
  $mapping_col_2.append( '<span class="field-prefix">' + label_prefix + '</span>' + $field_data.label + label_part );
467
 
468
  if ( $index.charAt( 0 ) === '_' || $index.substr( 0, 3 ) === 'pa_' || ! $field_data.default || $index.indexOf( 'static_field' ) > - 1 ) {
@@ -476,6 +503,7 @@ function woe_make_unselected_field( $index, $field_data, $format, $format_change
476
  .append( $mapping_col_2 )
477
  .append( $mapping_col_3 )
478
  .append( value_part )
 
479
  .append( delete_btn );
480
 
481
  $field.find( 'input' ).prop( 'disabled', 'disabled' );
@@ -560,6 +588,7 @@ function woe_activate_draggable_field( el, segment, format ) {
560
  var field_key = moving_copy_original_el.find('input[name="orders[][key]"]').val();
561
  moving_copy_original_el.find('input[name="orders[][key]"]').val('orders__' + field_key);
562
  }
 
563
 
564
  if ( woe_is_flat_format( format ) || move_to_sortable_group || [
565
  'products',
@@ -893,6 +922,12 @@ function woe_add_custom_field( to, index_p, format, colname, value, segment, for
893
 
894
  var delete_btn = '<div class="mapping_col_3 mapping_row-delete_field_block"><a href="#" class="mapping_row-delete_field"><span class="dashicons dashicons-trash"></span></a></div>';
895
 
 
 
 
 
 
 
896
  // console.log( to, index_p, format, colname, value );
897
  var row = jQuery( '<li class="mapping_row segment_field segment_' + segment + '">\
898
  <div class="mapping_col_1" style="width: 10px">\
@@ -905,7 +940,7 @@ function woe_add_custom_field( to, index_p, format, colname, value, segment, for
905
  </div>\
906
  <div class="mapping_col_2" title="' + field_key + '">' + '<span class="field-prefix">' + label_prefix + '</span>' + colname + '<a href="#" onclick="return woe_remove_custom_field(this);" class="mapping_row-delete_custom_field" style="float: right;"><span class="ui-icon ui-icon-trash"></span></a></div>\
907
  <div class="mapping_col_3"><input class="mapping_fieldname" type=input name="' + _index_p + '[colname]" value="' + colname + '"></div>\
908
- <div class="mapping_col_3 custom-field-value"><input class="mapping_fieldname" type=input name="' + _index_p + '[value]" value="' + value + '"></div>' + delete_btn + '\
909
  </li>\
910
  ' );
911
 
@@ -969,6 +1004,12 @@ function woe_add_custom_meta( to, index_p, format, label, colname, segment, form
969
 
970
  var delete_btn = '<div class="mapping_col_3 mapping_row-delete_field_block"><a href="#" class="mapping_row-delete_field"><span class="dashicons dashicons-trash"></span></a></div>';
971
 
 
 
 
 
 
 
972
  var row = jQuery( '<li class="mapping_row segment_field segment_' + segment + '">\
973
  <div class="mapping_col_1" style="width: 10px">\
974
  <input class="mapping_fieldname" type=hidden name="' + _index_p + '[segment]" value="' + (
@@ -979,7 +1020,7 @@ function woe_add_custom_meta( to, index_p, format, label, colname, segment, form
979
  <input class="mapping_fieldname" type=hidden name="' + _index_p + '[format]" value="' + format_field + '">\
980
  </div>\
981
  <div class="mapping_col_2" title="' + label + '">' + '<span class="field-prefix">' + label_prefix + '</span>' + label + '<a href="#" onclick="return woe_remove_custom_field(this);" class="mapping_row-delete_custom_field" style="float: right;"><span class="ui-icon ui-icon-trash"></span></a></div>\
982
- <div class="mapping_col_3"><input class="mapping_fieldname" type=input name="' + _index_p + '[colname]" value="' + colname + '"></div>' + delete_btn + '\
983
  </li>\
984
  ' );
985
 
@@ -1039,6 +1080,41 @@ function woe_escape_str( str ) {
1039
  } );
1040
  }
1041
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1042
  jQuery( document ).ready( function ( $ ) {
1043
 
1044
  $( '#clear_selected_fields' ).click( function () {
@@ -1052,7 +1128,7 @@ jQuery( document ).ready( function ( $ ) {
1052
  $( '.segment_choice' ).click( function () {
1053
 
1054
  var segment = $( this ).data( 'segment' );
1055
-
1056
  $('.tab-actions-buttons').hide();
1057
 
1058
  if ($('.tab-actions-buttons.' + segment + '-actions-buttons').length) {
@@ -1102,8 +1178,8 @@ jQuery( document ).ready( function ( $ ) {
1102
 
1103
  setTimeout( function () {
1104
 
1105
- jQuery( "#sort_products" ).sortable()/*.disableSelection()*/;
1106
- jQuery( "#sort_coupons" ).sortable()/*.disableSelection()*/;
1107
 
1108
  jQuery( "#order_fields" ).sortable( {
1109
  scroll: true,
@@ -1111,6 +1187,7 @@ jQuery( document ).ready( function ( $ ) {
1111
  scrollSpeed: 100,
1112
  stop: function ( event, ui ) {
1113
  woe_moving_products_and_coupons_group_blocks_to_first_item( jQuery( '.output_format:checked' ).val() );
 
1114
  }
1115
  } );
1116
  }, 0);
@@ -1139,9 +1216,28 @@ jQuery( document ).ready( function ( $ ) {
1139
 
1140
  woe_check_sortable_groups();
1141
 
 
 
1142
  return false;
1143
  } );
1144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1145
  jQuery( '.tab-controls .tab-actions-buttons .add-meta' ).on( 'click', function () {
1146
 
1147
  jQuery( '.tab-actions-forms .segment-form' ).removeClass( 'active' );
@@ -1666,13 +1762,18 @@ jQuery( document ).ready( function ( $ ) {
1666
  }
1667
 
1668
  woe_check_sortable_groups();
 
 
1669
  } );
1670
 
 
 
1671
  jQuery( '#summary_report_by_products_checkbox' ).add('#summary_report_by_customers_checkbox').change( function( e ) {
1672
  if ( jQuery( '#summary_report_by_products_checkbox' ).is( ":checked" ) || jQuery( '#summary_report_by_customers_checkbox' ).is( ":checked" ) ) {
1673
  jQuery('#woe_common_tips').hide();
1674
  } else {
1675
  jQuery('#woe_common_tips').show();
 
1676
  }
1677
  } );
1678
 
@@ -1681,7 +1782,10 @@ jQuery( document ).ready( function ( $ ) {
1681
 
1682
  var summary_report_fields = [];
1683
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_qty"]' ).parents( 'li' ) );
 
1684
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_amount"]' ).parents( 'li' ) );
 
 
1685
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_weight"]' ).parents( 'li' ) );
1686
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_discount"]' ).parents( 'li' ) );
1687
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_refund_count"]' ).parents( 'li' ) );
@@ -1709,7 +1813,10 @@ jQuery( document ).ready( function ( $ ) {
1709
  if ( 'onstart' !== action ) {
1710
  // purge summary report fields before insert
1711
  $( '#order_fields input[value="plain_products_summary_report_total_qty"]' ).closest( '.mapping_row' ).remove();
 
1712
  $( '#order_fields input[value="plain_products_summary_report_total_amount"]' ).closest( '.mapping_row' ).remove();
 
 
1713
  $( '#order_fields input[value="plain_products_summary_report_total_weight"]' ).closest( '.mapping_row' ).remove();
1714
  $( '#order_fields input[value="plain_products_summary_report_total_discount"]' ).closest( '.mapping_row' ).remove();
1715
  $( '#order_fields input[value="plain_products_summary_report_total_refund_count"]' ).closest( '.mapping_row' ).remove();
@@ -1727,6 +1834,9 @@ jQuery( document ).ready( function ( $ ) {
1727
 
1728
  jQuery( '#manage_fields #order_fields' ).append( $field_to_copy );
1729
  } );
 
 
 
1730
  }
1731
 
1732
  } else {
@@ -1746,7 +1856,10 @@ jQuery( document ).ready( function ( $ ) {
1746
 
1747
  // purge summary report fields
1748
  $( '#order_fields input[value="plain_products_summary_report_total_qty"]' ).closest( '.mapping_row' ).remove();
 
1749
  $( '#order_fields input[value="plain_products_summary_report_total_amount"]' ).closest( '.mapping_row' ).remove();
 
 
1750
  $( '#order_fields input[value="plain_products_summary_report_total_weight"]' ).closest( '.mapping_row' ).remove();
1751
  $( '#order_fields input[value="plain_products_summary_report_total_discount"]' ).closest( '.mapping_row' ).remove();
1752
  $( '#order_fields input[value="plain_products_summary_report_total_refund_count"]' ).closest( '.mapping_row' ).remove();
@@ -1755,6 +1868,14 @@ jQuery( document ).ready( function ( $ ) {
1755
  jQuery.each( summary_report_fields, function ( i, value ) {
1756
  $( value ).hide();
1757
  } );
 
 
 
 
 
 
 
 
1758
  }
1759
 
1760
  $( '#unselected_fields .segment_choice[data-segment="' + segment + '"]' ).addClass( 'active' );
@@ -1818,6 +1939,9 @@ jQuery( document ).ready( function ( $ ) {
1818
 
1819
  jQuery( '#manage_fields #order_fields' ).append( $field_to_copy );
1820
  } );
 
 
 
1821
  }
1822
 
1823
  $( '#unselected_fields .segment_choice[data-segment="' + segment + '"]' ).addClass( 'active' );
@@ -1843,6 +1967,14 @@ jQuery( document ).ready( function ( $ ) {
1843
  jQuery.each( summary_report_fields, function ( i, value ) {
1844
  $( value ).hide();
1845
  } );
 
 
 
 
 
 
 
 
1846
  }
1847
 
1848
  $( '#unselected_fields .segment_choice[data-segment="' + segment + '"]' ).addClass( 'active' );
@@ -1858,4 +1990,4 @@ jQuery( document ).ready( function ( $ ) {
1858
  jQuery( "#summary_report_by_customers_checkbox" ).trigger( 'change', 'onstart' );
1859
  }, 1 )
1860
 
1861
- } );
10
  jQuery( "#fields .fields-control-block" ).addClass( 'hidden' );
11
  jQuery( "#order_fields" ).addClass( 'non_flat_height' );
12
 
13
+ jQuery('.summary-row-title').addClass('hide');
14
+
15
  /*
16
  Clone elements for using in create_modal_fields ($old_format_order_fields) and
17
  before insert fields in 'order_fields' element ($old_format_modal_content) for
94
  var label_prefix = '';
95
  var index_api = index;
96
 
97
+ if (['money', 'number'].indexOf(value.format) > -1 && ['XLS', 'PDF'].indexOf(format) > -1) {
98
+ var sum_btn = '<div class="mapping_col_3 mapping_row-sum_field_block"><a href="" class="mapping_row-sum_field '+ (typeof value.sum !== 'undefined' && +value.sum ? 'active' : '') +'"><span><label title="'+localize_settings_form.sum_symbol_tooltip+'"><input type="checkbox" name="orders[][sum]" value="1" '+ (typeof value.sum !== 'undefined' && +value.sum ? 'checked' : '') +'>Σ</label></span></a></div>';
99
+ if (typeof value.sum !== 'undefined' && +value.sum) {
100
+ jQuery('.summary-row-title').removeClass('hide');
101
+ }
102
+ } else {
103
+ var sum_btn = '';
104
+ }
105
+
106
  if ( index.indexOf( 'static_field' ) >= 0 ) {
107
  value_part = '<div class="mapping_col_3"><input class="mapping_fieldname" type=input name="orders[][value]" value="' + value.value + '"></div>';
108
  }
126
  <input type=hidden name="orders[][format]" value="' + value.format + '">\
127
  </div>\
128
  <div class="mapping_col_2" title="' + index_api + '">' + '<span class="field-prefix">' + label_prefix + '</span>' + value.label + label_part + '</div>\
129
+ <div class="mapping_col_3"><input class="mapping_fieldname" type=input name="orders[][colname]" value="' + colname + '"></div> ' + value_part + sum_btn + delete_btn + '\
130
  </li>\
131
  ';
132
  }
137
 
138
  jQuery( "#order_fields" ).html( html );
139
 
140
+ if(jQuery('#summary_report_by_products_checkbox').is(":checked")){
141
+ jQuery('#order_fields').find('.mapping_col_3.mapping_row-sum_field_block').hide();
142
+ }
143
+
144
  if ( ! jQuery( "#fields .fields-control-block" ).html() ) {
145
  fields_control_block_elements.forEach( function ( currentValue ) {
146
  jQuery( "#fields .fields-control-block" ).append( currentValue );
156
  woe_add_bind_for_custom_fields( 'product_items', output_format, jQuery( "#order_fields" ) );
157
  woe_add_bind_for_custom_fields( 'coupons', output_format, jQuery( "#order_fields" ) );
158
 
159
+ jQuery( "#sortable_products" ).sortable({stop: function ( event, ui ) { woe_add_setup_fields_to_sort(); }});
160
+ jQuery( "#sortable_coupons" ).sortable({stop: function ( event, ui ) { woe_add_setup_fields_to_sort(); }});
161
 
162
  woe_check_sortable_groups();
163
 
193
  var label_part = '';
194
  var delete_btn = '<div class="mapping_col_3 mapping_row-delete_field_block"><a href="#" class="mapping_row-delete_field"><span class="dashicons dashicons-trash"></span></a></div>';
195
 
196
+ if (['money', 'number'].indexOf(value.format) > -1) {
197
+ var sum_btn = '<div class="mapping_col_3 mapping_row-sum_field_block"><a href="" class="mapping_row-sum_field"><span><label title="'+localize_settings_form.sum_symbol_tooltip+'"><input type="checkbox" name="'+ index_p +'[][sum]" value="1">Σ</label></span></a></div>';
198
+ } else {
199
+ var sum_btn = '';
200
+ }
201
+
202
  if ( index.indexOf( 'static_field' ) >= 0 ) {
203
  value_part = '<div class="mapping_col_3"><input class="mapping_fieldname" type=input name="' + index_p + '[][value]" value="' + value.value + '"></div>';
204
  }
211
  <input type=hidden name="' + index_p + '[][format]" value="' + value.format + '">\
212
  </div>\
213
  <div class="mapping_col_2" title="' + index + '">' + value.label + label_part + '</div>\
214
+ <div class="mapping_col_3"><input class="mapping_fieldname" type=input name="' + index_p + '[][colname]" value="' + colname + '"></div> ' + value_part + sum_btn + delete_btn + '\
215
  </li>\
216
  ';
217
 
371
  }
372
 
373
  jQuery.each( window['all_fields'], function ( segment, fields ) {
374
+
375
  fields.forEach( function ( value ) {
376
 
377
  var $unselected_field_segment = jQuery( '#' + woe_sprintf( $unselected_segment_id, segment ) );
484
  }
485
  var delete_btn = '<div class="mapping_col_3 mapping_row-delete_field_block"><a href="#" class="mapping_row-delete_field"><span class="dashicons dashicons-trash"></span></a></div>';
486
 
487
+ if (['money', 'number'].indexOf($field_data.format) > -1) {
488
+ var sum_btn = '<div class="mapping_col_3 mapping_row-sum_field_block"><a href="" class="mapping_row-sum_field"><span><label title="'+localize_settings_form.sum_symbol_tooltip+'"><input type="checkbox" name="'+ (! woe_is_flat_format( $format ) && ['products', 'coupons'].indexOf( $segment ) > - 1 ? $segment : 'orders') + '[][sum]" value="1">Σ</label></span></a></div>';
489
+ } else {
490
+ var sum_btn = '';
491
+ }
492
+
493
  $mapping_col_2.append( '<span class="field-prefix">' + label_prefix + '</span>' + $field_data.label + label_part );
494
 
495
  if ( $index.charAt( 0 ) === '_' || $index.substr( 0, 3 ) === 'pa_' || ! $field_data.default || $index.indexOf( 'static_field' ) > - 1 ) {
503
  .append( $mapping_col_2 )
504
  .append( $mapping_col_3 )
505
  .append( value_part )
506
+ .append( sum_btn )
507
  .append( delete_btn );
508
 
509
  $field.find( 'input' ).prop( 'disabled', 'disabled' );
588
  var field_key = moving_copy_original_el.find('input[name="orders[][key]"]').val();
589
  moving_copy_original_el.find('input[name="orders[][key]"]').val('orders__' + field_key);
590
  }
591
+ woe_add_setup_fields_to_sort();
592
 
593
  if ( woe_is_flat_format( format ) || move_to_sortable_group || [
594
  'products',
922
 
923
  var delete_btn = '<div class="mapping_col_3 mapping_row-delete_field_block"><a href="#" class="mapping_row-delete_field"><span class="dashicons dashicons-trash"></span></a></div>';
924
 
925
+ if (['money', 'number'].indexOf(format_field) > -1) {
926
+ var sum_btn = '<div class="mapping_col_3 mapping_row-sum_field_block"><a href="" class="mapping_row-sum_field"><span><label title="'+localize_settings_form.sum_symbol_tooltip+'"><input type="checkbox" name="'+ _index_p +'[sum]" value="1">Σ</label></span></a></div>';
927
+ } else {
928
+ var sum_btn = '';
929
+ }
930
+
931
  // console.log( to, index_p, format, colname, value );
932
  var row = jQuery( '<li class="mapping_row segment_field segment_' + segment + '">\
933
  <div class="mapping_col_1" style="width: 10px">\
940
  </div>\
941
  <div class="mapping_col_2" title="' + field_key + '">' + '<span class="field-prefix">' + label_prefix + '</span>' + colname + '<a href="#" onclick="return woe_remove_custom_field(this);" class="mapping_row-delete_custom_field" style="float: right;"><span class="ui-icon ui-icon-trash"></span></a></div>\
942
  <div class="mapping_col_3"><input class="mapping_fieldname" type=input name="' + _index_p + '[colname]" value="' + colname + '"></div>\
943
+ <div class="mapping_col_3 custom-field-value"><input class="mapping_fieldname" type=input name="' + _index_p + '[value]" value="' + value + '"></div>' + sum_btn + delete_btn + '\
944
  </li>\
945
  ' );
946
 
1004
 
1005
  var delete_btn = '<div class="mapping_col_3 mapping_row-delete_field_block"><a href="#" class="mapping_row-delete_field"><span class="dashicons dashicons-trash"></span></a></div>';
1006
 
1007
+ if (['money', 'number'].indexOf(format_field) > -1) {
1008
+ var sum_btn = '<div class="mapping_col_3 mapping_row-sum_field_block"><a href="" class="mapping_row-sum_field"><span><label title="'+localize_settings_form.sum_symbol_tooltip+'"><input type="checkbox" name="'+ _index_p +'[][sum]" value="1">Σ</label></span></a></div>';
1009
+ } else {
1010
+ var sum_btn = '';
1011
+ }
1012
+
1013
  var row = jQuery( '<li class="mapping_row segment_field segment_' + segment + '">\
1014
  <div class="mapping_col_1" style="width: 10px">\
1015
  <input class="mapping_fieldname" type=hidden name="' + _index_p + '[segment]" value="' + (
1020
  <input class="mapping_fieldname" type=hidden name="' + _index_p + '[format]" value="' + format_field + '">\
1021
  </div>\
1022
  <div class="mapping_col_2" title="' + label + '">' + '<span class="field-prefix">' + label_prefix + '</span>' + label + '<a href="#" onclick="return woe_remove_custom_field(this);" class="mapping_row-delete_custom_field" style="float: right;"><span class="ui-icon ui-icon-trash"></span></a></div>\
1023
+ <div class="mapping_col_3"><input class="mapping_fieldname" type=input name="' + _index_p + '[colname]" value="' + colname + '"></div>' + sum_btn + delete_btn + '\
1024
  </li>\
1025
  ' );
1026
 
1080
  } );
1081
  }
1082
 
1083
+ function woe_check_setup_fields_to_sort() {
1084
+ if (['XLS', 'PDF'].indexOf(output_format) > -1) {
1085
+ jQuery('select[name="settings[sort]"] option[value^="setup_field_"]').show();
1086
+ } else {
1087
+ jQuery('select[name="settings[sort]"] option[value^="setup_field_"]').hide();
1088
+ }
1089
+
1090
+ if ( jQuery( 'select[name="settings[sort]"] option[value="'+ jQuery( 'select[name="settings[sort]"]').val() +'"]').css('display') == 'none') {
1091
+ jQuery( 'select[name="settings[sort]"]').val(jQuery( 'select[name="settings[sort]"] option').first().attr('value'));
1092
+ }
1093
+ }
1094
+
1095
+ function woe_add_setup_fields_to_sort() {
1096
+
1097
+ var value = jQuery( 'select[name="settings[sort]"]').val();
1098
+
1099
+ jQuery( 'select[name="settings[sort]"] option[value*="setup_field_"]').remove();
1100
+
1101
+ var options = '';
1102
+
1103
+ jQuery('#order_fields .mapping_col_1').each(function () {
1104
+ var label = jQuery(this).find('input[name*="[label]"]').val();
1105
+ if (jQuery(this).find('input[name*="[key]"]').val() !== 'products' && jQuery(this).find('input[name*="[key]"]').val() !== 'coupons' && !jQuery( 'select[name="settings[sort]"] option').filter(function () { return jQuery(this).html().toLowerCase() === label.toLowerCase(); }).length) {
1106
+ options += '<option value="setup_field_'+ jQuery(this).find('input[name*="[format]"]').val() +'_' + jQuery(this).find('input[name*="[key]"]').val() +'">'+ jQuery(this).find('input[name*="[label]"]').val() +'</option>';
1107
+ }
1108
+ });
1109
+
1110
+ jQuery( 'select[name="settings[sort]"] option[value="post_status"]' ).after(options);
1111
+ woe_check_setup_fields_to_sort();
1112
+
1113
+ if (['XLS', 'PDF'].indexOf(output_format) > -1 && value.indexOf('setup_field_') > -1) {
1114
+ jQuery( 'select[name="settings[sort]"]').val(value);
1115
+ }
1116
+ }
1117
+
1118
  jQuery( document ).ready( function ( $ ) {
1119
 
1120
  $( '#clear_selected_fields' ).click( function () {
1128
  $( '.segment_choice' ).click( function () {
1129
 
1130
  var segment = $( this ).data( 'segment' );
1131
+
1132
  $('.tab-actions-buttons').hide();
1133
 
1134
  if ($('.tab-actions-buttons.' + segment + '-actions-buttons').length) {
1178
 
1179
  setTimeout( function () {
1180
 
1181
+ jQuery( "#sort_products" ).sortable({stop: function ( event, ui ) { woe_add_setup_fields_to_sort(); }})/*.disableSelection()*/;
1182
+ jQuery( "#sort_coupons" ).sortable({stop: function ( event, ui ) { woe_add_setup_fields_to_sort(); }})/*.disableSelection()*/;
1183
 
1184
  jQuery( "#order_fields" ).sortable( {
1185
  scroll: true,
1187
  scrollSpeed: 100,
1188
  stop: function ( event, ui ) {
1189
  woe_moving_products_and_coupons_group_blocks_to_first_item( jQuery( '.output_format:checked' ).val() );
1190
+ woe_add_setup_fields_to_sort();
1191
  }
1192
  } );
1193
  }, 0);
1216
 
1217
  woe_check_sortable_groups();
1218
 
1219
+ woe_add_setup_fields_to_sort();
1220
+
1221
  return false;
1222
  } );
1223
 
1224
+ jQuery( '#order_fields' ).on( 'click', '.mapping_row-sum_field', function (e) {
1225
+ if ($( this ).find( 'input' ).prop('checked')) {
1226
+ $( this ).addClass('active');
1227
+ } else {
1228
+ $( this ).removeClass('active');
1229
+ }
1230
+ if (jQuery('.mapping_row-sum_field input:checked').length) {
1231
+ jQuery('.summary-row-title').removeClass('hide');
1232
+ } else {
1233
+ jQuery('.summary-row-title').addClass('hide');
1234
+ }
1235
+ } );
1236
+
1237
+ jQuery( '#order_fields' ).on( 'change', '.mapping_fieldname', function () {
1238
+ woe_add_setup_fields_to_sort();
1239
+ } );
1240
+
1241
  jQuery( '.tab-controls .tab-actions-buttons .add-meta' ).on( 'click', function () {
1242
 
1243
  jQuery( '.tab-actions-forms .segment-form' ).removeClass( 'active' );
1762
  }
1763
 
1764
  woe_check_sortable_groups();
1765
+
1766
+ woe_check_setup_fields_to_sort();
1767
  } );
1768
 
1769
+ woe_check_setup_fields_to_sort();
1770
+
1771
  jQuery( '#summary_report_by_products_checkbox' ).add('#summary_report_by_customers_checkbox').change( function( e ) {
1772
  if ( jQuery( '#summary_report_by_products_checkbox' ).is( ":checked" ) || jQuery( '#summary_report_by_customers_checkbox' ).is( ":checked" ) ) {
1773
  jQuery('#woe_common_tips').hide();
1774
  } else {
1775
  jQuery('#woe_common_tips').show();
1776
+ jQuery('#order_fields').find('.mapping_col_3.mapping_row-sum_field_block').show();
1777
  }
1778
  } );
1779
 
1782
 
1783
  var summary_report_fields = [];
1784
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_qty"]' ).parents( 'li' ) );
1785
+ summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_qty_minus_refund"]' ).parents( 'li' ) );
1786
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_amount"]' ).parents( 'li' ) );
1787
+ summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_amount_minus_refund"]' ).parents( 'li' ) );
1788
+ summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_amount_inc_tax"]' ).parents( 'li' ) );
1789
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_weight"]' ).parents( 'li' ) );
1790
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_discount"]' ).parents( 'li' ) );
1791
  summary_report_fields.push( $( '#products_unselected_segment input[value="plain_products_summary_report_total_refund_count"]' ).parents( 'li' ) );
1813
  if ( 'onstart' !== action ) {
1814
  // purge summary report fields before insert
1815
  $( '#order_fields input[value="plain_products_summary_report_total_qty"]' ).closest( '.mapping_row' ).remove();
1816
+ $( '#order_fields input[value="plain_products_summary_report_total_qty_minus_refund"]' ).closest( '.mapping_row' ).remove();
1817
  $( '#order_fields input[value="plain_products_summary_report_total_amount"]' ).closest( '.mapping_row' ).remove();
1818
+ $( '#order_fields input[value="plain_products_summary_report_total_amount_minus_refund"]' ).closest( '.mapping_row' ).remove();
1819
+ $( '#order_fields input[value="plain_products_summary_report_total_amount_inc_tax"]' ).closest( '.mapping_row' ).remove();
1820
  $( '#order_fields input[value="plain_products_summary_report_total_weight"]' ).closest( '.mapping_row' ).remove();
1821
  $( '#order_fields input[value="plain_products_summary_report_total_discount"]' ).closest( '.mapping_row' ).remove();
1822
  $( '#order_fields input[value="plain_products_summary_report_total_refund_count"]' ).closest( '.mapping_row' ).remove();
1834
 
1835
  jQuery( '#manage_fields #order_fields' ).append( $field_to_copy );
1836
  } );
1837
+
1838
+ jQuery('.mapping_row-sum_field').addClass('hide');
1839
+ jQuery('.summary-row-title').addClass('hide');
1840
  }
1841
 
1842
  } else {
1856
 
1857
  // purge summary report fields
1858
  $( '#order_fields input[value="plain_products_summary_report_total_qty"]' ).closest( '.mapping_row' ).remove();
1859
+ $( '#order_fields input[value="plain_products_summary_report_total_qty_minus_refund"]' ).closest( '.mapping_row' ).remove();
1860
  $( '#order_fields input[value="plain_products_summary_report_total_amount"]' ).closest( '.mapping_row' ).remove();
1861
+ $( '#order_fields input[value="plain_products_summary_report_total_amount_minus_refund"]' ).closest( '.mapping_row' ).remove();
1862
+ $( '#order_fields input[value="plain_products_summary_report_total_amount_inc_tax"]' ).closest( '.mapping_row' ).remove();
1863
  $( '#order_fields input[value="plain_products_summary_report_total_weight"]' ).closest( '.mapping_row' ).remove();
1864
  $( '#order_fields input[value="plain_products_summary_report_total_discount"]' ).closest( '.mapping_row' ).remove();
1865
  $( '#order_fields input[value="plain_products_summary_report_total_refund_count"]' ).closest( '.mapping_row' ).remove();
1868
  jQuery.each( summary_report_fields, function ( i, value ) {
1869
  $( value ).hide();
1870
  } );
1871
+
1872
+ jQuery('.mapping_row-sum_field').removeClass('hide');
1873
+
1874
+ if (jQuery('.mapping_row-sum_field input:checked').length) {
1875
+ jQuery('.summary-row-title').removeClass('hide');
1876
+ } else {
1877
+ jQuery('.summary-row-title').addClass('hide');
1878
+ }
1879
  }
1880
 
1881
  $( '#unselected_fields .segment_choice[data-segment="' + segment + '"]' ).addClass( 'active' );
1939
 
1940
  jQuery( '#manage_fields #order_fields' ).append( $field_to_copy );
1941
  } );
1942
+
1943
+ jQuery('.mapping_row-sum_field').addClass('hide');
1944
+ jQuery('.summary-row-title').addClass('hide');
1945
  }
1946
 
1947
  $( '#unselected_fields .segment_choice[data-segment="' + segment + '"]' ).addClass( 'active' );
1967
  jQuery.each( summary_report_fields, function ( i, value ) {
1968
  $( value ).hide();
1969
  } );
1970
+
1971
+ jQuery('.mapping_row-sum_field').removeClass('hide');
1972
+
1973
+ if (jQuery('.mapping_row-sum_field input:checked').length) {
1974
+ jQuery('.summary-row-title').removeClass('hide');
1975
+ } else {
1976
+ jQuery('.summary-row-title').addClass('hide');
1977
+ }
1978
  }
1979
 
1980
  $( '#unselected_fields .segment_choice[data-segment="' + segment + '"]' ).addClass( 'active' );
1990
  jQuery( "#summary_report_by_customers_checkbox" ).trigger( 'change', 'onstart' );
1991
  }, 1 )
1992
 
1993
+ } );
classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax.php CHANGED
@@ -18,10 +18,14 @@ trait WC_Order_Export_Admin_Tab_Abstract_Ajax {
18
  }
19
  });
20
  */
21
-
22
- $id = WC_Order_Export_Manage::save_export_settings( $_POST['mode'], (int) $_POST['id'], $settings );
23
-
24
- echo json_encode( array( 'id' => $id ) );
 
 
 
 
25
  }
26
 
27
  public function ajax_reset_profile() {
18
  }
19
  });
20
  */
21
+ $error = '';
22
+ try {
23
+ $id = WC_Order_Export_Manage::save_export_settings( $_POST['mode'], (int) $_POST['id'], $settings );
24
+ } catch (Exception $ex) {
25
+ $error = $ex->getMessage();
26
+ }
27
+
28
+ echo json_encode( $error ? array('error' => $error) : array( 'id' => $id ) );
29
  }
30
 
31
  public function ajax_reset_profile() {
classes/class-wc-order-export-admin.php CHANGED
@@ -311,7 +311,7 @@ class WC_Order_Export_Admin {
311
  ),
312
  'remove_all_fields_confirm' => __( 'Remove all fields?', 'woo-order-export-lite' ),
313
  'reset_profile_confirm' => __( 'This action will reset filters, settings and fields to default state. Are you sure?', 'woo-order-export-lite' ),
314
-
315
  );
316
  $settings = WC_Order_Export_Main_Settings::get_settings();
317
 
311
  ),
312
  'remove_all_fields_confirm' => __( 'Remove all fields?', 'woo-order-export-lite' ),
313
  'reset_profile_confirm' => __( 'This action will reset filters, settings and fields to default state. Are you sure?', 'woo-order-export-lite' ),
314
+ 'sum_symbol_tooltip' => esc_attr__( 'Show total amount for this column', 'woo-order-export-lite' ),
315
  );
316
  $settings = WC_Order_Export_Main_Settings::get_settings();
317
 
classes/core/class-wc-order-export-data-extractor-ui.php CHANGED
@@ -113,12 +113,27 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
113
 
114
  public static function get_all_coupon_custom_meta_fields() {
115
  global $wpdb;
 
116
 
117
- // WP internal table , skip hidden and attributes
118
- $fields = $wpdb->get_col( "SELECT DISTINCT meta_key FROM {$wpdb->postmeta} INNER JOIN {$wpdb->posts} ON {$wpdb->postmeta}.post_id = {$wpdb->posts}.ID
 
 
 
 
 
119
  WHERE post_type = 'shop_coupon'" );
120
- sort( $fields );
121
-
 
 
 
 
 
 
 
 
 
122
  return apply_filters( 'woe_get_all_coupon_custom_meta_fields', $fields );
123
  }
124
 
@@ -484,11 +499,26 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
484
  'checked' => 0,
485
  'format' => 'number',
486
  ),
 
 
 
 
 
487
  'summary_report_total_amount' => array(
488
  'label' => __( 'Summary Report Total Amount', 'woo-order-export-lite' ),
489
  'checked' => 0,
490
  'format' => 'money',
491
  ),
 
 
 
 
 
 
 
 
 
 
492
  'summary_report_total_weight' => array(
493
  'label' => __( 'Summary Report Total Weight', 'woo-order-export-lite' ),
494
  'checked' => 0,
@@ -594,7 +624,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
594
  }
595
 
596
  public static function get_order_fields_common() {
597
- return array(
598
  'line_number' => array(
599
  'label' => __( 'Line number', 'woo-order-export-lite' ),
600
  'checked' => 0,
@@ -640,6 +670,11 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
640
  'checked' => 0,
641
  'format' => 'string',
642
  ),
 
 
 
 
 
643
  'completed_date' => array(
644
  'label' => __( 'Completed Date', 'woo-order-export-lite' ),
645
  'checked' => 0,
@@ -671,6 +706,15 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
671
  'format' => 'link',
672
  ),
673
  );
 
 
 
 
 
 
 
 
 
674
  }
675
 
676
  public static function get_order_fields_user() {
@@ -955,6 +999,11 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
955
  'checked' => 0,
956
  'format' => 'string',
957
  ),
 
 
 
 
 
958
  );
959
  }
960
 
113
 
114
  public static function get_all_coupon_custom_meta_fields() {
115
  global $wpdb;
116
+ $transient_key = 'woe_get_all_coupon_custom_meta_fields_result';
117
 
118
+ $fields = get_transient( $transient_key );
119
+ if ( $fields === false ) {
120
+ $total_coupons = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = 'shop_coupon'" );
121
+ //small shop , take all orders
122
+ if ( $total_coupons < self::HUGE_SHOP_COUPONS ) {
123
+ // WP internal table , skip hidden and attributes
124
+ $fields = $wpdb->get_col( "SELECT DISTINCT meta_key FROM {$wpdb->postmeta} INNER JOIN {$wpdb->posts} ON {$wpdb->postmeta}.post_id = {$wpdb->posts}.ID
125
  WHERE post_type = 'shop_coupon'" );
126
+ } else { // we have a lot of orders, take last good orders, upto 1000
127
+ $limit = self::HUGE_SHOP_COUPONS;
128
+ $coupon_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'shop_coupon' ORDER BY post_date DESC LIMIT {$limit}" );
129
+ $coupon_ids[] = 0; // add fake zero
130
+ $coupon_ids = join( ",", $coupon_ids );
131
+ $fields = $wpdb->get_col( "SELECT DISTINCT meta_key FROM {$wpdb->postmeta} INNER JOIN {$wpdb->posts} ON {$wpdb->postmeta}.post_id = {$wpdb->posts}.ID
132
+ WHERE post_type = 'shop_coupon' AND post_id IN ($coupon_ids)" );
133
+ }
134
+ sort( $fields );
135
+ set_transient( $transient_key, $fields, 60 ); //valid for a minute
136
+ }
137
  return apply_filters( 'woe_get_all_coupon_custom_meta_fields', $fields );
138
  }
139
 
499
  'checked' => 0,
500
  'format' => 'number',
501
  ),
502
+ 'summary_report_total_qty_minus_refund' => array(
503
+ 'label' => __( 'Summary Report Total Quantity (-Refund)', 'woo-order-export-lite' ),
504
+ 'checked' => 0,
505
+ 'format' => 'number',
506
+ ),
507
  'summary_report_total_amount' => array(
508
  'label' => __( 'Summary Report Total Amount', 'woo-order-export-lite' ),
509
  'checked' => 0,
510
  'format' => 'money',
511
  ),
512
+ 'summary_report_total_amount_minus_refund' => array(
513
+ 'label' => __( 'Summary Report Total Amount (-Refund)', 'woo-order-export-lite' ),
514
+ 'checked' => 0,
515
+ 'format' => 'money',
516
+ ),
517
+ 'summary_report_total_amount_inc_tax' => array(
518
+ 'label' => __( 'Summary Report Total Amount (inc. tax)', 'woo-order-export-lite' ),
519
+ 'checked' => 0,
520
+ 'format' => 'money',
521
+ ),
522
  'summary_report_total_weight' => array(
523
  'label' => __( 'Summary Report Total Weight', 'woo-order-export-lite' ),
524
  'checked' => 0,
624
  }
625
 
626
  public static function get_order_fields_common() {
627
+ $keys = array(
628
  'line_number' => array(
629
  'label' => __( 'Line number', 'woo-order-export-lite' ),
630
  'checked' => 0,
670
  'checked' => 0,
671
  'format' => 'string',
672
  ),
673
+ 'order_currency_symbol' => array(
674
+ 'label' => __( 'Currency Symbol', 'woo-order-export-lite'),
675
+ 'checker' => 0,
676
+ 'format' => 'string',
677
+ ),
678
  'completed_date' => array(
679
  'label' => __( 'Completed Date', 'woo-order-export-lite' ),
680
  'checked' => 0,
706
  'format' => 'link',
707
  ),
708
  );
709
+ // support Subscription plugin in core!
710
+ if( function_exists("wcs_order_contains_subscription") ) {
711
+ $keys["subscription_relationship"] = array(
712
+ 'label' => __( 'Subscription Relationship', 'woo-order-export-lite' ),
713
+ 'checked' => 0,
714
+ 'format' => 'string',
715
+ );
716
+ }
717
+ return $keys;
718
  }
719
 
720
  public static function get_order_fields_user() {
999
  'checked' => 0,
1000
  'format' => 'string',
1001
  ),
1002
+ 'shipping_phone' => array(
1003
+ 'label' => __( 'Phone (Shipping)', 'woo-order-export-lite' ),
1004
+ 'checked' => 0,
1005
+ 'format' => 'string',
1006
+ )
1007
  );
1008
  }
1009
 
classes/core/class-wc-order-export-data-extractor.php CHANGED
@@ -23,6 +23,7 @@ class WC_Order_Export_Data_Extractor {
23
  const HUGE_SHOP_ORDERS = 1000;// more than 1000 orders
24
  const HUGE_SHOP_PRODUCTS = 1000;// more than 1000 products
25
  const HUGE_SHOP_CUSTOMERS = 1000;// more than 1000 users
 
26
 
27
  //Common
28
 
@@ -1335,6 +1336,16 @@ class WC_Order_Export_Data_Extractor {
1335
 
1336
  $from_date = sprintf( '%s %s', $year_start, '00:00:00' );
1337
  break;
 
 
 
 
 
 
 
 
 
 
1338
  case "custom":
1339
  $export_rule_custom = isset( $settings['export_rule_custom'] ) ? $settings['export_rule_custom'] : '';
1340
  if ( isset( $export_rule_custom ) AND $export_rule_custom ) {
23
  const HUGE_SHOP_ORDERS = 1000;// more than 1000 orders
24
  const HUGE_SHOP_PRODUCTS = 1000;// more than 1000 products
25
  const HUGE_SHOP_CUSTOMERS = 1000;// more than 1000 users
26
+ const HUGE_SHOP_COUPONS = 1000;// more than 1000 coupons
27
 
28
  //Common
29
 
1336
 
1337
  $from_date = sprintf( '%s %s', $year_start, '00:00:00' );
1338
  break;
1339
+ // =========== Modified By Hayato ==========
1340
+ case "last_year":
1341
+ $_date = date('Y-m-d',$_time);
1342
+ $last_year = strtotime($_date . " -1 year");
1343
+ $last_year_start = date('Y-01-01',$last_year);
1344
+ $last_year_end = date('Y-12-31',$last_year);
1345
+ $from_date = sprintf('%s %s',$last_year_start, '00:00:00');
1346
+ $to_date = sprintf('%s %s',$last_year_end, '23:59:59');
1347
+ break;
1348
+ // =========================================
1349
  case "custom":
1350
  $export_rule_custom = isset( $settings['export_rule_custom'] ) ? $settings['export_rule_custom'] : '';
1351
  if ( isset( $export_rule_custom ) AND $export_rule_custom ) {
classes/core/class-wc-order-export-engine.php CHANGED
@@ -49,11 +49,25 @@ class WC_Order_Export_Engine {
49
  return apply_filters( 'woe_make_filename', strtr( $mask, $subst ) );
50
  }
51
 
52
- public static function kill_buffers() {
53
- while ( ob_get_level() ) {
54
- ob_end_clean();
55
- }
56
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
 
58
  public static function tempnam( $folder, $prefix ) {
59
  $filename = @tempnam( $folder, $prefix );
@@ -315,7 +329,7 @@ class WC_Order_Export_Engine {
315
  }
316
 
317
  if ( $settings['cleanup_phone'] ) {
318
- foreach ( array( "billing_phone", "USER_billing_phone" ) as $field ) {
319
  add_filter( 'woe_get_order_value_' . $field, function ( $value, $order, $fieldname ) {
320
  $value = preg_replace( "#[^\d]+#", "", $value );
321
 
@@ -439,15 +453,24 @@ class WC_Order_Export_Engine {
439
 
440
  //get IDs
441
  $sql = WC_Order_Export_Data_Extractor::sql_get_order_ids( $settings );//backtrace
 
442
  $settings = self::replace_sort_field( $settings );
443
  if ( $make_mode == 'estimate' OR $make_mode =='estimate_preview' ) { //if estimate return total count
444
  return $wpdb->get_var( str_replace( 'ID AS order_id', 'COUNT(ID) AS order_count', $sql ) );
445
  } elseif ( $make_mode == 'preview' ) {
446
- $sql .= apply_filters( "woe_sql_get_order_ids_order_by",
 
 
 
 
447
  " ORDER BY " . $settings['sort'] . " " . $settings['sort_direction'] ) . " LIMIT " . ( $limit !== false ? $limit : 1 );
 
 
448
  } elseif ( $make_mode == 'partial' ) {
449
- $sql .= apply_filters( "woe_sql_get_order_ids_order_by",
450
- " ORDER BY " . $settings['sort'] . " " . $settings['sort_direction'] );
 
 
451
  $startat = ( $settings['mark_exported_orders'] && $settings['export_unmarked_orders'] ) ? 0 : intval( $offset );
452
  $limit = intval( $limit );
453
  $sql .= " LIMIT $startat,$limit";
49
  return apply_filters( 'woe_make_filename', strtr( $mask, $subst ) );
50
  }
51
 
52
+ /**
53
+ * ERR_CONTENT_DECODING_FAILED for export/preview only
54
+ *
55
+ * @see https://github.com/php/php-src/issues/8218#issuecomment-1096786045
56
+ *
57
+ * @return void
58
+ */
59
+ protected static function _ob_end_clean()
60
+ {
61
+ ob_end_clean();
62
+ header_remove("Content-Encoding");
63
+ }
64
+
65
+ public static function kill_buffers()
66
+ {
67
+ while (ob_get_level()) {
68
+ self::_ob_end_clean();
69
+ }
70
+ }
71
 
72
  public static function tempnam( $folder, $prefix ) {
73
  $filename = @tempnam( $folder, $prefix );
329
  }
330
 
331
  if ( $settings['cleanup_phone'] ) {
332
+ foreach ( array( "billing_phone", "USER_billing_phone", "shipping_phone", "USER_shipping_phone" ) as $field ) {
333
  add_filter( 'woe_get_order_value_' . $field, function ( $value, $order, $fieldname ) {
334
  $value = preg_replace( "#[^\d]+#", "", $value );
335
 
453
 
454
  //get IDs
455
  $sql = WC_Order_Export_Data_Extractor::sql_get_order_ids( $settings );//backtrace
456
+ $sort_field = $settings['sort'];
457
  $settings = self::replace_sort_field( $settings );
458
  if ( $make_mode == 'estimate' OR $make_mode =='estimate_preview' ) { //if estimate return total count
459
  return $wpdb->get_var( str_replace( 'ID AS order_id', 'COUNT(ID) AS order_count', $sql ) );
460
  } elseif ( $make_mode == 'preview' ) {
461
+ if (preg_match('/setup_field_/i', $sort_field)) {
462
+ $sql .= apply_filters( "woe_sql_get_order_ids_order_by",
463
+ " ORDER BY order_id DESC" ) . " LIMIT " . ( $limit !== false ? $limit : 1 );
464
+ } else {
465
+ $sql .= apply_filters( "woe_sql_get_order_ids_order_by",
466
  " ORDER BY " . $settings['sort'] . " " . $settings['sort_direction'] ) . " LIMIT " . ( $limit !== false ? $limit : 1 );
467
+ }
468
+
469
  } elseif ( $make_mode == 'partial' ) {
470
+ if (!preg_match('/setup_field_/i', $sort_field)) {
471
+ $sql .= apply_filters( "woe_sql_get_order_ids_order_by",
472
+ " ORDER BY " . $settings['sort'] . " " . $settings['sort_direction'] );
473
+ }
474
  $startat = ( $settings['mark_exported_orders'] && $settings['export_unmarked_orders'] ) ? 0 : intval( $offset );
475
  $limit = intval( $limit );
476
  $sql .= " LIMIT $startat,$limit";
classes/core/class-wc-order-export-order-fields.php CHANGED
@@ -163,7 +163,7 @@ class WC_Order_Export_Order_Fields {
163
  INNER JOIN
164
  {$wpdb->prefix}woocommerce_order_itemmeta itemmeta
165
  ON
166
- items.order_item_id = itemmeta.order_item_id AND itemmeta.meta_key = '_fee_amount'
167
  WHERE
168
  items.order_id = %s AND items.order_item_type = 'fee' AND items.order_item_name = %s",
169
  $this->order_id,
@@ -424,8 +424,21 @@ class WC_Order_Export_Order_Fields {
424
  get_edit_post_link($this->order_id),
425
  __( 'Edit order', 'woo-order-export-lite' )
426
  );
 
 
 
 
 
 
 
 
 
 
 
427
  } elseif ( $field == 'order_currency' ) {
428
  $row[$field] = $this->order->get_currency();
 
 
429
  } elseif( method_exists( $this->order, 'get_' . $field ) ) { // order_date...
430
  if ( $this->post->post_type == 'shop_order_refund' AND $this->parent_order )
431
  $row[$field] = $this->parent_order->{'get_' . $field}(); //use main order details for refund
163
  INNER JOIN
164
  {$wpdb->prefix}woocommerce_order_itemmeta itemmeta
165
  ON
166
+ items.order_item_id = itemmeta.order_item_id AND itemmeta.meta_key = '_line_total'
167
  WHERE
168
  items.order_id = %s AND items.order_item_type = 'fee' AND items.order_item_name = %s",
169
  $this->order_id,
424
  get_edit_post_link($this->order_id),
425
  __( 'Edit order', 'woo-order-export-lite' )
426
  );
427
+ } elseif ( $field == 'subscription_relationship' AND function_exists("wcs_order_contains_subscription")) {
428
+ //copied logic from class WC_Subscriptions_Order
429
+ if ( wcs_order_contains_subscription( $this->post->ID, 'renewal' ) ) {
430
+ $row[$field] = __( 'Renewal Order', 'woocommerce-subscriptions' );
431
+ } elseif ( wcs_order_contains_subscription( $this->post->ID, 'resubscribe' ) ) {
432
+ $row[$field] = __( 'Resubscribe Order', 'woocommerce-subscriptions' );
433
+ } elseif ( wcs_order_contains_subscription( $this->post->ID, 'parent' ) ) {
434
+ $row[$field] = __( 'Parent Order', 'woocommerce-subscriptions' );
435
+ } else {
436
+ $row[$field] = "";
437
+ }
438
  } elseif ( $field == 'order_currency' ) {
439
  $row[$field] = $this->order->get_currency();
440
+ } elseif( $field == 'order_currency_symbol' ){
441
+ $row[$field] = get_woocommerce_currency_symbol( $this->order->get_currency() );
442
  } elseif( method_exists( $this->order, 'get_' . $field ) ) { // order_date...
443
  if ( $this->post->post_type == 'shop_order_refund' AND $this->parent_order )
444
  $row[$field] = $this->parent_order->{'get_' . $field}(); //use main order details for refund
classes/core/class-wc-order-export-order-product-fields.php CHANGED
@@ -258,9 +258,12 @@ class WC_Order_Export_Order_Product_Fields {
258
  } elseif ( $field == 'non_variation_product_attributes' ) {
259
  $attributes = array();
260
  if ( $this->product ) {
261
- foreach ( $this->product->get_attributes() as $attribute ) {
 
 
262
  /** @var WC_Product_Attribute $attribute */
263
- if ( $attribute instanceof WC_Product_Attribute && ! $attribute->get_variation() ) {
 
264
  if ( $attribute->get_taxonomy() ) {
265
  $taxObject = $attribute->get_taxonomy_object();
266
  if ( isset( $taxObject, $taxObject->attribute_label ) ) {
@@ -276,7 +279,7 @@ class WC_Order_Export_Order_Product_Fields {
276
  }
277
  }
278
 
279
- $field_value = join( PHP_EOL, $attributes );
280
  } elseif ( isset( $this->static_vals[ $field ] ) ) {
281
  $field_value = $this->static_vals[ $field ];
282
  } elseif ( isset( $this->item_meta[ $field ] ) ) { //meta from order
258
  } elseif ( $field == 'non_variation_product_attributes' ) {
259
  $attributes = array();
260
  if ( $this->product ) {
261
+ //variation uses parent attributes
262
+ $product_attributes = $this->parent_product_id ? $this->product->parent->get_attributes() : $this->product->get_attributes();
263
+ foreach ($product_attributes as $attribute ) {
264
  /** @var WC_Product_Attribute $attribute */
265
+ // attribute is not marked"used fro varation" OR it's simple product
266
+ if ( $attribute instanceof WC_Product_Attribute && (! $attribute->get_variation() OR !$this->parent_product_id) ) {
267
  if ( $attribute->get_taxonomy() ) {
268
  $taxObject = $attribute->get_taxonomy_object();
269
  if ( isset( $taxObject, $taxObject->attribute_label ) ) {
279
  }
280
  }
281
 
282
+ $field_value = join( apply_filters( 'woe_fetch_item_meta_lines_delimiter', ' | ' ), $attributes );
283
  } elseif ( isset( $this->static_vals[ $field ] ) ) {
284
  $field_value = $this->static_vals[ $field ];
285
  } elseif ( isset( $this->item_meta[ $field ] ) ) { //meta from order
classes/formats/abstract-class-woe-formatter-plain-format.php CHANGED
@@ -43,6 +43,9 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
43
  if ( isset( $this->settings['add_utf8_bom'] ) && $this->settings['add_utf8_bom'] ) {
44
  $this->encoding = "UTF-8";
45
  }
 
 
 
46
  }
47
 
48
  // calculate max columns based on order items
@@ -63,6 +66,7 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
63
  }
64
  }
65
 
 
66
  public function output( $rec ) {
67
  //don't output orders in summary mode!
68
  if ( $this->summary_report_products AND ! $this->summary_processing ) {
@@ -155,6 +159,37 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
155
  return ( $new_rows );
156
  }
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
 
159
  protected function make_header( $data = '' ) {
160
  $header = array();
@@ -273,6 +308,7 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
273
  return apply_filters( 'woe_summary_products_headers', $header );
274
  }
275
 
 
276
  private function try_fill_summary_report_products_fields( $row ) {
277
  $order = false;
278
 
@@ -331,6 +367,10 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
331
  $_SESSION['woe_summary_products'][ $key ]['summary_report_total_qty'] += $product_item->get_quantity();
332
  }
333
 
 
 
 
 
334
  if ( isset( $_SESSION['woe_summary_products'][ $key ]['summary_report_total_weight'] ) AND $product ) { // only if product exists!
335
  $_SESSION['woe_summary_products'][ $key ]['summary_report_total_weight'] += $product_item->get_quantity() * (float)$product->get_weight();
336
  }
@@ -340,6 +380,13 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
340
  'get_total' ) ? $product_item->get_total() : $product_item['line_total'];
341
  $_SESSION['woe_summary_products'][ $key ]['summary_report_total_amount'] += wc_round_tax_total( $total );
342
  }
 
 
 
 
 
 
 
343
 
344
  if ( isset( $_SESSION['woe_summary_products'][ $key ]['summary_report_total_discount'] ) ) {
345
  $total = $product_item->get_subtotal() - $product_item->get_total();
@@ -451,6 +498,7 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
451
  return apply_filters( 'woe_summary_customers_headers', $header );
452
  }
453
 
 
454
  private function try_fill_summary_report_customers_fields( $row, $order_id ) {
455
 
456
  $order = new WC_Order( $order_id );
@@ -726,6 +774,10 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
726
  $storageData['summary_report_total_qty'] += $product_item->get_quantity();
727
  }
728
 
 
 
 
 
729
  if ( isset( $storageData['summary_report_total_weight'] ) AND $product ) { // only if product exists!
730
  $storageData['summary_report_total_weight'] += $product_item->get_quantity() * (float)$product->get_weight();
731
  }
@@ -735,6 +787,20 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
735
  'get_total' ) ? $product_item->get_total() : $product_item['line_total'];
736
  $storageData['summary_report_total_amount'] += wc_round_tax_total( $total );
737
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
738
 
739
  if ( isset( $storageData['summary_report_total_discount'] ) ) {
740
  $total = $product_item->get_subtotal() - $product_item->get_total();
@@ -888,7 +954,7 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
888
  $row = reset($rows);
889
  if ($this->summary_report_products) {
890
  $products_row = self::get_array_from_array($row, 'products');
891
- $product_row = reset($products_row);
892
  $product_labels = $this->labels['products']->get_labels();
893
  $row = array_filter($product_row, function($field_key) use ($product_labels) {
894
  foreach ( $product_labels as $label_data ) {
43
  if ( isset( $this->settings['add_utf8_bom'] ) && $this->settings['add_utf8_bom'] ) {
44
  $this->encoding = "UTF-8";
45
  }
46
+
47
+ if ( $this->mode == 'preview' )
48
+ $this->rows = array();
49
  }
50
 
51
  // calculate max columns based on order items
66
  }
67
  }
68
 
69
+ // XLS/PDF doesn't use this method!
70
  public function output( $rec ) {
71
  //don't output orders in summary mode!
72
  if ( $this->summary_report_products AND ! $this->summary_processing ) {
159
  return ( $new_rows );
160
  }
161
 
162
+ protected function sort_by_custom_field(){
163
+ $sort = apply_filters('woe_storage_sort_by_field', ["plain_products_name", "asc", "string"]);
164
+ $sortCallback = function($a,$b) use($sort){
165
+ $field = !is_array($sort) ? $sort : (isset($sort[0]) ? $sort[0] : '');
166
+ $direction = !is_array($sort) ? 'asc' : (isset($sort[1]) ? strtolower($sort[1]) : 'asc');
167
+ $type = !is_array($sort) ? 'string' : (isset($sort[2]) ? $sort[2] : 'string');
168
+
169
+ if (!isset($a[$field]) || !isset($b[$field])) {
170
+ return 0;
171
+ }
172
+
173
+ if ($type === 'money' || $type === 'number') {
174
+ return $direction === 'asc' ? $a[$field] - $b[$field] : $b[$field] - $a[$field];
175
+ }
176
+
177
+ if ($type === 'date') {
178
+ return $direction === 'asc' ? strtotime($a[$field]) - strtotime($b[$field]) : strtotime($b[$field]) - strtotime($a[$field]);
179
+ }
180
+
181
+ return $direction === 'asc' ? strcmp($a[$field],$b[$field]) : (-1) * strcmp($a[$field],$b[$field]);
182
+ };
183
+
184
+ if($this->settings['display_column_names']) { // preserve header
185
+ $columnsTitle = array_slice($this->rows, 0, 1, true);
186
+ $this->rows = array_slice($this->rows, 1, null, true);
187
+ usort($this->rows, $sortCallback);
188
+ $this->rows = array_merge($columnsTitle, $this->rows);
189
+ } else // just sort
190
+ usort($this->rows, $sortCallback);
191
+ }
192
+
193
 
194
  protected function make_header( $data = '' ) {
195
  $header = array();
308
  return apply_filters( 'woe_summary_products_headers', $header );
309
  }
310
 
311
+ // the function used by CSV/TAB/HTML formats
312
  private function try_fill_summary_report_products_fields( $row ) {
313
  $order = false;
314
 
367
  $_SESSION['woe_summary_products'][ $key ]['summary_report_total_qty'] += $product_item->get_quantity();
368
  }
369
 
370
+ if ( isset( $_SESSION['woe_summary_products'][ $key ]['summary_report_total_qty_minus_refund'] ) ) {
371
+ $_SESSION['woe_summary_products'][ $key ]['summary_report_total_qty_minus_refund'] += ( $product_item->get_quantity() - abs( $order->get_qty_refunded_for_item($item_id) ) );
372
+ }
373
+
374
  if ( isset( $_SESSION['woe_summary_products'][ $key ]['summary_report_total_weight'] ) AND $product ) { // only if product exists!
375
  $_SESSION['woe_summary_products'][ $key ]['summary_report_total_weight'] += $product_item->get_quantity() * (float)$product->get_weight();
376
  }
380
  'get_total' ) ? $product_item->get_total() : $product_item['line_total'];
381
  $_SESSION['woe_summary_products'][ $key ]['summary_report_total_amount'] += wc_round_tax_total( $total );
382
  }
383
+
384
+ if ( isset( $_SESSION['woe_summary_products'][ $key ]['summary_report_total_amount_minus_refund'] ) ) {
385
+ $total = method_exists( $product_item,
386
+ 'get_total' ) ? $product_item->get_total() : $product_item['line_total'];
387
+ $refunded = $order->get_total_refunded_for_item($item_id);
388
+ $_SESSION['woe_summary_products'][ $key ]['summary_report_total_amount_minus_refund'] += wc_round_tax_total( $total ) - wc_round_tax_total( $refunded );
389
+ }
390
 
391
  if ( isset( $_SESSION['woe_summary_products'][ $key ]['summary_report_total_discount'] ) ) {
392
  $total = $product_item->get_subtotal() - $product_item->get_total();
498
  return apply_filters( 'woe_summary_customers_headers', $header );
499
  }
500
 
501
+ // the function used by CSV/TAB/HTML formats
502
  private function try_fill_summary_report_customers_fields( $row, $order_id ) {
503
 
504
  $order = new WC_Order( $order_id );
774
  $storageData['summary_report_total_qty'] += $product_item->get_quantity();
775
  }
776
 
777
+ if ( isset( $storageData['summary_report_total_qty_minus_refund'] ) ) {
778
+ $storageData['summary_report_total_qty_minus_refund'] += ($product_item->get_quantity() - abs( $order->get_qty_refunded_for_item($item_id) ) );
779
+ }
780
+
781
  if ( isset( $storageData['summary_report_total_weight'] ) AND $product ) { // only if product exists!
782
  $storageData['summary_report_total_weight'] += $product_item->get_quantity() * (float)$product->get_weight();
783
  }
787
  'get_total' ) ? $product_item->get_total() : $product_item['line_total'];
788
  $storageData['summary_report_total_amount'] += wc_round_tax_total( $total );
789
  }
790
+
791
+ if ( isset( $storageData['summary_report_total_amount_minus_refund'] ) ) {
792
+ $total = method_exists( $product_item,
793
+ 'get_total' ) ? $product_item->get_total() : $product_item['line_total'];
794
+ $refunded = $order->get_total_refunded_for_item($item_id);
795
+ $storageData['summary_report_total_amount_minus_refund'] += wc_round_tax_total( $total ) - wc_round_tax_total( $refunded );
796
+ }
797
+
798
+ if ( isset( $storageData['summary_report_total_amount_inc_tax'] ) ) {
799
+ $total = method_exists( $product_item,'get_total' ) ?
800
+ wc_round_tax_total($product_item->get_total()) + wc_round_tax_total($product_item->get_total_tax()) :
801
+ wc_round_tax_total($product_item['line_total']) + wc_round_tax_total($product_item['line_tax']);
802
+ $storageData['summary_report_total_amount_inc_tax'] += $total;
803
+ }
804
 
805
  if ( isset( $storageData['summary_report_total_discount'] ) ) {
806
  $total = $product_item->get_subtotal() - $product_item->get_total();
954
  $row = reset($rows);
955
  if ($this->summary_report_products) {
956
  $products_row = self::get_array_from_array($row, 'products');
957
+ $product_row = count($products_row) > 0 ? reset($products_row) : [];
958
  $product_labels = $this->labels['products']->get_labels();
959
  $row = array_filter($product_row, function($field_key) use ($product_labels) {
960
  foreach ( $product_labels as $label_data ) {
classes/formats/abstract-class-woe-formatter-sv.php CHANGED
@@ -152,7 +152,8 @@ class WOE_Formatter_sv_crlf_filter extends php_user_filter {
152
  public static function set_linebreak( $linebreak ) {
153
  self::$linebreak = $linebreak;
154
  }
155
-
 
156
  function filter( $in, $out, &$consumed, $closing ) {
157
  while ( $bucket = stream_bucket_make_writeable( $in ) ) {
158
  // make sure the line endings aren't already CRLF
152
  public static function set_linebreak( $linebreak ) {
153
  self::$linebreak = $linebreak;
154
  }
155
+
156
+ #[\ReturnTypeWillChange]
157
  function filter( $in, $out, &$consumed, $closing ) {
158
  while ( $bucket = stream_bucket_make_writeable( $in ) ) {
159
  // make sure the line endings aren't already CRLF
classes/formats/abstract-class-woe-formatter.php CHANGED
@@ -152,7 +152,7 @@ abstract class WOE_Formatter {
152
 
153
  protected function format_date_field( $field_value ) {
154
  // 20211208 is not timestamp! too, strtotime() can parse it
155
- if ( ! WOE_Formatter::is_valid_time_stamp( $field_value ) OR strtotime( $field_value ) ) {
156
  $ts = strtotime( $field_value );
157
  } else {
158
  $ts = $field_value;
152
 
153
  protected function format_date_field( $field_value ) {
154
  // 20211208 is not timestamp! too, strtotime() can parse it
155
+ if ( ! WOE_Formatter::is_valid_time_stamp( $field_value ) OR preg_match( '#^\d{8}$#', $field_value ) ) {
156
  $ts = strtotime( $field_value );
157
  } else {
158
  $ts = $field_value;
classes/formats/class-woe-formatter-html.php CHANGED
@@ -77,6 +77,14 @@ class WOE_Formatter_Html extends WOE_Formatter_Plain_Format {
77
 
78
  do_action( "woe_{$this->format}_print_header", $this->handle, $data, $this );
79
  }
 
 
 
 
 
 
 
 
80
  }
81
  }
82
 
77
 
78
  do_action( "woe_{$this->format}_print_header", $this->handle, $data, $this );
79
  }
80
+ } else {
81
+ if ( $this->mode !== 'preview' ) {
82
+ if ( $this->settings['header_text'] ) {
83
+ fwrite( $this->handle, '<div class="header">' . $this->settings['header_text'] . '</div>' );
84
+ }
85
+
86
+ fwrite( $this->handle, '<table>' );
87
+ }
88
  }
89
  }
90
 
classes/formats/class-woe-formatter-pdf.php CHANGED
@@ -84,7 +84,7 @@ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
84
  public function start( $data = '' ) {
85
  parent::start();
86
 
87
- if ( $this->mode == 'preview' ) {
88
  $data = $this->make_header( $data );
89
  $data = apply_filters( "woe_{$this->format}_header_filter", $data );
90
 
@@ -155,14 +155,23 @@ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
155
  }
156
 
157
  public function finish() {
 
 
 
 
 
 
 
158
  if ( $this->mode === 'preview' ) {
159
  if($this->summary_report_products || $this->summary_report_customers) {
160
  $this->rows = $this->storage->processDataForPreview($this->rows);
161
- }
162
  $this->rows = apply_filters( "woe_{$this->format}_preview_rows", $this->rows );
 
 
163
 
164
  $image_preview_multiply = 5;
165
-
166
  fwrite( $this->handle, '<table>' );
167
  if ( $this->settings['display_column_names'] && count( $this->rows ) < 2 || count( $this->rows ) < 1 ) {
168
  $this->rows[] = array( '<td colspan=10><b>' . __( 'No results', 'woo-order-export-lite' ) . '</b></td>' );
@@ -178,10 +187,12 @@ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
178
  $cell,
179
  $this->settings['row_images_width'] * $image_preview_multiply,
180
  $this->settings['row_images_height'] * $image_preview_multiply );
181
-
182
  $cell = $html ? $html : "";
183
  }
184
  }
 
 
185
 
186
  if ( $row_index == 0 AND ! empty( $this->settings['display_column_names'] ) ) {
187
  fwrite( $this->handle,
@@ -189,7 +200,25 @@ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
189
  } else {
190
  fwrite( $this->handle, '<tr><td>' . join( '</td><td>', $row ) . "</td><tr>\n" );
191
  }
 
 
 
 
 
 
 
 
 
 
 
192
  }
 
 
 
 
 
 
 
193
  fwrite( $this->handle, '</table>' );
194
  }
195
 
@@ -201,14 +230,19 @@ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
201
  if ( apply_filters( 'woe_pdf_output', false, $this->settings, str_replace( '.csv', '.pdf', $this->filename ) ) ) {
202
  return;
203
  }
204
-
205
  if ( has_filter( 'woe_storage_sort_by_field') ) {
206
- $this->storage->loadFull();
207
- $this->storage->sortRowsByColumn( apply_filters( 'woe_storage_sort_by_field',"plain_products_name") );
208
- $this->storage->forceSave();
209
- $this->storage->close();
 
 
 
 
 
210
  }
211
-
212
  $this->pdf = new WOE_PDF_MC_Table( $this->orientation, 'mm', $this->page_size );
213
 
214
  $this->storage->initRowIterator();
@@ -295,11 +329,18 @@ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
295
  $row = apply_filters( 'woe_row_before_format_pdf', $row );
296
 
297
  if ( ! empty( $this->settings['display_column_names'] ) ) {
 
 
 
 
 
 
 
298
  $row = apply_filters( 'woe_pdf_prepare_header', $row );
299
  if( $row ) {
300
  $this->pdf->addTableHeader( $row );
301
  do_action("woe_pdf_below_header", $this->pdf, $this);
302
- }
303
  }
304
 
305
  $pageBreakOrderLines = wc_string_to_bool( $this->settings['row_dont_page_break_order_lines'] );
@@ -307,7 +348,8 @@ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
307
  // both are only for option 'row_dont_page_break_order_lines'
308
  $orderRows = array();
309
  $orderId = null;
310
-
 
311
  while ( $rowObj = $this->storage->getNextRow() ) {
312
  $row = $rowObj->getData();
313
 
@@ -339,6 +381,16 @@ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
339
  'link' => $source,
340
  );
341
  }
 
 
 
 
 
 
 
 
 
 
342
  }
343
 
344
  $currentOrderId = $rowObj->getMetaItem( "order_id" ); // always pop! even $pageBreakOrderLines is false
@@ -376,6 +428,15 @@ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
376
  }
377
  }
378
 
 
 
 
 
 
 
 
 
 
379
  if ( count( $orderRows ) ) {
380
  $rows = array_map( function ( $orderRow ) {
381
  return $orderRow[0];
84
  public function start( $data = '' ) {
85
  parent::start();
86
 
87
+ if ( $this->mode == 'preview' AND $this->settings['display_column_names'] ) {
88
  $data = $this->make_header( $data );
89
  $data = apply_filters( "woe_{$this->format}_header_filter", $data );
90
 
155
  }
156
 
157
  public function finish() {
158
+ $settings = $this->settings['global_job_settings'];
159
+ if ( preg_match('/setup_field_/i', $settings['sort']) ) {
160
+ add_filter('woe_storage_sort_by_field', function () use ($settings) {
161
+ return [preg_replace('/setup_field_(.+?)_/i', '', $settings['sort']), $settings['sort_direction'], preg_match('/setup_field_(.+?)_/i', $settings['sort'], $matches) ? $matches[1] : 'string'];
162
+ });
163
+ }
164
+
165
  if ( $this->mode === 'preview' ) {
166
  if($this->summary_report_products || $this->summary_report_customers) {
167
  $this->rows = $this->storage->processDataForPreview($this->rows);
168
+ }
169
  $this->rows = apply_filters( "woe_{$this->format}_preview_rows", $this->rows );
170
+ if ( has_filter( 'woe_storage_sort_by_field') )
171
+ $this->sort_by_custom_field();
172
 
173
  $image_preview_multiply = 5;
174
+ $summary_row = array();
175
  fwrite( $this->handle, '<table>' );
176
  if ( $this->settings['display_column_names'] && count( $this->rows ) < 2 || count( $this->rows ) < 1 ) {
177
  $this->rows[] = array( '<td colspan=10><b>' . __( 'No results', 'woo-order-export-lite' ) . '</b></td>' );
187
  $cell,
188
  $this->settings['row_images_width'] * $image_preview_multiply,
189
  $this->settings['row_images_height'] * $image_preview_multiply );
190
+
191
  $cell = $html ? $html : "";
192
  }
193
  }
194
+ unset($cell);//required or 2nd foreach will be broken!
195
+
196
 
197
  if ( $row_index == 0 AND ! empty( $this->settings['display_column_names'] ) ) {
198
  fwrite( $this->handle,
200
  } else {
201
  fwrite( $this->handle, '<tr><td>' . join( '</td><td>', $row ) . "</td><tr>\n" );
202
  }
203
+ foreach ( $row as $column => &$cell ) {
204
+ foreach($this->settings['global_job_settings']['order_fields'] as $order_field) {
205
+ if ( isset($order_field['key']) && ($column === $order_field['key'] || $order_field['key'] === 'plain_orders_'. $column)) {
206
+ if (!empty ($order_field['sum'])) {
207
+ $summary_row[$column] = (isset($summary_row[$column]) ? $summary_row[$column] : 0) + floatval(str_replace(',', '.', $cell));
208
+ } else {
209
+ $summary_row[$column] = '';
210
+ }
211
+ }
212
+ }
213
+ }
214
  }
215
+
216
+ if (!empty( array_keys($summary_row) ) && array_filter($summary_row, function ($row) { return $row !== ''; })) {
217
+ $summary_row[array_keys($summary_row)[apply_filters("woe_summary_row_title_pos",0)]] = $this->settings['global_job_settings']['summary_row_title'];
218
+ fwrite( $this->handle,
219
+ '<tr style="font-weight:bold"><td>' . join( '</td><td>', $summary_row ) . "</td><tr>\n" );
220
+ }
221
+
222
  fwrite( $this->handle, '</table>' );
223
  }
224
 
230
  if ( apply_filters( 'woe_pdf_output', false, $this->settings, str_replace( '.csv', '.pdf', $this->filename ) ) ) {
231
  return;
232
  }
233
+
234
  if ( has_filter( 'woe_storage_sort_by_field') ) {
235
+ if( $this->summary_report_products || $this->summary_report_customers ) {
236
+ $this->storage->sortRowsByColumn( apply_filters( 'woe_storage_sort_by_field',["plain_products_name", "asc", "string"]) );
237
+ } else {
238
+ // plain export
239
+ $this->storage->loadFull();
240
+ $this->storage->sortRowsByColumn( apply_filters( 'woe_storage_sort_by_field',["plain_products_name", "asc", "string"]) );
241
+ $this->storage->forceSave();
242
+ $this->storage->close();
243
+ }
244
  }
245
+
246
  $this->pdf = new WOE_PDF_MC_Table( $this->orientation, 'mm', $this->page_size );
247
 
248
  $this->storage->initRowIterator();
329
  $row = apply_filters( 'woe_row_before_format_pdf', $row );
330
 
331
  if ( ! empty( $this->settings['display_column_names'] ) ) {
332
+ if ($this->storage instanceof WOE_Formatter_Storage_Summary_Session) {
333
+ if ($this->storage->isSummaryProducts()) {
334
+ $row = apply_filters('woe_summary_products_headers', $row);
335
+ } elseif ($this->storage->isSummaryCustomers()) {
336
+ $row = apply_filters('woe_summary_customers_headers', $row);
337
+ }
338
+ }
339
  $row = apply_filters( 'woe_pdf_prepare_header', $row );
340
  if( $row ) {
341
  $this->pdf->addTableHeader( $row );
342
  do_action("woe_pdf_below_header", $this->pdf, $this);
343
+ }
344
  }
345
 
346
  $pageBreakOrderLines = wc_string_to_bool( $this->settings['row_dont_page_break_order_lines'] );
348
  // both are only for option 'row_dont_page_break_order_lines'
349
  $orderRows = array();
350
  $orderId = null;
351
+ $summary_row = array();
352
+
353
  while ( $rowObj = $this->storage->getNextRow() ) {
354
  $row = $rowObj->getData();
355
 
381
  'link' => $source,
382
  );
383
  }
384
+
385
+ foreach($this->settings['global_job_settings']['order_fields'] as $order_field) {
386
+ if (isset($order_field['key']) && ($key === $order_field['key'] || $order_field['key'] === 'plain_orders_'. $key)) {
387
+ if (!empty ($order_field['sum'])) {
388
+ $summary_row[$key] = (isset($summary_row[$key]) ? $summary_row[$key] : 0) + floatval(str_replace(',', '.', $item));
389
+ } else {
390
+ $summary_row[$key] = '';
391
+ }
392
+ }
393
+ }
394
  }
395
 
396
  $currentOrderId = $rowObj->getMetaItem( "order_id" ); // always pop! even $pageBreakOrderLines is false
428
  }
429
  }
430
 
431
+ if (!empty( array_keys($summary_row) ) && array_filter($summary_row, function ($row) { return $row !== ''; })) {
432
+ $summary_row[array_keys($summary_row)[0]] = $this->settings['global_job_settings']['summary_row_title'];
433
+ if ( $pageBreakOrderLines ) {
434
+ $orderRows[] = array( array_values($summary_row), $row_style, $row_height );
435
+ } else {
436
+ $this->pdf->addRow( array_values($summary_row), null, $row_height, $row_style );
437
+ }
438
+ }
439
+
440
  if ( count( $orderRows ) ) {
441
  $rows = array_map( function ( $orderRow ) {
442
  return $orderRow[0];
classes/formats/class-woe-formatter-xls.php CHANGED
@@ -53,7 +53,7 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
53
  $this->string_format_fields = isset( $field_formats['string'] ) ? $field_formats['string'] : array();
54
  $this->string_format_fields = apply_filters( "woe_{$format}_string_format_fields",
55
  $this->string_format_fields );
56
-
57
  $this->date_format_fields = isset( $field_formats['date'] ) ? $field_formats['date'] : array();
58
  $this->date_format_fields = apply_filters( "woe_{$format}_date_format_fields", $this->date_format_fields );
59
 
@@ -68,9 +68,9 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
68
 
69
  $this->link_format_fields = isset( $field_formats['link'] ) ? $field_formats['link'] : array();
70
  $this->link_format_fields = apply_filters( "woe_{$format}_link_format_fields", $this->link_format_fields );
71
-
72
  if ( $mode != 'preview' ) {
73
- // Excel uses another format!
74
  $this->date_format = apply_filters( 'woe_xls_date_format', $this->convert_php_date_format( $date_format ) );
75
  $this->money_format = apply_filters( 'woe_xls_money_format', PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00 );
76
  $this->number_format = apply_filters( 'woe_xls_number_format', PHPExcel_Style_NumberFormat::FORMAT_NUMBER );
@@ -96,7 +96,7 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
96
  public function start( $data = '' ) {
97
  parent::start();
98
 
99
- if ( $this->mode == 'preview' ) {
100
  $data = $this->make_header( $data );
101
  $data = apply_filters( "woe_{$this->format}_header_filter", $data );
102
 
@@ -109,6 +109,9 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
109
  }
110
 
111
  protected function remove_emojis_callback( $value ) {
 
 
 
112
  return trim(preg_replace('/[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0077}\x{E006C}\x{E0073}\x{E007F})|[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0073}\x{E0063}\x{E0074}\x{E007F})|[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0065}\x{E006E}\x{E0067}\x{E007F})|[\x{1F3F4}](?:\x{200D}\x{2620}\x{FE0F})|[\x{1F3F3}](?:\x{FE0F}\x{200D}\x{1F308})|[\x{0023}\x{002A}\x{0030}\x{0031}\x{0032}\x{0033}\x{0034}\x{0035}\x{0036}\x{0037}\x{0038}\x{0039}](?:\x{FE0F}\x{20E3})|[\x{1F415}](?:\x{200D}\x{1F9BA})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F466})|[\x{1F469}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F469})|[\x{1F469}\x{1F468}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F468})|[\x{1F469}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F469})|[\x{1F469}\x{1F468}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F468})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9BD})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9BC})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9AF})|[\x{1F575}\x{1F3CC}\x{26F9}\x{1F3CB}](?:\x{FE0F}\x{200D}\x{2640}\x{FE0F})|[\x{1F575}\x{1F3CC}\x{26F9}\x{1F3CB}](?:\x{FE0F}\x{200D}\x{2642}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F692})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F680})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2708}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3A8})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3A4})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F4BB})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F52C})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F4BC})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3ED})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F527})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F373})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F33E})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2696}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3EB})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F393})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2695}\x{FE0F})|[\x{1F471}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F9CF}\x{1F647}\x{1F926}\x{1F937}\x{1F46E}\x{1F482}\x{1F477}\x{1F473}\x{1F9B8}\x{1F9B9}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F9DE}\x{1F9DF}\x{1F486}\x{1F487}\x{1F6B6}\x{1F9CD}\x{1F9CE}\x{1F3C3}\x{1F46F}\x{1F9D6}\x{1F9D7}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93C}\x{1F93D}\x{1F93E}\x{1F939}\x{1F9D8}](?:\x{200D}\x{2640}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B2})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B3})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B1})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B0})|[\x{1F471}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F9CF}\x{1F647}\x{1F926}\x{1F937}\x{1F46E}\x{1F482}\x{1F477}\x{1F473}\x{1F9B8}\x{1F9B9}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F9DE}\x{1F9DF}\x{1F486}\x{1F487}\x{1F6B6}\x{1F9CD}\x{1F9CE}\x{1F3C3}\x{1F46F}\x{1F9D6}\x{1F9D7}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93C}\x{1F93D}\x{1F93E}\x{1F939}\x{1F9D8}](?:\x{200D}\x{2642}\x{FE0F})|[\x{1F441}](?:\x{FE0F}\x{200D}\x{1F5E8}\x{FE0F})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F8}\x{1F1F9}\x{1F1FA}](?:\x{1F1FF})|[\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F0}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1FA}](?:\x{1F1FE})|[\x{1F1E6}\x{1F1E8}\x{1F1F2}\x{1F1F8}](?:\x{1F1FD})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F7}\x{1F1F9}\x{1F1FF}](?:\x{1F1FC})|[\x{1F1E7}\x{1F1E8}\x{1F1F1}\x{1F1F2}\x{1F1F8}\x{1F1F9}](?:\x{1F1FB})|[\x{1F1E6}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1ED}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F7}\x{1F1FB}](?:\x{1F1FA})|[\x{1F1E6}\x{1F1E7}\x{1F1EA}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FE}](?:\x{1F1F9})|[\x{1F1E6}\x{1F1E7}\x{1F1EA}\x{1F1EC}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F7}\x{1F1F8}\x{1F1FA}\x{1F1FC}](?:\x{1F1F8})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EB}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F0}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1F7})|[\x{1F1E6}\x{1F1E7}\x{1F1EC}\x{1F1EE}\x{1F1F2}](?:\x{1F1F6})|[\x{1F1E8}\x{1F1EC}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F3}](?:\x{1F1F5})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1EE}\x{1F1EF}\x{1F1F2}\x{1F1F3}\x{1F1F7}\x{1F1F8}\x{1F1F9}](?:\x{1F1F4})|[\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}](?:\x{1F1F3})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F4}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FF}](?:\x{1F1F2})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1EE}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1F1})|[\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1ED}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FD}](?:\x{1F1F0})|[\x{1F1E7}\x{1F1E9}\x{1F1EB}\x{1F1F8}\x{1F1F9}](?:\x{1F1EF})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EB}\x{1F1EC}\x{1F1F0}\x{1F1F1}\x{1F1F3}\x{1F1F8}\x{1F1FB}](?:\x{1F1EE})|[\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1ED})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EA}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}](?:\x{1F1EC})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F9}\x{1F1FC}](?:\x{1F1EB})|[\x{1F1E6}\x{1F1E7}\x{1F1E9}\x{1F1EA}\x{1F1EC}\x{1F1EE}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F7}\x{1F1F8}\x{1F1FB}\x{1F1FE}](?:\x{1F1EA})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1EE}\x{1F1F2}\x{1F1F8}\x{1F1F9}](?:\x{1F1E9})|[\x{1F1E6}\x{1F1E8}\x{1F1EA}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F8}\x{1F1F9}\x{1F1FB}](?:\x{1F1E8})|[\x{1F1E7}\x{1F1EC}\x{1F1F1}\x{1F1F8}](?:\x{1F1E7})|[\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F6}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}\x{1F1FF}](?:\x{1F1E6})|[\x{00A9}\x{00AE}\x{203C}\x{2049}\x{2122}\x{2139}\x{2194}-\x{2199}\x{21A9}-\x{21AA}\x{231A}-\x{231B}\x{2328}\x{23CF}\x{23E9}-\x{23F3}\x{23F8}-\x{23FA}\x{24C2}\x{25AA}-\x{25AB}\x{25B6}\x{25C0}\x{25FB}-\x{25FE}\x{2600}-\x{2604}\x{260E}\x{2611}\x{2614}-\x{2615}\x{2618}\x{261D}\x{2620}\x{2622}-\x{2623}\x{2626}\x{262A}\x{262E}-\x{262F}\x{2638}-\x{263A}\x{2640}\x{2642}\x{2648}-\x{2653}\x{265F}-\x{2660}\x{2663}\x{2665}-\x{2666}\x{2668}\x{267B}\x{267E}-\x{267F}\x{2692}-\x{2697}\x{2699}\x{269B}-\x{269C}\x{26A0}-\x{26A1}\x{26AA}-\x{26AB}\x{26B0}-\x{26B1}\x{26BD}-\x{26BE}\x{26C4}-\x{26C5}\x{26C8}\x{26CE}-\x{26CF}\x{26D1}\x{26D3}-\x{26D4}\x{26E9}-\x{26EA}\x{26F0}-\x{26F5}\x{26F7}-\x{26FA}\x{26FD}\x{2702}\x{2705}\x{2708}-\x{270D}\x{270F}\x{2712}\x{2714}\x{2716}\x{271D}\x{2721}\x{2728}\x{2733}-\x{2734}\x{2744}\x{2747}\x{274C}\x{274E}\x{2753}-\x{2755}\x{2757}\x{2763}-\x{2764}\x{2795}-\x{2797}\x{27A1}\x{27B0}\x{27BF}\x{2934}-\x{2935}\x{2B05}-\x{2B07}\x{2B1B}-\x{2B1C}\x{2B50}\x{2B55}\x{3030}\x{303D}\x{3297}\x{3299}\x{1F004}\x{1F0CF}\x{1F170}-\x{1F171}\x{1F17E}-\x{1F17F}\x{1F18E}\x{1F191}-\x{1F19A}\x{1F201}-\x{1F202}\x{1F21A}\x{1F22F}\x{1F232}-\x{1F23A}\x{1F250}-\x{1F251}\x{1F300}-\x{1F321}\x{1F324}-\x{1F393}\x{1F396}-\x{1F397}\x{1F399}-\x{1F39B}\x{1F39E}-\x{1F3F0}\x{1F3F3}-\x{1F3F5}\x{1F3F7}-\x{1F3FA}\x{1F400}-\x{1F4FD}\x{1F4FF}-\x{1F53D}\x{1F549}-\x{1F54E}\x{1F550}-\x{1F567}\x{1F56F}-\x{1F570}\x{1F573}-\x{1F57A}\x{1F587}\x{1F58A}-\x{1F58D}\x{1F590}\x{1F595}-\x{1F596}\x{1F5A4}-\x{1F5A5}\x{1F5A8}\x{1F5B1}-\x{1F5B2}\x{1F5BC}\x{1F5C2}-\x{1F5C4}\x{1F5D1}-\x{1F5D3}\x{1F5DC}-\x{1F5DE}\x{1F5E1}\x{1F5E3}\x{1F5E8}\x{1F5EF}\x{1F5F3}\x{1F5FA}-\x{1F64F}\x{1F680}-\x{1F6C5}\x{1F6CB}-\x{1F6D2}\x{1F6D5}\x{1F6E0}-\x{1F6E5}\x{1F6E9}\x{1F6EB}-\x{1F6EC}\x{1F6F0}\x{1F6F3}-\x{1F6FA}\x{1F7E0}-\x{1F7EB}\x{1F90D}-\x{1F93A}\x{1F93C}-\x{1F945}\x{1F947}-\x{1F971}\x{1F973}-\x{1F976}\x{1F97A}-\x{1F9A2}\x{1F9A5}-\x{1F9AA}\x{1F9AE}-\x{1F9CA}\x{1F9CD}-\x{1F9FF}\x{1FA70}-\x{1FA73}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA82}\x{1FA90}-\x{1FA95}]/u',"", $value));
113
  }
114
 
@@ -128,6 +131,7 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
128
  foreach ($rows as &$row) {
129
  $this->remove_emojis_from_array($row);
130
  }
 
131
  }
132
 
133
  if ( $this->mode !== 'preview' || $is_summary_mode ) {
@@ -184,7 +188,6 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
184
  $this->rows[] = $row;
185
  }
186
  }
187
-
188
  return $rows;
189
  }
190
 
@@ -195,11 +198,20 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
195
  }
196
 
197
  public function finish() {
 
 
 
 
 
 
 
198
  if ( $this->mode === 'preview' ) {
199
  if($this->summary_report_products || $this->summary_report_customers) {
200
  $this->rows = $this->storage->processDataForPreview($this->rows);
201
- }
202
  $this->rows = apply_filters( "woe_{$this->format}_preview_rows", $this->rows );
 
 
203
 
204
  $image_preview_multiply = 5;
205
  $max_columns = 0;
@@ -210,6 +222,7 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
210
  }
211
  $image_preview_multiply = 5;
212
  $max_columns = 0;
 
213
  foreach ( $this->rows as $num => &$row ) {
214
  $row = array_map( "nl2br", $row );
215
  foreach ( $row as $column => &$cell ) {
@@ -222,6 +235,7 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
222
  $cell = $html ? $html : "";
223
  }
224
  }
 
225
 
226
  $max_columns = max( $max_columns, count( $row ) );
227
 
@@ -239,7 +253,30 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
239
  } else {
240
  fwrite( $this->handle, '<tr><td>' . join( '</td><td>', $row ) . "</td><tr>\n" );
241
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  }
 
 
 
 
 
 
 
243
  fwrite( $this->handle, '</table>' );
244
  }
245
 
@@ -247,12 +284,17 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
247
 
248
  if ( $this->mode != 'preview' ) {
249
  $this->storage->close(); // //if it's full export, storage hasn't been closed
250
-
251
  if ( has_filter( 'woe_storage_sort_by_field') ) {
252
- $this->storage->loadFull();
253
- $this->storage->sortRowsByColumn( apply_filters( 'woe_storage_sort_by_field',"plain_products_name") );
254
- $this->storage->forceSave();
255
- $this->storage->close();
 
 
 
 
 
256
  }
257
 
258
  //more memory for XLS?
@@ -261,7 +303,7 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
261
  if ( ! class_exists( 'ZipArchive' ) ) {
262
  PHPExcel_Settings::setZipClass( PHPExcel_Settings::PCLZIP );
263
  }
264
-
265
  $this->objPHPExcel = new PHPExcel();
266
 
267
  $this->objPHPExcel->setActiveSheetIndex( 0 );
@@ -286,6 +328,13 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
286
  }
287
 
288
  if ( ! empty( $this->settings['display_column_names'] ) AND $row ) {
 
 
 
 
 
 
 
289
  $row = apply_filters( "woe_xls_header_filter_final", $row );
290
  $this->last_row ++;
291
  foreach ( $row as $pos => $text ) {
@@ -315,6 +364,7 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
315
  do_action( 'woe_xls_print_header', $this->objPHPExcel, $this );
316
 
317
  $imageColumns = array();
 
318
  foreach ( $this->storage->getColumns() as $columnIndex => $column ) {
319
  $columnLetter = PHPExcel_Cell::stringFromColumnIndex($columnIndex);
320
  $numberFormat = $sheet->getStyle("$columnLetter:$columnLetter")->getNumberFormat();
@@ -332,10 +382,12 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
332
  $numberFormat->setFormatCode( $this->date_format );
333
  } elseif ( $column->getMetaItem("link") ) {
334
  $numberFormat->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
 
335
  }
336
  }
337
 
338
  $rows = array();
 
339
  while( $rowObj = $this->storage->getNextRow() ) {
340
  $row = $rowObj->getData();
341
  $row[] = $rowObj->getMetaItem('order_id');
@@ -344,11 +396,28 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
344
  $this->fromArray( $sheet, $rows, NULL, 'A' . ($this->last_row + 1), true );
345
  $rows = array();
346
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
347
  }
348
  if( count( $rows ) ) { //last chunk
349
  $this->fromArray( $sheet, $rows, NULL, 'A' . ($this->last_row + 1), true );
350
  }
351
 
 
352
  if ( $this->settings['auto_width'] ) {
353
  try {
354
  $cellIterator = $sheet->getRowIterator()->current()->getCellIterator();
@@ -419,6 +488,25 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
419
  }
420
  }
421
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
422
  do_action( 'woe_xls_print_footer', $this->objPHPExcel, $this );
423
  $objWriter = PHPExcel_IOFactory::createWriter( $this->objPHPExcel,
424
  $this->settings['use_xls_format'] ? 'Excel5' : 'Excel2007' );
@@ -475,17 +563,17 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
475
  $currentColumn = $startColumn;
476
 
477
  WC_Order_Export_Engine::$order_id = array_pop( $rowData );
478
-
479
- foreach ($rowData as $cellValue) {
480
-
481
  $columnIndex = PHPExcel_Cell::columnIndexFromString( $currentColumn ) - 1;
482
 
483
  if( isset($stored_columns[$columnIndex]) )
484
  $column = $stored_columns[$columnIndex];
485
- else {
486
  $column = new WOE_Formatter_Storage_Column();
487
  $column->setKey( "unnamed_".$columnIndex);
488
- }
489
 
490
  if ( $column->getMetaItem("date") === true ) {
491
  if ( $cellValue ) {
@@ -522,7 +610,7 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
522
  }
523
  }
524
  }
525
- do_action( "woe_xls_format_cell", $this, $column->getKey(), $cellValue, $rowData, $columnIndex );
526
  ++$currentColumn;
527
  }
528
  ++$startRow;
53
  $this->string_format_fields = isset( $field_formats['string'] ) ? $field_formats['string'] : array();
54
  $this->string_format_fields = apply_filters( "woe_{$format}_string_format_fields",
55
  $this->string_format_fields );
56
+
57
  $this->date_format_fields = isset( $field_formats['date'] ) ? $field_formats['date'] : array();
58
  $this->date_format_fields = apply_filters( "woe_{$format}_date_format_fields", $this->date_format_fields );
59
 
68
 
69
  $this->link_format_fields = isset( $field_formats['link'] ) ? $field_formats['link'] : array();
70
  $this->link_format_fields = apply_filters( "woe_{$format}_link_format_fields", $this->link_format_fields );
71
+
72
  if ( $mode != 'preview' ) {
73
+ // Excel uses another format!
74
  $this->date_format = apply_filters( 'woe_xls_date_format', $this->convert_php_date_format( $date_format ) );
75
  $this->money_format = apply_filters( 'woe_xls_money_format', PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00 );
76
  $this->number_format = apply_filters( 'woe_xls_number_format', PHPExcel_Style_NumberFormat::FORMAT_NUMBER );
96
  public function start( $data = '' ) {
97
  parent::start();
98
 
99
+ if ( $this->mode == 'preview' AND $this->settings['display_column_names'] ) {
100
  $data = $this->make_header( $data );
101
  $data = apply_filters( "woe_{$this->format}_header_filter", $data );
102
 
109
  }
110
 
111
  protected function remove_emojis_callback( $value ) {
112
+ if (is_array($value)) {
113
+ return $this->remove_emojis_from_array($value);
114
+ }
115
  return trim(preg_replace('/[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0077}\x{E006C}\x{E0073}\x{E007F})|[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0073}\x{E0063}\x{E0074}\x{E007F})|[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0065}\x{E006E}\x{E0067}\x{E007F})|[\x{1F3F4}](?:\x{200D}\x{2620}\x{FE0F})|[\x{1F3F3}](?:\x{FE0F}\x{200D}\x{1F308})|[\x{0023}\x{002A}\x{0030}\x{0031}\x{0032}\x{0033}\x{0034}\x{0035}\x{0036}\x{0037}\x{0038}\x{0039}](?:\x{FE0F}\x{20E3})|[\x{1F415}](?:\x{200D}\x{1F9BA})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F466})|[\x{1F469}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F469})|[\x{1F469}\x{1F468}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F468})|[\x{1F469}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F469})|[\x{1F469}\x{1F468}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F468})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9BD})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9BC})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9AF})|[\x{1F575}\x{1F3CC}\x{26F9}\x{1F3CB}](?:\x{FE0F}\x{200D}\x{2640}\x{FE0F})|[\x{1F575}\x{1F3CC}\x{26F9}\x{1F3CB}](?:\x{FE0F}\x{200D}\x{2642}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F692})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F680})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2708}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3A8})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3A4})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F4BB})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F52C})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F4BC})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3ED})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F527})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F373})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F33E})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2696}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3EB})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F393})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2695}\x{FE0F})|[\x{1F471}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F9CF}\x{1F647}\x{1F926}\x{1F937}\x{1F46E}\x{1F482}\x{1F477}\x{1F473}\x{1F9B8}\x{1F9B9}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F9DE}\x{1F9DF}\x{1F486}\x{1F487}\x{1F6B6}\x{1F9CD}\x{1F9CE}\x{1F3C3}\x{1F46F}\x{1F9D6}\x{1F9D7}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93C}\x{1F93D}\x{1F93E}\x{1F939}\x{1F9D8}](?:\x{200D}\x{2640}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B2})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B3})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B1})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B0})|[\x{1F471}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F9CF}\x{1F647}\x{1F926}\x{1F937}\x{1F46E}\x{1F482}\x{1F477}\x{1F473}\x{1F9B8}\x{1F9B9}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F9DE}\x{1F9DF}\x{1F486}\x{1F487}\x{1F6B6}\x{1F9CD}\x{1F9CE}\x{1F3C3}\x{1F46F}\x{1F9D6}\x{1F9D7}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93C}\x{1F93D}\x{1F93E}\x{1F939}\x{1F9D8}](?:\x{200D}\x{2642}\x{FE0F})|[\x{1F441}](?:\x{FE0F}\x{200D}\x{1F5E8}\x{FE0F})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F8}\x{1F1F9}\x{1F1FA}](?:\x{1F1FF})|[\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F0}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1FA}](?:\x{1F1FE})|[\x{1F1E6}\x{1F1E8}\x{1F1F2}\x{1F1F8}](?:\x{1F1FD})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F7}\x{1F1F9}\x{1F1FF}](?:\x{1F1FC})|[\x{1F1E7}\x{1F1E8}\x{1F1F1}\x{1F1F2}\x{1F1F8}\x{1F1F9}](?:\x{1F1FB})|[\x{1F1E6}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1ED}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F7}\x{1F1FB}](?:\x{1F1FA})|[\x{1F1E6}\x{1F1E7}\x{1F1EA}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FE}](?:\x{1F1F9})|[\x{1F1E6}\x{1F1E7}\x{1F1EA}\x{1F1EC}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F7}\x{1F1F8}\x{1F1FA}\x{1F1FC}](?:\x{1F1F8})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EB}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F0}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1F7})|[\x{1F1E6}\x{1F1E7}\x{1F1EC}\x{1F1EE}\x{1F1F2}](?:\x{1F1F6})|[\x{1F1E8}\x{1F1EC}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F3}](?:\x{1F1F5})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1EE}\x{1F1EF}\x{1F1F2}\x{1F1F3}\x{1F1F7}\x{1F1F8}\x{1F1F9}](?:\x{1F1F4})|[\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}](?:\x{1F1F3})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F4}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FF}](?:\x{1F1F2})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1EE}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1F1})|[\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1ED}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FD}](?:\x{1F1F0})|[\x{1F1E7}\x{1F1E9}\x{1F1EB}\x{1F1F8}\x{1F1F9}](?:\x{1F1EF})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EB}\x{1F1EC}\x{1F1F0}\x{1F1F1}\x{1F1F3}\x{1F1F8}\x{1F1FB}](?:\x{1F1EE})|[\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1ED})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EA}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}](?:\x{1F1EC})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F9}\x{1F1FC}](?:\x{1F1EB})|[\x{1F1E6}\x{1F1E7}\x{1F1E9}\x{1F1EA}\x{1F1EC}\x{1F1EE}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F7}\x{1F1F8}\x{1F1FB}\x{1F1FE}](?:\x{1F1EA})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1EE}\x{1F1F2}\x{1F1F8}\x{1F1F9}](?:\x{1F1E9})|[\x{1F1E6}\x{1F1E8}\x{1F1EA}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F8}\x{1F1F9}\x{1F1FB}](?:\x{1F1E8})|[\x{1F1E7}\x{1F1EC}\x{1F1F1}\x{1F1F8}](?:\x{1F1E7})|[\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F6}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}\x{1F1FF}](?:\x{1F1E6})|[\x{00A9}\x{00AE}\x{203C}\x{2049}\x{2122}\x{2139}\x{2194}-\x{2199}\x{21A9}-\x{21AA}\x{231A}-\x{231B}\x{2328}\x{23CF}\x{23E9}-\x{23F3}\x{23F8}-\x{23FA}\x{24C2}\x{25AA}-\x{25AB}\x{25B6}\x{25C0}\x{25FB}-\x{25FE}\x{2600}-\x{2604}\x{260E}\x{2611}\x{2614}-\x{2615}\x{2618}\x{261D}\x{2620}\x{2622}-\x{2623}\x{2626}\x{262A}\x{262E}-\x{262F}\x{2638}-\x{263A}\x{2640}\x{2642}\x{2648}-\x{2653}\x{265F}-\x{2660}\x{2663}\x{2665}-\x{2666}\x{2668}\x{267B}\x{267E}-\x{267F}\x{2692}-\x{2697}\x{2699}\x{269B}-\x{269C}\x{26A0}-\x{26A1}\x{26AA}-\x{26AB}\x{26B0}-\x{26B1}\x{26BD}-\x{26BE}\x{26C4}-\x{26C5}\x{26C8}\x{26CE}-\x{26CF}\x{26D1}\x{26D3}-\x{26D4}\x{26E9}-\x{26EA}\x{26F0}-\x{26F5}\x{26F7}-\x{26FA}\x{26FD}\x{2702}\x{2705}\x{2708}-\x{270D}\x{270F}\x{2712}\x{2714}\x{2716}\x{271D}\x{2721}\x{2728}\x{2733}-\x{2734}\x{2744}\x{2747}\x{274C}\x{274E}\x{2753}-\x{2755}\x{2757}\x{2763}-\x{2764}\x{2795}-\x{2797}\x{27A1}\x{27B0}\x{27BF}\x{2934}-\x{2935}\x{2B05}-\x{2B07}\x{2B1B}-\x{2B1C}\x{2B50}\x{2B55}\x{3030}\x{303D}\x{3297}\x{3299}\x{1F004}\x{1F0CF}\x{1F170}-\x{1F171}\x{1F17E}-\x{1F17F}\x{1F18E}\x{1F191}-\x{1F19A}\x{1F201}-\x{1F202}\x{1F21A}\x{1F22F}\x{1F232}-\x{1F23A}\x{1F250}-\x{1F251}\x{1F300}-\x{1F321}\x{1F324}-\x{1F393}\x{1F396}-\x{1F397}\x{1F399}-\x{1F39B}\x{1F39E}-\x{1F3F0}\x{1F3F3}-\x{1F3F5}\x{1F3F7}-\x{1F3FA}\x{1F400}-\x{1F4FD}\x{1F4FF}-\x{1F53D}\x{1F549}-\x{1F54E}\x{1F550}-\x{1F567}\x{1F56F}-\x{1F570}\x{1F573}-\x{1F57A}\x{1F587}\x{1F58A}-\x{1F58D}\x{1F590}\x{1F595}-\x{1F596}\x{1F5A4}-\x{1F5A5}\x{1F5A8}\x{1F5B1}-\x{1F5B2}\x{1F5BC}\x{1F5C2}-\x{1F5C4}\x{1F5D1}-\x{1F5D3}\x{1F5DC}-\x{1F5DE}\x{1F5E1}\x{1F5E3}\x{1F5E8}\x{1F5EF}\x{1F5F3}\x{1F5FA}-\x{1F64F}\x{1F680}-\x{1F6C5}\x{1F6CB}-\x{1F6D2}\x{1F6D5}\x{1F6E0}-\x{1F6E5}\x{1F6E9}\x{1F6EB}-\x{1F6EC}\x{1F6F0}\x{1F6F3}-\x{1F6FA}\x{1F7E0}-\x{1F7EB}\x{1F90D}-\x{1F93A}\x{1F93C}-\x{1F945}\x{1F947}-\x{1F971}\x{1F973}-\x{1F976}\x{1F97A}-\x{1F9A2}\x{1F9A5}-\x{1F9AA}\x{1F9AE}-\x{1F9CA}\x{1F9CD}-\x{1F9FF}\x{1FA70}-\x{1FA73}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA82}\x{1FA90}-\x{1FA95}]/u',"", $value));
116
  }
117
 
131
  foreach ($rows as &$row) {
132
  $this->remove_emojis_from_array($row);
133
  }
134
+ unset($row);//required or 2nd foreach will be broken!
135
  }
136
 
137
  if ( $this->mode !== 'preview' || $is_summary_mode ) {
188
  $this->rows[] = $row;
189
  }
190
  }
 
191
  return $rows;
192
  }
193
 
198
  }
199
 
200
  public function finish() {
201
+ $settings = $this->settings['global_job_settings'];
202
+ if ( preg_match('/setup_field_/i', $settings['sort']) ) {
203
+ add_filter('woe_storage_sort_by_field', function () use ($settings) {
204
+ return [preg_replace('/setup_field_(.+?)_/i', '', $settings['sort']), $settings['sort_direction'], preg_match('/setup_field_(.+?)_/i', $settings['sort'], $matches) ? $matches[1] : 'string'];
205
+ });
206
+ }
207
+
208
  if ( $this->mode === 'preview' ) {
209
  if($this->summary_report_products || $this->summary_report_customers) {
210
  $this->rows = $this->storage->processDataForPreview($this->rows);
211
+ }
212
  $this->rows = apply_filters( "woe_{$this->format}_preview_rows", $this->rows );
213
+ if ( has_filter( 'woe_storage_sort_by_field') )
214
+ $this->sort_by_custom_field();
215
 
216
  $image_preview_multiply = 5;
217
  $max_columns = 0;
222
  }
223
  $image_preview_multiply = 5;
224
  $max_columns = 0;
225
+ $summary_row = array();
226
  foreach ( $this->rows as $num => &$row ) {
227
  $row = array_map( "nl2br", $row );
228
  foreach ( $row as $column => &$cell ) {
235
  $cell = $html ? $html : "";
236
  }
237
  }
238
+ unset($cell);//required or 2nd foreach will be broken!
239
 
240
  $max_columns = max( $max_columns, count( $row ) );
241
 
253
  } else {
254
  fwrite( $this->handle, '<tr><td>' . join( '</td><td>', $row ) . "</td><tr>\n" );
255
  }
256
+
257
+ // for non-summary modes
258
+ if( !$this->summary_report_products AND !$this->summary_report_customers) {
259
+ foreach ( $row as $column => &$cell ) {
260
+ foreach($this->settings['global_job_settings']['order_fields'] as $order_field) {
261
+ if ($column === $order_field['key'] || $order_field['key'] === 'plain_orders_'. $column) {
262
+ if (isset($order_field['sum'])) {
263
+ $summary_row[$column] = (isset($summary_row[$column]) ? $summary_row[$column] : 0) + floatval(str_replace(',', '.', $cell));
264
+ } else {
265
+ $summary_row[$column] = '';
266
+ }
267
+ }
268
+ }
269
+ }
270
+ }
271
+
272
  }
273
+
274
+ if (!empty( array_keys($summary_row) ) && array_filter($summary_row, function ($row) { return $row !== ''; })) {
275
+ $summary_row[array_keys($summary_row)[apply_filters("woe_summary_row_title_pos",0)]] = $this->settings['global_job_settings']['summary_row_title'];
276
+ fwrite( $this->handle,
277
+ '<tr style="font-weight:bold"><td>' . join( '</td><td>', $summary_row ) . "</td><tr>\n" );
278
+ }
279
+
280
  fwrite( $this->handle, '</table>' );
281
  }
282
 
284
 
285
  if ( $this->mode != 'preview' ) {
286
  $this->storage->close(); // //if it's full export, storage hasn't been closed
287
+
288
  if ( has_filter( 'woe_storage_sort_by_field') ) {
289
+ if( $this->summary_report_products || $this->summary_report_customers ) {
290
+ $this->storage->sortRowsByColumn( apply_filters( 'woe_storage_sort_by_field',["plain_products_name", "asc", "string"]) );
291
+ } else {
292
+ // plain export
293
+ $this->storage->loadFull();
294
+ $this->storage->sortRowsByColumn( apply_filters( 'woe_storage_sort_by_field',["plain_products_name", "asc", "string"]) );
295
+ $this->storage->forceSave();
296
+ $this->storage->close();
297
+ }
298
  }
299
 
300
  //more memory for XLS?
303
  if ( ! class_exists( 'ZipArchive' ) ) {
304
  PHPExcel_Settings::setZipClass( PHPExcel_Settings::PCLZIP );
305
  }
306
+
307
  $this->objPHPExcel = new PHPExcel();
308
 
309
  $this->objPHPExcel->setActiveSheetIndex( 0 );
328
  }
329
 
330
  if ( ! empty( $this->settings['display_column_names'] ) AND $row ) {
331
+ if ($this->storage instanceof WOE_Formatter_Storage_Summary_Session) {
332
+ if ($this->storage->isSummaryProducts()) {
333
+ $row = apply_filters('woe_summary_products_headers', $row);
334
+ } elseif ($this->storage->isSummaryCustomers()) {
335
+ $row = apply_filters('woe_summary_customers_headers', $row);
336
+ }
337
+ }
338
  $row = apply_filters( "woe_xls_header_filter_final", $row );
339
  $this->last_row ++;
340
  foreach ( $row as $pos => $text ) {
364
  do_action( 'woe_xls_print_header', $this->objPHPExcel, $this );
365
 
366
  $imageColumns = array();
367
+ $linkColumns = array();
368
  foreach ( $this->storage->getColumns() as $columnIndex => $column ) {
369
  $columnLetter = PHPExcel_Cell::stringFromColumnIndex($columnIndex);
370
  $numberFormat = $sheet->getStyle("$columnLetter:$columnLetter")->getNumberFormat();
382
  $numberFormat->setFormatCode( $this->date_format );
383
  } elseif ( $column->getMetaItem("link") ) {
384
  $numberFormat->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
385
+ $linkColumns[] = $columnIndex;
386
  }
387
  }
388
 
389
  $rows = array();
390
+ $summary_row = array();
391
  while( $rowObj = $this->storage->getNextRow() ) {
392
  $row = $rowObj->getData();
393
  $row[] = $rowObj->getMetaItem('order_id');
396
  $this->fromArray( $sheet, $rows, NULL, 'A' . ($this->last_row + 1), true );
397
  $rows = array();
398
  }
399
+ foreach ( $row as $column => &$cell ) {
400
+ foreach($this->settings['global_job_settings']['order_fields'] as $order_field) {
401
+ if (isset($order_field['key']) && ($column === $order_field['key'] || $order_field['key'] === 'plain_orders_'. $column)) {
402
+ if (isset($order_field['sum'])) {
403
+ $summary_row[$column] = (isset($summary_row[$column]) ? $summary_row[$column] : 0) + floatval(str_replace(',', '.', $cell));
404
+ } else {
405
+ $summary_row[$column] = '';
406
+ }
407
+ }
408
+ }
409
+ }
410
+ }
411
+ if (!empty( array_keys($summary_row) ) && array_filter($summary_row, function ($row) { return $row !== ''; })) {
412
+ $summary_row[array_keys($summary_row)[0]] = $this->settings['global_job_settings']['summary_row_title'];
413
+ $summary_row[] = 0;
414
+ $rows[] = $summary_row;
415
  }
416
  if( count( $rows ) ) { //last chunk
417
  $this->fromArray( $sheet, $rows, NULL, 'A' . ($this->last_row + 1), true );
418
  }
419
 
420
+
421
  if ( $this->settings['auto_width'] ) {
422
  try {
423
  $cellIterator = $sheet->getRowIterator()->current()->getCellIterator();
488
  }
489
  }
490
 
491
+ foreach ( $linkColumns as $column_index ) {
492
+ $columnIterator = $sheet->getColumnIterator()
493
+ ->seek(PHPExcel_Cell::stringFromColumnIndex($column_index))
494
+ ->current()
495
+ ->getCellIterator($start_row);
496
+
497
+ $columnIterator->setIterateOnlyExistingCells( true );
498
+ foreach ( $columnIterator as $cell ) {
499
+ /**
500
+ * @var PHPExcel_Cell $cell
501
+ */
502
+
503
+ $value = $cell->getValue();
504
+ if($value)
505
+ $cell->getHyperlink()->setUrl($value);
506
+ }
507
+ }
508
+
509
+
510
  do_action( 'woe_xls_print_footer', $this->objPHPExcel, $this );
511
  $objWriter = PHPExcel_IOFactory::createWriter( $this->objPHPExcel,
512
  $this->settings['use_xls_format'] ? 'Excel5' : 'Excel2007' );
563
  $currentColumn = $startColumn;
564
 
565
  WC_Order_Export_Engine::$order_id = array_pop( $rowData );
566
+
567
+ foreach ($rowData as $index => $cellValue) {
568
+
569
  $columnIndex = PHPExcel_Cell::columnIndexFromString( $currentColumn ) - 1;
570
 
571
  if( isset($stored_columns[$columnIndex]) )
572
  $column = $stored_columns[$columnIndex];
573
+ else {
574
  $column = new WOE_Formatter_Storage_Column();
575
  $column->setKey( "unnamed_".$columnIndex);
576
+ }
577
 
578
  if ( $column->getMetaItem("date") === true ) {
579
  if ( $cellValue ) {
610
  }
611
  }
612
  }
613
+ do_action( "woe_xls_format_cell", $this, $column->getKey(), $cellValue, $rowData, $columnIndex, $sheet->getCell($currentColumn . $startRow) );
614
  ++$currentColumn;
615
  }
616
  ++$startRow;
classes/formats/class-woe-formatter-xml.php CHANGED
@@ -111,8 +111,8 @@ class WOE_Formatter_Xml extends WOE_Formatter {
111
  if ( $this->has_output_filter ) {
112
  $xml = apply_filters( "woe_xml_output_filter", $xml, $rec, $this );
113
  }
114
-
115
- if( $xml )
116
  fwrite( $this->handle, $xml . $this->linebreak );
117
  }
118
 
111
  if ( $this->has_output_filter ) {
112
  $xml = apply_filters( "woe_xml_output_filter", $xml, $rec, $this );
113
  }
114
+
115
+ if($xml)
116
  fwrite( $this->handle, $xml . $this->linebreak );
117
  }
118
 
classes/formats/storage/class-woe-formatter-storage-csv.php CHANGED
@@ -189,13 +189,25 @@ class WOE_Formatter_Storage_Csv implements WOE_Formatter_Storage {
189
 
190
  fclose( $handle );
191
  }
192
-
193
- public function sortRowsByColumn($field) {
194
- return $this->sortRows( function($a,$b) use($field){
195
- return strcmp($a->getDataItem($field),$b->getDataItem($field));
 
 
 
 
 
 
 
 
 
 
 
 
196
  } );
197
  }
198
-
199
  public function sortRows($callback) {
200
  usort($this->rowsBuffer,$callback);
201
  }
189
 
190
  fclose( $handle );
191
  }
192
+
193
+ public function sortRowsByColumn($sort) {
194
+ return $this->sortRows( function($a,$b) use($sort){
195
+ $field = !is_array($sort) ? $sort : (isset($sort[0]) ? $sort[0] : '');
196
+ $direction = !is_array($sort) ? 'asc' : (isset($sort[1]) ? strtolower($sort[1]) : 'asc');
197
+ $type = !is_array($sort) ? 'string' : (isset($sort[2]) ? $sort[2] : 'string');
198
+
199
+ if ($type === 'money' || $type === 'number') {
200
+ return $direction === 'asc' ? $a->getDataItem($field) - $b->getDataItem($field) : $b->getDataItem($field) - $a->getDataItem($field);
201
+ }
202
+
203
+ if ($type === 'date') {
204
+ return $direction === 'asc' ? strtotime($a->getDataItem($field)) - strtotime($b->getDataItem($field)) : strtotime($b->getDataItem($field)) - strtotime($a->getDataItem($field));
205
+ }
206
+
207
+ return $direction === 'asc' ? strcmp($a->getDataItem($field),$b->getDataItem($field)) : (-1) * strcmp($a->getDataItem($field),$b->getDataItem($field));
208
  } );
209
  }
210
+
211
  public function sortRows($callback) {
212
  usort($this->rowsBuffer,$callback);
213
  }
classes/formats/storage/class-woe-formatter-storage-summary-session.php CHANGED
@@ -10,6 +10,7 @@ class WOE_Formatter_Storage_Summary_Session implements WOE_Formatter_Storage {
10
  private $summaryProducts = false;
11
  private $summaryCustomers = false;
12
  private $summaryKey;
 
13
 
14
  /**
15
  * @var array<int, WOE_Formatter_Storage_Column>
@@ -73,14 +74,15 @@ class WOE_Formatter_Storage_Summary_Session implements WOE_Formatter_Storage {
73
  public function delete() {}
74
 
75
  public function initRowIterator() {
76
- $this->sortByName();
 
77
  do_action('woe_summary_before_output');
78
  reset($_SESSION[$this->summaryKey]);
79
  }
80
 
81
  public function getNextRow() {
82
  $row = current($_SESSION[$this->summaryKey]);
83
- if (!$row) { //all rows were returned
84
  unset($_SESSION[$this->summaryKey . '_header']);
85
  unset($_SESSION[$this->summaryKey]);
86
  return $row;
@@ -154,11 +156,47 @@ class WOE_Formatter_Storage_Summary_Session implements WOE_Formatter_Storage {
154
  {
155
  if (isset($_SESSION[$this->summaryKey . '_header'])) {
156
  $first_row = array_column($_SESSION[$this->summaryKey . '_header'], 'key');
157
- if (in_array('name', $first_row)) {
158
- uasort($_SESSION[$this->summaryKey], function ($a, $b) {
159
- return strcasecmp($a['name'], $b['name']);
 
 
160
  });
 
161
  }
162
  }
163
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  }
10
  private $summaryProducts = false;
11
  private $summaryCustomers = false;
12
  private $summaryKey;
13
+ private $rows_already_sorted = false;
14
 
15
  /**
16
  * @var array<int, WOE_Formatter_Storage_Column>
74
  public function delete() {}
75
 
76
  public function initRowIterator() {
77
+ if( !$this->rows_already_sorted )
78
+ $this->sortByName();
79
  do_action('woe_summary_before_output');
80
  reset($_SESSION[$this->summaryKey]);
81
  }
82
 
83
  public function getNextRow() {
84
  $row = current($_SESSION[$this->summaryKey]);
85
+ if ($row === false) { //all rows were returned
86
  unset($_SESSION[$this->summaryKey . '_header']);
87
  unset($_SESSION[$this->summaryKey]);
88
  return $row;
156
  {
157
  if (isset($_SESSION[$this->summaryKey . '_header'])) {
158
  $first_row = array_column($_SESSION[$this->summaryKey . '_header'], 'key');
159
+ $possible_sort_columns = array("name","product_name","product_name_main");
160
+ foreach($possible_sort_columns as $key) {
161
+ if ( !in_array($key, $first_row) ) continue;
162
+ uasort($_SESSION[$this->summaryKey], function ($a, $b) use($key) {
163
+ return strcasecmp($a[$key], $b[$key]);
164
  });
165
+ break;
166
  }
167
  }
168
  }
169
+
170
+ /**
171
+ * @return bool
172
+ */
173
+ public function isSummaryProducts() {
174
+ return $this->summaryProducts;
175
+ }
176
+
177
+ /**
178
+ * @return bool
179
+ */
180
+ public function isSummaryCustomers() {
181
+ return $this->summaryCustomers;
182
+ }
183
+
184
+ public function sortRowsByColumn($sort) {
185
+ uasort($_SESSION[$this->summaryKey], function($a,$b) use($sort){
186
+ $field = !is_array($sort) ? $sort : (isset($sort[0]) ? str_replace("plain_products_","",$sort[0]) : '');
187
+ $direction = !is_array($sort) ? 'asc' : (isset($sort[1]) ? strtolower($sort[1]) : 'asc');
188
+ $type = !is_array($sort) ? 'string' : (isset($sort[2]) ? $sort[2] : 'string');
189
+ if ($type === 'money' || $type === 'number') {
190
+ return $direction === 'asc' ? $a[$field] - $b[$field] : $b[$field] - [$field];
191
+ }
192
+
193
+ if ($type === 'date') {
194
+ return $direction === 'asc' ? strtotime($a[$field]) - strtotime($b[$field]) : strtotime($b[$field]) - strtotime($a[$field]);
195
+ }
196
+
197
+ return $direction === 'asc' ? strcmp($a[$field],$b[$field]) : (-1) * strcmp($a[$field],$b[$field]);
198
+ } );
199
+ $this->rows_already_sorted = true;
200
+ }
201
+
202
  }
classes/formats/trait-woe-plain-format.php CHANGED
@@ -93,9 +93,10 @@ trait WOE_Order_Export_Plain_Format {
93
  if ( ! isset( $row[ $key ] ) ) {
94
  continue;
95
  }
 
 
96
 
97
  $previous_field_segment = $current_field_segment;
98
-
99
  if ( preg_match( $mask, $key, $m ) AND in_array( $m[1], $repeat_as_cols ) ) {
100
  $type = $m[1];
101
  $field_group[ $type ][] = $original_key;
93
  if ( ! isset( $row[ $key ] ) ) {
94
  continue;
95
  }
96
+
97
+ if($key == "products" OR $key == "coupons") continue; // skip main tags for nested sections
98
 
99
  $previous_field_segment = $current_field_segment;
 
100
  if ( preg_match( $mask, $key, $m ) AND in_array( $m[1], $repeat_as_cols ) ) {
101
  $type = $m[1];
102
  $field_group[ $type ][] = $original_key;
i18n/languages/woo-order-export-lite.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Advanced Order Export For WooCommerce\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2021-12-13 13:15+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"
@@ -13,7 +13,7 @@ msgstr ""
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
- "X-Loco-Version: 2.5.5; wp-5.8.2\n"
17
  "X-Domain: woo-order-export-lite"
18
 
19
  #: classes/class-wc-order-export-admin.php:578
@@ -35,7 +35,7 @@ msgstr[1] ""
35
  msgid "-"
36
  msgstr ""
37
 
38
- #: view/settings-form.php:853
39
  msgid "- don't modify -"
40
  msgstr ""
41
 
@@ -47,11 +47,11 @@ msgstr ""
47
  msgid "1st row only"
48
  msgstr ""
49
 
50
- #: classes/core/class-wc-order-export-data-extractor.php:1902
51
  msgid "[Rest of the World]"
52
  msgstr ""
53
 
54
- #: view/settings-form.php:1626 view/settings-form.php:1640
55
  msgid "Actions"
56
  msgstr ""
57
 
@@ -64,15 +64,15 @@ msgstr ""
64
  msgid "Add %s fields"
65
  msgstr ""
66
 
67
- #: view/settings-form.php:1635
68
  msgid "Add calculated field"
69
  msgstr ""
70
 
71
- #: view/settings-form.php:1643
72
  msgid "Add fee"
73
  msgstr ""
74
 
75
- #: view/settings-form.php:1629
76
  msgid "Add field"
77
  msgstr ""
78
 
@@ -80,39 +80,39 @@ msgstr ""
80
  msgid "Add links to images"
81
  msgstr ""
82
 
83
- #: view/settings-form.php:1646
84
  msgid "Add shipping"
85
  msgstr ""
86
 
87
- #: view/settings-form.php:1632
88
  msgid "Add static field"
89
  msgstr ""
90
 
91
- #: view/settings-form.php:1649
92
  msgid "Add tax"
93
  msgstr ""
94
 
95
- #: classes/core/class-wc-order-export-data-extractor-ui.php:819
96
  msgid "Address 1 (Billing)"
97
  msgstr ""
98
 
99
- #: classes/core/class-wc-order-export-data-extractor-ui.php:909
100
  msgid "Address 1 (Shipping)"
101
  msgstr ""
102
 
103
- #: classes/core/class-wc-order-export-data-extractor-ui.php:814
104
  msgid "Address 1&2 (Billing)"
105
  msgstr ""
106
 
107
- #: classes/core/class-wc-order-export-data-extractor-ui.php:904
108
  msgid "Address 1&2 (Shipping)"
109
  msgstr ""
110
 
111
- #: classes/core/class-wc-order-export-data-extractor-ui.php:824
112
  msgid "Address 2 (Billing)"
113
  msgstr ""
114
 
115
- #: classes/core/class-wc-order-export-data-extractor-ui.php:914
116
  msgid "Address 2 (Shipping)"
117
  msgstr ""
118
 
@@ -138,7 +138,7 @@ msgstr ""
138
  msgid "all rows"
139
  msgstr ""
140
 
141
- #: view/settings-form.php:1360
142
  msgid "Any coupon used"
143
  msgstr ""
144
 
@@ -154,7 +154,7 @@ msgstr ""
154
  msgid "as"
155
  msgstr ""
156
 
157
- #: view/settings-form.php:834
158
  msgid "Ascending"
159
  msgstr ""
160
 
@@ -162,12 +162,12 @@ msgstr ""
162
  msgid "Auto column width"
163
  msgstr ""
164
 
165
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1336
166
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1360
167
  msgid "Billing Address"
168
  msgstr ""
169
 
170
- #: view/settings-form.php:1386
171
  msgid "Billing locations"
172
  msgstr ""
173
 
@@ -198,35 +198,35 @@ msgstr ""
198
  msgid "Can't find exported file"
199
  msgstr ""
200
 
201
- #: view/settings-form.php:1686 view/settings-form.php:1707
202
- #: view/settings-form.php:1743 view/settings-form.php:1783
203
- #: view/settings-form.php:1805 view/settings-form.php:1836
204
- #: view/settings-form.php:1858 view/settings-form.php:1884
205
- #: view/settings-form.php:1907 view/settings-form.php:1929
206
- #: view/settings-form.php:1951 view/settings-form.php:1973
207
- #: view/settings-form.php:2003 view/settings-form.php:2033
208
- #: view/settings-form.php:2063
209
  msgid "Cancel"
210
  msgstr ""
211
 
212
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1342
213
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1367
214
  msgid "Cart"
215
  msgstr ""
216
 
217
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1165
218
  msgid "Cart Discount Amount"
219
  msgstr ""
220
 
221
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1170
222
  msgid "Cart Discount Amount Tax"
223
  msgstr ""
224
 
225
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1200
226
  msgid "Cart Tax Amount"
227
  msgstr ""
228
 
229
- #: classes/core/class-wc-order-export-data-extractor-ui.php:403
230
  msgid "Category"
231
  msgstr ""
232
 
@@ -234,7 +234,7 @@ msgstr ""
234
  msgid "Center align"
235
  msgstr ""
236
 
237
- #: view/settings-form.php:848
238
  msgid "Change order status to"
239
  msgstr ""
240
 
@@ -242,39 +242,39 @@ msgstr ""
242
  msgid "Character encoding"
243
  msgstr ""
244
 
245
- #: view/settings-form.php:1390 view/settings-form.php:1440
246
  msgid "City"
247
  msgstr ""
248
 
249
- #: classes/core/class-wc-order-export-data-extractor-ui.php:829
250
  msgid "City (Billing)"
251
  msgstr ""
252
 
253
- #: classes/core/class-wc-order-export-data-extractor-ui.php:919
254
  msgid "City (Shipping)"
255
  msgstr ""
256
 
257
- #: classes/core/class-wc-order-export-data-extractor-ui.php:844
258
  msgid "City, State Zip (Billing)"
259
  msgstr ""
260
 
261
- #: classes/core/class-wc-order-export-data-extractor-ui.php:934
262
  msgid "City, State Zip (Shipping)"
263
  msgstr ""
264
 
265
- #: classes/core/class-wc-order-export-data-extractor-ui.php:839
266
  msgid "City, State, Zip (Billing)"
267
  msgstr ""
268
 
269
- #: classes/core/class-wc-order-export-data-extractor-ui.php:929
270
  msgid "City, State, Zip (Shipping)"
271
  msgstr ""
272
 
273
- #: view/settings-form.php:902
274
  msgid "Cleanup phone (export only digits)"
275
  msgstr ""
276
 
277
- #: view/settings-form.php:2151
278
  msgid "Click here to download"
279
  msgstr ""
280
 
@@ -282,12 +282,12 @@ msgstr ""
282
  msgid "code snippets"
283
  msgstr ""
284
 
285
- #: view/settings-form.php:1676 view/settings-form.php:1692
286
- #: view/settings-form.php:1733 view/settings-form.php:1775
287
- #: view/settings-form.php:1789 view/settings-form.php:1828
288
- #: view/settings-form.php:1842 view/settings-form.php:1875
289
- #: view/settings-form.php:1890 view/settings-form.php:1919
290
- #: view/settings-form.php:1941 view/settings-form.php:1963
291
  msgid "Column name"
292
  msgstr ""
293
 
@@ -315,32 +315,32 @@ msgstr ""
315
  msgid "comma separated list"
316
  msgstr ""
317
 
318
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1334
319
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1358
320
  msgid "Common"
321
  msgstr ""
322
 
323
- #: classes/core/class-wc-order-export-data-extractor-ui.php:809
324
  msgid "Company (Billing)"
325
  msgstr ""
326
 
327
- #: classes/core/class-wc-order-export-data-extractor-ui.php:899
328
  msgid "Company (Shipping)"
329
  msgstr ""
330
 
331
  #: view/settings-form.php:167
332
- #: classes/core/class-wc-order-export-data-extractor-ui.php:644
333
  msgid "Completed Date"
334
  msgstr ""
335
 
336
- #: view/settings-form.php:1684 view/settings-form.php:1705
337
- #: view/settings-form.php:1741 view/settings-form.php:1781
338
- #: view/settings-form.php:1803 view/settings-form.php:1834
339
- #: view/settings-form.php:1856 view/settings-form.php:1882
340
- #: view/settings-form.php:1904 view/settings-form.php:1926
341
- #: view/settings-form.php:1948 view/settings-form.php:1970
342
- #: view/settings-form.php:2000 view/settings-form.php:2030
343
- #: view/settings-form.php:2060
344
  msgid "Confirm"
345
  msgstr ""
346
 
@@ -354,35 +354,35 @@ msgid ""
354
  "install."
355
  msgstr ""
356
 
357
- #: view/settings-form.php:1393 view/settings-form.php:1443
358
  msgid "Country"
359
  msgstr ""
360
 
361
- #: classes/core/class-wc-order-export-data-extractor-ui.php:859
362
  msgid "Country Code (Billing)"
363
  msgstr ""
364
 
365
- #: classes/core/class-wc-order-export-data-extractor-ui.php:949
366
  msgid "Country Code (Shipping)"
367
  msgstr ""
368
 
369
- #: classes/core/class-wc-order-export-data-extractor-ui.php:864
370
  msgid "Country Name (Billing)"
371
  msgstr ""
372
 
373
- #: classes/core/class-wc-order-export-data-extractor-ui.php:954
374
  msgid "Country Name (Shipping)"
375
  msgstr ""
376
 
377
- #: classes/core/class-wc-order-export-data-extractor-ui.php:559
378
  msgid "Coupon Amount"
379
  msgstr ""
380
 
381
- #: classes/core/class-wc-order-export-data-extractor-ui.php:530
382
  msgid "Coupon Code"
383
  msgstr ""
384
 
385
- #: classes/core/class-wc-order-export-data-extractor-ui.php:550
386
  msgid "Coupon Description"
387
  msgstr ""
388
 
@@ -390,15 +390,15 @@ msgstr ""
390
  msgid "Coupon tag"
391
  msgstr ""
392
 
393
- #: classes/core/class-wc-order-export-data-extractor-ui.php:554
394
  msgid "Coupon Type"
395
  msgstr ""
396
 
397
- #: view/settings-form.php:1363
398
  #: classes/admin/class-wc-order-export-manage.php:737
399
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1139
400
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1340
401
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1365
402
  msgid "Coupons"
403
  msgstr ""
404
 
@@ -410,10 +410,14 @@ msgstr ""
410
  msgid "CSV options"
411
  msgstr ""
412
 
413
- #: classes/core/class-wc-order-export-data-extractor-ui.php:639
414
  msgid "Currency"
415
  msgstr ""
416
 
 
 
 
 
417
  #: view/settings-form.php:768 view/settings-form.php:794
418
  msgid "custom"
419
  msgstr ""
@@ -422,61 +426,61 @@ msgstr ""
422
  msgid "Custom css"
423
  msgstr ""
424
 
425
- #: view/settings-form.php:1000 view/settings-form.php:1311
426
  msgid "Custom fields"
427
  msgstr ""
428
 
429
- #: view/settings-form.php:926
430
  msgid "Custom PHP code to modify output"
431
  msgstr ""
432
 
433
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1335
434
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1359
435
  msgid "Customer"
436
  msgstr ""
437
 
438
- #: classes/core/class-wc-order-export-data-extractor-ui.php:719
439
  msgid "Customer first order date"
440
  msgstr ""
441
 
442
- #: classes/core/class-wc-order-export-data-extractor-ui.php:679
443
  msgid "Customer IP address"
444
  msgstr ""
445
 
446
- #: classes/core/class-wc-order-export-data-extractor-ui.php:724
447
  msgid "Customer last order date"
448
  msgstr ""
449
 
450
- #: classes/core/class-wc-order-export-data-extractor-ui.php:659
451
  msgid "Customer Note"
452
  msgstr ""
453
 
454
- #: classes/core/class-wc-order-export-data-extractor-ui.php:704
455
  msgid "Customer Role"
456
  msgstr ""
457
 
458
- #: classes/core/class-wc-order-export-data-extractor-ui.php:709
459
  msgid "Customer Total Orders"
460
  msgstr ""
461
 
462
- #: classes/core/class-wc-order-export-data-extractor-ui.php:714
463
  msgid "Customer Total Spent"
464
  msgstr ""
465
 
466
- #: classes/core/class-wc-order-export-data-extractor-ui.php:699
467
  msgid "Customer User Email"
468
  msgstr ""
469
 
470
- #: classes/core/class-wc-order-export-data-extractor-ui.php:684
471
  msgid "Customer User ID"
472
  msgstr ""
473
 
474
- #: classes/core/class-wc-order-export-data-extractor-ui.php:689
475
  msgid "Customer Username"
476
  msgstr ""
477
 
478
  #: view/settings-form.php:750
479
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1392
480
  msgid "Date"
481
  msgstr ""
482
 
@@ -484,11 +488,11 @@ msgstr ""
484
  msgid "Date From is greater than Date To"
485
  msgstr ""
486
 
487
- #: classes/core/class-wc-order-export-data-extractor-ui.php:654
488
  msgid "Date of first refund"
489
  msgstr ""
490
 
491
- #: classes/core/class-wc-order-export-data-extractor-ui.php:624
492
  msgid "Date of original order"
493
  msgstr ""
494
 
@@ -496,23 +500,23 @@ msgstr ""
496
  msgid "Date range"
497
  msgstr ""
498
 
499
- #: view/settings-form.php:832
500
  msgid "Descending"
501
  msgstr ""
502
 
503
- #: classes/core/class-wc-order-export-data-extractor-ui.php:463
504
  msgid "Description"
505
  msgstr ""
506
 
507
- #: classes/core/class-wc-order-export-data-extractor-ui.php:535
508
  msgid "Discount Amount"
509
  msgstr ""
510
 
511
- #: classes/core/class-wc-order-export-data-extractor-ui.php:545
512
  msgid "Discount Amount + Tax"
513
  msgstr ""
514
 
515
- #: classes/core/class-wc-order-export-data-extractor-ui.php:540
516
  msgid "Discount Amount Tax"
517
  msgstr ""
518
 
@@ -528,7 +532,7 @@ msgstr ""
528
  msgid "Don't escape /"
529
  msgstr ""
530
 
531
- #: view/settings-form.php:961
532
  msgid "Don't export child orders"
533
  msgstr ""
534
 
@@ -539,7 +543,7 @@ msgid ""
539
  "reduce reply time :)"
540
  msgstr ""
541
 
542
- #: classes/core/class-wc-order-export-engine.php:375
543
  msgid "Don't Panic"
544
  msgstr ""
545
 
@@ -547,11 +551,11 @@ msgstr ""
547
  msgid "Don't put page break between order lines"
548
  msgstr ""
549
 
550
- #: classes/core/class-wc-order-export-data-extractor-ui.php:448
551
  msgid "Download URL"
552
  msgstr ""
553
 
554
- #: view/settings-form.php:1587
555
  msgid "Drag rows to reorder exported fields"
556
  msgstr ""
557
 
@@ -559,16 +563,16 @@ msgstr ""
559
  msgid "Edit order"
560
  msgstr ""
561
 
562
- #: classes/core/class-wc-order-export-data-extractor-ui.php:869
563
  msgid "Email (Billing)"
564
  msgstr ""
565
 
566
- #: classes/core/class-wc-order-export-data-extractor-ui.php:498
567
  msgid "Embedded Product Image"
568
  msgstr ""
569
 
570
  #: classes/class-wc-order-export-admin.php:372
571
- #: classes/core/class-wc-order-export-data-extractor.php:315
572
  msgid "empty"
573
  msgstr ""
574
 
@@ -588,7 +592,7 @@ msgstr ""
588
  msgid "empty value"
589
  msgstr ""
590
 
591
- #: view/settings-form.php:920
592
  msgid "Enable debug output"
593
  msgstr ""
594
 
@@ -604,23 +608,23 @@ msgstr ""
604
  msgid "End tag"
605
  msgstr ""
606
 
607
- #: view/settings-form.php:1260
608
  msgid "Exclude products"
609
  msgstr ""
610
 
611
- #: view/settings-form.php:2120
612
  msgid "Export"
613
  msgstr ""
614
 
615
- #: view/settings-form.php:2124
616
  msgid "Export [w/o progressbar]"
617
  msgstr ""
618
 
619
- #: view/settings-form.php:878
620
  msgid "Export all order notes"
621
  msgstr ""
622
 
623
- #: view/settings-form.php:1052
624
  msgid "Export all products from the order"
625
  msgstr ""
626
 
@@ -647,7 +651,7 @@ msgstr ""
647
  msgid "Export now"
648
  msgstr ""
649
 
650
- #: view/settings-form.php:1486
651
  msgid "Export only matched product items"
652
  msgstr ""
653
 
@@ -662,11 +666,11 @@ msgstr ""
662
  msgid "Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)"
663
  msgstr ""
664
 
665
- #: view/settings-form.php:884
666
  msgid "Export refund notes as Customer Note"
667
  msgstr ""
668
 
669
- #: view/settings-form.php:973
670
  msgid "Export refunds"
671
  msgstr ""
672
 
@@ -678,16 +682,16 @@ msgstr ""
678
  msgid "Export Status"
679
  msgstr ""
680
 
681
- #: view/settings-form.php:2136
682
  #, php-format
683
  msgid "Export total: %s orders"
684
  msgstr ""
685
 
686
- #: view/settings-form.php:984
687
  msgid "Export unmarked orders only"
688
  msgstr ""
689
 
690
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1118
691
  msgid "Exported items"
692
  msgstr ""
693
 
@@ -695,7 +699,7 @@ msgstr ""
695
  msgid "Express export"
696
  msgstr ""
697
 
698
- #: view/settings-form.php:1913
699
  msgid "Fee name"
700
  msgstr ""
701
 
@@ -711,31 +715,31 @@ msgstr ""
711
  msgid "Fill order columns for"
712
  msgstr ""
713
 
714
- #: view/settings-form.php:1381
715
  msgid "Filter by billing"
716
  msgstr ""
717
 
718
- #: view/settings-form.php:1354
719
  msgid "Filter by coupon"
720
  msgstr ""
721
 
722
- #: view/settings-form.php:1281
723
  msgid "Filter by customer"
724
  msgstr ""
725
 
726
- #: view/settings-form.php:1481
727
  msgid "Filter by item and metadata"
728
  msgstr ""
729
 
730
- #: view/settings-form.php:956
731
  msgid "Filter by order"
732
  msgstr ""
733
 
734
- #: view/settings-form.php:1047
735
  msgid "Filter by product"
736
  msgstr ""
737
 
738
- #: view/settings-form.php:1431
739
  msgid "Filter by shipping"
740
  msgstr ""
741
 
@@ -743,11 +747,11 @@ msgstr ""
743
  msgid "Filter orders by"
744
  msgstr ""
745
 
746
- #: classes/core/class-wc-order-export-data-extractor-ui.php:794
747
  msgid "First Name (Billing)"
748
  msgstr ""
749
 
750
- #: classes/core/class-wc-order-export-data-extractor-ui.php:884
751
  msgid "First Name (Shipping)"
752
  msgstr ""
753
 
@@ -779,7 +783,7 @@ msgstr ""
779
  msgid "Format"
780
  msgstr ""
781
 
782
- #: view/settings-form.php:872
783
  msgid "Format numbers (use WC decimal separator)"
784
  msgstr ""
785
 
@@ -791,19 +795,19 @@ msgstr ""
791
  msgid "Fri"
792
  msgstr ""
793
 
794
- #: classes/core/class-wc-order-export-data-extractor-ui.php:804
795
  msgid "Full Name (Billing)"
796
  msgstr ""
797
 
798
- #: classes/core/class-wc-order-export-data-extractor-ui.php:894
799
  msgid "Full Name (Shipping)"
800
  msgstr ""
801
 
802
- #: classes/core/class-wc-order-export-data-extractor-ui.php:473
803
  msgid "Full names for categories"
804
  msgstr ""
805
 
806
- #: view/settings-form.php:2156
807
  msgid "Generating file..."
808
  msgstr ""
809
 
@@ -823,7 +827,7 @@ msgstr ""
823
  msgid "Header text color"
824
  msgstr ""
825
 
826
- #: classes/core/class-wc-order-export-data-extractor-ui.php:423
827
  msgid "Height"
828
  msgstr ""
829
 
@@ -835,9 +839,9 @@ msgstr ""
835
  msgid "helpdesk system"
836
  msgstr ""
837
 
838
- #: view/settings-form.php:1672 view/settings-form.php:1729
839
- #: view/settings-form.php:1759 view/settings-form.php:1823
840
- #: view/settings-form.php:1866
841
  msgid "Hide unused fields"
842
  msgstr ""
843
 
@@ -849,7 +853,7 @@ msgstr ""
849
  msgid "https://algolplus.com/"
850
  msgstr ""
851
 
852
- #: view/settings-form.php:2100
853
  #, php-format
854
  msgid ""
855
  "If you see this message after page load, user interface won't work correctly!"
@@ -857,11 +861,11 @@ msgid ""
857
  "it). Probably, it's a conflict with another plugin or active theme."
858
  msgstr ""
859
 
860
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1393
861
  msgid "Image"
862
  msgstr ""
863
 
864
- #: classes/core/class-wc-order-export-data-extractor-ui.php:453
865
  msgid "Image URL"
866
  msgstr ""
867
 
@@ -883,67 +887,67 @@ msgstr ""
883
  msgid "Import settings"
884
  msgstr ""
885
 
886
- #: view/settings-form.php:2125
887
  msgid "It might not work for huge datasets!"
888
  msgstr ""
889
 
890
- #: classes/core/class-wc-order-export-data-extractor-ui.php:981
891
  msgid "Item #"
892
  msgstr ""
893
 
894
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1001
895
  msgid "Item Cost"
896
  msgstr ""
897
 
898
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1006
899
  msgid "Item Cost (inc. tax)"
900
  msgstr ""
901
 
902
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1011
903
  msgid "Item Cost Before Discount"
904
  msgstr ""
905
 
906
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1066
907
  msgid "Item Discount Amount"
908
  msgstr ""
909
 
910
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1091
911
  msgid "Item Discount Amount + Tax"
912
  msgstr ""
913
 
914
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1086
915
  msgid "Item Discount Tax"
916
  msgstr ""
917
 
918
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1076
919
  msgid "Item download URL"
920
  msgstr ""
921
 
922
- #: classes/core/class-wc-order-export-data-extractor-ui.php:976
923
  msgid "Item ID"
924
  msgstr ""
925
 
926
- #: view/settings-form.php:1224
927
  msgid "Item meta data"
928
  msgstr ""
929
 
930
- #: view/settings-form.php:1523
931
  msgid "Item metadata"
932
  msgstr ""
933
 
934
- #: classes/core/class-wc-order-export-data-extractor-ui.php:986
935
  msgid "Item Name"
936
  msgstr ""
937
 
938
- #: view/settings-form.php:1490
939
  msgid "Item names"
940
  msgstr ""
941
 
942
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1071
943
  msgid "Item Tax Rate"
944
  msgstr ""
945
 
946
- #: view/settings-form.php:896
947
  msgid "Item Tax Rate as an integer"
948
  msgstr ""
949
 
@@ -959,8 +963,8 @@ msgstr ""
959
  msgid "L,C or R. Comma separated list"
960
  msgstr ""
961
 
962
- #: view/settings-form.php:1991 view/settings-form.php:2021
963
- #: view/settings-form.php:2051
964
  msgid "Label"
965
  msgstr ""
966
 
@@ -968,11 +972,11 @@ msgstr ""
968
  msgid "Landscape"
969
  msgstr ""
970
 
971
- #: classes/core/class-wc-order-export-data-extractor-ui.php:799
972
  msgid "Last Name (Billing)"
973
  msgstr ""
974
 
975
- #: classes/core/class-wc-order-export-data-extractor-ui.php:889
976
  msgid "Last Name (Shipping)"
977
  msgstr ""
978
 
@@ -984,7 +988,7 @@ msgstr ""
984
  msgid "Legal"
985
  msgstr ""
986
 
987
- #: classes/core/class-wc-order-export-data-extractor-ui.php:418
988
  msgid "Length"
989
  msgstr ""
990
 
@@ -996,15 +1000,15 @@ msgstr ""
996
  msgid "Line Break"
997
  msgstr ""
998
 
999
- #: classes/core/class-wc-order-export-data-extractor-ui.php:599
1000
  msgid "Line number"
1001
  msgstr ""
1002
 
1003
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1394
1004
  msgid "Link"
1005
  msgstr ""
1006
 
1007
- #: classes/core/class-wc-order-export-data-extractor-ui.php:669
1008
  msgid "Link to edit order"
1009
  msgstr ""
1010
 
@@ -1026,7 +1030,7 @@ msgid ""
1026
  "Look at %s for popular plugins or check %s to study how to extend the plugin."
1027
  msgstr ""
1028
 
1029
- #: classes/core/class-wc-order-export-engine.php:514
1030
  msgid "Main SQL queries are listed below"
1031
  msgstr ""
1032
 
@@ -1034,26 +1038,26 @@ msgstr ""
1034
  msgid "Mark exported"
1035
  msgstr ""
1036
 
1037
- #: view/settings-form.php:980
1038
  msgid "Mark exported orders"
1039
  msgstr ""
1040
 
1041
- #: view/settings-form.php:1656 view/settings-form.php:1713
1042
- #: view/settings-form.php:1863 view/settings-form.php:1985
1043
- #: view/settings-form.php:2015 view/settings-form.php:2045
1044
  msgid "Meta key"
1045
  msgstr ""
1046
 
1047
- #: view/settings-form.php:2107
1048
  msgid "Might be different from actual export!"
1049
  msgstr ""
1050
 
1051
- #: view/settings-form.php:866
1052
  msgid "Misc settings"
1053
  msgstr ""
1054
 
1055
  #: view/settings-form.php:153 view/settings-form.php:810
1056
- #: classes/core/class-wc-order-export-data-extractor-ui.php:629
1057
  msgid "Modification Date"
1058
  msgstr ""
1059
 
@@ -1061,7 +1065,7 @@ msgstr ""
1061
  msgid "Mon"
1062
  msgstr ""
1063
 
1064
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1390
1065
  msgid "Money"
1066
  msgstr ""
1067
 
@@ -1078,14 +1082,14 @@ msgstr ""
1078
  msgid "No page numbers"
1079
  msgstr ""
1080
 
1081
- #: classes/formats/class-woe-formatter-pdf.php:168
1082
- #: classes/formats/class-woe-formatter-html.php:144
1083
  #: classes/formats/abstract-class-woe-formatter-sv.php:107
1084
- #: classes/formats/class-woe-formatter-xls.php:209
1085
  msgid "No results"
1086
  msgstr ""
1087
 
1088
- #: classes/core/class-wc-order-export-data-extractor-ui.php:478
1089
  msgid "Non variation attributes"
1090
  msgstr ""
1091
 
@@ -1094,11 +1098,11 @@ msgstr ""
1094
  msgid "Nothing to export. Please, adjust your filters"
1095
  msgstr ""
1096
 
1097
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1391
1098
  msgid "Number"
1099
  msgstr ""
1100
 
1101
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1160
1102
  msgid "Number of coupons used"
1103
  msgstr ""
1104
 
@@ -1106,79 +1110,79 @@ msgstr ""
1106
  msgid "one row"
1107
  msgstr ""
1108
 
1109
- #: view/settings-form.php:1762
1110
  msgid "OR"
1111
  msgstr ""
1112
 
1113
- #: view/settings-form.php:1667 view/settings-form.php:1724
1114
- #: view/settings-form.php:1754 view/settings-form.php:1818
1115
- #: view/settings-form.php:1872
1116
  msgid "or type meta key here"
1117
  msgstr ""
1118
 
1119
  #: view/settings-form.php:146 view/settings-form.php:809
1120
- #: classes/core/class-wc-order-export-data-extractor-ui.php:619
1121
  msgid "Order Date"
1122
  msgstr ""
1123
 
1124
  #: view/settings-form.php:808
1125
- #: classes/core/class-wc-order-export-data-extractor-ui.php:604
1126
  msgid "Order ID"
1127
  msgstr ""
1128
 
1129
- #: view/settings-form.php:1812
1130
  msgid "Order item fields"
1131
  msgstr ""
1132
 
1133
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1081
1134
  msgid "Order Item Metadata"
1135
  msgstr ""
1136
 
1137
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1016
1138
  msgid "Order Line (w/o tax)"
1139
  msgstr ""
1140
 
1141
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1036
1142
  msgid "Order Line Subtotal"
1143
  msgstr ""
1144
 
1145
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1041
1146
  msgid "Order Line Subtotal Tax"
1147
  msgstr ""
1148
 
1149
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1021
1150
  msgid "Order Line Tax"
1151
  msgstr ""
1152
 
1153
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1031
1154
  msgid "Order Line Tax (- Refund)"
1155
  msgstr ""
1156
 
1157
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1026
1158
  msgid "Order Line Tax Refunded"
1159
  msgstr ""
1160
 
1161
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1046
1162
  msgid "Order Line Total"
1163
  msgstr ""
1164
 
1165
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1061
1166
  msgid "Order Line Total (- Refund)"
1167
  msgstr ""
1168
 
1169
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1051
1170
  msgid "Order Line Total (include tax)"
1171
  msgstr ""
1172
 
1173
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1056
1174
  msgid "Order Line Total Refunded"
1175
  msgstr ""
1176
 
1177
- #: classes/core/class-wc-order-export-data-extractor-ui.php:664
1178
  msgid "Order Notes"
1179
  msgstr ""
1180
 
1181
- #: classes/core/class-wc-order-export-data-extractor-ui.php:609
1182
  msgid "Order Number"
1183
  msgstr ""
1184
 
@@ -1186,39 +1190,39 @@ msgstr ""
1186
  msgid "Order Refund"
1187
  msgstr ""
1188
 
1189
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1275
1190
  msgid "Order Refund Amount"
1191
  msgstr ""
1192
 
1193
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1235
1194
  msgid "Order Shipping + Tax Amount"
1195
  msgstr ""
1196
 
1197
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1230
1198
  msgid "Order Shipping Amount"
1199
  msgstr ""
1200
 
1201
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1245
1202
  msgid "Order Shipping Amount (- Refund)"
1203
  msgstr ""
1204
 
1205
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1240
1206
  msgid "Order Shipping Amount Refunded"
1207
  msgstr ""
1208
 
1209
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1250
1210
  msgid "Order Shipping Tax Amount"
1211
  msgstr ""
1212
 
1213
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1260
1214
  msgid "Order Shipping Tax Amount (- Refund)"
1215
  msgstr ""
1216
 
1217
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1255
1218
  msgid "Order Shipping Tax Refunded"
1219
  msgstr ""
1220
 
1221
- #: classes/core/class-wc-order-export-data-extractor-ui.php:614
1222
  msgid "Order Status"
1223
  msgstr ""
1224
 
@@ -1226,7 +1230,7 @@ msgstr ""
1226
  msgid "Order status"
1227
  msgstr ""
1228
 
1229
- #: view/settings-form.php:986
1230
  msgid "Order statuses"
1231
  msgstr ""
1232
 
@@ -1234,23 +1238,23 @@ msgstr ""
1234
  msgid "Order Subscription"
1235
  msgstr ""
1236
 
1237
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1185
1238
  msgid "Order Subtotal - Cart Discount"
1239
  msgstr ""
1240
 
1241
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1175
1242
  msgid "Order Subtotal Amount"
1243
  msgstr ""
1244
 
1245
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1195
1246
  msgid "Order Subtotal Amount (- Refund)"
1247
  msgstr ""
1248
 
1249
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1180
1250
  msgid "Order Subtotal Amount + Cart Tax"
1251
  msgstr ""
1252
 
1253
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1190
1254
  msgid "Order Subtotal Amount Refunded"
1255
  msgstr ""
1256
 
@@ -1258,31 +1262,31 @@ msgstr ""
1258
  msgid "Order tag"
1259
  msgstr ""
1260
 
1261
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1285
1262
  msgid "Order Total Amount"
1263
  msgstr ""
1264
 
1265
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1280
1266
  msgid "Order Total Amount (- Refund)"
1267
  msgstr ""
1268
 
1269
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1290
1270
  msgid "Order Total Amount without Tax"
1271
  msgstr ""
1272
 
1273
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1270
1274
  msgid "Order Total Fee"
1275
  msgstr ""
1276
 
1277
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1295
1278
  msgid "Order Total Tax Amount"
1279
  msgstr ""
1280
 
1281
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1305
1282
  msgid "Order Total Tax Amount (- Refund)"
1283
  msgstr ""
1284
 
1285
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1300
1286
  msgid "Order Total Tax Amount Refunded"
1287
  msgstr ""
1288
 
@@ -1291,7 +1295,7 @@ msgid "Order Type"
1291
  msgstr ""
1292
 
1293
  #: classes/admin/class-wc-order-export-manage.php:250
1294
- #: classes/formats/class-woe-formatter-xls.php:305
1295
  msgid "Orders"
1296
  msgstr ""
1297
 
@@ -1303,13 +1307,13 @@ msgstr ""
1303
  msgid "Orientation"
1304
  msgstr ""
1305
 
1306
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1341
1307
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1366
1308
  msgid "Other items"
1309
  msgstr ""
1310
 
1311
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1345
1312
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1370
1313
  msgid "Others"
1314
  msgstr ""
1315
 
@@ -1353,7 +1357,7 @@ msgid "Page size"
1353
  msgstr ""
1354
 
1355
  #: view/settings-form.php:160
1356
- #: classes/core/class-wc-order-export-data-extractor-ui.php:649
1357
  msgid "Paid Date"
1358
  msgstr ""
1359
 
@@ -1363,15 +1367,15 @@ msgid ""
1363
  "install."
1364
  msgstr ""
1365
 
1366
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1155
1367
  msgid "Payment Method"
1368
  msgstr ""
1369
 
1370
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1150
1371
  msgid "Payment Method Title"
1372
  msgstr ""
1373
 
1374
- #: view/settings-form.php:1415
1375
  msgid "Payment methods"
1376
  msgstr ""
1377
 
@@ -1379,11 +1383,15 @@ msgstr ""
1379
  msgid "PDF options"
1380
  msgstr ""
1381
 
1382
- #: classes/core/class-wc-order-export-data-extractor-ui.php:874
1383
  msgid "Phone (Billing)"
1384
  msgstr ""
1385
 
1386
- #: view/settings-form.php:931
 
 
 
 
1387
  msgid ""
1388
  "Please check permissions for your role. You must have capability "
1389
  "“edit_themes” to use this box."
@@ -1395,7 +1403,7 @@ msgid ""
1395
  "Order Export For WooCommerce!"
1396
  msgstr ""
1397
 
1398
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1400
1399
  msgid "Please, choose the template"
1400
  msgstr ""
1401
 
@@ -1422,15 +1430,15 @@ msgstr ""
1422
  msgid "Portrait"
1423
  msgstr ""
1424
 
1425
- #: view/settings-form.php:1392 view/settings-form.php:1442
1426
  msgid "Postcode"
1427
  msgstr ""
1428
 
1429
- #: classes/core/class-wc-order-export-data-extractor-ui.php:854
1430
  msgid "Postcode (Billing)"
1431
  msgstr ""
1432
 
1433
- #: classes/core/class-wc-order-export-data-extractor-ui.php:944
1434
  msgid "Postcode (Shipping)"
1435
  msgstr ""
1436
 
@@ -1438,15 +1446,15 @@ msgstr ""
1438
  msgid "Prepend XML"
1439
  msgstr ""
1440
 
1441
- #: view/settings-form.php:2150
1442
  msgid "Press 'Esc' to cancel the export"
1443
  msgstr ""
1444
 
1445
- #: view/settings-form.php:2106
1446
  msgid "Preview"
1447
  msgstr ""
1448
 
1449
- #: view/settings-form.php:2138
1450
  msgid "Preview size"
1451
  msgstr ""
1452
 
@@ -1455,35 +1463,35 @@ msgstr ""
1455
  msgid "Pro version"
1456
  msgstr ""
1457
 
1458
- #: view/settings-form.php:1058
1459
  msgid "Product categories"
1460
  msgstr ""
1461
 
1462
- #: classes/core/class-wc-order-export-data-extractor-ui.php:393
1463
  msgid "Product Current Price"
1464
  msgstr ""
1465
 
1466
- #: view/settings-form.php:1148
1467
  msgid "Product custom fields"
1468
  msgstr ""
1469
 
1470
- #: view/settings-form.php:1748
1471
  msgid "Product fields"
1472
  msgstr ""
1473
 
1474
- #: classes/core/class-wc-order-export-data-extractor-ui.php:363
1475
  msgid "Product Id"
1476
  msgstr ""
1477
 
1478
- #: classes/core/class-wc-order-export-data-extractor-ui.php:368
1479
  msgid "Product Name"
1480
  msgstr ""
1481
 
1482
- #: classes/core/class-wc-order-export-data-extractor-ui.php:373
1483
  msgid "Product Name (main)"
1484
  msgstr ""
1485
 
1486
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1363
1487
  msgid "Product order items"
1488
  msgstr ""
1489
 
@@ -1491,15 +1499,15 @@ msgstr ""
1491
  msgid "Product rows start with a new line"
1492
  msgstr ""
1493
 
1494
- #: classes/core/class-wc-order-export-data-extractor-ui.php:388
1495
  msgid "Product Seller"
1496
  msgstr ""
1497
 
1498
- #: classes/core/class-wc-order-export-data-extractor-ui.php:458
1499
  msgid "Product Shipping Class"
1500
  msgstr ""
1501
 
1502
- #: view/settings-form.php:1107
1503
  msgid "Product SKU"
1504
  msgstr ""
1505
 
@@ -1507,28 +1515,28 @@ msgstr ""
1507
  msgid "Product tag"
1508
  msgstr ""
1509
 
1510
- #: view/settings-form.php:1113
1511
  msgid "Product taxonomies"
1512
  msgstr ""
1513
 
1514
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1339
1515
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1364
1516
  msgid "Product totals"
1517
  msgstr ""
1518
 
1519
- #: classes/core/class-wc-order-export-data-extractor-ui.php:443
1520
  msgid "Product URL"
1521
  msgstr ""
1522
 
1523
- #: classes/core/class-wc-order-export-data-extractor-ui.php:378
1524
  msgid "Product Variation"
1525
  msgstr ""
1526
 
1527
- #: view/settings-form.php:1092
1528
  #: classes/admin/class-wc-order-export-manage.php:694
1529
- #: classes/core/class-wc-order-export-data-extractor-ui.php:965
1530
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1338
1531
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1362
1532
  msgid "Products"
1533
  msgstr ""
1534
 
@@ -1544,19 +1552,19 @@ msgstr ""
1544
  msgid "Profiles"
1545
  msgstr ""
1546
 
1547
- #: classes/core/class-wc-order-export-data-extractor-ui.php:991
1548
  msgid "Quantity"
1549
  msgstr ""
1550
 
1551
- #: classes/core/class-wc-order-export-data-extractor-ui.php:996
1552
  msgid "Quantity (- Refund)"
1553
  msgstr ""
1554
 
1555
- #: view/settings-form.php:936
1556
  msgid "Read how to fix it"
1557
  msgstr ""
1558
 
1559
- #: view/settings-form.php:1593
1560
  msgid "Remove all fields"
1561
  msgstr ""
1562
 
@@ -1584,11 +1592,11 @@ msgstr ""
1584
  msgid "repeat header as last line"
1585
  msgstr ""
1586
 
1587
- #: view/settings-form.php:2132
1588
  msgid "Reset settings"
1589
  msgstr ""
1590
 
1591
- #: classes/core/class-wc-order-export-data-extractor.php:1911
1592
  msgid "Rest of the World"
1593
  msgstr ""
1594
 
@@ -1617,11 +1625,11 @@ msgstr ""
1617
  msgid "Sat"
1618
  msgstr ""
1619
 
1620
- #: view/settings-form.php:2113
1621
  msgid "Save & Exit"
1622
  msgstr ""
1623
 
1624
- #: view/settings-form.php:2110 view/settings-form.php:2115
1625
  msgid "Save settings"
1626
  msgstr ""
1627
 
@@ -1649,7 +1657,7 @@ msgstr ""
1649
  msgid "Set up coupon fields"
1650
  msgstr ""
1651
 
1652
- #: view/settings-form.php:1570
1653
  msgid "Set up fields to export"
1654
  msgstr ""
1655
 
@@ -1669,69 +1677,73 @@ msgstr ""
1669
  msgid "Settings saved"
1670
  msgstr ""
1671
 
1672
- #: view/settings-form.php:2145 view/tab/tools.php:86
1673
  msgid "Settings were successfully updated!"
1674
  msgstr ""
1675
 
1676
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1343
1677
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1368
1678
  msgid "Shipping"
1679
  msgstr ""
1680
 
1681
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1337
1682
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1361
1683
  msgid "Shipping Address"
1684
  msgstr ""
1685
 
1686
- #: view/settings-form.php:908
1687
  msgid "Shipping fields use billing details (if shipping address is empty)"
1688
  msgstr ""
1689
 
1690
- #: view/settings-form.php:1436
1691
  msgid "Shipping locations"
1692
  msgstr ""
1693
 
1694
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1215
1695
  msgid "Shipping Method"
1696
  msgstr ""
1697
 
1698
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1220
1699
  msgid "Shipping Method (no id)"
1700
  msgstr ""
1701
 
1702
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1210
1703
  msgid "Shipping Method Title"
1704
  msgstr ""
1705
 
1706
- #: view/settings-form.php:1465
1707
  msgid "Shipping methods"
1708
  msgstr ""
1709
 
1710
- #: view/settings-form.php:1935
1711
  msgid "Shipping name"
1712
  msgstr ""
1713
 
1714
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1225
1715
  msgid "Shipping Zone"
1716
  msgstr ""
1717
 
1718
- #: classes/core/class-wc-order-export-data-extractor-ui.php:468
1719
  msgid "Short Description"
1720
  msgstr ""
1721
 
1722
- #: view/settings-form.php:1056
 
 
 
 
1723
  msgid "Skip fully refunded items"
1724
  msgstr ""
1725
 
1726
- #: classes/core/class-wc-order-export-data-extractor-ui.php:353
1727
  msgid "SKU"
1728
  msgstr ""
1729
 
1730
- #: classes/core/class-wc-order-export-data-extractor-ui.php:358
1731
  msgid "SKU (parent)"
1732
  msgstr ""
1733
 
1734
- #: view/settings-form.php:839
1735
  #, php-format
1736
  msgid "Sort orders by %s in %s order"
1737
  msgstr ""
@@ -1744,23 +1756,23 @@ msgstr ""
1744
  msgid "Start tag"
1745
  msgstr ""
1746
 
1747
- #: view/settings-form.php:1391 view/settings-form.php:1441
1748
  msgid "State"
1749
  msgstr ""
1750
 
1751
- #: classes/core/class-wc-order-export-data-extractor-ui.php:834
1752
  msgid "State Code (Billing)"
1753
  msgstr ""
1754
 
1755
- #: classes/core/class-wc-order-export-data-extractor-ui.php:924
1756
  msgid "State Code (Shipping)"
1757
  msgstr ""
1758
 
1759
- #: classes/core/class-wc-order-export-data-extractor-ui.php:849
1760
  msgid "State Name (Billing)"
1761
  msgstr ""
1762
 
1763
- #: classes/core/class-wc-order-export-data-extractor-ui.php:939
1764
  msgid "State Name (Shipping)"
1765
  msgstr ""
1766
 
@@ -1768,22 +1780,26 @@ msgstr ""
1768
  msgid "Status change jobs"
1769
  msgstr ""
1770
 
1771
- #: classes/core/class-wc-order-export-data-extractor-ui.php:438
1772
  msgid "Stock Quantity"
1773
  msgstr ""
1774
 
1775
- #: classes/core/class-wc-order-export-data-extractor-ui.php:433
1776
  msgid "Stock Status"
1777
  msgstr ""
1778
 
1779
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1389
1780
  msgid "String"
1781
  msgstr ""
1782
 
1783
- #: view/settings-form.php:890
1784
  msgid "Strip tags from Product Description/Variation"
1785
  msgstr ""
1786
 
 
 
 
 
1787
  #: view/settings-form.php:208
1788
  msgid "Summary Report By Customers"
1789
  msgstr ""
@@ -1792,63 +1808,75 @@ msgstr ""
1792
  msgid "Summary Report By Products"
1793
  msgstr ""
1794
 
1795
- #: classes/core/class-wc-order-export-data-extractor-ui.php:744
1796
  msgid "Summary Report Sum of Items (Exported)"
1797
  msgstr ""
1798
 
1799
- #: classes/core/class-wc-order-export-data-extractor-ui.php:488
1800
- #: classes/core/class-wc-order-export-data-extractor-ui.php:749
1801
  msgid "Summary Report Total Amount"
1802
  msgstr ""
1803
 
1804
- #: classes/core/class-wc-order-export-data-extractor-ui.php:754
 
 
 
 
 
 
 
 
1805
  msgid "Summary Report Total Amount Paid"
1806
  msgstr ""
1807
 
1808
- #: classes/core/class-wc-order-export-data-extractor-ui.php:503
1809
- #: classes/core/class-wc-order-export-data-extractor-ui.php:764
1810
  msgid "Summary Report Total Discount"
1811
  msgstr ""
1812
 
1813
- #: classes/core/class-wc-order-export-data-extractor-ui.php:784
1814
  msgid "Summary Report Total Fee Amount"
1815
  msgstr ""
1816
 
1817
- #: classes/core/class-wc-order-export-data-extractor-ui.php:734
1818
  msgid "Summary Report Total Items"
1819
  msgstr ""
1820
 
1821
- #: classes/core/class-wc-order-export-data-extractor-ui.php:739
1822
  msgid "Summary Report Total Items (Exported)"
1823
  msgstr ""
1824
 
1825
- #: classes/core/class-wc-order-export-data-extractor-ui.php:729
1826
  msgid "Summary Report Total Orders"
1827
  msgstr ""
1828
 
1829
- #: classes/core/class-wc-order-export-data-extractor-ui.php:483
1830
  msgid "Summary Report Total Quantity"
1831
  msgstr ""
1832
 
1833
- #: classes/core/class-wc-order-export-data-extractor-ui.php:513
1834
- #: classes/core/class-wc-order-export-data-extractor-ui.php:774
 
 
 
 
1835
  msgid "Summary Report Total Refund Amount"
1836
  msgstr ""
1837
 
1838
- #: classes/core/class-wc-order-export-data-extractor-ui.php:508
1839
- #: classes/core/class-wc-order-export-data-extractor-ui.php:769
1840
  msgid "Summary Report Total Refund Count"
1841
  msgstr ""
1842
 
1843
- #: classes/core/class-wc-order-export-data-extractor-ui.php:759
1844
  msgid "Summary Report Total Shipping"
1845
  msgstr ""
1846
 
1847
- #: classes/core/class-wc-order-export-data-extractor-ui.php:779
1848
  msgid "Summary Report Total Tax Amount"
1849
  msgstr ""
1850
 
1851
- #: classes/core/class-wc-order-export-data-extractor-ui.php:493
1852
  msgid "Summary Report Total Weight"
1853
  msgstr ""
1854
 
@@ -1884,30 +1912,30 @@ msgstr ""
1884
  msgid "Table row text color"
1885
  msgstr ""
1886
 
1887
- #: classes/core/class-wc-order-export-data-extractor-ui.php:408
1888
  msgid "Tags"
1889
  msgstr ""
1890
 
1891
- #: view/settings-form.php:1957
1892
  msgid "Tax name"
1893
  msgstr ""
1894
 
1895
- #: view/settings-form.php:1764
1896
  msgid "Taxonomy"
1897
  msgstr ""
1898
 
1899
- #: classes/core/class-wc-order-export-engine.php:376
1900
  #, php-format
1901
  msgid "The code you are trying to save produced a fatal error on line %d:"
1902
  msgstr ""
1903
 
1904
- #: view/settings-form.php:1045
1905
  msgid ""
1906
  "The filters won't work correctly.<br>Another plugin(or theme) has loaded "
1907
  "outdated Select2.js"
1908
  msgstr ""
1909
 
1910
- #: view/settings-form.php:1654 view/settings-form.php:1810
1911
  msgid ""
1912
  "The plugin fetches meta keys from the existing orders. So you should create "
1913
  "fake order if you've added new field just now."
@@ -1945,6 +1973,10 @@ msgstr ""
1945
  msgid "Time"
1946
  msgstr ""
1947
 
 
 
 
 
1948
  #: classes/class-wc-order-export-admin.php:367
1949
  msgid "Title is empty"
1950
  msgstr ""
@@ -1957,32 +1989,36 @@ msgstr ""
1957
  msgid "Tools"
1958
  msgstr ""
1959
 
1960
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1113
 
 
 
 
1961
  msgid "Total items"
1962
  msgstr ""
1963
 
1964
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1123
1965
  msgid "Total products"
1966
  msgstr ""
1967
 
1968
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1128
1969
  msgid "Total volume"
1970
  msgstr ""
1971
 
1972
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1108
1973
  msgid "Total weight"
1974
  msgstr ""
1975
 
1976
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1344
1977
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1369
1978
  msgid "Totals"
1979
  msgstr ""
1980
 
1981
- #: classes/core/class-wc-order-export-data-extractor-ui.php:634
1982
  msgid "Transaction ID"
1983
  msgstr ""
1984
 
1985
- #: view/settings-form.php:914
1986
  msgid "Try to convert serialized values"
1987
  msgstr ""
1988
 
@@ -1994,11 +2030,11 @@ msgstr ""
1994
  msgid "Tue"
1995
  msgstr ""
1996
 
1997
- #: view/settings-form.php:2071
1998
  msgid "Turn off mode Summary report to export order fields"
1999
  msgstr ""
2000
 
2001
- #: classes/core/class-wc-order-export-data-extractor-ui.php:398
2002
  msgid "Type"
2003
  msgstr ""
2004
 
@@ -2016,19 +2052,19 @@ msgstr ""
2016
  msgid "Unmark exported"
2017
  msgstr ""
2018
 
2019
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1377
2020
  msgid "Use \"Add field\" to export specific product attribute"
2021
  msgstr ""
2022
 
2023
- #: view/settings-form.php:940
2024
  msgid "Use only unnamed functions!"
2025
  msgstr ""
2026
 
2027
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1383
2028
  msgid "Use section \"Product order item\" to add item meta"
2029
  msgstr ""
2030
 
2031
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1376
2032
  msgid "Use section \"Product order items\" to add attributes"
2033
  msgstr ""
2034
 
@@ -2040,32 +2076,32 @@ msgstr ""
2040
  msgid "user guide"
2041
  msgstr ""
2042
 
2043
- #: view/settings-form.php:1299
2044
  msgid "User roles"
2045
  msgstr ""
2046
 
2047
- #: classes/core/class-wc-order-export-data-extractor-ui.php:694
2048
  msgid "User Website"
2049
  msgstr ""
2050
 
2051
- #: view/settings-form.php:1285
2052
  msgid "Usernames"
2053
  msgstr ""
2054
 
2055
- #: view/settings-form.php:1697 view/settings-form.php:1794
2056
- #: view/settings-form.php:1847 view/settings-form.php:1895
2057
  msgid "Value"
2058
  msgstr ""
2059
 
2060
- #: view/settings-form.php:1189
2061
  msgid "Variable product attributes"
2062
  msgstr ""
2063
 
2064
- #: classes/core/class-wc-order-export-data-extractor-ui.php:383
2065
  msgid "Variation Id"
2066
  msgstr ""
2067
 
2068
- #: view/settings-form.php:1076
2069
  msgid "Vendors/creators"
2070
  msgstr ""
2071
 
@@ -2073,11 +2109,11 @@ msgstr ""
2073
  msgid "Wed"
2074
  msgstr ""
2075
 
2076
- #: classes/core/class-wc-order-export-data-extractor-ui.php:428
2077
  msgid "Weight"
2078
  msgstr ""
2079
 
2080
- #: classes/core/class-wc-order-export-data-extractor-ui.php:413
2081
  msgid "Width"
2082
  msgstr ""
2083
 
@@ -2101,8 +2137,8 @@ msgstr ""
2101
  msgid "You can not do it"
2102
  msgstr ""
2103
 
2104
- #: view/settings-form.php:1980 view/settings-form.php:2010
2105
- #: view/settings-form.php:2040
2106
  msgid "You should add code to section \"Misc Settings\". Read the guide"
2107
  msgstr ""
2108
 
3
  msgstr ""
4
  "Project-Id-Version: Advanced Order Export For WooCommerce\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2022-05-17 13:07+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"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.6.1; wp-6.0-RC2\n"
17
  "X-Domain: woo-order-export-lite"
18
 
19
  #: classes/class-wc-order-export-admin.php:578
35
  msgid "-"
36
  msgstr ""
37
 
38
+ #: view/settings-form.php:858
39
  msgid "- don't modify -"
40
  msgstr ""
41
 
47
  msgid "1st row only"
48
  msgstr ""
49
 
50
+ #: classes/core/class-wc-order-export-data-extractor.php:1913
51
  msgid "[Rest of the World]"
52
  msgstr ""
53
 
54
+ #: view/settings-form.php:1634 view/settings-form.php:1648
55
  msgid "Actions"
56
  msgstr ""
57
 
64
  msgid "Add %s fields"
65
  msgstr ""
66
 
67
+ #: view/settings-form.php:1643
68
  msgid "Add calculated field"
69
  msgstr ""
70
 
71
+ #: view/settings-form.php:1651
72
  msgid "Add fee"
73
  msgstr ""
74
 
75
+ #: view/settings-form.php:1637
76
  msgid "Add field"
77
  msgstr ""
78
 
80
  msgid "Add links to images"
81
  msgstr ""
82
 
83
+ #: view/settings-form.php:1654
84
  msgid "Add shipping"
85
  msgstr ""
86
 
87
+ #: view/settings-form.php:1640
88
  msgid "Add static field"
89
  msgstr ""
90
 
91
+ #: view/settings-form.php:1657
92
  msgid "Add tax"
93
  msgstr ""
94
 
95
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:863
96
  msgid "Address 1 (Billing)"
97
  msgstr ""
98
 
99
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:953
100
  msgid "Address 1 (Shipping)"
101
  msgstr ""
102
 
103
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:858
104
  msgid "Address 1&2 (Billing)"
105
  msgstr ""
106
 
107
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:948
108
  msgid "Address 1&2 (Shipping)"
109
  msgstr ""
110
 
111
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:868
112
  msgid "Address 2 (Billing)"
113
  msgstr ""
114
 
115
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:958
116
  msgid "Address 2 (Shipping)"
117
  msgstr ""
118
 
138
  msgid "all rows"
139
  msgstr ""
140
 
141
+ #: view/settings-form.php:1365
142
  msgid "Any coupon used"
143
  msgstr ""
144
 
154
  msgid "as"
155
  msgstr ""
156
 
157
+ #: view/settings-form.php:839
158
  msgid "Ascending"
159
  msgstr ""
160
 
162
  msgid "Auto column width"
163
  msgstr ""
164
 
165
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1385
166
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1409
167
  msgid "Billing Address"
168
  msgstr ""
169
 
170
+ #: view/settings-form.php:1391
171
  msgid "Billing locations"
172
  msgstr ""
173
 
198
  msgid "Can't find exported file"
199
  msgstr ""
200
 
201
+ #: view/settings-form.php:1694 view/settings-form.php:1715
202
+ #: view/settings-form.php:1751 view/settings-form.php:1791
203
+ #: view/settings-form.php:1813 view/settings-form.php:1844
204
+ #: view/settings-form.php:1866 view/settings-form.php:1892
205
+ #: view/settings-form.php:1915 view/settings-form.php:1937
206
+ #: view/settings-form.php:1959 view/settings-form.php:1981
207
+ #: view/settings-form.php:2011 view/settings-form.php:2041
208
+ #: view/settings-form.php:2071
209
  msgid "Cancel"
210
  msgstr ""
211
 
212
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1391
213
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1416
214
  msgid "Cart"
215
  msgstr ""
216
 
217
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1214
218
  msgid "Cart Discount Amount"
219
  msgstr ""
220
 
221
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1219
222
  msgid "Cart Discount Amount Tax"
223
  msgstr ""
224
 
225
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1249
226
  msgid "Cart Tax Amount"
227
  msgstr ""
228
 
229
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:418
230
  msgid "Category"
231
  msgstr ""
232
 
234
  msgid "Center align"
235
  msgstr ""
236
 
237
+ #: view/settings-form.php:853
238
  msgid "Change order status to"
239
  msgstr ""
240
 
242
  msgid "Character encoding"
243
  msgstr ""
244
 
245
+ #: view/settings-form.php:1395 view/settings-form.php:1445
246
  msgid "City"
247
  msgstr ""
248
 
249
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:873
250
  msgid "City (Billing)"
251
  msgstr ""
252
 
253
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:963
254
  msgid "City (Shipping)"
255
  msgstr ""
256
 
257
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:888
258
  msgid "City, State Zip (Billing)"
259
  msgstr ""
260
 
261
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:978
262
  msgid "City, State Zip (Shipping)"
263
  msgstr ""
264
 
265
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:883
266
  msgid "City, State, Zip (Billing)"
267
  msgstr ""
268
 
269
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:973
270
  msgid "City, State, Zip (Shipping)"
271
  msgstr ""
272
 
273
+ #: view/settings-form.php:907
274
  msgid "Cleanup phone (export only digits)"
275
  msgstr ""
276
 
277
+ #: view/settings-form.php:2161
278
  msgid "Click here to download"
279
  msgstr ""
280
 
282
  msgid "code snippets"
283
  msgstr ""
284
 
285
+ #: view/settings-form.php:1684 view/settings-form.php:1700
286
+ #: view/settings-form.php:1741 view/settings-form.php:1783
287
+ #: view/settings-form.php:1797 view/settings-form.php:1836
288
+ #: view/settings-form.php:1850 view/settings-form.php:1883
289
+ #: view/settings-form.php:1898 view/settings-form.php:1927
290
+ #: view/settings-form.php:1949 view/settings-form.php:1971
291
  msgid "Column name"
292
  msgstr ""
293
 
315
  msgid "comma separated list"
316
  msgstr ""
317
 
318
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1383
319
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1407
320
  msgid "Common"
321
  msgstr ""
322
 
323
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:853
324
  msgid "Company (Billing)"
325
  msgstr ""
326
 
327
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:943
328
  msgid "Company (Shipping)"
329
  msgstr ""
330
 
331
  #: view/settings-form.php:167
332
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:679
333
  msgid "Completed Date"
334
  msgstr ""
335
 
336
+ #: view/settings-form.php:1692 view/settings-form.php:1713
337
+ #: view/settings-form.php:1749 view/settings-form.php:1789
338
+ #: view/settings-form.php:1811 view/settings-form.php:1842
339
+ #: view/settings-form.php:1864 view/settings-form.php:1890
340
+ #: view/settings-form.php:1912 view/settings-form.php:1934
341
+ #: view/settings-form.php:1956 view/settings-form.php:1978
342
+ #: view/settings-form.php:2008 view/settings-form.php:2038
343
+ #: view/settings-form.php:2068
344
  msgid "Confirm"
345
  msgstr ""
346
 
354
  "install."
355
  msgstr ""
356
 
357
+ #: view/settings-form.php:1398 view/settings-form.php:1448
358
  msgid "Country"
359
  msgstr ""
360
 
361
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:903
362
  msgid "Country Code (Billing)"
363
  msgstr ""
364
 
365
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:993
366
  msgid "Country Code (Shipping)"
367
  msgstr ""
368
 
369
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:908
370
  msgid "Country Name (Billing)"
371
  msgstr ""
372
 
373
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:998
374
  msgid "Country Name (Shipping)"
375
  msgstr ""
376
 
377
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:589
378
  msgid "Coupon Amount"
379
  msgstr ""
380
 
381
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:560
382
  msgid "Coupon Code"
383
  msgstr ""
384
 
385
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:580
386
  msgid "Coupon Description"
387
  msgstr ""
388
 
390
  msgid "Coupon tag"
391
  msgstr ""
392
 
393
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:584
394
  msgid "Coupon Type"
395
  msgstr ""
396
 
397
+ #: view/settings-form.php:1368
398
  #: classes/admin/class-wc-order-export-manage.php:737
399
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1188
400
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1389
401
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1414
402
  msgid "Coupons"
403
  msgstr ""
404
 
410
  msgid "CSV options"
411
  msgstr ""
412
 
413
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:669
414
  msgid "Currency"
415
  msgstr ""
416
 
417
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:674
418
+ msgid "Currency Symbol"
419
+ msgstr ""
420
+
421
  #: view/settings-form.php:768 view/settings-form.php:794
422
  msgid "custom"
423
  msgstr ""
426
  msgid "Custom css"
427
  msgstr ""
428
 
429
+ #: view/settings-form.php:1005 view/settings-form.php:1316
430
  msgid "Custom fields"
431
  msgstr ""
432
 
433
+ #: view/settings-form.php:931
434
  msgid "Custom PHP code to modify output"
435
  msgstr ""
436
 
437
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1384
438
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1408
439
  msgid "Customer"
440
  msgstr ""
441
 
442
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:763
443
  msgid "Customer first order date"
444
  msgstr ""
445
 
446
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:723
447
  msgid "Customer IP address"
448
  msgstr ""
449
 
450
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:768
451
  msgid "Customer last order date"
452
  msgstr ""
453
 
454
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:694
455
  msgid "Customer Note"
456
  msgstr ""
457
 
458
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:748
459
  msgid "Customer Role"
460
  msgstr ""
461
 
462
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:753
463
  msgid "Customer Total Orders"
464
  msgstr ""
465
 
466
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:758
467
  msgid "Customer Total Spent"
468
  msgstr ""
469
 
470
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:743
471
  msgid "Customer User Email"
472
  msgstr ""
473
 
474
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:728
475
  msgid "Customer User ID"
476
  msgstr ""
477
 
478
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:733
479
  msgid "Customer Username"
480
  msgstr ""
481
 
482
  #: view/settings-form.php:750
483
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1441
484
  msgid "Date"
485
  msgstr ""
486
 
488
  msgid "Date From is greater than Date To"
489
  msgstr ""
490
 
491
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:689
492
  msgid "Date of first refund"
493
  msgstr ""
494
 
495
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:654
496
  msgid "Date of original order"
497
  msgstr ""
498
 
500
  msgid "Date range"
501
  msgstr ""
502
 
503
+ #: view/settings-form.php:837
504
  msgid "Descending"
505
  msgstr ""
506
 
507
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:478
508
  msgid "Description"
509
  msgstr ""
510
 
511
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:565
512
  msgid "Discount Amount"
513
  msgstr ""
514
 
515
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:575
516
  msgid "Discount Amount + Tax"
517
  msgstr ""
518
 
519
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:570
520
  msgid "Discount Amount Tax"
521
  msgstr ""
522
 
532
  msgid "Don't escape /"
533
  msgstr ""
534
 
535
+ #: view/settings-form.php:966
536
  msgid "Don't export child orders"
537
  msgstr ""
538
 
543
  "reduce reply time :)"
544
  msgstr ""
545
 
546
+ #: classes/core/class-wc-order-export-engine.php:389
547
  msgid "Don't Panic"
548
  msgstr ""
549
 
551
  msgid "Don't put page break between order lines"
552
  msgstr ""
553
 
554
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:463
555
  msgid "Download URL"
556
  msgstr ""
557
 
558
+ #: view/settings-form.php:1595
559
  msgid "Drag rows to reorder exported fields"
560
  msgstr ""
561
 
563
  msgid "Edit order"
564
  msgstr ""
565
 
566
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:913
567
  msgid "Email (Billing)"
568
  msgstr ""
569
 
570
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:528
571
  msgid "Embedded Product Image"
572
  msgstr ""
573
 
574
  #: classes/class-wc-order-export-admin.php:372
575
+ #: classes/core/class-wc-order-export-data-extractor.php:316
576
  msgid "empty"
577
  msgstr ""
578
 
592
  msgid "empty value"
593
  msgstr ""
594
 
595
+ #: view/settings-form.php:925
596
  msgid "Enable debug output"
597
  msgstr ""
598
 
608
  msgid "End tag"
609
  msgstr ""
610
 
611
+ #: view/settings-form.php:1265
612
  msgid "Exclude products"
613
  msgstr ""
614
 
615
+ #: view/settings-form.php:2128
616
  msgid "Export"
617
  msgstr ""
618
 
619
+ #: view/settings-form.php:2132
620
  msgid "Export [w/o progressbar]"
621
  msgstr ""
622
 
623
+ #: view/settings-form.php:883
624
  msgid "Export all order notes"
625
  msgstr ""
626
 
627
+ #: view/settings-form.php:1057
628
  msgid "Export all products from the order"
629
  msgstr ""
630
 
651
  msgid "Export now"
652
  msgstr ""
653
 
654
+ #: view/settings-form.php:1491
655
  msgid "Export only matched product items"
656
  msgstr ""
657
 
666
  msgid "Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)"
667
  msgstr ""
668
 
669
+ #: view/settings-form.php:889
670
  msgid "Export refund notes as Customer Note"
671
  msgstr ""
672
 
673
+ #: view/settings-form.php:978
674
  msgid "Export refunds"
675
  msgstr ""
676
 
682
  msgid "Export Status"
683
  msgstr ""
684
 
685
+ #: view/settings-form.php:2144
686
  #, php-format
687
  msgid "Export total: %s orders"
688
  msgstr ""
689
 
690
+ #: view/settings-form.php:989
691
  msgid "Export unmarked orders only"
692
  msgstr ""
693
 
694
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1167
695
  msgid "Exported items"
696
  msgstr ""
697
 
699
  msgid "Express export"
700
  msgstr ""
701
 
702
+ #: view/settings-form.php:1921
703
  msgid "Fee name"
704
  msgstr ""
705
 
715
  msgid "Fill order columns for"
716
  msgstr ""
717
 
718
+ #: view/settings-form.php:1386
719
  msgid "Filter by billing"
720
  msgstr ""
721
 
722
+ #: view/settings-form.php:1359
723
  msgid "Filter by coupon"
724
  msgstr ""
725
 
726
+ #: view/settings-form.php:1286
727
  msgid "Filter by customer"
728
  msgstr ""
729
 
730
+ #: view/settings-form.php:1486
731
  msgid "Filter by item and metadata"
732
  msgstr ""
733
 
734
+ #: view/settings-form.php:961
735
  msgid "Filter by order"
736
  msgstr ""
737
 
738
+ #: view/settings-form.php:1052
739
  msgid "Filter by product"
740
  msgstr ""
741
 
742
+ #: view/settings-form.php:1436
743
  msgid "Filter by shipping"
744
  msgstr ""
745
 
747
  msgid "Filter orders by"
748
  msgstr ""
749
 
750
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:838
751
  msgid "First Name (Billing)"
752
  msgstr ""
753
 
754
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:928
755
  msgid "First Name (Shipping)"
756
  msgstr ""
757
 
783
  msgid "Format"
784
  msgstr ""
785
 
786
+ #: view/settings-form.php:877
787
  msgid "Format numbers (use WC decimal separator)"
788
  msgstr ""
789
 
795
  msgid "Fri"
796
  msgstr ""
797
 
798
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:848
799
  msgid "Full Name (Billing)"
800
  msgstr ""
801
 
802
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:938
803
  msgid "Full Name (Shipping)"
804
  msgstr ""
805
 
806
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:488
807
  msgid "Full names for categories"
808
  msgstr ""
809
 
810
+ #: view/settings-form.php:2166
811
  msgid "Generating file..."
812
  msgstr ""
813
 
827
  msgid "Header text color"
828
  msgstr ""
829
 
830
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:438
831
  msgid "Height"
832
  msgstr ""
833
 
839
  msgid "helpdesk system"
840
  msgstr ""
841
 
842
+ #: view/settings-form.php:1680 view/settings-form.php:1737
843
+ #: view/settings-form.php:1767 view/settings-form.php:1831
844
+ #: view/settings-form.php:1874
845
  msgid "Hide unused fields"
846
  msgstr ""
847
 
853
  msgid "https://algolplus.com/"
854
  msgstr ""
855
 
856
+ #: view/settings-form.php:2108
857
  #, php-format
858
  msgid ""
859
  "If you see this message after page load, user interface won't work correctly!"
861
  "it). Probably, it's a conflict with another plugin or active theme."
862
  msgstr ""
863
 
864
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1442
865
  msgid "Image"
866
  msgstr ""
867
 
868
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:468
869
  msgid "Image URL"
870
  msgstr ""
871
 
887
  msgid "Import settings"
888
  msgstr ""
889
 
890
+ #: view/settings-form.php:2133
891
  msgid "It might not work for huge datasets!"
892
  msgstr ""
893
 
894
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1030
895
  msgid "Item #"
896
  msgstr ""
897
 
898
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1050
899
  msgid "Item Cost"
900
  msgstr ""
901
 
902
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1055
903
  msgid "Item Cost (inc. tax)"
904
  msgstr ""
905
 
906
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1060
907
  msgid "Item Cost Before Discount"
908
  msgstr ""
909
 
910
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1115
911
  msgid "Item Discount Amount"
912
  msgstr ""
913
 
914
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1140
915
  msgid "Item Discount Amount + Tax"
916
  msgstr ""
917
 
918
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1135
919
  msgid "Item Discount Tax"
920
  msgstr ""
921
 
922
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1125
923
  msgid "Item download URL"
924
  msgstr ""
925
 
926
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1025
927
  msgid "Item ID"
928
  msgstr ""
929
 
930
+ #: view/settings-form.php:1229
931
  msgid "Item meta data"
932
  msgstr ""
933
 
934
+ #: view/settings-form.php:1528
935
  msgid "Item metadata"
936
  msgstr ""
937
 
938
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1035
939
  msgid "Item Name"
940
  msgstr ""
941
 
942
+ #: view/settings-form.php:1495
943
  msgid "Item names"
944
  msgstr ""
945
 
946
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1120
947
  msgid "Item Tax Rate"
948
  msgstr ""
949
 
950
+ #: view/settings-form.php:901
951
  msgid "Item Tax Rate as an integer"
952
  msgstr ""
953
 
963
  msgid "L,C or R. Comma separated list"
964
  msgstr ""
965
 
966
+ #: view/settings-form.php:1999 view/settings-form.php:2029
967
+ #: view/settings-form.php:2059
968
  msgid "Label"
969
  msgstr ""
970
 
972
  msgid "Landscape"
973
  msgstr ""
974
 
975
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:843
976
  msgid "Last Name (Billing)"
977
  msgstr ""
978
 
979
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:933
980
  msgid "Last Name (Shipping)"
981
  msgstr ""
982
 
988
  msgid "Legal"
989
  msgstr ""
990
 
991
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:433
992
  msgid "Length"
993
  msgstr ""
994
 
1000
  msgid "Line Break"
1001
  msgstr ""
1002
 
1003
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:629
1004
  msgid "Line number"
1005
  msgstr ""
1006
 
1007
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1443
1008
  msgid "Link"
1009
  msgstr ""
1010
 
1011
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:704
1012
  msgid "Link to edit order"
1013
  msgstr ""
1014
 
1030
  "Look at %s for popular plugins or check %s to study how to extend the plugin."
1031
  msgstr ""
1032
 
1033
+ #: classes/core/class-wc-order-export-engine.php:537
1034
  msgid "Main SQL queries are listed below"
1035
  msgstr ""
1036
 
1038
  msgid "Mark exported"
1039
  msgstr ""
1040
 
1041
+ #: view/settings-form.php:985
1042
  msgid "Mark exported orders"
1043
  msgstr ""
1044
 
1045
+ #: view/settings-form.php:1664 view/settings-form.php:1721
1046
+ #: view/settings-form.php:1871 view/settings-form.php:1993
1047
+ #: view/settings-form.php:2023 view/settings-form.php:2053
1048
  msgid "Meta key"
1049
  msgstr ""
1050
 
1051
+ #: view/settings-form.php:2115
1052
  msgid "Might be different from actual export!"
1053
  msgstr ""
1054
 
1055
+ #: view/settings-form.php:871
1056
  msgid "Misc settings"
1057
  msgstr ""
1058
 
1059
  #: view/settings-form.php:153 view/settings-form.php:810
1060
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:659
1061
  msgid "Modification Date"
1062
  msgstr ""
1063
 
1065
  msgid "Mon"
1066
  msgstr ""
1067
 
1068
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1439
1069
  msgid "Money"
1070
  msgstr ""
1071
 
1082
  msgid "No page numbers"
1083
  msgstr ""
1084
 
1085
+ #: classes/formats/class-woe-formatter-pdf.php:177
1086
+ #: classes/formats/class-woe-formatter-html.php:152
1087
  #: classes/formats/abstract-class-woe-formatter-sv.php:107
1088
+ #: classes/formats/class-woe-formatter-xls.php:218
1089
  msgid "No results"
1090
  msgstr ""
1091
 
1092
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:493
1093
  msgid "Non variation attributes"
1094
  msgstr ""
1095
 
1098
  msgid "Nothing to export. Please, adjust your filters"
1099
  msgstr ""
1100
 
1101
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1440
1102
  msgid "Number"
1103
  msgstr ""
1104
 
1105
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1209
1106
  msgid "Number of coupons used"
1107
  msgstr ""
1108
 
1110
  msgid "one row"
1111
  msgstr ""
1112
 
1113
+ #: view/settings-form.php:1770
1114
  msgid "OR"
1115
  msgstr ""
1116
 
1117
+ #: view/settings-form.php:1675 view/settings-form.php:1732
1118
+ #: view/settings-form.php:1762 view/settings-form.php:1826
1119
+ #: view/settings-form.php:1880
1120
  msgid "or type meta key here"
1121
  msgstr ""
1122
 
1123
  #: view/settings-form.php:146 view/settings-form.php:809
1124
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:649
1125
  msgid "Order Date"
1126
  msgstr ""
1127
 
1128
  #: view/settings-form.php:808
1129
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:634
1130
  msgid "Order ID"
1131
  msgstr ""
1132
 
1133
+ #: view/settings-form.php:1820
1134
  msgid "Order item fields"
1135
  msgstr ""
1136
 
1137
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1130
1138
  msgid "Order Item Metadata"
1139
  msgstr ""
1140
 
1141
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1065
1142
  msgid "Order Line (w/o tax)"
1143
  msgstr ""
1144
 
1145
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1085
1146
  msgid "Order Line Subtotal"
1147
  msgstr ""
1148
 
1149
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1090
1150
  msgid "Order Line Subtotal Tax"
1151
  msgstr ""
1152
 
1153
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1070
1154
  msgid "Order Line Tax"
1155
  msgstr ""
1156
 
1157
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1080
1158
  msgid "Order Line Tax (- Refund)"
1159
  msgstr ""
1160
 
1161
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1075
1162
  msgid "Order Line Tax Refunded"
1163
  msgstr ""
1164
 
1165
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1095
1166
  msgid "Order Line Total"
1167
  msgstr ""
1168
 
1169
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1110
1170
  msgid "Order Line Total (- Refund)"
1171
  msgstr ""
1172
 
1173
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1100
1174
  msgid "Order Line Total (include tax)"
1175
  msgstr ""
1176
 
1177
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1105
1178
  msgid "Order Line Total Refunded"
1179
  msgstr ""
1180
 
1181
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:699
1182
  msgid "Order Notes"
1183
  msgstr ""
1184
 
1185
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:639
1186
  msgid "Order Number"
1187
  msgstr ""
1188
 
1190
  msgid "Order Refund"
1191
  msgstr ""
1192
 
1193
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1324
1194
  msgid "Order Refund Amount"
1195
  msgstr ""
1196
 
1197
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1284
1198
  msgid "Order Shipping + Tax Amount"
1199
  msgstr ""
1200
 
1201
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1279
1202
  msgid "Order Shipping Amount"
1203
  msgstr ""
1204
 
1205
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1294
1206
  msgid "Order Shipping Amount (- Refund)"
1207
  msgstr ""
1208
 
1209
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1289
1210
  msgid "Order Shipping Amount Refunded"
1211
  msgstr ""
1212
 
1213
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1299
1214
  msgid "Order Shipping Tax Amount"
1215
  msgstr ""
1216
 
1217
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1309
1218
  msgid "Order Shipping Tax Amount (- Refund)"
1219
  msgstr ""
1220
 
1221
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1304
1222
  msgid "Order Shipping Tax Refunded"
1223
  msgstr ""
1224
 
1225
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:644
1226
  msgid "Order Status"
1227
  msgstr ""
1228
 
1230
  msgid "Order status"
1231
  msgstr ""
1232
 
1233
+ #: view/settings-form.php:991
1234
  msgid "Order statuses"
1235
  msgstr ""
1236
 
1238
  msgid "Order Subscription"
1239
  msgstr ""
1240
 
1241
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1234
1242
  msgid "Order Subtotal - Cart Discount"
1243
  msgstr ""
1244
 
1245
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1224
1246
  msgid "Order Subtotal Amount"
1247
  msgstr ""
1248
 
1249
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1244
1250
  msgid "Order Subtotal Amount (- Refund)"
1251
  msgstr ""
1252
 
1253
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1229
1254
  msgid "Order Subtotal Amount + Cart Tax"
1255
  msgstr ""
1256
 
1257
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1239
1258
  msgid "Order Subtotal Amount Refunded"
1259
  msgstr ""
1260
 
1262
  msgid "Order tag"
1263
  msgstr ""
1264
 
1265
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1334
1266
  msgid "Order Total Amount"
1267
  msgstr ""
1268
 
1269
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1329
1270
  msgid "Order Total Amount (- Refund)"
1271
  msgstr ""
1272
 
1273
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1339
1274
  msgid "Order Total Amount without Tax"
1275
  msgstr ""
1276
 
1277
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1319
1278
  msgid "Order Total Fee"
1279
  msgstr ""
1280
 
1281
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1344
1282
  msgid "Order Total Tax Amount"
1283
  msgstr ""
1284
 
1285
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1354
1286
  msgid "Order Total Tax Amount (- Refund)"
1287
  msgstr ""
1288
 
1289
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1349
1290
  msgid "Order Total Tax Amount Refunded"
1291
  msgstr ""
1292
 
1295
  msgstr ""
1296
 
1297
  #: classes/admin/class-wc-order-export-manage.php:250
1298
+ #: classes/formats/class-woe-formatter-xls.php:351
1299
  msgid "Orders"
1300
  msgstr ""
1301
 
1307
  msgid "Orientation"
1308
  msgstr ""
1309
 
1310
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1390
1311
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1415
1312
  msgid "Other items"
1313
  msgstr ""
1314
 
1315
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1394
1316
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1419
1317
  msgid "Others"
1318
  msgstr ""
1319
 
1357
  msgstr ""
1358
 
1359
  #: view/settings-form.php:160
1360
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:684
1361
  msgid "Paid Date"
1362
  msgstr ""
1363
 
1367
  "install."
1368
  msgstr ""
1369
 
1370
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1204
1371
  msgid "Payment Method"
1372
  msgstr ""
1373
 
1374
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1199
1375
  msgid "Payment Method Title"
1376
  msgstr ""
1377
 
1378
+ #: view/settings-form.php:1420
1379
  msgid "Payment methods"
1380
  msgstr ""
1381
 
1383
  msgid "PDF options"
1384
  msgstr ""
1385
 
1386
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:918
1387
  msgid "Phone (Billing)"
1388
  msgstr ""
1389
 
1390
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1003
1391
+ msgid "Phone (Shipping)"
1392
+ msgstr ""
1393
+
1394
+ #: view/settings-form.php:936
1395
  msgid ""
1396
  "Please check permissions for your role. You must have capability "
1397
  "“edit_themes” to use this box."
1403
  "Order Export For WooCommerce!"
1404
  msgstr ""
1405
 
1406
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1449
1407
  msgid "Please, choose the template"
1408
  msgstr ""
1409
 
1430
  msgid "Portrait"
1431
  msgstr ""
1432
 
1433
+ #: view/settings-form.php:1397 view/settings-form.php:1447
1434
  msgid "Postcode"
1435
  msgstr ""
1436
 
1437
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:898
1438
  msgid "Postcode (Billing)"
1439
  msgstr ""
1440
 
1441
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:988
1442
  msgid "Postcode (Shipping)"
1443
  msgstr ""
1444
 
1446
  msgid "Prepend XML"
1447
  msgstr ""
1448
 
1449
+ #: view/settings-form.php:2160
1450
  msgid "Press 'Esc' to cancel the export"
1451
  msgstr ""
1452
 
1453
+ #: view/settings-form.php:2114
1454
  msgid "Preview"
1455
  msgstr ""
1456
 
1457
+ #: view/settings-form.php:2146
1458
  msgid "Preview size"
1459
  msgstr ""
1460
 
1463
  msgid "Pro version"
1464
  msgstr ""
1465
 
1466
+ #: view/settings-form.php:1063
1467
  msgid "Product categories"
1468
  msgstr ""
1469
 
1470
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:408
1471
  msgid "Product Current Price"
1472
  msgstr ""
1473
 
1474
+ #: view/settings-form.php:1153
1475
  msgid "Product custom fields"
1476
  msgstr ""
1477
 
1478
+ #: view/settings-form.php:1756
1479
  msgid "Product fields"
1480
  msgstr ""
1481
 
1482
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:378
1483
  msgid "Product Id"
1484
  msgstr ""
1485
 
1486
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:383
1487
  msgid "Product Name"
1488
  msgstr ""
1489
 
1490
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:388
1491
  msgid "Product Name (main)"
1492
  msgstr ""
1493
 
1494
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1412
1495
  msgid "Product order items"
1496
  msgstr ""
1497
 
1499
  msgid "Product rows start with a new line"
1500
  msgstr ""
1501
 
1502
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:403
1503
  msgid "Product Seller"
1504
  msgstr ""
1505
 
1506
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:473
1507
  msgid "Product Shipping Class"
1508
  msgstr ""
1509
 
1510
+ #: view/settings-form.php:1112
1511
  msgid "Product SKU"
1512
  msgstr ""
1513
 
1515
  msgid "Product tag"
1516
  msgstr ""
1517
 
1518
+ #: view/settings-form.php:1118
1519
  msgid "Product taxonomies"
1520
  msgstr ""
1521
 
1522
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1388
1523
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1413
1524
  msgid "Product totals"
1525
  msgstr ""
1526
 
1527
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:458
1528
  msgid "Product URL"
1529
  msgstr ""
1530
 
1531
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:393
1532
  msgid "Product Variation"
1533
  msgstr ""
1534
 
1535
+ #: view/settings-form.php:1097
1536
  #: classes/admin/class-wc-order-export-manage.php:694
1537
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1014
1538
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1387
1539
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1411
1540
  msgid "Products"
1541
  msgstr ""
1542
 
1552
  msgid "Profiles"
1553
  msgstr ""
1554
 
1555
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1040
1556
  msgid "Quantity"
1557
  msgstr ""
1558
 
1559
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1045
1560
  msgid "Quantity (- Refund)"
1561
  msgstr ""
1562
 
1563
+ #: view/settings-form.php:941
1564
  msgid "Read how to fix it"
1565
  msgstr ""
1566
 
1567
+ #: view/settings-form.php:1601
1568
  msgid "Remove all fields"
1569
  msgstr ""
1570
 
1592
  msgid "repeat header as last line"
1593
  msgstr ""
1594
 
1595
+ #: view/settings-form.php:2140
1596
  msgid "Reset settings"
1597
  msgstr ""
1598
 
1599
+ #: classes/core/class-wc-order-export-data-extractor.php:1922
1600
  msgid "Rest of the World"
1601
  msgstr ""
1602
 
1625
  msgid "Sat"
1626
  msgstr ""
1627
 
1628
+ #: view/settings-form.php:2121
1629
  msgid "Save & Exit"
1630
  msgstr ""
1631
 
1632
+ #: view/settings-form.php:2118 view/settings-form.php:2123
1633
  msgid "Save settings"
1634
  msgstr ""
1635
 
1657
  msgid "Set up coupon fields"
1658
  msgstr ""
1659
 
1660
+ #: view/settings-form.php:1575
1661
  msgid "Set up fields to export"
1662
  msgstr ""
1663
 
1677
  msgid "Settings saved"
1678
  msgstr ""
1679
 
1680
+ #: view/settings-form.php:2153 view/tab/tools.php:86
1681
  msgid "Settings were successfully updated!"
1682
  msgstr ""
1683
 
1684
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1392
1685
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1417
1686
  msgid "Shipping"
1687
  msgstr ""
1688
 
1689
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1386
1690
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1410
1691
  msgid "Shipping Address"
1692
  msgstr ""
1693
 
1694
+ #: view/settings-form.php:913
1695
  msgid "Shipping fields use billing details (if shipping address is empty)"
1696
  msgstr ""
1697
 
1698
+ #: view/settings-form.php:1441
1699
  msgid "Shipping locations"
1700
  msgstr ""
1701
 
1702
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1264
1703
  msgid "Shipping Method"
1704
  msgstr ""
1705
 
1706
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1269
1707
  msgid "Shipping Method (no id)"
1708
  msgstr ""
1709
 
1710
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1259
1711
  msgid "Shipping Method Title"
1712
  msgstr ""
1713
 
1714
+ #: view/settings-form.php:1470
1715
  msgid "Shipping methods"
1716
  msgstr ""
1717
 
1718
+ #: view/settings-form.php:1943
1719
  msgid "Shipping name"
1720
  msgstr ""
1721
 
1722
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1274
1723
  msgid "Shipping Zone"
1724
  msgstr ""
1725
 
1726
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:483
1727
  msgid "Short Description"
1728
  msgstr ""
1729
 
1730
+ #: classes/class-wc-order-export-admin.php:314
1731
+ msgid "Show total amount for this column"
1732
+ msgstr ""
1733
+
1734
+ #: view/settings-form.php:1061
1735
  msgid "Skip fully refunded items"
1736
  msgstr ""
1737
 
1738
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:368
1739
  msgid "SKU"
1740
  msgstr ""
1741
 
1742
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:373
1743
  msgid "SKU (parent)"
1744
  msgstr ""
1745
 
1746
+ #: view/settings-form.php:844
1747
  #, php-format
1748
  msgid "Sort orders by %s in %s order"
1749
  msgstr ""
1756
  msgid "Start tag"
1757
  msgstr ""
1758
 
1759
+ #: view/settings-form.php:1396 view/settings-form.php:1446
1760
  msgid "State"
1761
  msgstr ""
1762
 
1763
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:878
1764
  msgid "State Code (Billing)"
1765
  msgstr ""
1766
 
1767
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:968
1768
  msgid "State Code (Shipping)"
1769
  msgstr ""
1770
 
1771
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:893
1772
  msgid "State Name (Billing)"
1773
  msgstr ""
1774
 
1775
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:983
1776
  msgid "State Name (Shipping)"
1777
  msgstr ""
1778
 
1780
  msgid "Status change jobs"
1781
  msgstr ""
1782
 
1783
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:453
1784
  msgid "Stock Quantity"
1785
  msgstr ""
1786
 
1787
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:448
1788
  msgid "Stock Status"
1789
  msgstr ""
1790
 
1791
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1438
1792
  msgid "String"
1793
  msgstr ""
1794
 
1795
+ #: view/settings-form.php:895
1796
  msgid "Strip tags from Product Description/Variation"
1797
  msgstr ""
1798
 
1799
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:712
1800
+ msgid "Subscription Relationship"
1801
+ msgstr ""
1802
+
1803
  #: view/settings-form.php:208
1804
  msgid "Summary Report By Customers"
1805
  msgstr ""
1808
  msgid "Summary Report By Products"
1809
  msgstr ""
1810
 
1811
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:788
1812
  msgid "Summary Report Sum of Items (Exported)"
1813
  msgstr ""
1814
 
1815
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:508
1816
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:793
1817
  msgid "Summary Report Total Amount"
1818
  msgstr ""
1819
 
1820
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:513
1821
+ msgid "Summary Report Total Amount (-Refund)"
1822
+ msgstr ""
1823
+
1824
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:518
1825
+ msgid "Summary Report Total Amount (inc. tax)"
1826
+ msgstr ""
1827
+
1828
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:798
1829
  msgid "Summary Report Total Amount Paid"
1830
  msgstr ""
1831
 
1832
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:533
1833
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:808
1834
  msgid "Summary Report Total Discount"
1835
  msgstr ""
1836
 
1837
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:828
1838
  msgid "Summary Report Total Fee Amount"
1839
  msgstr ""
1840
 
1841
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:778
1842
  msgid "Summary Report Total Items"
1843
  msgstr ""
1844
 
1845
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:783
1846
  msgid "Summary Report Total Items (Exported)"
1847
  msgstr ""
1848
 
1849
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:773
1850
  msgid "Summary Report Total Orders"
1851
  msgstr ""
1852
 
1853
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:498
1854
  msgid "Summary Report Total Quantity"
1855
  msgstr ""
1856
 
1857
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:503
1858
+ msgid "Summary Report Total Quantity (-Refund)"
1859
+ msgstr ""
1860
+
1861
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:543
1862
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:818
1863
  msgid "Summary Report Total Refund Amount"
1864
  msgstr ""
1865
 
1866
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:538
1867
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:813
1868
  msgid "Summary Report Total Refund Count"
1869
  msgstr ""
1870
 
1871
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:803
1872
  msgid "Summary Report Total Shipping"
1873
  msgstr ""
1874
 
1875
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:823
1876
  msgid "Summary Report Total Tax Amount"
1877
  msgstr ""
1878
 
1879
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:523
1880
  msgid "Summary Report Total Weight"
1881
  msgstr ""
1882
 
1912
  msgid "Table row text color"
1913
  msgstr ""
1914
 
1915
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:423
1916
  msgid "Tags"
1917
  msgstr ""
1918
 
1919
+ #: view/settings-form.php:1965
1920
  msgid "Tax name"
1921
  msgstr ""
1922
 
1923
+ #: view/settings-form.php:1772
1924
  msgid "Taxonomy"
1925
  msgstr ""
1926
 
1927
+ #: classes/core/class-wc-order-export-engine.php:390
1928
  #, php-format
1929
  msgid "The code you are trying to save produced a fatal error on line %d:"
1930
  msgstr ""
1931
 
1932
+ #: view/settings-form.php:1050
1933
  msgid ""
1934
  "The filters won't work correctly.<br>Another plugin(or theme) has loaded "
1935
  "outdated Select2.js"
1936
  msgstr ""
1937
 
1938
+ #: view/settings-form.php:1662 view/settings-form.php:1818
1939
  msgid ""
1940
  "The plugin fetches meta keys from the existing orders. So you should create "
1941
  "fake order if you've added new field just now."
1973
  msgid "Time"
1974
  msgstr ""
1975
 
1976
+ #: view/settings-form.php:1589
1977
+ msgid "Title for summary row"
1978
+ msgstr ""
1979
+
1980
  #: classes/class-wc-order-export-admin.php:367
1981
  msgid "Title is empty"
1982
  msgstr ""
1989
  msgid "Tools"
1990
  msgstr ""
1991
 
1992
+ #: view/settings-form.php:1589
1993
+ msgid "Total"
1994
+ msgstr ""
1995
+
1996
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1162
1997
  msgid "Total items"
1998
  msgstr ""
1999
 
2000
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1172
2001
  msgid "Total products"
2002
  msgstr ""
2003
 
2004
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1177
2005
  msgid "Total volume"
2006
  msgstr ""
2007
 
2008
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1157
2009
  msgid "Total weight"
2010
  msgstr ""
2011
 
2012
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1393
2013
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1418
2014
  msgid "Totals"
2015
  msgstr ""
2016
 
2017
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:664
2018
  msgid "Transaction ID"
2019
  msgstr ""
2020
 
2021
+ #: view/settings-form.php:919
2022
  msgid "Try to convert serialized values"
2023
  msgstr ""
2024
 
2030
  msgid "Tue"
2031
  msgstr ""
2032
 
2033
+ #: view/settings-form.php:2079
2034
  msgid "Turn off mode Summary report to export order fields"
2035
  msgstr ""
2036
 
2037
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:413
2038
  msgid "Type"
2039
  msgstr ""
2040
 
2052
  msgid "Unmark exported"
2053
  msgstr ""
2054
 
2055
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1426
2056
  msgid "Use \"Add field\" to export specific product attribute"
2057
  msgstr ""
2058
 
2059
+ #: view/settings-form.php:945
2060
  msgid "Use only unnamed functions!"
2061
  msgstr ""
2062
 
2063
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1432
2064
  msgid "Use section \"Product order item\" to add item meta"
2065
  msgstr ""
2066
 
2067
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1425
2068
  msgid "Use section \"Product order items\" to add attributes"
2069
  msgstr ""
2070
 
2076
  msgid "user guide"
2077
  msgstr ""
2078
 
2079
+ #: view/settings-form.php:1304
2080
  msgid "User roles"
2081
  msgstr ""
2082
 
2083
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:738
2084
  msgid "User Website"
2085
  msgstr ""
2086
 
2087
+ #: view/settings-form.php:1290
2088
  msgid "Usernames"
2089
  msgstr ""
2090
 
2091
+ #: view/settings-form.php:1705 view/settings-form.php:1802
2092
+ #: view/settings-form.php:1855 view/settings-form.php:1903
2093
  msgid "Value"
2094
  msgstr ""
2095
 
2096
+ #: view/settings-form.php:1194
2097
  msgid "Variable product attributes"
2098
  msgstr ""
2099
 
2100
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:398
2101
  msgid "Variation Id"
2102
  msgstr ""
2103
 
2104
+ #: view/settings-form.php:1081
2105
  msgid "Vendors/creators"
2106
  msgstr ""
2107
 
2109
  msgid "Wed"
2110
  msgstr ""
2111
 
2112
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:443
2113
  msgid "Weight"
2114
  msgstr ""
2115
 
2116
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:428
2117
  msgid "Width"
2118
  msgstr ""
2119
 
2137
  msgid "You can not do it"
2138
  msgstr ""
2139
 
2140
+ #: view/settings-form.php:1988 view/settings-form.php:2018
2141
+ #: view/settings-form.php:2048
2142
  msgid "You should add code to section \"Misc Settings\". Read the guide"
2143
  msgstr ""
2144
 
readme.txt CHANGED
@@ -4,8 +4,8 @@ Donate link: https://paypal.me/ipprokaev/0usd
4
  Tags: woocommerce,export,order,xls,csv,xml,woo export lite,export orders,orders export,csv export,xml export,xls export,tsv
5
  Requires PHP: 5.4.0
6
  Requires at least: 4.7
7
- Tested up to: 5.8
8
- Stable tag: 3.2.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -103,6 +103,9 @@ This button processes only first 5 orders by default, so you should run the expo
103
  = Is it compatible with "WooCommerce Custom Orders Table" plugin (by Liquid Web) ? =
104
  No, as we provide a lot of filters which can not be implemented using WooCommerce classes. So we use direct access to database/tables.
105
 
 
 
 
106
  = Can I request any new feature ? =
107
  Yes, you can email a request to aprokaev@gmail.com. We intensively develop this plugin.
108
 
@@ -117,6 +120,20 @@ Yes, you can email a request to aprokaev@gmail.com. We intensively develop this
117
 
118
  == Changelog ==
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  = 3.2.2 - 2021-12-14 =
121
  * Fixed bug - PHP8 compatibility issues (deprecation warnings for XLS format)
122
  * Fixed bug - blank row was added after every 1000 rows (XLS format)
4
  Tags: woocommerce,export,order,xls,csv,xml,woo export lite,export orders,orders export,csv export,xml export,xls export,tsv
5
  Requires PHP: 5.4.0
6
  Requires at least: 4.7
7
+ Tested up to: 6.0
8
+ Stable tag: 3.3.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
103
  = Is it compatible with "WooCommerce Custom Orders Table" plugin (by Liquid Web) ? =
104
  No, as we provide a lot of filters which can not be implemented using WooCommerce classes. So we use direct access to database/tables.
105
 
106
+ = Where does free version save files? =
107
+ Free version doesn't save generated file on your webserver, you can only download it using browser.
108
+
109
  = Can I request any new feature ? =
110
  Yes, you can email a request to aprokaev@gmail.com. We intensively develop this plugin.
111
 
120
 
121
  == Changelog ==
122
 
123
+ = 3.3.0 - 2022-05-18 =
124
+ * Allow to sort by any field, for XLS/PDF formats only
125
+ * Output summary row, for XLS/PDF formats only
126
+ * Added fields "Phone (Shipping)", "Currency Symbol", "Subscription Relationship"
127
+ * Added fields "Qty-Refund","Amount-Refund", "Total Amount (inc. tax)" for "Summary report by products"
128
+ * Fixed bug - added workaround for last versions of PHP 8.0 and 8.1, they have bug for ob_clean()
129
+ * Fixed bug - option "Remove emojis" damaged last product in export
130
+ * Fixed bug - field type "Link" ignored for XLS format
131
+ * Fixed bug - long text (for some languages) breaks layout for section Setup Fields
132
+ * Fixed bug - can't correctly export custom attribute if it was unused in variations
133
+ * Fixed bug - wrong fee amount exported , in rare cases
134
+ * Fixed bug - incorrect export for mode "Add products as XX columns", rare case too
135
+ * Fixed bug - page was not loaded if website has 10,000+ coupons
136
+
137
  = 3.2.2 - 2021-12-14 =
138
  * Fixed bug - PHP8 compatibility issues (deprecation warnings for XLS format)
139
  * Fixed bug - blank row was added after every 1000 rows (XLS format)
view/settings-form.php CHANGED
@@ -810,6 +810,11 @@ function remove_time_from_date( $datetime ) {
810
  'post_modified' => __( 'Modification Date', 'woo-order-export-lite' ),
811
  'post_status' => __( 'Order status', 'woo-order-export-lite' ),
812
  );
 
 
 
 
 
813
  foreach ( WC_Order_Export_Data_Extractor_UI::get_order_custom_fields() as $field ) {
814
  $sort[$field] = $field;
815
  }
@@ -841,7 +846,7 @@ function remove_time_from_date( $datetime ) {
841
  ?>
842
  </div>
843
  <br>
844
-
845
  <?php if ( ! isset( $woe_order_post_type ) || $woe_order_post_type != 'shop_subscription' ) { ?>
846
  <?php if ( $mode === WC_Order_Export_Manage::EXPORT_SCHEDULE || $mode === WC_Order_Export_Manage::EXPORT_PROFILE ) { ?>
847
  <div id="my-change-status" class="my-block">
@@ -1542,7 +1547,7 @@ function remove_time_from_date( $datetime ) {
1542
  <option>&gt;=</option>
1543
  <option>&lt;</option>
1544
  <option>&lt;=</option>
1545
-
1546
  </select>
1547
  <input type="text" id="text_order_itemmetadata" disabled class="like-input" style="display: none;">
1548
  <button id="add_item_metadata" class="button-secondary"><span
@@ -1580,7 +1585,10 @@ function remove_time_from_date( $datetime ) {
1580
  <div id='fields' style='display:none;'>
1581
 
1582
  <div class="fields-control-block"></div>
1583
- <br>
 
 
 
1584
  <div class="fields-control">
1585
  <div style="display: inline-block; float: left">
1586
  <label style="font-size: medium;">
@@ -2072,7 +2080,7 @@ function remove_time_from_date( $datetime ) {
2072
  </div>
2073
  <?php foreach ( $segment_hints as $key => $hint ): ?>
2074
  <div class="woe_segment_tips" id="woe_tips_<?php echo $key ?>">
2075
- <?php echo $hint; ?>
2076
  </div>
2077
  <?php endforeach; ?>
2078
  </div>
@@ -2144,6 +2152,8 @@ function remove_time_from_date( $datetime ) {
2144
  <div id=Settings_updated
2145
  style='display:none;color:green;font-size: 120%;'><?php _e( "Settings were successfully updated!",
2146
  'woo-order-export-lite' ) ?></div>
 
 
2147
 
2148
  <?php if ( $show['export_button'] OR $show['export_button_plain'] ) { ?>
2149
  <div id="progress_div" style="display: none;">
810
  'post_modified' => __( 'Modification Date', 'woo-order-export-lite' ),
811
  'post_status' => __( 'Order status', 'woo-order-export-lite' ),
812
  );
813
+ foreach ( $settings['order_fields'] as $field ) {
814
+ if ($field['key'] !== 'products' && $field['key'] !== 'coupons' && !in_array(strtolower($field['label']), array_map('strtolower', $sort))) {
815
+ $sort['setup_field_'. (isset($field['format']) ? $field['format'] : '') . '_' . $field['key']] = $field['label'];
816
+ }
817
+ }
818
  foreach ( WC_Order_Export_Data_Extractor_UI::get_order_custom_fields() as $field ) {
819
  $sort[$field] = $field;
820
  }
846
  ?>
847
  </div>
848
  <br>
849
+
850
  <?php if ( ! isset( $woe_order_post_type ) || $woe_order_post_type != 'shop_subscription' ) { ?>
851
  <?php if ( $mode === WC_Order_Export_Manage::EXPORT_SCHEDULE || $mode === WC_Order_Export_Manage::EXPORT_PROFILE ) { ?>
852
  <div id="my-change-status" class="my-block">
1547
  <option>&gt;=</option>
1548
  <option>&lt;</option>
1549
  <option>&lt;=</option>
1550
+
1551
  </select>
1552
  <input type="text" id="text_order_itemmetadata" disabled class="like-input" style="display: none;">
1553
  <button id="add_item_metadata" class="button-secondary"><span
1585
  <div id='fields' style='display:none;'>
1586
 
1587
  <div class="fields-control-block"></div>
1588
+ <div class="summary-row-title hide">
1589
+ <?php _e( 'Title for summary row', 'woo-order-export-lite' ) ?> <input name="settings[summary_row_title]" value="<?php echo isset($settings['summary_row_title']) ? $settings['summary_row_title'] : __( 'Total', 'woo-order-export-lite' ); ?>">
1590
+ <hr>
1591
+ </div>
1592
  <div class="fields-control">
1593
  <div style="display: inline-block; float: left">
1594
  <label style="font-size: medium;">
2080
  </div>
2081
  <?php foreach ( $segment_hints as $key => $hint ): ?>
2082
  <div class="woe_segment_tips" id="woe_tips_<?php echo $key ?>">
2083
+ <?php echo $hint; ?>
2084
  </div>
2085
  <?php endforeach; ?>
2086
  </div>
2152
  <div id=Settings_updated
2153
  style='display:none;color:green;font-size: 120%;'><?php _e( "Settings were successfully updated!",
2154
  'woo-order-export-lite' ) ?></div>
2155
+ <div id=Settings_error
2156
+ style='display:none;color:red;font-size: 120%;'></div>
2157
 
2158
  <?php if ( $show['export_button'] OR $show['export_button_plain'] ) { ?>
2159
  <div id="progress_div" style="display: none;">
woo-order-export-lite.php CHANGED
@@ -5,11 +5,11 @@
5
  * Description: Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)
6
  * Author: AlgolPlus
7
  * Author URI: https://algolplus.com/
8
- * Version: 3.2.2
9
  * Text Domain: woo-order-export-lite
10
  * Domain Path: /i18n/languages/
11
  * WC requires at least: 3.0.0
12
- * WC tested up to: 5.9
13
  *
14
  * Copyright: (c) 2015 AlgolPlus LLC. (algol.plus@gmail.com)
15
  *
@@ -40,7 +40,7 @@ if ( class_exists( 'WC_Order_Export_Admin' ) ) {
40
  }
41
 
42
  if ( ! defined( 'WOE_VERSION' ) ) {
43
- define( 'WOE_VERSION', '3.2.2' );
44
  define( 'WOE_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
45
  define( 'WOE_PLUGIN_BASEPATH', dirname( __FILE__ ) );
46
  }
5
  * Description: Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)
6
  * Author: AlgolPlus
7
  * Author URI: https://algolplus.com/
8
+ * Version: 3.3.0
9
  * Text Domain: woo-order-export-lite
10
  * Domain Path: /i18n/languages/
11
  * WC requires at least: 3.0.0
12
+ * WC tested up to: 6.5
13
  *
14
  * Copyright: (c) 2015 AlgolPlus LLC. (algol.plus@gmail.com)
15
  *
40
  }
41
 
42
  if ( ! defined( 'WOE_VERSION' ) ) {
43
+ define( 'WOE_VERSION', '3.3.0' );
44
  define( 'WOE_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
45
  define( 'WOE_PLUGIN_BASEPATH', dirname( __FILE__ ) );
46
  }