WooCommerce PDF Invoices & Packing Slips - Version 2.1.5

Version Description

  • Feature: Filter for number store table (wpo_wcpdf_number_store_table_name)
  • Fix: prevent accessing order properties as custom field/order meta
  • Fix: prevent wrong application of wpo_wcpdf_filename filter
  • Fix: Improved tax rate calculation fallback
Download this release

Release Info

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

Code changes from version 2.1.4 to 2.1.5

assets/css/order-styles.css CHANGED
@@ -1,58 +1,58 @@
1
- /* Order list buttons: */
2
- .type-shop_order .column-wc_actions a.button.wpo_wcpdf {
3
- padding: 2px !important;
4
- }
5
-
6
- .type-shop_order .column-wc_actions a.button.wpo_wcpdf img,
7
- .type-shop_order .column-order_actions a.button.wpo_wcpdf img {
8
- width: 16px;
9
- }
10
-
11
- .widefat .column-pdf_invoice_number {
12
- width: 110px;
13
- }
14
-
15
- @media screen and (max-width: 782px) {
16
- .wp-list-table .column-pdf_invoice_number, .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-pdf_invoice_number:not(.check-column) {
17
- display: none;
18
- }
19
- .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-pdf_invoice_number {
20
- padding: 3px 8px 3px 35%
21
- }
22
- }
23
-
24
- #wpo_wcpdf-data-input-box h4 {
25
- font-size: 14px;
26
- line-height: 1.4;
27
- margin: 1.5em 0 0 0;
28
- }
29
-
30
- #wpo_wcpdf-data-input-box p {
31
- margin: 0.5em 0;
32
- }
33
-
34
- #wpo_wcpdf-data-input-box .form-field input {
35
- width: auto;
36
- }
37
-
38
- .wcpdf-data-fields .read-only {
39
- height:auto;
40
- display:block;
41
- }
42
-
43
- .wcpdf-data-fields .editable {
44
- height:auto;
45
- display:none;
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
- }
1
+ /* Order list buttons: */
2
+ .type-shop_order .column-wc_actions a.button.wpo_wcpdf {
3
+ padding: 2px !important;
4
+ }
5
+
6
+ .type-shop_order .column-wc_actions a.button.wpo_wcpdf img,
7
+ .type-shop_order .column-order_actions a.button.wpo_wcpdf img {
8
+ width: 16px;
9
+ }
10
+
11
+ .widefat .column-pdf_invoice_number {
12
+ width: 110px;
13
+ }
14
+
15
+ @media screen and (max-width: 782px) {
16
+ .wp-list-table .column-pdf_invoice_number, .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-pdf_invoice_number:not(.check-column) {
17
+ display: none;
18
+ }
19
+ .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-pdf_invoice_number {
20
+ padding: 3px 8px 3px 35%
21
+ }
22
+ }
23
+
24
+ #wpo_wcpdf-data-input-box h4 {
25
+ font-size: 14px;
26
+ line-height: 1.4;
27
+ margin: 1.5em 0 0 0;
28
+ }
29
+
30
+ #wpo_wcpdf-data-input-box p {
31
+ margin: 0.5em 0;
32
+ }
33
+
34
+ #wpo_wcpdf-data-input-box .form-field input {
35
+ width: auto;
36
+ }
37
+
38
+ .wcpdf-data-fields .read-only {
39
+ height:auto;
40
+ display:block;
41
+ }
42
+
43
+ .wcpdf-data-fields .editable {
44
+ height:auto;
45
+ display:none;
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
+ }
includes/compatibility/class-wcpdf-compatibility-third-party-plugins.php CHANGED
@@ -1,198 +1,198 @@
1
- <?php
2
- namespace WPO\WC\PDF_Invoices\Compatibility;
3
-
4
- use WPO\WC\PDF_Invoices\Compatibility\WC_Core as WCX;
5
- use WPO\WC\PDF_Invoices\Compatibility\Order as WCX_Order;
6
- use WPO\WC\PDF_Invoices\Compatibility\Product as WCX_Product;
7
- use WPO\WC\PDF_Invoices\Compatibility\WC_DateTime;
8
-
9
- defined( 'ABSPATH' ) or exit;
10
-
11
- if ( ! class_exists( '\\WPO\\WC\\PDF_Invoices\\Compatibility\\Third_Party_Plugins' ) ) :
12
-
13
- /**
14
- * Third party plugin compatibility class.
15
- *
16
- * @since 2.0
17
- */
18
- class Third_Party_Plugins {
19
- function __construct() {
20
- // WooCommerce Subscriptions compatibility
21
- if ( class_exists('WC_Subscriptions') ) {
22
- if ( version_compare( \WC_Subscriptions::$version, '2.0', '<' ) ) {
23
- add_action( 'woocommerce_subscriptions_renewal_order_created', array( $this, 'woocommerce_subscriptions_renewal_order_created' ), 10, 4 );
24
- } else {
25
- add_action( 'wcs_renewal_order_created', array( $this, 'wcs_renewal_order_created' ), 10, 2 );
26
- }
27
- }
28
-
29
- // WooCommerce Product Bundles compatibility (add row classes)
30
- if ( class_exists('WC_Bundles') ) {
31
- add_filter( 'wpo_wcpdf_item_row_class', array( $this, 'add_product_bundles_classes' ), 10, 4 );
32
- }
33
-
34
- // WooCommerce Chained Products compatibility (add row classes)
35
- if ( class_exists('SA_WC_Chained_Products') ) {
36
- add_filter( 'wpo_wcpdf_item_row_class', array( $this, 'add_chained_product_class' ), 10, 4 );
37
- }
38
-
39
- // WooCommerce Composite Products compatibility (add row classes)
40
- if ( class_exists('WC_Composite_Products') ) {
41
- add_filter( 'wpo_wcpdf_item_row_class', array( $this, 'add_composite_product_class' ), 10, 4 );
42
- }
43
-
44
- // WooCommerce Order Status & Actions Manager emails compatibility
45
- if (class_exists('WC_Custom_Status')) {
46
- add_filter( 'wpo_wcpdf_wc_emails', array( $this, 'wc_order_status_actions_emails' ), 10, 1 );
47
- }
48
-
49
- }
50
-
51
- /**
52
- * Reset invoice data for WooCommerce subscription renewal orders
53
- * https://wordpress.org/support/topic/subscription-renewal-duplicate-invoice-number?replies=6#post-6138110
54
- */
55
- public function woocommerce_subscriptions_renewal_order_created ( $renewal_order, $original_order, $product_id, $new_order_role ) {
56
- $this->reset_invoice_data( $renewal_order );
57
- return $renewal_order;
58
- }
59
-
60
- public function wcs_renewal_order_created ( $renewal_order, $subscription ) {
61
- $this->reset_invoice_data( $renewal_order );
62
- return $renewal_order;
63
- }
64
-
65
- public function reset_invoice_data ( $order ) {
66
- if ( ! is_object( $order ) ) {
67
- $order = wc_get_order( $order );
68
- }
69
- // delete invoice number, invoice date & invoice exists meta
70
- WCX_Order::delete_meta_data( $order, '_wcpdf_invoice_number' );
71
- WCX_Order::delete_meta_data( $order, '_wcpdf_invoice_number_data' );
72
- WCX_Order::delete_meta_data( $order, '_wcpdf_formatted_invoice_number' );
73
- WCX_Order::delete_meta_data( $order, '_wcpdf_invoice_date' );
74
- WCX_Order::delete_meta_data( $order, '_wcpdf_invoice_exists' );
75
- }
76
-
77
- /**
78
- * WooCommerce Product Bundles
79
- * @param string $classes CSS classes for item row (tr)
80
- * @param string $document_type PDF Document type
81
- * @param object $order WC_Order order
82
- * @param int $item_id WooCommerce Item ID
83
- */
84
- public function add_product_bundles_classes ( $classes, $document_type, $order, $item_id = '' ) {
85
- $item_id = !empty($item_id) ? $item_id : $this->get_item_id_from_classes( $classes );
86
- if ( empty($item_id) ) {
87
- return $classes;
88
- }
89
-
90
- if ( $bundled_by = WCX_Order::get_item_meta( $order, $item_id, '_bundled_by', true ) ) {
91
- $classes = $classes . ' bundled-item';
92
-
93
- // check bundled item visibility
94
- if ( $hidden = WCX_Order::get_item_meta( $order, $item_id, '_bundled_item_hidden', true ) ) {
95
- $classes = $classes . ' hidden';
96
- }
97
-
98
- return $classes;
99
- } elseif ( $bundled_items = WCX_Order::get_item_meta( $order, $item_id, '_bundled_items', true ) ) {
100
- return $classes . ' product-bundle';
101
- }
102
-
103
- return $classes;
104
- }
105
-
106
- /**
107
- * WooCommerce Chanined Products
108
- * @param string $classes CSS classes for item row (tr)
109
- * @param string $document_type PDF Document type
110
- * @param object $order WC_Order order
111
- * @param int $item_id WooCommerce Item ID
112
- */
113
- public function add_chained_product_class ( $classes, $document_type, $order, $item_id = '' ) {
114
- $item_id = !empty($item_id) ? $item_id : $this->get_item_id_from_classes( $classes );
115
- if ( empty($item_id) ) {
116
- return $classes;
117
- }
118
-
119
- if ( $chained_product_of = WCX_Order::get_item_meta( $order, $item_id, '_chained_product_of', true ) ) {
120
- return $classes . ' chained-product';
121
- }
122
-
123
- return $classes;
124
- }
125
-
126
- /**
127
- * WooCommerce Composite Products
128
- * @param string $classes CSS classes for item row (tr)
129
- * @param string $document_type PDF Document type
130
- * @param object $order WC_Order order
131
- * @param int $item_id WooCommerce Item ID
132
- */
133
- public function add_composite_product_class ( $classes, $document_type, $order, $item_id = '' ) {
134
- if ( !function_exists('wc_cp_is_composited_order_item') || !function_exists('wc_cp_is_composite_container_order_item') ) {
135
- return $classes;
136
- }
137
- $item_id = !empty($item_id) ? $item_id : $this->get_item_id_from_classes( $classes );
138
- if ( empty($item_id) ) {
139
- return $classes;
140
- }
141
-
142
- // get order item object
143
- $order_items = $order->get_items();
144
- foreach ($order_items as $order_item_id => $order_item) {
145
- if ($order_item_id == $item_id) {
146
- if ( wc_cp_is_composited_order_item( $order_item, $order ) ) {
147
- $classes .= ' component_table_item';
148
- } elseif ( wc_cp_is_composite_container_order_item( $order_item ) ) {
149
- $classes .= ' component_container_table_item';
150
- }
151
- break;
152
- }
153
- }
154
-
155
- return $classes;
156
- }
157
-
158
- /**
159
- * Backwards compatibility helper function: try to get item ID from row class
160
- * @param string $classes CSS classes for item row (tr)
161
- */
162
- public function get_item_id_from_classes ( $classes ) {
163
- $class_array = explode(' ', $classes);
164
- foreach ($class_array as $class) {
165
- if (is_numeric($class)) {
166
- $item_id = $class;
167
- break;
168
- }
169
- }
170
-
171
- // if still empty, we lost the item id somewhere :(
172
- if (empty($item_id)) {
173
- return false;
174
- } else {
175
- return $item_id;
176
- }
177
- }
178
-
179
- /**
180
- * WooCommerce Order Status & Actions Manager emails compatibility
181
- */
182
- public function wc_order_status_actions_emails ( $emails ) {
183
- // get list of custom statuses from WooCommerce Custom Order Status & Actions
184
- // status slug => status name
185
- $custom_statuses = \WC_Custom_Status::get_status_list_names();
186
- // append _email to slug (=email_id) and add to emails list
187
- foreach ($custom_statuses as $status_slug => $status_name) {
188
- $emails[$status_slug.'_email'] = $status_name;
189
- }
190
- return $emails;
191
- }
192
-
193
- }
194
-
195
-
196
- endif; // Class exists check
197
-
198
- return new Third_Party_Plugins();
1
+ <?php
2
+ namespace WPO\WC\PDF_Invoices\Compatibility;
3
+
4
+ use WPO\WC\PDF_Invoices\Compatibility\WC_Core as WCX;
5
+ use WPO\WC\PDF_Invoices\Compatibility\Order as WCX_Order;
6
+ use WPO\WC\PDF_Invoices\Compatibility\Product as WCX_Product;
7
+ use WPO\WC\PDF_Invoices\Compatibility\WC_DateTime;
8
+
9
+ defined( 'ABSPATH' ) or exit;
10
+
11
+ if ( ! class_exists( '\\WPO\\WC\\PDF_Invoices\\Compatibility\\Third_Party_Plugins' ) ) :
12
+
13
+ /**
14
+ * Third party plugin compatibility class.
15
+ *
16
+ * @since 2.0
17
+ */
18
+ class Third_Party_Plugins {
19
+ function __construct() {
20
+ // WooCommerce Subscriptions compatibility
21
+ if ( class_exists('WC_Subscriptions') ) {
22
+ if ( version_compare( \WC_Subscriptions::$version, '2.0', '<' ) ) {
23
+ add_action( 'woocommerce_subscriptions_renewal_order_created', array( $this, 'woocommerce_subscriptions_renewal_order_created' ), 10, 4 );
24
+ } else {
25
+ add_action( 'wcs_renewal_order_created', array( $this, 'wcs_renewal_order_created' ), 10, 2 );
26
+ }
27
+ }
28
+
29
+ // WooCommerce Product Bundles compatibility (add row classes)
30
+ if ( class_exists('WC_Bundles') ) {
31
+ add_filter( 'wpo_wcpdf_item_row_class', array( $this, 'add_product_bundles_classes' ), 10, 4 );
32
+ }
33
+
34
+ // WooCommerce Chained Products compatibility (add row classes)
35
+ if ( class_exists('SA_WC_Chained_Products') ) {
36
+ add_filter( 'wpo_wcpdf_item_row_class', array( $this, 'add_chained_product_class' ), 10, 4 );
37
+ }
38
+
39
+ // WooCommerce Composite Products compatibility (add row classes)
40
+ if ( class_exists('WC_Composite_Products') ) {
41
+ add_filter( 'wpo_wcpdf_item_row_class', array( $this, 'add_composite_product_class' ), 10, 4 );
42
+ }
43
+
44
+ // WooCommerce Order Status & Actions Manager emails compatibility
45
+ if (class_exists('WC_Custom_Status')) {
46
+ add_filter( 'wpo_wcpdf_wc_emails', array( $this, 'wc_order_status_actions_emails' ), 10, 1 );
47
+ }
48
+
49
+ }
50
+
51
+ /**
52
+ * Reset invoice data for WooCommerce subscription renewal orders
53
+ * https://wordpress.org/support/topic/subscription-renewal-duplicate-invoice-number?replies=6#post-6138110
54
+ */
55
+ public function woocommerce_subscriptions_renewal_order_created ( $renewal_order, $original_order, $product_id, $new_order_role ) {
56
+ $this->reset_invoice_data( $renewal_order );
57
+ return $renewal_order;
58
+ }
59
+
60
+ public function wcs_renewal_order_created ( $renewal_order, $subscription ) {
61
+ $this->reset_invoice_data( $renewal_order );
62
+ return $renewal_order;
63
+ }
64
+
65
+ public function reset_invoice_data ( $order ) {
66
+ if ( ! is_object( $order ) ) {
67
+ $order = wc_get_order( $order );
68
+ }
69
+ // delete invoice number, invoice date & invoice exists meta
70
+ WCX_Order::delete_meta_data( $order, '_wcpdf_invoice_number' );
71
+ WCX_Order::delete_meta_data( $order, '_wcpdf_invoice_number_data' );
72
+ WCX_Order::delete_meta_data( $order, '_wcpdf_formatted_invoice_number' );
73
+ WCX_Order::delete_meta_data( $order, '_wcpdf_invoice_date' );
74
+ WCX_Order::delete_meta_data( $order, '_wcpdf_invoice_exists' );
75
+ }
76
+
77
+ /**
78
+ * WooCommerce Product Bundles
79
+ * @param string $classes CSS classes for item row (tr)
80
+ * @param string $document_type PDF Document type
81
+ * @param object $order WC_Order order
82
+ * @param int $item_id WooCommerce Item ID
83
+ */
84
+ public function add_product_bundles_classes ( $classes, $document_type, $order, $item_id = '' ) {
85
+ $item_id = !empty($item_id) ? $item_id : $this->get_item_id_from_classes( $classes );
86
+ if ( empty($item_id) ) {
87
+ return $classes;
88
+ }
89
+
90
+ if ( $bundled_by = WCX_Order::get_item_meta( $order, $item_id, '_bundled_by', true ) ) {
91
+ $classes = $classes . ' bundled-item';
92
+
93
+ // check bundled item visibility
94
+ if ( $hidden = WCX_Order::get_item_meta( $order, $item_id, '_bundled_item_hidden', true ) ) {
95
+ $classes = $classes . ' hidden';
96
+ }
97
+
98
+ return $classes;
99
+ } elseif ( $bundled_items = WCX_Order::get_item_meta( $order, $item_id, '_bundled_items', true ) ) {
100
+ return $classes . ' product-bundle';
101
+ }
102
+
103
+ return $classes;
104
+ }
105
+
106
+ /**
107
+ * WooCommerce Chanined Products
108
+ * @param string $classes CSS classes for item row (tr)
109
+ * @param string $document_type PDF Document type
110
+ * @param object $order WC_Order order
111
+ * @param int $item_id WooCommerce Item ID
112
+ */
113
+ public function add_chained_product_class ( $classes, $document_type, $order, $item_id = '' ) {
114
+ $item_id = !empty($item_id) ? $item_id : $this->get_item_id_from_classes( $classes );
115
+ if ( empty($item_id) ) {
116
+ return $classes;
117
+ }
118
+
119
+ if ( $chained_product_of = WCX_Order::get_item_meta( $order, $item_id, '_chained_product_of', true ) ) {
120
+ return $classes . ' chained-product';
121
+ }
122
+
123
+ return $classes;
124
+ }
125
+
126
+ /**
127
+ * WooCommerce Composite Products
128
+ * @param string $classes CSS classes for item row (tr)
129
+ * @param string $document_type PDF Document type
130
+ * @param object $order WC_Order order
131
+ * @param int $item_id WooCommerce Item ID
132
+ */
133
+ public function add_composite_product_class ( $classes, $document_type, $order, $item_id = '' ) {
134
+ if ( !function_exists('wc_cp_is_composited_order_item') || !function_exists('wc_cp_is_composite_container_order_item') ) {
135
+ return $classes;
136
+ }
137
+ $item_id = !empty($item_id) ? $item_id : $this->get_item_id_from_classes( $classes );
138
+ if ( empty($item_id) ) {
139
+ return $classes;
140
+ }
141
+
142
+ // get order item object
143
+ $order_items = $order->get_items();
144
+ foreach ($order_items as $order_item_id => $order_item) {
145
+ if ($order_item_id == $item_id) {
146
+ if ( wc_cp_is_composited_order_item( $order_item, $order ) ) {
147
+ $classes .= ' component_table_item';
148
+ } elseif ( wc_cp_is_composite_container_order_item( $order_item ) ) {
149
+ $classes .= ' component_container_table_item';
150
+ }
151
+ break;
152
+ }
153
+ }
154
+
155
+ return $classes;
156
+ }
157
+
158
+ /**
159
+ * Backwards compatibility helper function: try to get item ID from row class
160
+ * @param string $classes CSS classes for item row (tr)
161
+ */
162
+ public function get_item_id_from_classes ( $classes ) {
163
+ $class_array = explode(' ', $classes);
164
+ foreach ($class_array as $class) {
165
+ if (is_numeric($class)) {
166
+ $item_id = $class;
167
+ break;
168
+ }
169
+ }
170
+
171
+ // if still empty, we lost the item id somewhere :(
172
+ if (empty($item_id)) {
173
+ return false;
174
+ } else {
175
+ return $item_id;
176
+ }
177
+ }
178
+
179
+ /**
180
+ * WooCommerce Order Status & Actions Manager emails compatibility
181
+ */
182
+ public function wc_order_status_actions_emails ( $emails ) {
183
+ // get list of custom statuses from WooCommerce Custom Order Status & Actions
184
+ // status slug => status name
185
+ $custom_statuses = \WC_Custom_Status::get_status_list_names();
186
+ // append _email to slug (=email_id) and add to emails list
187
+ foreach ($custom_statuses as $status_slug => $status_name) {
188
+ $emails[$status_slug.'_email'] = $status_name;
189
+ }
190
+ return $emails;
191
+ }
192
+
193
+ }
194
+
195
+
196
+ endif; // Class exists check
197
+
198
+ return new Third_Party_Plugins();
includes/documents/abstract-wcpdf-order-document-methods.php CHANGED
@@ -186,9 +186,11 @@ abstract class Order_Document_Methods extends Order_Document {
186
  * Return/Show a custom field
187
  */
188
  public function get_custom_field( $field_name ) {
189
- $custom_field = WCX_Order::get_meta( $this->order, $field_name, true );
 
 
190
  // if not found, try prefixed with underscore
191
- if ( !$custom_field && substr( $field_name, 0, 1 ) !== '_' ) {
192
  $custom_field = WCX_Order::get_meta( $this->order, "_{$field_name}", true );
193
  }
194
 
@@ -201,7 +203,9 @@ abstract class Order_Document_Methods extends Order_Document {
201
  // fallback to parent for refunds
202
  if ( !$custom_field && $this->is_refund( $this->order ) ) {
203
  $parent_order = $this->get_refund_parent( $this->order );
204
- $custom_field = WCX_Order::get_meta( $parent_order, $field_name, true );
 
 
205
 
206
  // WC3.0 fallback to properties
207
  if ( !$custom_field && is_callable( array( $parent_order, "get_{$property}" ) ) ) {
@@ -223,6 +227,64 @@ abstract class Order_Document_Methods extends Order_Document {
223
  }
224
  }
225
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  /**
227
  * Return/show product attribute
228
  */
@@ -248,7 +310,7 @@ abstract class Order_Document_Methods extends Order_Document {
248
  }
249
 
250
  // WC3.0+ fallback parent product for variations
251
- if ( empty($attribute) && version_compare( WOOCOMMERCE_VERSION, '3.0', '>=' ) && $product->is_type( 'variation' ) ) {
252
  $product = wc_get_product( $product->get_parent_id() );
253
  $attribute = $this->get_product_attribute( $attribute_name, $product );
254
  }
@@ -501,7 +563,12 @@ abstract class Order_Document_Methods extends Order_Document {
501
  $line_taxes = $line_tax_data['subtotal'];
502
  foreach ( $line_taxes as $tax_id => $tax ) {
503
  if ( isset($tax) && $tax !== '' ) {
504
- $tax_rates[] = $this->get_tax_rate_by_id( $tax_id ) . ' %';
 
 
 
 
 
505
  }
506
  }
507
 
@@ -526,26 +593,28 @@ abstract class Order_Document_Methods extends Order_Document {
526
 
527
  if (empty($tax_rates)) {
528
  // one last try: manually calculate
529
- if ( $line_total != 0) {
530
- $tax_rates[] = round( ($line_tax / $line_total)*100, 1 ).' %';
531
- } else {
532
- $tax_rates[] = '-';
533
- }
534
  }
535
 
536
  $tax_rates = implode(' ,', $tax_rates );
537
  } else {
538
  // Backwards compatibility/fallback: calculate tax from line items
539
- if ( $line_total != 0) {
540
- $tax_rates = round( ($line_tax / $line_total)*100, 1 ).' %';
541
- } else {
542
- $tax_rates = '-';
543
- }
544
  }
545
 
546
  return $tax_rates;
547
  }
548
 
 
 
 
 
 
 
 
 
 
 
549
  /**
550
  * Returns the percentage rate (float) for a given tax rate ID.
551
  * @param int $rate_id woocommerce tax rate id
@@ -554,7 +623,11 @@ abstract class Order_Document_Methods extends Order_Document {
554
  public function get_tax_rate_by_id( $rate_id ) {
555
  global $wpdb;
556
  $rate = $wpdb->get_var( $wpdb->prepare( "SELECT tax_rate FROM {$wpdb->prefix}woocommerce_tax_rates WHERE tax_rate_id = %d;", $rate_id ) );
557
- return (float) $rate;
 
 
 
 
558
  }
559
 
560
  /**
@@ -567,8 +640,6 @@ abstract class Order_Document_Methods extends Order_Document {
567
 
568
  $tax_rate_ids = array();
569
  foreach ($rates as $rate) {
570
- // var_dump($rate->tax_rate_id);
571
- // die($rate);
572
  $rate_id = $rate->tax_rate_id;
573
  unset($rate->tax_rate_id);
574
  $tax_rate_ids[$rate_id] = (array) $rate;
186
  * Return/Show a custom field
187
  */
188
  public function get_custom_field( $field_name ) {
189
+ if ( !$this->is_order_prop( $field_name ) ) {
190
+ $custom_field = WCX_Order::get_meta( $this->order, $field_name, true );
191
+ }
192
  // if not found, try prefixed with underscore
193
+ if ( !$custom_field && substr( $field_name, 0, 1 ) !== '_' && !$this->is_order_prop( "_{$field_name}" ) ) {
194
  $custom_field = WCX_Order::get_meta( $this->order, "_{$field_name}", true );
195
  }
196
 
203
  // fallback to parent for refunds
204
  if ( !$custom_field && $this->is_refund( $this->order ) ) {
205
  $parent_order = $this->get_refund_parent( $this->order );
206
+ if ( !$this->is_order_prop( $field_name ) ) {
207
+ $custom_field = WCX_Order::get_meta( $parent_order, $field_name, true );
208
+ }
209
 
210
  // WC3.0 fallback to properties
211
  if ( !$custom_field && is_callable( array( $parent_order, "get_{$property}" ) ) ) {
227
  }
228
  }
229
 
230
+ public function is_order_prop( $key ) {
231
+ if ( version_compare( WOOCOMMERCE_VERSION, '3.0', '<' ) ) {
232
+ return false; // WC 2.X didn't have CRUD
233
+ }
234
+ // Taken from WC class
235
+ $order_props = array(
236
+ // Abstract order props
237
+ 'parent_id',
238
+ 'status',
239
+ 'currency',
240
+ 'version',
241
+ 'prices_include_tax',
242
+ 'date_created',
243
+ 'date_modified',
244
+ 'discount_total',
245
+ 'discount_tax',
246
+ 'shipping_total',
247
+ 'shipping_tax',
248
+ 'cart_tax',
249
+ 'total',
250
+ 'total_tax',
251
+ // Order props
252
+ 'customer_id',
253
+ 'order_key',
254
+ 'billing_first_name',
255
+ 'billing_last_name',
256
+ 'billing_company',
257
+ 'billing_address_1',
258
+ 'billing_address_2',
259
+ 'billing_city',
260
+ 'billing_state',
261
+ 'billing_postcode',
262
+ 'billing_country',
263
+ 'billing_email',
264
+ 'billing_phone',
265
+ 'shipping_first_name',
266
+ 'shipping_last_name',
267
+ 'shipping_company',
268
+ 'shipping_address_1',
269
+ 'shipping_address_2',
270
+ 'shipping_city',
271
+ 'shipping_state',
272
+ 'shipping_postcode',
273
+ 'shipping_country',
274
+ 'payment_method',
275
+ 'payment_method_title',
276
+ 'transaction_id',
277
+ 'customer_ip_address',
278
+ 'customer_user_agent',
279
+ 'created_via',
280
+ 'customer_note',
281
+ 'date_completed',
282
+ 'date_paid',
283
+ 'cart_hash',
284
+ );
285
+ return in_array($key, $order_props);
286
+ }
287
+
288
  /**
289
  * Return/show product attribute
290
  */
310
  }
311
 
312
  // WC3.0+ fallback parent product for variations
313
+ if ( empty($attribute) && version_compare( WOOCOMMERCE_VERSION, '3.0', '>=' ) && $product->is_type( 'variation' ) ) {
314
  $product = wc_get_product( $product->get_parent_id() );
315
  $attribute = $this->get_product_attribute( $attribute_name, $product );
316
  }
563
  $line_taxes = $line_tax_data['subtotal'];
564
  foreach ( $line_taxes as $tax_id => $tax ) {
565
  if ( isset($tax) && $tax !== '' ) {
566
+ $tax_rate = $this->get_tax_rate_by_id( $tax_id );
567
+ if ( $tax_rate !== false ) {
568
+ $tax_rates[] = $tax_rate . ' %';
569
+ } else {
570
+ $tax_rates[] = $this->calculate_tax_rate( $line_total, $line_tax );
571
+ }
572
  }
573
  }
574
 
593
 
594
  if (empty($tax_rates)) {
595
  // one last try: manually calculate
596
+ $tax_rates[] = $this->calculate_tax_rate( $line_total, $line_tax );
 
 
 
 
597
  }
598
 
599
  $tax_rates = implode(' ,', $tax_rates );
600
  } else {
601
  // Backwards compatibility/fallback: calculate tax from line items
602
+ $tax_rates[] = $this->calculate_tax_rate( $line_total, $line_tax );
 
 
 
 
603
  }
604
 
605
  return $tax_rates;
606
  }
607
 
608
+ public function calculate_tax_rate( $price_ex_tax, $tax ) {
609
+ $precision = apply_filters( 'wpo_wcpdf_calculate_tax_rate_precision', 1 );
610
+ if ( $price_ex_tax != 0) {
611
+ $tax_rate = round( ($tax / $price_ex_tax)*100, $precision ).' %';
612
+ } else {
613
+ $tax_rate = '-';
614
+ }
615
+ return $tax_rate;
616
+ }
617
+
618
  /**
619
  * Returns the percentage rate (float) for a given tax rate ID.
620
  * @param int $rate_id woocommerce tax rate id
623
  public function get_tax_rate_by_id( $rate_id ) {
624
  global $wpdb;
625
  $rate = $wpdb->get_var( $wpdb->prepare( "SELECT tax_rate FROM {$wpdb->prefix}woocommerce_tax_rates WHERE tax_rate_id = %d;", $rate_id ) );
626
+ if ($rate === NULL) {
627
+ return false;
628
+ } else {
629
+ return (float) $rate;
630
+ }
631
  }
632
 
633
  /**
640
 
641
  $tax_rate_ids = array();
642
  foreach ($rates as $rate) {
 
 
643
  $rate_id = $rate->tax_rate_id;
644
  unset($rate->tax_rate_id);
645
  $tax_rate_ids[$rate_id] = (array) $rate;
includes/documents/abstract-wcpdf-order-document.php CHANGED
@@ -417,7 +417,12 @@ abstract class Order_Document {
417
  } else {
418
  $text = $default;
419
  }
420
- return apply_filters( "wpo_wcpdf_{$settings_key}", $text, $this );
 
 
 
 
 
421
  }
422
 
423
  /**
417
  } else {
418
  $text = $default;
419
  }
420
+ // legacy filters
421
+ if ( in_array( $settings_key, array( 'shop_name', 'shop_address', 'footer', 'extra_1', 'extra_2', 'extra_3' ) ) ) {
422
+ $text = apply_filters( "wpo_wcpdf_{$settings_key}", $text, $this );
423
+ }
424
+
425
+ return apply_filters( "wpo_wcpdf_{$settings_key}_settings_text", $text, $this );
426
  }
427
 
428
  /**
includes/documents/class-wcpdf-sequential-number-store.php CHANGED
@@ -18,10 +18,10 @@ if ( !class_exists( '\\WPO\\WC\\PDF_Invoices\\Documents\\Sequential_Number_Store
18
 
19
  class Sequential_Number_Store {
20
  /**
21
- * Name of the table that stores the number sequence (without the wp_wcpdf_ table prefix)
22
  * @var String
23
  */
24
- public $table_name;
25
 
26
  /**
27
  * Number store method, either 'auto_increment' or 'calculate'
@@ -29,10 +29,17 @@ class Sequential_Number_Store {
29
  */
30
  public $method;
31
 
32
- public function __construct( $table_name, $method = 'auto_increment' ) {
 
 
 
 
 
 
33
  global $wpdb;
34
- $this->table_name = "{$wpdb->prefix}wcpdf_{$table_name}"; // i.e. wp_wcpdf_invoice_number
35
  $this->method = $method;
 
36
 
37
  $this->init();
38
  }
18
 
19
  class Sequential_Number_Store {
20
  /**
21
+ * Name of the number store (used for table_name)
22
  * @var String
23
  */
24
+ public $store_name;
25
 
26
  /**
27
  * Number store method, either 'auto_increment' or 'calculate'
29
  */
30
  public $method;
31
 
32
+ /**
33
+ * Name of the table that stores the number sequence (including the wp_wcpdf_ table prefix)
34
+ * @var String
35
+ */
36
+ public $table_name;
37
+
38
+ public function __construct( $store_name, $method = 'auto_increment' ) {
39
  global $wpdb;
40
+ $this->store_name = $store_name;
41
  $this->method = $method;
42
+ $this->table_name = apply_filters( "wpo_wcpdf_number_store_table_name", "{$wpdb->prefix}wcpdf_{$store_name}", $store_name, $method ); // i.e. wp_wcpdf_invoice_number
43
 
44
  $this->init();
45
  }
languages/woocommerce-pdf-invoices-packing-slips-de_DE.mo CHANGED
Binary file
languages/woocommerce-pdf-invoices-packing-slips-de_DE.po CHANGED
@@ -1,20 +1,19 @@
 
 
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WooCommerce PDF Invoices & Packing Slips\n"
4
- "POT-Creation-Date: 2017-06-09 16:37+0200\n"
5
- "PO-Revision-Date: 2017-06-09 16:37+0200\n"
6
- "Last-Translator: Jens Nachtigall <mail@nachtigall.io>\n"
7
- "Language-Team: PROnatur24 <info@pronatur24.eu>\n"
8
- "Language: de_DE\n"
 
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.8.12\n"
13
- "X-Poedit-Basepath: ..\n"
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e;_x;_n:1,2\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
 
19
  #: includes/class-wcpdf-admin.php:72 includes/class-wcpdf-admin.php:174
20
  msgid "Invoice Number"
@@ -26,7 +25,7 @@ msgstr "PDF erstellen"
26
 
27
  #: includes/class-wcpdf-admin.php:115
28
  msgid "PDF Invoice data"
29
- msgstr ""
30
 
31
  #: includes/class-wcpdf-admin.php:166
32
  #: includes/documents/class-wcpdf-invoice.php:32
@@ -43,11 +42,11 @@ msgstr "Rechnungsdatum:"
43
 
44
  #: includes/class-wcpdf-admin.php:189
45
  msgid "Set invoice number & date"
46
- msgstr ""
47
 
48
  #: includes/class-wcpdf-admin.php:196
49
  msgid "Invoice Number (unformatted!)"
50
- msgstr ""
51
 
52
  #: includes/class-wcpdf-admin.php:206 includes/class-wcpdf-admin.php:208
53
  msgid "h"
@@ -68,13 +67,15 @@ msgstr "Du hast keine Berechtigung diese Seite anzuzeigen."
68
 
69
  #: includes/class-wcpdf-main.php:141
70
  msgid "Some of the export parameters are missing."
71
- msgstr ""
72
 
73
  #: includes/class-wcpdf-settings-callbacks.php:27
74
  msgid ""
75
  "<b>Warning!</b> The settings below are meant for debugging/development only. "
76
  "Do not use them on a live website!"
77
  msgstr ""
 
 
78
 
79
  #: includes/class-wcpdf-settings-callbacks.php:36
80
  msgid ""
@@ -92,51 +93,59 @@ msgstr "Bildauflösung"
92
 
93
  #: includes/class-wcpdf-settings-callbacks.php:325
94
  msgid "Save"
95
- msgstr ""
96
 
97
  #: includes/class-wcpdf-settings-debug.php:34
98
  msgid "Debug settings"
99
- msgstr ""
100
 
101
  #: includes/class-wcpdf-settings-debug.php:40
102
  msgid "Legacy mode"
103
- msgstr ""
104
 
105
  #: includes/class-wcpdf-settings-debug.php:46
106
  msgid ""
107
  "Legacy mode ensures compatibility with templates and filters from previous "
108
  "versions."
109
  msgstr ""
 
 
110
 
111
  #: includes/class-wcpdf-settings-debug.php:52
112
  msgid "Enable debug output"
113
- msgstr ""
114
 
115
  #: includes/class-wcpdf-settings-debug.php:58
116
  msgid ""
117
  "Enable this option to output plugin errors if you're getting a blank page or "
118
  "other PDF generation issues"
119
  msgstr ""
 
 
120
 
121
  #: includes/class-wcpdf-settings-debug.php:64
122
  msgid "Output to HTML"
123
- msgstr ""
124
 
125
  #: includes/class-wcpdf-settings-debug.php:70
126
  msgid ""
127
  "Send the template output as HTML to the browser instead of creating a PDF."
128
  msgstr ""
 
 
129
 
130
  #: includes/class-wcpdf-settings-documents.php:29
131
  #: includes/class-wcpdf-settings.php:84
132
  msgid "Documents"
133
- msgstr ""
134
 
135
  #: includes/class-wcpdf-settings-documents.php:45
136
  msgid ""
137
  "All available documents are listed below. Click on a document to configure "
138
  "it."
139
  msgstr ""
 
 
140
 
141
  #: includes/class-wcpdf-settings-general.php:37
142
  msgid "General settings"
@@ -181,11 +190,13 @@ msgstr "Letter"
181
 
182
  #: includes/class-wcpdf-settings-general.php:86
183
  msgid "Extended currency symbol support"
184
- msgstr ""
185
 
186
  #: includes/class-wcpdf-settings-general.php:92
187
  msgid "Enable this if your currency symbol is not displaying properly"
188
  msgstr ""
 
 
189
 
190
  #: includes/class-wcpdf-settings-general.php:98
191
  msgid "Shop header/logo"
@@ -256,11 +267,11 @@ msgstr "Einstellungen"
256
 
257
  #: includes/class-wcpdf-settings.php:71
258
  msgid "Documentation"
259
- msgstr ""
260
 
261
  #: includes/class-wcpdf-settings.php:72
262
  msgid "Support Forum"
263
- msgstr ""
264
 
265
  #: includes/class-wcpdf-settings.php:83
266
  msgid "General"
@@ -272,7 +283,7 @@ msgstr "Status"
272
 
273
  #: includes/compatibility/class-wc-core-compatibility.php:222
274
  msgid "WooCommerce"
275
- msgstr ""
276
 
277
  #: includes/documents/abstract-wcpdf-order-document-methods.php:113
278
  #: includes/documents/abstract-wcpdf-order-document-methods.php:176
@@ -290,12 +301,12 @@ msgstr "Versandart"
290
  #: includes/documents/abstract-wcpdf-order-document-methods.php:669
291
  #, php-format
292
  msgid "(includes %s)"
293
- msgstr ""
294
 
295
  #: includes/documents/abstract-wcpdf-order-document-methods.php:672
296
  #, php-format
297
  msgid "(Includes %s)"
298
- msgstr ""
299
 
300
  #: includes/documents/abstract-wcpdf-order-document-methods.php:702
301
  msgid "Subtotal"
@@ -325,15 +336,14 @@ msgstr "Gesamtsumme ohne MwSt."
325
  msgid "Total"
326
  msgstr "Gesamtsumme"
327
 
328
- #: includes/documents/abstract-wcpdf-order-document.php:674
329
  msgid "Admin email"
330
- msgstr ""
331
 
332
- #: includes/documents/abstract-wcpdf-order-document.php:677
333
  msgid "Manual email"
334
- msgstr ""
335
 
336
- # This is a filename (prefix). do not use spaces or special characters!
337
  #: includes/documents/class-wcpdf-invoice.php:85
338
  msgid "invoice"
339
  msgid_plural "invoices"
@@ -343,11 +353,11 @@ msgstr[1] "Rechnungen"
343
  #: includes/documents/class-wcpdf-invoice.php:130
344
  #: includes/documents/class-wcpdf-packing-slip.php:94
345
  msgid "Enable"
346
- msgstr ""
347
 
348
  #: includes/documents/class-wcpdf-invoice.php:141
349
  msgid "Attach to:"
350
- msgstr ""
351
 
352
  #: includes/documents/class-wcpdf-invoice.php:148
353
  #, php-format
@@ -362,23 +372,25 @@ msgstr ""
362
 
363
  #: includes/documents/class-wcpdf-invoice.php:154
364
  msgid "Display shipping address"
365
- msgstr ""
366
 
367
  #: includes/documents/class-wcpdf-invoice.php:160
368
  msgid ""
369
  "Display shipping address (in addition to the default billing address) if "
370
  "different from billing address"
371
  msgstr ""
 
 
372
 
373
  #: includes/documents/class-wcpdf-invoice.php:166
374
  #: includes/documents/class-wcpdf-packing-slip.php:117
375
  msgid "Display email address"
376
- msgstr ""
377
 
378
  #: includes/documents/class-wcpdf-invoice.php:177
379
  #: includes/documents/class-wcpdf-packing-slip.php:128
380
  msgid "Display phone number"
381
- msgstr ""
382
 
383
  #: includes/documents/class-wcpdf-invoice.php:188
384
  msgid "Display invoice date"
@@ -386,7 +398,7 @@ msgstr "Rechnungsdatum anzeigen"
386
 
387
  #: includes/documents/class-wcpdf-invoice.php:200
388
  msgid "Display invoice number"
389
- msgstr ""
390
 
391
  #: includes/documents/class-wcpdf-invoice.php:212
392
  msgid "Next invoice number (without prefix/suffix etc.)"
@@ -399,10 +411,15 @@ msgid ""
399
  "you override this and set it lower than the current/highest number, this "
400
  "could create duplicate numbers!"
401
  msgstr ""
 
 
 
 
 
402
 
403
  #: includes/documents/class-wcpdf-invoice.php:224
404
  msgid "Number format"
405
- msgstr ""
406
 
407
  #: includes/documents/class-wcpdf-invoice.php:232
408
  msgid "Prefix"
@@ -413,6 +430,8 @@ msgid ""
413
  "to use the invoice year and/or month, use [invoice_year] or [invoice_month] "
414
  "respectively"
415
  msgstr ""
 
 
416
 
417
  #: includes/documents/class-wcpdf-invoice.php:237
418
  msgid "Suffix"
@@ -438,27 +457,27 @@ msgstr ""
438
 
439
  #: includes/documents/class-wcpdf-invoice.php:254
440
  msgid "Reset invoice number yearly"
441
- msgstr ""
442
 
443
  #: includes/documents/class-wcpdf-invoice.php:265
444
  msgid "Allow My Account invoice download"
445
- msgstr ""
446
 
447
  #: includes/documents/class-wcpdf-invoice.php:272
448
  msgid "Only when an invoice is already created/emailed"
449
- msgstr ""
450
 
451
  #: includes/documents/class-wcpdf-invoice.php:273
452
  msgid "Only for specific order statuses (define below)"
453
- msgstr ""
454
 
455
  #: includes/documents/class-wcpdf-invoice.php:274
456
  msgid "Always"
457
- msgstr ""
458
 
459
  #: includes/documents/class-wcpdf-invoice.php:275
460
  msgid "Never"
461
- msgstr ""
462
 
463
  #: includes/documents/class-wcpdf-invoice.php:290
464
  msgid "Enable invoice number column in the orders list"
@@ -466,21 +485,27 @@ msgstr "Aktivierung Spalte Rechnungsnummer in Bestellübersicht"
466
 
467
  #: includes/documents/class-wcpdf-invoice.php:301
468
  msgid "Disable for free products"
469
- msgstr ""
470
 
471
  #: includes/documents/class-wcpdf-invoice.php:307
 
 
 
 
472
  msgid ""
473
  "Disable automatic creation/attachment when only free products are ordered"
474
  msgstr ""
 
 
475
 
476
  #: includes/documents/class-wcpdf-invoice.php:321
477
  msgid "Invoice numbers are created by a third-party extension."
478
- msgstr ""
479
 
480
  #: includes/documents/class-wcpdf-invoice.php:323
481
  #, php-format
482
  msgid "Configure it <a href=\"%s\">here</a>."
483
- msgstr ""
484
 
485
  #: includes/documents/class-wcpdf-packing-slip.php:32
486
  #: includes/documents/class-wcpdf-packing-slip.php:41
@@ -489,7 +514,6 @@ msgstr ""
489
  msgid "Packing Slip"
490
  msgstr "Lieferschein"
491
 
492
- # This is a filename (prefix). do not use spaces or special characters!
493
  #: includes/documents/class-wcpdf-packing-slip.php:53
494
  msgid "packing-slip"
495
  msgid_plural "packing-slips"
@@ -498,17 +522,36 @@ msgstr[1] "Lieferscheine"
498
 
499
  #: includes/documents/class-wcpdf-packing-slip.php:105
500
  msgid "Display billing address"
501
- msgstr ""
502
 
503
  #: includes/documents/class-wcpdf-packing-slip.php:111
504
  msgid ""
505
  "Display billing address (in addition to the default shipping address) if "
506
  "different from shipping address"
507
  msgstr ""
 
 
508
 
509
  #: includes/legacy/class-wcpdf-legacy-document.php:32
510
  msgid "Legacy Document"
 
 
 
 
 
 
 
 
 
 
511
  msgstr ""
 
 
 
 
 
 
 
512
 
513
  #: includes/views/wcpdf-extensions.php:15
514
  msgid "Check out these premium extensions!"
@@ -523,21 +566,26 @@ msgid ""
523
  "Premium PDF Invoice bundle: Everything you need for a perfect invoicing "
524
  "system"
525
  msgstr ""
 
 
526
 
527
  #: includes/views/wcpdf-extensions.php:23
528
  msgid ""
529
  "Supercharge WooCommerce PDF Invoices & Packing Slips with the all our "
530
  "premium extensions:"
531
  msgstr ""
 
 
532
 
533
  #: includes/views/wcpdf-extensions.php:24
534
  msgid "Professional features:"
535
- msgstr ""
536
 
537
  #: includes/views/wcpdf-extensions.php:26
538
  #: includes/views/wcpdf-extensions.php:56
539
  msgid "Email/print/download <b>PDF Credit Notes & Proforma invoices</b>"
540
- msgstr "E-Mail/Druck/Download <b>PDF Gutschrift & Proforma Rechnung</b>"
 
541
 
542
  #: includes/views/wcpdf-extensions.php:27
543
  #: includes/views/wcpdf-extensions.php:57
@@ -545,6 +593,9 @@ msgid ""
545
  "Send out a separate <b>notification email</b> with (or without) PDF invoices/"
546
  "packing slips, for example to a drop-shipper or a supplier."
547
  msgstr ""
 
 
 
548
 
549
  #: includes/views/wcpdf-extensions.php:28
550
  #: includes/views/wcpdf-extensions.php:58
@@ -552,6 +603,8 @@ msgid ""
552
  "Attach <b>up to 3 static files</b> (for example a terms & conditions "
553
  "document) to the WooCommerce emails of your choice."
554
  msgstr ""
 
 
555
 
556
  #: includes/views/wcpdf-extensions.php:29
557
  #: includes/views/wcpdf-extensions.php:59
@@ -582,7 +635,7 @@ msgstr "Nutzung vom Plugin für Multisprachen <b>WPML</b> Einrichtungen"
582
  #: includes/views/wcpdf-extensions.php:33
583
  #: includes/views/wcpdf-extensions.php:131
584
  msgid "Advanced, customizable templates"
585
- msgstr ""
586
 
587
  #: includes/views/wcpdf-extensions.php:35
588
  #: includes/views/wcpdf-extensions.php:134
@@ -590,15 +643,17 @@ msgid ""
590
  "Completely customize the invoice contents (prices, taxes, thumbnails) to "
591
  "your needs with a drag & drop customizer"
592
  msgstr ""
 
 
593
 
594
  #: includes/views/wcpdf-extensions.php:36
595
  #: includes/views/wcpdf-extensions.php:135
596
  msgid "Two extra stylish premade templates (Modern & Business)"
597
- msgstr ""
598
 
599
  #: includes/views/wcpdf-extensions.php:38
600
  msgid "Upload automatically to dropbox"
601
- msgstr ""
602
 
603
  #: includes/views/wcpdf-extensions.php:40
604
  #: includes/views/wcpdf-extensions.php:97
@@ -614,11 +669,11 @@ msgstr ""
614
 
615
  #: includes/views/wcpdf-extensions.php:43
616
  msgid "Get WooCommerce PDF Invoices & Packing Slips Bundle"
617
- msgstr ""
618
 
619
  #: includes/views/wcpdf-extensions.php:52
620
  msgid "Go Pro: Proforma invoices, credit notes (=refunds) & more!"
621
- msgstr "Upgrade auf Pro: Proforma Rechnung, Gutschrift & mehr!"
622
 
623
  #: includes/views/wcpdf-extensions.php:54
624
  msgid ""
@@ -633,47 +688,56 @@ msgstr "Hole WooCommerce PDF Invoices & Packing Slips Professional!"
633
 
634
  #: includes/views/wcpdf-extensions.php:71
635
  msgid "Automatically send payment reminders to your customers"
636
- msgstr ""
637
 
638
  #: includes/views/wcpdf-extensions.php:73
639
  msgid "WooCommerce Smart Reminder emails"
640
- msgstr ""
641
 
642
  #: includes/views/wcpdf-extensions.php:75
643
  msgid "<b>Completely automatic</b> scheduled emails"
644
- msgstr ""
645
 
646
  #: includes/views/wcpdf-extensions.php:76
647
  msgid ""
648
  "<b>Rich text editor</b> for the email text, including placeholders for data "
649
  "from the order (name, order total, etc)"
650
  msgstr ""
 
 
651
 
652
  #: includes/views/wcpdf-extensions.php:77
653
  msgid ""
654
  "Configure the exact requirements for sending an email (time after order, "
655
  "order status, payment method)"
656
  msgstr ""
 
 
657
 
658
  #: includes/views/wcpdf-extensions.php:78
659
  msgid ""
660
  "Fully <b>WPML Compatible</b> – emails will be automatically sent in the "
661
  "order language."
662
  msgstr ""
 
 
663
 
664
  #: includes/views/wcpdf-extensions.php:79
665
  msgid ""
666
  "<b>Super versatile!</b> Can be used for any kind of reminder email (review "
667
  "reminders, repeat purchases)"
668
  msgstr ""
 
 
669
 
670
  #: includes/views/wcpdf-extensions.php:80
671
  msgid "Integrates seamlessly with the PDF Invoices & Packing Slips plugin"
672
  msgstr ""
 
673
 
674
  #: includes/views/wcpdf-extensions.php:82
675
  msgid "Get WooCommerce Smart Reminder Emails"
676
- msgstr ""
677
 
678
  #: includes/views/wcpdf-extensions.php:91
679
  msgid "Upload all invoices automatically to your dropbox"
@@ -715,7 +779,7 @@ msgstr "Für individuelle Vorlagen kontaktiert uns auf %s."
715
 
716
  #: includes/views/wcpdf-extensions.php:146
717
  msgid "Hide this message"
718
- msgstr ""
719
 
720
  #: includes/views/wcpdf-settings-page.php:8
721
  msgid "WooCommerce PDF Invoices"
@@ -785,7 +849,7 @@ msgstr "Lieferadresse:"
785
  msgid "Shipping Method:"
786
  msgstr "Versandart:"
787
 
788
- #: woocommerce-pdf-invoices-packingslips.php:231
789
  #, php-format
790
  msgid ""
791
  "WooCommerce PDF Invoices & Packing Slips requires %sWooCommerce%s to be "
@@ -794,90 +858,69 @@ msgstr ""
794
  "WooCommerce PDF Invoices & Packing Slips benötigt %sWooCommerce%s "
795
  "installiert und aktiviert!"
796
 
797
- #: woocommerce-pdf-invoices-packingslips.php:243
798
  msgid ""
799
  "WooCommerce PDF Invoices & Packing Slips requires PHP 5.3 or higher (5.6 or "
800
  "higher recommended)."
801
  msgstr ""
 
 
802
 
803
- #: woocommerce-pdf-invoices-packingslips.php:244
804
  msgid "How to update your PHP version"
805
- msgstr ""
806
 
807
- #~ msgid "Attach invoice to:"
808
- #~ msgstr "Rechnung anfügen zu:"
809
 
810
  #~ msgid ""
811
- #~ "This is the number that will be used on the next invoice that is created. "
812
- #~ "By default, numbering starts from the WooCommerce Order Number of the "
813
- #~ "first invoice that is created and increases for every new invoice. Note "
814
- #~ "that if you override this and set it lower than the highest (PDF) invoice "
815
- #~ "number, this could create double invoice numbers!"
816
  #~ msgstr ""
817
- #~ "Dies ist die Nummer welche für die nächste Rechnung verwendet wird. "
818
- #~ "Vordefiniert startet die Rechnungsnummerierung mit der WooCommerce "
819
- #~ "Bestellnummer auf der ersten generierten Rechnung und erhöht mit jeder "
820
- #~ "neuen Rechnung. Beachte bitte das die Überschreibung der höchsten (PDF) "
821
- #~ "Rechnungsnummer mit einer kleineren Nummer zu doppelten Rechnungsnummern "
822
- #~ "führen kann."
823
-
824
- #~ msgid "Invoice number format"
825
- #~ msgstr "Rechnungsnummer"
826
-
827
- #~ msgid "Template"
828
- #~ msgstr "Vorlage"
829
-
830
- #~ msgid "Admin New Order email"
831
- #~ msgstr "Admin Neue Bestellung E-Mail"
832
-
833
- #~ msgid "Customer Processing Order email"
834
- #~ msgstr "Kunde In Bearbeitung E-Mail"
835
 
836
- #~ msgid "Customer Completed Order email"
837
- #~ msgstr "Kunde Bestellung abgeschlossen E-Mail"
838
 
839
- #~ msgid "Customer Invoice email"
840
- #~ msgstr "Kunde Rechnung E-Mail"
841
 
842
- #~ msgid "PDF Template settings"
843
- #~ msgstr "PDF Vorlageneinstellungen"
844
 
845
- #~ msgid "Display built-in sequential invoice number"
846
- #~ msgstr "Anzeige integrierte fortlaufende Rechnungsnummer"
847
 
848
  #~ msgid ""
849
- #~ "to use the order year and/or month, use [order_year] or [order_month] "
850
- #~ "respectively"
 
851
  #~ msgstr ""
852
- #~ "um das Bestelljahr und/oder -monat zu nutzen, verwende [order_year] oder "
853
- #~ "[order_month]"
 
 
854
 
855
- #~ msgid "PDF Packing Slips"
856
- #~ msgstr "PDF Lieferscheine"
857
 
858
- #~ msgid "PDF Invoice"
859
- #~ msgstr "PDF Rechnung"
860
 
861
- #~ msgid "PDF Packing Slip"
862
- #~ msgstr "PDF Lieferschein"
863
 
864
- #~ msgid "PDF Invoice Number (unformatted!)"
865
- #~ msgstr "PDF Rechnungsnummer (unformatiert)"
866
 
867
- #~ msgid "More advanced templates"
868
- #~ msgstr "Weiter entwickelte Voralgen"
869
 
870
- #~ msgid "Stylish modern invoices & packing slips with product thumbnails!"
871
- #~ msgstr ""
872
- #~ "Stylisch moderne Rechnungen & Lieferscheine mit Miniaturbildern vom "
873
- #~ "Produkt!"
874
 
875
- #~ msgid "More tax details on the invoices!"
876
- #~ msgstr "Zusätzliche Steuerdetails auf der Rechnung!"
877
 
878
- #~ msgid ""
879
- #~ "Attach a <b>static file</b> (for example a terms & conditions document) "
880
- #~ "to the WooCommerce emails of your choice."
881
- #~ msgstr ""
882
- #~ "Hinzufügen einer beliebigen <b>Datei </b> (beispielweise AGB, "
883
- #~ "Widerrufsbelehrung) zum WooCommerce E-Mail"
1
+ # Translation of Plugins - WooCommerce PDF Invoices &amp; Packing Slips - Stable (latest release) in German
2
+ # This file is distributed under the same license as the Plugins - WooCommerce PDF Invoices &amp; Packing Slips - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Plugins - WooCommerce PDF Invoices &amp; Packing Slips - "
6
+ "Stable (latest release)\n"
7
+ "POT-Creation-Date: 2017-06-13 13:13+0200\n"
8
+ "PO-Revision-Date: 2018-02-06 14:16+0100\n"
9
+ "Last-Translator: Thomas Bunte <thomas@bunte-tk.de>\n"
10
+ "Language-Team: \n"
11
+ "Language: de\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
 
 
15
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
16
+ "X-Generator: Poedit 2.0.6\n"
 
 
17
 
18
  #: includes/class-wcpdf-admin.php:72 includes/class-wcpdf-admin.php:174
19
  msgid "Invoice Number"
25
 
26
  #: includes/class-wcpdf-admin.php:115
27
  msgid "PDF Invoice data"
28
+ msgstr "PDF Rechnungsdaten"
29
 
30
  #: includes/class-wcpdf-admin.php:166
31
  #: includes/documents/class-wcpdf-invoice.php:32
42
 
43
  #: includes/class-wcpdf-admin.php:189
44
  msgid "Set invoice number & date"
45
+ msgstr "Erstellen Sie Rechnungsnummer und Rechnungsdatum"
46
 
47
  #: includes/class-wcpdf-admin.php:196
48
  msgid "Invoice Number (unformatted!)"
49
+ msgstr "Rechnungsnummer (unformatiert)"
50
 
51
  #: includes/class-wcpdf-admin.php:206 includes/class-wcpdf-admin.php:208
52
  msgid "h"
67
 
68
  #: includes/class-wcpdf-main.php:141
69
  msgid "Some of the export parameters are missing."
70
+ msgstr "Einige Export Parameter fehlen"
71
 
72
  #: includes/class-wcpdf-settings-callbacks.php:27
73
  msgid ""
74
  "<b>Warning!</b> The settings below are meant for debugging/development only. "
75
  "Do not use them on a live website!"
76
  msgstr ""
77
+ "<b>Achtung!</b> Die unten stehenden Einstellungen sind für Entwickler "
78
+ "vorgehalten. Nutzen Sie diese bitte nur wenn Ihre Website offline ist!"
79
 
80
  #: includes/class-wcpdf-settings-callbacks.php:36
81
  msgid ""
93
 
94
  #: includes/class-wcpdf-settings-callbacks.php:325
95
  msgid "Save"
96
+ msgstr "Speichern"
97
 
98
  #: includes/class-wcpdf-settings-debug.php:34
99
  msgid "Debug settings"
100
+ msgstr "Einstellungen debuggen"
101
 
102
  #: includes/class-wcpdf-settings-debug.php:40
103
  msgid "Legacy mode"
104
+ msgstr "Legacy Modus "
105
 
106
  #: includes/class-wcpdf-settings-debug.php:46
107
  msgid ""
108
  "Legacy mode ensures compatibility with templates and filters from previous "
109
  "versions."
110
  msgstr ""
111
+ "Der Legacy-Modus sorgt für Kompatibilität mit Vorlagen und Filtern aus "
112
+ "früheren Versionen."
113
 
114
  #: includes/class-wcpdf-settings-debug.php:52
115
  msgid "Enable debug output"
116
+ msgstr "Debug Ausgabe Aktivieren"
117
 
118
  #: includes/class-wcpdf-settings-debug.php:58
119
  msgid ""
120
  "Enable this option to output plugin errors if you're getting a blank page or "
121
  "other PDF generation issues"
122
  msgstr ""
123
+ "Diese Option aktivieren um Fehler auszugeben, wenn beim Generieren der PDF "
124
+ "Probleme auftreten sollten. "
125
 
126
  #: includes/class-wcpdf-settings-debug.php:64
127
  msgid "Output to HTML"
128
+ msgstr "Als HTML ausgeben"
129
 
130
  #: includes/class-wcpdf-settings-debug.php:70
131
  msgid ""
132
  "Send the template output as HTML to the browser instead of creating a PDF."
133
  msgstr ""
134
+ "Die Template-Ausgabe als HTML an den Browser senden, anstatt eine PDF zu "
135
+ "erstellen."
136
 
137
  #: includes/class-wcpdf-settings-documents.php:29
138
  #: includes/class-wcpdf-settings.php:84
139
  msgid "Documents"
140
+ msgstr "Dokumente"
141
 
142
  #: includes/class-wcpdf-settings-documents.php:45
143
  msgid ""
144
  "All available documents are listed below. Click on a document to configure "
145
  "it."
146
  msgstr ""
147
+ "Alle verfügbaren Dokumente sind unten aufgeführt. Klicken Sie auf ein "
148
+ "Dokument, um es zu konfigurieren."
149
 
150
  #: includes/class-wcpdf-settings-general.php:37
151
  msgid "General settings"
190
 
191
  #: includes/class-wcpdf-settings-general.php:86
192
  msgid "Extended currency symbol support"
193
+ msgstr "Support für erweiterte Währungs Zeichen"
194
 
195
  #: includes/class-wcpdf-settings-general.php:92
196
  msgid "Enable this if your currency symbol is not displaying properly"
197
  msgstr ""
198
+ "Aktivieren Sie diese Option, wenn Ihr Währungssymbol nicht korrekt "
199
+ "ausgespielt wird."
200
 
201
  #: includes/class-wcpdf-settings-general.php:98
202
  msgid "Shop header/logo"
267
 
268
  #: includes/class-wcpdf-settings.php:71
269
  msgid "Documentation"
270
+ msgstr "Dokumentation"
271
 
272
  #: includes/class-wcpdf-settings.php:72
273
  msgid "Support Forum"
274
+ msgstr "Support Forum"
275
 
276
  #: includes/class-wcpdf-settings.php:83
277
  msgid "General"
283
 
284
  #: includes/compatibility/class-wc-core-compatibility.php:222
285
  msgid "WooCommerce"
286
+ msgstr "WooCommerce"
287
 
288
  #: includes/documents/abstract-wcpdf-order-document-methods.php:113
289
  #: includes/documents/abstract-wcpdf-order-document-methods.php:176
301
  #: includes/documents/abstract-wcpdf-order-document-methods.php:669
302
  #, php-format
303
  msgid "(includes %s)"
304
+ msgstr "(enthält %s)"
305
 
306
  #: includes/documents/abstract-wcpdf-order-document-methods.php:672
307
  #, php-format
308
  msgid "(Includes %s)"
309
+ msgstr "(inkl. %s)"
310
 
311
  #: includes/documents/abstract-wcpdf-order-document-methods.php:702
312
  msgid "Subtotal"
336
  msgid "Total"
337
  msgstr "Gesamtsumme"
338
 
339
+ #: includes/documents/abstract-wcpdf-order-document.php:679
340
  msgid "Admin email"
341
+ msgstr "Admin E-Mail"
342
 
343
+ #: includes/documents/abstract-wcpdf-order-document.php:682
344
  msgid "Manual email"
345
+ msgstr "Manuelle E-Mail"
346
 
 
347
  #: includes/documents/class-wcpdf-invoice.php:85
348
  msgid "invoice"
349
  msgid_plural "invoices"
353
  #: includes/documents/class-wcpdf-invoice.php:130
354
  #: includes/documents/class-wcpdf-packing-slip.php:94
355
  msgid "Enable"
356
+ msgstr "Aktivieren"
357
 
358
  #: includes/documents/class-wcpdf-invoice.php:141
359
  msgid "Attach to:"
360
+ msgstr "Anhängen an"
361
 
362
  #: includes/documents/class-wcpdf-invoice.php:148
363
  #, php-format
372
 
373
  #: includes/documents/class-wcpdf-invoice.php:154
374
  msgid "Display shipping address"
375
+ msgstr "Lieferadresse anzeigen"
376
 
377
  #: includes/documents/class-wcpdf-invoice.php:160
378
  msgid ""
379
  "Display shipping address (in addition to the default billing address) if "
380
  "different from billing address"
381
  msgstr ""
382
+ "Lieferadresse auf Rechnung ergänzend anzeigen bei abweichender "
383
+ "Rechnungsadresse"
384
 
385
  #: includes/documents/class-wcpdf-invoice.php:166
386
  #: includes/documents/class-wcpdf-packing-slip.php:117
387
  msgid "Display email address"
388
+ msgstr "Email Adresse anzeigen"
389
 
390
  #: includes/documents/class-wcpdf-invoice.php:177
391
  #: includes/documents/class-wcpdf-packing-slip.php:128
392
  msgid "Display phone number"
393
+ msgstr "Telefonnummer anzeigen"
394
 
395
  #: includes/documents/class-wcpdf-invoice.php:188
396
  msgid "Display invoice date"
398
 
399
  #: includes/documents/class-wcpdf-invoice.php:200
400
  msgid "Display invoice number"
401
+ msgstr "Rechnungsnummer anzeigen"
402
 
403
  #: includes/documents/class-wcpdf-invoice.php:212
404
  msgid "Next invoice number (without prefix/suffix etc.)"
411
  "you override this and set it lower than the current/highest number, this "
412
  "could create duplicate numbers!"
413
  msgstr ""
414
+ "Dies ist die Nummer welche für die nächste Rechnung verwendet wird. "
415
+ "Normalerweise startet die Rechnungsnummerierung mit der Nummer 1und erhöht "
416
+ "sich mit jeder neuen Rechnung. Beachte bitte das die Ãœberschreibung der "
417
+ "höchsten (PDF) Rechnungsnummer mit einer kleineren Nummer zu doppelten "
418
+ "Rechnungsnummern führen kann."
419
 
420
  #: includes/documents/class-wcpdf-invoice.php:224
421
  msgid "Number format"
422
+ msgstr "Nummernformat"
423
 
424
  #: includes/documents/class-wcpdf-invoice.php:232
425
  msgid "Prefix"
430
  "to use the invoice year and/or month, use [invoice_year] or [invoice_month] "
431
  "respectively"
432
  msgstr ""
433
+ "Um das Rechnungsjahr bzw. den Rechnungsmonat zu verwenden, verwenden Sie "
434
+ "[invoice_year] bzw.[invoice_month]."
435
 
436
  #: includes/documents/class-wcpdf-invoice.php:237
437
  msgid "Suffix"
457
 
458
  #: includes/documents/class-wcpdf-invoice.php:254
459
  msgid "Reset invoice number yearly"
460
+ msgstr "Rechnungsnummer jährlich zurücksetzen"
461
 
462
  #: includes/documents/class-wcpdf-invoice.php:265
463
  msgid "Allow My Account invoice download"
464
+ msgstr "Download der Rechnung über Mein Account zulassen"
465
 
466
  #: includes/documents/class-wcpdf-invoice.php:272
467
  msgid "Only when an invoice is already created/emailed"
468
+ msgstr "Nur wenn eine Rechnung erstellt/verschickt wurde"
469
 
470
  #: includes/documents/class-wcpdf-invoice.php:273
471
  msgid "Only for specific order statuses (define below)"
472
+ msgstr "Nur für bestimmte Auftragsstatus (Definiere unten)"
473
 
474
  #: includes/documents/class-wcpdf-invoice.php:274
475
  msgid "Always"
476
+ msgstr "Immer"
477
 
478
  #: includes/documents/class-wcpdf-invoice.php:275
479
  msgid "Never"
480
+ msgstr "Niemals"
481
 
482
  #: includes/documents/class-wcpdf-invoice.php:290
483
  msgid "Enable invoice number column in the orders list"
485
 
486
  #: includes/documents/class-wcpdf-invoice.php:301
487
  msgid "Disable for free products"
488
+ msgstr "Für kostenlose Produkte deaktivieren"
489
 
490
  #: includes/documents/class-wcpdf-invoice.php:307
491
+ #, fuzzy
492
+ #| msgid ""
493
+ #| "Disable automatic creation/attachment of invoices when only free products "
494
+ #| "are ordered"
495
  msgid ""
496
  "Disable automatic creation/attachment when only free products are ordered"
497
  msgstr ""
498
+ "Deaktiviere das automatische Erstellen/Anhängen von Rechnungen wenn "
499
+ "kostenlose Produkte bestellt wurden"
500
 
501
  #: includes/documents/class-wcpdf-invoice.php:321
502
  msgid "Invoice numbers are created by a third-party extension."
503
+ msgstr "Rechnungsnummern werden von einer Drittanbieter-Erweiterung erstellt."
504
 
505
  #: includes/documents/class-wcpdf-invoice.php:323
506
  #, php-format
507
  msgid "Configure it <a href=\"%s\">here</a>."
508
+ msgstr "Konfigurieren Sie es <a href=\"%s\">hier</a>."
509
 
510
  #: includes/documents/class-wcpdf-packing-slip.php:32
511
  #: includes/documents/class-wcpdf-packing-slip.php:41
514
  msgid "Packing Slip"
515
  msgstr "Lieferschein"
516
 
 
517
  #: includes/documents/class-wcpdf-packing-slip.php:53
518
  msgid "packing-slip"
519
  msgid_plural "packing-slips"
522
 
523
  #: includes/documents/class-wcpdf-packing-slip.php:105
524
  msgid "Display billing address"
525
+ msgstr "Rechnungsadresse anzeigen"
526
 
527
  #: includes/documents/class-wcpdf-packing-slip.php:111
528
  msgid ""
529
  "Display billing address (in addition to the default shipping address) if "
530
  "different from shipping address"
531
  msgstr ""
532
+ "Rechnungsadresse anzeigen (zusätzlich zur Standardversandadresse), falls "
533
+ "abweichend von der Versandadresse"
534
 
535
  #: includes/legacy/class-wcpdf-legacy-document.php:32
536
  msgid "Legacy Document"
537
+ msgstr "Legacy Dokument"
538
+
539
+ #: includes/legacy/class-wcpdf-legacy.php:70
540
+ msgid "Error"
541
+ msgstr "Fehler"
542
+
543
+ #: includes/legacy/class-wcpdf-legacy.php:71
544
+ msgid ""
545
+ "An outdated template or action hook was used to generate the PDF. Legacy "
546
+ "mode has been activated, please try again by reloading this page."
547
  msgstr ""
548
+ "Ein veraltetes Template oder Action Hook wurde verwendet, um das PDF zu "
549
+ "erzeugen. Der Legacy-Modus wurde aktiviert, bitte versuchen Sie es erneut, "
550
+ "indem Sie diese Seite neu laden."
551
+
552
+ #: includes/legacy/class-wcpdf-legacy.php:74
553
+ msgid "The following function was called"
554
+ msgstr "Die folgende Funktion wurde aufgerufen"
555
 
556
  #: includes/views/wcpdf-extensions.php:15
557
  msgid "Check out these premium extensions!"
566
  "Premium PDF Invoice bundle: Everything you need for a perfect invoicing "
567
  "system"
568
  msgstr ""
569
+ "Premium PDF Invoice Bundle: Alles was Sie für ein perfektes "
570
+ "Abrechnungssystem benötigen"
571
 
572
  #: includes/views/wcpdf-extensions.php:23
573
  msgid ""
574
  "Supercharge WooCommerce PDF Invoices & Packing Slips with the all our "
575
  "premium extensions:"
576
  msgstr ""
577
+ "Verbessere WooCommerce PDF Invoices & Packing Slips mit diesen Premium-"
578
+ "Erweiterungen:"
579
 
580
  #: includes/views/wcpdf-extensions.php:24
581
  msgid "Professional features:"
582
+ msgstr "Professionelle Features:"
583
 
584
  #: includes/views/wcpdf-extensions.php:26
585
  #: includes/views/wcpdf-extensions.php:56
586
  msgid "Email/print/download <b>PDF Credit Notes & Proforma invoices</b>"
587
+ msgstr ""
588
+ "E-Mail/Druck/Download <b>PDF Rechnungskorrektur & Proforma Rechnung</b>"
589
 
590
  #: includes/views/wcpdf-extensions.php:27
591
  #: includes/views/wcpdf-extensions.php:57
593
  "Send out a separate <b>notification email</b> with (or without) PDF invoices/"
594
  "packing slips, for example to a drop-shipper or a supplier."
595
  msgstr ""
596
+ "Sende eine separate <b>E-Mail-Benachrichtigung</b> mit (oder ohne) PDF "
597
+ "invoices/packing slips, zum Beispiel zu einem Drop-Shipper oder einem "
598
+ "Lieferanten."
599
 
600
  #: includes/views/wcpdf-extensions.php:28
601
  #: includes/views/wcpdf-extensions.php:58
603
  "Attach <b>up to 3 static files</b> (for example a terms & conditions "
604
  "document) to the WooCommerce emails of your choice."
605
  msgstr ""
606
+ "Hänge <b>bis zu 3 Dateien</b> (zum Beispiel die AGB) an die WooCommerce E-"
607
+ "Mails deiner Wahl an."
608
 
609
  #: includes/views/wcpdf-extensions.php:29
610
  #: includes/views/wcpdf-extensions.php:59
635
  #: includes/views/wcpdf-extensions.php:33
636
  #: includes/views/wcpdf-extensions.php:131
637
  msgid "Advanced, customizable templates"
638
+ msgstr "Erweiterte, anpassbare Vorlagen"
639
 
640
  #: includes/views/wcpdf-extensions.php:35
641
  #: includes/views/wcpdf-extensions.php:134
643
  "Completely customize the invoice contents (prices, taxes, thumbnails) to "
644
  "your needs with a drag & drop customizer"
645
  msgstr ""
646
+ "Stelle die Rechnungen (Preise, Steuern, Thumbnails) komplett per Drag- & "
647
+ "Drop auf deine Bedürfnisse ein"
648
 
649
  #: includes/views/wcpdf-extensions.php:36
650
  #: includes/views/wcpdf-extensions.php:135
651
  msgid "Two extra stylish premade templates (Modern & Business)"
652
+ msgstr "Zwei zusätzliche stilvolle vorgefertigte Vorlagen (Modern & Business)"
653
 
654
  #: includes/views/wcpdf-extensions.php:38
655
  msgid "Upload automatically to dropbox"
656
+ msgstr "Automatischer Upload in die Dropbox"
657
 
658
  #: includes/views/wcpdf-extensions.php:40
659
  #: includes/views/wcpdf-extensions.php:97
669
 
670
  #: includes/views/wcpdf-extensions.php:43
671
  msgid "Get WooCommerce PDF Invoices & Packing Slips Bundle"
672
+ msgstr "Hol Dir das WooCommerce PDF Invoices & Packing Slips Bundle"
673
 
674
  #: includes/views/wcpdf-extensions.php:52
675
  msgid "Go Pro: Proforma invoices, credit notes (=refunds) & more!"
676
+ msgstr "Upgrade auf Pro: Proforma Rechnung, Rechnungskorrektur & mehr!"
677
 
678
  #: includes/views/wcpdf-extensions.php:54
679
  msgid ""
688
 
689
  #: includes/views/wcpdf-extensions.php:71
690
  msgid "Automatically send payment reminders to your customers"
691
+ msgstr "Automatisch Zahlungserinnerungen an Ihre Kunden senden"
692
 
693
  #: includes/views/wcpdf-extensions.php:73
694
  msgid "WooCommerce Smart Reminder emails"
695
+ msgstr "WooCommerce Smart Reminder Emails"
696
 
697
  #: includes/views/wcpdf-extensions.php:75
698
  msgid "<b>Completely automatic</b> scheduled emails"
699
+ msgstr "<b>Vollautomatische</b> geplant e-Mails"
700
 
701
  #: includes/views/wcpdf-extensions.php:76
702
  msgid ""
703
  "<b>Rich text editor</b> for the email text, including placeholders for data "
704
  "from the order (name, order total, etc)"
705
  msgstr ""
706
+ "<b>Rich Text Editor</b> für den E-Mail-Text, inklusive Platzhalter für Daten "
707
+ "aus der Bestellung (Name, Auftragssumme, etc.)"
708
 
709
  #: includes/views/wcpdf-extensions.php:77
710
  msgid ""
711
  "Configure the exact requirements for sending an email (time after order, "
712
  "order status, payment method)"
713
  msgstr ""
714
+ "Konfigurieren Sie die genauen Voraussetzungen für das Versenden einer E-Mail "
715
+ "(Zeit nach der Bestellung, Bestellstatus, Zahlungsweise)."
716
 
717
  #: includes/views/wcpdf-extensions.php:78
718
  msgid ""
719
  "Fully <b>WPML Compatible</b> – emails will be automatically sent in the "
720
  "order language."
721
  msgstr ""
722
+ "Vollständig <b>WPML-kompatibel</b> - E-Mails werden automatisch in der "
723
+ "Bestellsprache versendet."
724
 
725
  #: includes/views/wcpdf-extensions.php:79
726
  msgid ""
727
  "<b>Super versatile!</b> Can be used for any kind of reminder email (review "
728
  "reminders, repeat purchases)"
729
  msgstr ""
730
+ "<b>Super vielseitig einsetzbar!</b> Kann für jede Art von Erinnerungs-E-Mail "
731
+ "verwendet werden (Wiederholungserinnerungen, Wiederholungskäufe"
732
 
733
  #: includes/views/wcpdf-extensions.php:80
734
  msgid "Integrates seamlessly with the PDF Invoices & Packing Slips plugin"
735
  msgstr ""
736
+ "Lässt sich nahtlos in das Plugin PDF Invoices & Packing Slips integrieren."
737
 
738
  #: includes/views/wcpdf-extensions.php:82
739
  msgid "Get WooCommerce Smart Reminder Emails"
740
+ msgstr "WooCommerce Smart Reminder EMails ordern"
741
 
742
  #: includes/views/wcpdf-extensions.php:91
743
  msgid "Upload all invoices automatically to your dropbox"
779
 
780
  #: includes/views/wcpdf-extensions.php:146
781
  msgid "Hide this message"
782
+ msgstr "Diese Nachricht ausblenden"
783
 
784
  #: includes/views/wcpdf-settings-page.php:8
785
  msgid "WooCommerce PDF Invoices"
849
  msgid "Shipping Method:"
850
  msgstr "Versandart:"
851
 
852
+ #: woocommerce-pdf-invoices-packingslips.php:229
853
  #, php-format
854
  msgid ""
855
  "WooCommerce PDF Invoices & Packing Slips requires %sWooCommerce%s to be "
858
  "WooCommerce PDF Invoices & Packing Slips benötigt %sWooCommerce%s "
859
  "installiert und aktiviert!"
860
 
861
+ #: woocommerce-pdf-invoices-packingslips.php:241
862
  msgid ""
863
  "WooCommerce PDF Invoices & Packing Slips requires PHP 5.3 or higher (5.6 or "
864
  "higher recommended)."
865
  msgstr ""
866
+ "WooCommerce PDF Invoices & Packing Slips erfordert PHP 5.3 oder höher (5.6 "
867
+ "oder höher empfohlen)."
868
 
869
+ #: woocommerce-pdf-invoices-packingslips.php:242
870
  msgid "How to update your PHP version"
871
+ msgstr "So aktualisieren Sie Ihre PHP-Version"
872
 
873
+ #~ msgid "Ewout Fernhout"
874
+ #~ msgstr "Ewout Fernhout"
875
 
876
  #~ msgid ""
877
+ #~ "Create, print & email PDF invoices & packing slips for WooCommerce orders."
 
 
 
 
878
  #~ msgstr ""
879
+ #~ "Erstelle, drucke & verschicke PDF Rechnungen & Lieferscheine per Email "
880
+ #~ "für WooCommerce Bestellungen."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
881
 
882
+ #~ msgid "http://www.wpovernight.com"
883
+ #~ msgstr "http://www.wpovernight.com"
884
 
885
+ #~ msgid "PDF Packing Slip"
886
+ #~ msgstr "PDF Lieferschein"
887
 
888
+ #~ msgid "PDF Invoice"
889
+ #~ msgstr "PDF Rechnung"
890
 
891
+ #~ msgid "PDF Packing Slips"
892
+ #~ msgstr "PDF Lieferscheine"
893
 
894
  #~ msgid ""
895
+ #~ "Before version 1.5 of PDF Invoices, temporary files were stored in the "
896
+ #~ "plugin folder. This setting is only intended for backwards compatibility, "
897
+ #~ "not recommended on new installs!"
898
  #~ msgstr ""
899
+ #~ "Vor Version 1.5 von PDF Invoices, wurden temporäre Dateien im Plugin-"
900
+ #~ "Ordner gespeichert. Diese Einstellung ist nur für die "
901
+ #~ "Abwärtskompatibilität bestimmt und wird nicht für Neuinstallationen "
902
+ #~ "empfohlen!"
903
 
904
+ #~ msgid "Use old tmp folder"
905
+ #~ msgstr "Alten tmp Ordner benutzen"
906
 
907
+ #~ msgid "Display built-in sequential invoice number"
908
+ #~ msgstr "Anzeige integrierte fortlaufende Rechnungsnummer"
909
 
910
+ #~ msgid "PDF Template settings"
911
+ #~ msgstr "PDF Vorlageneinstellungen"
912
 
913
+ #~ msgid "Interface"
914
+ #~ msgstr "Interface"
915
 
916
+ #~ msgid "Customer Invoice email"
917
+ #~ msgstr "Kunde Rechnung E-Mail"
918
 
919
+ #~ msgid "Customer Completed Order email"
920
+ #~ msgstr "Kunde Bestellung abgeschlossen E-Mail"
 
 
921
 
922
+ #~ msgid "Customer Processing Order email"
923
+ #~ msgstr "Kunde In Bearbeitung E-Mail"
924
 
925
+ #~ msgid "Template"
926
+ #~ msgstr "Vorlage"
 
 
 
 
languages/woocommerce-pdf-invoices-packing-slips-de_DE_formal.mo CHANGED
Binary file
languages/woocommerce-pdf-invoices-packing-slips-de_DE_formal.po CHANGED
@@ -1,15 +1,15 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce PDF Invoices & Packing Slips\n"
4
- "POT-Creation-Date: 2017-06-09 16:37+0200\n"
5
- "PO-Revision-Date: 2017-06-09 16:37+0200\n"
6
- "Last-Translator: Jens Nachtigall <mail@nachtigall.io>\n"
7
  "Language-Team: PROnatur24 <info@pronatur24.eu>\n"
8
  "Language: de_DE\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.8.12\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
@@ -26,7 +26,7 @@ msgstr "PDF erstellen"
26
 
27
  #: includes/class-wcpdf-admin.php:115
28
  msgid "PDF Invoice data"
29
- msgstr ""
30
 
31
  #: includes/class-wcpdf-admin.php:166
32
  #: includes/documents/class-wcpdf-invoice.php:32
@@ -43,11 +43,11 @@ msgstr "Rechnungsdatum:"
43
 
44
  #: includes/class-wcpdf-admin.php:189
45
  msgid "Set invoice number & date"
46
- msgstr ""
47
 
48
  #: includes/class-wcpdf-admin.php:196
49
  msgid "Invoice Number (unformatted!)"
50
- msgstr ""
51
 
52
  #: includes/class-wcpdf-admin.php:206 includes/class-wcpdf-admin.php:208
53
  msgid "h"
@@ -68,13 +68,15 @@ msgstr "Du hast keine Berechtigung diese Seite anzuzeigen."
68
 
69
  #: includes/class-wcpdf-main.php:141
70
  msgid "Some of the export parameters are missing."
71
- msgstr ""
72
 
73
  #: includes/class-wcpdf-settings-callbacks.php:27
74
  msgid ""
75
  "<b>Warning!</b> The settings below are meant for debugging/development only. "
76
  "Do not use them on a live website!"
77
  msgstr ""
 
 
78
 
79
  #: includes/class-wcpdf-settings-callbacks.php:36
80
  msgid ""
@@ -92,51 +94,58 @@ msgstr "Bildauflösung"
92
 
93
  #: includes/class-wcpdf-settings-callbacks.php:325
94
  msgid "Save"
95
- msgstr ""
96
 
97
  #: includes/class-wcpdf-settings-debug.php:34
98
  msgid "Debug settings"
99
- msgstr ""
100
 
101
  #: includes/class-wcpdf-settings-debug.php:40
102
  msgid "Legacy mode"
103
- msgstr ""
104
 
105
  #: includes/class-wcpdf-settings-debug.php:46
106
  msgid ""
107
  "Legacy mode ensures compatibility with templates and filters from previous "
108
  "versions."
109
  msgstr ""
 
 
110
 
111
  #: includes/class-wcpdf-settings-debug.php:52
112
  msgid "Enable debug output"
113
- msgstr ""
114
 
115
  #: includes/class-wcpdf-settings-debug.php:58
116
  msgid ""
117
  "Enable this option to output plugin errors if you're getting a blank page or "
118
  "other PDF generation issues"
119
  msgstr ""
 
 
120
 
121
  #: includes/class-wcpdf-settings-debug.php:64
122
  msgid "Output to HTML"
123
- msgstr ""
124
 
125
  #: includes/class-wcpdf-settings-debug.php:70
126
  msgid ""
127
  "Send the template output as HTML to the browser instead of creating a PDF."
128
  msgstr ""
 
129
 
130
  #: includes/class-wcpdf-settings-documents.php:29
131
  #: includes/class-wcpdf-settings.php:84
132
  msgid "Documents"
133
- msgstr ""
134
 
135
  #: includes/class-wcpdf-settings-documents.php:45
136
  msgid ""
137
  "All available documents are listed below. Click on a document to configure "
138
  "it."
139
  msgstr ""
 
 
140
 
141
  #: includes/class-wcpdf-settings-general.php:37
142
  msgid "General settings"
@@ -181,11 +190,13 @@ msgstr "Letter"
181
 
182
  #: includes/class-wcpdf-settings-general.php:86
183
  msgid "Extended currency symbol support"
184
- msgstr ""
185
 
186
  #: includes/class-wcpdf-settings-general.php:92
187
  msgid "Enable this if your currency symbol is not displaying properly"
188
  msgstr ""
 
 
189
 
190
  #: includes/class-wcpdf-settings-general.php:98
191
  msgid "Shop header/logo"
@@ -256,11 +267,11 @@ msgstr "Einstellungen"
256
 
257
  #: includes/class-wcpdf-settings.php:71
258
  msgid "Documentation"
259
- msgstr ""
260
 
261
  #: includes/class-wcpdf-settings.php:72
262
  msgid "Support Forum"
263
- msgstr ""
264
 
265
  #: includes/class-wcpdf-settings.php:83
266
  msgid "General"
@@ -272,7 +283,7 @@ msgstr "Status"
272
 
273
  #: includes/compatibility/class-wc-core-compatibility.php:222
274
  msgid "WooCommerce"
275
- msgstr ""
276
 
277
  #: includes/documents/abstract-wcpdf-order-document-methods.php:113
278
  #: includes/documents/abstract-wcpdf-order-document-methods.php:176
@@ -290,12 +301,12 @@ msgstr "Versandart"
290
  #: includes/documents/abstract-wcpdf-order-document-methods.php:669
291
  #, php-format
292
  msgid "(includes %s)"
293
- msgstr ""
294
 
295
  #: includes/documents/abstract-wcpdf-order-document-methods.php:672
296
  #, php-format
297
  msgid "(Includes %s)"
298
- msgstr ""
299
 
300
  #: includes/documents/abstract-wcpdf-order-document-methods.php:702
301
  msgid "Subtotal"
@@ -325,13 +336,13 @@ msgstr "Gesamtsumme ohne MwSt."
325
  msgid "Total"
326
  msgstr "Gesamtsumme"
327
 
328
- #: includes/documents/abstract-wcpdf-order-document.php:674
329
  msgid "Admin email"
330
- msgstr ""
331
 
332
- #: includes/documents/abstract-wcpdf-order-document.php:677
333
  msgid "Manual email"
334
- msgstr ""
335
 
336
  # This is a filename (prefix). do not use spaces or special characters!
337
  #: includes/documents/class-wcpdf-invoice.php:85
@@ -343,11 +354,11 @@ msgstr[1] "Rechnungen"
343
  #: includes/documents/class-wcpdf-invoice.php:130
344
  #: includes/documents/class-wcpdf-packing-slip.php:94
345
  msgid "Enable"
346
- msgstr ""
347
 
348
  #: includes/documents/class-wcpdf-invoice.php:141
349
  msgid "Attach to:"
350
- msgstr ""
351
 
352
  #: includes/documents/class-wcpdf-invoice.php:148
353
  #, php-format
@@ -362,23 +373,25 @@ msgstr ""
362
 
363
  #: includes/documents/class-wcpdf-invoice.php:154
364
  msgid "Display shipping address"
365
- msgstr ""
366
 
367
  #: includes/documents/class-wcpdf-invoice.php:160
368
  msgid ""
369
  "Display shipping address (in addition to the default billing address) if "
370
  "different from billing address"
371
  msgstr ""
 
 
372
 
373
  #: includes/documents/class-wcpdf-invoice.php:166
374
  #: includes/documents/class-wcpdf-packing-slip.php:117
375
  msgid "Display email address"
376
- msgstr ""
377
 
378
  #: includes/documents/class-wcpdf-invoice.php:177
379
  #: includes/documents/class-wcpdf-packing-slip.php:128
380
  msgid "Display phone number"
381
- msgstr ""
382
 
383
  #: includes/documents/class-wcpdf-invoice.php:188
384
  msgid "Display invoice date"
@@ -386,7 +399,7 @@ msgstr "Rechnungsdatum anzeigen"
386
 
387
  #: includes/documents/class-wcpdf-invoice.php:200
388
  msgid "Display invoice number"
389
- msgstr ""
390
 
391
  #: includes/documents/class-wcpdf-invoice.php:212
392
  msgid "Next invoice number (without prefix/suffix etc.)"
@@ -399,10 +412,14 @@ msgid ""
399
  "you override this and set it lower than the current/highest number, this "
400
  "could create duplicate numbers!"
401
  msgstr ""
 
 
 
 
402
 
403
  #: includes/documents/class-wcpdf-invoice.php:224
404
  msgid "Number format"
405
- msgstr ""
406
 
407
  #: includes/documents/class-wcpdf-invoice.php:232
408
  msgid "Prefix"
@@ -413,6 +430,8 @@ msgid ""
413
  "to use the invoice year and/or month, use [invoice_year] or [invoice_month] "
414
  "respectively"
415
  msgstr ""
 
 
416
 
417
  #: includes/documents/class-wcpdf-invoice.php:237
418
  msgid "Suffix"
@@ -438,27 +457,27 @@ msgstr ""
438
 
439
  #: includes/documents/class-wcpdf-invoice.php:254
440
  msgid "Reset invoice number yearly"
441
- msgstr ""
442
 
443
  #: includes/documents/class-wcpdf-invoice.php:265
444
  msgid "Allow My Account invoice download"
445
- msgstr ""
446
 
447
  #: includes/documents/class-wcpdf-invoice.php:272
448
  msgid "Only when an invoice is already created/emailed"
449
- msgstr ""
450
 
451
  #: includes/documents/class-wcpdf-invoice.php:273
452
  msgid "Only for specific order statuses (define below)"
453
- msgstr ""
454
 
455
  #: includes/documents/class-wcpdf-invoice.php:274
456
  msgid "Always"
457
- msgstr ""
458
 
459
  #: includes/documents/class-wcpdf-invoice.php:275
460
  msgid "Never"
461
- msgstr ""
462
 
463
  #: includes/documents/class-wcpdf-invoice.php:290
464
  msgid "Enable invoice number column in the orders list"
@@ -466,21 +485,24 @@ msgstr "Aktivierung Spalte Rechnungsnummer in Bestellübersicht"
466
 
467
  #: includes/documents/class-wcpdf-invoice.php:301
468
  msgid "Disable for free products"
469
- msgstr ""
470
 
471
  #: includes/documents/class-wcpdf-invoice.php:307
472
  msgid ""
473
  "Disable automatic creation/attachment when only free products are ordered"
474
  msgstr ""
 
 
475
 
476
  #: includes/documents/class-wcpdf-invoice.php:321
477
  msgid "Invoice numbers are created by a third-party extension."
478
  msgstr ""
 
479
 
480
  #: includes/documents/class-wcpdf-invoice.php:323
481
  #, php-format
482
  msgid "Configure it <a href=\"%s\">here</a>."
483
- msgstr ""
484
 
485
  #: includes/documents/class-wcpdf-packing-slip.php:32
486
  #: includes/documents/class-wcpdf-packing-slip.php:41
@@ -498,17 +520,36 @@ msgstr[1] "Lieferscheine"
498
 
499
  #: includes/documents/class-wcpdf-packing-slip.php:105
500
  msgid "Display billing address"
501
- msgstr ""
502
 
503
  #: includes/documents/class-wcpdf-packing-slip.php:111
504
  msgid ""
505
  "Display billing address (in addition to the default shipping address) if "
506
  "different from shipping address"
507
  msgstr ""
 
 
508
 
509
  #: includes/legacy/class-wcpdf-legacy-document.php:32
510
  msgid "Legacy Document"
 
 
 
 
 
 
 
 
 
 
511
  msgstr ""
 
 
 
 
 
 
 
512
 
513
  #: includes/views/wcpdf-extensions.php:15
514
  msgid "Check out these premium extensions!"
@@ -523,16 +564,20 @@ msgid ""
523
  "Premium PDF Invoice bundle: Everything you need for a perfect invoicing "
524
  "system"
525
  msgstr ""
 
 
526
 
527
  #: includes/views/wcpdf-extensions.php:23
528
  msgid ""
529
  "Supercharge WooCommerce PDF Invoices & Packing Slips with the all our "
530
  "premium extensions:"
531
  msgstr ""
 
 
532
 
533
  #: includes/views/wcpdf-extensions.php:24
534
  msgid "Professional features:"
535
- msgstr ""
536
 
537
  #: includes/views/wcpdf-extensions.php:26
538
  #: includes/views/wcpdf-extensions.php:56
@@ -545,6 +590,8 @@ msgid ""
545
  "Send out a separate <b>notification email</b> with (or without) PDF invoices/"
546
  "packing slips, for example to a drop-shipper or a supplier."
547
  msgstr ""
 
 
548
 
549
  #: includes/views/wcpdf-extensions.php:28
550
  #: includes/views/wcpdf-extensions.php:58
@@ -552,6 +599,8 @@ msgid ""
552
  "Attach <b>up to 3 static files</b> (for example a terms & conditions "
553
  "document) to the WooCommerce emails of your choice."
554
  msgstr ""
 
 
555
 
556
  #: includes/views/wcpdf-extensions.php:29
557
  #: includes/views/wcpdf-extensions.php:59
@@ -559,9 +608,9 @@ msgid ""
559
  "Use <b>separate numbering systems</b> and/or format for proforma invoices "
560
  "and credit notes or utilize the main invoice numbering system"
561
  msgstr ""
562
- "Anwendung <b>separates Nummerierungssystem</b> und/oder Format für Proforma "
563
- "Rechnungen und Gutschriften oder Änderung am Hauptsystem der "
564
- "Rechnungsnummerierung"
565
 
566
  #: includes/views/wcpdf-extensions.php:30
567
  #: includes/views/wcpdf-extensions.php:60
@@ -582,7 +631,7 @@ msgstr "Nutzung vom Plugin für Multisprachen <b>WPML</b> Einrichtungen"
582
  #: includes/views/wcpdf-extensions.php:33
583
  #: includes/views/wcpdf-extensions.php:131
584
  msgid "Advanced, customizable templates"
585
- msgstr ""
586
 
587
  #: includes/views/wcpdf-extensions.php:35
588
  #: includes/views/wcpdf-extensions.php:134
@@ -590,15 +639,17 @@ msgid ""
590
  "Completely customize the invoice contents (prices, taxes, thumbnails) to "
591
  "your needs with a drag & drop customizer"
592
  msgstr ""
 
 
593
 
594
  #: includes/views/wcpdf-extensions.php:36
595
  #: includes/views/wcpdf-extensions.php:135
596
  msgid "Two extra stylish premade templates (Modern & Business)"
597
- msgstr ""
598
 
599
  #: includes/views/wcpdf-extensions.php:38
600
  msgid "Upload automatically to dropbox"
601
- msgstr ""
602
 
603
  #: includes/views/wcpdf-extensions.php:40
604
  #: includes/views/wcpdf-extensions.php:97
@@ -614,7 +665,7 @@ msgstr ""
614
 
615
  #: includes/views/wcpdf-extensions.php:43
616
  msgid "Get WooCommerce PDF Invoices & Packing Slips Bundle"
617
- msgstr ""
618
 
619
  #: includes/views/wcpdf-extensions.php:52
620
  msgid "Go Pro: Proforma invoices, credit notes (=refunds) & more!"
@@ -633,47 +684,56 @@ msgstr "Hole WooCommerce PDF Invoices & Packing Slips Professional!"
633
 
634
  #: includes/views/wcpdf-extensions.php:71
635
  msgid "Automatically send payment reminders to your customers"
636
- msgstr ""
637
 
638
  #: includes/views/wcpdf-extensions.php:73
639
  msgid "WooCommerce Smart Reminder emails"
640
- msgstr ""
641
 
642
  #: includes/views/wcpdf-extensions.php:75
643
  msgid "<b>Completely automatic</b> scheduled emails"
644
- msgstr ""
645
 
646
  #: includes/views/wcpdf-extensions.php:76
647
  msgid ""
648
  "<b>Rich text editor</b> for the email text, including placeholders for data "
649
  "from the order (name, order total, etc)"
650
  msgstr ""
 
 
651
 
652
  #: includes/views/wcpdf-extensions.php:77
653
  msgid ""
654
  "Configure the exact requirements for sending an email (time after order, "
655
  "order status, payment method)"
656
  msgstr ""
 
 
657
 
658
  #: includes/views/wcpdf-extensions.php:78
659
  msgid ""
660
  "Fully <b>WPML Compatible</b> – emails will be automatically sent in the "
661
  "order language."
662
  msgstr ""
 
 
663
 
664
  #: includes/views/wcpdf-extensions.php:79
665
  msgid ""
666
  "<b>Super versatile!</b> Can be used for any kind of reminder email (review "
667
  "reminders, repeat purchases)"
668
  msgstr ""
 
 
669
 
670
  #: includes/views/wcpdf-extensions.php:80
671
  msgid "Integrates seamlessly with the PDF Invoices & Packing Slips plugin"
672
  msgstr ""
 
673
 
674
  #: includes/views/wcpdf-extensions.php:82
675
  msgid "Get WooCommerce Smart Reminder Emails"
676
- msgstr ""
677
 
678
  #: includes/views/wcpdf-extensions.php:91
679
  msgid "Upload all invoices automatically to your dropbox"
@@ -715,7 +775,7 @@ msgstr "Für individuelle Vorlagen kontaktiert uns auf %s."
715
 
716
  #: includes/views/wcpdf-extensions.php:146
717
  msgid "Hide this message"
718
- msgstr ""
719
 
720
  #: includes/views/wcpdf-settings-page.php:8
721
  msgid "WooCommerce PDF Invoices"
@@ -785,7 +845,7 @@ msgstr "Lieferadresse:"
785
  msgid "Shipping Method:"
786
  msgstr "Versandart:"
787
 
788
- #: woocommerce-pdf-invoices-packingslips.php:231
789
  #, php-format
790
  msgid ""
791
  "WooCommerce PDF Invoices & Packing Slips requires %sWooCommerce%s to be "
@@ -794,15 +854,17 @@ msgstr ""
794
  "WooCommerce PDF Invoices & Packing Slips benötigt %sWooCommerce%s "
795
  "installiert und aktiviert!"
796
 
797
- #: woocommerce-pdf-invoices-packingslips.php:243
798
  msgid ""
799
  "WooCommerce PDF Invoices & Packing Slips requires PHP 5.3 or higher (5.6 or "
800
  "higher recommended)."
801
  msgstr ""
 
 
802
 
803
- #: woocommerce-pdf-invoices-packingslips.php:244
804
  msgid "How to update your PHP version"
805
- msgstr ""
806
 
807
  #~ msgid "Attach invoice to:"
808
  #~ msgstr "Rechnung anfügen zu:"
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce PDF Invoices & Packing Slips\n"
4
+ "POT-Creation-Date: 2017-06-13 13:13+0200\n"
5
+ "PO-Revision-Date: 2018-02-06 13:05+0100\n"
6
+ "Last-Translator: Thomas Bunte <thomas@bunte-tk.de>\n"
7
  "Language-Team: PROnatur24 <info@pronatur24.eu>\n"
8
  "Language: de_DE\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.0.6\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
26
 
27
  #: includes/class-wcpdf-admin.php:115
28
  msgid "PDF Invoice data"
29
+ msgstr "PDF Rechnungs Daten"
30
 
31
  #: includes/class-wcpdf-admin.php:166
32
  #: includes/documents/class-wcpdf-invoice.php:32
43
 
44
  #: includes/class-wcpdf-admin.php:189
45
  msgid "Set invoice number & date"
46
+ msgstr "Erstellen Sie Rechnungsnummer und Rechnungsdatum"
47
 
48
  #: includes/class-wcpdf-admin.php:196
49
  msgid "Invoice Number (unformatted!)"
50
+ msgstr "Rechnungsnummer (unformatiert!)"
51
 
52
  #: includes/class-wcpdf-admin.php:206 includes/class-wcpdf-admin.php:208
53
  msgid "h"
68
 
69
  #: includes/class-wcpdf-main.php:141
70
  msgid "Some of the export parameters are missing."
71
+ msgstr "Einige der Exportparameter fehlen."
72
 
73
  #: includes/class-wcpdf-settings-callbacks.php:27
74
  msgid ""
75
  "<b>Warning!</b> The settings below are meant for debugging/development only. "
76
  "Do not use them on a live website!"
77
  msgstr ""
78
+ "<b>Achtung:</b> Die folgenden Einstellungen sind nur für die Fehlersuche / "
79
+ "Entwicklung gedacht. Verwenden Sie sie nicht auf einer Live-Website!"
80
 
81
  #: includes/class-wcpdf-settings-callbacks.php:36
82
  msgid ""
94
 
95
  #: includes/class-wcpdf-settings-callbacks.php:325
96
  msgid "Save"
97
+ msgstr "Speichern"
98
 
99
  #: includes/class-wcpdf-settings-debug.php:34
100
  msgid "Debug settings"
101
+ msgstr "Debug Einstellungen"
102
 
103
  #: includes/class-wcpdf-settings-debug.php:40
104
  msgid "Legacy mode"
105
+ msgstr "Legacy mode"
106
 
107
  #: includes/class-wcpdf-settings-debug.php:46
108
  msgid ""
109
  "Legacy mode ensures compatibility with templates and filters from previous "
110
  "versions."
111
  msgstr ""
112
+ "Der Legacy-Modus sorgt für Kompatibilität mit Vorlagen und Filtern aus "
113
+ "früheren Versionen."
114
 
115
  #: includes/class-wcpdf-settings-debug.php:52
116
  msgid "Enable debug output"
117
+ msgstr "Debug-Ausgabe aktivieren"
118
 
119
  #: includes/class-wcpdf-settings-debug.php:58
120
  msgid ""
121
  "Enable this option to output plugin errors if you're getting a blank page or "
122
  "other PDF generation issues"
123
  msgstr ""
124
+ "Aktivieren Sie diese Option um Plugin-Fehler auszugeben, wenn Sie eine leere "
125
+ "Seite oder andere PDF-Generierung-Probleme bekommen"
126
 
127
  #: includes/class-wcpdf-settings-debug.php:64
128
  msgid "Output to HTML"
129
+ msgstr "HTML-Ausgabe"
130
 
131
  #: includes/class-wcpdf-settings-debug.php:70
132
  msgid ""
133
  "Send the template output as HTML to the browser instead of creating a PDF."
134
  msgstr ""
135
+ "Senden die Ausgabe als HTML an einen Browser, anstatt ein PDF zu erstellen."
136
 
137
  #: includes/class-wcpdf-settings-documents.php:29
138
  #: includes/class-wcpdf-settings.php:84
139
  msgid "Documents"
140
+ msgstr "Dokumente"
141
 
142
  #: includes/class-wcpdf-settings-documents.php:45
143
  msgid ""
144
  "All available documents are listed below. Click on a document to configure "
145
  "it."
146
  msgstr ""
147
+ "Alle verfügbaren Dokumente sind unten aufgeführt. Klicken Sie auf ein "
148
+ "Dokument, um es zu konfigurieren."
149
 
150
  #: includes/class-wcpdf-settings-general.php:37
151
  msgid "General settings"
190
 
191
  #: includes/class-wcpdf-settings-general.php:86
192
  msgid "Extended currency symbol support"
193
+ msgstr "Support für erweiterte Währungs Zeichen"
194
 
195
  #: includes/class-wcpdf-settings-general.php:92
196
  msgid "Enable this if your currency symbol is not displaying properly"
197
  msgstr ""
198
+ "Aktivieren Sie diese Option, wenn Ihre Währungssymbol nicht korrekt "
199
+ "ausgespielt wird."
200
 
201
  #: includes/class-wcpdf-settings-general.php:98
202
  msgid "Shop header/logo"
267
 
268
  #: includes/class-wcpdf-settings.php:71
269
  msgid "Documentation"
270
+ msgstr "Dokumentation"
271
 
272
  #: includes/class-wcpdf-settings.php:72
273
  msgid "Support Forum"
274
+ msgstr "Support Forum"
275
 
276
  #: includes/class-wcpdf-settings.php:83
277
  msgid "General"
283
 
284
  #: includes/compatibility/class-wc-core-compatibility.php:222
285
  msgid "WooCommerce"
286
+ msgstr "WooCommerce"
287
 
288
  #: includes/documents/abstract-wcpdf-order-document-methods.php:113
289
  #: includes/documents/abstract-wcpdf-order-document-methods.php:176
301
  #: includes/documents/abstract-wcpdf-order-document-methods.php:669
302
  #, php-format
303
  msgid "(includes %s)"
304
+ msgstr "(enthält %s)"
305
 
306
  #: includes/documents/abstract-wcpdf-order-document-methods.php:672
307
  #, php-format
308
  msgid "(Includes %s)"
309
+ msgstr "(Enthält %s)"
310
 
311
  #: includes/documents/abstract-wcpdf-order-document-methods.php:702
312
  msgid "Subtotal"
336
  msgid "Total"
337
  msgstr "Gesamtsumme"
338
 
339
+ #: includes/documents/abstract-wcpdf-order-document.php:679
340
  msgid "Admin email"
341
+ msgstr "Admin E-Mail"
342
 
343
+ #: includes/documents/abstract-wcpdf-order-document.php:682
344
  msgid "Manual email"
345
+ msgstr "Manuelle E-Mail"
346
 
347
  # This is a filename (prefix). do not use spaces or special characters!
348
  #: includes/documents/class-wcpdf-invoice.php:85
354
  #: includes/documents/class-wcpdf-invoice.php:130
355
  #: includes/documents/class-wcpdf-packing-slip.php:94
356
  msgid "Enable"
357
+ msgstr "Aktivieren"
358
 
359
  #: includes/documents/class-wcpdf-invoice.php:141
360
  msgid "Attach to:"
361
+ msgstr "Anhängen an"
362
 
363
  #: includes/documents/class-wcpdf-invoice.php:148
364
  #, php-format
373
 
374
  #: includes/documents/class-wcpdf-invoice.php:154
375
  msgid "Display shipping address"
376
+ msgstr "Lieferadresse anzeigen"
377
 
378
  #: includes/documents/class-wcpdf-invoice.php:160
379
  msgid ""
380
  "Display shipping address (in addition to the default billing address) if "
381
  "different from billing address"
382
  msgstr ""
383
+ "Zeigt die Lieferadresse auf der Rechnung (zusätzlich zu den Standard-"
384
+ "Rechnungsadresse), falls abweichend von Rechnungsadresse"
385
 
386
  #: includes/documents/class-wcpdf-invoice.php:166
387
  #: includes/documents/class-wcpdf-packing-slip.php:117
388
  msgid "Display email address"
389
+ msgstr "E-Mail-Adresse anzeigen"
390
 
391
  #: includes/documents/class-wcpdf-invoice.php:177
392
  #: includes/documents/class-wcpdf-packing-slip.php:128
393
  msgid "Display phone number"
394
+ msgstr "Telefonnummer anzeigen"
395
 
396
  #: includes/documents/class-wcpdf-invoice.php:188
397
  msgid "Display invoice date"
399
 
400
  #: includes/documents/class-wcpdf-invoice.php:200
401
  msgid "Display invoice number"
402
+ msgstr "Rechnungsnummer anzeigen"
403
 
404
  #: includes/documents/class-wcpdf-invoice.php:212
405
  msgid "Next invoice number (without prefix/suffix etc.)"
412
  "you override this and set it lower than the current/highest number, this "
413
  "could create duplicate numbers!"
414
  msgstr ""
415
+ "Dies ist die Nummer, die für das nächste Dokument verwendet wird. "
416
+ "Standardmäßig beginnt die Nummerierung bei 1 und erhöht sich mit jedem neuen "
417
+ "Dokument. Beachten Sie, dass, wenn Sie dies überschreiben und es niedriger "
418
+ "als die aktuelle/höchste Zahl setzen, dies zu doppelten Zahlen führen kann!"
419
 
420
  #: includes/documents/class-wcpdf-invoice.php:224
421
  msgid "Number format"
422
+ msgstr "Nummernformat"
423
 
424
  #: includes/documents/class-wcpdf-invoice.php:232
425
  msgid "Prefix"
430
  "to use the invoice year and/or month, use [invoice_year] or [invoice_month] "
431
  "respectively"
432
  msgstr ""
433
+ "Um das Rechnungsjahr bzw. den Rechnungsmonat zu verwenden, verwenden Sie "
434
+ "[invoice_year] bzw.[invoice_month]."
435
 
436
  #: includes/documents/class-wcpdf-invoice.php:237
437
  msgid "Suffix"
457
 
458
  #: includes/documents/class-wcpdf-invoice.php:254
459
  msgid "Reset invoice number yearly"
460
+ msgstr "Rechnungsnummer jährlich zurücksetzen"
461
 
462
  #: includes/documents/class-wcpdf-invoice.php:265
463
  msgid "Allow My Account invoice download"
464
+ msgstr "Erlauben Sie den Download der Rechnung im Kunden-Konto"
465
 
466
  #: includes/documents/class-wcpdf-invoice.php:272
467
  msgid "Only when an invoice is already created/emailed"
468
+ msgstr "Nur wenn eine Rechnung bereits erstellt bzw. versendet wurde."
469
 
470
  #: includes/documents/class-wcpdf-invoice.php:273
471
  msgid "Only for specific order statuses (define below)"
472
+ msgstr "Nur für bestimmten Bestellstatus (Definition unten)"
473
 
474
  #: includes/documents/class-wcpdf-invoice.php:274
475
  msgid "Always"
476
+ msgstr "Immer"
477
 
478
  #: includes/documents/class-wcpdf-invoice.php:275
479
  msgid "Never"
480
+ msgstr "Niemals"
481
 
482
  #: includes/documents/class-wcpdf-invoice.php:290
483
  msgid "Enable invoice number column in the orders list"
485
 
486
  #: includes/documents/class-wcpdf-invoice.php:301
487
  msgid "Disable for free products"
488
+ msgstr "Für kostenlose Produkte deaktivieren"
489
 
490
  #: includes/documents/class-wcpdf-invoice.php:307
491
  msgid ""
492
  "Disable automatic creation/attachment when only free products are ordered"
493
  msgstr ""
494
+ "Deaktivieren Sie das automatische Erstellen/Anhängen, wenn nur kostenlose "
495
+ "Produkte bestellt werden."
496
 
497
  #: includes/documents/class-wcpdf-invoice.php:321
498
  msgid "Invoice numbers are created by a third-party extension."
499
  msgstr ""
500
+ "Rechnungsnummern entstehen durch eine Erweiterung eines Drittanbieters."
501
 
502
  #: includes/documents/class-wcpdf-invoice.php:323
503
  #, php-format
504
  msgid "Configure it <a href=\"%s\">here</a>."
505
+ msgstr "Konfigurieren Sie es <a href=\"%s\">hier</a>."
506
 
507
  #: includes/documents/class-wcpdf-packing-slip.php:32
508
  #: includes/documents/class-wcpdf-packing-slip.php:41
520
 
521
  #: includes/documents/class-wcpdf-packing-slip.php:105
522
  msgid "Display billing address"
523
+ msgstr "Rechnungsadresse anzeigen"
524
 
525
  #: includes/documents/class-wcpdf-packing-slip.php:111
526
  msgid ""
527
  "Display billing address (in addition to the default shipping address) if "
528
  "different from shipping address"
529
  msgstr ""
530
+ "Rechnungsadresse anzeigen (zusätzlich zur Standard-Lieferadresse), falls "
531
+ "abweichend von der Versandadresse"
532
 
533
  #: includes/legacy/class-wcpdf-legacy-document.php:32
534
  msgid "Legacy Document"
535
+ msgstr "Legacy Dokument"
536
+
537
+ #: includes/legacy/class-wcpdf-legacy.php:70
538
+ msgid "Error"
539
+ msgstr "Fehler"
540
+
541
+ #: includes/legacy/class-wcpdf-legacy.php:71
542
+ msgid ""
543
+ "An outdated template or action hook was used to generate the PDF. Legacy "
544
+ "mode has been activated, please try again by reloading this page."
545
  msgstr ""
546
+ "Ein veraltetes Template oder Action Hook wurde verwendet, um das PDF zu "
547
+ "erzeugen. Der Legacy-Modus wurde aktiviert, bitte versuchen Sie es erneut, "
548
+ "indem Sie diese Seite neu laden."
549
+
550
+ #: includes/legacy/class-wcpdf-legacy.php:74
551
+ msgid "The following function was called"
552
+ msgstr "Die folgende Funktion wurde aufgerufen"
553
 
554
  #: includes/views/wcpdf-extensions.php:15
555
  msgid "Check out these premium extensions!"
564
  "Premium PDF Invoice bundle: Everything you need for a perfect invoicing "
565
  "system"
566
  msgstr ""
567
+ "Premium PDF Invoice Bundle: Alles was Sie für ein perfektes "
568
+ "Abrechnungssystem benötigen"
569
 
570
  #: includes/views/wcpdf-extensions.php:23
571
  msgid ""
572
  "Supercharge WooCommerce PDF Invoices & Packing Slips with the all our "
573
  "premium extensions:"
574
  msgstr ""
575
+ "Verbessere WooCommerce PDF Invoices & Packing Slips mit diesen Premium-"
576
+ "Erweiterungen:"
577
 
578
  #: includes/views/wcpdf-extensions.php:24
579
  msgid "Professional features:"
580
+ msgstr "Professionelle Features:"
581
 
582
  #: includes/views/wcpdf-extensions.php:26
583
  #: includes/views/wcpdf-extensions.php:56
590
  "Send out a separate <b>notification email</b> with (or without) PDF invoices/"
591
  "packing slips, for example to a drop-shipper or a supplier."
592
  msgstr ""
593
+ "Senden Sie eine separate <b>Benachrichtigungs-E-Mail</b> mit (oder ohne) PDF-"
594
+ "Rechnungen/Packzettel, z.B. an einen Drop-Shipper oder Lieferanten."
595
 
596
  #: includes/views/wcpdf-extensions.php:28
597
  #: includes/views/wcpdf-extensions.php:58
599
  "Attach <b>up to 3 static files</b> (for example a terms & conditions "
600
  "document) to the WooCommerce emails of your choice."
601
  msgstr ""
602
+ "Hängen Sie <b>bis zu 3 statische Dateien</b> (z.B. ein AGB-Dokument) an die "
603
+ "WooCommerce-E-Mails Ihrer Wahl an."
604
 
605
  #: includes/views/wcpdf-extensions.php:29
606
  #: includes/views/wcpdf-extensions.php:59
608
  "Use <b>separate numbering systems</b> and/or format for proforma invoices "
609
  "and credit notes or utilize the main invoice numbering system"
610
  msgstr ""
611
+ "Wendet ein <b>separates Nummerierungssystem</b> und/oder Format für Proforma "
612
+ "Rechnungen und Gutschriften oder passt das Hauptsystem der "
613
+ "Rechnungsnummerierung an"
614
 
615
  #: includes/views/wcpdf-extensions.php:30
616
  #: includes/views/wcpdf-extensions.php:60
631
  #: includes/views/wcpdf-extensions.php:33
632
  #: includes/views/wcpdf-extensions.php:131
633
  msgid "Advanced, customizable templates"
634
+ msgstr "Erweiterte, anpassbare Vorlagen"
635
 
636
  #: includes/views/wcpdf-extensions.php:35
637
  #: includes/views/wcpdf-extensions.php:134
639
  "Completely customize the invoice contents (prices, taxes, thumbnails) to "
640
  "your needs with a drag & drop customizer"
641
  msgstr ""
642
+ "Passen Sie den Rechnungsinhalt (Preise, Steuern, Thumbnails) mit einem Drag "
643
+ "& Drop-Customizer vollständig an Ihre Bedürfnisse an."
644
 
645
  #: includes/views/wcpdf-extensions.php:36
646
  #: includes/views/wcpdf-extensions.php:135
647
  msgid "Two extra stylish premade templates (Modern & Business)"
648
+ msgstr "Zwei extra stylische vorgefertigte Templates (Modern & Business)"
649
 
650
  #: includes/views/wcpdf-extensions.php:38
651
  msgid "Upload automatically to dropbox"
652
+ msgstr "Automatischer Upload in die Dropbox"
653
 
654
  #: includes/views/wcpdf-extensions.php:40
655
  #: includes/views/wcpdf-extensions.php:97
665
 
666
  #: includes/views/wcpdf-extensions.php:43
667
  msgid "Get WooCommerce PDF Invoices & Packing Slips Bundle"
668
+ msgstr "WooCommerce PDF Invoices & Packing Slips ordern"
669
 
670
  #: includes/views/wcpdf-extensions.php:52
671
  msgid "Go Pro: Proforma invoices, credit notes (=refunds) & more!"
684
 
685
  #: includes/views/wcpdf-extensions.php:71
686
  msgid "Automatically send payment reminders to your customers"
687
+ msgstr "Automatisch Zahlungserinnerungen an Ihre Kunden senden"
688
 
689
  #: includes/views/wcpdf-extensions.php:73
690
  msgid "WooCommerce Smart Reminder emails"
691
+ msgstr "WooCommerce Smart Erinnerungsmails"
692
 
693
  #: includes/views/wcpdf-extensions.php:75
694
  msgid "<b>Completely automatic</b> scheduled emails"
695
+ msgstr "<b>Vollautomatische</b> geplant e-Mails"
696
 
697
  #: includes/views/wcpdf-extensions.php:76
698
  msgid ""
699
  "<b>Rich text editor</b> for the email text, including placeholders for data "
700
  "from the order (name, order total, etc)"
701
  msgstr ""
702
+ "<b>Rich Text Editor</b> für den E-Mail-Text, inklusive Platzhalter für Daten "
703
+ "aus der Bestellung (Name, Auftragssumme, etc.)"
704
 
705
  #: includes/views/wcpdf-extensions.php:77
706
  msgid ""
707
  "Configure the exact requirements for sending an email (time after order, "
708
  "order status, payment method)"
709
  msgstr ""
710
+ "Konfigurieren Sie die genauen Voraussetzungen für das Versenden einer E-Mail "
711
+ "(Zeit nach der Bestellung, Bestellstatus, Zahlungsweise)."
712
 
713
  #: includes/views/wcpdf-extensions.php:78
714
  msgid ""
715
  "Fully <b>WPML Compatible</b> – emails will be automatically sent in the "
716
  "order language."
717
  msgstr ""
718
+ "Vollständig <b>WPML-kompatibel</b> - E-Mails werden automatisch in der "
719
+ "Bestellsprache versendet."
720
 
721
  #: includes/views/wcpdf-extensions.php:79
722
  msgid ""
723
  "<b>Super versatile!</b> Can be used for any kind of reminder email (review "
724
  "reminders, repeat purchases)"
725
  msgstr ""
726
+ "<b>Super vielseitig einsetzbar!</b> Kann für jede Art von Erinnerungs-E-Mail "
727
+ "verwendet werden (Wiederholungserinnerungen, Wiederholungskäufe"
728
 
729
  #: includes/views/wcpdf-extensions.php:80
730
  msgid "Integrates seamlessly with the PDF Invoices & Packing Slips plugin"
731
  msgstr ""
732
+ "Lässt sich nahtlos in das Plugin PDF Invoices & Packing Slips integrieren."
733
 
734
  #: includes/views/wcpdf-extensions.php:82
735
  msgid "Get WooCommerce Smart Reminder Emails"
736
+ msgstr "WooCommerce Smart Erinnerungsmails ordern"
737
 
738
  #: includes/views/wcpdf-extensions.php:91
739
  msgid "Upload all invoices automatically to your dropbox"
775
 
776
  #: includes/views/wcpdf-extensions.php:146
777
  msgid "Hide this message"
778
+ msgstr "Diese Nachricht ausblenden"
779
 
780
  #: includes/views/wcpdf-settings-page.php:8
781
  msgid "WooCommerce PDF Invoices"
845
  msgid "Shipping Method:"
846
  msgstr "Versandart:"
847
 
848
+ #: woocommerce-pdf-invoices-packingslips.php:229
849
  #, php-format
850
  msgid ""
851
  "WooCommerce PDF Invoices & Packing Slips requires %sWooCommerce%s to be "
854
  "WooCommerce PDF Invoices & Packing Slips benötigt %sWooCommerce%s "
855
  "installiert und aktiviert!"
856
 
857
+ #: woocommerce-pdf-invoices-packingslips.php:241
858
  msgid ""
859
  "WooCommerce PDF Invoices & Packing Slips requires PHP 5.3 or higher (5.6 or "
860
  "higher recommended)."
861
  msgstr ""
862
+ "WooCommerce PDF Invoices & Packing Slips erfordert PHP 5.3 oder höher (5.6 "
863
+ "oder höher empfohlen)."
864
 
865
+ #: woocommerce-pdf-invoices-packingslips.php:242
866
  msgid "How to update your PHP version"
867
+ msgstr "So aktualisieren Sie Ihre PHP-Version"
868
 
869
  #~ msgid "Attach invoice to:"
870
  #~ msgstr "Rechnung anfügen zu:"
readme.txt CHANGED
@@ -1,234 +1,241 @@
1
- === WooCommerce PDF Invoices & Packing Slips ===
2
- Contributors: pomegranate
3
- Donate link: https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-bundle/
4
- Tags: woocommerce, pdf, invoices, packing slips, print, delivery notes, invoice, packing slip, export, email, bulk, automatic
5
- Requires at least: 3.5
6
- Tested up to: 4.9
7
- Requires PHP: 5.3
8
- Stable tag: 2.1.4
9
- License: GPLv2 or later
10
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
-
12
- Create, print & automatically email PDF invoices & packing slips for WooCommerce orders.
13
-
14
- == Description ==
15
-
16
- This WooCommerce extension automatically adds a PDF invoice to the order confirmation emails sent out to your customers. Includes a basic template (additional templates are available from [WP Overnight](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-premium-templates/)) as well as the possibility to modify/create your own templates. In addition, you can choose to download or print invoices and packing slips from the WooCommerce order admin.
17
-
18
- = Main features =
19
- * Automatically attach invoice PDF to WooCommerce emails of your choice
20
- * Download the PDF invoice / packing slip from the order admin page
21
- * Generate PDF invoices / packings slips in bulk
22
- * **Fully customizable** HTML/CSS invoice templates
23
- * Download invoices from the My Account page
24
- * Sequential invoice numbers - with custom formatting
25
- * **Available in: Czech, Dutch, English, Finnish, French, German, Hungarian, Italian, Japanese (see FAQ for adding custom fonts!), Norwegian, Polish, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish & Ukrainian**
26
-
27
- In addition to this, we offer several premium extensions:
28
-
29
- * Create/email PDF Proforma Invoices, Credit Notes (for Refunds), email Packing Slips & more with [WooCommerce PDF Invoices & Packing Slips Professional](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-professional/)
30
- * Upload all invoices automatically to Dropbox with [WooCommerce PDF Invoices & Packing Slips to Dropbox](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-dropbox/)
31
- * Automatically send new orders or packing slips to your printer, as soon as the customer orders! [WooCommerce Automatic Order Printing](https://www.simbahosting.co.uk/s3/product/woocommerce-automatic-order-printing/?affiliates=2) (from our partners at Simba Hosting)
32
- * More advanced & stylish templates with [WooCommerce PDF Invoices & Packing Slips Premium Templates](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-premium-templates/)
33
-
34
- = Fully customizable =
35
- In addition to a number of default settings (including a custom header/logo) and several layout fields that you can use out of the box, the plugin contains HTML/CSS based templates that allow for customization & full control over the PDF output. Copy the templates to your theme folder and you don't have to worry that your customizations will be overwritten when you update the plugin.
36
-
37
- * Insert customer header image/logo
38
- * Modify shop data / footer / disclaimer etc. on the invoices & packing slips
39
- * Select paper size (Letter or A4)
40
- * Translation ready
41
-
42
- == Installation ==
43
-
44
- = Minimum Requirements =
45
-
46
- * WooCommerce 2.2 or later
47
- * WordPress 3.5 or later
48
-
49
- = Automatic installation =
50
- Automatic installation is the easiest option as WordPress handles the file transfers itself and you don't even need to leave your web browser. To do an automatic install of WooCommerce PDF Invoices & Packing Slips, log in to your WordPress admin panel, navigate to the Plugins menu and click Add New.
51
-
52
- In the search field type "WooCommerce PDF Invoices & Packing Slips" and click Search Plugins. You can install it by simply clicking Install Now. After clicking that link you will be asked if you're sure you want to install the plugin. Click yes and WordPress will automatically complete the installation. After installation has finished, click the 'activate plugin' link.
53
-
54
- = Manual installation via the WordPress interface =
55
- 1. Download the plugin zip file to your computer
56
- 2. Go to the WordPress admin panel menu Plugins > Add New
57
- 3. Choose upload
58
- 4. Upload the plugin zip file, the plugin will now be installed
59
- 5. After installation has finished, click the 'activate plugin' link
60
-
61
- = Manual installation via FTP =
62
- 1. Download the plugin file to your computer and unzip it
63
- 2. Using an FTP program, or your hosting control panel, upload the unzipped plugin folder to your WordPress installation's wp-content/plugins/ directory.
64
- 3. Activate the plugin from the Plugins menu within the WordPress admin.
65
-
66
- == Frequently Asked Questions ==
67
-
68
- = Where can I find the documentation? =
69
-
70
- [WooCommerce PDF Invoices & Packing Slips documentation](http://docs.wpovernight.com/woocommerce-pdf-invoices-packing-slips/)
71
-
72
- = It's not working! =
73
-
74
- Check out our step by step diagnostic instructions here: https://wordpress.org/support/topic/read-this-first-9/
75
-
76
-
77
-
78
-
79
-
80
- = Where can I find more templates? =
81
-
82
- Go to [wpovernight.com](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-premium-templates/) to checkout more templates! These include templates with more tax details and product thumbnails. Need a custom templates? Contact us at support@wpovernight.com for more information.
83
-
84
- = Can I create/send a proforma invoice or a credit note? =
85
- This is a feature of our Professional extension, which can be found at [wpovernight.com](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-professional/)
86
-
87
- = Can I contribute to the code? =
88
- You're more than welcome! This plugin is hosted on github, where you can post issues or make pull requests.
89
- https://github.com/wpovernight/woocommerce-pdf-invoices-packing-slips
90
-
91
- = How can I display the HTML/CSS source for debugging/developing templates? =
92
- There's a setting on the Status tab of the settings page that allows you to toggle HTML output. Don't forget to turn if off after you're done testing!
93
-
94
-
95
- == Screenshots ==
96
-
97
- 1. Simple invoice PDF
98
- 2. Simple packing slip PDF
99
- 3. Quickly print individual invoices or packing slips from the order list
100
- 4. Print invoices or packing slips in bulk
101
- 5. Attach invoices to any WooCommerce email
102
- 6. Set shop name, address, header logo, etc.
103
-
104
- == Changelog ==
105
-
106
- = 2.1.4 =
107
- * Fix: WooCommerce 3.3 action buttons
108
- * Feature: Added row classes for WooCommerce Composite Products
109
-
110
- = 2.1.3 =
111
- * Fix: Fatal PHP error on My Account page.
112
-
113
- = 2.1.2 =
114
- * Feature: New action wpo_wcpdf_init_document
115
- * Fix: Use title getters for my-account and backend buttons
116
- * Fix: Legacy Premium Templates reference
117
- * Tweak: Skip documents overview in settings, default to invoice
118
-
119
- = 2.1.1 =
120
- * Fix: WooCommerce Order Status & Actions Manager emails compatibility
121
- * Feature: sort orders by invoice number column
122
- * Tweak: pass document object to title filters
123
- * Tweak: use title getter in template files (instead of title string)
124
-
125
- = 2.1.0 =
126
- * Feature: WooCommerce Order Status & Actions Manager emails compatibility
127
- * Fix: Better url fallback for images stored in cloud
128
- * Update: dompdf library updated to 0.8.2 - DOMDocument parser set to default again
129
-
130
- = 2.0.15 =
131
- * Fix: Prevent saving invoice number/date from order details page when not edited
132
-
133
- = 2.0.14 =
134
- * Feature: Manually resend specific order emails in WooCommerce 3.2+
135
- * Tweak: Show full size logo preview in settings
136
- * Tweak: Custom field fallback to underscore prefixed meta key
137
- * Dev: added `wpo_wcpdf_before_sequential_number_increment` action
138
-
139
- = 2.0.13 =
140
- * Fix: Minor XSS issue on settings screens by escaping and sanitizing 'tab' & 'section' GET variables. Discovered by Detectify.
141
- * Fix: Pakistani Rupee Symbol
142
- * Feature: Automatically enable extended currency symbol support for currencies not supported by Open Sans
143
- * Dev: added `wpo_wcpdf_document_number_settings` filter
144
-
145
- = 2.0.12 =
146
- * Option: Use different HTML parser (debug settings)
147
-
148
- = 2.0.11 =
149
- * Fix: Improved fonts update routine (now preserves custom fonts)
150
- * Fix: Enable HTML5 parser by default (fixes issues with libxml)
151
- * Tweak: Show both PHP & WP Memory limit in Status tab
152
-
153
- = 2.0.10 =
154
- * Fix: Set invoice number backend button
155
- * Fix: Thumbail paths
156
- * Tweak: Make dompdf options filterable
157
-
158
- = 2.0.9 =
159
- * Feature: use `[invoice_date="ymd"]` in invoice number prefix or suffix to include a specific date format in the invoice number
160
- * Fix: Postmeta table prefix for invoice counter
161
- * Fix: 0% tax rates
162
-
163
- = 2.0.8 =
164
- * Feature: Add support for Bedrock / alternative folder structures
165
- * Dev: Filter for merged documents
166
- * Fix: Better attributes fallback for product variations
167
-
168
- = 2.0.7 =
169
- * Feature: Added button to delete legacy settings
170
- * Feature: Option to enable font subsetting
171
- * Fix: Invoice number sequence for databases with alternative auto_increment_increment settings
172
- * Fix: Fallback function for MB String (mb_stripos)
173
-
174
- = 2.0.6 =
175
- * Feature: Improved third party invoice number filters (`wpo_wcpdf_external_invoice_number_enabled` & `wpo_wcpdf_external_invoice_number`)
176
- * Fix: Underline position for Open Sans font
177
- * Fix: Invoice number auto_increment for servers that restarted frequently
178
- * Fix: Dompdf log file location (preventing open base_dir notices breaking PDF header)
179
- * Fix: 1.6.6 Settings migration duplicates merging
180
- * Tweak: Clear fonts folder when manually reinstalling fonts
181
-
182
- = 2.0.5 =
183
- * Feature: Remove temporary files (Status tab)
184
- * Fix: Page number replacement
185
- * Tweak: Fallback functions for MB String extension
186
- * Tweak: Improved wpo_wcpdf_check_privs usability for my account privileges
187
- * Legacy support: added wc_price alias for format_price method in document
188
-
189
- = 2.0.4 =
190
- * Fix: Apply filters for custom invoice number formatting in document too
191
- * Fix: Parent fallback for missing dates from refunds
192
-
193
- = 2.0.3 =
194
- * Fix: Better support for legacy invoice number filter (`wpo_wcpdf_invoice_number` - replaced by `wpo_wcpdf_formatted_document_number`)
195
- * Fix: Document number formatting fallback to order date if no document date available
196
- * Fix: Updated classmap: PSR loading didn't work on some installations
197
- * Fix: Prevent order notes from all orders showing when document is not loaded properly in filter
198
- * Tweak: Disable deprecation notices during email sending
199
- * Tweak: ignore outdated language packs
200
-
201
- = 2.0.2 =
202
- * Fix: order notes using correct order_id
203
- * Fix: WC3.0 deprecation notice for currency
204
- * Fix: Avoid crashing on PHP5.2 and older
205
- * Fix: Only use PHP MB String when present
206
- * Fix: Remote images
207
- * Fix: Download option
208
-
209
- = 2.0.1 =
210
- * Fix: PHP 5.4 issue
211
-
212
- = 2.0.0 =
213
- * New: Better structured & more advanced settings for documents
214
- * New: Option to enable & disable Packing Slips or Invoices
215
- * New: Invoice number sequence stored separately for improved speed & performance
216
- * New: Completely rewritten codebase for more flexibility & better reliability
217
- * New: Updated PDF library to DOMPDF 0.8
218
- * New: PDF Library made pluggable (by using the `wpo_wcpdf_pdf_maker` filter)
219
- * New: lots of new functions & filters to allow developers to hook into the plugin
220
- * Changed: **$wpo_wcpdf variable is now deprecated** (legacy mode available & automatically enabled on update)
221
- * Fix: Improved PHP 7 & 7.1 support
222
- * Fix: Positive prices for refunds
223
- * Fix: Use parent for attributes retrieved for product variations
224
- * Fix: Set content type to PDF for download
225
-
226
- = 1.6.6 =
227
- * Feature: Facilitate downgrading from 2.0 (re-installing fonts & resetting version)
228
- * Fix: Update currencies font (added Georgian Lari)
229
- * Translations: Added Indonesian
230
-
231
- == Upgrade Notice ==
232
-
233
- = 2.1.4 =
 
 
 
 
 
 
 
234
  2.0 is a BIG update! Make a full site backup before upgrading!
1
+ === WooCommerce PDF Invoices & Packing Slips ===
2
+ Contributors: pomegranate
3
+ Donate link: https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-bundle/
4
+ Tags: woocommerce, pdf, invoices, packing slips, print, delivery notes, invoice, packing slip, export, email, bulk, automatic
5
+ Requires at least: 3.5
6
+ Tested up to: 4.9
7
+ Requires PHP: 5.3
8
+ Stable tag: 2.1.5
9
+ License: GPLv2 or later
10
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
+
12
+ Create, print & automatically email PDF invoices & packing slips for WooCommerce orders.
13
+
14
+ == Description ==
15
+
16
+ This WooCommerce extension automatically adds a PDF invoice to the order confirmation emails sent out to your customers. Includes a basic template (additional templates are available from [WP Overnight](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-premium-templates/)) as well as the possibility to modify/create your own templates. In addition, you can choose to download or print invoices and packing slips from the WooCommerce order admin.
17
+
18
+ = Main features =
19
+ * Automatically attach invoice PDF to WooCommerce emails of your choice
20
+ * Download the PDF invoice / packing slip from the order admin page
21
+ * Generate PDF invoices / packings slips in bulk
22
+ * **Fully customizable** HTML/CSS invoice templates
23
+ * Download invoices from the My Account page
24
+ * Sequential invoice numbers - with custom formatting
25
+ * **Available in: Czech, Dutch, English, Finnish, French, German, Hungarian, Italian, Japanese (see FAQ for adding custom fonts!), Norwegian, Polish, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish & Ukrainian**
26
+
27
+ In addition to this, we offer several premium extensions:
28
+
29
+ * Create/email PDF Proforma Invoices, Credit Notes (for Refunds), email Packing Slips & more with [WooCommerce PDF Invoices & Packing Slips Professional](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-professional/)
30
+ * Upload all invoices automatically to Dropbox with [WooCommerce PDF Invoices & Packing Slips to Dropbox](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-dropbox/)
31
+ * Automatically send new orders or packing slips to your printer, as soon as the customer orders! [WooCommerce Automatic Order Printing](https://www.simbahosting.co.uk/s3/product/woocommerce-automatic-order-printing/?affiliates=2) (from our partners at Simba Hosting)
32
+ * More advanced & stylish templates with [WooCommerce PDF Invoices & Packing Slips Premium Templates](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-premium-templates/)
33
+
34
+ = Fully customizable =
35
+ In addition to a number of default settings (including a custom header/logo) and several layout fields that you can use out of the box, the plugin contains HTML/CSS based templates that allow for customization & full control over the PDF output. Copy the templates to your theme folder and you don't have to worry that your customizations will be overwritten when you update the plugin.
36
+
37
+ * Insert customer header image/logo
38
+ * Modify shop data / footer / disclaimer etc. on the invoices & packing slips
39
+ * Select paper size (Letter or A4)
40
+ * Translation ready
41
+
42
+ == Installation ==
43
+
44
+ = Minimum Requirements =
45
+
46
+ * WooCommerce 2.2 or later
47
+ * WordPress 3.5 or later
48
+
49
+ = Automatic installation =
50
+ Automatic installation is the easiest option as WordPress handles the file transfers itself and you don't even need to leave your web browser. To do an automatic install of WooCommerce PDF Invoices & Packing Slips, log in to your WordPress admin panel, navigate to the Plugins menu and click Add New.
51
+
52
+ In the search field type "WooCommerce PDF Invoices & Packing Slips" and click Search Plugins. You can install it by simply clicking Install Now. After clicking that link you will be asked if you're sure you want to install the plugin. Click yes and WordPress will automatically complete the installation. After installation has finished, click the 'activate plugin' link.
53
+
54
+ = Manual installation via the WordPress interface =
55
+ 1. Download the plugin zip file to your computer
56
+ 2. Go to the WordPress admin panel menu Plugins > Add New
57
+ 3. Choose upload
58
+ 4. Upload the plugin zip file, the plugin will now be installed
59
+ 5. After installation has finished, click the 'activate plugin' link
60
+
61
+ = Manual installation via FTP =
62
+ 1. Download the plugin file to your computer and unzip it
63
+ 2. Using an FTP program, or your hosting control panel, upload the unzipped plugin folder to your WordPress installation's wp-content/plugins/ directory.
64
+ 3. Activate the plugin from the Plugins menu within the WordPress admin.
65
+
66
+ == Frequently Asked Questions ==
67
+
68
+ = Where can I find the documentation? =
69
+
70
+ [WooCommerce PDF Invoices & Packing Slips documentation](http://docs.wpovernight.com/woocommerce-pdf-invoices-packing-slips/)
71
+
72
+ = It's not working! =
73
+
74
+ Check out our step by step diagnostic instructions here: https://wordpress.org/support/topic/read-this-first-9/
75
+
76
+
77
+
78
+
79
+
80
+ = Where can I find more templates? =
81
+
82
+ Go to [wpovernight.com](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-premium-templates/) to checkout more templates! These include templates with more tax details and product thumbnails. Need a custom templates? Contact us at support@wpovernight.com for more information.
83
+
84
+ = Can I create/send a proforma invoice or a credit note? =
85
+ This is a feature of our Professional extension, which can be found at [wpovernight.com](https://wpovernight.com/downloads/woocommerce-pdf-invoices-packing-slips-professional/)
86
+
87
+ = Can I contribute to the code? =
88
+ You're more than welcome! This plugin is hosted on github, where you can post issues or make pull requests.
89
+ https://github.com/wpovernight/woocommerce-pdf-invoices-packing-slips
90
+
91
+ = How can I display the HTML/CSS source for debugging/developing templates? =
92
+ There's a setting on the Status tab of the settings page that allows you to toggle HTML output. Don't forget to turn if off after you're done testing!
93
+
94
+
95
+ == Screenshots ==
96
+
97
+ 1. Simple invoice PDF
98
+ 2. Simple packing slip PDF
99
+ 3. Quickly print individual invoices or packing slips from the order list
100
+ 4. Print invoices or packing slips in bulk
101
+ 5. Attach invoices to any WooCommerce email
102
+ 6. Set shop name, address, header logo, etc.
103
+
104
+ == Changelog ==
105
+
106
+
107
+ = 2.1.5 =
108
+ * Feature: Filter for number store table (wpo_wcpdf_number_store_table_name)
109
+ * Fix: prevent accessing order properties as custom field/order meta
110
+ * Fix: prevent wrong application of wpo_wcpdf_filename filter
111
+ * Fix: Improved tax rate calculation fallback
112
+
113
+ = 2.1.4 =
114
+ * Fix: WooCommerce 3.3 action buttons
115
+ * Feature: Added row classes for WooCommerce Composite Products
116
+
117
+ = 2.1.3 =
118
+ * Fix: Fatal PHP error on My Account page.
119
+
120
+ = 2.1.2 =
121
+ * Feature: New action wpo_wcpdf_init_document
122
+ * Fix: Use title getters for my-account and backend buttons
123
+ * Fix: Legacy Premium Templates reference
124
+ * Tweak: Skip documents overview in settings, default to invoice
125
+
126
+ = 2.1.1 =
127
+ * Fix: WooCommerce Order Status & Actions Manager emails compatibility
128
+ * Feature: sort orders by invoice number column
129
+ * Tweak: pass document object to title filters
130
+ * Tweak: use title getter in template files (instead of title string)
131
+
132
+ = 2.1.0 =
133
+ * Feature: WooCommerce Order Status & Actions Manager emails compatibility
134
+ * Fix: Better url fallback for images stored in cloud
135
+ * Update: dompdf library updated to 0.8.2 - DOMDocument parser set to default again
136
+
137
+ = 2.0.15 =
138
+ * Fix: Prevent saving invoice number/date from order details page when not edited
139
+
140
+ = 2.0.14 =
141
+ * Feature: Manually resend specific order emails in WooCommerce 3.2+
142
+ * Tweak: Show full size logo preview in settings
143
+ * Tweak: Custom field fallback to underscore prefixed meta key
144
+ * Dev: added `wpo_wcpdf_before_sequential_number_increment` action
145
+
146
+ = 2.0.13 =
147
+ * Fix: Minor XSS issue on settings screens by escaping and sanitizing 'tab' & 'section' GET variables. Discovered by Detectify.
148
+ * Fix: Pakistani Rupee Symbol
149
+ * Feature: Automatically enable extended currency symbol support for currencies not supported by Open Sans
150
+ * Dev: added `wpo_wcpdf_document_number_settings` filter
151
+
152
+ = 2.0.12 =
153
+ * Option: Use different HTML parser (debug settings)
154
+
155
+ = 2.0.11 =
156
+ * Fix: Improved fonts update routine (now preserves custom fonts)
157
+ * Fix: Enable HTML5 parser by default (fixes issues with libxml)
158
+ * Tweak: Show both PHP & WP Memory limit in Status tab
159
+
160
+ = 2.0.10 =
161
+ * Fix: Set invoice number backend button
162
+ * Fix: Thumbail paths
163
+ * Tweak: Make dompdf options filterable
164
+
165
+ = 2.0.9 =
166
+ * Feature: use `[invoice_date="ymd"]` in invoice number prefix or suffix to include a specific date format in the invoice number
167
+ * Fix: Postmeta table prefix for invoice counter
168
+ * Fix: 0% tax rates
169
+
170
+ = 2.0.8 =
171
+ * Feature: Add support for Bedrock / alternative folder structures
172
+ * Dev: Filter for merged documents
173
+ * Fix: Better attributes fallback for product variations
174
+
175
+ = 2.0.7 =
176
+ * Feature: Added button to delete legacy settings
177
+ * Feature: Option to enable font subsetting
178
+ * Fix: Invoice number sequence for databases with alternative auto_increment_increment settings
179
+ * Fix: Fallback function for MB String (mb_stripos)
180
+
181
+ = 2.0.6 =
182
+ * Feature: Improved third party invoice number filters (`wpo_wcpdf_external_invoice_number_enabled` & `wpo_wcpdf_external_invoice_number`)
183
+ * Fix: Underline position for Open Sans font
184
+ * Fix: Invoice number auto_increment for servers that restarted frequently
185
+ * Fix: Dompdf log file location (preventing open base_dir notices breaking PDF header)
186
+ * Fix: 1.6.6 Settings migration duplicates merging
187
+ * Tweak: Clear fonts folder when manually reinstalling fonts
188
+
189
+ = 2.0.5 =
190
+ * Feature: Remove temporary files (Status tab)
191
+ * Fix: Page number replacement
192
+ * Tweak: Fallback functions for MB String extension
193
+ * Tweak: Improved wpo_wcpdf_check_privs usability for my account privileges
194
+ * Legacy support: added wc_price alias for format_price method in document
195
+
196
+ = 2.0.4 =
197
+ * Fix: Apply filters for custom invoice number formatting in document too
198
+ * Fix: Parent fallback for missing dates from refunds
199
+
200
+ = 2.0.3 =
201
+ * Fix: Better support for legacy invoice number filter (`wpo_wcpdf_invoice_number` - replaced by `wpo_wcpdf_formatted_document_number`)
202
+ * Fix: Document number formatting fallback to order date if no document date available
203
+ * Fix: Updated classmap: PSR loading didn't work on some installations
204
+ * Fix: Prevent order notes from all orders showing when document is not loaded properly in filter
205
+ * Tweak: Disable deprecation notices during email sending
206
+ * Tweak: ignore outdated language packs
207
+
208
+ = 2.0.2 =
209
+ * Fix: order notes using correct order_id
210
+ * Fix: WC3.0 deprecation notice for currency
211
+ * Fix: Avoid crashing on PHP5.2 and older
212
+ * Fix: Only use PHP MB String when present
213
+ * Fix: Remote images
214
+ * Fix: Download option
215
+
216
+ = 2.0.1 =
217
+ * Fix: PHP 5.4 issue
218
+
219
+ = 2.0.0 =
220
+ * New: Better structured & more advanced settings for documents
221
+ * New: Option to enable & disable Packing Slips or Invoices
222
+ * New: Invoice number sequence stored separately for improved speed & performance
223
+ * New: Completely rewritten codebase for more flexibility & better reliability
224
+ * New: Updated PDF library to DOMPDF 0.8
225
+ * New: PDF Library made pluggable (by using the `wpo_wcpdf_pdf_maker` filter)
226
+ * New: lots of new functions & filters to allow developers to hook into the plugin
227
+ * Changed: **$wpo_wcpdf variable is now deprecated** (legacy mode available & automatically enabled on update)
228
+ * Fix: Improved PHP 7 & 7.1 support
229
+ * Fix: Positive prices for refunds
230
+ * Fix: Use parent for attributes retrieved for product variations
231
+ * Fix: Set content type to PDF for download
232
+
233
+ = 1.6.6 =
234
+ * Feature: Facilitate downgrading from 2.0 (re-installing fonts & resetting version)
235
+ * Fix: Update currencies font (added Georgian Lari)
236
+ * Translations: Added Indonesian
237
+
238
+ == Upgrade Notice ==
239
+
240
+ = 2.1.5 =
241
  2.0 is a BIG update! Make a full site backup before upgrading!
woocommerce-pdf-invoices-packingslips.php CHANGED
@@ -1,357 +1,357 @@
1
- <?php
2
- /**
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.4
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.3.0
14
- */
15
-
16
- if ( ! defined( 'ABSPATH' ) ) {
17
- exit; // Exit if accessed directly
18
- }
19
-
20
- if ( !class_exists( 'WPO_WCPDF' ) ) :
21
-
22
- class WPO_WCPDF {
23
-
24
- public $version = '2.1.4';
25
- public $plugin_basename;
26
- public $legacy_mode;
27
-
28
- protected static $_instance = null;
29
-
30
- /**
31
- * Main Plugin Instance
32
- *
33
- * Ensures only one instance of plugin is loaded or can be loaded.
34
- */
35
- public static function instance() {
36
- if ( is_null( self::$_instance ) ) {
37
- self::$_instance = new self();
38
- }
39
- return self::$_instance;
40
- }
41
-
42
- /**
43
- * Constructor
44
- */
45
- public function __construct() {
46
- $this->plugin_basename = plugin_basename(__FILE__);
47
-
48
- $this->define( 'WPO_WCPDF_VERSION', $this->version );
49
-
50
- // load the localisation & classes
51
- add_action( 'plugins_loaded', array( $this, 'translations' ) );
52
- add_filter( 'load_textdomain_mofile', array( $this, 'textdomain_fallback' ), 10, 2 );
53
- add_action( 'plugins_loaded', array( $this, 'load_classes' ), 9 );
54
- add_action( 'in_plugin_update_message-'.$this->plugin_basename, array( $this, 'in_plugin_update_message' ) );
55
- }
56
-
57
- /**
58
- * Define constant if not already set
59
- * @param string $name
60
- * @param string|bool $value
61
- */
62
- private function define( $name, $value ) {
63
- if ( ! defined( $name ) ) {
64
- define( $name, $value );
65
- }
66
- }
67
-
68
-
69
- /**
70
- * Load the translation / textdomain files
71
- *
72
- * Note: the first-loaded translation file overrides any following ones if the same translation is present
73
- */
74
- public function translations() {
75
- $locale = apply_filters( 'plugin_locale', get_locale(), 'woocommerce-pdf-invoices-packing-slips' );
76
- $dir = trailingslashit( WP_LANG_DIR );
77
-
78
- $textdomains = array( 'woocommerce-pdf-invoices-packing-slips' );
79
- if ( $this->legacy_mode_enabled() === true ) {
80
- $textdomains[] = 'wpo_wcpdf';
81
- }
82
-
83
- /**
84
- * Frontend/global Locale. Looks in:
85
- *
86
- * - WP_LANG_DIR/woocommerce-pdf-invoices-packing-slips/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
87
- * - WP_LANG_DIR/plugins/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
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' );
95
- }
96
- }
97
-
98
- /**
99
- * Maintain backwards compatibility with old translation files
100
- * Uses old .mo file if it exists in any of the override locations
101
- */
102
- public function textdomain_fallback( $mofile, $textdomain ) {
103
- $plugin_domain = 'woocommerce-pdf-invoices-packing-slips';
104
- $old_domain = 'wpo_wcpdf';
105
-
106
- if ($textdomain == $old_domain) {
107
- $textdomain = $plugin_domain;
108
- $mofile = str_replace( "{$old_domain}-", "{$textdomain}-", $mofile ); // with trailing dash to target file and not folder
109
- }
110
-
111
- if ( $textdomain === $plugin_domain ) {
112
- $old_mofile = str_replace( "{$textdomain}-", "{$old_domain}-", $mofile ); // with trailing dash to target file and not folder
113
- if ( file_exists( $old_mofile ) ) {
114
- // we have an old override - use it
115
- return $old_mofile;
116
- }
117
-
118
- // prevent loading outdated language packs
119
- $pofile = str_replace('.mo', '.po', $mofile);
120
- if ( file_exists( $pofile ) ) {
121
- // load po file
122
- $podata = file_get_contents($pofile);
123
- // set revision date threshold
124
- $block_before = strtotime( '2017-05-15' );
125
- // read revision date
126
- preg_match('~PO-Revision-Date: (.*?)\\\n~s',$podata,$matches);
127
- if (isset($matches[1])) {
128
- $revision_date = $matches[1];
129
- if ( $revision_timestamp = strtotime($revision_date) ) {
130
- // check if revision is before threshold date
131
- if ( $revision_timestamp < $block_before ) {
132
- // try bundled
133
- $bundled_file = $this->plugin_path() . '/languages/'. basename( $mofile );
134
- if (file_exists($bundled_file)) {
135
- return $bundled_file;
136
- } else {
137
- return '';
138
- }
139
- // delete po & mo file if possible
140
- // @unlink($pofile);
141
- // @unlink($mofile);
142
- }
143
- }
144
- }
145
- }
146
- }
147
-
148
- return $mofile;
149
- }
150
-
151
- /**
152
- * Load the main plugin classes and functions
153
- */
154
- public function includes() {
155
- // WooCommerce compatibility classes
156
- include_once( $this->plugin_path() . '/includes/compatibility/abstract-wc-data-compatibility.php' );
157
- include_once( $this->plugin_path() . '/includes/compatibility/class-wc-date-compatibility.php' );
158
- include_once( $this->plugin_path() . '/includes/compatibility/class-wc-core-compatibility.php' );
159
- include_once( $this->plugin_path() . '/includes/compatibility/class-wc-order-compatibility.php' );
160
- include_once( $this->plugin_path() . '/includes/compatibility/class-wc-product-compatibility.php' );
161
- include_once( $this->plugin_path() . '/includes/compatibility/wc-datetime-functions-compatibility.php' );
162
-
163
- // Third party compatibility
164
- include_once( $this->plugin_path() . '/includes/compatibility/class-wcpdf-compatibility-third-party-plugins.php' );
165
-
166
- // Plugin classes
167
- include_once( $this->plugin_path() . '/includes/wcpdf-functions.php' );
168
- $this->settings = include_once( $this->plugin_path() . '/includes/class-wcpdf-settings.php' );
169
- $this->documents = include_once( $this->plugin_path() . '/includes/class-wcpdf-documents.php' );
170
- $this->main = include_once( $this->plugin_path() . '/includes/class-wcpdf-main.php' );
171
- include_once( $this->plugin_path() . '/includes/class-wcpdf-assets.php' );
172
- include_once( $this->plugin_path() . '/includes/class-wcpdf-admin.php' );
173
- include_once( $this->plugin_path() . '/includes/class-wcpdf-frontend.php' );
174
- include_once( $this->plugin_path() . '/includes/class-wcpdf-install.php' );
175
-
176
- // Backwards compatibility with self
177
- include_once( $this->plugin_path() . '/includes/legacy/class-wcpdf-legacy.php' );
178
- include_once( $this->plugin_path() . '/includes/legacy/class-wcpdf-legacy-deprecated-hooks.php' );
179
-
180
- // PHP MB String fallback functions
181
- include_once( $this->plugin_path() . '/includes/compatibility/mb-string-compatibility.php' );
182
- }
183
-
184
-
185
- /**
186
- * Instantiate classes when woocommerce is activated
187
- */
188
- public function load_classes() {
189
- if ( $this->is_woocommerce_activated() === false ) {
190
- add_action( 'admin_notices', array ( $this, 'need_woocommerce' ) );
191
- return;
192
- }
193
-
194
- if ( version_compare( PHP_VERSION, '5.3', '<' ) ) {
195
- add_action( 'admin_notices', array ( $this, 'required_php_version' ) );
196
- return;
197
- }
198
-
199
- // all systems ready - GO!
200
- $this->includes();
201
- }
202
-
203
- /**
204
- * Check if legacy mode is enabled
205
- */
206
- public function legacy_mode_enabled() {
207
- if (!isset($this->legacy_mode)) {
208
- $debug_settings = get_option( 'wpo_wcpdf_settings_debug' );
209
- $this->legacy_mode = isset($debug_settings['legacy_mode']);
210
- }
211
- return $this->legacy_mode;
212
- }
213
-
214
-
215
- /**
216
- * Check if woocommerce is activated
217
- */
218
- public function is_woocommerce_activated() {
219
- $blog_plugins = get_option( 'active_plugins', array() );
220
- $site_plugins = is_multisite() ? (array) maybe_unserialize( get_site_option('active_sitewide_plugins' ) ) : array();
221
-
222
- if ( in_array( 'woocommerce/woocommerce.php', $blog_plugins ) || isset( $site_plugins['woocommerce/woocommerce.php'] ) ) {
223
- return true;
224
- } else {
225
- return false;
226
- }
227
- }
228
-
229
- /**
230
- * WooCommerce not active notice.
231
- *
232
- * @return string Fallack notice.
233
- */
234
-
235
- public function need_woocommerce() {
236
- $error = sprintf( __( 'WooCommerce PDF Invoices & Packing Slips requires %sWooCommerce%s to be installed & activated!' , 'woocommerce-pdf-invoices-packing-slips' ), '<a href="http://wordpress.org/extend/plugins/woocommerce/">', '</a>' );
237
-
238
- $message = '<div class="error"><p>' . $error . '</p></div>';
239
-
240
- echo $message;
241
- }
242
-
243
- /**
244
- * PHP version requirement notice
245
- */
246
-
247
- public function required_php_version() {
248
- $error = __( 'WooCommerce PDF Invoices & Packing Slips requires PHP 5.3 or higher (5.6 or higher recommended).', 'woocommerce-pdf-invoices-packing-slips' );
249
- $how_to_update = __( 'How to update your PHP version', 'woocommerce-pdf-invoices-packing-slips' );
250
- $message = sprintf('<div class="error"><p>%s</p><p><a href="%s">%s</a></p></div>', $error, 'http://docs.wpovernight.com/general/how-to-update-your-php-version/', $how_to_update);
251
-
252
- echo $message;
253
- }
254
-
255
- /**
256
- * Show plugin changes. Code adapted from W3 Total Cache.
257
- */
258
- public function in_plugin_update_message( $args ) {
259
- $transient_name = 'wpo_wcpdf_upgrade_notice_' . $args['Version'];
260
-
261
- if ( false === ( $upgrade_notice = get_transient( $transient_name ) ) ) {
262
- $response = wp_safe_remote_get( 'https://plugins.svn.wordpress.org/woocommerce-pdf-invoices-packing-slips/trunk/readme.txt' );
263
-
264
- if ( ! is_wp_error( $response ) && ! empty( $response['body'] ) ) {
265
- $upgrade_notice = self::parse_update_notice( $response['body'], $args['new_version'] );
266
- set_transient( $transient_name, $upgrade_notice, DAY_IN_SECONDS );
267
- }
268
- }
269
-
270
- echo wp_kses_post( $upgrade_notice );
271
- }
272
-
273
- /**
274
- * Parse update notice from readme file.
275
- *
276
- * @param string $content
277
- * @param string $new_version
278
- * @return string
279
- */
280
- private function parse_update_notice( $content, $new_version ) {
281
- // Output Upgrade Notice.
282
- $matches = null;
283
- $regexp = '~==\s*Upgrade Notice\s*==\s*=\s*(.*)\s*=(.*)(=\s*' . preg_quote( $new_version ) . '\s*=|$)~Uis';
284
- $upgrade_notice = '';
285
-
286
-
287
- if ( preg_match( $regexp, $content, $matches ) ) {
288
- $notices = (array) preg_split( '~[\r\n]+~', trim( $matches[2] ) );
289
-
290
- // Convert the full version strings to minor versions.
291
- $notice_version_parts = explode( '.', trim( $matches[1] ) );
292
- $current_version_parts = explode( '.', $this->version );
293
-
294
- if ( 3 !== sizeof( $notice_version_parts ) ) {
295
- return;
296
- }
297
-
298
- $notice_version = $notice_version_parts[0] . '.' . $notice_version_parts[1];
299
- $current_version = $current_version_parts[0] . '.' . $current_version_parts[1];
300
-
301
- // Check the latest stable version and ignore trunk.
302
- if ( version_compare( $current_version, $notice_version, '<' ) ) {
303
-
304
- $upgrade_notice .= '</p><p class="wpo_wcpdf_upgrade_notice">';
305
-
306
- foreach ( $notices as $index => $line ) {
307
- $upgrade_notice .= preg_replace( '~\[([^\]]*)\]\(([^\)]*)\)~', '<a href="${2}">${1}</a>', $line );
308
- }
309
- }
310
- }
311
-
312
- return wp_kses_post( $upgrade_notice );
313
- }
314
-
315
- /**
316
- * Get the plugin url.
317
- * @return string
318
- */
319
- public function plugin_url() {
320
- return untrailingslashit( plugins_url( '/', __FILE__ ) );
321
- }
322
-
323
- /**
324
- * Get the plugin path.
325
- * @return string
326
- */
327
- public function plugin_path() {
328
- return untrailingslashit( plugin_dir_path( __FILE__ ) );
329
- }
330
-
331
- } // class WPO_WCPDF
332
-
333
- endif; // class_exists
334
-
335
- /**
336
- * Returns the main instance of WooCommerce PDF Invoices & Packing Slips to prevent the need to use globals.
337
- *
338
- * @since 1.6
339
- * @return WPO_WCPDF
340
- */
341
- function WPO_WCPDF() {
342
- return WPO_WCPDF::instance();
343
- }
344
-
345
- WPO_WCPDF(); // load plugin
346
-
347
- // legacy class for plugin detecting
348
- if ( !class_exists( 'WooCommerce_PDF_Invoices' ) ) {
349
- class WooCommerce_PDF_Invoices{
350
- public static $version;
351
-
352
- public function __construct() {
353
- self::$version = WPO_WCPDF()->version;
354
- }
355
- }
356
- new WooCommerce_PDF_Invoices();
357
- }
1
+ <?php
2
+ /**
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.5
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.3.0
14
+ */
15
+
16
+ if ( ! defined( 'ABSPATH' ) ) {
17
+ exit; // Exit if accessed directly
18
+ }
19
+
20
+ if ( !class_exists( 'WPO_WCPDF' ) ) :
21
+
22
+ class WPO_WCPDF {
23
+
24
+ public $version = '2.1.5';
25
+ public $plugin_basename;
26
+ public $legacy_mode;
27
+
28
+ protected static $_instance = null;
29
+
30
+ /**
31
+ * Main Plugin Instance
32
+ *
33
+ * Ensures only one instance of plugin is loaded or can be loaded.
34
+ */
35
+ public static function instance() {
36
+ if ( is_null( self::$_instance ) ) {
37
+ self::$_instance = new self();
38
+ }
39
+ return self::$_instance;
40
+ }
41
+
42
+ /**
43
+ * Constructor
44
+ */
45
+ public function __construct() {
46
+ $this->plugin_basename = plugin_basename(__FILE__);
47
+
48
+ $this->define( 'WPO_WCPDF_VERSION', $this->version );
49
+
50
+ // load the localisation & classes
51
+ add_action( 'plugins_loaded', array( $this, 'translations' ) );
52
+ add_filter( 'load_textdomain_mofile', array( $this, 'textdomain_fallback' ), 10, 2 );
53
+ add_action( 'plugins_loaded', array( $this, 'load_classes' ), 9 );
54
+ add_action( 'in_plugin_update_message-'.$this->plugin_basename, array( $this, 'in_plugin_update_message' ) );
55
+ }
56
+
57
+ /**
58
+ * Define constant if not already set
59
+ * @param string $name
60
+ * @param string|bool $value
61
+ */
62
+ private function define( $name, $value ) {
63
+ if ( ! defined( $name ) ) {
64
+ define( $name, $value );
65
+ }
66
+ }
67
+
68
+
69
+ /**
70
+ * Load the translation / textdomain files
71
+ *
72
+ * Note: the first-loaded translation file overrides any following ones if the same translation is present
73
+ */
74
+ public function translations() {
75
+ $locale = apply_filters( 'plugin_locale', get_locale(), 'woocommerce-pdf-invoices-packing-slips' );
76
+ $dir = trailingslashit( WP_LANG_DIR );
77
+
78
+ $textdomains = array( 'woocommerce-pdf-invoices-packing-slips' );
79
+ if ( $this->legacy_mode_enabled() === true ) {
80
+ $textdomains[] = 'wpo_wcpdf';
81
+ }
82
+
83
+ /**
84
+ * Frontend/global Locale. Looks in:
85
+ *
86
+ * - WP_LANG_DIR/woocommerce-pdf-invoices-packing-slips/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
87
+ * - WP_LANG_DIR/plugins/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
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' );
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Maintain backwards compatibility with old translation files
100
+ * Uses old .mo file if it exists in any of the override locations
101
+ */
102
+ public function textdomain_fallback( $mofile, $textdomain ) {
103
+ $plugin_domain = 'woocommerce-pdf-invoices-packing-slips';
104
+ $old_domain = 'wpo_wcpdf';
105
+
106
+ if ($textdomain == $old_domain) {
107
+ $textdomain = $plugin_domain;
108
+ $mofile = str_replace( "{$old_domain}-", "{$textdomain}-", $mofile ); // with trailing dash to target file and not folder
109
+ }
110
+
111
+ if ( $textdomain === $plugin_domain ) {
112
+ $old_mofile = str_replace( "{$textdomain}-", "{$old_domain}-", $mofile ); // with trailing dash to target file and not folder
113
+ if ( file_exists( $old_mofile ) ) {
114
+ // we have an old override - use it
115
+ return $old_mofile;
116
+ }
117
+
118
+ // prevent loading outdated language packs
119
+ $pofile = str_replace('.mo', '.po', $mofile);
120
+ if ( file_exists( $pofile ) ) {
121
+ // load po file
122
+ $podata = file_get_contents($pofile);
123
+ // set revision date threshold
124
+ $block_before = strtotime( '2017-05-15' );
125
+ // read revision date
126
+ preg_match('~PO-Revision-Date: (.*?)\\\n~s',$podata,$matches);
127
+ if (isset($matches[1])) {
128
+ $revision_date = $matches[1];
129
+ if ( $revision_timestamp = strtotime($revision_date) ) {
130
+ // check if revision is before threshold date
131
+ if ( $revision_timestamp < $block_before ) {
132
+ // try bundled
133
+ $bundled_file = $this->plugin_path() . '/languages/'. basename( $mofile );
134
+ if (file_exists($bundled_file)) {
135
+ return $bundled_file;
136
+ } else {
137
+ return '';
138
+ }
139
+ // delete po & mo file if possible
140
+ // @unlink($pofile);
141
+ // @unlink($mofile);
142
+ }
143
+ }
144
+ }
145
+ }
146
+ }
147
+
148
+ return $mofile;
149
+ }
150
+
151
+ /**
152
+ * Load the main plugin classes and functions
153
+ */
154
+ public function includes() {
155
+ // WooCommerce compatibility classes
156
+ include_once( $this->plugin_path() . '/includes/compatibility/abstract-wc-data-compatibility.php' );
157
+ include_once( $this->plugin_path() . '/includes/compatibility/class-wc-date-compatibility.php' );
158
+ include_once( $this->plugin_path() . '/includes/compatibility/class-wc-core-compatibility.php' );
159
+ include_once( $this->plugin_path() . '/includes/compatibility/class-wc-order-compatibility.php' );
160
+ include_once( $this->plugin_path() . '/includes/compatibility/class-wc-product-compatibility.php' );
161
+ include_once( $this->plugin_path() . '/includes/compatibility/wc-datetime-functions-compatibility.php' );
162
+
163
+ // Third party compatibility
164
+ include_once( $this->plugin_path() . '/includes/compatibility/class-wcpdf-compatibility-third-party-plugins.php' );
165
+
166
+ // Plugin classes
167
+ include_once( $this->plugin_path() . '/includes/wcpdf-functions.php' );
168
+ $this->settings = include_once( $this->plugin_path() . '/includes/class-wcpdf-settings.php' );
169
+ $this->documents = include_once( $this->plugin_path() . '/includes/class-wcpdf-documents.php' );
170
+ $this->main = include_once( $this->plugin_path() . '/includes/class-wcpdf-main.php' );
171
+ include_once( $this->plugin_path() . '/includes/class-wcpdf-assets.php' );
172
+ include_once( $this->plugin_path() . '/includes/class-wcpdf-admin.php' );
173
+ include_once( $this->plugin_path() . '/includes/class-wcpdf-frontend.php' );
174
+ include_once( $this->plugin_path() . '/includes/class-wcpdf-install.php' );
175
+
176
+ // Backwards compatibility with self
177
+ include_once( $this->plugin_path() . '/includes/legacy/class-wcpdf-legacy.php' );
178
+ include_once( $this->plugin_path() . '/includes/legacy/class-wcpdf-legacy-deprecated-hooks.php' );
179
+
180
+ // PHP MB String fallback functions
181
+ include_once( $this->plugin_path() . '/includes/compatibility/mb-string-compatibility.php' );
182
+ }
183
+
184
+
185
+ /**
186
+ * Instantiate classes when woocommerce is activated
187
+ */
188
+ public function load_classes() {
189
+ if ( $this->is_woocommerce_activated() === false ) {
190
+ add_action( 'admin_notices', array ( $this, 'need_woocommerce' ) );
191
+ return;
192
+ }
193
+
194
+ if ( version_compare( PHP_VERSION, '5.3', '<' ) ) {
195
+ add_action( 'admin_notices', array ( $this, 'required_php_version' ) );
196
+ return;
197
+ }
198
+
199
+ // all systems ready - GO!
200
+ $this->includes();
201
+ }
202
+
203
+ /**
204
+ * Check if legacy mode is enabled
205
+ */
206
+ public function legacy_mode_enabled() {
207
+ if (!isset($this->legacy_mode)) {
208
+ $debug_settings = get_option( 'wpo_wcpdf_settings_debug' );
209
+ $this->legacy_mode = isset($debug_settings['legacy_mode']);
210
+ }
211
+ return $this->legacy_mode;
212
+ }
213
+
214
+
215
+ /**
216
+ * Check if woocommerce is activated
217
+ */
218
+ public function is_woocommerce_activated() {
219
+ $blog_plugins = get_option( 'active_plugins', array() );
220
+ $site_plugins = is_multisite() ? (array) maybe_unserialize( get_site_option('active_sitewide_plugins' ) ) : array();
221
+
222
+ if ( in_array( 'woocommerce/woocommerce.php', $blog_plugins ) || isset( $site_plugins['woocommerce/woocommerce.php'] ) ) {
223
+ return true;
224
+ } else {
225
+ return false;
226
+ }
227
+ }
228
+
229
+ /**
230
+ * WooCommerce not active notice.
231
+ *
232
+ * @return string Fallack notice.
233
+ */
234
+
235
+ public function need_woocommerce() {
236
+ $error = sprintf( __( 'WooCommerce PDF Invoices & Packing Slips requires %sWooCommerce%s to be installed & activated!' , 'woocommerce-pdf-invoices-packing-slips' ), '<a href="http://wordpress.org/extend/plugins/woocommerce/">', '</a>' );
237
+
238
+ $message = '<div class="error"><p>' . $error . '</p></div>';
239
+
240
+ echo $message;
241
+ }
242
+
243
+ /**
244
+ * PHP version requirement notice
245
+ */
246
+
247
+ public function required_php_version() {
248
+ $error = __( 'WooCommerce PDF Invoices & Packing Slips requires PHP 5.3 or higher (5.6 or higher recommended).', 'woocommerce-pdf-invoices-packing-slips' );
249
+ $how_to_update = __( 'How to update your PHP version', 'woocommerce-pdf-invoices-packing-slips' );
250
+ $message = sprintf('<div class="error"><p>%s</p><p><a href="%s">%s</a></p></div>', $error, 'http://docs.wpovernight.com/general/how-to-update-your-php-version/', $how_to_update);
251
+
252
+ echo $message;
253
+ }
254
+
255
+ /**
256
+ * Show plugin changes. Code adapted from W3 Total Cache.
257
+ */
258
+ public function in_plugin_update_message( $args ) {
259
+ $transient_name = 'wpo_wcpdf_upgrade_notice_' . $args['Version'];
260
+
261
+ if ( false === ( $upgrade_notice = get_transient( $transient_name ) ) ) {
262
+ $response = wp_safe_remote_get( 'https://plugins.svn.wordpress.org/woocommerce-pdf-invoices-packing-slips/trunk/readme.txt' );
263
+
264
+ if ( ! is_wp_error( $response ) && ! empty( $response['body'] ) ) {
265
+ $upgrade_notice = self::parse_update_notice( $response['body'], $args['new_version'] );
266
+ set_transient( $transient_name, $upgrade_notice, DAY_IN_SECONDS );
267
+ }
268
+ }
269
+
270
+ echo wp_kses_post( $upgrade_notice );
271
+ }
272
+
273
+ /**
274
+ * Parse update notice from readme file.
275
+ *
276
+ * @param string $content
277
+ * @param string $new_version
278
+ * @return string
279
+ */
280
+ private function parse_update_notice( $content, $new_version ) {
281
+ // Output Upgrade Notice.
282
+ $matches = null;
283
+ $regexp = '~==\s*Upgrade Notice\s*==\s*=\s*(.*)\s*=(.*)(=\s*' . preg_quote( $new_version ) . '\s*=|$)~Uis';
284
+ $upgrade_notice = '';
285
+
286
+
287
+ if ( preg_match( $regexp, $content, $matches ) ) {
288
+ $notices = (array) preg_split( '~[\r\n]+~', trim( $matches[2] ) );
289
+
290
+ // Convert the full version strings to minor versions.
291
+ $notice_version_parts = explode( '.', trim( $matches[1] ) );
292
+ $current_version_parts = explode( '.', $this->version );
293
+
294
+ if ( 3 !== sizeof( $notice_version_parts ) ) {
295
+ return;
296
+ }
297
+
298
+ $notice_version = $notice_version_parts[0] . '.' . $notice_version_parts[1];
299
+ $current_version = $current_version_parts[0] . '.' . $current_version_parts[1];
300
+
301
+ // Check the latest stable version and ignore trunk.
302
+ if ( version_compare( $current_version, $notice_version, '<' ) ) {
303
+
304
+ $upgrade_notice .= '</p><p class="wpo_wcpdf_upgrade_notice">';
305
+
306
+ foreach ( $notices as $index => $line ) {
307
+ $upgrade_notice .= preg_replace( '~\[([^\]]*)\]\(([^\)]*)\)~', '<a href="${2}">${1}</a>', $line );
308
+ }
309
+ }
310
+ }
311
+
312
+ return wp_kses_post( $upgrade_notice );
313
+ }
314
+
315
+ /**
316
+ * Get the plugin url.
317
+ * @return string
318
+ */
319
+ public function plugin_url() {
320
+ return untrailingslashit( plugins_url( '/', __FILE__ ) );
321
+ }
322
+
323
+ /**
324
+ * Get the plugin path.
325
+ * @return string
326
+ */
327
+ public function plugin_path() {
328
+ return untrailingslashit( plugin_dir_path( __FILE__ ) );
329
+ }
330
+
331
+ } // class WPO_WCPDF
332
+
333
+ endif; // class_exists
334
+
335
+ /**
336
+ * Returns the main instance of WooCommerce PDF Invoices & Packing Slips to prevent the need to use globals.
337
+ *
338
+ * @since 1.6
339
+ * @return WPO_WCPDF
340
+ */
341
+ function WPO_WCPDF() {
342
+ return WPO_WCPDF::instance();
343
+ }
344
+
345
+ WPO_WCPDF(); // load plugin
346
+
347
+ // legacy class for plugin detecting
348
+ if ( !class_exists( 'WooCommerce_PDF_Invoices' ) ) {
349
+ class WooCommerce_PDF_Invoices{
350
+ public static $version;
351
+
352
+ public function __construct() {
353
+ self::$version = WPO_WCPDF()->version;
354
+ }
355
+ }
356
+ new WooCommerce_PDF_Invoices();
357
+ }