WooCommerce PDF Invoices - Version 3.1.3

Version Description

  • August 31, 2020 =

  • Fixed: Fatal error.

Download this release

Release Info

Developer baaaaas
Plugin Icon 128x128 WooCommerce PDF Invoices
Version 3.1.3
Comparing to
See all releases

Code changes from version 3.1.0 to 3.1.3

bootstrap.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce PDF Invoices
4
  * Plugin URI: https://wordpress.org/plugins/woocommerce-pdf-invoices
5
  * Description: Automatically generate and attach customizable PDF Invoices to WooCommerce emails and connect with Dropbox, Google Drive, OneDrive or Egnyte.
6
- * Version: 3.1.0
7
  * Author: Bas Elbers
8
  * Author URI: http://wcpdfinvoices.com
9
  * License: GPL-2.0+
@@ -11,12 +11,12 @@
11
  * Text Domain: woocommerce-pdf-invoices
12
  * Domain Path: /lang
13
  * WC requires at least: 3.0.0
14
- * WC tested up to: 4.2
15
  */
16
 
17
  defined( 'ABSPATH' ) || exit;
18
 
19
- define( 'WPI_VERSION', '3.1.0' );
20
 
21
  /**
22
  * Load WooCommerce PDF Invoices plugin.
3
  * Plugin Name: WooCommerce PDF Invoices
4
  * Plugin URI: https://wordpress.org/plugins/woocommerce-pdf-invoices
5
  * Description: Automatically generate and attach customizable PDF Invoices to WooCommerce emails and connect with Dropbox, Google Drive, OneDrive or Egnyte.
6
+ * Version: 3.1.3
7
  * Author: Bas Elbers
8
  * Author URI: http://wcpdfinvoices.com
9
  * License: GPL-2.0+
11
  * Text Domain: woocommerce-pdf-invoices
12
  * Domain Path: /lang
13
  * WC requires at least: 3.0.0
14
+ * WC tested up to: 4.4
15
  */
16
 
17
  defined( 'ABSPATH' ) || exit;
18
 
19
+ define( 'WPI_VERSION', '3.1.3' );
20
 
21
  /**
22
  * Load WooCommerce PDF Invoices plugin.
includes/abstracts/abstract-document.php CHANGED
@@ -156,7 +156,7 @@ if ( ! class_exists( 'BEWPI_Abstract_Document' ) ) {
156
  }
157
 
158
  // mPDF debugging.
159
- if ( WPI()->get_option( 'general', 'mpdf_debug' ) ) {
160
  $mpdf->debug = true;
161
  $mpdf->showImageErrors = true;
162
  }
156
  }
157
 
158
  // mPDF debugging.
159
+ if ( WPI()->get_option( 'debug', 'mpdf_debug' ) ) {
160
  $mpdf->debug = true;
161
  $mpdf->showImageErrors = true;
162
  }
includes/abstracts/abstract-invoice.php CHANGED
@@ -438,7 +438,7 @@ abstract class BEWPI_Abstract_Invoice extends BEWPI_Abstract_Document {
438
  echo esc_html( $item['name'] );
439
 
440
  do_action( 'wpi_order_item_meta_start', $item, $this->order );
441
- do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $this->order );
442
 
443
  WPI()->templater()->display_item_meta( $item );
444
 
438
  echo esc_html( $item['name'] );
439
 
440
  do_action( 'wpi_order_item_meta_start', $item, $this->order );
441
+ do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $this->order, false );
442
 
443
  WPI()->templater()->display_item_meta( $item );
444
 
includes/abstracts/abstract-settings.php CHANGED
@@ -217,8 +217,8 @@ abstract class BEWPI_Abstract_Settings {
217
  ?>
218
  </h2>
219
  <form method="post"
220
- action="options.php?tab=<?php echo self::$current_tab; ?>&key=<?php echo md5( WPI()->get_plugin_slug() ); ?>"
221
- enctype="multipart/form-data" <?php echo $width; ?>>
222
  <?php
223
  settings_fields( self::$setting->settings_key );
224
  do_settings_sections( self::$setting->settings_key );
@@ -387,11 +387,11 @@ abstract class BEWPI_Abstract_Settings {
387
  $options = array_merge( array_flip( $selections ), $args['options'] );
388
  ?>
389
  <select multiple="multiple"
390
- name="<?php echo esc_attr( $args['page'] . '[' . $args['name'] . '][]' ); ?>"
391
- title="<?php echo esc_attr( $args['title'] ); ?>"
392
- data-placeholder="<?php esc_attr_e( 'Choose&hellip;', 'woocommerce-pdf-invoices' ); ?>"
393
- aria-label="<?php esc_attr_e( 'Column', 'woocommerce-pdf-invoices' ) ?>"
394
- class="wc-enhanced-select">
395
  <?php
396
  foreach ( $options as $id => $option ) {
397
  echo '<option value="' . esc_attr( $option['value'] ) . '" ' . selected( in_array( $id, $selections, true ), true, false ) . '>' . $option['name'] . '</option>';
@@ -414,9 +414,9 @@ abstract class BEWPI_Abstract_Settings {
414
  ?>
415
  <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
416
  <input id="<?php echo $args['id']; ?>"
417
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
418
- type="<?php echo $args['type']; ?>"
419
- value="1"
420
  <?php
421
  checked( (bool) get_transient( 'bewpi_next_invoice_number' ) );
422
 
@@ -441,11 +441,13 @@ abstract class BEWPI_Abstract_Settings {
441
  public function next_invoice_number_callback( $args ) {
442
  $class = isset( $args['class'] ) ? $args['class'] : 'bewpi-notes';
443
  $next_invoice_number = get_transient( 'bewpi_next_invoice_number' );
 
 
444
  ?>
445
  <input id="<?php echo $args['id']; ?>"
446
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
447
- type="<?php echo $args['type']; ?>"
448
- value="<?php echo esc_attr( ( false !== $next_invoice_number ) ? $next_invoice_number : BEWPI_Abstract_Invoice::get_max_invoice_number( (int) date_i18n( 'Y', current_time( 'timestamp' ) ) ) + 1 ); ?>"
449
  <?php
450
  if ( isset( $args['attrs'] ) ) {
451
  foreach ( $args['attrs'] as $attr ) {
@@ -471,9 +473,9 @@ abstract class BEWPI_Abstract_Settings {
471
  <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
472
  <?php } ?>
473
  <input id="<?php echo $args['id']; ?>"
474
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
475
- type="<?php echo $args['type']; ?>"
476
- value="<?php echo $is_checkbox ? 1 : esc_attr( $options[ $args['name'] ] ); ?>"
477
 
478
  <?php
479
  if ( $is_checkbox ) {
@@ -504,8 +506,8 @@ abstract class BEWPI_Abstract_Settings {
504
  $options = get_option( $args['page'] );
505
  ?>
506
  <textarea id="<?php echo $args['id']; ?>"
507
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
508
- rows="5"
509
  ><?php echo esc_textarea( $options[ $args['name'] ] ); ?></textarea>
510
  <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
511
  <?php
@@ -522,55 +524,59 @@ abstract class BEWPI_Abstract_Settings {
522
  $file_url = wp_get_attachment_url( $attachment_id );
523
  ?>
524
  <p class="form-field">
525
- <input type="hidden" class="file_id" name="<?php echo esc_attr( $args['page'] . '[' . $args['name'] . ']' ); ?>" value="<?php echo esc_attr( $attachment_id ); ?>"/>
526
- <input type="<?php echo esc_attr( $args['type'] ); ?>" class="file_url" placeholder="<?php echo esc_attr( $file_url ); ?>" value="<?php echo esc_attr( $file_url ); ?>"/>
527
- <button class="button upload_image_button" data-uploader_button_text="<?php _e( 'Use file', 'woocommerce-pdf-invoices' ); ?>"><?php _e( 'Upload', 'woocommerce-pdf-invoices' ); ?></button>
 
 
 
 
528
  </p>
529
  <script type="text/javascript">
530
- // Uploading files
531
- var file_frame;
532
- var file_target_input;
533
- var file_id_input;
534
-
535
- jQuery('.upload_image_button').live('click', function (event) {
536
-
537
- event.preventDefault();
538
-
539
- file_target_input = jQuery(this).closest('.form-field').find('.file_url');
540
- file_id_input = jQuery(this).closest('.form-field').find('.file_id');
541
-
542
- // If the media frame already exists, reopen it.
543
- if (file_frame) {
544
- file_frame.open();
545
- return;
546
- }
547
-
548
- // Create the media frame.
549
- file_frame = wp.media.frames.file_frame = wp.media({
550
- title: jQuery(this).data('uploader_title'),
551
- button: {
552
- text: jQuery(this).data('uploader_button_text')
553
- },
554
- multiple: false // Set to true to allow multiple files to be selected,
555
- });
556
-
557
- // When an image is selected, run a callback.
558
- file_frame.on('select', function () {
559
- // We set multiple to false so only get one image from the uploader
560
- attachment = file_frame.state().get('selection').first().toJSON();
561
-
562
- jQuery(file_target_input).val(attachment.url);
563
- jQuery(file_id_input).val(attachment.id);
564
- });
565
-
566
- // Finally, open the modal
567
- file_frame.open();
568
- });
569
-
570
- jQuery('.upload_image_button').closest('.form-field').find('.file_url').on('change', function (event) {
571
- file_id_input = jQuery(this).closest('.form-field').find('.file_id');
572
- jQuery(file_id_input).val('');
573
- });
574
  </script>
575
  <?php
576
  }
217
  ?>
218
  </h2>
219
  <form method="post"
220
+ action="options.php?tab=<?php echo self::$current_tab; ?>&key=<?php echo md5( WPI()->get_plugin_slug() ); ?>"
221
+ enctype="multipart/form-data" <?php echo $width; ?>>
222
  <?php
223
  settings_fields( self::$setting->settings_key );
224
  do_settings_sections( self::$setting->settings_key );
387
  $options = array_merge( array_flip( $selections ), $args['options'] );
388
  ?>
389
  <select multiple="multiple"
390
+ name="<?php echo esc_attr( $args['page'] . '[' . $args['name'] . '][]' ); ?>"
391
+ title="<?php echo esc_attr( $args['title'] ); ?>"
392
+ data-placeholder="<?php esc_attr_e( 'Choose&hellip;', 'woocommerce-pdf-invoices' ); ?>"
393
+ aria-label="<?php esc_attr_e( 'Column', 'woocommerce-pdf-invoices' ) ?>"
394
+ class="wc-enhanced-select">
395
  <?php
396
  foreach ( $options as $id => $option ) {
397
  echo '<option value="' . esc_attr( $option['value'] ) . '" ' . selected( in_array( $id, $selections, true ), true, false ) . '>' . $option['name'] . '</option>';
414
  ?>
415
  <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
416
  <input id="<?php echo $args['id']; ?>"
417
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
418
+ type="<?php echo $args['type']; ?>"
419
+ value="1"
420
  <?php
421
  checked( (bool) get_transient( 'bewpi_next_invoice_number' ) );
422
 
441
  public function next_invoice_number_callback( $args ) {
442
  $class = isset( $args['class'] ) ? $args['class'] : 'bewpi-notes';
443
  $next_invoice_number = get_transient( 'bewpi_next_invoice_number' );
444
+ $max_invoice_number = BEWPI_Invoice::get_max_invoice_number( date( 'Y' ) );
445
+
446
  ?>
447
  <input id="<?php echo $args['id']; ?>"
448
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
449
+ type="<?php echo $args['type']; ?>"
450
+ value="<?php echo esc_attr( false !== $next_invoice_number ? $next_invoice_number : $max_invoice_number + 1 ); ?>"
451
  <?php
452
  if ( isset( $args['attrs'] ) ) {
453
  foreach ( $args['attrs'] as $attr ) {
473
  <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
474
  <?php } ?>
475
  <input id="<?php echo $args['id']; ?>"
476
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
477
+ type="<?php echo $args['type']; ?>"
478
+ value="<?php echo $is_checkbox ? 1 : esc_attr( $options[ $args['name'] ] ); ?>"
479
 
480
  <?php
481
  if ( $is_checkbox ) {
506
  $options = get_option( $args['page'] );
507
  ?>
508
  <textarea id="<?php echo $args['id']; ?>"
509
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
510
+ rows="5"
511
  ><?php echo esc_textarea( $options[ $args['name'] ] ); ?></textarea>
512
  <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
513
  <?php
524
  $file_url = wp_get_attachment_url( $attachment_id );
525
  ?>
526
  <p class="form-field">
527
+ <input type="hidden" class="file_id"
528
+ name="<?php echo esc_attr( $args['page'] . '[' . $args['name'] . ']' ); ?>"
529
+ value="<?php echo esc_attr( $attachment_id ); ?>"/>
530
+ <input type="<?php echo esc_attr( $args['type'] ); ?>" class="file_url"
531
+ placeholder="<?php echo esc_attr( $file_url ); ?>" value="<?php echo esc_attr( $file_url ); ?>"/>
532
+ <button class="button upload_image_button"
533
+ data-uploader_button_text="<?php _e( 'Use file', 'woocommerce-pdf-invoices' ); ?>"><?php _e( 'Upload', 'woocommerce-pdf-invoices' ); ?></button>
534
  </p>
535
  <script type="text/javascript">
536
+ // Uploading files
537
+ var file_frame;
538
+ var file_target_input;
539
+ var file_id_input;
540
+
541
+ jQuery('.upload_image_button').on('click', function (event) {
542
+
543
+ event.preventDefault();
544
+
545
+ file_target_input = jQuery(this).closest('.form-field').find('.file_url');
546
+ file_id_input = jQuery(this).closest('.form-field').find('.file_id');
547
+
548
+ // If the media frame already exists, reopen it.
549
+ if (file_frame) {
550
+ file_frame.open();
551
+ return;
552
+ }
553
+
554
+ // Create the media frame.
555
+ file_frame = wp.media.frames.file_frame = wp.media({
556
+ title: jQuery(this).data('uploader_title'),
557
+ button: {
558
+ text: jQuery(this).data('uploader_button_text')
559
+ },
560
+ multiple: false // Set to true to allow multiple files to be selected,
561
+ });
562
+
563
+ // When an image is selected, run a callback.
564
+ file_frame.on('select', function () {
565
+ // We set multiple to false so only get one image from the uploader
566
+ attachment = file_frame.state().get('selection').first().toJSON();
567
+
568
+ jQuery(file_target_input).val(attachment.url);
569
+ jQuery(file_id_input).val(attachment.id);
570
+ });
571
+
572
+ // Finally, open the modal
573
+ file_frame.open();
574
+ });
575
+
576
+ jQuery('.upload_image_button').closest('.form-field').find('.file_url').on('change', function (event) {
577
+ file_id_input = jQuery(this).closest('.form-field').find('.file_id');
578
+ jQuery(file_id_input).val('');
579
+ });
580
  </script>
581
  <?php
582
  }
includes/templates/invoice/simple/minimal/body.php CHANGED
@@ -15,15 +15,15 @@
15
  * @version 0.0.1
16
  */
17
 
18
- $templater = WPI()->templater();
19
- $order = $templater->order;
20
- $invoice = $templater->invoice;
21
- $line_items = $order->get_items( 'line_item' );
22
- $formatted_shipping_address = $order->get_formatted_shipping_address();
23
- $formatted_billing_address = $order->get_formatted_billing_address();
24
- $columns = $invoice->get_columns();
25
- $color = $templater->get_option( 'bewpi_color_theme' );
26
- $terms = $templater->get_option( 'bewpi_terms' );
27
  ?>
28
 
29
  <div class="title">
@@ -47,7 +47,7 @@ $terms = $templater->get_option( 'bewpi_terms' );
47
  /**
48
  * Invoice object.
49
  *
50
- * @var BEWPI_Invoice $invoice.
51
  */
52
  foreach ( $invoice->get_invoice_info() as $info_id => $info ) {
53
  if ( empty( $info['value'] ) ) {
@@ -80,16 +80,21 @@ $terms = $templater->get_option( 'bewpi_terms' );
80
  ?>
81
  </td>
82
  </tr>
 
 
 
 
 
83
  </table>
84
  <table cellpadding="0" cellspacing="0">
85
  <thead>
86
- <tr class="heading" bgcolor="<?php echo esc_attr( $color ); ?>;">
87
- <?php
88
- foreach ( $columns as $key => $data ) {
89
- $templater->display_header_recursive( $key, $data );
90
- }
91
- ?>
92
- </tr>
93
  </thead>
94
  <tbody>
95
  <?php
@@ -116,6 +121,8 @@ $terms = $templater->get_option( 'bewpi_terms' );
116
  <tbody>
117
 
118
  <?php
 
 
119
  foreach ( $invoice->get_order_item_totals() as $key => $total ) {
120
  $class = str_replace( '_', '-', $key );
121
  ?>
@@ -125,16 +132,19 @@ $terms = $templater->get_option( 'bewpi_terms' );
125
  <?php do_action( 'wpi_order_item_totals_left', $key, $invoice ); ?>
126
  </td>
127
 
128
- <td width="25%" align="left" class="border <?php echo esc_attr( $class ); ?>">
129
  <?php echo $total['label']; ?>
130
  </td>
131
 
132
- <td width="25%" align="right" class="border <?php echo esc_attr( $class ); ?>">
133
  <?php echo str_replace( '&nbsp;', '', $total['value'] ); ?>
134
  </td>
135
  </tr>
136
 
137
- <?php } ?>
 
 
 
138
  </tbody>
139
  </table>
140
 
@@ -172,14 +182,14 @@ $terms = $templater->get_option( 'bewpi_terms' );
172
  </table>
173
 
174
  <?php if ( $terms ) { ?>
175
- <!-- Using div to position absolute the block. -->
176
- <div class="terms">
177
- <table>
178
- <tr>
179
- <td style="border: 1px solid #000;">
180
- <?php echo nl2br( $terms ); ?>
181
- </td>
182
- </tr>
183
- </table>
184
- </div>
185
  <?php } ?>
15
  * @version 0.0.1
16
  */
17
 
18
+ $templater = WPI()->templater();
19
+ $invoice = $templater->invoice;
20
+ $order = $invoice->order;
21
+ $line_items = $order->get_items( 'line_item' );
22
+ $formatted_shipping_address = $order->get_formatted_shipping_address();
23
+ $formatted_billing_address = $order->get_formatted_billing_address();
24
+ $columns = $invoice->get_columns();
25
+ $color = $templater->get_option( 'bewpi_color_theme' );
26
+ $terms = $templater->get_option( 'bewpi_terms' );
27
  ?>
28
 
29
  <div class="title">
47
  /**
48
  * Invoice object.
49
  *
50
+ * @var BEWPI_Invoice $invoice .
51
  */
52
  foreach ( $invoice->get_invoice_info() as $info_id => $info ) {
53
  if ( empty( $info['value'] ) ) {
80
  ?>
81
  </td>
82
  </tr>
83
+ <tr class="custom-information">
84
+ <td>
85
+ <?php echo apply_filters( 'wpi_custom_information', '', $invoice ); ?>
86
+ </td>
87
+ </tr>
88
  </table>
89
  <table cellpadding="0" cellspacing="0">
90
  <thead>
91
+ <tr class="heading" bgcolor="<?php echo esc_attr( $color ); ?>;">
92
+ <?php
93
+ foreach ( $columns as $key => $data ) {
94
+ $templater->display_header_recursive( $key, $data );
95
+ }
96
+ ?>
97
+ </tr>
98
  </thead>
99
  <tbody>
100
  <?php
121
  <tbody>
122
 
123
  <?php
124
+ $i = 1;
125
+ $length = count( $invoice->get_order_item_totals() );
126
  foreach ( $invoice->get_order_item_totals() as $key => $total ) {
127
  $class = str_replace( '_', '-', $key );
128
  ?>
132
  <?php do_action( 'wpi_order_item_totals_left', $key, $invoice ); ?>
133
  </td>
134
 
135
+ <td width="25%" align="left" class="border <?php echo $i === $length ? 'last' : ''; ?> <?php echo esc_attr( $class ); ?>">
136
  <?php echo $total['label']; ?>
137
  </td>
138
 
139
+ <td width="25%" align="right" class="border <?php echo $i === $length ? 'last' : ''; ?> <?php echo esc_attr( $class ); ?>">
140
  <?php echo str_replace( '&nbsp;', '', $total['value'] ); ?>
141
  </td>
142
  </tr>
143
 
144
+ <?php
145
+ $i ++;
146
+ }
147
+ ?>
148
  </tbody>
149
  </table>
150
 
182
  </table>
183
 
184
  <?php if ( $terms ) { ?>
185
+ <!-- Using div to position absolute the block. -->
186
+ <div class="terms">
187
+ <table>
188
+ <tr>
189
+ <td style="border: 1px solid #000;">
190
+ <?php echo nl2br( $terms ); ?>
191
+ </td>
192
+ </tr>
193
+ </table>
194
+ </div>
195
  <?php } ?>
includes/templates/invoice/simple/minimal/header.php CHANGED
@@ -29,7 +29,7 @@
29
  </td>
30
 
31
  <td>
32
- <?php echo WPI()->get_formatted_company_address(); ?>
33
  </td>
34
  </tr>
35
  </table>
29
  </td>
30
 
31
  <td>
32
+ <?php echo WPI()->get_formatted_company_address() . '<br>' . WPI()->get_formatted_company_details(); ?>
33
  </td>
34
  </tr>
35
  </table>
includes/templates/invoice/simple/minimal/style.css CHANGED
@@ -116,6 +116,10 @@ table tr.spacer td {
116
  /* Totals */
117
  table tr.total td.border {
118
  border-top: 2px solid #eee;
 
 
 
 
119
  font-weight: bold;
120
  }
121
 
@@ -123,11 +127,6 @@ small.shipped_via {
123
  display: none;
124
  }
125
 
126
- /* Dynamic class */
127
- table tr.total td.order-total{
128
- border-top: 2px solid #000;
129
- }
130
-
131
  table.notes {
132
  margin-top: 40px;
133
  }
116
  /* Totals */
117
  table tr.total td.border {
118
  border-top: 2px solid #eee;
119
+ }
120
+
121
+ table tr.total td.last {
122
+ border-top: 2px solid #000;
123
  font-weight: bold;
124
  }
125
 
127
  display: none;
128
  }
129
 
 
 
 
 
 
130
  table.notes {
131
  margin-top: 40px;
132
  }
includes/templates/packing-slip/simple/minimal/body.php CHANGED
@@ -102,7 +102,7 @@ $color = $templater->get_option( 'bewpi_color_theme' );
102
  echo esc_html( $item['name'] );
103
 
104
  do_action( 'wpi_order_item_meta_start', $item, $this->order );
105
- do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $this->order );
106
 
107
  WPI()->templater()->display_item_meta( $item );
108
 
102
  echo esc_html( $item['name'] );
103
 
104
  do_action( 'wpi_order_item_meta_start', $item, $this->order );
105
+ do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $this->order, false );
106
 
107
  WPI()->templater()->display_item_meta( $item );
108
 
includes/templates/packing-slip/simple/minimal/header.php CHANGED
@@ -29,7 +29,7 @@
29
  </td>
30
 
31
  <td>
32
- <?php echo WPI()->get_formatted_company_address(); ?>
33
  </td>
34
  </tr>
35
  </table>
29
  </td>
30
 
31
  <td>
32
+ <?php echo WPI()->get_formatted_company_address() . '<br>' . WPI()->get_formatted_company_details(); ?>
33
  </td>
34
  </tr>
35
  </table>
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: baaaaas
3
  Donate link:
4
  Tags: woocommerce pdf invoices, invoice, packing slips, delivery note, packing list, shipping list, generate, pdf, woocommerce, attachment, email, customer invoice, processing, vat, tax, sequential, number, dropbox, google drive, onedrive, egnyte, cloud, storage
5
  Requires at least: 4.0
6
- Tested up to: 5.4
7
- Stable tag: 3.1.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -344,6 +344,22 @@ Since version 2.9.4 the plugin removed the ability to update the PDF invoice whe
344
 
345
  == Changelog ==
346
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
347
  = 3.1.0 - June 17, 2020 =
348
 
349
  - Added: Packing slip meta box to Edit Order page to generate packing slip.
3
  Donate link:
4
  Tags: woocommerce pdf invoices, invoice, packing slips, delivery note, packing list, shipping list, generate, pdf, woocommerce, attachment, email, customer invoice, processing, vat, tax, sequential, number, dropbox, google drive, onedrive, egnyte, cloud, storage
5
  Requires at least: 4.0
6
+ Tested up to: 5.5
7
+ Stable tag: 3.1.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
344
 
345
  == Changelog ==
346
 
347
+ = 3.1.3 - August 31, 2020 =
348
+
349
+ - Fixed: Fatal error.
350
+
351
+ = 3.1.2 - August 31, 2020 =
352
+
353
+ - Added: Filter to add custom information.
354
+ - Fixed: Fixed last total row border weight.
355
+ - Fixed: jQuery .live() has been removed.
356
+ - Fixed: Inconsistent number of args passed to woocommerce_order_item_meta_start thanks to @cyjosh.
357
+
358
+ = 3.1.1 - June 21, 2020 =
359
+
360
+ - Fixed: Company logo PNG not working.
361
+ - Fixed: Company details not showing in template.
362
+
363
  = 3.1.0 - June 17, 2020 =
364
 
365
  - Added: Packing slip meta box to Edit Order page to generate packing slip.
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit0aec1cc4eb979f7984089e691c52ce42::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit8fd232a2f678d4a9e9948da61a15b62e::getLoader();
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit0aec1cc4eb979f7984089e691c52ce42 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit0aec1cc4eb979f7984089e691c52ce42 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit0aec1cc4eb979f7984089e691c52ce42', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit0aec1cc4eb979f7984089e691c52ce42', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit8fd232a2f678d4a9e9948da61a15b62e {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit8fd232a2f678d4a9e9948da61a15b62e', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit8fd232a2f678d4a9e9948da61a15b62e', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/installed.json CHANGED
@@ -6,12 +6,12 @@
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/baselbers/mpdf.git",
9
- "reference": "5efa0e41c98568161f41c399787bb79fb5f712e0"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/baselbers/mpdf/zipball/5efa0e41c98568161f41c399787bb79fb5f712e0",
14
- "reference": "5efa0e41c98568161f41c399787bb79fb5f712e0",
15
  "shasum": ""
16
  },
17
  "require": {
@@ -25,7 +25,7 @@
25
  "suggest": {
26
  "ext-zlib": "Needed for compression of embedded resources, such as fonts"
27
  },
28
- "time": "2020-06-17T19:40:45+00:00",
29
  "type": "library",
30
  "installation-source": "source",
31
  "autoload": {
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/baselbers/mpdf.git",
9
+ "reference": "e65509d36a2e5b14bea72a4a80439c55e6062071"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/baselbers/mpdf/zipball/e65509d36a2e5b14bea72a4a80439c55e6062071",
14
+ "reference": "e65509d36a2e5b14bea72a4a80439c55e6062071",
15
  "shasum": ""
16
  },
17
  "require": {
25
  "suggest": {
26
  "ext-zlib": "Needed for compression of embedded resources, such as fonts"
27
  },
28
+ "time": "2020-06-21T19:52:50+00:00",
29
  "type": "library",
30
  "installation-source": "source",
31
  "autoload": {
vendor/mpdf/mpdf/mpdf.php CHANGED
@@ -12432,7 +12432,7 @@ class mPDF
12432
  $p += 4;
12433
  } elseif ($type == 'IEND') {
12434
  break;
12435
- } elseif (preg_match('/[a-zA-Z][4]/', $type)) {
12436
  $p += $n + 4;
12437
  } else {
12438
  return $this->_imageError($file, $firsttime, 'Error parsing PNG image data');
12432
  $p += 4;
12433
  } elseif ($type == 'IEND') {
12434
  break;
12435
+ } elseif (preg_match('/[a-zA-Z]{4}/', $type)) {
12436
  $p += $n + 4;
12437
  } else {
12438
  return $this->_imageError($file, $firsttime, 'Error parsing PNG image data');