WooCommerce PDF Invoices & Packing Slips - Version 2.2.0

Version Description

  • Feature: Document settings are now saved per order - changing settings after a PDF has been created will no longer affect the output
  • Feature: Button to delete invoice or packing slip
  • Feature: Better error handling and logging via WC Logger (WooCommerce > Status > Logs)
  • Fix: Broader payment gateway compatibility (lower priority for documents initialization)
  • Fix: undefined variable in construct when loading document programmatically (props to Christopher)
  • Fix: compatibility with renamed WooCommerce plugins (settings page detection)
  • Tweak: Reload translations before creating attachment
  • Translations: Updated translations POT
Download this release

Release Info

Developer pomegranate
Plugin Icon 128x128 WooCommerce PDF Invoices & Packing Slips
Version 2.2.0
Comparing to
See all releases

Code changes from version 2.1.10 to 2.2.0

assets/css/order-styles.css CHANGED
@@ -46,13 +46,17 @@
46
  }
47
 
48
  /* Edit buttons Invoice, Proforma and Credit */
 
 
 
49
 
50
- .wpo-wcpdf-edit-date-number {
51
- margin-left:20px!important;
52
  opacity:0.5;
53
  }
54
 
55
- .wpo-wcpdf-edit-date-number:hover {
 
56
  opacity:1;
57
  cursor:pointer;
58
  }
46
  }
47
 
48
  /* Edit buttons Invoice, Proforma and Credit */
49
+ .wcpdf-data-fields h4 .dashicons:first-of-type {
50
+ margin-left:20px!important;
51
+ }
52
 
53
+ .dashicons-edit,
54
+ .dashicons-trash {
55
  opacity:0.5;
56
  }
57
 
58
+ .dashicons-edit:hover,
59
+ .dashicons-trash:hover {
60
  opacity:1;
61
  cursor:pointer;
62
  }
assets/js/admin-script.js CHANGED
@@ -28,8 +28,4 @@ jQuery( function( $ ) {
28
  }
29
  });
30
  });
31
- $( '.wpo-wcpdf-review-notice' ).on( 'click', '.notice-dismiss', function( event ) {
32
- event.preventDefault();
33
- window.location.href = $( '.wpo-wcpdf-dismiss' ).attr('href');
34
- });
35
  });
28
  }
29
  });
30
  });
 
 
 
 
31
  });
assets/js/media-upload.js CHANGED
@@ -5,7 +5,7 @@ jQuery(document).ready(function($) {
5
 
6
  // Uploading files
7
  var file_frame;
8
- $('#wpo-wcpdf-settings').on('click', '.wpo_upload_image_button', function( event ){
9
  // get corresponding input fields
10
  $row = $(this).parent();
11
  $id = $row.find('input#header_logo');
5
 
6
  // Uploading files
7
  var file_frame;
8
+ $('#wpo-wcpdf-settings, .wpo-wcpdf-setup').on('click', '.wpo_upload_image_button', function( event ){
9
  // get corresponding input fields
10
  $row = $(this).parent();
11
  $id = $row.find('input#header_logo');
assets/js/order-script.js CHANGED
@@ -38,5 +38,32 @@ jQuery(document).ready(function($) {
38
  $form.find(".editable").show();
39
  $form.find(':input').prop('disabled', false);
40
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  });
42
 
38
  $form.find(".editable").show();
39
  $form.find(':input').prop('disabled', false);
40
  });
41
+
42
+ $( ".wcpdf-data-fields .wpo-wcpdf-delete-document" ).click(function() {
43
+ if ( window.confirm( wpo_wcpdf_ajax.confirm_delete ) === false ) {
44
+ return; // having second thoughts
45
+ }
46
+
47
+ $form = $(this).closest('.wcpdf-data-fields');
48
+ $.ajax({
49
+ url: wpo_wcpdf_ajax.ajaxurl,
50
+ data: {
51
+ action : 'wpo_wcpdf_delete_document',
52
+ security: $(this).data('nonce'),
53
+ document: $form.data('document'),
54
+ order_id: $form.data('order_id')
55
+ },
56
+ type: 'POST',
57
+ context: $form,
58
+ success: function( response ) {
59
+ if ( response.success ) {
60
+ $(this).find(':input').val("");
61
+ $(this).find('.read-only').hide();
62
+ $(this).find('.wpo-wcpdf-delete-document').hide();
63
+ }
64
+ }
65
+ });
66
+ });
67
+
68
  });
69
 
includes/class-wcpdf-admin.php CHANGED
@@ -27,6 +27,7 @@ class Admin {
27
  add_action( 'woocommerce_process_shop_order_meta', array( $this, 'send_emails' ), 60, 2 );
28
 
29
  add_action( 'admin_notices', array( $this, 'review_plugin_notice' ) );
 
30
 
31
  add_action( 'init', array( $this, 'setup_wizard') );
32
  // add_action( 'wpo_wcpdf_after_pdf', array( $this,'update_pdf_counter' ), 10, 2 );
@@ -37,6 +38,9 @@ class Admin {
37
  } else {
38
  add_filter( 'pre_get_posts', array( $this, 'pre_get_posts_sort_by_invoice_number' ) );
39
  }
 
 
 
40
  }
41
 
42
  // display review admin notice after 100 pdf downloads
@@ -53,22 +57,22 @@ class Admin {
53
  return;
54
  }
55
 
56
- // keep track of how many days this notice is show so we can remove it after 7 days
57
- $notice_shown_on = get_option( 'wpo_wcpdf_review_notice_shown', array() );
58
- $today = date('Y-m-d');
59
- if ( !in_array($today, $notice_shown_on) ) {
60
- $notice_shown_on[] = $today;
61
- update_option( 'wpo_wcpdf_review_notice_shown', $notice_shown_on );
62
- }
63
- // count number of days review is shown, dismiss forever if shown more than 7
64
- if (count($notice_shown_on) > 7) {
65
- update_option( 'wpo_wcpdf_review_notice_dismissed', true );
66
- return;
67
- }
68
-
69
  // get invoice count to determine whether notice should be shown
70
  $invoice_count = $this->get_invoice_count();
71
  if ( $invoice_count > 100 ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  $rounded_count = (int) substr( (string) $invoice_count, 0, 1 ) * pow( 10, strlen( (string) $invoice_count ) - 1);
73
  ?>
74
  <div class="notice notice-info is-dismissible wpo-wcpdf-review-notice">
@@ -80,6 +84,14 @@ class Admin {
80
  <li><a href="mailto:support@wpovernight.com?Subject=Here%20is%20how%20I%20think%20you%20can%20do%20better"><?php _e( 'Actually, I have a complaint...', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></li>
81
  </ul>
82
  </div>
 
 
 
 
 
 
 
 
83
  <!-- Hide extensions ad if this is shown -->
84
  <style>.wcpdf-extensions-ad { display: none; }</style>
85
  <?php
@@ -87,14 +99,45 @@ class Admin {
87
  }
88
  }
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  public function setup_wizard() {
91
  // Setup/welcome
92
- if ( ! empty( $_GET['page'] ) ) {
93
- switch ( $_GET['page'] ) {
94
- case 'wpo-wcpdf-setup' :
95
- include_once( WPO_WCPDF()->plugin_path() . '/includes/class-wcpdf-setup-wizard.php' );
96
- break;
97
- }
98
  }
99
  }
100
 
@@ -296,8 +339,8 @@ class Admin {
296
  $invoice_number = $invoice->get_number();
297
  $invoice_date = $invoice->get_date();
298
  ?>
299
- <div class="wcpdf-data-fields">
300
- <h4><?php echo $invoice->get_title(); ?><?php if ($invoice->exists()) : ?><span id="" class="wpo-wcpdf-edit-date-number dashicons dashicons-edit"></span><?php endif; ?></h4>
301
 
302
  <!-- Read only -->
303
  <div class="read-only">
@@ -511,6 +554,41 @@ class Admin {
511
  return $query_vars;
512
  }
513
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
514
  }
515
 
516
  endif; // class_exists
27
  add_action( 'woocommerce_process_shop_order_meta', array( $this, 'send_emails' ), 60, 2 );
28
 
29
  add_action( 'admin_notices', array( $this, 'review_plugin_notice' ) );
30
+ add_action( 'admin_notices', array( $this, 'install_wizard_notice' ) );
31
 
32
  add_action( 'init', array( $this, 'setup_wizard') );
33
  // add_action( 'wpo_wcpdf_after_pdf', array( $this,'update_pdf_counter' ), 10, 2 );
38
  } else {
39
  add_filter( 'pre_get_posts', array( $this, 'pre_get_posts_sort_by_invoice_number' ) );
40
  }
41
+
42
+ // AJAX action for deleting document data
43
+ add_action( 'wp_ajax_wpo_wcpdf_delete_document', array($this, 'delete_document' ) );
44
  }
45
 
46
  // display review admin notice after 100 pdf downloads
57
  return;
58
  }
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  // get invoice count to determine whether notice should be shown
61
  $invoice_count = $this->get_invoice_count();
62
  if ( $invoice_count > 100 ) {
63
+ // keep track of how many days this notice is show so we can remove it after 7 days
64
+ $notice_shown_on = get_option( 'wpo_wcpdf_review_notice_shown', array() );
65
+ $today = date('Y-m-d');
66
+ if ( !in_array($today, $notice_shown_on) ) {
67
+ $notice_shown_on[] = $today;
68
+ update_option( 'wpo_wcpdf_review_notice_shown', $notice_shown_on );
69
+ }
70
+ // count number of days review is shown, dismiss forever if shown more than 7
71
+ if (count($notice_shown_on) > 7) {
72
+ update_option( 'wpo_wcpdf_review_notice_dismissed', true );
73
+ return;
74
+ }
75
+
76
  $rounded_count = (int) substr( (string) $invoice_count, 0, 1 ) * pow( 10, strlen( (string) $invoice_count ) - 1);
77
  ?>
78
  <div class="notice notice-info is-dismissible wpo-wcpdf-review-notice">
84
  <li><a href="mailto:support@wpovernight.com?Subject=Here%20is%20how%20I%20think%20you%20can%20do%20better"><?php _e( 'Actually, I have a complaint...', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></li>
85
  </ul>
86
  </div>
87
+ <script type="text/javascript">
88
+ jQuery( function( $ ) {
89
+ $( '.wpo-wcpdf-review-notice' ).on( 'click', '.notice-dismiss', function( event ) {
90
+ event.preventDefault();
91
+ window.location.href = $( '.wpo-wcpdf-dismiss' ).attr('href');
92
+ });
93
+ });
94
+ </script>
95
  <!-- Hide extensions ad if this is shown -->
96
  <style>.wcpdf-extensions-ad { display: none; }</style>
97
  <?php
99
  }
100
  }
101
 
102
+ public function install_wizard_notice() {
103
+ // automatically remove notice after 1 week, set transient the first time
104
+ if ( $this->is_order_page() === false && !( isset( $_GET['page'] ) && $_GET['page'] == 'wpo_wcpdf_options_page' ) ) {
105
+ return;
106
+ }
107
+
108
+ if ( get_option( 'wpo_wcpdf_install_notice_dismissed' ) !== false ) {
109
+ return;
110
+ } else {
111
+ if ( isset( $_GET['wpo_wcpdf_dismis_install'] ) ) {
112
+ update_option( 'wpo_wcpdf_install_notice_dismissed', true );
113
+ return;
114
+ }
115
+
116
+ if ( get_transient( 'wpo_wcpdf_new_install' ) !== false ) {
117
+ ?>
118
+ <div class="notice notice-info is-dismissible wpo-wcpdf-install-notice">
119
+ <p><strong><?php _e( 'New to WooCommerce PDF Invoices & Packing Slips?', 'woocommerce-pdf-invoices-packing-slips' ); ?></strong> &#8211; <?php _e( 'Jumpstart the plugin by following our wizard!', 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
120
+ <p class="submit"><a href="<?php echo esc_url( admin_url( 'admin.php?page=wpo-wcpdf-setup' ) ); ?>" class="button-primary"><?php _e( 'Run the Setup Wizard', 'woocommerce-pdf-invoices-packing-slips' ); ?></a> <a href="<?php echo esc_url( add_query_arg( 'wpo_wcpdf_dismis_install', true ) ); ?>" class="wpo-wcpdf-dismiss-wizard"><?php _e( 'I am the wizard', 'woocommerce-pdf-invoices-packing-slips' ); ?></a></p>
121
+ </div>
122
+ <script type="text/javascript">
123
+ jQuery( function( $ ) {
124
+ $( '.wpo-wcpdf-install-notice' ).on( 'click', '.notice-dismiss', function( event ) {
125
+ event.preventDefault();
126
+ window.location.href = $( '.wpo-wcpdf-dismiss-wizard' ).attr('href');
127
+ });
128
+ });
129
+ </script>
130
+ <?php
131
+ }
132
+ }
133
+
134
+ }
135
+
136
  public function setup_wizard() {
137
  // Setup/welcome
138
+ if ( ! empty( $_GET['page'] ) && $_GET['page'] == 'wpo-wcpdf-setup' ) {
139
+ delete_transient( 'wpo_wcpdf_new_install' );
140
+ include_once( WPO_WCPDF()->plugin_path() . '/includes/class-wcpdf-setup-wizard.php' );
 
 
 
141
  }
142
  }
143
 
339
  $invoice_number = $invoice->get_number();
340
  $invoice_date = $invoice->get_date();
341
  ?>
342
+ <div class="wcpdf-data-fields" data-document="invoice" data-order_id="<?php echo WCX_Order::get_id( $order ); ?>">
343
+ <h4><?php echo $invoice->get_title(); ?><?php if ($invoice->exists()) : ?><span class="wpo-wcpdf-edit-date-number dashicons dashicons-edit"></span><span class="wpo-wcpdf-delete-document dashicons dashicons-trash" data-nonce="<?php echo wp_create_nonce( "wpo_wcpdf_delete_document" ); ?>"></span><?php endif; ?></h4>
344
 
345
  <!-- Read only -->
346
  <div class="read-only">
554
  return $query_vars;
555
  }
556
 
557
+ public function delete_document() {
558
+ if ( check_ajax_referer( "wpo_wcpdf_delete_document", 'security', false ) === false ) {
559
+ wp_send_json_error( array(
560
+ 'message' => 'nonce expired',
561
+ ) );
562
+ }
563
+ if ( empty($_POST['order_id']) || empty($_POST['document']) ) {
564
+ wp_send_json_error( array(
565
+ 'message' => 'incomplete request',
566
+ ) );
567
+ }
568
+
569
+ $order_id = absint($_POST['order_id']);
570
+ $document = sanitize_text_field($_POST['document']);
571
+
572
+ try {
573
+ $document = wcpdf_get_document( $document, wc_get_order( $order_id ) );
574
+ if ( !empty($document) && $document->exists() ) {
575
+ $document->delete();
576
+ $response = array(
577
+ 'message' => $document->get_type()." deleted",
578
+ );
579
+ wp_send_json_success($response);
580
+ } else {
581
+ wp_send_json_error( array(
582
+ 'message' => 'document does not exist',
583
+ ) );
584
+ }
585
+ } catch (\Exception $e) {
586
+ wp_send_json_error( array(
587
+ 'message' => 'error: '.$e->getMessage(),
588
+ ) );
589
+ }
590
+ }
591
+
592
  }
593
 
594
  endif; // class_exists
includes/class-wcpdf-assets.php CHANGED
@@ -73,16 +73,17 @@ class Assets {
73
  'wpo-wcpdf',
74
  'wpo_wcpdf_ajax',
75
  array(
76
- 'ajaxurl' => admin_url( 'admin-ajax.php' ), // URL to WordPress ajax handling page
77
- 'nonce' => wp_create_nonce('generate_wpo_wcpdf'),
78
- 'bulk_actions' => array_keys( $bulk_actions ),
 
79
  )
80
  );
81
  }
82
 
83
  // only load on our own settings page
84
  // maybe find a way to refer directly to WPO\WC\PDF_Invoices\Settings::$options_page_hook ?
85
- if ( $hook == 'woocommerce_page_wpo_wcpdf_options_page' || $hook == 'settings_page_wpo_wcpdf_options_page' ) {
86
  wp_enqueue_style(
87
  'wpo-wcpdf-settings-styles',
88
  WPO_WCPDF()->plugin_url() . '/assets/css/settings-styles.css',
73
  'wpo-wcpdf',
74
  'wpo_wcpdf_ajax',
75
  array(
76
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ), // URL to WordPress ajax handling page
77
+ 'nonce' => wp_create_nonce('generate_wpo_wcpdf'),
78
+ 'bulk_actions' => array_keys( $bulk_actions ),
79
+ 'confirm_delete' => __( 'Are you sure you want to delete this document? This cannot be undone.', 'woocommerce-pdf-invoices-packing-slips'),
80
  )
81
  );
82
  }
83
 
84
  // only load on our own settings page
85
  // maybe find a way to refer directly to WPO\WC\PDF_Invoices\Settings::$options_page_hook ?
86
+ if ( $hook == 'woocommerce_page_wpo_wcpdf_options_page' || $hook == 'settings_page_wpo_wcpdf_options_page' || ( isset($_GET['page']) && $_GET['page'] == 'wpo_wcpdf_options_page' ) ) {
87
  wp_enqueue_style(
88
  'wpo-wcpdf-settings-styles',
89
  WPO_WCPDF()->plugin_url() . '/assets/css/settings-styles.css',
includes/class-wcpdf-documents.php CHANGED
@@ -36,7 +36,7 @@ class Documents {
36
  *
37
  */
38
  public function __construct() {
39
- add_action( 'init', array( $this, 'init' ), 999 );
40
  }
41
 
42
  /**
36
  *
37
  */
38
  public function __construct() {
39
+ add_action( 'init', array( $this, 'init' ), 15 ); // after regular 10 actions but before most 'follow-up' actions (usually 20+)
40
  }
41
 
42
  /**
includes/class-wcpdf-install.php CHANGED
@@ -174,6 +174,9 @@ class Install {
174
  foreach ($settings_defaults as $option => $defaults) {
175
  update_option( $option, $defaults );
176
  }
 
 
 
177
  }
178
 
179
  /**
174
  foreach ($settings_defaults as $option => $defaults) {
175
  update_option( $option, $defaults );
176
  }
177
+
178
+ // set transient for wizard notification
179
+ set_transient( 'wpo_wcpdf_new_install', 'yes', WEEK_IN_SECONDS );
180
  }
181
 
182
  /**
includes/class-wcpdf-main.php CHANGED
@@ -87,6 +87,9 @@ class Main {
87
  // disable deprecation notices during email sending
88
  add_filter( 'wcpdf_disable_deprecation_notices', '__return_true' );
89
 
 
 
 
90
  $attach_to_document_types = $this->get_documents_for_email( $email_id, $order );
91
  foreach ( $attach_to_document_types as $document_type ) {
92
  do_action( 'wpo_wcpdf_before_attachment_creation', $order, $email_id, $document_type );
@@ -106,8 +109,14 @@ class Main {
106
  $attachments[] = $pdf_path;
107
 
108
  do_action( 'wpo_wcpdf_email_attachment', $pdf_path, $document_type, $document );
109
- } catch (Exception $e) {
110
- error_log($e->getMessage());
 
 
 
 
 
 
111
  continue;
112
  }
113
  }
@@ -227,10 +236,19 @@ class Main {
227
  } else {
228
  wp_die( sprintf( __( "Document of type '%s' for the selected order(s) could not be generated", 'woocommerce-pdf-invoices-packing-slips' ), $document_type ) );
229
  }
230
- } catch (Exception $e) {
231
- echo $e->getMessage();
 
 
 
 
 
 
 
 
 
 
232
  }
233
-
234
  exit;
235
  }
236
 
@@ -417,8 +435,6 @@ class Main {
417
  }
418
 
419
  $document_settings = WPO_WCPDF()->settings->get_document_settings( $document_type );
420
- // echo '<pre>';var_dump($document_type);echo '</pre>';
421
- // error_log( var_export($document_settings,true) );
422
 
423
  // check order total & setting
424
  $order_total = $order->get_total();
87
  // disable deprecation notices during email sending
88
  add_filter( 'wcpdf_disable_deprecation_notices', '__return_true' );
89
 
90
+ // reload translations because WC may have switched to site locale (by setting the plugin_locale filter to site locale in wc_switch_to_site_locale())
91
+ WPO_WCPDF()->translations();
92
+
93
  $attach_to_document_types = $this->get_documents_for_email( $email_id, $order );
94
  foreach ( $attach_to_document_types as $document_type ) {
95
  do_action( 'wpo_wcpdf_before_attachment_creation', $order, $email_id, $document_type );
109
  $attachments[] = $pdf_path;
110
 
111
  do_action( 'wpo_wcpdf_email_attachment', $pdf_path, $document_type, $document );
112
+ } catch ( \Exception $e ) {
113
+ wcpdf_log_error( $e->getMessage(), 'critical', $e );
114
+ continue;
115
+ } catch ( \Dompdf\Exception $e ) {
116
+ wcpdf_log_error( 'DOMPDF exception: '.$e->getMessage(), 'critical', $e );
117
+ continue;
118
+ } catch ( \Error $e ) {
119
+ wcpdf_log_error( $e->getMessage(), 'critical', $e );
120
  continue;
121
  }
122
  }
236
  } else {
237
  wp_die( sprintf( __( "Document of type '%s' for the selected order(s) could not be generated", 'woocommerce-pdf-invoices-packing-slips' ), $document_type ) );
238
  }
239
+ } catch ( \Dompdf\Exception $e ) {
240
+ $message = 'DOMPDF Exception: '.$e->getMessage();
241
+ wcpdf_log_error( $message, 'critical', $e );
242
+ wcpdf_output_error( $message, 'critical', $e );
243
+ } catch ( \Exception $e ) {
244
+ $message = 'Exception: '.$e->getMessage();
245
+ wcpdf_log_error( $message, 'critical', $e );
246
+ wcpdf_output_error( $message, 'critical', $e );
247
+ } catch ( \Error $e ) {
248
+ $message = 'Fatal error: '.$e->getMessage();
249
+ wcpdf_log_error( $message, 'critical', $e );
250
+ wcpdf_output_error( $message, 'critical', $e );
251
  }
 
252
  exit;
253
  }
254
 
435
  }
436
 
437
  $document_settings = WPO_WCPDF()->settings->get_document_settings( $document_type );
 
 
438
 
439
  // check order total & setting
440
  $order_total = $order->get_total();
includes/class-wcpdf-settings-debug.php CHANGED
@@ -13,6 +13,15 @@ class Settings_Debug {
13
  add_action( 'admin_init', array( $this, 'init_settings' ) );
14
  add_action( 'wpo_wcpdf_settings_output_debug', array( $this, 'output' ), 10, 1 );
15
  add_action( 'wpo_wcpdf_after_settings_page', array( $this, 'debug_tools' ), 10, 2 );
 
 
 
 
 
 
 
 
 
16
  }
17
 
18
  public function output( $section ) {
@@ -107,7 +116,18 @@ class Settings_Debug {
107
  ?>
108
  </form>
109
  <?php
110
- include( WPO_WCPDF()->plugin_path() . '/includes/views/dompdf-status.php' );
 
 
 
 
 
 
 
 
 
 
 
111
  }
112
 
113
  public function init_settings() {
13
  add_action( 'admin_init', array( $this, 'init_settings' ) );
14
  add_action( 'wpo_wcpdf_settings_output_debug', array( $this, 'output' ), 10, 1 );
15
  add_action( 'wpo_wcpdf_after_settings_page', array( $this, 'debug_tools' ), 10, 2 );
16
+
17
+ // yes, we're hiring!
18
+ if (defined('WP_DEBUG') && WP_DEBUG) {
19
+ add_action( 'wpo_wcpdf_before_settings_page', array( $this, 'work_at_wpovernight' ), 10, 2 );
20
+ } else {
21
+ add_action( 'wpo_wcpdf_after_settings_page', array( $this, 'work_at_wpovernight' ), 30, 2 );
22
+ }
23
+
24
+ add_action( 'wpo_wcpdf_after_settings_page', array( $this, 'dompdf_status' ), 20, 2 );
25
  }
26
 
27
  public function output( $section ) {
116
  ?>
117
  </form>
118
  <?php
119
+ }
120
+
121
+ public function work_at_wpovernight( $tab, $section ) {
122
+ if ($tab === 'debug') {
123
+ include( WPO_WCPDF()->plugin_path() . '/includes/views/work-at-wpovernight.php' );
124
+ }
125
+ }
126
+
127
+ public function dompdf_status( $tab, $section ) {
128
+ if ($tab === 'debug') {
129
+ include( WPO_WCPDF()->plugin_path() . '/includes/views/dompdf-status.php' );
130
+ }
131
  }
132
 
133
  public function init_settings() {
includes/class-wcpdf-setup-wizard.php CHANGED
@@ -194,7 +194,7 @@ class Setup_Wizard {
194
  public function get_step_link( $step ) {
195
  $step_keys = array_keys( $this->steps );
196
  if ( end( $step_keys ) === $this->step && empty($step)) {
197
- return admin_url();
198
  }
199
  return add_query_arg( 'step', $step );
200
  }
194
  public function get_step_link( $step ) {
195
  $step_keys = array_keys( $this->steps );
196
  if ( end( $step_keys ) === $this->step && empty($step)) {
197
+ return admin_url('admin.php?page=wpo_wcpdf_options_page');
198
  }
199
  return add_query_arg( 'step', $step );
200
  }
includes/documents/abstract-wcpdf-order-document.php CHANGED
@@ -93,7 +93,7 @@ abstract class Order_Document {
93
  public function __construct( $order = 0 ) {
94
  if ( is_numeric( $order ) && $order > 0 ) {
95
  $this->order_id = $order;
96
- $this->order = WCX::get_order( $order_id );
97
  } elseif ( $order instanceof \WC_Order || is_subclass_of( $order, '\WC_Abstract_Order') ) {
98
  $this->order_id = WCX_Order::get_id( $order );
99
  $this->order = $order;
@@ -102,10 +102,6 @@ abstract class Order_Document {
102
  // set properties
103
  $this->slug = str_replace('-', '_', $this->type);
104
 
105
- // load settings
106
- $this->settings = $this->get_settings();
107
- $this->enabled = $this->get_setting( 'enabled', false );
108
-
109
  // load data
110
  if ( $this->order ) {
111
  $this->read_data( $this->order );
@@ -117,17 +113,32 @@ abstract class Order_Document {
117
  $wpo_wcpdf->export->template_type = $this->type;
118
  }
119
  }
120
-
 
 
 
121
  }
122
 
123
  public function init_settings() {
124
- return ;
125
  }
126
 
127
  public function get_settings() {
128
- $common_settings = WPO_WCPDF()->settings->get_common_document_settings();
129
- $document_settings = get_option( 'wpo_wcpdf_documents_settings_'.$this->get_type() );
130
- return (array) $document_settings + (array) $common_settings;
 
 
 
 
 
 
 
 
 
 
 
 
131
  }
132
 
133
  public function get_setting( $key, $default = '' ) {
@@ -174,6 +185,14 @@ abstract class Order_Document {
174
  }
175
 
176
  public function init() {
 
 
 
 
 
 
 
 
177
  $this->set_date( current_time( 'timestamp', true ) );
178
  do_action( 'wpo_wcpdf_init_document', $this );
179
  }
@@ -191,6 +210,8 @@ abstract class Order_Document {
191
  WCX_Order::delete_meta_data( $order, "_wcpdf_{$this->slug}_{$key}_formatted" );
192
  } elseif ( $key == 'number' ) {
193
  WCX_Order::delete_meta_data( $order, "_wcpdf_{$this->slug}_{$key}_data" );
 
 
194
  }
195
  } else {
196
  if ( $key == 'date' ) {
@@ -206,6 +227,26 @@ abstract class Order_Document {
206
  }
207
  }
208
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
209
  public function exists() {
210
  return !empty( $this->data['number'] );
211
  }
@@ -313,8 +354,11 @@ abstract class Order_Document {
313
  }
314
 
315
  $this->data[ 'date' ] = $datetime;
316
- } catch ( Exception $e ) {}
317
-
 
 
 
318
 
319
  }
320
 
@@ -507,7 +551,7 @@ abstract class Order_Document {
507
  do_action( 'wpo_wcpdf_after_pdf', $this->get_type(), $this );
508
  do_action( 'wpo_wcpdf_pdf_created', $pdf, $this );
509
 
510
- return $pdf;
511
  }
512
 
513
  public function get_html( $args = array() ) {
93
  public function __construct( $order = 0 ) {
94
  if ( is_numeric( $order ) && $order > 0 ) {
95
  $this->order_id = $order;
96
+ $this->order = WCX::get_order( $this->order_id );
97
  } elseif ( $order instanceof \WC_Order || is_subclass_of( $order, '\WC_Abstract_Order') ) {
98
  $this->order_id = WCX_Order::get_id( $order );
99
  $this->order = $order;
102
  // set properties
103
  $this->slug = str_replace('-', '_', $this->type);
104
 
 
 
 
 
105
  // load data
106
  if ( $this->order ) {
107
  $this->read_data( $this->order );
113
  $wpo_wcpdf->export->template_type = $this->type;
114
  }
115
  }
116
+
117
+ // load settings
118
+ $this->settings = $this->get_settings();
119
+ $this->enabled = $this->get_setting( 'enabled', false );
120
  }
121
 
122
  public function init_settings() {
123
+ return;
124
  }
125
 
126
  public function get_settings() {
127
+ if ( empty( $this->order ) || !$this->exists() ) {
128
+ $common_settings = WPO_WCPDF()->settings->get_common_document_settings();
129
+ $document_settings = get_option( 'wpo_wcpdf_documents_settings_'.$this->get_type() );
130
+ $settings = (array) $document_settings + (array) $common_settings;
131
+ } else {
132
+ $settings = WCX_Order::get_meta( $this->order, "_wcpdf_{$this->slug}_settings" );
133
+ if ( empty( $settings ) ) {
134
+ $common_settings = WPO_WCPDF()->settings->get_common_document_settings();
135
+ $document_settings = get_option( 'wpo_wcpdf_documents_settings_'.$this->get_type() );
136
+ $settings = (array) $document_settings + (array) $common_settings;
137
+ WCX_Order::update_meta_data( $this->order, "_wcpdf_{$this->slug}_settings", $settings );
138
+ }
139
+ }
140
+
141
+ return $settings;
142
  }
143
 
144
  public function get_setting( $key, $default = '' ) {
185
  }
186
 
187
  public function init() {
188
+ // store settings in order
189
+ if ( !empty( $this->order ) ) {
190
+ $common_settings = WPO_WCPDF()->settings->get_common_document_settings();
191
+ $document_settings = get_option( 'wpo_wcpdf_documents_settings_'.$this->get_type() );
192
+ $settings = (array) $document_settings + (array) $common_settings;
193
+ WCX_Order::update_meta_data( $this->order, "_wcpdf_{$this->slug}_settings", $settings );
194
+ }
195
+
196
  $this->set_date( current_time( 'timestamp', true ) );
197
  do_action( 'wpo_wcpdf_init_document', $this );
198
  }
210
  WCX_Order::delete_meta_data( $order, "_wcpdf_{$this->slug}_{$key}_formatted" );
211
  } elseif ( $key == 'number' ) {
212
  WCX_Order::delete_meta_data( $order, "_wcpdf_{$this->slug}_{$key}_data" );
213
+ // deleting the number = deleting the document, so also delete document settings
214
+ WCX_Order::delete_meta_data( $order, "_wcpdf_{$this->slug}_settings" );
215
  }
216
  } else {
217
  if ( $key == 'date' ) {
227
  }
228
  }
229
 
230
+ public function delete( $order = null ) {
231
+ $order = empty( $order ) ? $this->order : $order;
232
+ if ( empty( $order ) ) {
233
+ return; // nothing to delete
234
+ }
235
+
236
+ $data_to_remove = apply_filters( 'wpo_wcpdf_delete_document_data_keys', array(
237
+ 'settings',
238
+ 'date',
239
+ 'date_formatted',
240
+ 'number',
241
+ 'number_data',
242
+ ), $this );
243
+ foreach ($data_to_remove as $data_key) {
244
+ WCX_Order::delete_meta_data( $order, "_wcpdf_{$this->slug}_{$data_key}" );
245
+ }
246
+
247
+ do_action( 'wpo_wcpdf_delete_document', $this );
248
+ }
249
+
250
  public function exists() {
251
  return !empty( $this->data['number'] );
252
  }
354
  }
355
 
356
  $this->data[ 'date' ] = $datetime;
357
+ } catch ( \Exception $e ) {
358
+ wcpdf_log_error( $e->getMessage() );
359
+ } catch ( \Error $e ) {
360
+ wcpdf_log_error( $e->getMessage() );
361
+ }
362
 
363
  }
364
 
551
  do_action( 'wpo_wcpdf_after_pdf', $this->get_type(), $this );
552
  do_action( 'wpo_wcpdf_pdf_created', $pdf, $this );
553
 
554
+ return apply_filters( 'wpo_wcpdf_get_pdf', $pdf, $this );
555
  }
556
 
557
  public function get_html( $args = array() ) {
includes/documents/class-wcpdf-invoice.php CHANGED
@@ -42,6 +42,14 @@ class Invoice extends Order_Document_Methods {
42
  }
43
 
44
  public function init() {
 
 
 
 
 
 
 
 
45
  $this->set_date( current_time( 'timestamp', true ) );
46
  $this->init_number();
47
  }
@@ -85,12 +93,6 @@ class Invoice extends Order_Document_Methods {
85
  return $invoice_number;
86
  }
87
 
88
- public function get_settings() {
89
- $common_settings = WPO_WCPDF()->settings->get_common_document_settings();
90
- $document_settings = get_option( 'wpo_wcpdf_documents_settings_invoice' );
91
- return (array) $document_settings + (array) $common_settings;
92
- }
93
-
94
  public function get_filename( $context = 'download', $args = array() ) {
95
  $order_count = isset($args['order_ids']) ? count($args['order_ids']) : 1;
96
 
42
  }
43
 
44
  public function init() {
45
+ // store settings in order
46
+ if ( !empty( $this->order ) ) {
47
+ $common_settings = WPO_WCPDF()->settings->get_common_document_settings();
48
+ $document_settings = get_option( 'wpo_wcpdf_documents_settings_'.$this->get_type() );
49
+ $settings = (array) $document_settings + (array) $common_settings;
50
+ WCX_Order::update_meta_data( $this->order, "_wcpdf_{$this->slug}_settings", $settings );
51
+ }
52
+
53
  $this->set_date( current_time( 'timestamp', true ) );
54
  $this->init_number();
55
  }
93
  return $invoice_number;
94
  }
95
 
 
 
 
 
 
 
96
  public function get_filename( $context = 'download', $args = array() ) {
97
  $order_count = isset($args['order_ids']) ? count($args['order_ids']) : 1;
98
 
includes/documents/class-wcpdf-packing-slip.php CHANGED
@@ -41,12 +41,6 @@ class Packing_Slip extends Order_Document_Methods {
41
  return apply_filters( "wpo_wcpdf_{$this->slug}_title", __( 'Packing Slip', 'woocommerce-pdf-invoices-packing-slips' ), $this );
42
  }
43
 
44
- public function get_settings() {
45
- $common_settings = WPO_WCPDF()->settings->get_common_document_settings();
46
- $document_settings = get_option( 'wpo_wcpdf_documents_settings_packing-slip' );
47
- return (array) $document_settings + (array) $common_settings;
48
- }
49
-
50
  public function get_filename( $context = 'download', $args = array() ) {
51
  $order_count = isset($args['order_ids']) ? count($args['order_ids']) : 1;
52
 
41
  return apply_filters( "wpo_wcpdf_{$this->slug}_title", __( 'Packing Slip', 'woocommerce-pdf-invoices-packing-slips' ), $this );
42
  }
43
 
 
 
 
 
 
 
44
  public function get_filename( $context = 'download', $args = array() ) {
45
  $order_count = isset($args['order_ids']) ? count($args['order_ids']) : 1;
46
 
includes/views/dompdf-status.php CHANGED
@@ -178,7 +178,7 @@ $upload_base = trailingslashit( $upload_dir['basedir'] );
178
  ?>
179
  <tr>
180
  <td><?php echo $permission['description']; ?></td>
181
- <td><?php echo $permission['value']; ?></td>
182
  <td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>"><?php echo $permission['status_message']; ?></td>
183
  </tr>
184
 
178
  ?>
179
  <tr>
180
  <td><?php echo $permission['description']; ?></td>
181
+ <td><?php echo str_replace( array('/','\\' ), array('/<wbr>','\\<wbr>' ), $permission['value'] ); ?></td>
182
  <td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>"><?php echo $permission['status_message']; ?></td>
183
  </tr>
184
 
includes/views/setup-wizard/logo.php CHANGED
@@ -3,7 +3,18 @@
3
  <p><?php _e( 'Set the header image that will display on your invoice.' , 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
4
  </div>
5
  <div class="wpo-setup-input">
6
- <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" width="100%" height="20px" alt="" id="img-header_logo"/>
7
- <input id="header_logo" name="wcpdf_settings[wpo_wcpdf_settings_general][header_logo]" type="hidden" value="" />
 
 
 
 
 
 
 
 
 
 
 
8
  <span class="button wpo_upload_image_button header_logo" data-uploader_title="<?php _e( 'Select or upload your invoice header/logo', 'woocommerce-pdf-invoices-packing-slips' ); ?>" data-uploader_button_text="<?php _e( 'Set image', 'woocommerce-pdf-invoices-packing-slips' ); ?>" data-remove_button_text="<?php _e( 'Remove image', 'woocommerce-pdf-invoices-packing-slips' ); ?>" data-input_id="header_logo"><?php _e( 'Set image', 'woocommerce-pdf-invoices-packing-slips' ); ?></span>
9
  </div>
3
  <p><?php _e( 'Set the header image that will display on your invoice.' , 'woocommerce-pdf-invoices-packing-slips' ); ?></p>
4
  </div>
5
  <div class="wpo-setup-input">
6
+ <?php
7
+ $current_settings = get_option( 'wpo_wcpdf_settings_general', array() );
8
+ $logo_id = !empty($current_settings['header_logo']) ? $current_settings['header_logo'] : '';
9
+
10
+ if ( !empty($logo_id) && $logo = wp_get_attachment_image_src( $logo_id, 'full', false ) ) {
11
+ $logo_src = $logo[0];
12
+ } else {
13
+ // empty image
14
+ $logo_src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';
15
+ }
16
+ ?>
17
+ <img src="<?php echo $logo_src; ?>" width="100%" height="20px" alt="" id="img-header_logo"/>
18
+ <input id="header_logo" name="wcpdf_settings[wpo_wcpdf_settings_general][header_logo]" type="hidden" value="<?php echo $logo_id; ?>" />
19
  <span class="button wpo_upload_image_button header_logo" data-uploader_title="<?php _e( 'Select or upload your invoice header/logo', 'woocommerce-pdf-invoices-packing-slips' ); ?>" data-uploader_button_text="<?php _e( 'Set image', 'woocommerce-pdf-invoices-packing-slips' ); ?>" data-remove_button_text="<?php _e( 'Remove image', 'woocommerce-pdf-invoices-packing-slips' ); ?>" data-input_id="header_logo"><?php _e( 'Set image', 'woocommerce-pdf-invoices-packing-slips' ); ?></span>
20
  </div>
includes/views/work-at-wpovernight.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style type="text/css">
2
+ .wpo-wcpdf-work-at-wpovernight {
3
+ background-color: #f6f6f6;
4
+ float: left;
5
+ border: 1px solid #ccc;
6
+ margin: 15px 0;
7
+ padding: 5px;
8
+ }
9
+ .wpo-wcpdf-work-at-wpovernight code {
10
+ display: block;
11
+ float:left;
12
+ font-family: "Courier New", Courier, monospace;
13
+ font-size: 8pt;
14
+ line-height: 11pt;
15
+ background-color: #272822;
16
+ color: white;
17
+ margin: 0;
18
+ padding: 10px;
19
+ }
20
+ .wpo-wcpdf-work-at-wpovernight code ol {
21
+ margin: 0;
22
+ margin-left: 2em;
23
+ }
24
+
25
+ .wpo-wcpdf-work-at-wpovernight code li {
26
+ margin: 0;
27
+ padding: 0;
28
+ }
29
+ .wpo-wcpdf-work-at-wpovernight code .blue {
30
+ color: #66D9EF;
31
+ }
32
+ .wpo-wcpdf-work-at-wpovernight code .yellow {
33
+ color: #FFE792;
34
+ }
35
+ .wpo-wcpdf-work-at-wpovernight code .red {
36
+ color: #F92672;
37
+ }
38
+ .wpo-wcpdf-work-at-wpovernight code .grey {
39
+ color: #999;
40
+ }
41
+ .wpo-wcpdf-work-at-wpovernight code a{
42
+ color: white;
43
+ text-decoration: none;
44
+ }
45
+
46
+ .wpo-wcpdf-work-at-wpovernight .subtext {
47
+ font-family: monospace;
48
+ text-align: right;
49
+ font-size: 10pt;
50
+ line-height: 16pt;
51
+ padding: 5px 0;
52
+ font-weight: bold;
53
+ }
54
+ </style>
55
+ <div class="wpo-wcpdf-work-at-wpovernight">
56
+ <code>
57
+ <ol>
58
+ <li>&lt;?php<br></li>
59
+ <li><span class="red">if</span> ( <span class="blue">is_a</span>( $you, <span class="yellow">'PHP_Developer'</span> ) <span class="red">&&</span> $you-><span class="blue">love_coding()</span> <span class="red">&&</span> $you-><span class="blue">speak_wordpress()</span> ) {</li>
60
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;$you-><a href="mailto:work@wpovernight.com"><span class="blue">send_email</span>(<span class="yellow">'work@wpovernight.com'</span>)</a>; <span class="grey">// we're hiring!!!</span></li>
61
+ <li>}</li>
62
+ <li>?&gt;</li>
63
+ </ol>
64
+ </code>
65
+ <div style="clear:both;"></div>
66
+ <div class="subtext">
67
+ We're hiring! Got PHP? Send your resume to <a href="mailto:work@wpovernight.com">work@wpovernight.com</a>!
68
+ </div>
69
+ </div>
70
+ <div style="clear:both;"></div>
includes/wcpdf-functions.php CHANGED
@@ -105,7 +105,7 @@ function wcpdf_get_packing_slip( $order, $init = false ) {
105
  /**
106
  * Load HTML into (pluggable) PDF library, DomPDF 0.6 by default
107
  * Use wpo_wcpdf_pdf_maker filter to change the PDF class (which can wrap another PDF library).
108
- * @return WC_Logger
109
  */
110
  function wcpdf_get_pdf_maker( $html, $settings = array() ) {
111
  if ( ! class_exists( '\\WPO\\WC\\PDF_Invoices\\PDF_Maker' ) ) {
@@ -159,7 +159,50 @@ function wcpdf_deprecated_function( $function, $version, $replacement = null ) {
159
  $log_string = "The {$function} function is deprecated since version {$version}.";
160
  $log_string .= $replacement ? " Replace with {$replacement}." : '';
161
  error_log( $log_string );
 
162
  } else {
163
  _deprecated_function( $function, $version, $replacement );
164
  }
165
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  /**
106
  * Load HTML into (pluggable) PDF library, DomPDF 0.6 by default
107
  * Use wpo_wcpdf_pdf_maker filter to change the PDF class (which can wrap another PDF library).
108
+ * @return PDF_Maker
109
  */
110
  function wcpdf_get_pdf_maker( $html, $settings = array() ) {
111
  if ( ! class_exists( '\\WPO\\WC\\PDF_Invoices\\PDF_Maker' ) ) {
159
  $log_string = "The {$function} function is deprecated since version {$version}.";
160
  $log_string .= $replacement ? " Replace with {$replacement}." : '';
161
  error_log( $log_string );
162
+ wcpdf_log_error( $log_string, 'warning' );
163
  } else {
164
  _deprecated_function( $function, $version, $replacement );
165
  }
166
  }
167
+
168
+ /**
169
+ * Logger function to capture errors thrown by this plugin, uses the WC Logger when possible (WC3.0+)
170
+ */
171
+ function wcpdf_log_error( $message, $level = 'error', $e = null ) {
172
+ if (function_exists('wc_get_logger')) {
173
+ $logger = wc_get_logger();
174
+ $context = array( 'source' => 'wpo-wcpdf' );
175
+
176
+ if ( apply_filters( 'wcpdf_log_stacktrace', false ) && !empty($e) && is_callable( array( $e, 'getTraceAsString') ) ) {
177
+ $message .= "\n".$e->getTraceAsString();
178
+ }
179
+
180
+ // The `log` method accepts any valid level as its first argument.
181
+ // debug - 'Detailed debug information'
182
+ // info - 'Interesting events'
183
+ // notice - 'Normal but significant events'
184
+ // warning - 'Exceptional occurrences that are not errors'
185
+ // error - 'Runtime errors that do not require immediate'
186
+ // critical - 'Critical conditions'
187
+ // alert - 'Action must be taken immediately'
188
+ // emergency - 'System is unusable'
189
+ $logger->log( $level, $message, $context );
190
+ } else {
191
+ error_log( "WCPDF error ({$level}): {$message}" );
192
+ }
193
+ }
194
+
195
+ function wcpdf_output_error( $message, $level = 'error', $e = null ) {
196
+ if ( !current_user_can( 'edit_shop_orders' ) ) {
197
+ _e( 'Error creating PDF, please contact the site owner.', 'woocommerce-pdf-invoices-packing-slips' );
198
+ return;
199
+ }
200
+ ?>
201
+ <div style="border: 2px solid red; padding: 5px;">
202
+ <h3><?php echo $message; ?></h3>
203
+ <?php if ( !empty($e) && is_callable( array( $e, 'getTraceAsString') ) ): ?>
204
+ <pre><?php echo $e->getTraceAsString(); ?></pre>
205
+ <?php endif ?>
206
+ </div>
207
+ <?php
208
+ }
languages/woocommerce-pdf-invoices-packing-slips.pot CHANGED
@@ -2,7 +2,7 @@
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: WooCommerce PDF Invoices & Packing Slips\n"
5
- "POT-Creation-Date: 2017-06-13 13:13+0200\n"
6
  "PO-Revision-Date: 2015-04-29 08:58+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: WP Overnight <support@wpovernight.com>\n"
@@ -17,60 +17,133 @@ msgstr ""
17
  "X-Poedit-KeywordsList: __;_e;_x;_n:1,2\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
 
20
- #: includes/class-wcpdf-admin.php:72 includes/class-wcpdf-admin.php:174
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  msgid "Invoice Number"
22
  msgstr ""
23
 
24
- #: includes/class-wcpdf-admin.php:105
 
 
 
 
25
  msgid "Create PDF"
26
  msgstr ""
27
 
28
- #: includes/class-wcpdf-admin.php:115
29
  msgid "PDF Invoice data"
30
  msgstr ""
31
 
32
- #: includes/class-wcpdf-admin.php:166
33
- #: includes/documents/class-wcpdf-invoice.php:32
34
- #: includes/documents/class-wcpdf-invoice.php:41
35
- #: includes/legacy/class-wcpdf-legacy-functions.php:22
36
- #: templates/Simple/invoice.php:10 templates/Simple/invoice.php:22
37
- msgid "Invoice"
38
  msgstr ""
39
 
40
- #: includes/class-wcpdf-admin.php:183 includes/class-wcpdf-admin.php:204
41
- #: templates/Simple/invoice.php:56
42
  msgid "Invoice Date:"
43
  msgstr ""
44
 
45
- #: includes/class-wcpdf-admin.php:189
46
  msgid "Set invoice number & date"
47
  msgstr ""
48
 
49
- #: includes/class-wcpdf-admin.php:196
50
  msgid "Invoice Number (unformatted!)"
51
  msgstr ""
52
 
53
- #: includes/class-wcpdf-admin.php:206 includes/class-wcpdf-admin.php:208
54
  msgid "h"
55
  msgstr ""
56
 
57
- #: includes/class-wcpdf-admin.php:206 includes/class-wcpdf-admin.php:208
58
  msgid "m"
59
  msgstr ""
60
 
 
 
 
 
 
 
 
 
 
 
61
  #: includes/class-wcpdf-frontend.php:55
 
 
 
 
 
62
  msgid "Download invoice (PDF)"
63
  msgstr ""
64
 
65
- #: includes/class-wcpdf-main.php:132 includes/class-wcpdf-main.php:153
66
- #: includes/class-wcpdf-main.php:160 includes/class-wcpdf-main.php:166
67
  msgid "You do not have sufficient permissions to access this page."
68
  msgstr ""
69
 
70
- #: includes/class-wcpdf-main.php:141
 
 
 
 
71
  msgid "Some of the export parameters are missing."
72
  msgstr ""
73
 
 
 
 
 
 
 
 
 
 
74
  #: includes/class-wcpdf-settings-callbacks.php:27
75
  msgid ""
76
  "<b>Warning!</b> The settings below are meant for debugging/development only. "
@@ -84,185 +157,327 @@ msgid ""
84
  "custom template"
85
  msgstr ""
86
 
87
- #: includes/class-wcpdf-settings-callbacks.php:301
88
  msgid "Image resolution"
89
  msgstr ""
90
 
91
- #: includes/class-wcpdf-settings-callbacks.php:325
92
  msgid "Save"
93
  msgstr ""
94
 
95
- #: includes/class-wcpdf-settings-debug.php:34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  msgid "Debug settings"
97
  msgstr ""
98
 
99
- #: includes/class-wcpdf-settings-debug.php:40
100
  msgid "Legacy mode"
101
  msgstr ""
102
 
103
- #: includes/class-wcpdf-settings-debug.php:46
104
  msgid ""
105
  "Legacy mode ensures compatibility with templates and filters from previous "
106
  "versions."
107
  msgstr ""
108
 
109
- #: includes/class-wcpdf-settings-debug.php:52
 
 
 
 
 
 
 
 
 
 
 
110
  msgid "Enable debug output"
111
  msgstr ""
112
 
113
- #: includes/class-wcpdf-settings-debug.php:58
114
  msgid ""
115
  "Enable this option to output plugin errors if you're getting a blank page or "
116
  "other PDF generation issues"
117
  msgstr ""
118
 
119
- #: includes/class-wcpdf-settings-debug.php:64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  msgid "Output to HTML"
121
  msgstr ""
122
 
123
- #: includes/class-wcpdf-settings-debug.php:70
124
  msgid ""
125
  "Send the template output as HTML to the browser instead of creating a PDF."
126
  msgstr ""
127
 
128
- #: includes/class-wcpdf-settings-documents.php:29
129
- #: includes/class-wcpdf-settings.php:84
 
 
 
 
130
  msgid "Documents"
131
  msgstr ""
132
 
133
- #: includes/class-wcpdf-settings-documents.php:45
134
  msgid ""
135
  "All available documents are listed below. Click on a document to configure "
136
  "it."
137
  msgstr ""
138
 
139
- #: includes/class-wcpdf-settings-general.php:37
140
  msgid "General settings"
141
  msgstr ""
142
 
143
- #: includes/class-wcpdf-settings-general.php:43
144
  msgid "How do you want to view the PDF?"
145
  msgstr ""
146
 
147
- #: includes/class-wcpdf-settings-general.php:50
148
  msgid "Download the PDF"
149
  msgstr ""
150
 
151
- #: includes/class-wcpdf-settings-general.php:51
152
  msgid "Open the PDF in a new browser tab/window"
153
  msgstr ""
154
 
155
- #: includes/class-wcpdf-settings-general.php:58
156
  msgid "Choose a template"
157
  msgstr ""
158
 
159
- #: includes/class-wcpdf-settings-general.php:65
160
  #, php-format
161
  msgid ""
162
  "Want to use your own template? Copy all the files from <code>%s</code> to "
163
  "your (child) theme in <code>%s</code> to customize them"
164
  msgstr ""
165
 
166
- #: includes/class-wcpdf-settings-general.php:71
167
  msgid "Paper size"
168
  msgstr ""
169
 
170
- #: includes/class-wcpdf-settings-general.php:78
 
171
  msgid "A4"
172
  msgstr ""
173
 
174
- #: includes/class-wcpdf-settings-general.php:79
 
175
  msgid "Letter"
176
  msgstr ""
177
 
178
- #: includes/class-wcpdf-settings-general.php:86
179
  msgid "Extended currency symbol support"
180
  msgstr ""
181
 
182
- #: includes/class-wcpdf-settings-general.php:92
183
  msgid "Enable this if your currency symbol is not displaying properly"
184
  msgstr ""
185
 
186
- #: includes/class-wcpdf-settings-general.php:98
 
 
 
 
 
 
 
 
 
 
 
187
  msgid "Shop header/logo"
188
  msgstr ""
189
 
190
- #: includes/class-wcpdf-settings-general.php:104
 
191
  msgid "Select or upload your invoice header/logo"
192
  msgstr ""
193
 
194
- #: includes/class-wcpdf-settings-general.php:105
 
195
  msgid "Set image"
196
  msgstr ""
197
 
198
- #: includes/class-wcpdf-settings-general.php:106
 
199
  msgid "Remove image"
200
  msgstr ""
201
 
202
- #: includes/class-wcpdf-settings-general.php:113
 
203
  msgid "Shop Name"
204
  msgstr ""
205
 
206
- #: includes/class-wcpdf-settings-general.php:126
207
  msgid "Shop Address"
208
  msgstr ""
209
 
210
- #: includes/class-wcpdf-settings-general.php:141
211
  msgid "Footer: terms & conditions, policies, etc."
212
  msgstr ""
213
 
214
- #: includes/class-wcpdf-settings-general.php:156
215
  msgid "Extra template fields"
216
  msgstr ""
217
 
218
- #: includes/class-wcpdf-settings-general.php:162
219
  msgid "Extra field 1"
220
  msgstr ""
221
 
222
- #: includes/class-wcpdf-settings-general.php:170
223
  msgid "This is footer column 1 in the <i>Modern (Premium)</i> template"
224
  msgstr ""
225
 
226
- #: includes/class-wcpdf-settings-general.php:177
227
  msgid "Extra field 2"
228
  msgstr ""
229
 
230
- #: includes/class-wcpdf-settings-general.php:185
231
  msgid "This is footer column 2 in the <i>Modern (Premium)</i> template"
232
  msgstr ""
233
 
234
- #: includes/class-wcpdf-settings-general.php:192
235
  msgid "Extra field 3"
236
  msgstr ""
237
 
238
- #: includes/class-wcpdf-settings-general.php:200
239
  msgid "This is footer column 3 in the <i>Modern (Premium)</i> template"
240
  msgstr ""
241
 
242
- #: includes/class-wcpdf-settings.php:45 includes/class-wcpdf-settings.php:46
243
  msgid "PDF Invoices"
244
  msgstr ""
245
 
246
- #: includes/class-wcpdf-settings.php:58
247
  msgid "Settings"
248
  msgstr ""
249
 
250
- #: includes/class-wcpdf-settings.php:71
251
  msgid "Documentation"
252
  msgstr ""
253
 
254
- #: includes/class-wcpdf-settings.php:72
255
  msgid "Support Forum"
256
  msgstr ""
257
 
258
- #: includes/class-wcpdf-settings.php:83
 
 
 
 
 
 
 
 
 
259
  msgid "General"
260
  msgstr ""
261
 
262
- #: includes/class-wcpdf-settings.php:89
263
  msgid "Status"
264
  msgstr ""
265
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
  #: includes/compatibility/class-wc-core-compatibility.php:222
267
  msgid "WooCommerce"
268
  msgstr ""
@@ -272,76 +487,82 @@ msgstr ""
272
  msgid "N/A"
273
  msgstr ""
274
 
275
- #: includes/documents/abstract-wcpdf-order-document-methods.php:305
276
  msgid "Payment method"
277
  msgstr ""
278
 
279
- #: includes/documents/abstract-wcpdf-order-document-methods.php:326
280
  msgid "Shipping method"
281
  msgstr ""
282
 
283
- #: includes/documents/abstract-wcpdf-order-document-methods.php:669
284
  #, php-format
285
  msgid "(includes %s)"
286
  msgstr ""
287
 
288
- #: includes/documents/abstract-wcpdf-order-document-methods.php:672
289
  #, php-format
290
  msgid "(Includes %s)"
291
  msgstr ""
292
 
293
- #: includes/documents/abstract-wcpdf-order-document-methods.php:702
294
  msgid "Subtotal"
295
  msgstr ""
296
 
297
- #: includes/documents/abstract-wcpdf-order-document-methods.php:727
298
  msgid "Shipping"
299
  msgstr ""
300
 
301
- #: includes/documents/abstract-wcpdf-order-document-methods.php:790
302
  msgid "Discount"
303
  msgstr ""
304
 
305
- #: includes/documents/abstract-wcpdf-order-document-methods.php:831
306
  msgid "VAT"
307
  msgstr ""
308
 
309
- #: includes/documents/abstract-wcpdf-order-document-methods.php:832
310
  msgid "Tax rate"
311
  msgstr ""
312
 
313
- #: includes/documents/abstract-wcpdf-order-document-methods.php:876
314
  msgid "Total ex. VAT"
315
  msgstr ""
316
 
317
- #: includes/documents/abstract-wcpdf-order-document-methods.php:879
318
  msgid "Total"
319
  msgstr ""
320
 
321
- #: includes/documents/abstract-wcpdf-order-document.php:679
322
  msgid "Admin email"
323
  msgstr ""
324
 
325
- #: includes/documents/abstract-wcpdf-order-document.php:682
326
  msgid "Manual email"
327
  msgstr ""
328
 
329
- #: includes/documents/class-wcpdf-invoice.php:85
 
 
 
 
 
 
330
  msgid "invoice"
331
  msgid_plural "invoices"
332
  msgstr[0] ""
333
  msgstr[1] ""
334
 
335
- #: includes/documents/class-wcpdf-invoice.php:130
336
- #: includes/documents/class-wcpdf-packing-slip.php:94
337
  msgid "Enable"
338
  msgstr ""
339
 
340
- #: includes/documents/class-wcpdf-invoice.php:141
341
  msgid "Attach to:"
342
  msgstr ""
343
 
344
- #: includes/documents/class-wcpdf-invoice.php:148
345
  #, php-format
346
  msgid ""
347
  "It looks like the temp folder (<code>%s</code>) is not writable, check the "
@@ -349,39 +570,44 @@ msgid ""
349
  "plugin will not be able to email invoices."
350
  msgstr ""
351
 
352
- #: includes/documents/class-wcpdf-invoice.php:154
 
353
  msgid "Display shipping address"
354
  msgstr ""
355
 
356
- #: includes/documents/class-wcpdf-invoice.php:160
357
  msgid ""
358
  "Display shipping address (in addition to the default billing address) if "
359
  "different from billing address"
360
  msgstr ""
361
 
362
- #: includes/documents/class-wcpdf-invoice.php:166
363
- #: includes/documents/class-wcpdf-packing-slip.php:117
 
364
  msgid "Display email address"
365
  msgstr ""
366
 
367
- #: includes/documents/class-wcpdf-invoice.php:177
368
- #: includes/documents/class-wcpdf-packing-slip.php:128
 
369
  msgid "Display phone number"
370
  msgstr ""
371
 
372
- #: includes/documents/class-wcpdf-invoice.php:188
 
373
  msgid "Display invoice date"
374
  msgstr ""
375
 
376
- #: includes/documents/class-wcpdf-invoice.php:200
 
377
  msgid "Display invoice number"
378
  msgstr ""
379
 
380
- #: includes/documents/class-wcpdf-invoice.php:212
381
  msgid "Next invoice number (without prefix/suffix etc.)"
382
  msgstr ""
383
 
384
- #: includes/documents/class-wcpdf-invoice.php:218
385
  msgid ""
386
  "This is the number that will be used for the next document. By default, "
387
  "numbering starts from 1 and increases for every new document. Note that if "
@@ -389,80 +615,80 @@ msgid ""
389
  "could create duplicate numbers!"
390
  msgstr ""
391
 
392
- #: includes/documents/class-wcpdf-invoice.php:224
393
  msgid "Number format"
394
  msgstr ""
395
 
396
- #: includes/documents/class-wcpdf-invoice.php:232
397
  msgid "Prefix"
398
  msgstr ""
399
 
400
- #: includes/documents/class-wcpdf-invoice.php:234
401
  msgid ""
402
  "to use the invoice year and/or month, use [invoice_year] or [invoice_month] "
403
  "respectively"
404
  msgstr ""
405
 
406
- #: includes/documents/class-wcpdf-invoice.php:237
407
  msgid "Suffix"
408
  msgstr ""
409
 
410
- #: includes/documents/class-wcpdf-invoice.php:242
411
  msgid "Padding"
412
  msgstr ""
413
 
414
- #: includes/documents/class-wcpdf-invoice.php:245
415
  msgid "enter the number of digits here - enter \"6\" to display 42 as 000042"
416
  msgstr ""
417
 
418
- #: includes/documents/class-wcpdf-invoice.php:248
419
  msgid ""
420
  "note: if you have already created a custom invoice number format with a "
421
  "filter, the above settings will be ignored"
422
  msgstr ""
423
 
424
- #: includes/documents/class-wcpdf-invoice.php:254
425
  msgid "Reset invoice number yearly"
426
  msgstr ""
427
 
428
- #: includes/documents/class-wcpdf-invoice.php:265
429
  msgid "Allow My Account invoice download"
430
  msgstr ""
431
 
432
- #: includes/documents/class-wcpdf-invoice.php:272
433
  msgid "Only when an invoice is already created/emailed"
434
  msgstr ""
435
 
436
- #: includes/documents/class-wcpdf-invoice.php:273
437
  msgid "Only for specific order statuses (define below)"
438
  msgstr ""
439
 
440
- #: includes/documents/class-wcpdf-invoice.php:274
441
  msgid "Always"
442
  msgstr ""
443
 
444
- #: includes/documents/class-wcpdf-invoice.php:275
445
  msgid "Never"
446
  msgstr ""
447
 
448
- #: includes/documents/class-wcpdf-invoice.php:290
449
  msgid "Enable invoice number column in the orders list"
450
  msgstr ""
451
 
452
- #: includes/documents/class-wcpdf-invoice.php:301
453
  msgid "Disable for free products"
454
  msgstr ""
455
 
456
- #: includes/documents/class-wcpdf-invoice.php:307
457
  msgid ""
458
  "Disable automatic creation/attachment when only free products are ordered"
459
  msgstr ""
460
 
461
- #: includes/documents/class-wcpdf-invoice.php:321
462
  msgid "Invoice numbers are created by a third-party extension."
463
  msgstr ""
464
 
465
- #: includes/documents/class-wcpdf-invoice.php:323
466
  #, php-format
467
  msgid "Configure it <a href=\"%s\">here</a>."
468
  msgstr ""
@@ -470,21 +696,20 @@ msgstr ""
470
  #: includes/documents/class-wcpdf-packing-slip.php:32
471
  #: includes/documents/class-wcpdf-packing-slip.php:41
472
  #: includes/legacy/class-wcpdf-legacy-functions.php:25
473
- #: templates/Simple/packing-slip.php:10 templates/Simple/packing-slip.php:22
474
  msgid "Packing Slip"
475
  msgstr ""
476
 
477
- #: includes/documents/class-wcpdf-packing-slip.php:53
478
  msgid "packing-slip"
479
  msgid_plural "packing-slips"
480
  msgstr[0] ""
481
  msgstr[1] ""
482
 
483
- #: includes/documents/class-wcpdf-packing-slip.php:105
484
  msgid "Display billing address"
485
  msgstr ""
486
 
487
- #: includes/documents/class-wcpdf-packing-slip.php:111
488
  msgid ""
489
  "Display billing address (in addition to the default shipping address) if "
490
  "different from shipping address"
@@ -494,20 +719,73 @@ msgstr ""
494
  msgid "Legacy Document"
495
  msgstr ""
496
 
497
- #: includes/legacy/class-wcpdf-legacy.php:70
498
  msgid "Error"
499
  msgstr ""
500
 
501
- #: includes/legacy/class-wcpdf-legacy.php:71
502
  msgid ""
503
  "An outdated template or action hook was used to generate the PDF. Legacy "
504
  "mode has been activated, please try again by reloading this page."
505
  msgstr ""
506
 
507
- #: includes/legacy/class-wcpdf-legacy.php:74
508
  msgid "The following function was called"
509
  msgstr ""
510
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511
  #: includes/views/wcpdf-extensions.php:15
512
  msgid "Check out these premium extensions!"
513
  msgstr ""
@@ -572,28 +850,28 @@ msgid "Use the plugin in multilingual <b>WPML</b> setups"
572
  msgstr ""
573
 
574
  #: includes/views/wcpdf-extensions.php:33
575
- #: includes/views/wcpdf-extensions.php:131
576
  msgid "Advanced, customizable templates"
577
  msgstr ""
578
 
579
  #: includes/views/wcpdf-extensions.php:35
580
- #: includes/views/wcpdf-extensions.php:134
581
  msgid ""
582
  "Completely customize the invoice contents (prices, taxes, thumbnails) to "
583
  "your needs with a drag & drop customizer"
584
  msgstr ""
585
 
586
  #: includes/views/wcpdf-extensions.php:36
587
- #: includes/views/wcpdf-extensions.php:135
588
  msgid "Two extra stylish premade templates (Modern & Business)"
589
  msgstr ""
590
 
591
  #: includes/views/wcpdf-extensions.php:38
 
592
  msgid "Upload automatically to dropbox"
593
  msgstr ""
594
 
595
  #: includes/views/wcpdf-extensions.php:40
596
- #: includes/views/wcpdf-extensions.php:97
597
  msgid ""
598
  "This extension conveniently uploads all the invoices (and other pdf "
599
  "documents from the professional extension) that are emailed to your "
@@ -615,149 +893,141 @@ msgid ""
615
  "features:"
616
  msgstr ""
617
 
618
- #: includes/views/wcpdf-extensions.php:63
619
  msgid "Get WooCommerce PDF Invoices & Packing Slips Professional!"
620
  msgstr ""
621
 
622
- #: includes/views/wcpdf-extensions.php:71
623
  msgid "Automatically send payment reminders to your customers"
624
  msgstr ""
625
 
626
- #: includes/views/wcpdf-extensions.php:73
627
  msgid "WooCommerce Smart Reminder emails"
628
  msgstr ""
629
 
630
- #: includes/views/wcpdf-extensions.php:75
631
  msgid "<b>Completely automatic</b> scheduled emails"
632
  msgstr ""
633
 
634
- #: includes/views/wcpdf-extensions.php:76
635
  msgid ""
636
  "<b>Rich text editor</b> for the email text, including placeholders for data "
637
  "from the order (name, order total, etc)"
638
  msgstr ""
639
 
640
- #: includes/views/wcpdf-extensions.php:77
641
  msgid ""
642
  "Configure the exact requirements for sending an email (time after order, "
643
  "order status, payment method)"
644
  msgstr ""
645
 
646
- #: includes/views/wcpdf-extensions.php:78
647
  msgid ""
648
  "Fully <b>WPML Compatible</b> – emails will be automatically sent in the "
649
  "order language."
650
  msgstr ""
651
 
652
- #: includes/views/wcpdf-extensions.php:79
653
  msgid ""
654
  "<b>Super versatile!</b> Can be used for any kind of reminder email (review "
655
  "reminders, repeat purchases)"
656
  msgstr ""
657
 
658
- #: includes/views/wcpdf-extensions.php:80
659
  msgid "Integrates seamlessly with the PDF Invoices & Packing Slips plugin"
660
  msgstr ""
661
 
662
- #: includes/views/wcpdf-extensions.php:82
663
  msgid "Get WooCommerce Smart Reminder Emails"
664
  msgstr ""
665
 
666
- #: includes/views/wcpdf-extensions.php:91
667
- msgid "Upload all invoices automatically to your dropbox"
668
- msgstr ""
669
-
670
- #: includes/views/wcpdf-extensions.php:98
671
- msgid "Get WooCommerce PDF Invoices & Packing Slips to dropbox!"
672
- msgstr ""
673
-
674
- #: includes/views/wcpdf-extensions.php:110
675
  msgid ""
676
  "Automatically send new orders or packing slips to your printer, as soon as "
677
  "the customer orders!"
678
  msgstr ""
679
 
680
- #: includes/views/wcpdf-extensions.php:116
681
  msgid ""
682
  "Check out the WooCommerce Automatic Order Printing extension from our "
683
  "partners at Simba Hosting"
684
  msgstr ""
685
 
686
- #: includes/views/wcpdf-extensions.php:117
687
  msgid "WooCommerce Automatic Order Printing"
688
  msgstr ""
689
 
690
- #: includes/views/wcpdf-extensions.php:136
691
  #, php-format
692
  msgid "Check out the Premium PDF Invoice & Packing Slips templates at %s."
693
  msgstr ""
694
 
695
- #: includes/views/wcpdf-extensions.php:137
696
  #, php-format
697
  msgid "For custom templates, contact us at %s."
698
  msgstr ""
699
 
700
- #: includes/views/wcpdf-extensions.php:146
701
- msgid "Hide this message"
702
- msgstr ""
703
-
704
  #: includes/views/wcpdf-settings-page.php:8
705
  msgid "WooCommerce PDF Invoices"
706
  msgstr ""
707
 
708
- #: templates/Simple/invoice.php:30 templates/Simple/packing-slip.php:41
 
 
 
 
709
  msgid "Billing Address:"
710
  msgstr ""
711
 
712
- #: templates/Simple/invoice.php:41
713
  msgid "Ship To:"
714
  msgstr ""
715
 
716
- #: templates/Simple/invoice.php:50
717
  msgid "Invoice Number:"
718
  msgstr ""
719
 
720
- #: templates/Simple/invoice.php:61 templates/Simple/packing-slip.php:49
721
  msgid "Order Number:"
722
  msgstr ""
723
 
724
- #: templates/Simple/invoice.php:65 templates/Simple/packing-slip.php:53
725
  msgid "Order Date:"
726
  msgstr ""
727
 
728
- #: templates/Simple/invoice.php:69
729
  msgid "Payment Method:"
730
  msgstr ""
731
 
732
- #: templates/Simple/invoice.php:83 templates/Simple/packing-slip.php:71
733
  msgid "Product"
734
  msgstr ""
735
 
736
- #: templates/Simple/invoice.php:84 templates/Simple/packing-slip.php:72
737
  msgid "Quantity"
738
  msgstr ""
739
 
740
- #: templates/Simple/invoice.php:85
741
  msgid "Price"
742
  msgstr ""
743
 
744
- #: templates/Simple/invoice.php:92 templates/Simple/packing-slip.php:79
745
  msgid "Description"
746
  msgstr ""
747
 
748
- #: templates/Simple/invoice.php:97 templates/Simple/packing-slip.php:84
749
  msgid "SKU"
750
  msgstr ""
751
 
752
- #: templates/Simple/invoice.php:98 templates/Simple/packing-slip.php:85
753
  msgid "SKU:"
754
  msgstr ""
755
 
756
- #: templates/Simple/invoice.php:99 templates/Simple/packing-slip.php:86
757
  msgid "Weight:"
758
  msgstr ""
759
 
760
- #: templates/Simple/invoice.php:114 templates/Simple/packing-slip.php:101
761
  msgid "Customer Notes"
762
  msgstr ""
763
 
@@ -765,23 +1035,23 @@ msgstr ""
765
  msgid "Shipping Address:"
766
  msgstr ""
767
 
768
- #: templates/Simple/packing-slip.php:57
769
  msgid "Shipping Method:"
770
  msgstr ""
771
 
772
- #: woocommerce-pdf-invoices-packingslips.php:229
773
  #, php-format
774
  msgid ""
775
  "WooCommerce PDF Invoices & Packing Slips requires %sWooCommerce%s to be "
776
  "installed & activated!"
777
  msgstr ""
778
 
779
- #: woocommerce-pdf-invoices-packingslips.php:241
780
  msgid ""
781
  "WooCommerce PDF Invoices & Packing Slips requires PHP 5.3 or higher (5.6 or "
782
  "higher recommended)."
783
  msgstr ""
784
 
785
- #: woocommerce-pdf-invoices-packingslips.php:242
786
  msgid "How to update your PHP version"
787
  msgstr ""
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: WooCommerce PDF Invoices & Packing Slips\n"
5
+ "POT-Creation-Date: 2018-10-10 10:05+0200\n"
6
  "PO-Revision-Date: 2015-04-29 08:58+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: WP Overnight <support@wpovernight.com>\n"
17
  "X-Poedit-KeywordsList: __;_e;_x;_n:1,2\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
 
20
+ #: includes/class-wcpdf-admin.php:79
21
+ #, php-format
22
+ msgid "Wow, you have created more than %d invoices with our plugin!"
23
+ msgstr ""
24
+
25
+ #: includes/class-wcpdf-admin.php:80
26
+ msgid ""
27
+ "It would mean a lot to us if you would quickly give our plugin a 5-star "
28
+ "rating. Help us spread the word and boost our motivation!"
29
+ msgstr ""
30
+
31
+ #: includes/class-wcpdf-admin.php:82
32
+ msgid "Yes you deserve it!"
33
+ msgstr ""
34
+
35
+ #: includes/class-wcpdf-admin.php:83
36
+ #: includes/views/attachment-settings-hint.php:22
37
+ #: includes/views/wcpdf-extensions.php:128
38
+ msgid "Hide this message"
39
+ msgstr ""
40
+
41
+ #: includes/class-wcpdf-admin.php:83
42
+ msgid "Already did!"
43
+ msgstr ""
44
+
45
+ #: includes/class-wcpdf-admin.php:84
46
+ msgid "Actually, I have a complaint..."
47
+ msgstr ""
48
+
49
+ #: includes/class-wcpdf-admin.php:119
50
+ msgid "New to WooCommerce PDF Invoices & Packing Slips?"
51
+ msgstr ""
52
+
53
+ #: includes/class-wcpdf-admin.php:119
54
+ msgid "Jumpstart the plugin by following our wizard!"
55
+ msgstr ""
56
+
57
+ #: includes/class-wcpdf-admin.php:120
58
+ msgid "Run the Setup Wizard"
59
+ msgstr ""
60
+
61
+ #: includes/class-wcpdf-admin.php:120
62
+ msgid "I am the wizard"
63
+ msgstr ""
64
+
65
+ #: includes/class-wcpdf-admin.php:201 includes/class-wcpdf-admin.php:351
66
+ #: includes/class-wcpdf-main.php:567
67
  msgid "Invoice Number"
68
  msgstr ""
69
 
70
+ #: includes/class-wcpdf-admin.php:237
71
+ msgid "Send order email"
72
+ msgstr ""
73
+
74
+ #: includes/class-wcpdf-admin.php:248
75
  msgid "Create PDF"
76
  msgstr ""
77
 
78
+ #: includes/class-wcpdf-admin.php:258
79
  msgid "PDF Invoice data"
80
  msgstr ""
81
 
82
+ #: includes/class-wcpdf-admin.php:292
83
+ msgid "Send email"
 
 
 
 
84
  msgstr ""
85
 
86
+ #: includes/class-wcpdf-admin.php:360 includes/class-wcpdf-admin.php:381
87
+ #: templates/Simple/invoice.php:60
88
  msgid "Invoice Date:"
89
  msgstr ""
90
 
91
+ #: includes/class-wcpdf-admin.php:366
92
  msgid "Set invoice number & date"
93
  msgstr ""
94
 
95
+ #: includes/class-wcpdf-admin.php:373
96
  msgid "Invoice Number (unformatted!)"
97
  msgstr ""
98
 
99
+ #: includes/class-wcpdf-admin.php:383 includes/class-wcpdf-admin.php:385
100
  msgid "h"
101
  msgstr ""
102
 
103
+ #: includes/class-wcpdf-admin.php:383 includes/class-wcpdf-admin.php:385
104
  msgid "m"
105
  msgstr ""
106
 
107
+ #. translators: %s: email title
108
+ #: includes/class-wcpdf-admin.php:476
109
+ #, php-format
110
+ msgid "%s email notification manually sent."
111
+ msgstr ""
112
+
113
+ #: includes/class-wcpdf-assets.php:79
114
+ msgid "Are you sure you want to delete this document? This cannot be undone."
115
+ msgstr ""
116
+
117
  #: includes/class-wcpdf-frontend.php:55
118
+ #, php-format
119
+ msgid "Download %s (PDF)"
120
+ msgstr ""
121
+
122
+ #: includes/class-wcpdf-frontend.php:57
123
  msgid "Download invoice (PDF)"
124
  msgstr ""
125
 
126
+ #: includes/class-wcpdf-main.php:162 includes/class-wcpdf-main.php:214
 
127
  msgid "You do not have sufficient permissions to access this page."
128
  msgstr ""
129
 
130
+ #: includes/class-wcpdf-main.php:171
131
+ msgid "You haven't selected any orders"
132
+ msgstr ""
133
+
134
+ #: includes/class-wcpdf-main.php:175
135
  msgid "Some of the export parameters are missing."
136
  msgstr ""
137
 
138
+ #: includes/class-wcpdf-main.php:237
139
+ #, php-format
140
+ msgid "Document of type '%s' for the selected order(s) could not be generated"
141
+ msgstr ""
142
+
143
+ #: includes/class-wcpdf-main.php:568
144
+ msgid "Invoice Date"
145
+ msgstr ""
146
+
147
  #: includes/class-wcpdf-settings-callbacks.php:27
148
  msgid ""
149
  "<b>Warning!</b> The settings below are meant for debugging/development only. "
157
  "custom template"
158
  msgstr ""
159
 
160
+ #: includes/class-wcpdf-settings-callbacks.php:347
161
  msgid "Image resolution"
162
  msgstr ""
163
 
164
+ #: includes/class-wcpdf-settings-callbacks.php:372
165
  msgid "Save"
166
  msgstr ""
167
 
168
+ #: includes/class-wcpdf-settings-debug.php:41
169
+ msgid "Reinstall fonts"
170
+ msgstr ""
171
+
172
+ #: includes/class-wcpdf-settings-debug.php:57
173
+ msgid "Fonts reinstalled!"
174
+ msgstr ""
175
+
176
+ #: includes/class-wcpdf-settings-debug.php:63
177
+ msgid "Remove temporary files"
178
+ msgstr ""
179
+
180
+ #: includes/class-wcpdf-settings-debug.php:70
181
+ msgid "Unable to read temporary folder contents!"
182
+ msgstr ""
183
+
184
+ #: includes/class-wcpdf-settings-debug.php:87
185
+ #, php-format
186
+ msgid "Unable to delete %d files! (deleted %d)"
187
+ msgstr ""
188
+
189
+ #: includes/class-wcpdf-settings-debug.php:90
190
+ #, php-format
191
+ msgid "Successfully deleted %d files!"
192
+ msgstr ""
193
+
194
+ #: includes/class-wcpdf-settings-debug.php:94
195
+ msgid "Nothing to delete!"
196
+ msgstr ""
197
+
198
+ #: includes/class-wcpdf-settings-debug.php:102
199
+ msgid "Delete legacy (1.X) settings"
200
+ msgstr ""
201
+
202
+ #: includes/class-wcpdf-settings-debug.php:114
203
+ msgid "Legacy settings deleted!"
204
+ msgstr ""
205
+
206
+ #: includes/class-wcpdf-settings-debug.php:141
207
  msgid "Debug settings"
208
  msgstr ""
209
 
210
+ #: includes/class-wcpdf-settings-debug.php:147
211
  msgid "Legacy mode"
212
  msgstr ""
213
 
214
+ #: includes/class-wcpdf-settings-debug.php:153
215
  msgid ""
216
  "Legacy mode ensures compatibility with templates and filters from previous "
217
  "versions."
218
  msgstr ""
219
 
220
+ #: includes/class-wcpdf-settings-debug.php:159
221
+ msgid "Calculate document numbers (slow)"
222
+ msgstr ""
223
+
224
+ #: includes/class-wcpdf-settings-debug.php:165
225
+ msgid ""
226
+ "Document numbers (such as invoice numbers) are generated using "
227
+ "AUTO_INCREMENT by default. Use this setting if your database auto increments "
228
+ "with more than 1."
229
+ msgstr ""
230
+
231
+ #: includes/class-wcpdf-settings-debug.php:171
232
  msgid "Enable debug output"
233
  msgstr ""
234
 
235
+ #: includes/class-wcpdf-settings-debug.php:177
236
  msgid ""
237
  "Enable this option to output plugin errors if you're getting a blank page or "
238
  "other PDF generation issues"
239
  msgstr ""
240
 
241
+ #: includes/class-wcpdf-settings-debug.php:178
242
+ msgid ""
243
+ "<b>Caution!</b> This setting may reveal errors (from other plugins) in other "
244
+ "places on your site too, therefor this is not recommended to leave it "
245
+ "enabled on live sites."
246
+ msgstr ""
247
+
248
+ #: includes/class-wcpdf-settings-debug.php:184
249
+ msgid "Enable automatic cleanup"
250
+ msgstr ""
251
+
252
+ #: includes/class-wcpdf-settings-debug.php:191
253
+ #, php-format
254
+ msgid "every %s days"
255
+ msgstr ""
256
+
257
+ #: includes/class-wcpdf-settings-debug.php:196
258
+ msgid ""
259
+ "Automatically clean up PDF files stored in the temporary folder (used for "
260
+ "email attachments)"
261
+ msgstr ""
262
+
263
+ #: includes/class-wcpdf-settings-debug.php:197
264
+ msgid ""
265
+ "<b>Disabled:</b> The PHP functions glob and filemtime are required for "
266
+ "automatic cleanup but not enabled on your server."
267
+ msgstr ""
268
+
269
+ #: includes/class-wcpdf-settings-debug.php:203
270
  msgid "Output to HTML"
271
  msgstr ""
272
 
273
+ #: includes/class-wcpdf-settings-debug.php:209
274
  msgid ""
275
  "Send the template output as HTML to the browser instead of creating a PDF."
276
  msgstr ""
277
 
278
+ #: includes/class-wcpdf-settings-debug.php:215
279
+ msgid "Use alternative HTML5 parser to parse HTML"
280
+ msgstr ""
281
+
282
+ #: includes/class-wcpdf-settings-documents.php:30
283
+ #: includes/class-wcpdf-settings.php:96
284
  msgid "Documents"
285
  msgstr ""
286
 
287
+ #: includes/class-wcpdf-settings-documents.php:46
288
  msgid ""
289
  "All available documents are listed below. Click on a document to configure "
290
  "it."
291
  msgstr ""
292
 
293
+ #: includes/class-wcpdf-settings-general.php:38
294
  msgid "General settings"
295
  msgstr ""
296
 
297
+ #: includes/class-wcpdf-settings-general.php:44
298
  msgid "How do you want to view the PDF?"
299
  msgstr ""
300
 
301
+ #: includes/class-wcpdf-settings-general.php:51
302
  msgid "Download the PDF"
303
  msgstr ""
304
 
305
+ #: includes/class-wcpdf-settings-general.php:52
306
  msgid "Open the PDF in a new browser tab/window"
307
  msgstr ""
308
 
309
+ #: includes/class-wcpdf-settings-general.php:59
310
  msgid "Choose a template"
311
  msgstr ""
312
 
313
+ #: includes/class-wcpdf-settings-general.php:66
314
  #, php-format
315
  msgid ""
316
  "Want to use your own template? Copy all the files from <code>%s</code> to "
317
  "your (child) theme in <code>%s</code> to customize them"
318
  msgstr ""
319
 
320
+ #: includes/class-wcpdf-settings-general.php:72
321
  msgid "Paper size"
322
  msgstr ""
323
 
324
+ #: includes/class-wcpdf-settings-general.php:79
325
+ #: includes/views/setup-wizard/paper-format.php:11
326
  msgid "A4"
327
  msgstr ""
328
 
329
+ #: includes/class-wcpdf-settings-general.php:80
330
+ #: includes/views/setup-wizard/paper-format.php:12
331
  msgid "Letter"
332
  msgstr ""
333
 
334
+ #: includes/class-wcpdf-settings-general.php:87
335
  msgid "Extended currency symbol support"
336
  msgstr ""
337
 
338
+ #: includes/class-wcpdf-settings-general.php:93
339
  msgid "Enable this if your currency symbol is not displaying properly"
340
  msgstr ""
341
 
342
+ #: includes/class-wcpdf-settings-general.php:99
343
+ msgid "Enable font subsetting"
344
+ msgstr ""
345
+
346
+ #: includes/class-wcpdf-settings-general.php:105
347
+ msgid ""
348
+ "Font subsetting can reduce file size by only including the characters that "
349
+ "are used in the PDF, but limits the ability to edit PDF files later. "
350
+ "Recommended if you're using an Asian font."
351
+ msgstr ""
352
+
353
+ #: includes/class-wcpdf-settings-general.php:111
354
  msgid "Shop header/logo"
355
  msgstr ""
356
 
357
+ #: includes/class-wcpdf-settings-general.php:117
358
+ #: includes/views/setup-wizard/logo.php:19
359
  msgid "Select or upload your invoice header/logo"
360
  msgstr ""
361
 
362
+ #: includes/class-wcpdf-settings-general.php:118
363
+ #: includes/views/setup-wizard/logo.php:19
364
  msgid "Set image"
365
  msgstr ""
366
 
367
+ #: includes/class-wcpdf-settings-general.php:119
368
+ #: includes/views/setup-wizard/logo.php:19
369
  msgid "Remove image"
370
  msgstr ""
371
 
372
+ #: includes/class-wcpdf-settings-general.php:126
373
+ #: includes/class-wcpdf-setup-wizard.php:42
374
  msgid "Shop Name"
375
  msgstr ""
376
 
377
+ #: includes/class-wcpdf-settings-general.php:139
378
  msgid "Shop Address"
379
  msgstr ""
380
 
381
+ #: includes/class-wcpdf-settings-general.php:154
382
  msgid "Footer: terms & conditions, policies, etc."
383
  msgstr ""
384
 
385
+ #: includes/class-wcpdf-settings-general.php:169
386
  msgid "Extra template fields"
387
  msgstr ""
388
 
389
+ #: includes/class-wcpdf-settings-general.php:175
390
  msgid "Extra field 1"
391
  msgstr ""
392
 
393
+ #: includes/class-wcpdf-settings-general.php:183
394
  msgid "This is footer column 1 in the <i>Modern (Premium)</i> template"
395
  msgstr ""
396
 
397
+ #: includes/class-wcpdf-settings-general.php:190
398
  msgid "Extra field 2"
399
  msgstr ""
400
 
401
+ #: includes/class-wcpdf-settings-general.php:198
402
  msgid "This is footer column 2 in the <i>Modern (Premium)</i> template"
403
  msgstr ""
404
 
405
+ #: includes/class-wcpdf-settings-general.php:205
406
  msgid "Extra field 3"
407
  msgstr ""
408
 
409
+ #: includes/class-wcpdf-settings-general.php:213
410
  msgid "This is footer column 3 in the <i>Modern (Premium)</i> template"
411
  msgstr ""
412
 
413
+ #: includes/class-wcpdf-settings.php:48 includes/class-wcpdf-settings.php:49
414
  msgid "PDF Invoices"
415
  msgstr ""
416
 
417
+ #: includes/class-wcpdf-settings.php:61
418
  msgid "Settings"
419
  msgstr ""
420
 
421
+ #: includes/class-wcpdf-settings.php:74
422
  msgid "Documentation"
423
  msgstr ""
424
 
425
+ #: includes/class-wcpdf-settings.php:75
426
  msgid "Support Forum"
427
  msgstr ""
428
 
429
+ #: includes/class-wcpdf-settings.php:87
430
+ #, php-format
431
+ msgid ""
432
+ "<strong>Warning!</strong> Your database has an AUTO_INCREMENT step size of "
433
+ "%s, your invoice numbers may not be sequential. Enable the 'Calculate "
434
+ "document numbers (slow)' setting in the Status tab to use an alternate "
435
+ "method."
436
+ msgstr ""
437
+
438
+ #: includes/class-wcpdf-settings.php:95
439
  msgid "General"
440
  msgstr ""
441
 
442
+ #: includes/class-wcpdf-settings.php:101
443
  msgid "Status"
444
  msgstr ""
445
 
446
+ #: includes/class-wcpdf-setup-wizard.php:46
447
+ #: includes/views/setup-wizard/logo.php:2
448
+ msgid "Your logo"
449
+ msgstr ""
450
+
451
+ #: includes/class-wcpdf-setup-wizard.php:50
452
+ msgid "Attachments"
453
+ msgstr ""
454
+
455
+ #: includes/class-wcpdf-setup-wizard.php:54
456
+ #: includes/views/setup-wizard/display-options.php:2
457
+ msgid "Display options"
458
+ msgstr ""
459
+
460
+ #: includes/class-wcpdf-setup-wizard.php:58
461
+ #: includes/views/setup-wizard/paper-format.php:2
462
+ msgid "Paper format"
463
+ msgstr ""
464
+
465
+ #: includes/class-wcpdf-setup-wizard.php:62
466
+ msgid "Ready!"
467
+ msgstr ""
468
+
469
+ #: includes/class-wcpdf-setup-wizard.php:175
470
+ msgid "Previous"
471
+ msgstr ""
472
+
473
+ #: includes/class-wcpdf-setup-wizard.php:181
474
+ msgid "Skip this step"
475
+ msgstr ""
476
+
477
+ #: includes/class-wcpdf-setup-wizard.php:183
478
+ msgid "Finish"
479
+ msgstr ""
480
+
481
  #: includes/compatibility/class-wc-core-compatibility.php:222
482
  msgid "WooCommerce"
483
  msgstr ""
487
  msgid "N/A"
488
  msgstr ""
489
 
490
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:390
491
  msgid "Payment method"
492
  msgstr ""
493
 
494
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:411
495
  msgid "Shipping method"
496
  msgstr ""
497
 
498
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:788
499
  #, php-format
500
  msgid "(includes %s)"
501
  msgstr ""
502
 
503
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:791
504
  #, php-format
505
  msgid "(Includes %s)"
506
  msgstr ""
507
 
508
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:821
509
  msgid "Subtotal"
510
  msgstr ""
511
 
512
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:846
513
  msgid "Shipping"
514
  msgstr ""
515
 
516
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:909
517
  msgid "Discount"
518
  msgstr ""
519
 
520
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:950
521
  msgid "VAT"
522
  msgstr ""
523
 
524
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:951
525
  msgid "Tax rate"
526
  msgstr ""
527
 
528
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:995
529
  msgid "Total ex. VAT"
530
  msgstr ""
531
 
532
+ #: includes/documents/abstract-wcpdf-order-document-methods.php:998
533
  msgid "Total"
534
  msgstr ""
535
 
536
+ #: includes/documents/abstract-wcpdf-order-document.php:695
537
  msgid "Admin email"
538
  msgstr ""
539
 
540
+ #: includes/documents/abstract-wcpdf-order-document.php:698
541
  msgid "Manual email"
542
  msgstr ""
543
 
544
+ #: includes/documents/class-wcpdf-invoice.php:32
545
+ #: includes/documents/class-wcpdf-invoice.php:41
546
+ #: includes/legacy/class-wcpdf-legacy-functions.php:22
547
+ msgid "Invoice"
548
+ msgstr ""
549
+
550
+ #: includes/documents/class-wcpdf-invoice.php:99
551
  msgid "invoice"
552
  msgid_plural "invoices"
553
  msgstr[0] ""
554
  msgstr[1] ""
555
 
556
+ #: includes/documents/class-wcpdf-invoice.php:144
557
+ #: includes/documents/class-wcpdf-packing-slip.php:88
558
  msgid "Enable"
559
  msgstr ""
560
 
561
+ #: includes/documents/class-wcpdf-invoice.php:155
562
  msgid "Attach to:"
563
  msgstr ""
564
 
565
+ #: includes/documents/class-wcpdf-invoice.php:162
566
  #, php-format
567
  msgid ""
568
  "It looks like the temp folder (<code>%s</code>) is not writable, check the "
570
  "plugin will not be able to email invoices."
571
  msgstr ""
572
 
573
+ #: includes/documents/class-wcpdf-invoice.php:168
574
+ #: includes/views/setup-wizard/display-options.php:10
575
  msgid "Display shipping address"
576
  msgstr ""
577
 
578
+ #: includes/documents/class-wcpdf-invoice.php:174
579
  msgid ""
580
  "Display shipping address (in addition to the default billing address) if "
581
  "different from billing address"
582
  msgstr ""
583
 
584
+ #: includes/documents/class-wcpdf-invoice.php:180
585
+ #: includes/documents/class-wcpdf-packing-slip.php:111
586
+ #: includes/views/setup-wizard/display-options.php:12
587
  msgid "Display email address"
588
  msgstr ""
589
 
590
+ #: includes/documents/class-wcpdf-invoice.php:191
591
+ #: includes/documents/class-wcpdf-packing-slip.php:122
592
+ #: includes/views/setup-wizard/display-options.php:14
593
  msgid "Display phone number"
594
  msgstr ""
595
 
596
+ #: includes/documents/class-wcpdf-invoice.php:202
597
+ #: includes/views/setup-wizard/display-options.php:16
598
  msgid "Display invoice date"
599
  msgstr ""
600
 
601
+ #: includes/documents/class-wcpdf-invoice.php:214
602
+ #: includes/views/setup-wizard/display-options.php:18
603
  msgid "Display invoice number"
604
  msgstr ""
605
 
606
+ #: includes/documents/class-wcpdf-invoice.php:226
607
  msgid "Next invoice number (without prefix/suffix etc.)"
608
  msgstr ""
609
 
610
+ #: includes/documents/class-wcpdf-invoice.php:232
611
  msgid ""
612
  "This is the number that will be used for the next document. By default, "
613
  "numbering starts from 1 and increases for every new document. Note that if "
615
  "could create duplicate numbers!"
616
  msgstr ""
617
 
618
+ #: includes/documents/class-wcpdf-invoice.php:238
619
  msgid "Number format"
620
  msgstr ""
621
 
622
+ #: includes/documents/class-wcpdf-invoice.php:246
623
  msgid "Prefix"
624
  msgstr ""
625
 
626
+ #: includes/documents/class-wcpdf-invoice.php:248
627
  msgid ""
628
  "to use the invoice year and/or month, use [invoice_year] or [invoice_month] "
629
  "respectively"
630
  msgstr ""
631
 
632
+ #: includes/documents/class-wcpdf-invoice.php:251
633
  msgid "Suffix"
634
  msgstr ""
635
 
636
+ #: includes/documents/class-wcpdf-invoice.php:256
637
  msgid "Padding"
638
  msgstr ""
639
 
640
+ #: includes/documents/class-wcpdf-invoice.php:259
641
  msgid "enter the number of digits here - enter \"6\" to display 42 as 000042"
642
  msgstr ""
643
 
644
+ #: includes/documents/class-wcpdf-invoice.php:262
645
  msgid ""
646
  "note: if you have already created a custom invoice number format with a "
647
  "filter, the above settings will be ignored"
648
  msgstr ""
649
 
650
+ #: includes/documents/class-wcpdf-invoice.php:268
651
  msgid "Reset invoice number yearly"
652
  msgstr ""
653
 
654
+ #: includes/documents/class-wcpdf-invoice.php:279
655
  msgid "Allow My Account invoice download"
656
  msgstr ""
657
 
658
+ #: includes/documents/class-wcpdf-invoice.php:286
659
  msgid "Only when an invoice is already created/emailed"
660
  msgstr ""
661
 
662
+ #: includes/documents/class-wcpdf-invoice.php:287
663
  msgid "Only for specific order statuses (define below)"
664
  msgstr ""
665
 
666
+ #: includes/documents/class-wcpdf-invoice.php:288
667
  msgid "Always"
668
  msgstr ""
669
 
670
+ #: includes/documents/class-wcpdf-invoice.php:289
671
  msgid "Never"
672
  msgstr ""
673
 
674
+ #: includes/documents/class-wcpdf-invoice.php:304
675
  msgid "Enable invoice number column in the orders list"
676
  msgstr ""
677
 
678
+ #: includes/documents/class-wcpdf-invoice.php:315
679
  msgid "Disable for free products"
680
  msgstr ""
681
 
682
+ #: includes/documents/class-wcpdf-invoice.php:321
683
  msgid ""
684
  "Disable automatic creation/attachment when only free products are ordered"
685
  msgstr ""
686
 
687
+ #: includes/documents/class-wcpdf-invoice.php:335
688
  msgid "Invoice numbers are created by a third-party extension."
689
  msgstr ""
690
 
691
+ #: includes/documents/class-wcpdf-invoice.php:337
692
  #, php-format
693
  msgid "Configure it <a href=\"%s\">here</a>."
694
  msgstr ""
696
  #: includes/documents/class-wcpdf-packing-slip.php:32
697
  #: includes/documents/class-wcpdf-packing-slip.php:41
698
  #: includes/legacy/class-wcpdf-legacy-functions.php:25
 
699
  msgid "Packing Slip"
700
  msgstr ""
701
 
702
+ #: includes/documents/class-wcpdf-packing-slip.php:47
703
  msgid "packing-slip"
704
  msgid_plural "packing-slips"
705
  msgstr[0] ""
706
  msgstr[1] ""
707
 
708
+ #: includes/documents/class-wcpdf-packing-slip.php:99
709
  msgid "Display billing address"
710
  msgstr ""
711
 
712
+ #: includes/documents/class-wcpdf-packing-slip.php:105
713
  msgid ""
714
  "Display billing address (in addition to the default shipping address) if "
715
  "different from shipping address"
719
  msgid "Legacy Document"
720
  msgstr ""
721
 
722
+ #: includes/legacy/class-wcpdf-legacy.php:72
723
  msgid "Error"
724
  msgstr ""
725
 
726
+ #: includes/legacy/class-wcpdf-legacy.php:73
727
  msgid ""
728
  "An outdated template or action hook was used to generate the PDF. Legacy "
729
  "mode has been activated, please try again by reloading this page."
730
  msgstr ""
731
 
732
+ #: includes/legacy/class-wcpdf-legacy.php:76
733
  msgid "The following function was called"
734
  msgstr ""
735
 
736
+ #: includes/views/attachment-settings-hint.php:21
737
+ #, php-format
738
+ msgid ""
739
+ "It looks like you haven't setup any email attachments yet, check the "
740
+ "settings under <b>%sDocuments > Invoice%s</b>"
741
+ msgstr ""
742
+
743
+ #: includes/views/setup-wizard/attach-to.php:2
744
+ msgid "Attach too..."
745
+ msgstr ""
746
+
747
+ #: includes/views/setup-wizard/attach-to.php:3
748
+ msgid "Select to which emails you would like to attach your invoice."
749
+ msgstr ""
750
+
751
+ #: includes/views/setup-wizard/display-options.php:3
752
+ msgid "Select some additional display options for your invoice."
753
+ msgstr ""
754
+
755
+ #: includes/views/setup-wizard/good-to-go.php:2
756
+ msgid "You are good to go!"
757
+ msgstr ""
758
+
759
+ #: includes/views/setup-wizard/good-to-go.php:3
760
+ msgid "If you have any questions please have a look at our documentation:"
761
+ msgstr ""
762
+
763
+ #: includes/views/setup-wizard/good-to-go.php:4
764
+ msgid "Invoices & Packing Slips"
765
+ msgstr ""
766
+
767
+ #: includes/views/setup-wizard/good-to-go.php:5
768
+ msgid "Happy selling!"
769
+ msgstr ""
770
+
771
+ #: includes/views/setup-wizard/logo.php:3
772
+ msgid "Set the header image that will display on your invoice."
773
+ msgstr ""
774
+
775
+ #: includes/views/setup-wizard/paper-format.php:3
776
+ msgid "Select the paper format for your invoice."
777
+ msgstr ""
778
+
779
+ #: includes/views/setup-wizard/shop-name.php:2
780
+ msgid "Enter your shop name"
781
+ msgstr ""
782
+
783
+ #: includes/views/setup-wizard/shop-name.php:3
784
+ msgid ""
785
+ "Lets quickly setup your invoice. Please enter the name and address of your "
786
+ "shop in the fields on the right."
787
+ msgstr ""
788
+
789
  #: includes/views/wcpdf-extensions.php:15
790
  msgid "Check out these premium extensions!"
791
  msgstr ""
850
  msgstr ""
851
 
852
  #: includes/views/wcpdf-extensions.php:33
853
+ #: includes/views/wcpdf-extensions.php:113
854
  msgid "Advanced, customizable templates"
855
  msgstr ""
856
 
857
  #: includes/views/wcpdf-extensions.php:35
858
+ #: includes/views/wcpdf-extensions.php:116
859
  msgid ""
860
  "Completely customize the invoice contents (prices, taxes, thumbnails) to "
861
  "your needs with a drag & drop customizer"
862
  msgstr ""
863
 
864
  #: includes/views/wcpdf-extensions.php:36
865
+ #: includes/views/wcpdf-extensions.php:117
866
  msgid "Two extra stylish premade templates (Modern & Business)"
867
  msgstr ""
868
 
869
  #: includes/views/wcpdf-extensions.php:38
870
+ #: includes/views/wcpdf-extensions.php:62
871
  msgid "Upload automatically to dropbox"
872
  msgstr ""
873
 
874
  #: includes/views/wcpdf-extensions.php:40
 
875
  msgid ""
876
  "This extension conveniently uploads all the invoices (and other pdf "
877
  "documents from the professional extension) that are emailed to your "
893
  "features:"
894
  msgstr ""
895
 
896
+ #: includes/views/wcpdf-extensions.php:64
897
  msgid "Get WooCommerce PDF Invoices & Packing Slips Professional!"
898
  msgstr ""
899
 
900
+ #: includes/views/wcpdf-extensions.php:72
901
  msgid "Automatically send payment reminders to your customers"
902
  msgstr ""
903
 
904
+ #: includes/views/wcpdf-extensions.php:74
905
  msgid "WooCommerce Smart Reminder emails"
906
  msgstr ""
907
 
908
+ #: includes/views/wcpdf-extensions.php:76
909
  msgid "<b>Completely automatic</b> scheduled emails"
910
  msgstr ""
911
 
912
+ #: includes/views/wcpdf-extensions.php:77
913
  msgid ""
914
  "<b>Rich text editor</b> for the email text, including placeholders for data "
915
  "from the order (name, order total, etc)"
916
  msgstr ""
917
 
918
+ #: includes/views/wcpdf-extensions.php:78
919
  msgid ""
920
  "Configure the exact requirements for sending an email (time after order, "
921
  "order status, payment method)"
922
  msgstr ""
923
 
924
+ #: includes/views/wcpdf-extensions.php:79
925
  msgid ""
926
  "Fully <b>WPML Compatible</b> – emails will be automatically sent in the "
927
  "order language."
928
  msgstr ""
929
 
930
+ #: includes/views/wcpdf-extensions.php:80
931
  msgid ""
932
  "<b>Super versatile!</b> Can be used for any kind of reminder email (review "
933
  "reminders, repeat purchases)"
934
  msgstr ""
935
 
936
+ #: includes/views/wcpdf-extensions.php:81
937
  msgid "Integrates seamlessly with the PDF Invoices & Packing Slips plugin"
938
  msgstr ""
939
 
940
+ #: includes/views/wcpdf-extensions.php:83
941
  msgid "Get WooCommerce Smart Reminder Emails"
942
  msgstr ""
943
 
944
+ #: includes/views/wcpdf-extensions.php:92
 
 
 
 
 
 
 
 
945
  msgid ""
946
  "Automatically send new orders or packing slips to your printer, as soon as "
947
  "the customer orders!"
948
  msgstr ""
949
 
950
+ #: includes/views/wcpdf-extensions.php:98
951
  msgid ""
952
  "Check out the WooCommerce Automatic Order Printing extension from our "
953
  "partners at Simba Hosting"
954
  msgstr ""
955
 
956
+ #: includes/views/wcpdf-extensions.php:99
957
  msgid "WooCommerce Automatic Order Printing"
958
  msgstr ""
959
 
960
+ #: includes/views/wcpdf-extensions.php:118
961
  #, php-format
962
  msgid "Check out the Premium PDF Invoice & Packing Slips templates at %s."
963
  msgstr ""
964
 
965
+ #: includes/views/wcpdf-extensions.php:119
966
  #, php-format
967
  msgid "For custom templates, contact us at %s."
968
  msgstr ""
969
 
 
 
 
 
970
  #: includes/views/wcpdf-settings-page.php:8
971
  msgid "WooCommerce PDF Invoices"
972
  msgstr ""
973
 
974
+ #: includes/wcpdf-functions.php:197
975
+ msgid "Error creating PDF, please contact the site owner."
976
+ msgstr ""
977
+
978
+ #: templates/Simple/invoice.php:30 templates/Simple/packing-slip.php:43
979
  msgid "Billing Address:"
980
  msgstr ""
981
 
982
+ #: templates/Simple/invoice.php:43
983
  msgid "Ship To:"
984
  msgstr ""
985
 
986
+ #: templates/Simple/invoice.php:54
987
  msgid "Invoice Number:"
988
  msgstr ""
989
 
990
+ #: templates/Simple/invoice.php:65 templates/Simple/packing-slip.php:53
991
  msgid "Order Number:"
992
  msgstr ""
993
 
994
+ #: templates/Simple/invoice.php:69 templates/Simple/packing-slip.php:57
995
  msgid "Order Date:"
996
  msgstr ""
997
 
998
+ #: templates/Simple/invoice.php:73
999
  msgid "Payment Method:"
1000
  msgstr ""
1001
 
1002
+ #: templates/Simple/invoice.php:87 templates/Simple/packing-slip.php:75
1003
  msgid "Product"
1004
  msgstr ""
1005
 
1006
+ #: templates/Simple/invoice.php:88 templates/Simple/packing-slip.php:76
1007
  msgid "Quantity"
1008
  msgstr ""
1009
 
1010
+ #: templates/Simple/invoice.php:89
1011
  msgid "Price"
1012
  msgstr ""
1013
 
1014
+ #: templates/Simple/invoice.php:96 templates/Simple/packing-slip.php:83
1015
  msgid "Description"
1016
  msgstr ""
1017
 
1018
+ #: templates/Simple/invoice.php:101 templates/Simple/packing-slip.php:88
1019
  msgid "SKU"
1020
  msgstr ""
1021
 
1022
+ #: templates/Simple/invoice.php:102 templates/Simple/packing-slip.php:89
1023
  msgid "SKU:"
1024
  msgstr ""
1025
 
1026
+ #: templates/Simple/invoice.php:103 templates/Simple/packing-slip.php:90
1027
  msgid "Weight:"
1028
  msgstr ""
1029
 
1030
+ #: templates/Simple/invoice.php:118 templates/Simple/packing-slip.php:105
1031
  msgid "Customer Notes"
1032
  msgstr ""
1033
 
1035
  msgid "Shipping Address:"
1036
  msgstr ""
1037
 
1038
+ #: templates/Simple/packing-slip.php:61
1039
  msgid "Shipping Method:"
1040
  msgstr ""
1041
 
1042
+ #: woocommerce-pdf-invoices-packingslips.php:237
1043
  #, php-format
1044
  msgid ""
1045
  "WooCommerce PDF Invoices & Packing Slips requires %sWooCommerce%s to be "
1046
  "installed & activated!"
1047
  msgstr ""
1048
 
1049
+ #: woocommerce-pdf-invoices-packingslips.php:249
1050
  msgid ""
1051
  "WooCommerce PDF Invoices & Packing Slips requires PHP 5.3 or higher (5.6 or "
1052
  "higher recommended)."
1053
  msgstr ""
1054
 
1055
+ #: woocommerce-pdf-invoices-packingslips.php:250
1056
  msgid "How to update your PHP version"
1057
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: woocommerce, pdf, invoices, packing slips, print, delivery notes, invoice,
5
  Requires at least: 3.5
6
  Tested up to: 4.9
7
  Requires PHP: 5.3
8
- Stable tag: 2.1.10
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -103,6 +103,16 @@ There's a setting on the Status tab of the settings page that allows you to togg
103
 
104
  == Changelog ==
105
 
 
 
 
 
 
 
 
 
 
 
106
  = 2.1.10 =
107
  * Feature: Include invoice number and date in WooCommerce data remover and exporter
108
  * Fix: Row class for Chained Products compatibility
5
  Requires at least: 3.5
6
  Tested up to: 4.9
7
  Requires PHP: 5.3
8
+ Stable tag: 2.2.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
103
 
104
  == Changelog ==
105
 
106
+ = 2.2.0 =
107
+ * Feature: Document settings are now saved per order - changing settings after a PDF has been created will no longer affect the output
108
+ * Feature: Button to delete invoice or packing slip
109
+ * Feature: Better error handling and logging via WC Logger (WooCommerce > Status > Logs)
110
+ * Fix: Broader payment gateway compatibility (lower priority for documents initialization)
111
+ * Fix: undefined variable in construct when loading document programmatically (props to Christopher)
112
+ * Fix: compatibility with renamed WooCommerce plugins (settings page detection)
113
+ * Tweak: Reload translations before creating attachment
114
+ * Translations: Updated translations POT
115
+
116
  = 2.1.10 =
117
  * Feature: Include invoice number and date in WooCommerce data remover and exporter
118
  * Fix: Row class for Chained Products compatibility
woocommerce-pdf-invoices-packingslips.php CHANGED
@@ -3,14 +3,14 @@
3
  * Plugin Name: WooCommerce PDF Invoices & Packing Slips
4
  * Plugin URI: http://www.wpovernight.com
5
  * Description: Create, print & email PDF invoices & packing slips for WooCommerce orders.
6
- * Version: 2.1.10
7
  * Author: Ewout Fernhout
8
  * Author URI: http://www.wpovernight.com
9
  * License: GPLv2 or later
10
  * License URI: http://www.opensource.org/licenses/gpl-license.php
11
  * Text Domain: woocommerce-pdf-invoices-packing-slips
12
  * WC requires at least: 2.2.0
13
- * WC tested up to: 3.4.0
14
  */
15
 
16
  if ( ! defined( 'ABSPATH' ) ) {
@@ -21,7 +21,7 @@ if ( !class_exists( 'WPO_WCPDF' ) ) :
21
 
22
  class WPO_WCPDF {
23
 
24
- public $version = '2.1.10';
25
  public $plugin_basename;
26
  public $legacy_mode;
27
 
@@ -88,7 +88,8 @@ class WPO_WCPDF {
88
  * - woocommerce-pdf-invoices-packing-slips-pro/languages/woocommerce-pdf-invoices-packing-slips-LOCALE.mo (which if not found falls back to:)
89
  * - WP_LANG_DIR/plugins/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
90
  */
91
- foreach ($textdomains as $textdomain) {
 
92
  load_textdomain( $textdomain, $dir . 'woocommerce-pdf-invoices-packing-slips/woocommerce-pdf-invoices-packing-slips-' . $locale . '.mo' );
93
  load_textdomain( $textdomain, $dir . 'plugins/woocommerce-pdf-invoices-packing-slips-' . $locale . '.mo' );
94
  load_plugin_textdomain( $textdomain, false, dirname( plugin_basename(__FILE__) ) . '/languages' );
3
  * Plugin Name: WooCommerce PDF Invoices & Packing Slips
4
  * Plugin URI: http://www.wpovernight.com
5
  * Description: Create, print & email PDF invoices & packing slips for WooCommerce orders.
6
+ * Version: 2.2.0
7
  * Author: Ewout Fernhout
8
  * Author URI: http://www.wpovernight.com
9
  * License: GPLv2 or later
10
  * License URI: http://www.opensource.org/licenses/gpl-license.php
11
  * Text Domain: woocommerce-pdf-invoices-packing-slips
12
  * WC requires at least: 2.2.0
13
+ * WC tested up to: 3.5.0
14
  */
15
 
16
  if ( ! defined( 'ABSPATH' ) ) {
21
 
22
  class WPO_WCPDF {
23
 
24
+ public $version = '2.2.0';
25
  public $plugin_basename;
26
  public $legacy_mode;
27
 
88
  * - woocommerce-pdf-invoices-packing-slips-pro/languages/woocommerce-pdf-invoices-packing-slips-LOCALE.mo (which if not found falls back to:)
89
  * - WP_LANG_DIR/plugins/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
90
  */
91
+ foreach ( $textdomains as $textdomain ) {
92
+ unload_textdomain( $textdomain );
93
  load_textdomain( $textdomain, $dir . 'woocommerce-pdf-invoices-packing-slips/woocommerce-pdf-invoices-packing-slips-' . $locale . '.mo' );
94
  load_textdomain( $textdomain, $dir . 'plugins/woocommerce-pdf-invoices-packing-slips-' . $locale . '.mo' );
95
  load_plugin_textdomain( $textdomain, false, dirname( plugin_basename(__FILE__) ) . '/languages' );