WooCommerce PDF Invoices - Version 2.9.14

Version Description

  • July 23, 2018 =

  • Improved: Margin between template header and body.

Download this release

Release Info

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

Code changes from version 2.9.12 to 2.9.14

Files changed (45) hide show
  1. LICENSE +621 -621
  2. assets/css/admin.css +194 -194
  3. assets/js/admin.js +134 -134
  4. assets/js/settings.js +52 -52
  5. bootstrap.php +346 -346
  6. includes/abstracts/abstract-document.php +335 -335
  7. includes/abstracts/abstract-invoice.php +880 -880
  8. includes/abstracts/abstract-settings.php +485 -485
  9. includes/admin/class-admin-notices.php +144 -144
  10. includes/admin/settings/class-general.php +233 -233
  11. includes/admin/settings/class-template.php +624 -624
  12. includes/admin/views/html-activation-notice.php +17 -17
  13. includes/admin/views/html-deactivation-notice.php +20 -20
  14. includes/admin/views/html-multiple-checkbox-setting.php +33 -33
  15. includes/admin/views/html-order-page-pdf-invoice-meta-box.php +21 -21
  16. includes/admin/views/html-rate-notice.php +19 -19
  17. includes/admin/views/html-sidebar.php +98 -98
  18. includes/class-debug-log.php +178 -178
  19. includes/class-invoice.php +189 -189
  20. includes/class-packing-slip.php +132 -132
  21. includes/class-template.php +419 -419
  22. includes/compatibility/abstract-bewpi-setting.php +235 -235
  23. includes/compatibility/abstract-wc-data-compatibility.php +224 -224
  24. includes/compatibility/class-wc-core-compatibility.php +253 -253
  25. includes/compatibility/class-wc-datetime.php +109 -109
  26. includes/compatibility/class-wc-order-compatibility.php +517 -517
  27. includes/compatibility/class-wc-payment-gateway-compatibility.php +54 -54
  28. includes/compatibility/class-wc-product-compatibility.php +280 -280
  29. includes/templates/invoice/simple/micro/body.php +317 -317
  30. includes/templates/invoice/simple/micro/footer.php +14 -14
  31. includes/templates/invoice/simple/micro/header.php +17 -17
  32. includes/templates/invoice/simple/micro/style.css +139 -139
  33. includes/templates/invoice/simple/minimal/body.php +177 -163
  34. includes/templates/invoice/simple/minimal/footer.php +29 -29
  35. includes/templates/invoice/simple/minimal/header.php +39 -49
  36. includes/templates/invoice/simple/minimal/style.css +153 -153
  37. includes/templates/packing-slip/simple/minimal/body.php +133 -120
  38. includes/templates/packing-slip/simple/minimal/footer.php +26 -26
  39. includes/templates/packing-slip/simple/minimal/header.php +39 -49
  40. includes/templates/packing-slip/simple/minimal/style.css +80 -80
  41. includes/woocommerce-pdf-invoices.php +1060 -1060
  42. lang/woocommerce-pdf-invoices-cs_CZ.po +1949 -1949
  43. lang/woocommerce-pdf-invoices-de_DE.po +1712 -1712
  44. lang/woocommerce-pdf-invoices-es_ES.po +1896 -1896
  45. lang/woocommerce-pdf-invoices-et.po +0 -798
LICENSE CHANGED
@@ -1,621 +1,621 @@
1
- GNU GENERAL PUBLIC LICENSE
2
- Version 3, 29 June 2007
3
-
4
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5
- Everyone is permitted to copy and distribute verbatim copies
6
- of this license document, but changing it is not allowed.
7
-
8
- Preamble
9
-
10
- The GNU General Public License is a free, copyleft license for
11
- software and other kinds of works.
12
-
13
- The licenses for most software and other practical works are designed
14
- to take away your freedom to share and change the works. By contrast,
15
- the GNU General Public License is intended to guarantee your freedom to
16
- share and change all versions of a program--to make sure it remains free
17
- software for all its users. We, the Free Software Foundation, use the
18
- GNU General Public License for most of our software; it applies also to
19
- any other work released this way by its authors. You can apply it to
20
- your programs, too.
21
-
22
- When we speak of free software, we are referring to freedom, not
23
- price. Our General Public Licenses are designed to make sure that you
24
- have the freedom to distribute copies of free software (and charge for
25
- them if you wish), that you receive source code or can get it if you
26
- want it, that you can change the software or use pieces of it in new
27
- free programs, and that you know you can do these things.
28
-
29
- To protect your rights, we need to prevent others from denying you
30
- these rights or asking you to surrender the rights. Therefore, you have
31
- certain responsibilities if you distribute copies of the software, or if
32
- you modify it: responsibilities to respect the freedom of others.
33
-
34
- For example, if you distribute copies of such a program, whether
35
- gratis or for a fee, you must pass on to the recipients the same
36
- freedoms that you received. You must make sure that they, too, receive
37
- or can get the source code. And you must show them these terms so they
38
- know their rights.
39
-
40
- Developers that use the GNU GPL protect your rights with two steps:
41
- (1) assert copyright on the software, and (2) offer you this License
42
- giving you legal permission to copy, distribute and/or modify it.
43
-
44
- For the developers' and authors' protection, the GPL clearly explains
45
- that there is no warranty for this free software. For both users' and
46
- authors' sake, the GPL requires that modified versions be marked as
47
- changed, so that their problems will not be attributed erroneously to
48
- authors of previous versions.
49
-
50
- Some devices are designed to deny users access to install or run
51
- modified versions of the software inside them, although the manufacturer
52
- can do so. This is fundamentally incompatible with the aim of
53
- protecting users' freedom to change the software. The systematic
54
- pattern of such abuse occurs in the area of products for individuals to
55
- use, which is precisely where it is most unacceptable. Therefore, we
56
- have designed this version of the GPL to prohibit the practice for those
57
- products. If such problems arise substantially in other domains, we
58
- stand ready to extend this provision to those domains in future versions
59
- of the GPL, as needed to protect the freedom of users.
60
-
61
- Finally, every program is threatened constantly by software patents.
62
- States should not allow patents to restrict development and use of
63
- software on general-purpose computers, but in those that do, we wish to
64
- avoid the special danger that patents applied to a free program could
65
- make it effectively proprietary. To prevent this, the GPL assures that
66
- patents cannot be used to render the program non-free.
67
-
68
- The precise terms and conditions for copying, distribution and
69
- modification follow.
70
-
71
- TERMS AND CONDITIONS
72
-
73
- 0. Definitions.
74
-
75
- "This License" refers to version 3 of the GNU General Public License.
76
-
77
- "Copyright" also means copyright-like laws that apply to other kinds of
78
- works, such as semiconductor masks.
79
-
80
- "The Program" refers to any copyrightable work licensed under this
81
- License. Each licensee is addressed as "you". "Licensees" and
82
- "recipients" may be individuals or organizations.
83
-
84
- To "modify" a work means to copy from or adapt all or part of the work
85
- in a fashion requiring copyright permission, other than the making of an
86
- exact copy. The resulting work is called a "modified version" of the
87
- earlier work or a work "based on" the earlier work.
88
-
89
- A "covered work" means either the unmodified Program or a work based
90
- on the Program.
91
-
92
- To "propagate" a work means to do anything with it that, without
93
- permission, would make you directly or secondarily liable for
94
- infringement under applicable copyright law, except executing it on a
95
- computer or modifying a private copy. Propagation includes copying,
96
- distribution (with or without modification), making available to the
97
- public, and in some countries other activities as well.
98
-
99
- To "convey" a work means any kind of propagation that enables other
100
- parties to make or receive copies. Mere interaction with a user through
101
- a computer network, with no transfer of a copy, is not conveying.
102
-
103
- An interactive user interface displays "Appropriate Legal Notices"
104
- to the extent that it includes a convenient and prominently visible
105
- feature that (1) displays an appropriate copyright notice, and (2)
106
- tells the user that there is no warranty for the work (except to the
107
- extent that warranties are provided), that licensees may convey the
108
- work under this License, and how to view a copy of this License. If
109
- the interface presents a list of user commands or options, such as a
110
- menu, a prominent item in the list meets this criterion.
111
-
112
- 1. Source Code.
113
-
114
- The "source code" for a work means the preferred form of the work
115
- for making modifications to it. "Object code" means any non-source
116
- form of a work.
117
-
118
- A "Standard Interface" means an interface that either is an official
119
- standard defined by a recognized standards body, or, in the case of
120
- interfaces specified for a particular programming language, one that
121
- is widely used among developers working in that language.
122
-
123
- The "System Libraries" of an executable work include anything, other
124
- than the work as a whole, that (a) is included in the normal form of
125
- packaging a Major Component, but which is not part of that Major
126
- Component, and (b) serves only to enable use of the work with that
127
- Major Component, or to implement a Standard Interface for which an
128
- implementation is available to the public in source code form. A
129
- "Major Component", in this context, means a major essential component
130
- (kernel, window system, and so on) of the specific operating system
131
- (if any) on which the executable work runs, or a compiler used to
132
- produce the work, or an object code interpreter used to run it.
133
-
134
- The "Corresponding Source" for a work in object code form means all
135
- the source code needed to generate, install, and (for an executable
136
- work) run the object code and to modify the work, including scripts to
137
- control those activities. However, it does not include the work's
138
- System Libraries, or general-purpose tools or generally available free
139
- programs which are used unmodified in performing those activities but
140
- which are not part of the work. For example, Corresponding Source
141
- includes interface definition files associated with source files for
142
- the work, and the source code for shared libraries and dynamically
143
- linked subprograms that the work is specifically designed to require,
144
- such as by intimate data communication or control flow between those
145
- subprograms and other parts of the work.
146
-
147
- The Corresponding Source need not include anything that users
148
- can regenerate automatically from other parts of the Corresponding
149
- Source.
150
-
151
- The Corresponding Source for a work in source code form is that
152
- same work.
153
-
154
- 2. Basic Permissions.
155
-
156
- All rights granted under this License are granted for the term of
157
- copyright on the Program, and are irrevocable provided the stated
158
- conditions are met. This License explicitly affirms your unlimited
159
- permission to run the unmodified Program. The output from running a
160
- covered work is covered by this License only if the output, given its
161
- content, constitutes a covered work. This License acknowledges your
162
- rights of fair use or other equivalent, as provided by copyright law.
163
-
164
- You may make, run and propagate covered works that you do not
165
- convey, without conditions so long as your license otherwise remains
166
- in force. You may convey covered works to others for the sole purpose
167
- of having them make modifications exclusively for you, or provide you
168
- with facilities for running those works, provided that you comply with
169
- the terms of this License in conveying all material for which you do
170
- not control copyright. Those thus making or running the covered works
171
- for you must do so exclusively on your behalf, under your direction
172
- and control, on terms that prohibit them from making any copies of
173
- your copyrighted material outside their relationship with you.
174
-
175
- Conveying under any other circumstances is permitted solely under
176
- the conditions stated below. Sublicensing is not allowed; section 10
177
- makes it unnecessary.
178
-
179
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180
-
181
- No covered work shall be deemed part of an effective technological
182
- measure under any applicable law fulfilling obligations under article
183
- 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184
- similar laws prohibiting or restricting circumvention of such
185
- measures.
186
-
187
- When you convey a covered work, you waive any legal power to forbid
188
- circumvention of technological measures to the extent such circumvention
189
- is effected by exercising rights under this License with respect to
190
- the covered work, and you disclaim any intention to limit operation or
191
- modification of the work as a means of enforcing, against the work's
192
- users, your or third parties' legal rights to forbid circumvention of
193
- technological measures.
194
-
195
- 4. Conveying Verbatim Copies.
196
-
197
- You may convey verbatim copies of the Program's source code as you
198
- receive it, in any medium, provided that you conspicuously and
199
- appropriately publish on each copy an appropriate copyright notice;
200
- keep intact all notices stating that this License and any
201
- non-permissive terms added in accord with section 7 apply to the code;
202
- keep intact all notices of the absence of any warranty; and give all
203
- recipients a copy of this License along with the Program.
204
-
205
- You may charge any price or no price for each copy that you convey,
206
- and you may offer support or warranty protection for a fee.
207
-
208
- 5. Conveying Modified Source Versions.
209
-
210
- You may convey a work based on the Program, or the modifications to
211
- produce it from the Program, in the form of source code under the
212
- terms of section 4, provided that you also meet all of these conditions:
213
-
214
- a) The work must carry prominent notices stating that you modified
215
- it, and giving a relevant date.
216
-
217
- b) The work must carry prominent notices stating that it is
218
- released under this License and any conditions added under section
219
- 7. This requirement modifies the requirement in section 4 to
220
- "keep intact all notices".
221
-
222
- c) You must license the entire work, as a whole, under this
223
- License to anyone who comes into possession of a copy. This
224
- License will therefore apply, along with any applicable section 7
225
- additional terms, to the whole of the work, and all its parts,
226
- regardless of how they are packaged. This License gives no
227
- permission to license the work in any other way, but it does not
228
- invalidate such permission if you have separately received it.
229
-
230
- d) If the work has interactive user interfaces, each must display
231
- Appropriate Legal Notices; however, if the Program has interactive
232
- interfaces that do not display Appropriate Legal Notices, your
233
- work need not make them do so.
234
-
235
- A compilation of a covered work with other separate and independent
236
- works, which are not by their nature extensions of the covered work,
237
- and which are not combined with it such as to form a larger program,
238
- in or on a volume of a storage or distribution medium, is called an
239
- "aggregate" if the compilation and its resulting copyright are not
240
- used to limit the access or legal rights of the compilation's users
241
- beyond what the individual works permit. Inclusion of a covered work
242
- in an aggregate does not cause this License to apply to the other
243
- parts of the aggregate.
244
-
245
- 6. Conveying Non-Source Forms.
246
-
247
- You may convey a covered work in object code form under the terms
248
- of sections 4 and 5, provided that you also convey the
249
- machine-readable Corresponding Source under the terms of this License,
250
- in one of these ways:
251
-
252
- a) Convey the object code in, or embodied in, a physical product
253
- (including a physical distribution medium), accompanied by the
254
- Corresponding Source fixed on a durable physical medium
255
- customarily used for software interchange.
256
-
257
- b) Convey the object code in, or embodied in, a physical product
258
- (including a physical distribution medium), accompanied by a
259
- written offer, valid for at least three years and valid for as
260
- long as you offer spare parts or customer support for that product
261
- model, to give anyone who possesses the object code either (1) a
262
- copy of the Corresponding Source for all the software in the
263
- product that is covered by this License, on a durable physical
264
- medium customarily used for software interchange, for a price no
265
- more than your reasonable cost of physically performing this
266
- conveying of source, or (2) access to copy the
267
- Corresponding Source from a network server at no charge.
268
-
269
- c) Convey individual copies of the object code with a copy of the
270
- written offer to provide the Corresponding Source. This
271
- alternative is allowed only occasionally and noncommercially, and
272
- only if you received the object code with such an offer, in accord
273
- with subsection 6b.
274
-
275
- d) Convey the object code by offering access from a designated
276
- place (gratis or for a charge), and offer equivalent access to the
277
- Corresponding Source in the same way through the same place at no
278
- further charge. You need not require recipients to copy the
279
- Corresponding Source along with the object code. If the place to
280
- copy the object code is a network server, the Corresponding Source
281
- may be on a different server (operated by you or a third party)
282
- that supports equivalent copying facilities, provided you maintain
283
- clear directions next to the object code saying where to find the
284
- Corresponding Source. Regardless of what server hosts the
285
- Corresponding Source, you remain obligated to ensure that it is
286
- available for as long as needed to satisfy these requirements.
287
-
288
- e) Convey the object code using peer-to-peer transmission, provided
289
- you inform other peers where the object code and Corresponding
290
- Source of the work are being offered to the general public at no
291
- charge under subsection 6d.
292
-
293
- A separable portion of the object code, whose source code is excluded
294
- from the Corresponding Source as a System Library, need not be
295
- included in conveying the object code work.
296
-
297
- A "User Product" is either (1) a "consumer product", which means any
298
- tangible personal property which is normally used for personal, family,
299
- or household purposes, or (2) anything designed or sold for incorporation
300
- into a dwelling. In determining whether a product is a consumer product,
301
- doubtful cases shall be resolved in favor of coverage. For a particular
302
- product received by a particular user, "normally used" refers to a
303
- typical or common use of that class of product, regardless of the status
304
- of the particular user or of the way in which the particular user
305
- actually uses, or expects or is expected to use, the product. A product
306
- is a consumer product regardless of whether the product has substantial
307
- commercial, industrial or non-consumer uses, unless such uses represent
308
- the only significant mode of use of the product.
309
-
310
- "Installation Information" for a User Product means any methods,
311
- procedures, authorization keys, or other information required to install
312
- and execute modified versions of a covered work in that User Product from
313
- a modified version of its Corresponding Source. The information must
314
- suffice to ensure that the continued functioning of the modified object
315
- code is in no case prevented or interfered with solely because
316
- modification has been made.
317
-
318
- If you convey an object code work under this section in, or with, or
319
- specifically for use in, a User Product, and the conveying occurs as
320
- part of a transaction in which the right of possession and use of the
321
- User Product is transferred to the recipient in perpetuity or for a
322
- fixed term (regardless of how the transaction is characterized), the
323
- Corresponding Source conveyed under this section must be accompanied
324
- by the Installation Information. But this requirement does not apply
325
- if neither you nor any third party retains the ability to install
326
- modified object code on the User Product (for example, the work has
327
- been installed in ROM).
328
-
329
- The requirement to provide Installation Information does not include a
330
- requirement to continue to provide support service, warranty, or updates
331
- for a work that has been modified or installed by the recipient, or for
332
- the User Product in which it has been modified or installed. Access to a
333
- network may be denied when the modification itself materially and
334
- adversely affects the operation of the network or violates the rules and
335
- protocols for communication across the network.
336
-
337
- Corresponding Source conveyed, and Installation Information provided,
338
- in accord with this section must be in a format that is publicly
339
- documented (and with an implementation available to the public in
340
- source code form), and must require no special password or key for
341
- unpacking, reading or copying.
342
-
343
- 7. Additional Terms.
344
-
345
- "Additional permissions" are terms that supplement the terms of this
346
- License by making exceptions from one or more of its conditions.
347
- Additional permissions that are applicable to the entire Program shall
348
- be treated as though they were included in this License, to the extent
349
- that they are valid under applicable law. If additional permissions
350
- apply only to part of the Program, that part may be used separately
351
- under those permissions, but the entire Program remains governed by
352
- this License without regard to the additional permissions.
353
-
354
- When you convey a copy of a covered work, you may at your option
355
- remove any additional permissions from that copy, or from any part of
356
- it. (Additional permissions may be written to require their own
357
- removal in certain cases when you modify the work.) You may place
358
- additional permissions on material, added by you to a covered work,
359
- for which you have or can give appropriate copyright permission.
360
-
361
- Notwithstanding any other provision of this License, for material you
362
- add to a covered work, you may (if authorized by the copyright holders of
363
- that material) supplement the terms of this License with terms:
364
-
365
- a) Disclaiming warranty or limiting liability differently from the
366
- terms of sections 15 and 16 of this License; or
367
-
368
- b) Requiring preservation of specified reasonable legal notices or
369
- author attributions in that material or in the Appropriate Legal
370
- Notices displayed by works containing it; or
371
-
372
- c) Prohibiting misrepresentation of the origin of that material, or
373
- requiring that modified versions of such material be marked in
374
- reasonable ways as different from the original version; or
375
-
376
- d) Limiting the use for publicity purposes of names of licensors or
377
- authors of the material; or
378
-
379
- e) Declining to grant rights under trademark law for use of some
380
- trade names, trademarks, or service marks; or
381
-
382
- f) Requiring indemnification of licensors and authors of that
383
- material by anyone who conveys the material (or modified versions of
384
- it) with contractual assumptions of liability to the recipient, for
385
- any liability that these contractual assumptions directly impose on
386
- those licensors and authors.
387
-
388
- All other non-permissive additional terms are considered "further
389
- restrictions" within the meaning of section 10. If the Program as you
390
- received it, or any part of it, contains a notice stating that it is
391
- governed by this License along with a term that is a further
392
- restriction, you may remove that term. If a license document contains
393
- a further restriction but permits relicensing or conveying under this
394
- License, you may add to a covered work material governed by the terms
395
- of that license document, provided that the further restriction does
396
- not survive such relicensing or conveying.
397
-
398
- If you add terms to a covered work in accord with this section, you
399
- must place, in the relevant source files, a statement of the
400
- additional terms that apply to those files, or a notice indicating
401
- where to find the applicable terms.
402
-
403
- Additional terms, permissive or non-permissive, may be stated in the
404
- form of a separately written license, or stated as exceptions;
405
- the above requirements apply either way.
406
-
407
- 8. Termination.
408
-
409
- You may not propagate or modify a covered work except as expressly
410
- provided under this License. Any attempt otherwise to propagate or
411
- modify it is void, and will automatically terminate your rights under
412
- this License (including any patent licenses granted under the third
413
- paragraph of section 11).
414
-
415
- However, if you cease all violation of this License, then your
416
- license from a particular copyright holder is reinstated (a)
417
- provisionally, unless and until the copyright holder explicitly and
418
- finally terminates your license, and (b) permanently, if the copyright
419
- holder fails to notify you of the violation by some reasonable means
420
- prior to 60 days after the cessation.
421
-
422
- Moreover, your license from a particular copyright holder is
423
- reinstated permanently if the copyright holder notifies you of the
424
- violation by some reasonable means, this is the first time you have
425
- received notice of violation of this License (for any work) from that
426
- copyright holder, and you cure the violation prior to 30 days after
427
- your receipt of the notice.
428
-
429
- Termination of your rights under this section does not terminate the
430
- licenses of parties who have received copies or rights from you under
431
- this License. If your rights have been terminated and not permanently
432
- reinstated, you do not qualify to receive new licenses for the same
433
- material under section 10.
434
-
435
- 9. Acceptance Not Required for Having Copies.
436
-
437
- You are not required to accept this License in order to receive or
438
- run a copy of the Program. Ancillary propagation of a covered work
439
- occurring solely as a consequence of using peer-to-peer transmission
440
- to receive a copy likewise does not require acceptance. However,
441
- nothing other than this License grants you permission to propagate or
442
- modify any covered work. These actions infringe copyright if you do
443
- not accept this License. Therefore, by modifying or propagating a
444
- covered work, you indicate your acceptance of this License to do so.
445
-
446
- 10. Automatic Licensing of Downstream Recipients.
447
-
448
- Each time you convey a covered work, the recipient automatically
449
- receives a license from the original licensors, to run, modify and
450
- propagate that work, subject to this License. You are not responsible
451
- for enforcing compliance by third parties with this License.
452
-
453
- An "entity transaction" is a transaction transferring control of an
454
- organization, or substantially all assets of one, or subdividing an
455
- organization, or merging organizations. If propagation of a covered
456
- work results from an entity transaction, each party to that
457
- transaction who receives a copy of the work also receives whatever
458
- licenses to the work the party's predecessor in interest had or could
459
- give under the previous paragraph, plus a right to possession of the
460
- Corresponding Source of the work from the predecessor in interest, if
461
- the predecessor has it or can get it with reasonable efforts.
462
-
463
- You may not impose any further restrictions on the exercise of the
464
- rights granted or affirmed under this License. For example, you may
465
- not impose a license fee, royalty, or other charge for exercise of
466
- rights granted under this License, and you may not initiate litigation
467
- (including a cross-claim or counterclaim in a lawsuit) alleging that
468
- any patent claim is infringed by making, using, selling, offering for
469
- sale, or importing the Program or any portion of it.
470
-
471
- 11. Patents.
472
-
473
- A "contributor" is a copyright holder who authorizes use under this
474
- License of the Program or a work on which the Program is based. The
475
- work thus licensed is called the contributor's "contributor version".
476
-
477
- A contributor's "essential patent claims" are all patent claims
478
- owned or controlled by the contributor, whether already acquired or
479
- hereafter acquired, that would be infringed by some manner, permitted
480
- by this License, of making, using, or selling its contributor version,
481
- but do not include claims that would be infringed only as a
482
- consequence of further modification of the contributor version. For
483
- purposes of this definition, "control" includes the right to grant
484
- patent sublicenses in a manner consistent with the requirements of
485
- this License.
486
-
487
- Each contributor grants you a non-exclusive, worldwide, royalty-free
488
- patent license under the contributor's essential patent claims, to
489
- make, use, sell, offer for sale, import and otherwise run, modify and
490
- propagate the contents of its contributor version.
491
-
492
- In the following three paragraphs, a "patent license" is any express
493
- agreement or commitment, however denominated, not to enforce a patent
494
- (such as an express permission to practice a patent or covenant not to
495
- sue for patent infringement). To "grant" such a patent license to a
496
- party means to make such an agreement or commitment not to enforce a
497
- patent against the party.
498
-
499
- If you convey a covered work, knowingly relying on a patent license,
500
- and the Corresponding Source of the work is not available for anyone
501
- to copy, free of charge and under the terms of this License, through a
502
- publicly available network server or other readily accessible means,
503
- then you must either (1) cause the Corresponding Source to be so
504
- available, or (2) arrange to deprive yourself of the benefit of the
505
- patent license for this particular work, or (3) arrange, in a manner
506
- consistent with the requirements of this License, to extend the patent
507
- license to downstream recipients. "Knowingly relying" means you have
508
- actual knowledge that, but for the patent license, your conveying the
509
- covered work in a country, or your recipient's use of the covered work
510
- in a country, would infringe one or more identifiable patents in that
511
- country that you have reason to believe are valid.
512
-
513
- If, pursuant to or in connection with a single transaction or
514
- arrangement, you convey, or propagate by procuring conveyance of, a
515
- covered work, and grant a patent license to some of the parties
516
- receiving the covered work authorizing them to use, propagate, modify
517
- or convey a specific copy of the covered work, then the patent license
518
- you grant is automatically extended to all recipients of the covered
519
- work and works based on it.
520
-
521
- A patent license is "discriminatory" if it does not include within
522
- the scope of its coverage, prohibits the exercise of, or is
523
- conditioned on the non-exercise of one or more of the rights that are
524
- specifically granted under this License. You may not convey a covered
525
- work if you are a party to an arrangement with a third party that is
526
- in the business of distributing software, under which you make payment
527
- to the third party based on the extent of your activity of conveying
528
- the work, and under which the third party grants, to any of the
529
- parties who would receive the covered work from you, a discriminatory
530
- patent license (a) in connection with copies of the covered work
531
- conveyed by you (or copies made from those copies), or (b) primarily
532
- for and in connection with specific products or compilations that
533
- contain the covered work, unless you entered into that arrangement,
534
- or that patent license was granted, prior to 28 March 2007.
535
-
536
- Nothing in this License shall be construed as excluding or limiting
537
- any implied license or other defenses to infringement that may
538
- otherwise be available to you under applicable patent law.
539
-
540
- 12. No Surrender of Others' Freedom.
541
-
542
- If conditions are imposed on you (whether by court order, agreement or
543
- otherwise) that contradict the conditions of this License, they do not
544
- excuse you from the conditions of this License. If you cannot convey a
545
- covered work so as to satisfy simultaneously your obligations under this
546
- License and any other pertinent obligations, then as a consequence you may
547
- not convey it at all. For example, if you agree to terms that obligate you
548
- to collect a royalty for further conveying from those to whom you convey
549
- the Program, the only way you could satisfy both those terms and this
550
- License would be to refrain entirely from conveying the Program.
551
-
552
- 13. Use with the GNU Affero General Public License.
553
-
554
- Notwithstanding any other provision of this License, you have
555
- permission to link or combine any covered work with a work licensed
556
- under version 3 of the GNU Affero General Public License into a single
557
- combined work, and to convey the resulting work. The terms of this
558
- License will continue to apply to the part which is the covered work,
559
- but the special requirements of the GNU Affero General Public License,
560
- section 13, concerning interaction through a network will apply to the
561
- combination as such.
562
-
563
- 14. Revised Versions of this License.
564
-
565
- The Free Software Foundation may publish revised and/or new versions of
566
- the GNU General Public License from time to time. Such new versions will
567
- be similar in spirit to the present version, but may differ in detail to
568
- address new problems or concerns.
569
-
570
- Each version is given a distinguishing version number. If the
571
- Program specifies that a certain numbered version of the GNU General
572
- Public License "or any later version" applies to it, you have the
573
- option of following the terms and conditions either of that numbered
574
- version or of any later version published by the Free Software
575
- Foundation. If the Program does not specify a version number of the
576
- GNU General Public License, you may choose any version ever published
577
- by the Free Software Foundation.
578
-
579
- If the Program specifies that a proxy can decide which future
580
- versions of the GNU General Public License can be used, that proxy's
581
- public statement of acceptance of a version permanently authorizes you
582
- to choose that version for the Program.
583
-
584
- Later license versions may give you additional or different
585
- permissions. However, no additional obligations are imposed on any
586
- author or copyright holder as a result of your choosing to follow a
587
- later version.
588
-
589
- 15. Disclaimer of Warranty.
590
-
591
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592
- APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593
- HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594
- OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595
- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596
- PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597
- IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598
- ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599
-
600
- 16. Limitation of Liability.
601
-
602
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604
- THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605
- GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606
- USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607
- DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608
- PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609
- EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610
- SUCH DAMAGES.
611
-
612
- 17. Interpretation of Sections 15 and 16.
613
-
614
- If the disclaimer of warranty and limitation of liability provided
615
- above cannot be given local legal effect according to their terms,
616
- reviewing courts shall apply local law that most closely approximates
617
- an absolute waiver of all civil liability in connection with the
618
- Program, unless a warranty or assumption of liability accompanies a
619
- copy of the Program in return for a fee.
620
-
621
- END OF TERMS AND CONDITIONS
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 3, 29 June 2007
3
+
4
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5
+ Everyone is permitted to copy and distribute verbatim copies
6
+ of this license document, but changing it is not allowed.
7
+
8
+ Preamble
9
+
10
+ The GNU General Public License is a free, copyleft license for
11
+ software and other kinds of works.
12
+
13
+ The licenses for most software and other practical works are designed
14
+ to take away your freedom to share and change the works. By contrast,
15
+ the GNU General Public License is intended to guarantee your freedom to
16
+ share and change all versions of a program--to make sure it remains free
17
+ software for all its users. We, the Free Software Foundation, use the
18
+ GNU General Public License for most of our software; it applies also to
19
+ any other work released this way by its authors. You can apply it to
20
+ your programs, too.
21
+
22
+ When we speak of free software, we are referring to freedom, not
23
+ price. Our General Public Licenses are designed to make sure that you
24
+ have the freedom to distribute copies of free software (and charge for
25
+ them if you wish), that you receive source code or can get it if you
26
+ want it, that you can change the software or use pieces of it in new
27
+ free programs, and that you know you can do these things.
28
+
29
+ To protect your rights, we need to prevent others from denying you
30
+ these rights or asking you to surrender the rights. Therefore, you have
31
+ certain responsibilities if you distribute copies of the software, or if
32
+ you modify it: responsibilities to respect the freedom of others.
33
+
34
+ For example, if you distribute copies of such a program, whether
35
+ gratis or for a fee, you must pass on to the recipients the same
36
+ freedoms that you received. You must make sure that they, too, receive
37
+ or can get the source code. And you must show them these terms so they
38
+ know their rights.
39
+
40
+ Developers that use the GNU GPL protect your rights with two steps:
41
+ (1) assert copyright on the software, and (2) offer you this License
42
+ giving you legal permission to copy, distribute and/or modify it.
43
+
44
+ For the developers' and authors' protection, the GPL clearly explains
45
+ that there is no warranty for this free software. For both users' and
46
+ authors' sake, the GPL requires that modified versions be marked as
47
+ changed, so that their problems will not be attributed erroneously to
48
+ authors of previous versions.
49
+
50
+ Some devices are designed to deny users access to install or run
51
+ modified versions of the software inside them, although the manufacturer
52
+ can do so. This is fundamentally incompatible with the aim of
53
+ protecting users' freedom to change the software. The systematic
54
+ pattern of such abuse occurs in the area of products for individuals to
55
+ use, which is precisely where it is most unacceptable. Therefore, we
56
+ have designed this version of the GPL to prohibit the practice for those
57
+ products. If such problems arise substantially in other domains, we
58
+ stand ready to extend this provision to those domains in future versions
59
+ of the GPL, as needed to protect the freedom of users.
60
+
61
+ Finally, every program is threatened constantly by software patents.
62
+ States should not allow patents to restrict development and use of
63
+ software on general-purpose computers, but in those that do, we wish to
64
+ avoid the special danger that patents applied to a free program could
65
+ make it effectively proprietary. To prevent this, the GPL assures that
66
+ patents cannot be used to render the program non-free.
67
+
68
+ The precise terms and conditions for copying, distribution and
69
+ modification follow.
70
+
71
+ TERMS AND CONDITIONS
72
+
73
+ 0. Definitions.
74
+
75
+ "This License" refers to version 3 of the GNU General Public License.
76
+
77
+ "Copyright" also means copyright-like laws that apply to other kinds of
78
+ works, such as semiconductor masks.
79
+
80
+ "The Program" refers to any copyrightable work licensed under this
81
+ License. Each licensee is addressed as "you". "Licensees" and
82
+ "recipients" may be individuals or organizations.
83
+
84
+ To "modify" a work means to copy from or adapt all or part of the work
85
+ in a fashion requiring copyright permission, other than the making of an
86
+ exact copy. The resulting work is called a "modified version" of the
87
+ earlier work or a work "based on" the earlier work.
88
+
89
+ A "covered work" means either the unmodified Program or a work based
90
+ on the Program.
91
+
92
+ To "propagate" a work means to do anything with it that, without
93
+ permission, would make you directly or secondarily liable for
94
+ infringement under applicable copyright law, except executing it on a
95
+ computer or modifying a private copy. Propagation includes copying,
96
+ distribution (with or without modification), making available to the
97
+ public, and in some countries other activities as well.
98
+
99
+ To "convey" a work means any kind of propagation that enables other
100
+ parties to make or receive copies. Mere interaction with a user through
101
+ a computer network, with no transfer of a copy, is not conveying.
102
+
103
+ An interactive user interface displays "Appropriate Legal Notices"
104
+ to the extent that it includes a convenient and prominently visible
105
+ feature that (1) displays an appropriate copyright notice, and (2)
106
+ tells the user that there is no warranty for the work (except to the
107
+ extent that warranties are provided), that licensees may convey the
108
+ work under this License, and how to view a copy of this License. If
109
+ the interface presents a list of user commands or options, such as a
110
+ menu, a prominent item in the list meets this criterion.
111
+
112
+ 1. Source Code.
113
+
114
+ The "source code" for a work means the preferred form of the work
115
+ for making modifications to it. "Object code" means any non-source
116
+ form of a work.
117
+
118
+ A "Standard Interface" means an interface that either is an official
119
+ standard defined by a recognized standards body, or, in the case of
120
+ interfaces specified for a particular programming language, one that
121
+ is widely used among developers working in that language.
122
+
123
+ The "System Libraries" of an executable work include anything, other
124
+ than the work as a whole, that (a) is included in the normal form of
125
+ packaging a Major Component, but which is not part of that Major
126
+ Component, and (b) serves only to enable use of the work with that
127
+ Major Component, or to implement a Standard Interface for which an
128
+ implementation is available to the public in source code form. A
129
+ "Major Component", in this context, means a major essential component
130
+ (kernel, window system, and so on) of the specific operating system
131
+ (if any) on which the executable work runs, or a compiler used to
132
+ produce the work, or an object code interpreter used to run it.
133
+
134
+ The "Corresponding Source" for a work in object code form means all
135
+ the source code needed to generate, install, and (for an executable
136
+ work) run the object code and to modify the work, including scripts to
137
+ control those activities. However, it does not include the work's
138
+ System Libraries, or general-purpose tools or generally available free
139
+ programs which are used unmodified in performing those activities but
140
+ which are not part of the work. For example, Corresponding Source
141
+ includes interface definition files associated with source files for
142
+ the work, and the source code for shared libraries and dynamically
143
+ linked subprograms that the work is specifically designed to require,
144
+ such as by intimate data communication or control flow between those
145
+ subprograms and other parts of the work.
146
+
147
+ The Corresponding Source need not include anything that users
148
+ can regenerate automatically from other parts of the Corresponding
149
+ Source.
150
+
151
+ The Corresponding Source for a work in source code form is that
152
+ same work.
153
+
154
+ 2. Basic Permissions.
155
+
156
+ All rights granted under this License are granted for the term of
157
+ copyright on the Program, and are irrevocable provided the stated
158
+ conditions are met. This License explicitly affirms your unlimited
159
+ permission to run the unmodified Program. The output from running a
160
+ covered work is covered by this License only if the output, given its
161
+ content, constitutes a covered work. This License acknowledges your
162
+ rights of fair use or other equivalent, as provided by copyright law.
163
+
164
+ You may make, run and propagate covered works that you do not
165
+ convey, without conditions so long as your license otherwise remains
166
+ in force. You may convey covered works to others for the sole purpose
167
+ of having them make modifications exclusively for you, or provide you
168
+ with facilities for running those works, provided that you comply with
169
+ the terms of this License in conveying all material for which you do
170
+ not control copyright. Those thus making or running the covered works
171
+ for you must do so exclusively on your behalf, under your direction
172
+ and control, on terms that prohibit them from making any copies of
173
+ your copyrighted material outside their relationship with you.
174
+
175
+ Conveying under any other circumstances is permitted solely under
176
+ the conditions stated below. Sublicensing is not allowed; section 10
177
+ makes it unnecessary.
178
+
179
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180
+
181
+ No covered work shall be deemed part of an effective technological
182
+ measure under any applicable law fulfilling obligations under article
183
+ 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184
+ similar laws prohibiting or restricting circumvention of such
185
+ measures.
186
+
187
+ When you convey a covered work, you waive any legal power to forbid
188
+ circumvention of technological measures to the extent such circumvention
189
+ is effected by exercising rights under this License with respect to
190
+ the covered work, and you disclaim any intention to limit operation or
191
+ modification of the work as a means of enforcing, against the work's
192
+ users, your or third parties' legal rights to forbid circumvention of
193
+ technological measures.
194
+
195
+ 4. Conveying Verbatim Copies.
196
+
197
+ You may convey verbatim copies of the Program's source code as you
198
+ receive it, in any medium, provided that you conspicuously and
199
+ appropriately publish on each copy an appropriate copyright notice;
200
+ keep intact all notices stating that this License and any
201
+ non-permissive terms added in accord with section 7 apply to the code;
202
+ keep intact all notices of the absence of any warranty; and give all
203
+ recipients a copy of this License along with the Program.
204
+
205
+ You may charge any price or no price for each copy that you convey,
206
+ and you may offer support or warranty protection for a fee.
207
+
208
+ 5. Conveying Modified Source Versions.
209
+
210
+ You may convey a work based on the Program, or the modifications to
211
+ produce it from the Program, in the form of source code under the
212
+ terms of section 4, provided that you also meet all of these conditions:
213
+
214
+ a) The work must carry prominent notices stating that you modified
215
+ it, and giving a relevant date.
216
+
217
+ b) The work must carry prominent notices stating that it is
218
+ released under this License and any conditions added under section
219
+ 7. This requirement modifies the requirement in section 4 to
220
+ "keep intact all notices".
221
+
222
+ c) You must license the entire work, as a whole, under this
223
+ License to anyone who comes into possession of a copy. This
224
+ License will therefore apply, along with any applicable section 7
225
+ additional terms, to the whole of the work, and all its parts,
226
+ regardless of how they are packaged. This License gives no
227
+ permission to license the work in any other way, but it does not
228
+ invalidate such permission if you have separately received it.
229
+
230
+ d) If the work has interactive user interfaces, each must display
231
+ Appropriate Legal Notices; however, if the Program has interactive
232
+ interfaces that do not display Appropriate Legal Notices, your
233
+ work need not make them do so.
234
+
235
+ A compilation of a covered work with other separate and independent
236
+ works, which are not by their nature extensions of the covered work,
237
+ and which are not combined with it such as to form a larger program,
238
+ in or on a volume of a storage or distribution medium, is called an
239
+ "aggregate" if the compilation and its resulting copyright are not
240
+ used to limit the access or legal rights of the compilation's users
241
+ beyond what the individual works permit. Inclusion of a covered work
242
+ in an aggregate does not cause this License to apply to the other
243
+ parts of the aggregate.
244
+
245
+ 6. Conveying Non-Source Forms.
246
+
247
+ You may convey a covered work in object code form under the terms
248
+ of sections 4 and 5, provided that you also convey the
249
+ machine-readable Corresponding Source under the terms of this License,
250
+ in one of these ways:
251
+
252
+ a) Convey the object code in, or embodied in, a physical product
253
+ (including a physical distribution medium), accompanied by the
254
+ Corresponding Source fixed on a durable physical medium
255
+ customarily used for software interchange.
256
+
257
+ b) Convey the object code in, or embodied in, a physical product
258
+ (including a physical distribution medium), accompanied by a
259
+ written offer, valid for at least three years and valid for as
260
+ long as you offer spare parts or customer support for that product
261
+ model, to give anyone who possesses the object code either (1) a
262
+ copy of the Corresponding Source for all the software in the
263
+ product that is covered by this License, on a durable physical
264
+ medium customarily used for software interchange, for a price no
265
+ more than your reasonable cost of physically performing this
266
+ conveying of source, or (2) access to copy the
267
+ Corresponding Source from a network server at no charge.
268
+
269
+ c) Convey individual copies of the object code with a copy of the
270
+ written offer to provide the Corresponding Source. This
271
+ alternative is allowed only occasionally and noncommercially, and
272
+ only if you received the object code with such an offer, in accord
273
+ with subsection 6b.
274
+
275
+ d) Convey the object code by offering access from a designated
276
+ place (gratis or for a charge), and offer equivalent access to the
277
+ Corresponding Source in the same way through the same place at no
278
+ further charge. You need not require recipients to copy the
279
+ Corresponding Source along with the object code. If the place to
280
+ copy the object code is a network server, the Corresponding Source
281
+ may be on a different server (operated by you or a third party)
282
+ that supports equivalent copying facilities, provided you maintain
283
+ clear directions next to the object code saying where to find the
284
+ Corresponding Source. Regardless of what server hosts the
285
+ Corresponding Source, you remain obligated to ensure that it is
286
+ available for as long as needed to satisfy these requirements.
287
+
288
+ e) Convey the object code using peer-to-peer transmission, provided
289
+ you inform other peers where the object code and Corresponding
290
+ Source of the work are being offered to the general public at no
291
+ charge under subsection 6d.
292
+
293
+ A separable portion of the object code, whose source code is excluded
294
+ from the Corresponding Source as a System Library, need not be
295
+ included in conveying the object code work.
296
+
297
+ A "User Product" is either (1) a "consumer product", which means any
298
+ tangible personal property which is normally used for personal, family,
299
+ or household purposes, or (2) anything designed or sold for incorporation
300
+ into a dwelling. In determining whether a product is a consumer product,
301
+ doubtful cases shall be resolved in favor of coverage. For a particular
302
+ product received by a particular user, "normally used" refers to a
303
+ typical or common use of that class of product, regardless of the status
304
+ of the particular user or of the way in which the particular user
305
+ actually uses, or expects or is expected to use, the product. A product
306
+ is a consumer product regardless of whether the product has substantial
307
+ commercial, industrial or non-consumer uses, unless such uses represent
308
+ the only significant mode of use of the product.
309
+
310
+ "Installation Information" for a User Product means any methods,
311
+ procedures, authorization keys, or other information required to install
312
+ and execute modified versions of a covered work in that User Product from
313
+ a modified version of its Corresponding Source. The information must
314
+ suffice to ensure that the continued functioning of the modified object
315
+ code is in no case prevented or interfered with solely because
316
+ modification has been made.
317
+
318
+ If you convey an object code work under this section in, or with, or
319
+ specifically for use in, a User Product, and the conveying occurs as
320
+ part of a transaction in which the right of possession and use of the
321
+ User Product is transferred to the recipient in perpetuity or for a
322
+ fixed term (regardless of how the transaction is characterized), the
323
+ Corresponding Source conveyed under this section must be accompanied
324
+ by the Installation Information. But this requirement does not apply
325
+ if neither you nor any third party retains the ability to install
326
+ modified object code on the User Product (for example, the work has
327
+ been installed in ROM).
328
+
329
+ The requirement to provide Installation Information does not include a
330
+ requirement to continue to provide support service, warranty, or updates
331
+ for a work that has been modified or installed by the recipient, or for
332
+ the User Product in which it has been modified or installed. Access to a
333
+ network may be denied when the modification itself materially and
334
+ adversely affects the operation of the network or violates the rules and
335
+ protocols for communication across the network.
336
+
337
+ Corresponding Source conveyed, and Installation Information provided,
338
+ in accord with this section must be in a format that is publicly
339
+ documented (and with an implementation available to the public in
340
+ source code form), and must require no special password or key for
341
+ unpacking, reading or copying.
342
+
343
+ 7. Additional Terms.
344
+
345
+ "Additional permissions" are terms that supplement the terms of this
346
+ License by making exceptions from one or more of its conditions.
347
+ Additional permissions that are applicable to the entire Program shall
348
+ be treated as though they were included in this License, to the extent
349
+ that they are valid under applicable law. If additional permissions
350
+ apply only to part of the Program, that part may be used separately
351
+ under those permissions, but the entire Program remains governed by
352
+ this License without regard to the additional permissions.
353
+
354
+ When you convey a copy of a covered work, you may at your option
355
+ remove any additional permissions from that copy, or from any part of
356
+ it. (Additional permissions may be written to require their own
357
+ removal in certain cases when you modify the work.) You may place
358
+ additional permissions on material, added by you to a covered work,
359
+ for which you have or can give appropriate copyright permission.
360
+
361
+ Notwithstanding any other provision of this License, for material you
362
+ add to a covered work, you may (if authorized by the copyright holders of
363
+ that material) supplement the terms of this License with terms:
364
+
365
+ a) Disclaiming warranty or limiting liability differently from the
366
+ terms of sections 15 and 16 of this License; or
367
+
368
+ b) Requiring preservation of specified reasonable legal notices or
369
+ author attributions in that material or in the Appropriate Legal
370
+ Notices displayed by works containing it; or
371
+
372
+ c) Prohibiting misrepresentation of the origin of that material, or
373
+ requiring that modified versions of such material be marked in
374
+ reasonable ways as different from the original version; or
375
+
376
+ d) Limiting the use for publicity purposes of names of licensors or
377
+ authors of the material; or
378
+
379
+ e) Declining to grant rights under trademark law for use of some
380
+ trade names, trademarks, or service marks; or
381
+
382
+ f) Requiring indemnification of licensors and authors of that
383
+ material by anyone who conveys the material (or modified versions of
384
+ it) with contractual assumptions of liability to the recipient, for
385
+ any liability that these contractual assumptions directly impose on
386
+ those licensors and authors.
387
+
388
+ All other non-permissive additional terms are considered "further
389
+ restrictions" within the meaning of section 10. If the Program as you
390
+ received it, or any part of it, contains a notice stating that it is
391
+ governed by this License along with a term that is a further
392
+ restriction, you may remove that term. If a license document contains
393
+ a further restriction but permits relicensing or conveying under this
394
+ License, you may add to a covered work material governed by the terms
395
+ of that license document, provided that the further restriction does
396
+ not survive such relicensing or conveying.
397
+
398
+ If you add terms to a covered work in accord with this section, you
399
+ must place, in the relevant source files, a statement of the
400
+ additional terms that apply to those files, or a notice indicating
401
+ where to find the applicable terms.
402
+
403
+ Additional terms, permissive or non-permissive, may be stated in the
404
+ form of a separately written license, or stated as exceptions;
405
+ the above requirements apply either way.
406
+
407
+ 8. Termination.
408
+
409
+ You may not propagate or modify a covered work except as expressly
410
+ provided under this License. Any attempt otherwise to propagate or
411
+ modify it is void, and will automatically terminate your rights under
412
+ this License (including any patent licenses granted under the third
413
+ paragraph of section 11).
414
+
415
+ However, if you cease all violation of this License, then your
416
+ license from a particular copyright holder is reinstated (a)
417
+ provisionally, unless and until the copyright holder explicitly and
418
+ finally terminates your license, and (b) permanently, if the copyright
419
+ holder fails to notify you of the violation by some reasonable means
420
+ prior to 60 days after the cessation.
421
+
422
+ Moreover, your license from a particular copyright holder is
423
+ reinstated permanently if the copyright holder notifies you of the
424
+ violation by some reasonable means, this is the first time you have
425
+ received notice of violation of this License (for any work) from that
426
+ copyright holder, and you cure the violation prior to 30 days after
427
+ your receipt of the notice.
428
+
429
+ Termination of your rights under this section does not terminate the
430
+ licenses of parties who have received copies or rights from you under
431
+ this License. If your rights have been terminated and not permanently
432
+ reinstated, you do not qualify to receive new licenses for the same
433
+ material under section 10.
434
+
435
+ 9. Acceptance Not Required for Having Copies.
436
+
437
+ You are not required to accept this License in order to receive or
438
+ run a copy of the Program. Ancillary propagation of a covered work
439
+ occurring solely as a consequence of using peer-to-peer transmission
440
+ to receive a copy likewise does not require acceptance. However,
441
+ nothing other than this License grants you permission to propagate or
442
+ modify any covered work. These actions infringe copyright if you do
443
+ not accept this License. Therefore, by modifying or propagating a
444
+ covered work, you indicate your acceptance of this License to do so.
445
+
446
+ 10. Automatic Licensing of Downstream Recipients.
447
+
448
+ Each time you convey a covered work, the recipient automatically
449
+ receives a license from the original licensors, to run, modify and
450
+ propagate that work, subject to this License. You are not responsible
451
+ for enforcing compliance by third parties with this License.
452
+
453
+ An "entity transaction" is a transaction transferring control of an
454
+ organization, or substantially all assets of one, or subdividing an
455
+ organization, or merging organizations. If propagation of a covered
456
+ work results from an entity transaction, each party to that
457
+ transaction who receives a copy of the work also receives whatever
458
+ licenses to the work the party's predecessor in interest had or could
459
+ give under the previous paragraph, plus a right to possession of the
460
+ Corresponding Source of the work from the predecessor in interest, if
461
+ the predecessor has it or can get it with reasonable efforts.
462
+
463
+ You may not impose any further restrictions on the exercise of the
464
+ rights granted or affirmed under this License. For example, you may
465
+ not impose a license fee, royalty, or other charge for exercise of
466
+ rights granted under this License, and you may not initiate litigation
467
+ (including a cross-claim or counterclaim in a lawsuit) alleging that
468
+ any patent claim is infringed by making, using, selling, offering for
469
+ sale, or importing the Program or any portion of it.
470
+
471
+ 11. Patents.
472
+
473
+ A "contributor" is a copyright holder who authorizes use under this
474
+ License of the Program or a work on which the Program is based. The
475
+ work thus licensed is called the contributor's "contributor version".
476
+
477
+ A contributor's "essential patent claims" are all patent claims
478
+ owned or controlled by the contributor, whether already acquired or
479
+ hereafter acquired, that would be infringed by some manner, permitted
480
+ by this License, of making, using, or selling its contributor version,
481
+ but do not include claims that would be infringed only as a
482
+ consequence of further modification of the contributor version. For
483
+ purposes of this definition, "control" includes the right to grant
484
+ patent sublicenses in a manner consistent with the requirements of
485
+ this License.
486
+
487
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
488
+ patent license under the contributor's essential patent claims, to
489
+ make, use, sell, offer for sale, import and otherwise run, modify and
490
+ propagate the contents of its contributor version.
491
+
492
+ In the following three paragraphs, a "patent license" is any express
493
+ agreement or commitment, however denominated, not to enforce a patent
494
+ (such as an express permission to practice a patent or covenant not to
495
+ sue for patent infringement). To "grant" such a patent license to a
496
+ party means to make such an agreement or commitment not to enforce a
497
+ patent against the party.
498
+
499
+ If you convey a covered work, knowingly relying on a patent license,
500
+ and the Corresponding Source of the work is not available for anyone
501
+ to copy, free of charge and under the terms of this License, through a
502
+ publicly available network server or other readily accessible means,
503
+ then you must either (1) cause the Corresponding Source to be so
504
+ available, or (2) arrange to deprive yourself of the benefit of the
505
+ patent license for this particular work, or (3) arrange, in a manner
506
+ consistent with the requirements of this License, to extend the patent
507
+ license to downstream recipients. "Knowingly relying" means you have
508
+ actual knowledge that, but for the patent license, your conveying the
509
+ covered work in a country, or your recipient's use of the covered work
510
+ in a country, would infringe one or more identifiable patents in that
511
+ country that you have reason to believe are valid.
512
+
513
+ If, pursuant to or in connection with a single transaction or
514
+ arrangement, you convey, or propagate by procuring conveyance of, a
515
+ covered work, and grant a patent license to some of the parties
516
+ receiving the covered work authorizing them to use, propagate, modify
517
+ or convey a specific copy of the covered work, then the patent license
518
+ you grant is automatically extended to all recipients of the covered
519
+ work and works based on it.
520
+
521
+ A patent license is "discriminatory" if it does not include within
522
+ the scope of its coverage, prohibits the exercise of, or is
523
+ conditioned on the non-exercise of one or more of the rights that are
524
+ specifically granted under this License. You may not convey a covered
525
+ work if you are a party to an arrangement with a third party that is
526
+ in the business of distributing software, under which you make payment
527
+ to the third party based on the extent of your activity of conveying
528
+ the work, and under which the third party grants, to any of the
529
+ parties who would receive the covered work from you, a discriminatory
530
+ patent license (a) in connection with copies of the covered work
531
+ conveyed by you (or copies made from those copies), or (b) primarily
532
+ for and in connection with specific products or compilations that
533
+ contain the covered work, unless you entered into that arrangement,
534
+ or that patent license was granted, prior to 28 March 2007.
535
+
536
+ Nothing in this License shall be construed as excluding or limiting
537
+ any implied license or other defenses to infringement that may
538
+ otherwise be available to you under applicable patent law.
539
+
540
+ 12. No Surrender of Others' Freedom.
541
+
542
+ If conditions are imposed on you (whether by court order, agreement or
543
+ otherwise) that contradict the conditions of this License, they do not
544
+ excuse you from the conditions of this License. If you cannot convey a
545
+ covered work so as to satisfy simultaneously your obligations under this
546
+ License and any other pertinent obligations, then as a consequence you may
547
+ not convey it at all. For example, if you agree to terms that obligate you
548
+ to collect a royalty for further conveying from those to whom you convey
549
+ the Program, the only way you could satisfy both those terms and this
550
+ License would be to refrain entirely from conveying the Program.
551
+
552
+ 13. Use with the GNU Affero General Public License.
553
+
554
+ Notwithstanding any other provision of this License, you have
555
+ permission to link or combine any covered work with a work licensed
556
+ under version 3 of the GNU Affero General Public License into a single
557
+ combined work, and to convey the resulting work. The terms of this
558
+ License will continue to apply to the part which is the covered work,
559
+ but the special requirements of the GNU Affero General Public License,
560
+ section 13, concerning interaction through a network will apply to the
561
+ combination as such.
562
+
563
+ 14. Revised Versions of this License.
564
+
565
+ The Free Software Foundation may publish revised and/or new versions of
566
+ the GNU General Public License from time to time. Such new versions will
567
+ be similar in spirit to the present version, but may differ in detail to
568
+ address new problems or concerns.
569
+
570
+ Each version is given a distinguishing version number. If the
571
+ Program specifies that a certain numbered version of the GNU General
572
+ Public License "or any later version" applies to it, you have the
573
+ option of following the terms and conditions either of that numbered
574
+ version or of any later version published by the Free Software
575
+ Foundation. If the Program does not specify a version number of the
576
+ GNU General Public License, you may choose any version ever published
577
+ by the Free Software Foundation.
578
+
579
+ If the Program specifies that a proxy can decide which future
580
+ versions of the GNU General Public License can be used, that proxy's
581
+ public statement of acceptance of a version permanently authorizes you
582
+ to choose that version for the Program.
583
+
584
+ Later license versions may give you additional or different
585
+ permissions. However, no additional obligations are imposed on any
586
+ author or copyright holder as a result of your choosing to follow a
587
+ later version.
588
+
589
+ 15. Disclaimer of Warranty.
590
+
591
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594
+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596
+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597
+ IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598
+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599
+
600
+ 16. Limitation of Liability.
601
+
602
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605
+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606
+ USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607
+ DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610
+ SUCH DAMAGES.
611
+
612
+ 17. Interpretation of Sections 15 and 16.
613
+
614
+ If the disclaimer of warranty and limitation of liability provided
615
+ above cannot be given local legal effect according to their terms,
616
+ reviewing courts shall apply local law that most closely approximates
617
+ an absolute waiver of all civil liability in connection with the
618
+ Program, unless a warranty or assumption of liability accompanies a
619
+ copy of the Program in return for a fee.
620
+
621
+ END OF TERMS AND CONDITIONS
assets/css/admin.css CHANGED
@@ -1,195 +1,195 @@
1
- div.wpi form {
2
- display: block;
3
- float: left;
4
- box-sizing: border-box;
5
- }
6
-
7
- div.wpi form div.notice {
8
- margin-left: 0;
9
- margin-right: 0;
10
- }
11
-
12
- div.wpi form ul {
13
- margin: 0;
14
- }
15
-
16
- div.wpi form input[type="checkbox"]:disabled + label {
17
- color: #999;
18
- }
19
-
20
- div.wpi form select,
21
- div.wpi form input[type="text"],
22
- div.wpi form textarea,
23
- div.wpi form .select2-container {
24
- width: 348px;
25
- }
26
-
27
- div.wpi form .select2-container {
28
- display: block;
29
- }
30
-
31
- div.wpi form tr.bewpi-columns .select2-container {
32
- width: 100% !important;
33
- }
34
-
35
- div.wpi form input[type="number"],
36
- div.wpi form input[type="color"] {
37
- width: 70px;
38
- }
39
-
40
- div.wpi form .select2-container {
41
- margin-bottom: 3px;
42
- }
43
-
44
- div.wpi form .select2-container ul li div,
45
- div.wpi form .select2-container ul li {
46
- cursor: move !important;
47
- }
48
-
49
- div.wpi form tr.bewpi-totals li {
50
- clear: left;
51
- }
52
-
53
- a.wpi.shop-order-action {
54
- background-repeat: no-repeat !important;
55
- background-position: center center !important;
56
- text-indent: -9999px;
57
- position: relative;
58
- padding: 0 !important;
59
- height: 2em !important;
60
- width: 2em;
61
- }
62
-
63
- a.wpi.shop-order-action.invoice {
64
- background-image: url(../images/invoice-icon.png) !important;
65
- }
66
-
67
- a.wpi.shop-order-action.packing-slip {
68
- background-image: url(../images/packing-slip-icon.png) !important;
69
- }
70
-
71
- table.wpi.order-page-meta-box.pdf-invoice {
72
- margin-bottom: 10px;
73
- width: 100%;
74
- }
75
-
76
- table.wpi.order-page-meta-box.pdf-invoice tr td:last-child {
77
- text-align: right;
78
- font-weight: bold;
79
- }
80
-
81
- a.wpi.order-page.invoice.button {
82
- margin: 4px !important;
83
- }
84
-
85
- .bewpi-notes {
86
- cursor: default;
87
- font-size: 13px;
88
- font-style: italic;
89
- margin-top: 3px;
90
- }
91
- #bewpi-plugin-activated-notice button.notice-dismiss {
92
- display: none;
93
- }
94
- .manage-column.column-bewpi_invoice_number {
95
- width: 8%;
96
- }
97
-
98
- /* Sidebar */
99
- .bewpi-sidebar {
100
- width: 25%;
101
- box-sizing: border-box;
102
- display: block;
103
- float: right;
104
- clear: right;
105
- border: 1px solid #ccc;
106
- background-color: white;
107
- padding: 0 20px 20px;
108
- margin-top: 20px;
109
- }
110
- .bewpi-sidebar.premium h3 {
111
- color: white;
112
- }
113
- .bewpi-sidebar.premium {
114
- background: #222;
115
- color: #ccc !important;
116
- }
117
- .bewpi-sidebar.support .btn {
118
- margin: 10px 10px 10px 0;
119
- }
120
- .bewpi-sidebar.support .github.btn {
121
- margin-bottom: -3px !important;
122
- margin-top: 20px;
123
- }
124
- .bewpi-sidebar.support .twitter.btn {
125
- margin-bottom: 0 !important;
126
- }
127
- #bewpi-mc-embed-signup {
128
- background: #222;
129
- clear:left;
130
- }
131
- #bewpi-mc-embed-signup form {
132
- margin: 0 !important;
133
- padding: 0;
134
- float: none;
135
- }
136
- #bewpi-mc-embed-signup input[type="text"] {
137
- width: 100%;
138
- }
139
- .bewpi-learn-more {
140
- padding: 10px 0;
141
- background-color: #F48C2D;
142
- color: white;
143
- text-decoration: none;
144
- display: block;
145
- font-weight: bold;
146
- font-size: 15px;
147
- text-align: center;
148
- }
149
- .bewpi-learn-more:hover {
150
- background-color: #EE7600;
151
- color: white;
152
- }
153
- #bewpi-mc-embed-signup input.button {
154
- margin: 0 !important;
155
- }
156
- #bewpi-mc-embedded-subscribe:hover {
157
- background-color: #EE7600 !important;
158
- }
159
- #bewpi-mc-embedded-subscribe {
160
- padding: 10px 0;
161
- background-color: #F48C2D;
162
- color: white;
163
- text-decoration: none;
164
- display: block;
165
- font-weight: bold;
166
- font-size: 15px;
167
- text-align: center;
168
- border-radius: 0;
169
- box-shadow: none;
170
- height: auto;
171
- width: 100%;
172
- line-height: normal;
173
- border: none;
174
- }
175
- #bewpi-mce-EMAIL {
176
- width: 100%;
177
- border-radius: 0;
178
- margin-top: 20px;
179
- margin-left: 0;
180
- border: 1px solid #ccc;
181
- padding: 10px;
182
- margin-bottom: 10px;
183
- }
184
- .bewpi-no-spam {
185
- font-size: 11px;
186
- text-align: center;
187
- margin-top: 1px !important;
188
- }
189
- /* End sidebar */
190
-
191
- @media screen and (max-width: 790px) {
192
- .bewpi-sidebar {
193
- display: none;
194
- }
195
  }
1
+ div.wpi form {
2
+ display: block;
3
+ float: left;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ div.wpi form div.notice {
8
+ margin-left: 0;
9
+ margin-right: 0;
10
+ }
11
+
12
+ div.wpi form ul {
13
+ margin: 0;
14
+ }
15
+
16
+ div.wpi form input[type="checkbox"]:disabled + label {
17
+ color: #999;
18
+ }
19
+
20
+ div.wpi form select,
21
+ div.wpi form input[type="text"],
22
+ div.wpi form textarea,
23
+ div.wpi form .select2-container {
24
+ width: 348px;
25
+ }
26
+
27
+ div.wpi form .select2-container {
28
+ display: block;
29
+ }
30
+
31
+ div.wpi form tr.bewpi-columns .select2-container {
32
+ width: 100% !important;
33
+ }
34
+
35
+ div.wpi form input[type="number"],
36
+ div.wpi form input[type="color"] {
37
+ width: 70px;
38
+ }
39
+
40
+ div.wpi form .select2-container {
41
+ margin-bottom: 3px;
42
+ }
43
+
44
+ div.wpi form .select2-container ul li div,
45
+ div.wpi form .select2-container ul li {
46
+ cursor: move !important;
47
+ }
48
+
49
+ div.wpi form tr.bewpi-totals li {
50
+ clear: left;
51
+ }
52
+
53
+ a.wpi.shop-order-action {
54
+ background-repeat: no-repeat !important;
55
+ background-position: center center !important;
56
+ text-indent: -9999px;
57
+ position: relative;
58
+ padding: 0 !important;
59
+ height: 2em !important;
60
+ width: 2em;
61
+ }
62
+
63
+ a.wpi.shop-order-action.invoice {
64
+ background-image: url(../images/invoice-icon.png) !important;
65
+ }
66
+
67
+ a.wpi.shop-order-action.packing-slip {
68
+ background-image: url(../images/packing-slip-icon.png) !important;
69
+ }
70
+
71
+ table.wpi.order-page-meta-box.pdf-invoice {
72
+ margin-bottom: 10px;
73
+ width: 100%;
74
+ }
75
+
76
+ table.wpi.order-page-meta-box.pdf-invoice tr td:last-child {
77
+ text-align: right;
78
+ font-weight: bold;
79
+ }
80
+
81
+ a.wpi.order-page.invoice.button {
82
+ margin: 4px !important;
83
+ }
84
+
85
+ .bewpi-notes {
86
+ cursor: default;
87
+ font-size: 13px;
88
+ font-style: italic;
89
+ margin-top: 3px;
90
+ }
91
+ #bewpi-plugin-activated-notice button.notice-dismiss {
92
+ display: none;
93
+ }
94
+ .manage-column.column-bewpi_invoice_number {
95
+ width: 8%;
96
+ }
97
+
98
+ /* Sidebar */
99
+ .bewpi-sidebar {
100
+ width: 25%;
101
+ box-sizing: border-box;
102
+ display: block;
103
+ float: right;
104
+ clear: right;
105
+ border: 1px solid #ccc;
106
+ background-color: white;
107
+ padding: 0 20px 20px;
108
+ margin-top: 20px;
109
+ }
110
+ .bewpi-sidebar.premium h3 {
111
+ color: white;
112
+ }
113
+ .bewpi-sidebar.premium {
114
+ background: #222;
115
+ color: #ccc !important;
116
+ }
117
+ .bewpi-sidebar.support .btn {
118
+ margin: 10px 10px 10px 0;
119
+ }
120
+ .bewpi-sidebar.support .github.btn {
121
+ margin-bottom: -3px !important;
122
+ margin-top: 20px;
123
+ }
124
+ .bewpi-sidebar.support .twitter.btn {
125
+ margin-bottom: 0 !important;
126
+ }
127
+ #bewpi-mc-embed-signup {
128
+ background: #222;
129
+ clear:left;
130
+ }
131
+ #bewpi-mc-embed-signup form {
132
+ margin: 0 !important;
133
+ padding: 0;
134
+ float: none;
135
+ }
136
+ #bewpi-mc-embed-signup input[type="text"] {
137
+ width: 100%;
138
+ }
139
+ .bewpi-learn-more {
140
+ padding: 10px 0;
141
+ background-color: #F48C2D;
142
+ color: white;
143
+ text-decoration: none;
144
+ display: block;
145
+ font-weight: bold;
146
+ font-size: 15px;
147
+ text-align: center;
148
+ }
149
+ .bewpi-learn-more:hover {
150
+ background-color: #EE7600;
151
+ color: white;
152
+ }
153
+ #bewpi-mc-embed-signup input.button {
154
+ margin: 0 !important;
155
+ }
156
+ #bewpi-mc-embedded-subscribe:hover {
157
+ background-color: #EE7600 !important;
158
+ }
159
+ #bewpi-mc-embedded-subscribe {
160
+ padding: 10px 0;
161
+ background-color: #F48C2D;
162
+ color: white;
163
+ text-decoration: none;
164
+ display: block;
165
+ font-weight: bold;
166
+ font-size: 15px;
167
+ text-align: center;
168
+ border-radius: 0;
169
+ box-shadow: none;
170
+ height: auto;
171
+ width: 100%;
172
+ line-height: normal;
173
+ border: none;
174
+ }
175
+ #bewpi-mce-EMAIL {
176
+ width: 100%;
177
+ border-radius: 0;
178
+ margin-top: 20px;
179
+ margin-left: 0;
180
+ border: 1px solid #ccc;
181
+ padding: 10px;
182
+ margin-bottom: 10px;
183
+ }
184
+ .bewpi-no-spam {
185
+ font-size: 11px;
186
+ text-align: center;
187
+ margin-top: 1px !important;
188
+ }
189
+ /* End sidebar */
190
+
191
+ @media screen and (max-width: 790px) {
192
+ .bewpi-sidebar {
193
+ display: none;
194
+ }
195
  }
assets/js/admin.js CHANGED
@@ -1,134 +1,134 @@
1
- (function() {
2
- 'use strict';
3
-
4
- var setting = {};
5
-
6
- setting.settings = ['bewpi-theme-text-black', 'bewpi-display-prices-incl-tax', 'bewpi-shipping-taxable', 'bewpi-company-details', 'bewpi-intro-text', 'bewpi-right-footer-column', 'bewpi-show-sku', 'bewpi-show-tax', 'bewpi-show-tax-row', 'bewpi-show-discount', 'bewpi-show-shipping'];
7
-
8
- setting.enableDisableNextInvoiceNumbering = function (elem) {
9
- document.getElementById('bewpi-next-invoice-number').readOnly = ! elem.checked;
10
- };
11
-
12
- setting.deactivatePlugin = function(element) {
13
- element.onclick = null;
14
- element.click();
15
- };
16
-
17
- setting.switchSettings = function(event) {
18
- var display = (event.target.value.toLowerCase().indexOf( 'minimal' ) !== -1) ? 'none' : 'table-row';
19
-
20
- setting.settings.forEach(function (settingId){
21
- var settingElem = document.getElementById(settingId);
22
- if (settingElem) {
23
- settingElem.parentElement.parentElement.style.display = display;
24
- }
25
- })
26
- };
27
-
28
- var notice = {};
29
-
30
- notice.dismiss = function(event) {
31
- event.preventDefault();
32
- var attrValue, optionName, dismissableLength, data;
33
-
34
- attrValue = event.target.parentElement.getAttribute('data-dismissible').split('-');
35
-
36
- // remove the dismissible length from the attribute value and rejoin the array.
37
- dismissableLength = attrValue.pop();
38
- optionName = attrValue.join('-');
39
-
40
- var params = 'action=dismiss-notice&option_name=' + optionName + '&dismissible_length=' + dismissableLength + '&nonce=' + BEWPI_AJAX.dismiss_nonce;
41
-
42
- var xhr = new XMLHttpRequest();
43
- xhr.open('POST', BEWPI_AJAX.ajaxurl, true);
44
- xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
45
- xhr.send(params);
46
- };
47
-
48
- notice.deactivate = function(event) {
49
- var isNoticeActive = document.querySelector('tr.plugin-update-tr[data-plugin="woocommerce-pdf-invoices/bootstrap.php"]');
50
- if (isNoticeActive) {
51
- return true;
52
- }
53
-
54
- // display notice.
55
- event.preventDefault();
56
-
57
- var xhr = new XMLHttpRequest();
58
- xhr.open('GET', BEWPI_AJAX.ajaxurl + '?action=deactivation-notice&_wpnonce=' + BEWPI_AJAX.deactivation_nonce, true);
59
-
60
- xhr.onreadystatechange = function() {
61
- if (xhr.readyState === XMLHttpRequest.DONE) {
62
- if (xhr.status === 200) {
63
-
64
- var adminNotice = xhr.responseText;
65
- if ( adminNotice === 0 ) {
66
- setting.deactivatePlugin(event.target);
67
- }
68
-
69
- // create node from admin notice.
70
- var tr = document.createElement('tr');
71
- tr.setAttribute('class', 'plugin-update-tr active updated');
72
- tr.setAttribute('data-slug', 'woocommerce-pdf-invoices');
73
- tr.setAttribute('data-plugin', 'woocommerce-pdf-invoices/bootstrap.php');
74
-
75
- var td = document.createElement('td');
76
- td.setAttribute('colspan', '3');
77
- td.setAttribute('class', 'plugin-update colspanchange');
78
-
79
- var div = document.createElement('div');
80
- div.innerHTML = adminNotice;
81
- var notice = div.firstChild;
82
-
83
- td.appendChild(notice);
84
- tr.appendChild(td);
85
-
86
- var plugin = document.querySelector('tr[data-plugin="woocommerce-pdf-invoices/bootstrap.php"]');
87
- if (plugin) {
88
- plugin.parentNode.insertBefore(tr, plugin.nextSibling);
89
- plugin.className += ' updated';
90
- return;
91
- }
92
-
93
- // skip admin notice and just deactivate plugin.
94
- setting.deactivatePlugin(event.target);
95
- } else {
96
- setting.deactivatePlugin(event.target);
97
- }
98
- }
99
- };
100
-
101
- xhr.send();
102
- };
103
-
104
- window.addEventListener('load', function () {
105
- // Add click listener to dismiss notice.
106
- var notice = document.querySelector('div[data-dismissible] button.notice-dismiss');
107
- if (notice !== null) {
108
- notice.onclick = bewpi.notice.dismiss;
109
- }
110
-
111
- if ( pagenow === 'plugins' ) {
112
- // Add click listener to display notice on deactivation of plugin.
113
- var deactivate = document.querySelector('tr[data-plugin="woocommerce-pdf-invoices/bootstrap.php"] span.deactivate a');
114
- if (deactivate !== null) {
115
- deactivate.onclick = bewpi.notice.deactivate;
116
- }
117
- }
118
-
119
- if ( pagenow === 'woocommerce_page_bewpi-invoices' ) {
120
- var template = document.querySelector('select#bewpi-template-name');
121
- if (template !== null) {
122
-
123
- template.addEventListener('change', bewpi.setting.switchSettings );
124
-
125
- var event = new Event('change');
126
- template.dispatchEvent(event);
127
- }
128
- }
129
- });
130
-
131
- window.bewpi = {};
132
- window.bewpi.notice = notice;
133
- window.bewpi.setting = setting;
134
- })();
1
+ (function() {
2
+ 'use strict';
3
+
4
+ var setting = {};
5
+
6
+ setting.settings = ['bewpi-theme-text-black', 'bewpi-display-prices-incl-tax', 'bewpi-shipping-taxable', 'bewpi-company-details', 'bewpi-intro-text', 'bewpi-right-footer-column', 'bewpi-show-sku', 'bewpi-show-tax', 'bewpi-show-tax-row', 'bewpi-show-discount', 'bewpi-show-shipping'];
7
+
8
+ setting.enableDisableNextInvoiceNumbering = function (elem) {
9
+ document.getElementById('bewpi-next-invoice-number').readOnly = ! elem.checked;
10
+ };
11
+
12
+ setting.deactivatePlugin = function(element) {
13
+ element.onclick = null;
14
+ element.click();
15
+ };
16
+
17
+ setting.switchSettings = function(event) {
18
+ var display = (event.target.value.toLowerCase().indexOf( 'minimal' ) !== -1) ? 'none' : 'table-row';
19
+
20
+ setting.settings.forEach(function (settingId){
21
+ var settingElem = document.getElementById(settingId);
22
+ if (settingElem) {
23
+ settingElem.parentElement.parentElement.style.display = display;
24
+ }
25
+ })
26
+ };
27
+
28
+ var notice = {};
29
+
30
+ notice.dismiss = function(event) {
31
+ event.preventDefault();
32
+ var attrValue, optionName, dismissableLength, data;
33
+
34
+ attrValue = event.target.parentElement.getAttribute('data-dismissible').split('-');
35
+
36
+ // remove the dismissible length from the attribute value and rejoin the array.
37
+ dismissableLength = attrValue.pop();
38
+ optionName = attrValue.join('-');
39
+
40
+ var params = 'action=dismiss-notice&option_name=' + optionName + '&dismissible_length=' + dismissableLength + '&nonce=' + BEWPI_AJAX.dismiss_nonce;
41
+
42
+ var xhr = new XMLHttpRequest();
43
+ xhr.open('POST', BEWPI_AJAX.ajaxurl, true);
44
+ xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
45
+ xhr.send(params);
46
+ };
47
+
48
+ notice.deactivate = function(event) {
49
+ var isNoticeActive = document.querySelector('tr.plugin-update-tr[data-plugin="woocommerce-pdf-invoices/bootstrap.php"]');
50
+ if (isNoticeActive) {
51
+ return true;
52
+ }
53
+
54
+ // display notice.
55
+ event.preventDefault();
56
+
57
+ var xhr = new XMLHttpRequest();
58
+ xhr.open('GET', BEWPI_AJAX.ajaxurl + '?action=deactivation-notice&_wpnonce=' + BEWPI_AJAX.deactivation_nonce, true);
59
+
60
+ xhr.onreadystatechange = function() {
61
+ if (xhr.readyState === XMLHttpRequest.DONE) {
62
+ if (xhr.status === 200) {
63
+
64
+ var adminNotice = xhr.responseText;
65
+ if ( adminNotice === 0 ) {
66
+ setting.deactivatePlugin(event.target);
67
+ }
68
+
69
+ // create node from admin notice.
70
+ var tr = document.createElement('tr');
71
+ tr.setAttribute('class', 'plugin-update-tr active updated');
72
+ tr.setAttribute('data-slug', 'woocommerce-pdf-invoices');
73
+ tr.setAttribute('data-plugin', 'woocommerce-pdf-invoices/bootstrap.php');
74
+
75
+ var td = document.createElement('td');
76
+ td.setAttribute('colspan', '3');
77
+ td.setAttribute('class', 'plugin-update colspanchange');
78
+
79
+ var div = document.createElement('div');
80
+ div.innerHTML = adminNotice;
81
+ var notice = div.firstChild;
82
+
83
+ td.appendChild(notice);
84
+ tr.appendChild(td);
85
+
86
+ var plugin = document.querySelector('tr[data-plugin="woocommerce-pdf-invoices/bootstrap.php"]');
87
+ if (plugin) {
88
+ plugin.parentNode.insertBefore(tr, plugin.nextSibling);
89
+ plugin.className += ' updated';
90
+ return;
91
+ }
92
+
93
+ // skip admin notice and just deactivate plugin.
94
+ setting.deactivatePlugin(event.target);
95
+ } else {
96
+ setting.deactivatePlugin(event.target);
97
+ }
98
+ }
99
+ };
100
+
101
+ xhr.send();
102
+ };
103
+
104
+ window.addEventListener('load', function () {
105
+ // Add click listener to dismiss notice.
106
+ var notice = document.querySelector('div[data-dismissible] button.notice-dismiss');
107
+ if (notice !== null) {
108
+ notice.onclick = bewpi.notice.dismiss;
109
+ }
110
+
111
+ if ( pagenow === 'plugins' ) {
112
+ // Add click listener to display notice on deactivation of plugin.
113
+ var deactivate = document.querySelector('tr[data-plugin="woocommerce-pdf-invoices/bootstrap.php"] span.deactivate a');
114
+ if (deactivate !== null) {
115
+ deactivate.onclick = bewpi.notice.deactivate;
116
+ }
117
+ }
118
+
119
+ if ( pagenow === 'woocommerce_page_bewpi-invoices' ) {
120
+ var template = document.querySelector('select#bewpi-template-name');
121
+ if (template !== null) {
122
+
123
+ template.addEventListener('change', bewpi.setting.switchSettings );
124
+
125
+ var event = new Event('change');
126
+ template.dispatchEvent(event);
127
+ }
128
+ }
129
+ });
130
+
131
+ window.bewpi = {};
132
+ window.bewpi.notice = notice;
133
+ window.bewpi.setting = setting;
134
+ })();
assets/js/settings.js CHANGED
@@ -1,52 +1,52 @@
1
- /* global settings */
2
- ( function( $ ) {
3
- // Select all/none
4
- $( '.wpi' ).on( 'click', '.select_all', function() {
5
- $( this ).closest( 'td' ).find( 'select option' ).attr( 'selected', 'selected' );
6
- $( this ).closest( 'td' ).find( 'select' ).trigger( 'change' );
7
- return false;
8
- });
9
-
10
- $( '.wpi' ).on( 'click', '.select_none', function() {
11
- $( this ).closest( 'td' ).find( 'select option' ).removeAttr( 'selected' );
12
- $( this ).closest( 'td' ).find( 'select' ).trigger( 'change' );
13
- return false;
14
- });
15
-
16
- $( window ).load( function () {
17
- $( '.wpi .bewpi-columns, .wpi .bewpi-totals' ).find( 'ul' ).sortable();
18
- $( '.wpi .bewpi-columns, .wpi .bewpi-totals' ).find( 'ul' ).disableSelection();
19
-
20
- $( '.wpi .bewpi-columns ul, .wpi .bewpi-totals ul' ).sortable({
21
- stop: function( event, ui ) {
22
-
23
- var tr = $(event.target.closest('tr'));
24
-
25
- var columns = tr.find('li div, li').map(function () {
26
- return $(this).clone()
27
- .children()
28
- .remove()
29
- .end()
30
- .text();
31
- }).get();
32
-
33
- var options = tr.find('select option');
34
- var selected = [];
35
-
36
- columns.forEach(function (column) {
37
- options.each(function (index, option) {
38
- if (option.innerHTML === column) {
39
- selected.push(option);
40
- }
41
- });
42
- });
43
-
44
- selected.forEach(function (option) {
45
- tr.find('select')
46
- .append(option);
47
- });
48
- }
49
- });
50
- });
51
-
52
- })( jQuery );
1
+ /* global settings */
2
+ ( function( $ ) {
3
+ // Select all/none
4
+ $( '.wpi' ).on( 'click', '.select_all', function() {
5
+ $( this ).closest( 'td' ).find( 'select option' ).attr( 'selected', 'selected' );
6
+ $( this ).closest( 'td' ).find( 'select' ).trigger( 'change' );
7
+ return false;
8
+ });
9
+
10
+ $( '.wpi' ).on( 'click', '.select_none', function() {
11
+ $( this ).closest( 'td' ).find( 'select option' ).removeAttr( 'selected' );
12
+ $( this ).closest( 'td' ).find( 'select' ).trigger( 'change' );
13
+ return false;
14
+ });
15
+
16
+ $( window ).load( function () {
17
+ $( '.wpi .bewpi-columns, .wpi .bewpi-totals' ).find( 'ul' ).sortable();
18
+ $( '.wpi .bewpi-columns, .wpi .bewpi-totals' ).find( 'ul' ).disableSelection();
19
+
20
+ $( '.wpi .bewpi-columns ul, .wpi .bewpi-totals ul' ).sortable({
21
+ stop: function( event, ui ) {
22
+
23
+ var tr = $(event.target.closest('tr'));
24
+
25
+ var columns = tr.find('li div, li').map(function () {
26
+ return $(this).clone()
27
+ .children()
28
+ .remove()
29
+ .end()
30
+ .text();
31
+ }).get();
32
+
33
+ var options = tr.find('select option');
34
+ var selected = [];
35
+
36
+ columns.forEach(function (column) {
37
+ options.each(function (index, option) {
38
+ if (option.innerHTML === column) {
39
+ selected.push(option);
40
+ }
41
+ });
42
+ });
43
+
44
+ selected.forEach(function (option) {
45
+ tr.find('select')
46
+ .append(option);
47
+ });
48
+ }
49
+ });
50
+ });
51
+
52
+ })( jQuery );
bootstrap.php CHANGED
@@ -1,346 +1,346 @@
1
- <?php
2
- /**
3
- * Plugin Name: WooCommerce PDF Invoices
4
- * Plugin URI: https://wordpress.org/plugins/woocommerce-pdf-invoices
5
- * Description: Automatically generate and attach customizable PDF Invoices to WooCommerce emails and connect with Dropbox, Google Drive, OneDrive or Egnyte.
6
- * Version: 2.9.12
7
- * Author: Bas Elbers
8
- * Author URI: http://wcpdfinvoices.com
9
- * License: GPL-2.0+
10
- * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
11
- * Text Domain: woocommerce-pdf-invoices
12
- * Domain Path: /lang
13
- * WC requires at least: 2.6.14
14
- * WC tested up to: 3.3.3
15
- */
16
-
17
- defined( 'ABSPATH' ) or exit;
18
-
19
- /**
20
- * @deprecated instead use WPI_VERSION.
21
- */
22
- define( 'BEWPI_VERSION', '2.9.12' );
23
-
24
- define( 'WPI_VERSION', '2.9.12' );
25
-
26
- /**
27
- * Load WooCommerce PDF Invoices plugin.
28
- */
29
- function _bewpi_load_plugin() {
30
-
31
- if ( ! class_exists( 'WooCommerce' ) ) {
32
- return;
33
- }
34
-
35
- /**
36
- * @deprecated instead use `WPI_FILE`.
37
- */
38
- if ( ! defined( 'BEWPI_FILE' ) ) {
39
- define( 'BEWPI_FILE', __FILE__ );
40
- }
41
-
42
- /**
43
- * @deprecated instead use `WPI_DIR`.
44
- */
45
- if ( ! defined( 'BEWPI_DIR' ) ) {
46
- define( 'BEWPI_DIR', plugin_dir_path( __FILE__ ) );
47
- }
48
-
49
- /**
50
- * @deprecated instead use `plugin_basename( WPI_FILE )`.
51
- */
52
- if ( ! defined( 'BEWPI_PLUGIN_BASENAME' ) ) {
53
- define( 'BEWPI_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
54
- }
55
-
56
- if ( ! defined( 'WPI_FILE' ) ) {
57
- define( 'WPI_FILE', __FILE__ );
58
- }
59
-
60
- if ( ! defined( 'WPI_DIR' ) ) {
61
- define( 'WPI_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
62
- }
63
-
64
- if ( file_exists( WPI_DIR . '/vendor/autoload.php' ) ) {
65
- require_once WPI_DIR . '/vendor/autoload.php';
66
- }
67
-
68
- /**
69
- * Main instance of BE_WooCommerce_PDF_Invoices.
70
- *
71
- * @since 2.5.0
72
- * @deprecated Use WPI() instead.
73
- *
74
- * @return BE_WooCommerce_PDF_Invoices
75
- */
76
- function BEWPI() {
77
- return BE_WooCommerce_PDF_Invoices::instance();
78
- }
79
- BEWPI();
80
-
81
- /**
82
- * Main instance of BE_WooCommerce_PDF_Invoices.
83
- *
84
- * @since 2.9.1
85
- * @return BE_WooCommerce_PDF_Invoices
86
- */
87
- function WPI() {
88
- return BE_WooCommerce_PDF_Invoices::instance();
89
- }
90
- WPI();
91
-
92
- if ( is_admin() ) {
93
- _bewpi_on_plugin_update();
94
- }
95
- }
96
- add_action( 'plugins_loaded', '_bewpi_load_plugin', 10 );
97
-
98
- /**
99
- * On plugin update.
100
- *
101
- * @since 2.5.0
102
- */
103
- function _bewpi_on_plugin_update() {
104
- $current_version = get_site_option( 'bewpi_version' );
105
-
106
- if ( false === $current_version ) {
107
-
108
- // First time creation of directories.
109
- WPI()->setup_directories();
110
-
111
- add_site_option( 'bewpi_version', WPI_VERSION );
112
-
113
- } elseif ( WPI_VERSION !== $current_version ) {
114
-
115
- // Update directories.
116
- WPI()->setup_directories();
117
-
118
- // temporary change max execution time to higher value to prevent internal server errors.
119
- $max_execution_time = (int) ini_get( 'max_execution_time' );
120
- if ( 0 !== $max_execution_time ) {
121
- set_time_limit( 360 );
122
- }
123
-
124
- // version 2.6.1- need to be updated with new email options and postmeta.
125
- if ( version_compare( $current_version, '2.6.1' ) <= 0 ) {
126
- update_email_type_options();
127
- update_postmeta();
128
- }
129
-
130
- // version 2.7.0- uploads folder changed to uploads/woocommerce-pdf-invoices.
131
- if ( version_compare( $current_version, '2.7.0' ) <= 0 ) {
132
- // Move invoice from uploads/bewpi-invoices to uploads/woocommerce-pdf-invoices/attachments.
133
- move_pdf_invoices();
134
-
135
- // Rename uploads/bewpi-templates/invoices to uploads/bewpi-templates/invoice.
136
- $upload_dir = wp_upload_dir();
137
- rename( BEWPI_CUSTOM_TEMPLATES_INVOICES_DIR, $upload_dir['basedir'] . '/bewpi-templates/invoice' );
138
- }
139
-
140
- // version 2.9.2- need to update "Attach to Emails" option to recursive structure.
141
- if ( version_compare( $current_version, '2.9.2' ) <= 0 ) {
142
- update_email_types_options_to_recursive();
143
- }
144
-
145
- if ( version_compare( $current_version, '2.9.3' ) <= 0 ) {
146
- update_email_types_options();
147
- }
148
-
149
- set_time_limit( $max_execution_time );
150
-
151
- update_site_option( 'bewpi_version', WPI_VERSION );
152
- }
153
- }
154
-
155
- /**
156
- * "Attach to Email" and "Attach to new order email" options changed to multi-checkbox, so update settings accordingly.
157
- *
158
- * @since 2.5.0
159
- */
160
- function update_email_type_options() {
161
- $general_options = get_option( 'bewpi_general_settings' );
162
- // check if we need to add and/or remove options.
163
- if ( isset( $general_options['bewpi_email_type'] ) ) {
164
- $email_type = $general_options['bewpi_email_type'];
165
- if ( ! empty( $email_type ) ) {
166
- // set new email type option.
167
- $general_options[ $email_type ] = 1;
168
- }
169
- // delete old option.
170
- unset( $general_options['bewpi_email_type'] );
171
-
172
- update_option( 'bewpi_general_settings', $general_options );
173
- }
174
-
175
- if ( isset( $general_options['bewpi_new_order'] ) ) {
176
- $email_type = $general_options['bewpi_new_order'];
177
- if ( $email_type ) {
178
- // set invoice attach to new order email option.
179
- $general_options['new_order'] = 1;
180
- }
181
- // delete old option.
182
- unset( $general_options['bewpi_new_order'] );
183
-
184
- update_option( 'bewpi_general_settings', $general_options );
185
- }
186
- }
187
-
188
- /**
189
- * Update postmeta in database.
190
- */
191
- function update_postmeta() {
192
- $posts = get_posts( array(
193
- 'numberposts' => -1,
194
- 'post_type' => 'shop_order',
195
- 'post_status' => array_keys( wc_get_order_statuses() ),
196
- 'fields' => 'ids',
197
- ) );
198
-
199
- $template_options = get_option( 'bewpi_template_settings' );
200
-
201
- $date_format = $template_options['bewpi_date_format'];
202
- if ( empty( $date_format ) ) {
203
- $date_format = (string) get_option( 'date_format' );
204
- }
205
-
206
- foreach ( $posts as $post_id ) {
207
- // Create pdf path postmeta for all shop orders.
208
- create_pdf_path_postmeta( $post_id, $template_options );
209
-
210
- // Format date postmeta to mysql date.
211
- update_date_format_postmeta( $post_id, $date_format );
212
- }
213
- }
214
-
215
- /**
216
- * Create full path postmeta for all orders that have a pdf invoice generated.
217
- *
218
- * @param int $post_id Post ID or WC Order ID.
219
- * @param array $template_options User template options.
220
- *
221
- * @since 2.6.0
222
- */
223
- function create_pdf_path_postmeta( $post_id, $template_options ) {
224
- $pdf_path = get_post_meta( $post_id, '_bewpi_invoice_pdf_path', true );
225
- if ( $pdf_path ) {
226
- return;
227
- }
228
-
229
- $formatted_invoice_number = get_post_meta( $post_id, '_bewpi_formatted_invoice_number', true );
230
- if ( ! $formatted_invoice_number ) {
231
- return;
232
- }
233
-
234
- // One folder for all invoices.
235
- $new_pdf_path = $formatted_invoice_number . '.pdf';
236
- if ( (bool) $template_options['bewpi_reset_counter_yearly'] ) {
237
- // Yearly sub-folders.
238
- $invoice_year = get_post_meta( $post_id, '_bewpi_invoice_year', true );
239
- if ( $invoice_year ) {
240
- $new_pdf_path = $invoice_year . '/' . $formatted_invoice_number . '.pdf';
241
- }
242
- } else {
243
- $new_pdf_path = $formatted_invoice_number . '.pdf';
244
- }
245
-
246
- if ( file_exists( BEWPI_INVOICES_DIR . $new_pdf_path ) ) {
247
- update_post_meta( $post_id, '_bewpi_invoice_pdf_path', $new_pdf_path );
248
- }
249
- }
250
-
251
- /**
252
- * Format date postmeta to mysql date.
253
- *
254
- * @param int $post_id Post ID or WC Order ID.
255
- * @param string $date_format User option date format.
256
- *
257
- * @since 2.6.0
258
- */
259
- function update_date_format_postmeta( $post_id, $date_format ) {
260
- $invoice_date = get_post_meta( $post_id, '_bewpi_invoice_date', true );
261
- if ( ! $invoice_date ) {
262
- return;
263
- }
264
-
265
- $date = DateTime::createFromFormat( $date_format, $invoice_date );
266
- if ( ! $date ) {
267
- return;
268
- }
269
-
270
- update_post_meta( $post_id, '_bewpi_invoice_date', $date->format( 'Y-m-d H:i:s' ) );
271
- }
272
-
273
- /**
274
- * Move all invoices to new uploads dir.
275
- */
276
- function move_pdf_invoices() {
277
- $files = glob( BEWPI_INVOICES_DIR . '/*' );
278
- foreach ( $files as $file ) {
279
-
280
- if ( is_dir( $file ) ) {
281
- wp_mkdir_p( WPI_ATTACHMENTS_DIR . '/' . basename( $file ) );
282
-
283
- $files_year = glob( $file . '/*' );
284
- foreach ( $files_year as $file_year ) {
285
- if ( is_file( $file_year ) ) {
286
- $pdf_path = str_replace( BEWPI_INVOICES_DIR . '/', '', $file_year );
287
- copy( $file_year, WPI_ATTACHMENTS_DIR . '/' . $pdf_path );
288
- }
289
- }
290
-
291
- continue;
292
- }
293
-
294
- copy( $file, WPI_ATTACHMENTS_DIR . '/' . basename( $file ) );
295
- }
296
- }
297
-
298
- /**
299
- * Update email types options to recursive array structure.
300
- */
301
- function update_email_types_options_to_recursive() {
302
- $general_options = get_option( 'bewpi_general_settings' );
303
- $email_types = array( 'new_order', 'customer_on_hold_order', 'customer_processing_order', 'customer_completed_order', 'customer_invoice', 'new_renewal_order', 'customer_completed_switch_order', 'customer_processing_renewal_order', 'customer_completed_renewal_order', 'customer_renewal_invoice' );
304
-
305
- foreach ( $email_types as $email_type ) {
306
- if ( isset( $general_options[ $email_type ] ) ) {
307
- $general_options['bewpi_email_types'] = array(
308
- $email_type => $general_options[ $email_type ],
309
- );
310
-
311
- // Remove older option.
312
- unset( $general_options[ $email_type ] );
313
- }
314
- }
315
-
316
- update_option( 'bewpi_general_settings', $general_options );
317
- }
318
-
319
- /**
320
- * Update email types for plugin version 2.9.4+.
321
- */
322
- function update_email_types_options() {
323
- $general_settings = get_option( 'bewpi_general_settings' );
324
- $email_types = array();
325
-
326
- foreach ( (array) $general_settings['bewpi_email_types'] as $email_type => $enabled ) {
327
- if ( $enabled ) {
328
- $email_types[] = $email_type;
329
- }
330
- }
331
-
332
- $general_settings['bewpi_email_types'] = $email_types;
333
-
334
- update_option( 'bewpi_general_settings', $general_settings );
335
- }
336
-
337
- /**
338
- * Save install date, plugin version to db and set transient to show activation notice.
339
- *
340
- * @since 2.5.0
341
- */
342
- function _bewpi_on_plugin_activation() {
343
- add_site_option( 'bewpi_install_date', current_time( 'mysql' ) );
344
- set_transient( 'bewpi-admin-notice-activation', true, 30 );
345
- }
346
- register_activation_hook( __FILE__, '_bewpi_on_plugin_activation' );
1
+ <?php
2
+ /**
3
+ * Plugin Name: WooCommerce PDF Invoices
4
+ * Plugin URI: https://wordpress.org/plugins/woocommerce-pdf-invoices
5
+ * Description: Automatically generate and attach customizable PDF Invoices to WooCommerce emails and connect with Dropbox, Google Drive, OneDrive or Egnyte.
6
+ * Version: 2.9.14
7
+ * Author: Bas Elbers
8
+ * Author URI: http://wcpdfinvoices.com
9
+ * License: GPL-2.0+
10
+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
11
+ * Text Domain: woocommerce-pdf-invoices
12
+ * Domain Path: /lang
13
+ * WC requires at least: 2.6.14
14
+ * WC tested up to: 3.4.3
15
+ */
16
+
17
+ defined( 'ABSPATH' ) or exit;
18
+
19
+ /**
20
+ * @deprecated instead use WPI_VERSION.
21
+ */
22
+ define( 'BEWPI_VERSION', '2.9.14' );
23
+
24
+ define( 'WPI_VERSION', '2.9.14' );
25
+
26
+ /**
27
+ * Load WooCommerce PDF Invoices plugin.
28
+ */
29
+ function _bewpi_load_plugin() {
30
+
31
+ if ( ! class_exists( 'WooCommerce' ) ) {
32
+ return;
33
+ }
34
+
35
+ /**
36
+ * @deprecated instead use `WPI_FILE`.
37
+ */
38
+ if ( ! defined( 'BEWPI_FILE' ) ) {
39
+ define( 'BEWPI_FILE', __FILE__ );
40
+ }
41
+
42
+ /**
43
+ * @deprecated instead use `WPI_DIR`.
44
+ */
45
+ if ( ! defined( 'BEWPI_DIR' ) ) {
46
+ define( 'BEWPI_DIR', plugin_dir_path( __FILE__ ) );
47
+ }
48
+
49
+ /**
50
+ * @deprecated instead use `plugin_basename( WPI_FILE )`.
51
+ */
52
+ if ( ! defined( 'BEWPI_PLUGIN_BASENAME' ) ) {
53
+ define( 'BEWPI_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
54
+ }
55
+
56
+ if ( ! defined( 'WPI_FILE' ) ) {
57
+ define( 'WPI_FILE', __FILE__ );
58
+ }
59
+
60
+ if ( ! defined( 'WPI_DIR' ) ) {
61
+ define( 'WPI_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
62
+ }
63
+
64
+ if ( file_exists( WPI_DIR . '/vendor/autoload.php' ) ) {
65
+ require_once WPI_DIR . '/vendor/autoload.php';
66
+ }
67
+
68
+ /**
69
+ * Main instance of BE_WooCommerce_PDF_Invoices.
70
+ *
71
+ * @since 2.5.0
72
+ * @deprecated Use WPI() instead.
73
+ *
74
+ * @return BE_WooCommerce_PDF_Invoices
75
+ */
76
+ function BEWPI() {
77
+ return BE_WooCommerce_PDF_Invoices::instance();
78
+ }
79
+ BEWPI();
80
+
81
+ /**
82
+ * Main instance of BE_WooCommerce_PDF_Invoices.
83
+ *
84
+ * @since 2.9.1
85
+ * @return BE_WooCommerce_PDF_Invoices
86
+ */
87
+ function WPI() {
88
+ return BE_WooCommerce_PDF_Invoices::instance();
89
+ }
90
+ WPI();
91
+
92
+ if ( is_admin() ) {
93
+ _bewpi_on_plugin_update();
94
+ }
95
+ }
96
+ add_action( 'plugins_loaded', '_bewpi_load_plugin', 10 );
97
+
98
+ /**
99
+ * On plugin update.
100
+ *
101
+ * @since 2.5.0
102
+ */
103
+ function _bewpi_on_plugin_update() {
104
+ $current_version = get_site_option( 'bewpi_version' );
105
+
106
+ if ( false === $current_version ) {
107
+
108
+ // First time creation of directories.
109
+ WPI()->setup_directories();
110
+
111
+ add_site_option( 'bewpi_version', WPI_VERSION );
112
+
113
+ } elseif ( WPI_VERSION !== $current_version ) {
114
+
115
+ // Update directories.
116
+ WPI()->setup_directories();
117
+
118
+ // temporary change max execution time to higher value to prevent internal server errors.
119
+ $max_execution_time = (int) ini_get( 'max_execution_time' );
120
+ if ( 0 !== $max_execution_time ) {
121
+ set_time_limit( 360 );
122
+ }
123
+
124
+ // version 2.6.1- need to be updated with new email options and postmeta.
125
+ if ( version_compare( $current_version, '2.6.1' ) <= 0 ) {
126
+ update_email_type_options();
127
+ update_postmeta();
128
+ }
129
+
130
+ // version 2.7.0- uploads folder changed to uploads/woocommerce-pdf-invoices.
131
+ if ( version_compare( $current_version, '2.7.0' ) <= 0 ) {
132
+ // Move invoice from uploads/bewpi-invoices to uploads/woocommerce-pdf-invoices/attachments.
133
+ move_pdf_invoices();
134
+
135
+ // Rename uploads/bewpi-templates/invoices to uploads/bewpi-templates/invoice.
136
+ $upload_dir = wp_upload_dir();
137
+ rename( BEWPI_CUSTOM_TEMPLATES_INVOICES_DIR, $upload_dir['basedir'] . '/bewpi-templates/invoice' );
138
+ }
139
+
140
+ // version 2.9.2- need to update "Attach to Emails" option to recursive structure.
141
+ if ( version_compare( $current_version, '2.9.2' ) <= 0 ) {
142
+ update_email_types_options_to_recursive();
143
+ }
144
+
145
+ if ( version_compare( $current_version, '2.9.3' ) <= 0 ) {
146
+ update_email_types_options();
147
+ }
148
+
149
+ set_time_limit( $max_execution_time );
150
+
151
+ update_site_option( 'bewpi_version', WPI_VERSION );
152
+ }
153
+ }
154
+
155
+ /**
156
+ * "Attach to Email" and "Attach to new order email" options changed to multi-checkbox, so update settings accordingly.
157
+ *
158
+ * @since 2.5.0
159
+ */
160
+ function update_email_type_options() {
161
+ $general_options = get_option( 'bewpi_general_settings' );
162
+ // check if we need to add and/or remove options.
163
+ if ( isset( $general_options['bewpi_email_type'] ) ) {
164
+ $email_type = $general_options['bewpi_email_type'];
165
+ if ( ! empty( $email_type ) ) {
166
+ // set new email type option.
167
+ $general_options[ $email_type ] = 1;
168
+ }
169
+ // delete old option.
170
+ unset( $general_options['bewpi_email_type'] );
171
+
172
+ update_option( 'bewpi_general_settings', $general_options );
173
+ }
174
+
175
+ if ( isset( $general_options['bewpi_new_order'] ) ) {
176
+ $email_type = $general_options['bewpi_new_order'];
177
+ if ( $email_type ) {
178
+ // set invoice attach to new order email option.
179
+ $general_options['new_order'] = 1;
180
+ }
181
+ // delete old option.
182
+ unset( $general_options['bewpi_new_order'] );
183
+
184
+ update_option( 'bewpi_general_settings', $general_options );
185
+ }
186
+ }
187
+
188
+ /**
189
+ * Update postmeta in database.
190
+ */
191
+ function update_postmeta() {
192
+ $posts = get_posts( array(
193
+ 'numberposts' => -1,
194
+ 'post_type' => 'shop_order',
195
+ 'post_status' => array_keys( wc_get_order_statuses() ),
196
+ 'fields' => 'ids',
197
+ ) );
198
+
199
+ $template_options = get_option( 'bewpi_template_settings' );
200
+
201
+ $date_format = $template_options['bewpi_date_format'];
202
+ if ( empty( $date_format ) ) {
203
+ $date_format = (string) get_option( 'date_format' );
204
+ }
205
+
206
+ foreach ( $posts as $post_id ) {
207
+ // Create pdf path postmeta for all shop orders.
208
+ create_pdf_path_postmeta( $post_id, $template_options );
209
+
210
+ // Format date postmeta to mysql date.
211
+ update_date_format_postmeta( $post_id, $date_format );
212
+ }
213
+ }
214
+
215
+ /**
216
+ * Create full path postmeta for all orders that have a pdf invoice generated.
217
+ *
218
+ * @param int $post_id Post ID or WC Order ID.
219
+ * @param array $template_options User template options.
220
+ *
221
+ * @since 2.6.0
222
+ */
223
+ function create_pdf_path_postmeta( $post_id, $template_options ) {
224
+ $pdf_path = get_post_meta( $post_id, '_bewpi_invoice_pdf_path', true );
225
+ if ( $pdf_path ) {
226
+ return;
227
+ }
228
+
229
+ $formatted_invoice_number = get_post_meta( $post_id, '_bewpi_formatted_invoice_number', true );
230
+ if ( ! $formatted_invoice_number ) {
231
+ return;
232
+ }
233
+
234
+ // One folder for all invoices.
235
+ $new_pdf_path = $formatted_invoice_number . '.pdf';
236
+ if ( (bool) $template_options['bewpi_reset_counter_yearly'] ) {
237
+ // Yearly sub-folders.
238
+ $invoice_year = get_post_meta( $post_id, '_bewpi_invoice_year', true );
239
+ if ( $invoice_year ) {
240
+ $new_pdf_path = $invoice_year . '/' . $formatted_invoice_number . '.pdf';
241
+ }
242
+ } else {
243
+ $new_pdf_path = $formatted_invoice_number . '.pdf';
244
+ }
245
+
246
+ if ( file_exists( BEWPI_INVOICES_DIR . $new_pdf_path ) ) {
247
+ update_post_meta( $post_id, '_bewpi_invoice_pdf_path', $new_pdf_path );
248
+ }
249
+ }
250
+
251
+ /**
252
+ * Format date postmeta to mysql date.
253
+ *
254
+ * @param int $post_id Post ID or WC Order ID.
255
+ * @param string $date_format User option date format.
256
+ *
257
+ * @since 2.6.0
258
+ */
259
+ function update_date_format_postmeta( $post_id, $date_format ) {
260
+ $invoice_date = get_post_meta( $post_id, '_bewpi_invoice_date', true );
261
+ if ( ! $invoice_date ) {
262
+ return;
263
+ }
264
+
265
+ $date = DateTime::createFromFormat( $date_format, $invoice_date );
266
+ if ( ! $date ) {
267
+ return;
268
+ }
269
+
270
+ update_post_meta( $post_id, '_bewpi_invoice_date', $date->format( 'Y-m-d H:i:s' ) );
271
+ }
272
+
273
+ /**
274
+ * Move all invoices to new uploads dir.
275
+ */
276
+ function move_pdf_invoices() {
277
+ $files = glob( BEWPI_INVOICES_DIR . '/*' );
278
+ foreach ( $files as $file ) {
279
+
280
+ if ( is_dir( $file ) ) {
281
+ wp_mkdir_p( WPI_ATTACHMENTS_DIR . '/' . basename( $file ) );
282
+
283
+ $files_year = glob( $file . '/*' );
284
+ foreach ( $files_year as $file_year ) {
285
+ if ( is_file( $file_year ) ) {
286
+ $pdf_path = str_replace( BEWPI_INVOICES_DIR . '/', '', $file_year );
287
+ copy( $file_year, WPI_ATTACHMENTS_DIR . '/' . $pdf_path );
288
+ }
289
+ }
290
+
291
+ continue;
292
+ }
293
+
294
+ copy( $file, WPI_ATTACHMENTS_DIR . '/' . basename( $file ) );
295
+ }
296
+ }
297
+
298
+ /**
299
+ * Update email types options to recursive array structure.
300
+ */
301
+ function update_email_types_options_to_recursive() {
302
+ $general_options = get_option( 'bewpi_general_settings' );
303
+ $email_types = array( 'new_order', 'customer_on_hold_order', 'customer_processing_order', 'customer_completed_order', 'customer_invoice', 'new_renewal_order', 'customer_completed_switch_order', 'customer_processing_renewal_order', 'customer_completed_renewal_order', 'customer_renewal_invoice' );
304
+
305
+ foreach ( $email_types as $email_type ) {
306
+ if ( isset( $general_options[ $email_type ] ) ) {
307
+ $general_options['bewpi_email_types'] = array(
308
+ $email_type => $general_options[ $email_type ],
309
+ );
310
+
311
+ // Remove older option.
312
+ unset( $general_options[ $email_type ] );
313
+ }
314
+ }
315
+
316
+ update_option( 'bewpi_general_settings', $general_options );
317
+ }
318
+
319
+ /**
320
+ * Update email types for plugin version 2.9.4+.
321
+ */
322
+ function update_email_types_options() {
323
+ $general_settings = get_option( 'bewpi_general_settings' );
324
+ $email_types = array();
325
+
326
+ foreach ( (array) $general_settings['bewpi_email_types'] as $email_type => $enabled ) {
327
+ if ( $enabled ) {
328
+ $email_types[] = $email_type;
329
+ }
330
+ }
331
+
332
+ $general_settings['bewpi_email_types'] = $email_types;
333
+
334
+ update_option( 'bewpi_general_settings', $general_settings );
335
+ }
336
+
337
+ /**
338
+ * Save install date, plugin version to db and set transient to show activation notice.
339
+ *
340
+ * @since 2.5.0
341
+ */
342
+ function _bewpi_on_plugin_activation() {
343
+ add_site_option( 'bewpi_install_date', current_time( 'mysql' ) );
344
+ set_transient( 'bewpi-admin-notice-activation', true, 30 );
345
+ }
346
+ register_activation_hook( __FILE__, '_bewpi_on_plugin_activation' );
includes/abstracts/abstract-document.php CHANGED
@@ -1,335 +1,335 @@
1
- <?php
2
- /**
3
- * Document Class for different types of (invoice) documents.
4
- *
5
- * @author Bas Elbers
6
- * @category Abstract Class
7
- * @package BE_WooCommerce_PDF_Invoices/Abstracts
8
- * @version 1.0.0
9
- */
10
-
11
- defined( 'ABSPATH' ) or exit;
12
-
13
- if ( ! class_exists( 'BEWPI_Abstract_Document' ) ) {
14
- /**
15
- * Class BEWPI_Abstract_Document.
16
- */
17
- abstract class BEWPI_Abstract_Document {
18
-
19
- /**
20
- * ID of document.
21
- *
22
- * @var int.
23
- */
24
- protected $id;
25
-
26
- /**
27
- * Type of document like invoice, packing slip or credit note.
28
- *
29
- * @var string type of document.
30
- */
31
- protected $type;
32
-
33
- /**
34
- * WooCommerce Order associated with invoice.
35
- *
36
- * @var WC_Order
37
- */
38
- public $order;
39
-
40
- /**
41
- * Output destination mode of mPDF.
42
- *
43
- * @var string
44
- */
45
- protected $destination;
46
-
47
- /**
48
- * Array containing all template files.
49
- *
50
- * @var array
51
- */
52
- protected $template = array();
53
-
54
- /**
55
- * Full path to document.
56
- *
57
- * @var string
58
- */
59
- protected $full_path;
60
-
61
- /**
62
- * Document filename.
63
- *
64
- * @var string.
65
- */
66
- protected $filename;
67
-
68
- /**
69
- * General options.
70
- *
71
- * @var array
72
- */
73
- protected $general_options = array();
74
-
75
- /**
76
- * Template options.
77
- *
78
- * @var array
79
- */
80
- protected $template_options = array();
81
-
82
- /**
83
- * BEWPI_Abstract_Document constructor.
84
- */
85
- public function __construct() {
86
- $templater = WPI()->templater();
87
- $templater->set_order( $this->order );
88
- $this->template = $templater->get_template( $this->type );
89
- $this->general_options = get_option( 'bewpi_general_settings' ); // @todo remove.
90
- $this->template_options = get_option( 'bewpi_template_settings' ); // @todo remove and use 'templater()'.
91
- }
92
-
93
- /**
94
- * Generate document.
95
- *
96
- * @param string $destination Destination mode for file.
97
- */
98
- public function generate( $destination = 'F' ) {
99
- // Use ttfontdata from uploads folder.
100
- define( '_MPDF_TTFONTDATAPATH', WPI_UPLOADS_DIR . '/mpdf/ttfontdata/' );
101
-
102
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
103
-
104
- do_action( 'bewpi_before_invoice_content', $order_id );
105
-
106
- // Only use default font with version 2.6.2- because we defining font in template.
107
- $default_font = ( version_compare( WPI_VERSION, '2.6.2' ) <= 0 ) ? 'opensans' : '';
108
- $is_new_template = strpos( strtolower( $this->template_options['bewpi_template_name'] ), 'minimal' ) !== false;
109
-
110
- $mpdf_params = apply_filters( 'bewpi_mpdf_options', array(
111
- 'mode' => 'utf-8',
112
- 'format' => '',
113
- 'default_font_size' => 0,
114
- 'default_font' => $default_font,
115
- 'margin_left' => ( $is_new_template ) ? 0 : 14,
116
- 'margin_right' => ( $is_new_template ) ? 0 : 14,
117
- 'margin_top' => ( $is_new_template ) ? 0 : 14,
118
- 'margin_bottom' => 0,
119
- 'margin_header' => ( $is_new_template ) ? 0 : 14,
120
- 'margin_footer' => ( $is_new_template ) ? 0 : 6,
121
- 'orientation' => 'P',
122
- ) );
123
- /* @var mPDF $mpdf */
124
- $mpdf = new mPDF(
125
- $mpdf_params['mode'],
126
- $mpdf_params['format'],
127
- $mpdf_params['default_font_size'],
128
- $mpdf_params['default_font'],
129
- $mpdf_params['margin_left'],
130
- $mpdf_params['margin_right'],
131
- $mpdf_params['margin_top'],
132
- $mpdf_params['margin_bottom'],
133
- $mpdf_params['margin_header'],
134
- $mpdf_params['margin_footer'],
135
- $mpdf_params['orientation']
136
- );
137
-
138
- // add company logo image as a variable.
139
- $wp_upload_dir = wp_upload_dir();
140
- $image_url = $this->template_options['bewpi_company_logo'];
141
- if ( ! empty( $image_url ) ) {
142
- // use absolute path due to probability of (local)host misconfiguration.
143
- // problems with shared hosting when one ip is configured to multiple users/environments.
144
- $image_path = str_replace( $wp_upload_dir['baseurl'], $wp_upload_dir['basedir'], $image_url );
145
- $mpdf->company_logo = file_get_contents( $image_path );
146
- }
147
-
148
- // Show legacy paid watermark.
149
- if ( strpos( $this->template_options['bewpi_template_name'], 'micro' ) !== false && $this->template_options['bewpi_show_payment_status'] && strpos( $this->type, 'invoice' ) !== false && $this->order->is_paid() ) {
150
- $mpdf->SetWatermarkText( __( 'Paid', 'woocommerce-pdf-invoices' ) );
151
- $mpdf->showWatermarkText = true;
152
- $mpdf->watermarkTextAlpha = '0.2';
153
- $mpdf->watermarkImgBehind = false;
154
- }
155
-
156
- // mPDF debugging.
157
- if ( WPI()->get_option( 'general', 'mpdf_debug' ) ) {
158
- $mpdf->debug = true;
159
- $mpdf->showImageErrors = true;
160
- }
161
-
162
- // Layout.
163
- $mpdf->setAutoTopMargin = 'stretch';
164
- $mpdf->setAutoBottomMargin = 'stretch';
165
- $mpdf->autoMarginPadding = ( $is_new_template ) ? 20 : 10;
166
-
167
- // Font.
168
- $mpdf->autoScriptToLang = true;
169
- $mpdf->autoLangToFont = true;
170
- $mpdf->baseScript = 1;
171
- $mpdf->autoVietnamese = true;
172
- $mpdf->autoArabic = true;
173
- $mpdf->useSubstitutions = true;
174
-
175
- // Template.
176
- $html = $this->get_html();
177
- if ( count( $html ) === 0 ) {
178
- WPI()->logger()->error( sprintf( 'PDF generation aborted. No HTML for PDF in %1$s:%2$s', __FILE__, __LINE__ ) );
179
- return;
180
- }
181
-
182
- if ( ! empty( $html['header'] ) ) {
183
- $mpdf->SetHTMLHeader( $html['header'] );
184
- }
185
-
186
- if ( ! empty( $html['footer'] ) ) {
187
- $mpdf->SetHTMLFooter( $html['footer'] );
188
- }
189
-
190
- $mpdf = apply_filters( 'bewpi_mpdf', $mpdf, $this );
191
-
192
- $mpdf->WriteHTML( $html['style'] . $html['body'] );
193
-
194
- do_action( 'bewpi_after_invoice_content', $order_id );
195
-
196
- $mpdf = apply_filters( 'bewpi_mpdf_after_write', $mpdf, $this );
197
-
198
- if ( 'F' === $destination ) {
199
- $name = $this->full_path;
200
- } else {
201
- $name = $this->filename;
202
- }
203
-
204
- $mpdf->Output( $name, $destination );
205
-
206
- if ( 'F' !== $destination ) {
207
- exit;
208
- }
209
- }
210
-
211
- /**
212
- * Output HTML file to buffer.
213
- *
214
- * @param string $full_path to html file.
215
- *
216
- * @return string
217
- */
218
- private function buffer( $full_path ) {
219
- ob_start();
220
- require $full_path;
221
- $html = ob_get_contents();
222
- ob_end_clean();
223
-
224
- return $html;
225
- }
226
-
227
- /**
228
- * Get PDF html.
229
- *
230
- * @return array
231
- */
232
- private function get_html() {
233
- $html = array();
234
- foreach ( $this->template as $section => $full_path ) {
235
- if ( 'style' === $section ) {
236
- $html[ $section ] = '<style>' . $this->buffer( $full_path ) . '</style>';
237
- continue;
238
- }
239
-
240
- $html[ $section ] = $this->buffer( $full_path );
241
- }
242
-
243
- return $html;
244
- }
245
-
246
- /**
247
- * View PDF file.
248
- *
249
- * @param string $full_path absolute path to PDF file.
250
- */
251
- public static function view( $full_path ) {
252
- $general_options = get_option( 'bewpi_general_settings' );
253
- $type = ( 'browser' === $general_options['bewpi_view_pdf'] ) ? 'inline' : 'attachment';
254
-
255
- header( 'Content-type: application/pdf' );
256
- header( 'Content-Disposition: ' . $type . '; filename="' . basename( $full_path ) . '"' );
257
- header( 'Content-Transfer-Encoding: binary' );
258
- header( 'Content-Length: ' . filesize( $full_path ) );
259
- header( 'Accept-Ranges: bytes' );
260
-
261
- readfile( $full_path );
262
- exit;
263
- }
264
-
265
- /**
266
- * Delete pdf document.
267
- *
268
- * @param string $full_path absolute path to pdf document.
269
- */
270
- protected static function delete( $full_path ) {
271
- if ( file_exists( $full_path ) ) {
272
- wp_delete_file( $full_path );
273
- }
274
- }
275
-
276
- /**
277
- * Full path to pdf invoice.
278
- *
279
- * @return string full path to pdf invoice.
280
- */
281
- public function get_full_path() {
282
- return $this->full_path;
283
- }
284
-
285
- /**
286
- * Date format from user option or get default WordPress date format.
287
- *
288
- * @return string
289
- */
290
- public function get_date_format() {
291
- $date_format = $this->template_options['bewpi_date_format'];
292
- if ( ! empty( $date_format ) ) {
293
- return (string) $date_format;
294
- }
295
-
296
- return (string) get_option( 'date_format' );
297
- }
298
-
299
- /**
300
- * Order date formatted with user option format and localized.
301
- *
302
- * @return string
303
- */
304
- public function get_formatted_order_date() {
305
- // WC backwards compatibility.
306
- $order_date = BEWPI_WC_Order_Compatibility::get_date_created( $this->order );
307
-
308
- return date_i18n( $this->get_date_format(), strtotime( $order_date ) );
309
- }
310
-
311
- /**
312
- * Check if pdf exists within uploads folder.
313
- *
314
- * @param string $full_path to pdf file.
315
- *
316
- * @return bool/string false when pdf does not exist else full path to pdf.
317
- */
318
- public static function exists( $full_path ) {
319
- if ( ! file_exists( $full_path ) ) {
320
- return false;
321
- }
322
-
323
- return $full_path;
324
- }
325
-
326
- /**
327
- * Get document type.
328
- *
329
- * @return string.
330
- */
331
- public function get_type() {
332
- return $this->type;
333
- }
334
- }
335
- }
1
+ <?php
2
+ /**
3
+ * Document Class for different types of (invoice) documents.
4
+ *
5
+ * @author Bas Elbers
6
+ * @category Abstract Class
7
+ * @package BE_WooCommerce_PDF_Invoices/Abstracts
8
+ * @version 1.0.0
9
+ */
10
+
11
+ defined( 'ABSPATH' ) or exit;
12
+
13
+ if ( ! class_exists( 'BEWPI_Abstract_Document' ) ) {
14
+ /**
15
+ * Class BEWPI_Abstract_Document.
16
+ */
17
+ abstract class BEWPI_Abstract_Document {
18
+
19
+ /**
20
+ * ID of document.
21
+ *
22
+ * @var int.
23
+ */
24
+ protected $id;
25
+
26
+ /**
27
+ * Type of document like invoice, packing slip or credit note.
28
+ *
29
+ * @var string type of document.
30
+ */
31
+ protected $type;
32
+
33
+ /**
34
+ * WooCommerce Order associated with invoice.
35
+ *
36
+ * @var WC_Order
37
+ */
38
+ public $order;
39
+
40
+ /**
41
+ * Output destination mode of mPDF.
42
+ *
43
+ * @var string
44
+ */
45
+ protected $destination;
46
+
47
+ /**
48
+ * Array containing all template files.
49
+ *
50
+ * @var array
51
+ */
52
+ protected $template = array();
53
+
54
+ /**
55
+ * Full path to document.
56
+ *
57
+ * @var string
58
+ */
59
+ protected $full_path;
60
+
61
+ /**
62
+ * Document filename.
63
+ *
64
+ * @var string.
65
+ */
66
+ protected $filename;
67
+
68
+ /**
69
+ * General options.
70
+ *
71
+ * @var array
72
+ */
73
+ protected $general_options = array();
74
+
75
+ /**
76
+ * Template options.
77
+ *
78
+ * @var array
79
+ */
80
+ protected $template_options = array();
81
+
82
+ /**
83
+ * BEWPI_Abstract_Document constructor.
84
+ */
85
+ public function __construct() {
86
+ $templater = WPI()->templater();
87
+ $templater->set_order( $this->order );
88
+ $this->template = $templater->get_template( $this->type );
89
+ $this->general_options = get_option( 'bewpi_general_settings' ); // @todo remove.
90
+ $this->template_options = get_option( 'bewpi_template_settings' ); // @todo remove and use 'templater()'.
91
+ }
92
+
93
+ /**
94
+ * Generate document.
95
+ *
96
+ * @param string $destination Destination mode for file.
97
+ */
98
+ public function generate( $destination = 'F' ) {
99
+ // Use ttfontdata from uploads folder.
100
+ define( '_MPDF_TTFONTDATAPATH', WPI_UPLOADS_DIR . '/mpdf/ttfontdata/' );
101
+
102
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
103
+
104
+ do_action( 'bewpi_before_invoice_content', $order_id );
105
+
106
+ // Only use default font with version 2.6.2- because we defining font in template.
107
+ $default_font = ( version_compare( WPI_VERSION, '2.6.2' ) <= 0 ) ? 'opensans' : '';
108
+ $is_new_template = strpos( strtolower( $this->template_options['bewpi_template_name'] ), 'minimal' ) !== false;
109
+
110
+ $mpdf_params = apply_filters( 'bewpi_mpdf_options', array(
111
+ 'mode' => 'utf-8',
112
+ 'format' => '',
113
+ 'default_font_size' => 0,
114
+ 'default_font' => $default_font,
115
+ 'margin_left' => ( $is_new_template ) ? 0 : 14,
116
+ 'margin_right' => ( $is_new_template ) ? 0 : 14,
117
+ 'margin_top' => ( $is_new_template ) ? 0 : 14,
118
+ 'margin_bottom' => 0,
119
+ 'margin_header' => ( $is_new_template ) ? 0 : 14,
120
+ 'margin_footer' => ( $is_new_template ) ? 0 : 6,
121
+ 'orientation' => 'P',
122
+ ) );
123
+ /* @var mPDF $mpdf */
124
+ $mpdf = new mPDF(
125
+ $mpdf_params['mode'],
126
+ $mpdf_params['format'],
127
+ $mpdf_params['default_font_size'],
128
+ $mpdf_params['default_font'],
129
+ $mpdf_params['margin_left'],
130
+ $mpdf_params['margin_right'],
131
+ $mpdf_params['margin_top'],
132
+ $mpdf_params['margin_bottom'],
133
+ $mpdf_params['margin_header'],
134
+ $mpdf_params['margin_footer'],
135
+ $mpdf_params['orientation']
136
+ );
137
+
138
+ // add company logo image as a variable.
139
+ $wp_upload_dir = wp_upload_dir();
140
+ $image_url = $this->template_options['bewpi_company_logo'];
141
+ if ( ! empty( $image_url ) ) {
142
+ // use absolute path due to probability of (local)host misconfiguration.
143
+ // problems with shared hosting when one ip is configured to multiple users/environments.
144
+ $image_path = str_replace( $wp_upload_dir['baseurl'], $wp_upload_dir['basedir'], $image_url );
145
+ $mpdf->company_logo = file_get_contents( $image_path );
146
+ }
147
+
148
+ // Show legacy paid watermark.
149
+ if ( strpos( $this->template_options['bewpi_template_name'], 'micro' ) !== false && $this->template_options['bewpi_show_payment_status'] && strpos( $this->type, 'invoice' ) !== false && $this->order->is_paid() ) {
150
+ $mpdf->SetWatermarkText( __( 'Paid', 'woocommerce-pdf-invoices' ) );
151
+ $mpdf->showWatermarkText = true;
152
+ $mpdf->watermarkTextAlpha = '0.2';
153
+ $mpdf->watermarkImgBehind = false;
154
+ }
155
+
156
+ // mPDF debugging.
157
+ if ( WPI()->get_option( 'general', 'mpdf_debug' ) ) {
158
+ $mpdf->debug = true;
159
+ $mpdf->showImageErrors = true;
160
+ }
161
+
162
+ // Layout.
163
+ $mpdf->setAutoTopMargin = 'stretch';
164
+ $mpdf->setAutoBottomMargin = 'stretch';
165
+ $mpdf->autoMarginPadding = ( $is_new_template ) ? 25 : 10;
166
+
167
+ // Font.
168
+ $mpdf->autoScriptToLang = true;
169
+ $mpdf->autoLangToFont = true;
170
+ $mpdf->baseScript = 1;
171
+ $mpdf->autoVietnamese = true;
172
+ $mpdf->autoArabic = true;
173
+ $mpdf->useSubstitutions = true;
174
+
175
+ // Template.
176
+ $html = $this->get_html();
177
+ if ( count( $html ) === 0 ) {
178
+ WPI()->logger()->error( sprintf( 'PDF generation aborted. No HTML for PDF in %1$s:%2$s', __FILE__, __LINE__ ) );
179
+ return;
180
+ }
181
+
182
+ if ( ! empty( $html['header'] ) ) {
183
+ $mpdf->SetHTMLHeader( $html['header'] );
184
+ }
185
+
186
+ if ( ! empty( $html['footer'] ) ) {
187
+ $mpdf->SetHTMLFooter( $html['footer'] );
188
+ }
189
+
190
+ $mpdf = apply_filters( 'bewpi_mpdf', $mpdf, $this );
191
+
192
+ $mpdf->WriteHTML( $html['style'] . $html['body'] );
193
+
194
+ do_action( 'bewpi_after_invoice_content', $order_id );
195
+
196
+ $mpdf = apply_filters( 'bewpi_mpdf_after_write', $mpdf, $this );
197
+
198
+ if ( 'F' === $destination ) {
199
+ $name = $this->full_path;
200
+ } else {
201
+ $name = $this->filename;
202
+ }
203
+
204
+ $mpdf->Output( $name, $destination );
205
+
206
+ if ( 'F' !== $destination ) {
207
+ exit;
208
+ }
209
+ }
210
+
211
+ /**
212
+ * Output HTML file to buffer.
213
+ *
214
+ * @param string $full_path to html file.
215
+ *
216
+ * @return string
217
+ */
218
+ private function buffer( $full_path ) {
219
+ ob_start();
220
+ require $full_path;
221
+ $html = ob_get_contents();
222
+ ob_end_clean();
223
+
224
+ return $html;
225
+ }
226
+
227
+ /**
228
+ * Get PDF html.
229
+ *
230
+ * @return array
231
+ */
232
+ private function get_html() {
233
+ $html = array();
234
+ foreach ( $this->template as $section => $full_path ) {
235
+ if ( 'style' === $section ) {
236
+ $html[ $section ] = '<style>' . $this->buffer( $full_path ) . '</style>';
237
+ continue;
238
+ }
239
+
240
+ $html[ $section ] = $this->buffer( $full_path );
241
+ }
242
+
243
+ return $html;
244
+ }
245
+
246
+ /**
247
+ * View PDF file.
248
+ *
249
+ * @param string $full_path absolute path to PDF file.
250
+ */
251
+ public static function view( $full_path ) {
252
+ $general_options = get_option( 'bewpi_general_settings' );
253
+ $type = ( 'browser' === $general_options['bewpi_view_pdf'] ) ? 'inline' : 'attachment';
254
+
255
+ header( 'Content-type: application/pdf' );
256
+ header( 'Content-Disposition: ' . $type . '; filename="' . basename( $full_path ) . '"' );
257
+ header( 'Content-Transfer-Encoding: binary' );
258
+ header( 'Content-Length: ' . filesize( $full_path ) );
259
+ header( 'Accept-Ranges: bytes' );
260
+
261
+ readfile( $full_path );
262
+ exit;
263
+ }
264
+
265
+ /**
266
+ * Delete pdf document.
267
+ *
268
+ * @param string $full_path absolute path to pdf document.
269
+ */
270
+ protected static function delete( $full_path ) {
271
+ if ( file_exists( $full_path ) ) {
272
+ wp_delete_file( $full_path );
273
+ }
274
+ }
275
+
276
+ /**
277
+ * Full path to pdf invoice.
278
+ *
279
+ * @return string full path to pdf invoice.
280
+ */
281
+ public function get_full_path() {
282
+ return $this->full_path;
283
+ }
284
+
285
+ /**
286
+ * Date format from user option or get default WordPress date format.
287
+ *
288
+ * @return string
289
+ */
290
+ public function get_date_format() {
291
+ $date_format = $this->template_options['bewpi_date_format'];
292
+ if ( ! empty( $date_format ) ) {
293
+ return (string) $date_format;
294
+ }
295
+
296
+ return (string) get_option( 'date_format' );
297
+ }
298
+
299
+ /**
300
+ * Order date formatted with user option format and localized.
301
+ *
302
+ * @return string
303
+ */
304
+ public function get_formatted_order_date() {
305
+ // WC backwards compatibility.
306
+ $order_date = BEWPI_WC_Order_Compatibility::get_date_created( $this->order );
307
+
308
+ return date_i18n( $this->get_date_format(), strtotime( $order_date ) );
309
+ }
310
+
311
+ /**
312
+ * Check if pdf exists within uploads folder.
313
+ *
314
+ * @param string $full_path to pdf file.
315
+ *
316
+ * @return bool/string false when pdf does not exist else full path to pdf.
317
+ */
318
+ public static function exists( $full_path ) {
319
+ if ( ! file_exists( $full_path ) ) {
320
+ return false;
321
+ }
322
+
323
+ return $full_path;
324
+ }
325
+
326
+ /**
327
+ * Get document type.
328
+ *
329
+ * @return string.
330
+ */
331
+ public function get_type() {
332
+ return $this->type;
333
+ }
334
+ }
335
+ }
includes/abstracts/abstract-invoice.php CHANGED
@@ -1,880 +1,880 @@
1
- <?php
2
- /**
3
- * Invoice Class for different types of (invoice) documents.
4
- *
5
- * @author Bas Elbers
6
- * @category Abstract Class
7
- * @package BE_WooCommerce_PDF_Invoices/Abstracts
8
- * @version 1.0.0
9
- */
10
-
11
- defined( 'ABSPATH' ) or exit;
12
-
13
- if ( ! class_exists( 'BEWPI_Abstract_Invoice' ) ) {
14
-
15
- /**
16
- * Makes the invoice.
17
- * Class BEWPI_Invoice
18
- */
19
- abstract class BEWPI_Abstract_Invoice extends BEWPI_Abstract_Document {
20
-
21
- /**
22
- * Invoice number.
23
- *
24
- * @var int
25
- */
26
- protected $number;
27
-
28
- /**
29
- * MySQL invoice date.
30
- *
31
- * @var string
32
- */
33
- protected $date = '0000-00-00 00:00:00';
34
-
35
- /**
36
- * Year of invoice.
37
- *
38
- * @var string
39
- */
40
- protected $year;
41
-
42
- /**
43
- * Number of columns from products table.
44
- *
45
- * @deprecated outlining columns will be refactored.
46
- * @var int
47
- */
48
- public $columns_count;
49
-
50
- /**
51
- * Colspan data to outline products table columns.
52
- *
53
- * @var int
54
- */
55
- public $colspan = 1;
56
-
57
- /**
58
- * Width of the description cell of the product table.
59
- *
60
- * @deprecated outlining columns will be refactored.
61
- * @var string
62
- */
63
- protected $desc_cell_width;
64
-
65
- /**
66
- * BEWPI_Abstract_Invoice constructor.
67
- *
68
- * @param int $order_id WooCommerce Order ID.
69
- */
70
- public function __construct( $order_id ) {
71
- parent::__construct();
72
-
73
- $this->full_path = self::exists( $order_id );
74
- if ( $this->full_path ) {
75
- $this->number = get_post_meta( $order_id, '_bewpi_invoice_number', true );
76
- $this->date = get_post_meta( $order_id, '_bewpi_invoice_date', true );
77
- $this->year = date_i18n( 'Y', strtotime( $this->date ) );
78
- $this->filename = basename( $this->full_path );
79
- }
80
- }
81
-
82
- /**
83
- * Invoice number.
84
- *
85
- * @return int
86
- */
87
- public function get_number() {
88
- return (int) $this->number;
89
- }
90
-
91
- /**
92
- * Format invoice number with placeholders.
93
- *
94
- * @return string
95
- */
96
- public function get_formatted_number() {
97
- // Format number with the number of digits.
98
- $digitized_invoice_number = sprintf( '%0' . WPI()->get_option( 'template', 'invoice_number_digits' ) . 's', $this->number );
99
- $formatted_invoice_number = str_replace(
100
- array( '[number]', '[order-date]', '[order-number]', '[Y]', '[y]', '[m]' ),
101
- array(
102
- $digitized_invoice_number,
103
- date_i18n( apply_filters( 'bewpi_formatted_invoice_number_order_date_format', 'Y-m-d' ), strtotime( $this->date ) ),
104
- $this->order->get_order_number(),
105
- $this->year,
106
- date_i18n( 'y', strtotime( $this->date ) ),
107
- date_i18n( 'm', strtotime( $this->date ) ),
108
- ),
109
- WPI()->get_option( 'template', 'invoice_number_format' )
110
- );
111
-
112
- // Since 2.8.1 [prefix] and [suffix] were removed.
113
- $formatted_invoice_number = str_replace(
114
- array( '[prefix]', '[suffix]' ),
115
- array( '', '' ),
116
- $formatted_invoice_number
117
- );
118
-
119
- // Add prefix and suffix directly.
120
- $formatted_invoice_number = WPI()->get_option( 'template', 'invoice_number_prefix' ) . $formatted_invoice_number . WPI()->get_option( 'template', 'invoice_number_suffix' );
121
-
122
- return apply_filters( 'bewpi_formatted_invoice_number', $formatted_invoice_number, $this->type );
123
- }
124
-
125
- /**
126
- * Format and localize (MySQL) invoice date.
127
- *
128
- * @deprecated Use get_formatted_date instead.
129
- * @return string
130
- */
131
- public function get_formatted_invoice_date() {
132
- return date_i18n( $this->get_date_format(), strtotime( $this->date ) );
133
- }
134
-
135
- /**
136
- * Format and localize (MySQL) invoice date.
137
- *
138
- * @return string
139
- */
140
- public function get_formatted_date() {
141
- return date_i18n( $this->get_date_format(), strtotime( $this->date ) );
142
- }
143
-
144
- /**
145
- * Delete invoice PDF files.
146
- *
147
- * @param int $from_number Invoice number where to start from.
148
- */
149
- private function delete_pdf_invoices( $from_number = 0 ) {
150
- global $wpdb;
151
-
152
- if ( (bool) $this->template_options['bewpi_reset_counter_yearly'] ) {
153
- // get formatted numbers by year and greater then given invoice number.
154
- $files = $wpdb->get_col( $wpdb->prepare(
155
- "SELECT pm3.meta_value AS pdf_path FROM wp_postmeta pm1
156
- INNER JOIN wp_postmeta pm2 ON pm1.post_id = pm2.post_id
157
- INNER JOIN wp_postmeta pm3 ON pm1.post_id = pm3.post_id
158
- WHERE (pm1.meta_key = '_bewpi_invoice_date' AND YEAR(pm1.meta_value) = %d)
159
- AND (pm2.meta_key = '_bewpi_invoice_number' AND pm2.meta_value >= %d)
160
- AND (pm3.meta_key = '_bewpi_invoice_pdf_path')",
161
- (int) date_i18n( 'Y', current_time( 'timestamp' ) ),
162
- $from_number
163
- ) ); // db call ok; no-cache ok.
164
- } else {
165
- // get formatted numbers greater then given invoice number.
166
- $files = $wpdb->get_col( $wpdb->prepare(
167
- "SELECT pm2.meta_value AS pdf_path FROM wp_postmeta pm1
168
- INNER JOIN wp_postmeta pm2 ON pm1.post_id = pm2.post_id
169
- WHERE (pm1.meta_key = '_bewpi_invoice_number' AND pm1.meta_value >= %d)
170
- AND (pm2.meta_key = '_bewpi_invoice_pdf_path')",
171
- $from_number
172
- ) ); // db call ok; no-cache ok.
173
- }
174
-
175
- // delete pdf files.
176
- foreach ( $files as $pdf_path ) {
177
- parent::delete( WPI_ATTACHMENTS_DIR . '/' . $pdf_path );
178
- }
179
- }
180
-
181
- /**
182
- * Delete invoice post meta information.
183
- *
184
- * @param int $from_number Invoice number from which to delete.
185
- *
186
- * @return false|int
187
- */
188
- private function delete_invoice_meta( $from_number = 0 ) {
189
- global $wpdb;
190
-
191
- if ( (bool) $this->template_options['bewpi_reset_counter_yearly'] ) {
192
- // delete by year and greater then given invoice number.
193
- $query = $wpdb->prepare(
194
- "DELETE pm1, pm2, pm3 FROM $wpdb->postmeta pm1
195
- INNER JOIN $wpdb->postmeta pm2 ON pm1.post_id = pm2.post_id
196
- INNER JOIN $wpdb->postmeta pm3 ON pm1.post_id = pm3.post_id
197
- WHERE (pm1.meta_key = %s AND YEAR(pm1.meta_value) = %d)
198
- AND (pm2.meta_key = %s AND pm2.meta_value >= %d)
199
- AND (pm3.meta_key = %s)",
200
- '_bewpi_invoice_date',
201
- (int) date_i18n( 'Y', current_time( 'timestamp' ) ),
202
- '_bewpi_invoice_number',
203
- $from_number,
204
- '_bewpi_invoice_pdf_path'
205
- );
206
- } else {
207
- // delete by greater then given invoice number.
208
- $query = $wpdb->prepare(
209
- "DELETE pm1, pm2 FROM $wpdb->postmeta pm1
210
- INNER JOIN $wpdb->postmeta pm2 ON pm1.post_id = pm2.post_id
211
- WHERE (pm1.meta_key = %s AND pm1.meta_value >= %d)
212
- AND (pm2.meta_key = %s OR pm2.meta_key = %s)",
213
- '_bewpi_invoice_number',
214
- $from_number,
215
- '_bewpi_invoice_date',
216
- '_bewpi_invoice_pdf_path'
217
- );
218
- }
219
-
220
- return $wpdb->query( $query ); // db call ok; no-cache ok. WPCS: unprepared SQL OK.
221
- }
222
-
223
- /**
224
- * Get next invoice number from db.
225
- *
226
- * @return int
227
- */
228
- protected function get_next_invoice_number() {
229
- // uses WooCommerce order numbers as invoice numbers?
230
- if ( 'woocommerce_order_number' === $this->template_options['bewpi_invoice_number_type'] ) {
231
- return $this->order->get_order_number();
232
- }
233
-
234
- // check if user did a counter reset.
235
- $next_number = get_transient( 'bewpi_next_invoice_number' );
236
- if ( false !== $next_number ) {
237
- $this->delete_pdf_invoices( $next_number );
238
- $this->delete_invoice_meta( $next_number );
239
-
240
- delete_transient( 'bewpi_next_invoice_number' );
241
-
242
- return $next_number;
243
- }
244
-
245
- $max_invoice_number = self::get_max_invoice_number();
246
- $next_number = $max_invoice_number + 1;
247
-
248
- return $next_number;
249
- }
250
-
251
- /**
252
- * Return highest invoice number.
253
- *
254
- * @return int
255
- */
256
- public static function get_max_invoice_number() {
257
- global $wpdb;
258
-
259
- $template_options = get_option( 'bewpi_template_settings' );
260
- if ( (bool) $template_options['bewpi_reset_counter_yearly'] ) {
261
- // get by year.
262
- $query = $wpdb->prepare(
263
- "SELECT MAX(CAST(pm2.meta_value AS UNSIGNED)) AS last_invoice_number
264
- FROM $wpdb->postmeta pm1
265
- INNER JOIN $wpdb->postmeta pm2 ON pm1.post_id = pm2.post_id
266
- WHERE pm1.meta_key = %s AND YEAR(pm1.meta_value) = %d AND pm2.meta_key = %s",
267
- '_bewpi_invoice_date',
268
- (int) date_i18n( 'Y', current_time( 'timestamp' ) ),
269
- '_bewpi_invoice_number'
270
- );
271
- } else {
272
- // get all.
273
- $query = $wpdb->prepare(
274
- "SELECT MAX(CAST(pm2.meta_value AS UNSIGNED)) AS last_invoice_number
275
- FROM $wpdb->postmeta pm1
276
- INNER JOIN $wpdb->postmeta pm2 ON pm1.post_id = pm2.post_id
277
- WHERE pm2.meta_key = %s",
278
- '_bewpi_invoice_number'
279
- );
280
- }
281
-
282
- return intval( $wpdb->get_var( $query ) ); // db call ok; no-cache ok. WPCS: unprepared SQL OK.
283
- }
284
-
285
- /**
286
- * Save invoice.
287
- *
288
- * @param string $destination pdf generation mode.
289
- *
290
- * @return string
291
- */
292
- public function generate( $destination = 'F' ) {
293
- if ( false === $this->full_path ) {
294
- $this->date = apply_filters( 'wpi_invoice_date', current_time( 'mysql' ), $this );
295
- $this->number = $this->get_next_invoice_number();
296
- $this->year = date_i18n( 'Y', current_time( 'timestamp' ) );
297
- } else {
298
- // delete PDF.
299
- parent::delete( $this->full_path );
300
- }
301
-
302
- // yearly sub-folders.
303
- if ( (bool) WPI()->get_option( 'template', 'reset_counter_yearly' ) ) {
304
- // Make new year dir.
305
- $year_dir = WPI_ATTACHMENTS_DIR . '/' . $this->year;
306
- if ( ! is_dir( $year_dir ) ) {
307
- wp_mkdir_p( $year_dir );
308
- }
309
-
310
- $pdf_path = $this->year . '/' . $this->get_formatted_number() . '.pdf';
311
- } else {
312
- // one folder for all invoices.
313
- $pdf_path = $this->get_formatted_number() . '.pdf';
314
- }
315
-
316
- $this->full_path = WPI_ATTACHMENTS_DIR . '/' . $pdf_path;
317
- $this->filename = basename( $this->full_path );
318
-
319
- // update invoice data in db.
320
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
321
- update_post_meta( $order_id, '_bewpi_invoice_date', $this->date );
322
- update_post_meta( $order_id, '_bewpi_invoice_number', $this->number );
323
- update_post_meta( $order_id, '_bewpi_invoice_pdf_path', $pdf_path );
324
-
325
- do_action( 'bewpi_before_document_generation', $this->type, $order_id );
326
-
327
- parent::generate( $destination );
328
-
329
- return $this->full_path;
330
- }
331
-
332
- /**
333
- * Update invoice.
334
- *
335
- * @param string $destination pdf generation mode.
336
- *
337
- * @return string $full_path Full path to PDF invoice file.
338
- */
339
- public function update( $destination = 'F' ) {
340
- parent::delete( $this->full_path );
341
- parent::generate( $destination );
342
-
343
- return $this->full_path;
344
- }
345
-
346
- /**
347
- * Delete all invoice data from database and pdf file.
348
- *
349
- * @param int $order_id WooCommerce Order ID.
350
- */
351
- public static function delete( $order_id ) {
352
- // Remove pdf file.
353
- $full_path = WPI_ATTACHMENTS_DIR . '/' . get_post_meta( $order_id, '_bewpi_invoice_pdf_path', true );
354
- parent::delete( $full_path );
355
-
356
- // Remove invoice postmeta from database.
357
- delete_post_meta( $order_id, '_bewpi_invoice_number' );
358
- delete_post_meta( $order_id, '_bewpi_invoice_date' );
359
- delete_post_meta( $order_id, '_bewpi_invoice_pdf_path' );
360
-
361
- // Version 2.6+ not used anymore.
362
- delete_post_meta( $order_id, '_bewpi_formatted_invoice_number' );
363
- delete_post_meta( $order_id, '_bewpi_invoice_year' );
364
-
365
- do_action( 'bewpi_after_post_meta_deletion', $order_id );
366
- }
367
-
368
- /**
369
- * Check if invoice exists.
370
- *
371
- * @param int $order_id WooCommerce Order ID.
372
- *
373
- * @return bool|string false when no pdf invoice exists or full path when exists.
374
- */
375
- public static function exists( $order_id ) {
376
- // pdf data exists in database?
377
- $pdf_path = get_post_meta( $order_id, '_bewpi_invoice_pdf_path', true );
378
- if ( ! $pdf_path ) {
379
- return false;
380
- }
381
-
382
- return parent::exists( WPI_ATTACHMENTS_DIR . '/' . $pdf_path );
383
- }
384
-
385
- /**
386
- * Add column header data.
387
- *
388
- * @param array $data Column header data.
389
- * @param string $key Column name.
390
- * @param string $label Column title.
391
- * @param string $tax_display Display tax label.
392
- */
393
- public function add_column( &$data, $key, $label, $tax_display = '' ) {
394
- if ( ! empty( $tax_display ) ) {
395
- $label .= '&nbsp;' . WPI()->tax_or_vat_label( 'incl' === $tax_display );
396
- }
397
-
398
- $data[ $key ] = $label;
399
- }
400
-
401
- /**
402
- * Get columns.
403
- *
404
- * @return array
405
- */
406
- public function get_columns() {
407
- $columns = array();
408
-
409
- $this->add_column( $columns, 'description', __( 'Description', 'woocommerce-pdf-invoices' ) );
410
- $this->add_column( $columns, 'quantity', __( 'Qty', 'woocommerce-pdf-invoices' ) );
411
- $this->add_column( $columns, 'total', __( 'Total', 'woocommerce-pdf-invoices' ) );
412
-
413
- return apply_filters( 'wpi_get_invoice_columns', $columns, $this );
414
- }
415
-
416
- /**
417
- * Adds line item description to columns data array.
418
- *
419
- * @param array $data line item data.
420
- * @param int $item_id item ID.
421
- * @param object $item item object.
422
- */
423
- public function add_description_column_data( &$data, $item_id, $item ) {
424
- $templater = WPI()->templater();
425
-
426
- ob_start();
427
- echo esc_html( $item['name'] );
428
-
429
- do_action( 'wpi_order_item_meta_start', $item, $this->order );
430
- do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $this->order );
431
-
432
- $templater->wc_display_item_meta( $item, true );
433
- $templater->wc_display_item_downloads( $item, true );
434
-
435
- do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $this->order );
436
- $description = ob_get_contents();
437
- ob_end_clean();
438
-
439
- $data['description'] = apply_filters( 'wpi_item_description_data', $description, $item_id, $item );
440
- }
441
-
442
- /**
443
- * Adds line item quantity to columns data array.
444
- *
445
- * @param array $data line item data.
446
- * @param int $item_id item ID.
447
- * @param object $item item object.
448
- */
449
- public function add_quantity_column_data( &$data, $item_id, $item ) {
450
- $data['quantity'] = $item['qty'];
451
- }
452
-
453
- /**
454
- * Adds line item total incl. tax to columns data array.
455
- *
456
- * @param array $data line item data.
457
- * @param int $item_id item ID.
458
- * @param object $item item object.
459
- * @param bool $ex_tax Excluding tax.
460
- */
461
- public function add_total_column_data( &$data, $item_id, $item, $ex_tax = true ) {
462
- $data['total'] = $this->order->get_formatted_line_subtotal( $item, $ex_tax ? 'excl' : 'incl' );
463
- }
464
-
465
- /**
466
- * Get line item data for all user selected columns.
467
- *
468
- * @return array $data.
469
- */
470
- public function get_columns_data() {
471
- $rows = array();
472
- $prices_include_tax = WPI()->get_prop( $this->order, 'prices_include_tax' );
473
-
474
- foreach ( $this->order->get_items( 'line_item' ) as $item_id => $item ) {
475
- $row = array();
476
-
477
- $this->add_description_column_data( $row, $item_id, $item );
478
- $this->add_quantity_column_data( $row, $item_id, $item );
479
- $this->add_total_column_data( $row, $item_id, $item, ! $prices_include_tax );
480
-
481
- $rows[] = apply_filters( 'wpi_get_invoice_columns_data_row', $row, $item_id, $item, $this );
482
- }
483
-
484
- return $rows;
485
- }
486
-
487
- /**
488
- * Add total row for subtotal.
489
- *
490
- * @param array $total_rows totals.
491
- * @param string $tax_display 'excl' or 'incl'.
492
- */
493
- protected function add_order_item_totals_subtotal_row( &$total_rows, $tax_display ) {
494
- $subtotal = $this->order->get_subtotal_to_display( false, $tax_display );
495
- if ( $subtotal ) {
496
- $total_rows['cart_subtotal'] = array(
497
- 'label' => __( 'Subtotal:', 'woocommerce-pdf-invoices' ),
498
- 'value' => $subtotal,
499
- );
500
- }
501
- }
502
-
503
- /**
504
- * Add total row for discounts.
505
- *
506
- * @param array $total_rows totals.
507
- * @param string $tax_display 'excl' or 'incl'.
508
- */
509
- protected function add_order_item_totals_discount_row( &$total_rows, $tax_display ) {
510
- if ( $this->order->get_total_discount() > 0 ) {
511
- $total_rows['discount'] = array(
512
- 'label' => __( 'Discount:', 'woocommerce-pdf-invoices' ),
513
- 'value' => '-' . $this->order->get_discount_to_display( $tax_display ),
514
- );
515
- }
516
- }
517
-
518
- /**
519
- * Add total row for shipping.
520
- *
521
- * @param array $total_rows totals.
522
- * @param string $tax_display 'excl' or 'incl'.
523
- */
524
- protected function add_order_item_totals_shipping_row( &$total_rows, $tax_display ) {
525
- if ( $this->order->get_shipping_method() ) {
526
- $total_rows['shipping'] = array(
527
- 'label' => __( 'Shipping:', 'woocommerce-pdf-invoices' ),
528
- 'value' => $this->order->get_shipping_to_display( $tax_display ),
529
- );
530
- }
531
- }
532
-
533
- /**
534
- * Add total row for fees.
535
- *
536
- * @param array $total_rows totals.
537
- * @param string $tax_display 'excl' or 'incl'.
538
- */
539
- protected function add_order_item_totals_fee_rows( &$total_rows, $tax_display ) {
540
- $fees = $this->order->get_fees();
541
- if ( $fees ) {
542
- /**
543
- * Fee annotations.
544
- *
545
- * @var string $id WooCommerce ID.
546
- * @var WC_Order_Item_Fee $fee WooCommerce Fee.
547
- */
548
- foreach ( $fees as $id => $fee ) {
549
- if ( apply_filters( 'woocommerce_get_order_item_totals_excl_free_fees', empty( $fee['line_total'] ) && empty( $fee['line_tax'] ), $id ) ) {
550
- continue;
551
- }
552
-
553
- $total_rows[ 'fee_' . $id ] = array(
554
- 'label' => $fee['name'] . ':',
555
- 'value' => wc_price( 'excl' === $tax_display ? $fee['line_total'] : (double) $fee['line_total'] + (double) $fee['line_tax'], array(
556
- 'currency' => WPI()->get_currency( $this->order ),
557
- )
558
- ),
559
- );
560
- }
561
- }
562
- }
563
-
564
- /**
565
- * Add total row for taxes.
566
- *
567
- * @param array $total_rows totals.
568
- * @param string $tax_display 'excl' or 'incl'.
569
- */
570
- protected function add_order_item_totals_tax_rows( &$total_rows, $tax_display ) {
571
- // Tax for tax exclusive prices.
572
- if ( 'excl' === $tax_display ) {
573
- if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) {
574
- foreach ( $this->order->get_tax_totals() as $code => $tax ) {
575
- $total_rows[ sanitize_title( $code ) ] = array(
576
- 'label' => $tax->label . ':',
577
- 'value' => $tax->formatted_amount,
578
- );
579
- }
580
- } else {
581
- $total_rows['tax'] = array(
582
- 'label' => WC()->countries->tax_or_vat() . ':',
583
- 'value' => wc_price( $this->order->get_total_tax(), array(
584
- 'currency' => WPI()->get_currency( $this->order ),
585
- )
586
- ),
587
- );
588
- }
589
- }
590
- }
591
-
592
- /**
593
- * Add total row for grand total.
594
- *
595
- * @param array $total_rows totals.
596
- * @param string $tax_display 'excl' or 'incl'.
597
- */
598
- protected function add_order_item_totals_total_row( &$total_rows, $tax_display ) {
599
- $total_rows['order_total'] = array(
600
- 'label' => __( 'Total:', 'woocommerce-pdf-invoices' ),
601
- 'value' => $this->order->get_formatted_order_total( $tax_display, false ),
602
- );
603
- }
604
-
605
- /**
606
- * Get totals for display.
607
- *
608
- * @param string $tax_display 'excl' or 'incl' tax.
609
- *
610
- * @return array
611
- */
612
- public function get_order_item_totals( $tax_display = '' ) {
613
- $tax_display = $tax_display ? $tax_display : get_option( 'woocommerce_tax_display_cart' );
614
- $total_rows = array();
615
-
616
- $this->add_order_item_totals_subtotal_row( $total_rows, $tax_display );
617
- $this->add_order_item_totals_discount_row( $total_rows, $tax_display );
618
- $this->add_order_item_totals_shipping_row( $total_rows, $tax_display );
619
- $this->add_order_item_totals_fee_rows( $total_rows, $tax_display );
620
- $this->add_order_item_totals_tax_rows( $total_rows, $tax_display );
621
- $this->add_order_item_totals_total_row( $total_rows, $tax_display );
622
-
623
- return apply_filters( 'wpi_get_invoice_total_rows', $total_rows, $this );
624
- }
625
-
626
- /**
627
- * Backwards compatibility.
628
- *
629
- * @deprecated Use `generate()` instead.
630
- *
631
- * @param string $destination pdf generation mode.
632
- */
633
- public function save( $destination = 'F', $html_templates = array() ) {
634
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'generate' );
635
- $this->generate( $destination );
636
- }
637
-
638
- /**
639
- * Display company logo or name
640
- *
641
- * @deprecated See minimal template.
642
- */
643
- public function get_company_logo_html() {
644
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'WPI()->templater()->get_meta( \'_vat_number\' )' );
645
- $logo_url = $this->template_options['bewpi_company_logo'];
646
- if ( ! empty( $logo_url ) ) {
647
- // mPDF' stablest method to display an image is to use their "Image data as a Variable" (https://mpdf.github.io/what-else-can-i-do/images.html) option.
648
- $src = apply_filters( 'bewpi_company_logo_url', 'var:company_logo' );
649
- printf( '<img class="company-logo" src="%s"/>', esc_attr( $src ) );
650
- } else {
651
- // show company name if company logo isn't uploaded.
652
- $company_name = $this->template_options['bewpi_company_name'];
653
- printf( '<h1 class="company-logo">%s</h1>', esc_html( $company_name ) );
654
- }
655
- }
656
-
657
- /**
658
- * Get VAT number from WooCommerce EU VAT Number plugin.
659
- *
660
- * @deprecated See minimal template.
661
- */
662
- public function display_vat_number() {
663
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'WPI()->templater()->get_meta( \'_vat_number\' )' );
664
- // WC backwards compatibility.
665
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
666
-
667
- $vat_number = get_post_meta( $order_id, '_vat_number', true );
668
- if ( ! empty( $vat_number ) ) {
669
- echo '<span>' . sprintf( __( 'VAT Number: %s', 'woocommerce-pdf-invoices' ), $vat_number ) . '</span>';
670
- }
671
- }
672
-
673
- /**
674
- * Get PO Number from WooCommerce Purchase Order Gateway plugin.
675
- *
676
- * @deprecated See minimal template.
677
- */
678
- public function display_purchase_order_number() {
679
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'WPI()->templater()->get_meta( \'_po_number\' )' );
680
- // WC backwards compatibility.
681
- $payment_method = BEWPI_WC_Order_Compatibility::get_prop( $this->order, 'payment_method' );
682
- if ( isset( $payment_method ) && 'woocommerce_gateway_purchase_order' === $payment_method ) {
683
- // WC backwards compatibility.
684
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
685
- $po_number = get_post_meta( $order_id, '_po_number', true );
686
- if ( ! empty( $po_number ) ) {
687
- echo '<span>' . sprintf( __( 'Purchase Order Number: %s', 'woocommerce-gateway-purchase-order' ), $po_number ) . '</span>';
688
- }
689
- }
690
- }
691
-
692
- /**
693
- * Outline columns for within pdf template files.
694
- *
695
- * @param int $taxes_count number of tax classes.
696
- *
697
- * @deprecated See minimal template.
698
- */
699
- public function outlining_columns_html( $taxes_count = 0 ) {
700
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
701
- $columns_count = $this->get_columns_count( $taxes_count );
702
- $colspan = $this->get_colspan( $columns_count );
703
- ?>
704
- <style>
705
- <?php
706
- // Create css for outlining the product cells.
707
- $righter_product_row_tds_css = "";
708
- for ( $td = $colspan['left'] + 1; $td <= $columns_count; $td++ ) {
709
- if ( $td !== $columns_count ) {
710
- $righter_product_row_tds_css .= "tr.product-row td:nth-child(" . $td . "),";
711
- } else {
712
- $righter_product_row_tds_css .= "tr.product-row td:nth-child(" . $td . ")";
713
- $righter_product_row_tds_css .= "{ width: " . ( 50 / $colspan['right'] ) . "%; }";
714
- }
715
- }
716
- echo $righter_product_row_tds_css;
717
- ?>
718
- tr.product-row td:nth-child(1) {
719
- width: <?php echo $this->desc_cell_width; ?>;
720
- }
721
- </style>
722
- <?php
723
- }
724
-
725
- /**
726
- * Number of columns.
727
- *
728
- * @param int $tax_count number of taxes.
729
- *
730
- * @deprecated See minimal template.
731
- * @return int
732
- */
733
- public function get_columns_count( $tax_count = 0 ) {
734
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
735
- $columns_count = 4;
736
-
737
- if ( $this->template_options['bewpi_show_sku'] ) {
738
- $columns_count ++;
739
- }
740
-
741
- if ( $this->template_options['bewpi_show_tax'] && wc_tax_enabled() && empty( $legacy_order ) ) {
742
- $columns_count += $tax_count;
743
- }
744
-
745
- return $columns_count;
746
- }
747
-
748
- /**
749
- * Calculates colspan for table footer cells
750
- *
751
- * @deprecated See minimal template solution.
752
- *
753
- * @param int $columns_count number of columns.
754
- *
755
- * @return array
756
- */
757
- public function get_colspan( $columns_count = 0 ) {
758
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
759
- $colspan = array();
760
- $number_of_left_half_columns = 3;
761
- $this->desc_cell_width = '30%';
762
-
763
- // The product table will be split into 2 where on the right 5 columns are the max.
764
- if ( $columns_count <= 4 ) :
765
- $number_of_left_half_columns = 1;
766
- $this->desc_cell_width = '48%';
767
- elseif ( $columns_count <= 6 ) :
768
- $number_of_left_half_columns = 2;
769
- $this->desc_cell_width = '35.50%';
770
- endif;
771
-
772
- $colspan['left'] = $number_of_left_half_columns;
773
- $colspan['right'] = $columns_count - $number_of_left_half_columns;
774
- $colspan['right_left'] = round( ( $colspan['right'] / 2 ), 0, PHP_ROUND_HALF_DOWN );
775
- $colspan['right_right'] = round( ( $colspan['right'] / 2 ), 0, PHP_ROUND_HALF_UP );
776
-
777
- return $colspan;
778
- }
779
-
780
- /**
781
- * Check if order has only virtual products.
782
- *
783
- * @return bool
784
- *
785
- * @deprecated moved to WPI()->templater().
786
- * @since 2.5.3
787
- */
788
- public function has_only_virtual_products() {
789
- foreach ( $this->order->get_items( 'line_item' ) as $item ) {
790
- $product = $this->order->get_product_from_item( $item );
791
- if ( ! $product || ! $product->is_virtual() ) {
792
- return false;
793
- }
794
- }
795
-
796
- return true;
797
- }
798
-
799
- /**
800
- * Checks if invoice needs to have a zero rated VAT.
801
- *
802
- * @deprecated See minimal template.
803
- * @return bool
804
- */
805
- public function display_zero_rated_vat() {
806
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
807
- // WC backwards compatibility.
808
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
809
-
810
- $is_vat_valid = get_post_meta( $order_id, '_vat_number_is_valid', true );
811
- if ( ! $is_vat_valid ) {
812
- return false;
813
- }
814
-
815
- $is_tax_removed = count( $this->order->get_tax_totals() ) === 0;
816
- if ( ! $is_tax_removed ) {
817
- return false;
818
- }
819
-
820
- return true;
821
- }
822
-
823
- /**
824
- * @param $str
825
- *
826
- * @deprecated moved to BEWPI_Template Class.
827
- *
828
- * @return mixed
829
- */
830
- private function replace_placeholders( $str ) {
831
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
832
- // WC backwards compatibility.
833
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
834
-
835
- $placeholders = apply_filters( 'bewpi_placeholders', array(
836
- '[payment_method]' => BEWPI_WC_Order_Compatibility::get_prop( $this->order, 'payment_method_title' ),
837
- '[shipping_method]' => $this->order->get_shipping_method(),
838
- ), $order_id );
839
-
840
- foreach ( $placeholders as $placeholder => $value ) {
841
- $str = str_replace( $placeholder, $value, $str );
842
- }
843
-
844
- return $str;
845
- }
846
-
847
- /**
848
- * @deprecated instead use 'WPI()->templater()->get_option()'.
849
- */
850
- public function left_footer_column_html() {
851
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'WPI()->templater()->get_option( \'bewpi_left_footer_column\' )' );
852
- $left_footer_column_text = $this->template_options['bewpi_left_footer_column'];
853
- if ( ! empty( $left_footer_column_text ) ) {
854
- echo '<p>' . nl2br( $this->replace_placeholders( $left_footer_column_text ) ) . '</p>';
855
- }
856
- }
857
-
858
- /**
859
- * @deprecated instead use 'WPI()->templater()->get_option()'.
860
- */
861
- public function right_footer_column_html() {
862
- _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
863
- $right_footer_column_text = $this->template_options['bewpi_right_footer_column'];
864
- if ( ! empty( $right_footer_column_text ) ) {
865
- echo '<p>' . nl2br( $this->replace_placeholders( $right_footer_column_text ) ) . '</p>';
866
- } else {
867
- echo '<p>' . sprintf( __( '%s of %s', 'woocommerce-pdf-invoices' ), '{PAGENO}', '{nbpg}' ) . '</p>';
868
- }
869
- }
870
-
871
- /**
872
- * Set order item totals colspan.
873
- *
874
- * @param int $colspan Order item totals table colspan.
875
- */
876
- public function set_colspan( $colspan ) {
877
- $this->colspan = $colspan;
878
- }
879
- }
880
- } // End if().
1
+ <?php
2
+ /**
3
+ * Invoice Class for different types of (invoice) documents.
4
+ *
5
+ * @author Bas Elbers
6
+ * @category Abstract Class
7
+ * @package BE_WooCommerce_PDF_Invoices/Abstracts
8
+ * @version 1.0.0
9
+ */
10
+
11
+ defined( 'ABSPATH' ) or exit;
12
+
13
+ if ( ! class_exists( 'BEWPI_Abstract_Invoice' ) ) {
14
+
15
+ /**
16
+ * Makes the invoice.
17
+ * Class BEWPI_Invoice
18
+ */
19
+ abstract class BEWPI_Abstract_Invoice extends BEWPI_Abstract_Document {
20
+
21
+ /**
22
+ * Invoice number.
23
+ *
24
+ * @var int
25
+ */
26
+ protected $number;
27
+
28
+ /**
29
+ * MySQL invoice date.
30
+ *
31
+ * @var string
32
+ */
33
+ protected $date = '0000-00-00 00:00:00';
34
+
35
+ /**
36
+ * Year of invoice.
37
+ *
38
+ * @var string
39
+ */
40
+ protected $year;
41
+
42
+ /**
43
+ * Number of columns from products table.
44
+ *
45
+ * @deprecated outlining columns will be refactored.
46
+ * @var int
47
+ */
48
+ public $columns_count;
49
+
50
+ /**
51
+ * Colspan data to outline products table columns.
52
+ *
53
+ * @var int
54
+ */
55
+ public $colspan = 1;
56
+
57
+ /**
58
+ * Width of the description cell of the product table.
59
+ *
60
+ * @deprecated outlining columns will be refactored.
61
+ * @var string
62
+ */
63
+ protected $desc_cell_width;
64
+
65
+ /**
66
+ * BEWPI_Abstract_Invoice constructor.
67
+ *
68
+ * @param int $order_id WooCommerce Order ID.
69
+ */
70
+ public function __construct( $order_id ) {
71
+ parent::__construct();
72
+
73
+ $this->full_path = self::exists( $order_id );
74
+ if ( $this->full_path ) {
75
+ $this->number = get_post_meta( $order_id, '_bewpi_invoice_number', true );
76
+ $this->date = get_post_meta( $order_id, '_bewpi_invoice_date', true );
77
+ $this->year = date_i18n( 'Y', strtotime( $this->date ) );
78
+ $this->filename = basename( $this->full_path );
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Invoice number.
84
+ *
85
+ * @return int
86
+ */
87
+ public function get_number() {
88
+ return (int) $this->number;
89
+ }
90
+
91
+ /**
92
+ * Format invoice number with placeholders.
93
+ *
94
+ * @return string
95
+ */
96
+ public function get_formatted_number() {
97
+ // Format number with the number of digits.
98
+ $digitized_invoice_number = sprintf( '%0' . WPI()->get_option( 'template', 'invoice_number_digits' ) . 's', $this->number );
99
+ $formatted_invoice_number = str_replace(
100
+ array( '[number]', '[order-date]', '[order-number]', '[Y]', '[y]', '[m]' ),
101
+ array(
102
+ $digitized_invoice_number,
103
+ date_i18n( apply_filters( 'bewpi_formatted_invoice_number_order_date_format', 'Y-m-d' ), strtotime( $this->date ) ),
104
+ $this->order->get_order_number(),
105
+ $this->year,
106
+ date_i18n( 'y', strtotime( $this->date ) ),
107
+ date_i18n( 'm', strtotime( $this->date ) ),
108
+ ),
109
+ WPI()->get_option( 'template', 'invoice_number_format' )
110
+ );
111
+
112
+ // Since 2.8.1 [prefix] and [suffix] were removed.
113
+ $formatted_invoice_number = str_replace(
114
+ array( '[prefix]', '[suffix]' ),
115
+ array( '', '' ),
116
+ $formatted_invoice_number
117
+ );
118
+
119
+ // Add prefix and suffix directly.
120
+ $formatted_invoice_number = WPI()->get_option( 'template', 'invoice_number_prefix' ) . $formatted_invoice_number . WPI()->get_option( 'template', 'invoice_number_suffix' );
121
+
122
+ return apply_filters( 'bewpi_formatted_invoice_number', $formatted_invoice_number, $this->type );
123
+ }
124
+
125
+ /**
126
+ * Format and localize (MySQL) invoice date.
127
+ *
128
+ * @deprecated Use get_formatted_date instead.
129
+ * @return string
130
+ */
131
+ public function get_formatted_invoice_date() {
132
+ return date_i18n( $this->get_date_format(), strtotime( $this->date ) );
133
+ }
134
+
135
+ /**
136
+ * Format and localize (MySQL) invoice date.
137
+ *
138
+ * @return string
139
+ */
140
+ public function get_formatted_date() {
141
+ return date_i18n( $this->get_date_format(), strtotime( $this->date ) );
142
+ }
143
+
144
+ /**
145
+ * Delete invoice PDF files.
146
+ *
147
+ * @param int $from_number Invoice number where to start from.
148
+ */
149
+ private function delete_pdf_invoices( $from_number = 0 ) {
150
+ global $wpdb;
151
+
152
+ if ( (bool) $this->template_options['bewpi_reset_counter_yearly'] ) {
153
+ // get formatted numbers by year and greater then given invoice number.
154
+ $files = $wpdb->get_col( $wpdb->prepare(
155
+ "SELECT pm3.meta_value AS pdf_path FROM wp_postmeta pm1
156
+ INNER JOIN wp_postmeta pm2 ON pm1.post_id = pm2.post_id
157
+ INNER JOIN wp_postmeta pm3 ON pm1.post_id = pm3.post_id
158
+ WHERE (pm1.meta_key = '_bewpi_invoice_date' AND YEAR(pm1.meta_value) = %d)
159
+ AND (pm2.meta_key = '_bewpi_invoice_number' AND pm2.meta_value >= %d)
160
+ AND (pm3.meta_key = '_bewpi_invoice_pdf_path')",
161
+ (int) date_i18n( 'Y', current_time( 'timestamp' ) ),
162
+ $from_number
163
+ ) ); // db call ok; no-cache ok.
164
+ } else {
165
+ // get formatted numbers greater then given invoice number.
166
+ $files = $wpdb->get_col( $wpdb->prepare(
167
+ "SELECT pm2.meta_value AS pdf_path FROM wp_postmeta pm1
168
+ INNER JOIN wp_postmeta pm2 ON pm1.post_id = pm2.post_id
169
+ WHERE (pm1.meta_key = '_bewpi_invoice_number' AND pm1.meta_value >= %d)
170
+ AND (pm2.meta_key = '_bewpi_invoice_pdf_path')",
171
+ $from_number
172
+ ) ); // db call ok; no-cache ok.
173
+ }
174
+
175
+ // delete pdf files.
176
+ foreach ( $files as $pdf_path ) {
177
+ parent::delete( WPI_ATTACHMENTS_DIR . '/' . $pdf_path );
178
+ }
179
+ }
180
+
181
+ /**
182
+ * Delete invoice post meta information.
183
+ *
184
+ * @param int $from_number Invoice number from which to delete.
185
+ *
186
+ * @return false|int
187
+ */
188
+ private function delete_invoice_meta( $from_number = 0 ) {
189
+ global $wpdb;
190
+
191
+ if ( (bool) $this->template_options['bewpi_reset_counter_yearly'] ) {
192
+ // delete by year and greater then given invoice number.
193
+ $query = $wpdb->prepare(
194
+ "DELETE pm1, pm2, pm3 FROM $wpdb->postmeta pm1
195
+ INNER JOIN $wpdb->postmeta pm2 ON pm1.post_id = pm2.post_id
196
+ INNER JOIN $wpdb->postmeta pm3 ON pm1.post_id = pm3.post_id
197
+ WHERE (pm1.meta_key = %s AND YEAR(pm1.meta_value) = %d)
198
+ AND (pm2.meta_key = %s AND pm2.meta_value >= %d)
199
+ AND (pm3.meta_key = %s)",
200
+ '_bewpi_invoice_date',
201
+ (int) date_i18n( 'Y', current_time( 'timestamp' ) ),
202
+ '_bewpi_invoice_number',
203
+ $from_number,
204
+ '_bewpi_invoice_pdf_path'
205
+ );
206
+ } else {
207
+ // delete by greater then given invoice number.
208
+ $query = $wpdb->prepare(
209
+ "DELETE pm1, pm2 FROM $wpdb->postmeta pm1
210
+ INNER JOIN $wpdb->postmeta pm2 ON pm1.post_id = pm2.post_id
211
+ WHERE (pm1.meta_key = %s AND pm1.meta_value >= %d)
212
+ AND (pm2.meta_key = %s OR pm2.meta_key = %s)",
213
+ '_bewpi_invoice_number',
214
+ $from_number,
215
+ '_bewpi_invoice_date',
216
+ '_bewpi_invoice_pdf_path'
217
+ );
218
+ }
219
+
220
+ return $wpdb->query( $query ); // db call ok; no-cache ok. WPCS: unprepared SQL OK.
221
+ }
222
+
223
+ /**
224
+ * Get next invoice number from db.
225
+ *
226
+ * @return int
227
+ */
228
+ protected function get_next_invoice_number() {
229
+ // uses WooCommerce order numbers as invoice numbers?
230
+ if ( 'woocommerce_order_number' === $this->template_options['bewpi_invoice_number_type'] ) {
231
+ return $this->order->get_order_number();
232
+ }
233
+
234
+ // check if user did a counter reset.
235
+ $next_number = get_transient( 'bewpi_next_invoice_number' );
236
+ if ( false !== $next_number ) {
237
+ $this->delete_pdf_invoices( $next_number );
238
+ $this->delete_invoice_meta( $next_number );
239
+
240
+ delete_transient( 'bewpi_next_invoice_number' );
241
+
242
+ return $next_number;
243
+ }
244
+
245
+ $max_invoice_number = self::get_max_invoice_number();
246
+ $next_number = $max_invoice_number + 1;
247
+
248
+ return $next_number;
249
+ }
250
+
251
+ /**
252
+ * Return highest invoice number.
253
+ *
254
+ * @return int
255
+ */
256
+ public static function get_max_invoice_number() {
257
+ global $wpdb;
258
+
259
+ $template_options = get_option( 'bewpi_template_settings' );
260
+ if ( (bool) $template_options['bewpi_reset_counter_yearly'] ) {
261
+ // get by year.
262
+ $query = $wpdb->prepare(
263
+ "SELECT MAX(CAST(pm2.meta_value AS UNSIGNED)) AS last_invoice_number
264
+ FROM $wpdb->postmeta pm1
265
+ INNER JOIN $wpdb->postmeta pm2 ON pm1.post_id = pm2.post_id
266
+ WHERE pm1.meta_key = %s AND YEAR(pm1.meta_value) = %d AND pm2.meta_key = %s",
267
+ '_bewpi_invoice_date',
268
+ (int) date_i18n( 'Y', current_time( 'timestamp' ) ),
269
+ '_bewpi_invoice_number'
270
+ );
271
+ } else {
272
+ // get all.
273
+ $query = $wpdb->prepare(
274
+ "SELECT MAX(CAST(pm2.meta_value AS UNSIGNED)) AS last_invoice_number
275
+ FROM $wpdb->postmeta pm1
276
+ INNER JOIN $wpdb->postmeta pm2 ON pm1.post_id = pm2.post_id
277
+ WHERE pm2.meta_key = %s",
278
+ '_bewpi_invoice_number'
279
+ );
280
+ }
281
+
282
+ return intval( $wpdb->get_var( $query ) ); // db call ok; no-cache ok. WPCS: unprepared SQL OK.
283
+ }
284
+
285
+ /**
286
+ * Save invoice.
287
+ *
288
+ * @param string $destination pdf generation mode.
289
+ *
290
+ * @return string
291
+ */
292
+ public function generate( $destination = 'F' ) {
293
+ if ( false === $this->full_path ) {
294
+ $this->date = apply_filters( 'wpi_invoice_date', current_time( 'mysql' ), $this );
295
+ $this->number = $this->get_next_invoice_number();
296
+ $this->year = date_i18n( 'Y', current_time( 'timestamp' ) );
297
+ } else {
298
+ // delete PDF.
299
+ parent::delete( $this->full_path );
300
+ }
301
+
302
+ // yearly sub-folders.
303
+ if ( (bool) WPI()->get_option( 'template', 'reset_counter_yearly' ) ) {
304
+ // Make new year dir.
305
+ $year_dir = WPI_ATTACHMENTS_DIR . '/' . $this->year;
306
+ if ( ! is_dir( $year_dir ) ) {
307
+ wp_mkdir_p( $year_dir );
308
+ }
309
+
310
+ $pdf_path = $this->year . '/' . $this->get_formatted_number() . '.pdf';
311
+ } else {
312
+ // one folder for all invoices.
313
+ $pdf_path = $this->get_formatted_number() . '.pdf';
314
+ }
315
+
316
+ $this->full_path = WPI_ATTACHMENTS_DIR . '/' . $pdf_path;
317
+ $this->filename = basename( $this->full_path );
318
+
319
+ // update invoice data in db.
320
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
321
+ update_post_meta( $order_id, '_bewpi_invoice_date', $this->date );
322
+ update_post_meta( $order_id, '_bewpi_invoice_number', $this->number );
323
+ update_post_meta( $order_id, '_bewpi_invoice_pdf_path', $pdf_path );
324
+
325
+ do_action( 'bewpi_before_document_generation', $this->type, $order_id );
326
+
327
+ parent::generate( $destination );
328
+
329
+ return $this->full_path;
330
+ }
331
+
332
+ /**
333
+ * Update invoice.
334
+ *
335
+ * @param string $destination pdf generation mode.
336
+ *
337
+ * @return string $full_path Full path to PDF invoice file.
338
+ */
339
+ public function update( $destination = 'F' ) {
340
+ parent::delete( $this->full_path );
341
+ parent::generate( $destination );
342
+
343
+ return $this->full_path;
344
+ }
345
+
346
+ /**
347
+ * Delete all invoice data from database and pdf file.
348
+ *
349
+ * @param int $order_id WooCommerce Order ID.
350
+ */
351
+ public static function delete( $order_id ) {
352
+ // Remove pdf file.
353
+ $full_path = WPI_ATTACHMENTS_DIR . '/' . get_post_meta( $order_id, '_bewpi_invoice_pdf_path', true );
354
+ parent::delete( $full_path );
355
+
356
+ // Remove invoice postmeta from database.
357
+ delete_post_meta( $order_id, '_bewpi_invoice_number' );
358
+ delete_post_meta( $order_id, '_bewpi_invoice_date' );
359
+ delete_post_meta( $order_id, '_bewpi_invoice_pdf_path' );
360
+
361
+ // Version 2.6+ not used anymore.
362
+ delete_post_meta( $order_id, '_bewpi_formatted_invoice_number' );
363
+ delete_post_meta( $order_id, '_bewpi_invoice_year' );
364
+
365
+ do_action( 'bewpi_after_post_meta_deletion', $order_id );
366
+ }
367
+
368
+ /**
369
+ * Check if invoice exists.
370
+ *
371
+ * @param int $order_id WooCommerce Order ID.
372
+ *
373
+ * @return bool|string false when no pdf invoice exists or full path when exists.
374
+ */
375
+ public static function exists( $order_id ) {
376
+ // pdf data exists in database?
377
+ $pdf_path = get_post_meta( $order_id, '_bewpi_invoice_pdf_path', true );
378
+ if ( ! $pdf_path ) {
379
+ return false;
380
+ }
381
+
382
+ return parent::exists( WPI_ATTACHMENTS_DIR . '/' . $pdf_path );
383
+ }
384
+
385
+ /**
386
+ * Add column header data.
387
+ *
388
+ * @param array $data Column header data.
389
+ * @param string $key Column name.
390
+ * @param string $label Column title.
391
+ * @param string $tax_display Display tax label.
392
+ */
393
+ public function add_column( &$data, $key, $label, $tax_display = '' ) {
394
+ if ( ! empty( $tax_display ) ) {
395
+ $label .= '&nbsp;' . WPI()->tax_or_vat_label( 'incl' === $tax_display );
396
+ }
397
+
398
+ $data[ $key ] = $label;
399
+ }
400
+
401
+ /**
402
+ * Get columns.
403
+ *
404
+ * @return array
405
+ */
406
+ public function get_columns() {
407
+ $columns = array();
408
+
409
+ $this->add_column( $columns, 'description', __( 'Description', 'woocommerce-pdf-invoices' ) );
410
+ $this->add_column( $columns, 'quantity', __( 'Qty', 'woocommerce-pdf-invoices' ) );
411
+ $this->add_column( $columns, 'total', __( 'Total', 'woocommerce-pdf-invoices' ) );
412
+
413
+ return apply_filters( 'wpi_get_invoice_columns', $columns, $this );
414
+ }
415
+
416
+ /**
417
+ * Adds line item description to columns data array.
418
+ *
419
+ * @param array $data line item data.
420
+ * @param int $item_id item ID.
421
+ * @param object $item item object.
422
+ */
423
+ public function add_description_column_data( &$data, $item_id, $item ) {
424
+ $templater = WPI()->templater();
425
+
426
+ ob_start();
427
+ echo esc_html( $item['name'] );
428
+
429
+ do_action( 'wpi_order_item_meta_start', $item, $this->order );
430
+ do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $this->order );
431
+
432
+ $templater->wc_display_item_meta( $item, true );
433
+ $templater->wc_display_item_downloads( $item, true );
434
+
435
+ do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $this->order );
436
+ $description = ob_get_contents();
437
+ ob_end_clean();
438
+
439
+ $data['description'] = apply_filters( 'wpi_item_description_data', $description, $item_id, $item );
440
+ }
441
+
442
+ /**
443
+ * Adds line item quantity to columns data array.
444
+ *
445
+ * @param array $data line item data.
446
+ * @param int $item_id item ID.
447
+ * @param object $item item object.
448
+ */
449
+ public function add_quantity_column_data( &$data, $item_id, $item ) {
450
+ $data['quantity'] = $item['qty'];
451
+ }
452
+
453
+ /**
454
+ * Adds line item total incl. tax to columns data array.
455
+ *
456
+ * @param array $data line item data.
457
+ * @param int $item_id item ID.
458
+ * @param object $item item object.
459
+ * @param bool $ex_tax Excluding tax.
460
+ */
461
+ public function add_total_column_data( &$data, $item_id, $item, $ex_tax = true ) {
462
+ $data['total'] = $this->order->get_formatted_line_subtotal( $item, $ex_tax ? 'excl' : 'incl' );
463
+ }
464
+
465
+ /**
466
+ * Get line item data for all user selected columns.
467
+ *
468
+ * @return array $data.
469
+ */
470
+ public function get_columns_data() {
471
+ $rows = array();
472
+ $prices_include_tax = WPI()->get_prop( $this->order, 'prices_include_tax' );
473
+
474
+ foreach ( $this->order->get_items( 'line_item' ) as $item_id => $item ) {
475
+ $row = array();
476
+
477
+ $this->add_description_column_data( $row, $item_id, $item );
478
+ $this->add_quantity_column_data( $row, $item_id, $item );
479
+ $this->add_total_column_data( $row, $item_id, $item, ! $prices_include_tax );
480
+
481
+ $rows[] = apply_filters( 'wpi_get_invoice_columns_data_row', $row, $item_id, $item, $this );
482
+ }
483
+
484
+ return $rows;
485
+ }
486
+
487
+ /**
488
+ * Add total row for subtotal.
489
+ *
490
+ * @param array $total_rows totals.
491
+ * @param string $tax_display 'excl' or 'incl'.
492
+ */
493
+ protected function add_order_item_totals_subtotal_row( &$total_rows, $tax_display ) {
494
+ $subtotal = $this->order->get_subtotal_to_display( false, $tax_display );
495
+ if ( $subtotal ) {
496
+ $total_rows['cart_subtotal'] = array(
497
+ 'label' => __( 'Subtotal:', 'woocommerce-pdf-invoices' ),
498
+ 'value' => $subtotal,
499
+ );
500
+ }
501
+ }
502
+
503
+ /**
504
+ * Add total row for discounts.
505
+ *
506
+ * @param array $total_rows totals.
507
+ * @param string $tax_display 'excl' or 'incl'.
508
+ */
509
+ protected function add_order_item_totals_discount_row( &$total_rows, $tax_display ) {
510
+ if ( $this->order->get_total_discount() > 0 ) {
511
+ $total_rows['discount'] = array(
512
+ 'label' => __( 'Discount:', 'woocommerce-pdf-invoices' ),
513
+ 'value' => '-' . $this->order->get_discount_to_display( $tax_display ),
514
+ );
515
+ }
516
+ }
517
+
518
+ /**
519
+ * Add total row for shipping.
520
+ *
521
+ * @param array $total_rows totals.
522
+ * @param string $tax_display 'excl' or 'incl'.
523
+ */
524
+ protected function add_order_item_totals_shipping_row( &$total_rows, $tax_display ) {
525
+ if ( $this->order->get_shipping_method() ) {
526
+ $total_rows['shipping'] = array(
527
+ 'label' => __( 'Shipping:', 'woocommerce-pdf-invoices' ),
528
+ 'value' => $this->order->get_shipping_to_display( $tax_display ),
529
+ );
530
+ }
531
+ }
532
+
533
+ /**
534
+ * Add total row for fees.
535
+ *
536
+ * @param array $total_rows totals.
537
+ * @param string $tax_display 'excl' or 'incl'.
538
+ */
539
+ protected function add_order_item_totals_fee_rows( &$total_rows, $tax_display ) {
540
+ $fees = $this->order->get_fees();
541
+ if ( $fees ) {
542
+ /**
543
+ * Fee annotations.
544
+ *
545
+ * @var string $id WooCommerce ID.
546
+ * @var WC_Order_Item_Fee $fee WooCommerce Fee.
547
+ */
548
+ foreach ( $fees as $id => $fee ) {
549
+ if ( apply_filters( 'woocommerce_get_order_item_totals_excl_free_fees', empty( $fee['line_total'] ) && empty( $fee['line_tax'] ), $id ) ) {
550
+ continue;
551
+ }
552
+
553
+ $total_rows[ 'fee_' . $id ] = array(
554
+ 'label' => $fee['name'] . ':',
555
+ 'value' => wc_price( 'excl' === $tax_display ? $fee['line_total'] : (double) $fee['line_total'] + (double) $fee['line_tax'], array(
556
+ 'currency' => WPI()->get_currency( $this->order ),
557
+ )
558
+ ),
559
+ );
560
+ }
561
+ }
562
+ }
563
+
564
+ /**
565
+ * Add total row for taxes.
566
+ *
567
+ * @param array $total_rows totals.
568
+ * @param string $tax_display 'excl' or 'incl'.
569
+ */
570
+ protected function add_order_item_totals_tax_rows( &$total_rows, $tax_display ) {
571
+ // Tax for tax exclusive prices.
572
+ if ( 'excl' === $tax_display ) {
573
+ if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) {
574
+ foreach ( $this->order->get_tax_totals() as $code => $tax ) {
575
+ $total_rows[ sanitize_title( $code ) ] = array(
576
+ 'label' => $tax->label . ':',
577
+ 'value' => $tax->formatted_amount,
578
+ );
579
+ }
580
+ } else {
581
+ $total_rows['tax'] = array(
582
+ 'label' => WC()->countries->tax_or_vat() . ':',
583
+ 'value' => wc_price( $this->order->get_total_tax(), array(
584
+ 'currency' => WPI()->get_currency( $this->order ),
585
+ )
586
+ ),
587
+ );
588
+ }
589
+ }
590
+ }
591
+
592
+ /**
593
+ * Add total row for grand total.
594
+ *
595
+ * @param array $total_rows totals.
596
+ * @param string $tax_display 'excl' or 'incl'.
597
+ */
598
+ protected function add_order_item_totals_total_row( &$total_rows, $tax_display ) {
599
+ $total_rows['order_total'] = array(
600
+ 'label' => __( 'Total:', 'woocommerce-pdf-invoices' ),
601
+ 'value' => $this->order->get_formatted_order_total( $tax_display, false ),
602
+ );
603
+ }
604
+
605
+ /**
606
+ * Get totals for display.
607
+ *
608
+ * @param string $tax_display 'excl' or 'incl' tax.
609
+ *
610
+ * @return array
611
+ */
612
+ public function get_order_item_totals( $tax_display = '' ) {
613
+ $tax_display = $tax_display ? $tax_display : get_option( 'woocommerce_tax_display_cart' );
614
+ $total_rows = array();
615
+
616
+ $this->add_order_item_totals_subtotal_row( $total_rows, $tax_display );
617
+ $this->add_order_item_totals_discount_row( $total_rows, $tax_display );
618
+ $this->add_order_item_totals_shipping_row( $total_rows, $tax_display );
619
+ $this->add_order_item_totals_fee_rows( $total_rows, $tax_display );
620
+ $this->add_order_item_totals_tax_rows( $total_rows, $tax_display );
621
+ $this->add_order_item_totals_total_row( $total_rows, $tax_display );
622
+
623
+ return apply_filters( 'wpi_get_invoice_total_rows', $total_rows, $this );
624
+ }
625
+
626
+ /**
627
+ * Backwards compatibility.
628
+ *
629
+ * @deprecated Use `generate()` instead.
630
+ *
631
+ * @param string $destination pdf generation mode.
632
+ */
633
+ public function save( $destination = 'F', $html_templates = array() ) {
634
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'generate' );
635
+ $this->generate( $destination );
636
+ }
637
+
638
+ /**
639
+ * Display company logo or name
640
+ *
641
+ * @deprecated See minimal template.
642
+ */
643
+ public function get_company_logo_html() {
644
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'WPI()->templater()->get_meta( \'_vat_number\' )' );
645
+ $logo_url = $this->template_options['bewpi_company_logo'];
646
+ if ( ! empty( $logo_url ) ) {
647
+ // mPDF' stablest method to display an image is to use their "Image data as a Variable" (https://mpdf.github.io/what-else-can-i-do/images.html) option.
648
+ $src = apply_filters( 'bewpi_company_logo_url', 'var:company_logo' );
649
+ printf( '<img class="company-logo" src="%s"/>', esc_attr( $src ) );
650
+ } else {
651
+ // show company name if company logo isn't uploaded.
652
+ $company_name = $this->template_options['bewpi_company_name'];
653
+ printf( '<h1 class="company-logo">%s</h1>', esc_html( $company_name ) );
654
+ }
655
+ }
656
+
657
+ /**
658
+ * Get VAT number from WooCommerce EU VAT Number plugin.
659
+ *
660
+ * @deprecated See minimal template.
661
+ */
662
+ public function display_vat_number() {
663
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'WPI()->templater()->get_meta( \'_vat_number\' )' );
664
+ // WC backwards compatibility.
665
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
666
+
667
+ $vat_number = get_post_meta( $order_id, '_vat_number', true );
668
+ if ( ! empty( $vat_number ) ) {
669
+ echo '<span>' . sprintf( __( 'VAT Number: %s', 'woocommerce-pdf-invoices' ), $vat_number ) . '</span>';
670
+ }
671
+ }
672
+
673
+ /**
674
+ * Get PO Number from WooCommerce Purchase Order Gateway plugin.
675
+ *
676
+ * @deprecated See minimal template.
677
+ */
678
+ public function display_purchase_order_number() {
679
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'WPI()->templater()->get_meta( \'_po_number\' )' );
680
+ // WC backwards compatibility.
681
+ $payment_method = BEWPI_WC_Order_Compatibility::get_prop( $this->order, 'payment_method' );
682
+ if ( isset( $payment_method ) && 'woocommerce_gateway_purchase_order' === $payment_method ) {
683
+ // WC backwards compatibility.
684
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
685
+ $po_number = get_post_meta( $order_id, '_po_number', true );
686
+ if ( ! empty( $po_number ) ) {
687
+ echo '<span>' . sprintf( __( 'Purchase Order Number: %s', 'woocommerce-gateway-purchase-order' ), $po_number ) . '</span>';
688
+ }
689
+ }
690
+ }
691
+
692
+ /**
693
+ * Outline columns for within pdf template files.
694
+ *
695
+ * @param int $taxes_count number of tax classes.
696
+ *
697
+ * @deprecated See minimal template.
698
+ */
699
+ public function outlining_columns_html( $taxes_count = 0 ) {
700
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
701
+ $columns_count = $this->get_columns_count( $taxes_count );
702
+ $colspan = $this->get_colspan( $columns_count );
703
+ ?>
704
+ <style>
705
+ <?php
706
+ // Create css for outlining the product cells.
707
+ $righter_product_row_tds_css = "";
708
+ for ( $td = $colspan['left'] + 1; $td <= $columns_count; $td++ ) {
709
+ if ( $td !== $columns_count ) {
710
+ $righter_product_row_tds_css .= "tr.product-row td:nth-child(" . $td . "),";
711
+ } else {
712
+ $righter_product_row_tds_css .= "tr.product-row td:nth-child(" . $td . ")";
713
+ $righter_product_row_tds_css .= "{ width: " . ( 50 / $colspan['right'] ) . "%; }";
714
+ }
715
+ }
716
+ echo $righter_product_row_tds_css;
717
+ ?>
718
+ tr.product-row td:nth-child(1) {
719
+ width: <?php echo $this->desc_cell_width; ?>;
720
+ }
721
+ </style>
722
+ <?php
723
+ }
724
+
725
+ /**
726
+ * Number of columns.
727
+ *
728
+ * @param int $tax_count number of taxes.
729
+ *
730
+ * @deprecated See minimal template.
731
+ * @return int
732
+ */
733
+ public function get_columns_count( $tax_count = 0 ) {
734
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
735
+ $columns_count = 4;
736
+
737
+ if ( $this->template_options['bewpi_show_sku'] ) {
738
+ $columns_count ++;
739
+ }
740
+
741
+ if ( $this->template_options['bewpi_show_tax'] && wc_tax_enabled() && empty( $legacy_order ) ) {
742
+ $columns_count += $tax_count;
743
+ }
744
+
745
+ return $columns_count;
746
+ }
747
+
748
+ /**
749
+ * Calculates colspan for table footer cells
750
+ *
751
+ * @deprecated See minimal template solution.
752
+ *
753
+ * @param int $columns_count number of columns.
754
+ *
755
+ * @return array
756
+ */
757
+ public function get_colspan( $columns_count = 0 ) {
758
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
759
+ $colspan = array();
760
+ $number_of_left_half_columns = 3;
761
+ $this->desc_cell_width = '30%';
762
+
763
+ // The product table will be split into 2 where on the right 5 columns are the max.
764
+ if ( $columns_count <= 4 ) :
765
+ $number_of_left_half_columns = 1;
766
+ $this->desc_cell_width = '48%';
767
+ elseif ( $columns_count <= 6 ) :
768
+ $number_of_left_half_columns = 2;
769
+ $this->desc_cell_width = '35.50%';
770
+ endif;
771
+
772
+ $colspan['left'] = $number_of_left_half_columns;
773
+ $colspan['right'] = $columns_count - $number_of_left_half_columns;
774
+ $colspan['right_left'] = round( ( $colspan['right'] / 2 ), 0, PHP_ROUND_HALF_DOWN );
775
+ $colspan['right_right'] = round( ( $colspan['right'] / 2 ), 0, PHP_ROUND_HALF_UP );
776
+
777
+ return $colspan;
778
+ }
779
+
780
+ /**
781
+ * Check if order has only virtual products.
782
+ *
783
+ * @return bool
784
+ *
785
+ * @deprecated moved to WPI()->templater().
786
+ * @since 2.5.3
787
+ */
788
+ public function has_only_virtual_products() {
789
+ foreach ( $this->order->get_items( 'line_item' ) as $item ) {
790
+ $product = $this->order->get_product_from_item( $item );
791
+ if ( ! $product || ! $product->is_virtual() ) {
792
+ return false;
793
+ }
794
+ }
795
+
796
+ return true;
797
+ }
798
+
799
+ /**
800
+ * Checks if invoice needs to have a zero rated VAT.
801
+ *
802
+ * @deprecated See minimal template.
803
+ * @return bool
804
+ */
805
+ public function display_zero_rated_vat() {
806
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
807
+ // WC backwards compatibility.
808
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
809
+
810
+ $is_vat_valid = get_post_meta( $order_id, '_vat_number_is_valid', true );
811
+ if ( ! $is_vat_valid ) {
812
+ return false;
813
+ }
814
+
815
+ $is_tax_removed = count( $this->order->get_tax_totals() ) === 0;
816
+ if ( ! $is_tax_removed ) {
817
+ return false;
818
+ }
819
+
820
+ return true;
821
+ }
822
+
823
+ /**
824
+ * @param $str
825
+ *
826
+ * @deprecated moved to BEWPI_Template Class.
827
+ *
828
+ * @return mixed
829
+ */
830
+ private function replace_placeholders( $str ) {
831
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
832
+ // WC backwards compatibility.
833
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
834
+
835
+ $placeholders = apply_filters( 'bewpi_placeholders', array(
836
+ '[payment_method]' => BEWPI_WC_Order_Compatibility::get_prop( $this->order, 'payment_method_title' ),
837
+ '[shipping_method]' => $this->order->get_shipping_method(),
838
+ ), $order_id );
839
+
840
+ foreach ( $placeholders as $placeholder => $value ) {
841
+ $str = str_replace( $placeholder, $value, $str );
842
+ }
843
+
844
+ return $str;
845
+ }
846
+
847
+ /**
848
+ * @deprecated instead use 'WPI()->templater()->get_option()'.
849
+ */
850
+ public function left_footer_column_html() {
851
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8', 'WPI()->templater()->get_option( \'bewpi_left_footer_column\' )' );
852
+ $left_footer_column_text = $this->template_options['bewpi_left_footer_column'];
853
+ if ( ! empty( $left_footer_column_text ) ) {
854
+ echo '<p>' . nl2br( $this->replace_placeholders( $left_footer_column_text ) ) . '</p>';
855
+ }
856
+ }
857
+
858
+ /**
859
+ * @deprecated instead use 'WPI()->templater()->get_option()'.
860
+ */
861
+ public function right_footer_column_html() {
862
+ _deprecated_function( __FUNCTION__, 'WooCommerce PDF Invoices v2.8' );
863
+ $right_footer_column_text = $this->template_options['bewpi_right_footer_column'];
864
+ if ( ! empty( $right_footer_column_text ) ) {
865
+ echo '<p>' . nl2br( $this->replace_placeholders( $right_footer_column_text ) ) . '</p>';
866
+ } else {
867
+ echo '<p>' . sprintf( __( '%s of %s', 'woocommerce-pdf-invoices' ), '{PAGENO}', '{nbpg}' ) . '</p>';
868
+ }
869
+ }
870
+
871
+ /**
872
+ * Set order item totals colspan.
873
+ *
874
+ * @param int $colspan Order item totals table colspan.
875
+ */
876
+ public function set_colspan( $colspan ) {
877
+ $this->colspan = $colspan;
878
+ }
879
+ }
880
+ } // End if().
includes/abstracts/abstract-settings.php CHANGED
@@ -1,485 +1,485 @@
1
- <?php
2
- /**
3
- * Settings class to return options.
4
- *
5
- * @author Bas Elbers
6
- * @category Abstract Class
7
- * @package BE_WooCommerce_PDF_Invoices/Abstracts
8
- * @version 1.0.0
9
- */
10
-
11
- defined( 'ABSPATH' ) or exit;
12
-
13
- /**
14
- * Class BEWPI_Abstract_Settings.
15
- */
16
- abstract class BEWPI_Abstract_Settings {
17
-
18
- /**
19
- * Option name prefix.
20
- *
21
- * @var string
22
- */
23
- protected $prefix = 'bewpi_';
24
-
25
- /**
26
- * Option key.
27
- *
28
- * @var string.
29
- */
30
- public $settings_key;
31
-
32
- /**
33
- * Page tab.
34
- *
35
- * @var string.
36
- */
37
- public $settings_tab;
38
-
39
- /**
40
- * Option sections.
41
- *
42
- * @var array.
43
- */
44
- protected $sections = array();
45
-
46
- /**
47
- * Option fields.
48
- *
49
- * @var array.
50
- */
51
- protected $fields = array();
52
-
53
- /**
54
- * Field defaults.
55
- *
56
- * @var array
57
- */
58
- protected $defaults = array();
59
-
60
- /**
61
- * Settings classes.
62
- *
63
- * @var array
64
- */
65
- private static $settings = array();
66
-
67
- /**
68
- * BEWPI_Abstract_Settings constructor.
69
- */
70
- public function __construct() {
71
- $this->add_sections();
72
- $this->add_fields();
73
- $this->set_defaults();
74
-
75
- register_setting( $this->settings_key, $this->settings_key, array( $this, 'sanitize' ) );
76
-
77
- if (self::settings_capability() != 'manage_options') {
78
- add_filter( 'option_page_capability_'. $this->settings_key, array( __CLASS__, 'settings_capability' ) );
79
- }
80
-
81
- }
82
-
83
- /**
84
- * Initialize hooks.
85
- */
86
- public static function init_hooks() {
87
- add_action( 'admin_init', array( __CLASS__, 'load_settings' ) );
88
- add_action( 'admin_menu', array( __CLASS__, 'add_wc_submenu_options_page' ) );
89
- add_action( 'admin_notices', array( __CLASS__, 'display_settings_errors' ) );
90
- }
91
-
92
- /**
93
- * Load all settings classes.
94
- */
95
- public static function load_settings() {
96
- $settings[] = new BEWPI_General_Settings();
97
- $settings[] = new BEWPI_Template_Settings();
98
- self::$settings = apply_filters( 'bewpi_settings', $settings );
99
- }
100
-
101
- /**
102
- * Add submenu to WooCommerce menu and display options page.
103
- */
104
- public static function add_wc_submenu_options_page() {
105
- add_submenu_page( 'woocommerce', __( 'Invoices', 'woocommerce-pdf-invoices' ), __( 'Invoices', 'woocommerce-pdf-invoices' ), self::settings_capability(), 'bewpi-invoices', array( __CLASS__, 'display_options_page' ) );
106
- }
107
-
108
- /**
109
- * Capabilities needed for managing the settings of this plugin.
110
- */
111
- public static function settings_capability() {
112
- return apply_filters('bewpi_settings_capability', 'manage_options');
113
- }
114
-
115
- /**
116
- * WooCommerce PDF Invoices settings page.
117
- */
118
- public static function display_options_page() {
119
- $current_tab = isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : 'bewpi_general_settings';
120
- $sidebar_path = apply_filters( 'bewpi_sidebar_path', WPI_DIR . '/includes/admin/views/html-sidebar.php' );
121
- $width = sprintf( 'style="width: %s;"', $sidebar_path ? '75%' : '100%' );
122
- ?>
123
-
124
- <div class="wrap wpi">
125
-
126
- <h2 class="nav-tab-wrapper">
127
- <?php
128
- foreach ( self::$settings as $setting ) {
129
- $active = $current_tab === $setting->settings_key ? 'nav-tab-active' : '';
130
- printf( '<a class="nav-tab %1$s" href="?page=bewpi-invoices&tab=%2$s">%3$s</a>', $active, $setting->settings_key, $setting->settings_tab );
131
- }
132
-
133
- // Backwards compatibility.
134
- $tabs = apply_filters( 'bewpi_settings_tabs', array() );
135
- foreach ( $tabs as $settings_key => $settings_tab ) {
136
- $active = $current_tab === $settings_key ? 'nav-tab-active' : '';
137
- printf( '<a class="nav-tab %1$s" href="?page=bewpi-invoices&tab=%2$s">%3$s</a>', $active, $settings_key, $settings_tab );
138
- }
139
- ?>
140
- </h2>
141
- <form method="post" action="options.php" enctype="multipart/form-data" <?php echo $width; ?>>
142
- <?php
143
- settings_fields( $current_tab );
144
- do_settings_sections( $current_tab );
145
- submit_button();
146
- ?>
147
- </form>
148
-
149
- <?php
150
- if ( $sidebar_path ) {
151
- include $sidebar_path;
152
- }
153
- ?>
154
-
155
- </div>
156
-
157
- <?php
158
- // Add rate plugin text in footer.
159
- add_filter( 'admin_footer_text', array( __CLASS__, 'plugin_review_text' ), 50 );
160
- add_filter( 'update_footer', array( __CLASS__, 'plugin_version' ), 50 );
161
- }
162
-
163
- /**
164
- *
165
- */
166
- public static function display_settings_errors() {
167
- $current_tab = isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : 'bewpi_general_settings';
168
- settings_errors( $current_tab );
169
- }
170
- /**
171
- * Add rate plugin text to footer of settings page.
172
- *
173
- * @return string
174
- */
175
- public static function plugin_review_text() {
176
- return sprintf( __( 'If you like <strong>WooCommerce PDF Invoices</strong> please leave us a <a href="%s">★★★★★</a> rating. A huge thank you in advance!', 'woocommerce-pdf-invoices' ), 'https://wordpress.org/support/view/plugin-reviews/woocommerce-pdf-invoices?rate=5#postform' );
177
- }
178
-
179
- /**
180
- * Plugin version text in footer of settings page.
181
- *
182
- * @return string
183
- */
184
- public static function plugin_version() {
185
- return sprintf( __( 'Version %s', 'woocommerce-pdf-invoices' ), WPI_VERSION );
186
- }
187
-
188
- /**
189
- * Adds all the different settings sections
190
- */
191
- private function add_sections() {
192
- foreach ( $this->sections as $id => $section ) {
193
- add_settings_section( $id, $section['title'], function() use ( $section ) {
194
- if ( isset( $section['description'] ) ) {
195
- echo $section['description'];
196
- }
197
- }, $this->settings_key );
198
- }
199
- }
200
-
201
- /**
202
- * Show all settings notices.
203
- *
204
- * @param string $settings_key Settings key.
205
- */
206
- public static function display_settings_notices( $settings_key ) {
207
- settings_errors( $settings_key );
208
- }
209
-
210
- /**
211
- * Adds settings fields
212
- */
213
- protected function add_fields() {
214
- foreach ( $this->fields as $field ) {
215
- add_settings_field( $field['name'], $field['title'], $field['callback'], $field['page'], $field['section'], $field );
216
- };
217
- }
218
-
219
- /**
220
- * Format all available invoice number placeholders.
221
- *
222
- * @return string
223
- */
224
- protected static function formatted_number_placeholders() {
225
- $placeholders = array( '[number]', '[order-number]', '[order-date]', '[m]', '[Y]', '[y]' );
226
-
227
- return '<code>' . join( '</code>, <code>', $placeholders ) . '</code>';
228
- }
229
-
230
- /**
231
- * Gets all the tags that are allowed.
232
- *
233
- * @return string|void
234
- */
235
- protected static function formatted_html_tags() {
236
- $html_tags = array_map( 'htmlspecialchars', array( '<b>', '<i>', '<br>' ) );
237
-
238
- return '<code>' . join( '</code>, <code>', $html_tags ) . '</code>';
239
- }
240
-
241
- /**
242
- * String validation.
243
- *
244
- * @param string $str the string to validate.
245
- *
246
- * @return bool
247
- */
248
- protected function strip_str( $str ) {
249
- $str = preg_replace( '/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i', '<$1$2>', $str );
250
-
251
- return strip_tags( $str, '<b><i><br><br/>' );
252
- }
253
-
254
- /**
255
- * Multiple checkbox fields.
256
- *
257
- * @param array $args option arguments.
258
- */
259
- public function multiple_checkbox_callback( $args ) {
260
- include WPI_DIR . '/includes/admin/views/html-multiple-checkbox-setting.php';
261
- }
262
-
263
- /**
264
- * Select field.
265
- *
266
- * @param array $args Field arguments.
267
- */
268
- public function select_callback( $args ) {
269
- $options = get_option( $args['page'] );
270
- ?>
271
- <select id="<?php echo $args['id']; ?>" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>">
272
- <?php
273
- foreach ( $args['options'] as $key => $label ) :
274
- ?>
275
- <option
276
- value="<?php echo esc_attr( $key ); ?>" <?php selected( $options[ $args['name'] ], $key ); ?>><?php echo esc_html( $label ); ?></option>
277
- <?php
278
- endforeach;
279
- ?>
280
- </select>
281
- <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
282
- <?php
283
- }
284
-
285
- /**
286
- * Multiple select box.
287
- *
288
- * @param array $args field arguments.
289
- */
290
- public function multi_select_callback( $args ) {
291
- $page_options = get_option( $args['page'] );
292
- $selections = (array) $page_options[ $args['name'] ];
293
- $options = array_merge( array_flip( $selections ), $args['options'] );
294
- ?>
295
- <select multiple="multiple"
296
- name="<?php echo esc_attr( $args['page'] . '[' . $args['name'] . '][]' ); ?>"
297
- title="<?php echo esc_attr( $args['title'] ); ?>"
298
- data-placeholder="<?php esc_attr_e( 'Choose&hellip;', 'woocommerce-pdf-invoices' ); ?>"
299
- aria-label="<?php esc_attr_e( 'Column', 'woocommerce-pdf-invoices' ) ?>"
300
- class="wc-enhanced-select">
301
- <?php
302
- foreach ( $options as $id => $option ) {
303
- echo '<option value="' . esc_attr( $option['value'] ) . '" ' . selected( in_array( $id, $selections, true ), true, false ) . '>' . $option['name'] . '</option>';
304
- }
305
- ?>
306
- </select>
307
- <?php echo ( $args['desc'] ) ? $args['desc'] : ''; ?>
308
- <a class="select_all button" href="#"><?php _e( 'Select all', 'woocommerce-pdf-invoices' ); ?></a> <a class="select_none button" href="#"><?php _e( 'Select none', 'woocommerce-pdf-invoices' ); ?></a>
309
- <?php
310
- }
311
-
312
- /**
313
- * Reset counter field.
314
- *
315
- * @param string $args Field arguments.
316
- */
317
- public function reset_counter_callback( $args ) {
318
- $class = isset( $args['class'] ) ? $args['class'] : 'bewpi-notes';
319
- ?>
320
- <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
321
- <input id="<?php echo $args['id']; ?>"
322
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
323
- type="<?php echo $args['type']; ?>"
324
- value="1"
325
- <?php
326
- checked( (bool) get_transient( 'bewpi_next_invoice_number' ) );
327
-
328
- if ( isset( $args['attrs'] ) ) {
329
- foreach ( $args['attrs'] as $attr ) {
330
- echo $attr . ' ';
331
- }
332
- }
333
- ?>
334
- />
335
- <label for="<?php echo $args['id']; ?>" class="<?php echo $class; ?>">
336
- <?php echo $args['desc']; ?>
337
- </label>
338
- <?php
339
- }
340
-
341
- /**
342
- * Next invoice number field.
343
- *
344
- * @param array $args Field arguments.
345
- */
346
- public function next_invoice_number_callback( $args ) {
347
- $class = isset( $args['class'] ) ? $args['class'] : 'bewpi-notes';
348
- $next_invoice_number = get_transient( 'bewpi_next_invoice_number' );
349
- ?>
350
- <input id="<?php echo $args['id']; ?>"
351
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
352
- type="<?php echo $args['type']; ?>"
353
- value="<?php echo esc_attr( ( false !== $next_invoice_number ) ? $next_invoice_number : BEWPI_Abstract_Invoice::get_max_invoice_number() + 1 ); ?>"
354
- <?php
355
- if ( isset( $args['attrs'] ) ) {
356
- foreach ( $args['attrs'] as $attr ) {
357
- echo $attr . ' ';
358
- }
359
- }
360
- ?>
361
- />
362
- <div class="<?php echo $class; ?>"><?php echo $args['desc']; ?></div>
363
- <?php
364
- }
365
-
366
- /**
367
- * Input field.
368
- *
369
- * @param array $args Field arguments.
370
- */
371
- public function input_callback( $args ) {
372
- $options = get_option( $args['page'] );
373
- $class = isset( $args['class'] ) ? $args['class'] : 'bewpi-notes';
374
- $is_checkbox = 'checkbox' === $args['type'];
375
- if ( $is_checkbox ) { ?>
376
- <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
377
- <?php } ?>
378
- <input id="<?php echo $args['id']; ?>"
379
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
380
- type="<?php echo $args['type']; ?>"
381
- value="<?php echo $is_checkbox ? 1 : esc_attr( $options[ $args['name'] ] ); ?>"
382
-
383
- <?php
384
- if ( $is_checkbox ) {
385
- checked( $options[ $args['name'] ] );
386
- }
387
-
388
- if ( isset( $args['attrs'] ) ) {
389
- foreach ( $args['attrs'] as $attr ) {
390
- echo $attr . ' ';
391
- }
392
- }
393
- ?>
394
- />
395
- <?php if ( $is_checkbox ) { ?>
396
- <label for="<?php echo $args['id']; ?>" class="<?php echo $class; ?>"><?php echo $args['desc']; ?></label>
397
- <?php } else { ?>
398
- <div class="<?php echo $class; ?>"><?php echo $args['desc']; ?></div>
399
- <?php } ?>
400
- <?php
401
- }
402
-
403
- /**
404
- * Textarea field.
405
- *
406
- * @param array $args Field arguments.
407
- */
408
- public function textarea_callback( $args ) {
409
- $options = get_option( $args['page'] );
410
- ?>
411
- <textarea id="<?php echo $args['id']; ?>"
412
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
413
- rows="5"
414
- ><?php echo esc_textarea( $options[ $args['name'] ] ); ?></textarea>
415
- <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
416
- <?php
417
- }
418
-
419
- /**
420
- * Gets all default settings values from the settings array.
421
- *
422
- * @return array
423
- */
424
- protected function get_defaults() {
425
- $fields = $this->fields;
426
- $defaults = array();
427
-
428
- // Remove multiple checkbox types from settings.
429
- foreach ( $fields as $index => $field ) {
430
- if ( isset( $field['type'] ) && in_array( $field['type'], array( 'multiple_checkbox', 'multiple_select' ) ) ) {
431
- // Add options defaults.
432
- $defaults[ $field['name'] ] = array_keys( array_filter( wp_list_pluck( $field['options'], 'default', 'value' ) ) );
433
- unset( $fields[ $index ] );
434
- }
435
- }
436
-
437
- $defaults = wp_parse_args( $defaults, wp_list_pluck( $fields, 'default', 'name' ) );
438
-
439
- return $defaults;
440
- }
441
-
442
- /**
443
- * Initialize field defaults.
444
- *
445
- * @return bool
446
- */
447
- protected function set_defaults() {
448
- $options = get_option( $this->settings_key );
449
-
450
- // Initialize options.
451
- if ( false === $options ) {
452
- return add_option( $this->settings_key, $this->defaults );
453
- }
454
-
455
- // Recursive merge options with defaults.
456
- foreach ( $this->defaults as $key => $value ) {
457
-
458
- if ( ! isset( $options[ $key ] ) ) {
459
- continue;
460
- }
461
-
462
- $this->defaults[ $key ] = $options[ $key ];
463
- }
464
-
465
- return update_option( $this->settings_key, $this->defaults );
466
- }
467
-
468
- /**
469
- * Get the formatted html setting id.
470
- *
471
- * @param string $id String to format.
472
- *
473
- * @return string.
474
- */
475
- public static function get_formatted_setting_id( $id ) {
476
- return str_replace( '_', '-', WPI()->get_prefix() . $id );
477
- }
478
-
479
- /**
480
- * @param $input
481
- *
482
- * @return mixed
483
- */
484
- public abstract function sanitize( $input );
485
- }
1
+ <?php
2
+ /**
3
+ * Settings class to return options.
4
+ *
5
+ * @author Bas Elbers
6
+ * @category Abstract Class
7
+ * @package BE_WooCommerce_PDF_Invoices/Abstracts
8
+ * @version 1.0.0
9
+ */
10
+
11
+ defined( 'ABSPATH' ) or exit;
12
+
13
+ /**
14
+ * Class BEWPI_Abstract_Settings.
15
+ */
16
+ abstract class BEWPI_Abstract_Settings {
17
+
18
+ /**
19
+ * Option name prefix.
20
+ *
21
+ * @var string
22
+ */
23
+ protected $prefix = 'bewpi_';
24
+
25
+ /**
26
+ * Option key.
27
+ *
28
+ * @var string.
29
+ */
30
+ public $settings_key;
31
+
32
+ /**
33
+ * Page tab.
34
+ *
35
+ * @var string.
36
+ */
37
+ public $settings_tab;
38
+
39
+ /**
40
+ * Option sections.
41
+ *
42
+ * @var array.
43
+ */
44
+ protected $sections = array();
45
+
46
+ /**
47
+ * Option fields.
48
+ *
49
+ * @var array.
50
+ */
51
+ protected $fields = array();
52
+
53
+ /**
54
+ * Field defaults.
55
+ *
56
+ * @var array
57
+ */
58
+ protected $defaults = array();
59
+
60
+ /**
61
+ * Settings classes.
62
+ *
63
+ * @var array
64
+ */
65
+ private static $settings = array();
66
+
67
+ /**
68
+ * BEWPI_Abstract_Settings constructor.
69
+ */
70
+ public function __construct() {
71
+ $this->add_sections();
72
+ $this->add_fields();
73
+ $this->set_defaults();
74
+
75
+ register_setting( $this->settings_key, $this->settings_key, array( $this, 'sanitize' ) );
76
+
77
+ if (self::settings_capability() != 'manage_options') {
78
+ add_filter( 'option_page_capability_'. $this->settings_key, array( __CLASS__, 'settings_capability' ) );
79
+ }
80
+
81
+ }
82
+
83
+ /**
84
+ * Initialize hooks.
85
+ */
86
+ public static function init_hooks() {
87
+ add_action( 'admin_init', array( __CLASS__, 'load_settings' ) );
88
+ add_action( 'admin_menu', array( __CLASS__, 'add_wc_submenu_options_page' ) );
89
+ add_action( 'admin_notices', array( __CLASS__, 'display_settings_errors' ) );
90
+ }
91
+
92
+ /**
93
+ * Load all settings classes.
94
+ */
95
+ public static function load_settings() {
96
+ $settings[] = new BEWPI_General_Settings();
97
+ $settings[] = new BEWPI_Template_Settings();
98
+ self::$settings = apply_filters( 'bewpi_settings', $settings );
99
+ }
100
+
101
+ /**
102
+ * Add submenu to WooCommerce menu and display options page.
103
+ */
104
+ public static function add_wc_submenu_options_page() {
105
+ add_submenu_page( 'woocommerce', __( 'Invoices', 'woocommerce-pdf-invoices' ), __( 'Invoices', 'woocommerce-pdf-invoices' ), self::settings_capability(), 'bewpi-invoices', array( __CLASS__, 'display_options_page' ) );
106
+ }
107
+
108
+ /**
109
+ * Capabilities needed for managing the settings of this plugin.
110
+ */
111
+ public static function settings_capability() {
112
+ return apply_filters('bewpi_settings_capability', 'manage_options');
113
+ }
114
+
115
+ /**
116
+ * WooCommerce PDF Invoices settings page.
117
+ */
118
+ public static function display_options_page() {
119
+ $current_tab = isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : 'bewpi_general_settings';
120
+ $sidebar_path = apply_filters( 'bewpi_sidebar_path', WPI_DIR . '/includes/admin/views/html-sidebar.php' );
121
+ $width = sprintf( 'style="width: %s;"', $sidebar_path ? '75%' : '100%' );
122
+ ?>
123
+
124
+ <div class="wrap wpi">
125
+
126
+ <h2 class="nav-tab-wrapper">
127
+ <?php
128
+ foreach ( self::$settings as $setting ) {
129
+ $active = $current_tab === $setting->settings_key ? 'nav-tab-active' : '';
130
+ printf( '<a class="nav-tab %1$s" href="?page=bewpi-invoices&tab=%2$s">%3$s</a>', $active, $setting->settings_key, $setting->settings_tab );
131
+ }
132
+
133
+ // Backwards compatibility.
134
+ $tabs = apply_filters( 'bewpi_settings_tabs', array() );
135
+ foreach ( $tabs as $settings_key => $settings_tab ) {
136
+ $active = $current_tab === $settings_key ? 'nav-tab-active' : '';
137
+ printf( '<a class="nav-tab %1$s" href="?page=bewpi-invoices&tab=%2$s">%3$s</a>', $active, $settings_key, $settings_tab );
138
+ }
139
+ ?>
140
+ </h2>
141
+ <form method="post" action="options.php" enctype="multipart/form-data" <?php echo $width; ?>>
142
+ <?php
143
+ settings_fields( $current_tab );
144
+ do_settings_sections( $current_tab );
145
+ submit_button();
146
+ ?>
147
+ </form>
148
+
149
+ <?php
150
+ if ( $sidebar_path ) {
151
+ include $sidebar_path;
152
+ }
153
+ ?>
154
+
155
+ </div>
156
+
157
+ <?php
158
+ // Add rate plugin text in footer.
159
+ add_filter( 'admin_footer_text', array( __CLASS__, 'plugin_review_text' ), 50 );
160
+ add_filter( 'update_footer', array( __CLASS__, 'plugin_version' ), 50 );
161
+ }
162
+
163
+ /**
164
+ *
165
+ */
166
+ public static function display_settings_errors() {
167
+ $current_tab = isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : 'bewpi_general_settings';
168
+ settings_errors( $current_tab );
169
+ }
170
+ /**
171
+ * Add rate plugin text to footer of settings page.
172
+ *
173
+ * @return string
174
+ */
175
+ public static function plugin_review_text() {
176
+ return sprintf( __( 'If you like <strong>WooCommerce PDF Invoices</strong> please leave us a <a href="%s">★★★★★</a> rating. A huge thank you in advance!', 'woocommerce-pdf-invoices' ), 'https://wordpress.org/support/view/plugin-reviews/woocommerce-pdf-invoices?rate=5#postform' );
177
+ }
178
+
179
+ /**
180
+ * Plugin version text in footer of settings page.
181
+ *
182
+ * @return string
183
+ */
184
+ public static function plugin_version() {
185
+ return sprintf( __( 'Version %s', 'woocommerce-pdf-invoices' ), WPI_VERSION );
186
+ }
187
+
188
+ /**
189
+ * Adds all the different settings sections
190
+ */
191
+ private function add_sections() {
192
+ foreach ( $this->sections as $id => $section ) {
193
+ add_settings_section( $id, $section['title'], function() use ( $section ) {
194
+ if ( isset( $section['description'] ) ) {
195
+ echo $section['description'];
196
+ }
197
+ }, $this->settings_key );
198
+ }
199
+ }
200
+
201
+ /**
202
+ * Show all settings notices.
203
+ *
204
+ * @param string $settings_key Settings key.
205
+ */
206
+ public static function display_settings_notices( $settings_key ) {
207
+ settings_errors( $settings_key );
208
+ }
209
+
210
+ /**
211
+ * Adds settings fields
212
+ */
213
+ protected function add_fields() {
214
+ foreach ( $this->fields as $field ) {
215
+ add_settings_field( $field['name'], $field['title'], $field['callback'], $field['page'], $field['section'], $field );
216
+ };
217
+ }
218
+
219
+ /**
220
+ * Format all available invoice number placeholders.
221
+ *
222
+ * @return string
223
+ */
224
+ protected static function formatted_number_placeholders() {
225
+ $placeholders = array( '[number]', '[order-number]', '[order-date]', '[m]', '[Y]', '[y]' );
226
+
227
+ return '<code>' . join( '</code>, <code>', $placeholders ) . '</code>';
228
+ }
229
+
230
+ /**
231
+ * Gets all the tags that are allowed.
232
+ *
233
+ * @return string|void
234
+ */
235
+ protected static function formatted_html_tags() {
236
+ $html_tags = array_map( 'htmlspecialchars', array( '<b>', '<i>', '<br>' ) );
237
+
238
+ return '<code>' . join( '</code>, <code>', $html_tags ) . '</code>';
239
+ }
240
+
241
+ /**
242
+ * String validation.
243
+ *
244
+ * @param string $str the string to validate.
245
+ *
246
+ * @return bool
247
+ */
248
+ protected function strip_str( $str ) {
249
+ $str = preg_replace( '/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i', '<$1$2>', $str );
250
+
251
+ return strip_tags( $str, '<b><i><br><br/>' );
252
+ }
253
+
254
+ /**
255
+ * Multiple checkbox fields.
256
+ *
257
+ * @param array $args option arguments.
258
+ */
259
+ public function multiple_checkbox_callback( $args ) {
260
+ include WPI_DIR . '/includes/admin/views/html-multiple-checkbox-setting.php';
261
+ }
262
+
263
+ /**
264
+ * Select field.
265
+ *
266
+ * @param array $args Field arguments.
267
+ */
268
+ public function select_callback( $args ) {
269
+ $options = get_option( $args['page'] );
270
+ ?>
271
+ <select id="<?php echo $args['id']; ?>" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>">
272
+ <?php
273
+ foreach ( $args['options'] as $key => $label ) :
274
+ ?>
275
+ <option
276
+ value="<?php echo esc_attr( $key ); ?>" <?php selected( $options[ $args['name'] ], $key ); ?>><?php echo esc_html( $label ); ?></option>
277
+ <?php
278
+ endforeach;
279
+ ?>
280
+ </select>
281
+ <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
282
+ <?php
283
+ }
284
+
285
+ /**
286
+ * Multiple select box.
287
+ *
288
+ * @param array $args field arguments.
289
+ */
290
+ public function multi_select_callback( $args ) {
291
+ $page_options = get_option( $args['page'] );
292
+ $selections = (array) $page_options[ $args['name'] ];
293
+ $options = array_merge( array_flip( $selections ), $args['options'] );
294
+ ?>
295
+ <select multiple="multiple"
296
+ name="<?php echo esc_attr( $args['page'] . '[' . $args['name'] . '][]' ); ?>"
297
+ title="<?php echo esc_attr( $args['title'] ); ?>"
298
+ data-placeholder="<?php esc_attr_e( 'Choose&hellip;', 'woocommerce-pdf-invoices' ); ?>"
299
+ aria-label="<?php esc_attr_e( 'Column', 'woocommerce-pdf-invoices' ) ?>"
300
+ class="wc-enhanced-select">
301
+ <?php
302
+ foreach ( $options as $id => $option ) {
303
+ echo '<option value="' . esc_attr( $option['value'] ) . '" ' . selected( in_array( $id, $selections, true ), true, false ) . '>' . $option['name'] . '</option>';
304
+ }
305
+ ?>
306
+ </select>
307
+ <?php echo ( $args['desc'] ) ? $args['desc'] : ''; ?>
308
+ <a class="select_all button" href="#"><?php _e( 'Select all', 'woocommerce-pdf-invoices' ); ?></a> <a class="select_none button" href="#"><?php _e( 'Select none', 'woocommerce-pdf-invoices' ); ?></a>
309
+ <?php
310
+ }
311
+
312
+ /**
313
+ * Reset counter field.
314
+ *
315
+ * @param string $args Field arguments.
316
+ */
317
+ public function reset_counter_callback( $args ) {
318
+ $class = isset( $args['class'] ) ? $args['class'] : 'bewpi-notes';
319
+ ?>
320
+ <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
321
+ <input id="<?php echo $args['id']; ?>"
322
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
323
+ type="<?php echo $args['type']; ?>"
324
+ value="1"
325
+ <?php
326
+ checked( (bool) get_transient( 'bewpi_next_invoice_number' ) );
327
+
328
+ if ( isset( $args['attrs'] ) ) {
329
+ foreach ( $args['attrs'] as $attr ) {
330
+ echo $attr . ' ';
331
+ }
332
+ }
333
+ ?>
334
+ />
335
+ <label for="<?php echo $args['id']; ?>" class="<?php echo $class; ?>">
336
+ <?php echo $args['desc']; ?>
337
+ </label>
338
+ <?php
339
+ }
340
+
341
+ /**
342
+ * Next invoice number field.
343
+ *
344
+ * @param array $args Field arguments.
345
+ */
346
+ public function next_invoice_number_callback( $args ) {
347
+ $class = isset( $args['class'] ) ? $args['class'] : 'bewpi-notes';
348
+ $next_invoice_number = get_transient( 'bewpi_next_invoice_number' );
349
+ ?>
350
+ <input id="<?php echo $args['id']; ?>"
351
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
352
+ type="<?php echo $args['type']; ?>"
353
+ value="<?php echo esc_attr( ( false !== $next_invoice_number ) ? $next_invoice_number : BEWPI_Abstract_Invoice::get_max_invoice_number() + 1 ); ?>"
354
+ <?php
355
+ if ( isset( $args['attrs'] ) ) {
356
+ foreach ( $args['attrs'] as $attr ) {
357
+ echo $attr . ' ';
358
+ }
359
+ }
360
+ ?>
361
+ />
362
+ <div class="<?php echo $class; ?>"><?php echo $args['desc']; ?></div>
363
+ <?php
364
+ }
365
+
366
+ /**
367
+ * Input field.
368
+ *
369
+ * @param array $args Field arguments.
370
+ */
371
+ public function input_callback( $args ) {
372
+ $options = get_option( $args['page'] );
373
+ $class = isset( $args['class'] ) ? $args['class'] : 'bewpi-notes';
374
+ $is_checkbox = 'checkbox' === $args['type'];
375
+ if ( $is_checkbox ) { ?>
376
+ <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
377
+ <?php } ?>
378
+ <input id="<?php echo $args['id']; ?>"
379
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
380
+ type="<?php echo $args['type']; ?>"
381
+ value="<?php echo $is_checkbox ? 1 : esc_attr( $options[ $args['name'] ] ); ?>"
382
+
383
+ <?php
384
+ if ( $is_checkbox ) {
385
+ checked( $options[ $args['name'] ] );
386
+ }
387
+
388
+ if ( isset( $args['attrs'] ) ) {
389
+ foreach ( $args['attrs'] as $attr ) {
390
+ echo $attr . ' ';
391
+ }
392
+ }
393
+ ?>
394
+ />
395
+ <?php if ( $is_checkbox ) { ?>
396
+ <label for="<?php echo $args['id']; ?>" class="<?php echo $class; ?>"><?php echo $args['desc']; ?></label>
397
+ <?php } else { ?>
398
+ <div class="<?php echo $class; ?>"><?php echo $args['desc']; ?></div>
399
+ <?php } ?>
400
+ <?php
401
+ }
402
+
403
+ /**
404
+ * Textarea field.
405
+ *
406
+ * @param array $args Field arguments.
407
+ */
408
+ public function textarea_callback( $args ) {
409
+ $options = get_option( $args['page'] );
410
+ ?>
411
+ <textarea id="<?php echo $args['id']; ?>"
412
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
413
+ rows="5"
414
+ ><?php echo esc_textarea( $options[ $args['name'] ] ); ?></textarea>
415
+ <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
416
+ <?php
417
+ }
418
+
419
+ /**
420
+ * Gets all default settings values from the settings array.
421
+ *
422
+ * @return array
423
+ */
424
+ protected function get_defaults() {
425
+ $fields = $this->fields;
426
+ $defaults = array();
427
+
428
+ // Remove multiple checkbox types from settings.
429
+ foreach ( $fields as $index => $field ) {
430
+ if ( isset( $field['type'] ) && in_array( $field['type'], array( 'multiple_checkbox', 'multiple_select' ) ) ) {
431
+ // Add options defaults.
432
+ $defaults[ $field['name'] ] = array_keys( array_filter( wp_list_pluck( $field['options'], 'default', 'value' ) ) );
433
+ unset( $fields[ $index ] );
434
+ }
435
+ }
436
+
437
+ $defaults = wp_parse_args( $defaults, wp_list_pluck( $fields, 'default', 'name' ) );
438
+
439
+ return $defaults;
440
+ }
441
+
442
+ /**
443
+ * Initialize field defaults.
444
+ *
445
+ * @return bool
446
+ */
447
+ protected function set_defaults() {
448
+ $options = get_option( $this->settings_key );
449
+
450
+ // Initialize options.
451
+ if ( false === $options ) {
452
+ return add_option( $this->settings_key, $this->defaults );
453
+ }
454
+
455
+ // Recursive merge options with defaults.
456
+ foreach ( $this->defaults as $key => $value ) {
457
+
458
+ if ( ! isset( $options[ $key ] ) ) {
459
+ continue;
460
+ }
461
+
462
+ $this->defaults[ $key ] = $options[ $key ];
463
+ }
464
+
465
+ return update_option( $this->settings_key, $this->defaults );
466
+ }
467
+
468
+ /**
469
+ * Get the formatted html setting id.
470
+ *
471
+ * @param string $id String to format.
472
+ *
473
+ * @return string.
474
+ */
475
+ public static function get_formatted_setting_id( $id ) {
476
+ return str_replace( '_', '-', WPI()->get_prefix() . $id );
477
+ }
478
+
479
+ /**
480
+ * @param $input
481
+ *
482
+ * @return mixed
483
+ */
484
+ public abstract function sanitize( $input );
485
+ }
includes/admin/class-admin-notices.php CHANGED
@@ -1,144 +1,144 @@
1
- <?php
2
- /**
3
- * Admin notices.
4
- *
5
- * Show and dismiss admin notices.
6
- *
7
- * @author Bas Elbers
8
- * @category Admin
9
- * @package BE_WooCommerce_PDF_Invoices/Admin
10
- * @version 1.0.0
11
- */
12
-
13
- defined( 'ABSPATH' ) or exit;
14
-
15
- /**
16
- * Class BEWPI_Admin_Notices.
17
- */
18
- class BEWPI_Admin_Notices {
19
-
20
- /**
21
- * Constructor.
22
- */
23
- public static function init_hooks() {
24
- add_action( 'wp_ajax_dismiss-notice', array( __CLASS__, 'dismiss_notice' ) );
25
- add_action( 'wp_ajax_deactivation-notice', array( __CLASS__, 'admin_notice_deactivation' ) );
26
- //add_action( 'admin_notices', array( __CLASS__, 'admin_notice_rate' ) );
27
- add_action( 'admin_notices', array( __CLASS__, 'admin_notice_activation' ) );
28
- }
29
-
30
- /**
31
- * Handles Ajax request to persist notices dismissal.
32
- * Uses check_ajax_referer to verify nonce.
33
- */
34
- public static function dismiss_notice() {
35
- $option_name = sanitize_text_field( wp_unslash( $_POST['option_name'] ) );
36
- $dismissible_length = sanitize_text_field( wp_unslash( $_POST['dismissible_length'] ) );
37
- $transient = 0;
38
-
39
- if ( 'forever' !== $dismissible_length ) {
40
- // If $dismissible_length is not an integer default to 1.
41
- $dismissible_length = ( 0 === absint( $dismissible_length ) ) ? 1 : $dismissible_length;
42
- $transient = absint( $dismissible_length ) * DAY_IN_SECONDS;
43
- $dismissible_length = strtotime( absint( $dismissible_length ) . ' days' );
44
- }
45
-
46
- check_ajax_referer( 'dismiss-notice', 'nonce' );
47
- set_site_transient( $option_name, $dismissible_length, $transient );
48
- wp_die();
49
- }
50
-
51
- /**
52
- * Is admin notice active?
53
- *
54
- * @param string $arg data-dismissible content of notice.
55
- *
56
- * @return bool
57
- */
58
- public static function is_admin_notice_active( $arg ) {
59
- $array = explode( '-', $arg );
60
- array_pop( $array );
61
- $option_name = implode( '-', $array );
62
- $db_record = get_site_transient( $option_name );
63
-
64
- if ( 'forever' === $db_record ) {
65
- return false;
66
- } elseif ( absint( $db_record ) >= time() ) {
67
- return false;
68
- } else {
69
- return true;
70
- }
71
- }
72
-
73
- /**
74
- * Get plugin install date.
75
- *
76
- * @return DateTime|bool
77
- */
78
- private static function get_install_date() {
79
- if ( version_compare( WPI_VERSION, '2.6.1' ) >= 0 ) {
80
- // since 2.6.1+ option name changed and date has mysql format.
81
- return DateTime::createFromFormat( 'Y-m-d H:i:s', get_site_option( 'bewpi_install_date' ) );
82
- }
83
-
84
- return DateTime::createFromFormat( 'Y-m-d', get_site_option( 'bewpi-install-date' ) );
85
- }
86
-
87
- /**
88
- * Admin notice for administrator to rate plugin on wordpress.org.
89
- */
90
- public static function admin_notice_rate() {
91
- // notice needs to be inactive.
92
- if ( ! self::is_admin_notice_active( 'rate-forever' ) ) {
93
- return;
94
- }
95
-
96
- // user needs to be an administrator.
97
- if ( ! current_user_can( 'manage_options' ) || ! current_user_can( 'install_plugins' ) ) {
98
- return;
99
- }
100
-
101
- // install date should be valid.
102
- $install_date = self::get_install_date();
103
- if ( false === $install_date ) {
104
- return;
105
- }
106
-
107
- // at least 10 days should be past to display notice.
108
- if ( new DateTime( '10 days ago' ) >= $install_date ) {
109
- include( WPI_DIR . '/includes/admin/views/html-rate-notice.php' );
110
- }
111
- }
112
-
113
- /**
114
- * Admin notice to configure plugin when activated.
115
- */
116
- public static function admin_notice_activation() {
117
- // notice needs to be inactive.
118
- if ( ! self::is_admin_notice_active( 'activation-forever' ) ) {
119
- return;
120
- }
121
-
122
- // check if plugin has been activated by checking transient.
123
- if ( ! get_transient( 'bewpi-admin-notice-activation' ) ) {
124
- return;
125
- }
126
-
127
- include( WPI_DIR . '/includes/admin/views/html-activation-notice.php' );
128
- delete_transient( 'bewpi-admin-notice-activation' );
129
- }
130
-
131
- /**
132
- * AJAX backend deactivation notice.
133
- */
134
- public static function admin_notice_deactivation() {
135
- if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'deactivation-notice' ) ) { // Input var okay.
136
- die( 0 );
137
- }
138
-
139
- ob_start();
140
- include WPI_DIR . '/includes/admin/views/html-deactivation-notice.php';
141
- $content = ob_get_clean();
142
- die( $content ); // WPCS: XSS OK.
143
- }
144
- }
1
+ <?php
2
+ /**
3
+ * Admin notices.
4
+ *
5
+ * Show and dismiss admin notices.
6
+ *
7
+ * @author Bas Elbers
8
+ * @category Admin
9
+ * @package BE_WooCommerce_PDF_Invoices/Admin
10
+ * @version 1.0.0
11
+ */
12
+
13
+ defined( 'ABSPATH' ) or exit;
14
+
15
+ /**
16
+ * Class BEWPI_Admin_Notices.
17
+ */
18
+ class BEWPI_Admin_Notices {
19
+
20
+ /**
21
+ * Constructor.
22
+ */
23
+ public static function init_hooks() {
24
+ add_action( 'wp_ajax_dismiss-notice', array( __CLASS__, 'dismiss_notice' ) );
25
+ add_action( 'wp_ajax_deactivation-notice', array( __CLASS__, 'admin_notice_deactivation' ) );
26
+ //add_action( 'admin_notices', array( __CLASS__, 'admin_notice_rate' ) );
27
+ add_action( 'admin_notices', array( __CLASS__, 'admin_notice_activation' ) );
28
+ }
29
+
30
+ /**
31
+ * Handles Ajax request to persist notices dismissal.
32
+ * Uses check_ajax_referer to verify nonce.
33
+ */
34
+ public static function dismiss_notice() {
35
+ $option_name = sanitize_text_field( wp_unslash( $_POST['option_name'] ) );
36
+ $dismissible_length = sanitize_text_field( wp_unslash( $_POST['dismissible_length'] ) );
37
+ $transient = 0;
38
+
39
+ if ( 'forever' !== $dismissible_length ) {
40
+ // If $dismissible_length is not an integer default to 1.
41
+ $dismissible_length = ( 0 === absint( $dismissible_length ) ) ? 1 : $dismissible_length;
42
+ $transient = absint( $dismissible_length ) * DAY_IN_SECONDS;
43
+ $dismissible_length = strtotime( absint( $dismissible_length ) . ' days' );
44
+ }
45
+
46
+ check_ajax_referer( 'dismiss-notice', 'nonce' );
47
+ set_site_transient( $option_name, $dismissible_length, $transient );
48
+ wp_die();
49
+ }
50
+
51
+ /**
52
+ * Is admin notice active?
53
+ *
54
+ * @param string $arg data-dismissible content of notice.
55
+ *
56
+ * @return bool
57
+ */
58
+ public static function is_admin_notice_active( $arg ) {
59
+ $array = explode( '-', $arg );
60
+ array_pop( $array );
61
+ $option_name = implode( '-', $array );
62
+ $db_record = get_site_transient( $option_name );
63
+
64
+ if ( 'forever' === $db_record ) {
65
+ return false;
66
+ } elseif ( absint( $db_record ) >= time() ) {
67
+ return false;
68
+ } else {
69
+ return true;
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Get plugin install date.
75
+ *
76
+ * @return DateTime|bool
77
+ */
78
+ private static function get_install_date() {
79
+ if ( version_compare( WPI_VERSION, '2.6.1' ) >= 0 ) {
80
+ // since 2.6.1+ option name changed and date has mysql format.
81
+ return DateTime::createFromFormat( 'Y-m-d H:i:s', get_site_option( 'bewpi_install_date' ) );
82
+ }
83
+
84
+ return DateTime::createFromFormat( 'Y-m-d', get_site_option( 'bewpi-install-date' ) );
85
+ }
86
+
87
+ /**
88
+ * Admin notice for administrator to rate plugin on wordpress.org.
89
+ */
90
+ public static function admin_notice_rate() {
91
+ // notice needs to be inactive.
92
+ if ( ! self::is_admin_notice_active( 'rate-forever' ) ) {
93
+ return;
94
+ }
95
+
96
+ // user needs to be an administrator.
97
+ if ( ! current_user_can( 'manage_options' ) || ! current_user_can( 'install_plugins' ) ) {
98
+ return;
99
+ }
100
+
101
+ // install date should be valid.
102
+ $install_date = self::get_install_date();
103
+ if ( false === $install_date ) {
104
+ return;
105
+ }
106
+
107
+ // at least 10 days should be past to display notice.
108
+ if ( new DateTime( '10 days ago' ) >= $install_date ) {
109
+ include( WPI_DIR . '/includes/admin/views/html-rate-notice.php' );
110
+ }
111
+ }
112
+
113
+ /**
114
+ * Admin notice to configure plugin when activated.
115
+ */
116
+ public static function admin_notice_activation() {
117
+ // notice needs to be inactive.
118
+ if ( ! self::is_admin_notice_active( 'activation-forever' ) ) {
119
+ return;
120
+ }
121
+
122
+ // check if plugin has been activated by checking transient.
123
+ if ( ! get_transient( 'bewpi-admin-notice-activation' ) ) {
124
+ return;
125
+ }
126
+
127
+ include( WPI_DIR . '/includes/admin/views/html-activation-notice.php' );
128
+ delete_transient( 'bewpi-admin-notice-activation' );
129
+ }
130
+
131
+ /**
132
+ * AJAX backend deactivation notice.
133
+ */
134
+ public static function admin_notice_deactivation() {
135
+ if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'deactivation-notice' ) ) { // Input var okay.
136
+ die( 0 );
137
+ }
138
+
139
+ ob_start();
140
+ include WPI_DIR . '/includes/admin/views/html-deactivation-notice.php';
141
+ $content = ob_get_clean();
142
+ die( $content ); // WPCS: XSS OK.
143
+ }
144
+ }
includes/admin/settings/class-general.php CHANGED
@@ -1,233 +1,233 @@
1
- <?php
2
- /**
3
- * General settings class.
4
- *
5
- * @author Bas Elbers
6
- * @category Admin
7
- * @package BE_WooCommerce_PDF_Invoices/Admin
8
- * @version 1.0.0
9
- */
10
-
11
- defined( 'ABSPATH' ) or exit;
12
-
13
- if ( ! class_exists( 'BEWPI_General_Settings' ) ) {
14
-
15
- /**
16
- * Class BEWPI_General_Settings.
17
- */
18
- class BEWPI_General_Settings extends BEWPI_Abstract_Settings {
19
-
20
- /**
21
- * BEWPI_General_Settings constructor.
22
- */
23
- public function __construct() {
24
- $this->settings_key = 'bewpi_general_settings';
25
- $this->settings_tab = __( 'General', 'woocommerce-pdf-invoices' );
26
- $this->fields = $this->get_fields();
27
- $this->sections = $this->get_sections();
28
- $this->defaults = $this->get_defaults();
29
-
30
- parent::__construct();
31
- }
32
-
33
- /**
34
- * Get all sections.
35
- *
36
- * @return array.
37
- */
38
- private function get_sections() {
39
- $sections = array(
40
- 'email' => array(
41
- 'title' => __( 'Email Options', 'woocommerce-pdf-invoices' ),
42
- 'description' => sprintf( __( 'The PDF invoice will be generated when WooCommerce sends the corresponding email. The email should be <a href="%1$s">enabled</a> in order to automatically generate the PDF invoice. Want to attach PDF documents to many more email types? Take a look at %2$s.', 'woocommerce-pdf-invoices' ), 'admin.php?page=wc-settings&tab=email', '<a href="https://wcpdfinvoices.com" target="_blank">WooCommerce PDF Invoices Premium</a>' ),
43
- ),
44
- 'download' => array(
45
- 'title' => __( 'Download Options', 'woocommerce-pdf-invoices' ),
46
- ),
47
- 'cloud_storage' => array(
48
- 'title' => __( 'Cloud Storage Options', 'woocommerce-pdf-invoices' ),
49
- 'description' => sprintf( __( 'Sign-up at <a href="%1$s">Email It In</a> to send invoices to your Dropbox, OneDrive, Google Drive or Egnyte and enter your account below.', 'woocommerce-pdf-invoices' ), 'https://emailitin.com' ),
50
- ),
51
- 'interface' => array(
52
- 'title' => __( 'Interface Options', 'woocommerce-pdf-invoices' ),
53
- ),
54
- 'debug' => array(
55
- 'title' => __( 'Debug Options', 'woocommerce-pdf-invoices' ),
56
- ),
57
- );
58
-
59
- return $sections;
60
- }
61
-
62
- /**
63
- * Settings fields.
64
- *
65
- * @return array
66
- */
67
- private function get_fields() {
68
- $settings = array(
69
- array(
70
- 'id' => 'bewpi-email-types',
71
- 'name' => $this->prefix . 'email_types',
72
- 'title' => __( 'Attach to Emails', 'woocommerce-pdf-invoices' ),
73
- 'callback' => array( $this, 'multi_select_callback' ),
74
- 'page' => $this->settings_key,
75
- 'section' => 'email',
76
- 'type' => 'multiple_select',
77
- 'desc' => '',
78
- 'options' => apply_filters( 'wpi_email_types', array(
79
- 'new_order' => array(
80
- 'name' => __( 'New order', 'woocommerce-pdf-invoices' ),
81
- 'value' => 'new_order',
82
- 'default' => 1,
83
- ),
84
- 'customer_on_hold_order' => array(
85
- 'name' => __( 'Order on-hold', 'woocommerce-pdf-invoices' ),
86
- 'value' => 'customer_on_hold_order',
87
- 'default' => 0,
88
- ),
89
- 'customer_processing_order' => array(
90
- 'name' => __( 'Processing order', 'woocommerce-pdf-invoices' ),
91
- 'value' => 'customer_processing_order',
92
- 'default' => 0,
93
- ),
94
- 'customer_completed_order' => array(
95
- 'name' => __( 'Completed order', 'woocommerce-pdf-invoices' ),
96
- 'value' => 'customer_completed_order',
97
- 'default' => 1,
98
- ),
99
- 'customer_invoice' => array(
100
- 'name' => __( 'Customer invoice', 'woocommerce-pdf-invoices' ),
101
- 'value' => 'customer_invoice',
102
- 'default' => 0,
103
- ),
104
- ) ),
105
- ),
106
- array(
107
- 'id' => 'bewpi-disable-free-products',
108
- 'name' => $this->prefix . 'disable_free_products',
109
- 'title' => '',
110
- 'callback' => array( $this, 'input_callback' ),
111
- 'page' => $this->settings_key,
112
- 'section' => 'email',
113
- 'type' => 'checkbox',
114
- 'desc' => __( 'Disable for free products', 'woocommerce-pdf-invoices' )
115
- . '<br/><div class="bewpi-notes">'
116
- . __( 'Skip automatic PDF invoice generation for orders containing only free products.', 'woocommerce-pdf-invoices' )
117
- . '</div>',
118
- 'class' => 'bewpi-checkbox-option-title',
119
- 'default' => 0,
120
- ),
121
- array(
122
- 'id' => 'bewpi-view-pdf',
123
- 'name' => $this->prefix . 'view_pdf',
124
- 'title' => __( 'View PDF', 'woocommerce-pdf-invoices' ),
125
- 'callback' => array( $this, 'select_callback' ),
126
- 'page' => $this->settings_key,
127
- 'section' => 'download',
128
- 'type' => 'text',
129
- 'desc' => '',
130
- 'options' => array(
131
- 'download' => __( 'Download', 'woocommerce-pdf-invoices' ),
132
- 'browser' => __( 'Open in new browser tab/window', 'woocommerce-pdf-invoices' ),
133
- ),
134
- 'default' => 'browser',
135
- ),
136
- array(
137
- 'id' => 'bewpi-download-invoice-account',
138
- 'name' => $this->prefix . 'download_invoice_account',
139
- 'title' => '',
140
- 'callback' => array( $this, 'input_callback' ),
141
- 'page' => $this->settings_key,
142
- 'section' => 'download',
143
- 'type' => 'checkbox',
144
- 'desc' => __( 'Enable download from my account', 'woocommerce-pdf-invoices' )
145
- . '<br/><div class="bewpi-notes">'
146
- . __( 'By default PDF is only downloadable when order has been paid, so order status should be Processing or Completed.', 'woocommerce-pdf-invoices' )
147
- . '</div>',
148
- 'class' => 'bewpi-checkbox-option-title',
149
- 'default' => 1,
150
- ),
151
- array(
152
- 'id' => 'bewpi-email-it-in',
153
- 'name' => $this->prefix . 'email_it_in',
154
- 'title' => '',
155
- 'callback' => array( $this, 'input_callback' ),
156
- 'page' => $this->settings_key,
157
- 'section' => 'cloud_storage',
158
- 'type' => 'checkbox',
159
- 'desc' => __( 'Enable Email It In', 'woocommerce-pdf-invoices' ),
160
- 'class' => 'bewpi-checkbox-option-title',
161
- 'default' => 0,
162
- ),
163
- array(
164
- 'id' => 'bewpi-email-it-in-account',
165
- 'name' => $this->prefix . 'email_it_in_account',
166
- 'title' => __( 'Email It In account', 'woocommerce-pdf-invoices' ),
167
- 'callback' => array( $this, 'input_callback' ),
168
- 'page' => $this->settings_key,
169
- 'section' => 'cloud_storage',
170
- 'type' => 'text',
171
- 'desc' => sprintf( __( 'Get your account from your %1$s <a href="%2$s">user account</a>.', 'woocommerce-pdf-invoices' ), 'Email It In', 'https://www.emailitin.com/user_account' ),
172
- 'default' => '',
173
- ),
174
- array(
175
- 'id' => 'bewpi-invoice-number-column',
176
- 'name' => $this->prefix . 'invoice_number_column',
177
- 'title' => '',
178
- 'callback' => array( $this, 'input_callback' ),
179
- 'page' => $this->settings_key,
180
- 'section' => 'interface',
181
- 'type' => 'checkbox',
182
- 'desc' => __( 'Enable Invoice Number column', 'woocommerce-pdf-invoices' )
183
- . '<br/><div class="bewpi-notes">' . __( 'Display invoice numbers on Shop Order page.', 'woocommerce-pdf-invoices' ) . '</div>',
184
- 'class' => 'bewpi-checkbox-option-title',
185
- 'default' => 1,
186
- ),
187
- array(
188
- 'id' => 'bewpi-mpdf-debug',
189
- 'name' => $this->prefix . 'mpdf_debug',
190
- 'title' => '',
191
- 'callback' => array( $this, 'input_callback' ),
192
- 'page' => $this->settings_key,
193
- 'section' => 'debug',
194
- 'type' => 'checkbox',
195
- 'desc' => __( 'Enable mPDF debugging', 'woocommerce-pdf-invoices' )
196
- . '<br/><div class="bewpi-notes">' . __( 'Enable if you aren\'t able to create an invoice.', 'woocommerce-pdf-invoices' ) . '</div>',
197
- 'class' => 'bewpi-checkbox-option-title',
198
- 'default' => 0,
199
- ),
200
- );
201
-
202
- return apply_filters( 'bewpi_general_settings', $settings );
203
- }
204
-
205
- /**
206
- * Sanitize settings.
207
- *
208
- * @param array $input settings.
209
- *
210
- * @return mixed
211
- */
212
- public function sanitize( $input ) {
213
- $output = get_option( $this->settings_key );
214
-
215
- foreach ( $output as $key => $value ) {
216
- if ( ! isset( $input[ $key ] ) ) {
217
- $output[ $key ] = is_array( $output[ $key ] ) ? array() : '';
218
- continue;
219
- }
220
-
221
- if ( is_array( $output[ $key ] ) ) {
222
- $output[ $key ] = $input[ $key ];
223
- continue;
224
- }
225
-
226
- // Strip all html and properly handle quoted strings.
227
- $output[ $key ] = stripslashes( $input[ $key ] );
228
- }
229
-
230
- return apply_filters( 'bewpi_sanitized_' . $this->settings_key, $output, $input );
231
- }
232
- }
233
- }
1
+ <?php
2
+ /**
3
+ * General settings class.
4
+ *
5
+ * @author Bas Elbers
6
+ * @category Admin
7
+ * @package BE_WooCommerce_PDF_Invoices/Admin
8
+ * @version 1.0.0
9
+ */
10
+
11
+ defined( 'ABSPATH' ) or exit;
12
+
13
+ if ( ! class_exists( 'BEWPI_General_Settings' ) ) {
14
+
15
+ /**
16
+ * Class BEWPI_General_Settings.
17
+ */
18
+ class BEWPI_General_Settings extends BEWPI_Abstract_Settings {
19
+
20
+ /**
21
+ * BEWPI_General_Settings constructor.
22
+ */
23
+ public function __construct() {
24
+ $this->settings_key = 'bewpi_general_settings';
25
+ $this->settings_tab = __( 'General', 'woocommerce-pdf-invoices' );
26
+ $this->fields = $this->get_fields();
27
+ $this->sections = $this->get_sections();
28
+ $this->defaults = $this->get_defaults();
29
+
30
+ parent::__construct();
31
+ }
32
+
33
+ /**
34
+ * Get all sections.
35
+ *
36
+ * @return array.
37
+ */
38
+ private function get_sections() {
39
+ $sections = array(
40
+ 'email' => array(
41
+ 'title' => __( 'Email Options', 'woocommerce-pdf-invoices' ),
42
+ 'description' => sprintf( __( 'The PDF invoice will be generated when WooCommerce sends the corresponding email. The email should be <a href="%1$s">enabled</a> in order to automatically generate the PDF invoice. Want to attach PDF documents to many more email types? Take a look at %2$s.', 'woocommerce-pdf-invoices' ), 'admin.php?page=wc-settings&tab=email', '<a href="https://wcpdfinvoices.com" target="_blank">WooCommerce PDF Invoices Premium</a>' ),
43
+ ),
44
+ 'download' => array(
45
+ 'title' => __( 'Download Options', 'woocommerce-pdf-invoices' ),
46
+ ),
47
+ 'cloud_storage' => array(
48
+ 'title' => __( 'Cloud Storage Options', 'woocommerce-pdf-invoices' ),
49
+ 'description' => sprintf( __( 'Sign-up at <a href="%1$s">Email It In</a> to send invoices to your Dropbox, OneDrive, Google Drive or Egnyte and enter your account below.', 'woocommerce-pdf-invoices' ), 'https://emailitin.com' ),
50
+ ),
51
+ 'interface' => array(
52
+ 'title' => __( 'Interface Options', 'woocommerce-pdf-invoices' ),
53
+ ),
54
+ 'debug' => array(
55
+ 'title' => __( 'Debug Options', 'woocommerce-pdf-invoices' ),
56
+ ),
57
+ );
58
+
59
+ return $sections;
60
+ }
61
+
62
+ /**
63
+ * Settings fields.
64
+ *
65
+ * @return array
66
+ */
67
+ private function get_fields() {
68
+ $settings = array(
69
+ array(
70
+ 'id' => 'bewpi-email-types',
71
+ 'name' => $this->prefix . 'email_types',
72
+ 'title' => __( 'Attach to Emails', 'woocommerce-pdf-invoices' ),
73
+ 'callback' => array( $this, 'multi_select_callback' ),
74
+ 'page' => $this->settings_key,
75
+ 'section' => 'email',
76
+ 'type' => 'multiple_select',
77
+ 'desc' => '',
78
+ 'options' => apply_filters( 'wpi_email_types', array(
79
+ 'new_order' => array(
80
+ 'name' => __( 'New order', 'woocommerce-pdf-invoices' ),
81
+ 'value' => 'new_order',
82
+ 'default' => 1,
83
+ ),
84
+ 'customer_on_hold_order' => array(
85
+ 'name' => __( 'Order on-hold', 'woocommerce-pdf-invoices' ),
86
+ 'value' => 'customer_on_hold_order',
87
+ 'default' => 0,
88
+ ),
89
+ 'customer_processing_order' => array(
90
+ 'name' => __( 'Processing order', 'woocommerce-pdf-invoices' ),
91
+ 'value' => 'customer_processing_order',
92
+ 'default' => 0,
93
+ ),
94
+ 'customer_completed_order' => array(
95
+ 'name' => __( 'Completed order', 'woocommerce-pdf-invoices' ),
96
+ 'value' => 'customer_completed_order',
97
+ 'default' => 1,
98
+ ),
99
+ 'customer_invoice' => array(
100
+ 'name' => __( 'Customer invoice', 'woocommerce-pdf-invoices' ),
101
+ 'value' => 'customer_invoice',
102
+ 'default' => 0,
103
+ ),
104
+ ) ),
105
+ ),
106
+ array(
107
+ 'id' => 'bewpi-disable-free-products',
108
+ 'name' => $this->prefix . 'disable_free_products',
109
+ 'title' => '',
110
+ 'callback' => array( $this, 'input_callback' ),
111
+ 'page' => $this->settings_key,
112
+ 'section' => 'email',
113
+ 'type' => 'checkbox',
114
+ 'desc' => __( 'Disable for free products', 'woocommerce-pdf-invoices' )
115
+ . '<br/><div class="bewpi-notes">'
116
+ . __( 'Skip automatic PDF invoice generation for orders containing only free products.', 'woocommerce-pdf-invoices' )
117
+ . '</div>',
118
+ 'class' => 'bewpi-checkbox-option-title',
119
+ 'default' => 0,
120
+ ),
121
+ array(
122
+ 'id' => 'bewpi-view-pdf',
123
+ 'name' => $this->prefix . 'view_pdf',
124
+ 'title' => __( 'View PDF', 'woocommerce-pdf-invoices' ),
125
+ 'callback' => array( $this, 'select_callback' ),
126
+ 'page' => $this->settings_key,
127
+ 'section' => 'download',
128
+ 'type' => 'text',
129
+ 'desc' => '',
130
+ 'options' => array(
131
+ 'download' => __( 'Download', 'woocommerce-pdf-invoices' ),
132
+ 'browser' => __( 'Open in new browser tab/window', 'woocommerce-pdf-invoices' ),
133
+ ),
134
+ 'default' => 'browser',
135
+ ),
136
+ array(
137
+ 'id' => 'bewpi-download-invoice-account',
138
+ 'name' => $this->prefix . 'download_invoice_account',
139
+ 'title' => '',
140
+ 'callback' => array( $this, 'input_callback' ),
141
+ 'page' => $this->settings_key,
142
+ 'section' => 'download',
143
+ 'type' => 'checkbox',
144
+ 'desc' => __( 'Enable download from my account', 'woocommerce-pdf-invoices' )
145
+ . '<br/><div class="bewpi-notes">'
146
+ . __( 'By default PDF is only downloadable when order has been paid, so order status should be Processing or Completed.', 'woocommerce-pdf-invoices' )
147
+ . '</div>',
148
+ 'class' => 'bewpi-checkbox-option-title',
149
+ 'default' => 1,
150
+ ),
151
+ array(
152
+ 'id' => 'bewpi-email-it-in',
153
+ 'name' => $this->prefix . 'email_it_in',
154
+ 'title' => '',
155
+ 'callback' => array( $this, 'input_callback' ),
156
+ 'page' => $this->settings_key,
157
+ 'section' => 'cloud_storage',
158
+ 'type' => 'checkbox',
159
+ 'desc' => __( 'Enable Email It In', 'woocommerce-pdf-invoices' ),
160
+ 'class' => 'bewpi-checkbox-option-title',
161
+ 'default' => 0,
162
+ ),
163
+ array(
164
+ 'id' => 'bewpi-email-it-in-account',
165
+ 'name' => $this->prefix . 'email_it_in_account',
166
+ 'title' => __( 'Email It In account', 'woocommerce-pdf-invoices' ),
167
+ 'callback' => array( $this, 'input_callback' ),
168
+ 'page' => $this->settings_key,
169
+ 'section' => 'cloud_storage',
170
+ 'type' => 'text',
171
+ 'desc' => sprintf( __( 'Get your account from your %1$s <a href="%2$s">user account</a>.', 'woocommerce-pdf-invoices' ), 'Email It In', 'https://www.emailitin.com/user_account' ),
172
+ 'default' => '',
173
+ ),
174
+ array(
175
+ 'id' => 'bewpi-invoice-number-column',
176
+ 'name' => $this->prefix . 'invoice_number_column',
177
+ 'title' => '',
178
+ 'callback' => array( $this, 'input_callback' ),
179
+ 'page' => $this->settings_key,
180
+ 'section' => 'interface',
181
+ 'type' => 'checkbox',
182
+ 'desc' => __( 'Enable Invoice Number column', 'woocommerce-pdf-invoices' )
183
+ . '<br/><div class="bewpi-notes">' . __( 'Display invoice numbers on Shop Order page.', 'woocommerce-pdf-invoices' ) . '</div>',
184
+ 'class' => 'bewpi-checkbox-option-title',
185
+ 'default' => 1,
186
+ ),
187
+ array(
188
+ 'id' => 'bewpi-mpdf-debug',
189
+ 'name' => $this->prefix . 'mpdf_debug',
190
+ 'title' => '',
191
+ 'callback' => array( $this, 'input_callback' ),
192
+ 'page' => $this->settings_key,
193
+ 'section' => 'debug',
194
+ 'type' => 'checkbox',
195
+ 'desc' => __( 'Enable mPDF debugging', 'woocommerce-pdf-invoices' )
196
+ . '<br/><div class="bewpi-notes">' . __( 'Enable if you aren\'t able to create an invoice.', 'woocommerce-pdf-invoices' ) . '</div>',
197
+ 'class' => 'bewpi-checkbox-option-title',
198
+ 'default' => 0,
199
+ ),
200
+ );
201
+
202
+ return apply_filters( 'bewpi_general_settings', $settings );
203
+ }
204
+
205
+ /**
206
+ * Sanitize settings.
207
+ *
208
+ * @param array $input settings.
209
+ *
210
+ * @return mixed
211
+ */
212
+ public function sanitize( $input ) {
213
+ $output = get_option( $this->settings_key );
214
+
215
+ foreach ( $output as $key => $value ) {
216
+ if ( ! isset( $input[ $key ] ) ) {
217
+ $output[ $key ] = is_array( $output[ $key ] ) ? array() : '';
218
+ continue;
219
+ }
220
+
221
+ if ( is_array( $output[ $key ] ) ) {
222
+ $output[ $key ] = $input[ $key ];
223
+ continue;
224
+ }
225
+
226
+ // Strip all html and properly handle quoted strings.
227
+ $output[ $key ] = stripslashes( $input[ $key ] );
228
+ }
229
+
230
+ return apply_filters( 'bewpi_sanitized_' . $this->settings_key, $output, $input );
231
+ }
232
+ }
233
+ }
includes/admin/settings/class-template.php CHANGED
@@ -1,624 +1,624 @@
1
- <?php
2
- /**
3
- * Template settings
4
- *
5
- * @author Bas Elbers
6
- * @category Admin
7
- * @package BE_WooCommerce_PDF_Invoices/Admin
8
- * @version 1.0.0
9
- */
10
-
11
- defined( 'ABSPATH' ) or exit;
12
-
13
- if ( ! class_exists( 'BEWPI_Template_Settings' ) ) {
14
-
15
- /**
16
- * Class BEWPI_Template_Settings.
17
- */
18
- class BEWPI_Template_Settings extends BEWPI_Abstract_Settings {
19
-
20
- /**
21
- * BEWPI_Template_Settings constructor.
22
- */
23
- public function __construct() {
24
- $this->settings_key = 'bewpi_template_settings';
25
- $this->settings_tab = __( 'Template', 'woocommerce-pdf-invoices' );
26
- $this->fields = $this->get_fields();
27
- $this->sections = $this->get_sections();
28
- $this->defaults = $this->get_defaults();
29
-
30
- parent::__construct();
31
-
32
- $this->fix_deleted_custom_template();
33
- }
34
-
35
- /**
36
- * Get all sections.
37
- *
38
- * @return array.
39
- */
40
- private function get_sections() {
41
- $sections = apply_filters( 'wpi_template_sections', array(
42
- 'general' => array(
43
- 'title' => __( 'General Options', 'woocommerce-pdf-invoices' ),
44
- 'description' => sprintf( __( 'Want to customize the template? The <a href="%s">FAQ</a> will give you a brief description.', 'woocommerce-pdf-invoices' ), 'https://wordpress.org/plugins/woocommerce-pdf-invoices' ),
45
- ),
46
- 'invoice_number' => array(
47
- 'title' => __( 'Invoice Number Options', 'woocommerce-pdf-invoices' ),
48
- ),
49
- 'packing_slips' => array(
50
- 'title' => __( 'Packing Slips Options', 'woocommerce-pdf-invoices' ),
51
- 'description' => __( 'Packing slips are <strong>only available</strong> when using minimal template.', 'woocommerce-pdf-invoices' ),
52
- ),
53
- 'header' => array(
54
- 'title' => __( 'Header Options', 'woocommerce-pdf-invoices' ),
55
- 'description' => __( 'The header will be visible on every page.', 'woocommerce-pdf-invoices' ),
56
- ),
57
- 'body' => array(
58
- 'title' => __( 'Body Options', 'woocommerce-pdf-invoices' ),
59
- 'description' => __( 'Configuration options for the body of the template. .', 'woocommerce-pdf-invoices' ),
60
- ),
61
- 'footer' => array(
62
- 'title' => __( 'Footer Options', 'woocommerce-pdf-invoices' ),
63
- 'description' => __( 'The footer will be visible on every page.', 'woocommerce-pdf-invoices' ),
64
- ),
65
- 'visible_columns' => array(
66
- 'title' => __( 'Table Content', 'woocommerce-pdf-invoices' ),
67
- 'description' => __( 'Enable or disable the columns.', 'woocommerce-pdf-invoices' ),
68
- ),
69
- ) );
70
-
71
- return $sections;
72
- }
73
-
74
- /**
75
- * Get templates for options.
76
- *
77
- * @return array
78
- */
79
- private function get_template_options() {
80
- $templates = array();
81
-
82
- foreach ( array_map( 'basename', WPI()->templater()->get_templates() ) as $template ) {
83
- $templates[ $template ] = strtolower( $template );
84
- }
85
-
86
- return $templates;
87
- }
88
-
89
- /**
90
- * Settings configuration.
91
- *
92
- * @return array
93
- */
94
- private function get_fields() {
95
- $company_logo = wp_get_attachment_image_src( get_theme_mod( 'custom_logo' ), 'thumbnail' );
96
-
97
- $settings = array(
98
- array(
99
- 'id' => 'bewpi-template-name',
100
- 'name' => $this->prefix . 'template_name',
101
- 'title' => __( 'Template', 'woocommerce-pdf-invoices' ),
102
- 'callback' => array( $this, 'select_callback' ),
103
- 'page' => $this->settings_key,
104
- 'section' => 'general',
105
- 'type' => 'text',
106
- 'desc' => sprintf( __( 'Create a custom template by copying it from %1$s to %2$s.', 'woocommerce-pdf-invoices' ), '<code>plugins/woocommerce-pdf-invoices/includes/templates/invoice/simple</code>', '<code>uploads/woocommerce-pdf-invoices/templates/invoice/simple</code>' )
107
- . '<br><div class="bewpi-notes">'
108
- . sprintf( __( '<strong>Note:</strong> The %1$s template will probably no longer be supported in future versions, consider using the %2$s template.', 'woocommerce-pdf-invoices' ), '<strong>micro</strong>', '<strong>minimal</strong>' )
109
- . '</div>',
110
- 'options' => $this->get_template_options(),
111
- 'default' => 'minimal',
112
- ),
113
- array(
114
- 'id' => 'bewpi-color-theme',
115
- 'name' => $this->prefix . 'color_theme',
116
- 'title' => __( 'Color theme', 'woocommerce-pdf-invoices' ),
117
- 'callback' => array( $this, 'input_callback' ),
118
- 'page' => $this->settings_key,
119
- 'section' => 'general',
120
- 'type' => 'color',
121
- 'desc' => '',
122
- 'default' => '#000000',
123
- ),
124
- array(
125
- 'id' => 'bewpi-theme-text-black',
126
- 'name' => $this->prefix . 'theme_text_black',
127
- 'title' => '',
128
- 'callback' => array( $this, 'input_callback' ),
129
- 'page' => $this->settings_key,
130
- 'section' => 'general',
131
- 'type' => 'checkbox',
132
- 'desc' => __( 'Display theme text in black color', 'woocommerce-pdf-invoices' )
133
- . '<br/><div class="bewpi-notes">'
134
- . __( 'Enable if you\'ve set the color theme to white or some other light color.', 'woocommerce-pdf-invoices' )
135
- . '</div>',
136
- 'class' => 'bewpi-checkbox-option-title',
137
- 'default' => 0,
138
- ),
139
- array(
140
- 'id' => 'bewpi-date-format',
141
- 'name' => $this->prefix . 'date_format',
142
- 'title' => __( 'Date format', 'woocommerce-pdf-invoices' ),
143
- 'callback' => array( $this, 'input_callback' ),
144
- 'page' => $this->settings_key,
145
- 'section' => 'general',
146
- 'type' => 'text',
147
- 'desc' => sprintf( __( '<a href="%s">Format</a> of invoice date and order date.', 'woocommerce-pdf-invoices' ), 'http://php.net/manual/en/datetime.formats.date.php' ),
148
- 'default' => get_option( 'date_format' ),
149
- 'attrs' => array( 'required' ),
150
- ),
151
- array(
152
- 'id' => 'bewpi-display-prices-incl-tax',
153
- 'name' => $this->prefix . 'display_prices_incl_tax',
154
- 'title' => '',
155
- 'callback' => array( $this, 'input_callback' ),
156
- 'page' => $this->settings_key,
157
- 'section' => 'general',
158
- 'type' => 'checkbox',
159
- 'desc' => __( 'Display prices including tax', 'woocommerce-pdf-invoices' )
160
- . '<br/><div class="bewpi-notes">'
161
- . __( 'Line item totals will be including tax. <br/><b>Note</b>: Subtotal will still be excluding tax, so disable it within the visible columns section.', 'woocommerce-pdf-invoices' )
162
- . '</div>',
163
- 'class' => 'bewpi-checkbox-option-title',
164
- 'default' => 0,
165
- ),
166
- array(
167
- 'id' => 'bewpi-shipping-taxable',
168
- 'name' => $this->prefix . 'shipping_taxable',
169
- 'title' => '',
170
- 'callback' => array( $this, 'input_callback' ),
171
- 'page' => $this->settings_key,
172
- 'section' => 'general',
173
- 'type' => 'checkbox',
174
- 'desc' => __( 'Shipping taxable', 'woocommerce-pdf-invoices' )
175
- . '<br/><div class="bewpi-notes">'
176
- . __( 'Enable to display subtotal including shipping.', 'woocommerce-pdf-invoices' )
177
- . '</div>',
178
- 'class' => 'bewpi-checkbox-option-title',
179
- 'default' => 0,
180
- ),
181
- array(
182
- 'id' => 'bewpi-show-payment-status',
183
- 'name' => $this->prefix . 'show_payment_status',
184
- 'title' => '',
185
- 'callback' => array( $this, 'input_callback' ),
186
- 'page' => $this->settings_key,
187
- 'section' => 'general',
188
- 'type' => 'checkbox',
189
- 'desc' => __( 'Mark invoice as paid', 'woocommerce-pdf-invoices' )
190
- . '<br/><div class="bewpi-notes">'
191
- . __( 'Invoice will be watermarked when order has been paid.', 'woocommerce-pdf-invoices' )
192
- . '</div>',
193
- 'class' => 'bewpi-checkbox-option-title',
194
- 'default' => 0,
195
- ),
196
- array(
197
- 'id' => 'bewpi-packing-slips',
198
- 'name' => $this->prefix . 'disable_packing_slips',
199
- 'title' => '',
200
- 'callback' => array( $this, 'input_callback' ),
201
- 'page' => $this->settings_key,
202
- 'section' => 'packing_slips',
203
- 'type' => 'checkbox',
204
- 'desc' => __( 'Disable Packing Slips', 'woocommerce-pdf-invoices' ),
205
- 'class' => 'bewpi-checkbox-option-title',
206
- 'default' => 0,
207
- ),
208
- array(
209
- 'id' => 'bewpi-company-name',
210
- 'name' => $this->prefix . 'company_name',
211
- 'title' => __( 'Company name', 'woocommerce-pdf-invoices' ),
212
- 'callback' => array( $this, 'input_callback' ),
213
- 'page' => $this->settings_key,
214
- 'section' => 'header',
215
- 'type' => 'text',
216
- 'desc' => '',
217
- 'default' => get_bloginfo(),
218
- ),
219
- array(
220
- 'id' => 'bewpi-company-logo',
221
- 'name' => $this->prefix . 'company_logo',
222
- 'title' => __( 'Company logo', 'woocommerce-pdf-invoices' ),
223
- 'callback' => array( $this, 'input_callback' ),
224
- 'page' => $this->settings_key,
225
- 'section' => 'header',
226
- 'type' => 'text',
227
- 'desc' => sprintf( __( 'Use the <a href="%1$s">Media Library</a> to <a href="%2$s">upload</a> or choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href="%3$s" target="_blank">File URL</a>.', 'woocommerce-pdf-invoices' ), 'media-new.php', 'upload.php', 'https://codex.wordpress.org/Media_Library_Screen#Attachment_Details' ),
228
- 'default' => ( is_array( $company_logo ) ) ? $company_logo[0] : '',
229
- ),
230
- array(
231
- 'id' => 'bewpi-company-address',
232
- 'name' => $this->prefix . 'company_address',
233
- 'title' => __( 'Company address', 'woocommerce-pdf-invoices' ),
234
- 'callback' => array( $this, 'textarea_callback' ),
235
- 'page' => $this->settings_key,
236
- 'section' => 'header',
237
- 'type' => 'text',
238
- 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ),
239
- 'default' => '',
240
- ),
241
- array(
242
- 'id' => 'bewpi-company-details',
243
- 'name' => $this->prefix . 'company_details',
244
- 'title' => __( 'Company details', 'woocommerce-pdf-invoices' ),
245
- 'callback' => array( $this, 'textarea_callback' ),
246
- 'page' => $this->settings_key,
247
- 'section' => 'header',
248
- 'type' => 'text',
249
- 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ),
250
- 'default' => '',
251
- ),
252
- array(
253
- 'id' => 'bewpi-title',
254
- 'name' => $this->prefix . 'title',
255
- 'title' => __( 'Title', 'woocommerce-pdf-invoices' ),
256
- 'callback' => array( $this, 'input_callback' ),
257
- 'page' => $this->settings_key,
258
- 'section' => 'body',
259
- 'type' => 'text',
260
- 'desc' => __( 'Change the name of the invoice.', 'woocommerce-pdf-invoices' ),
261
- 'default' => __( 'Invoice', 'woocommerce-pdf-invoices' ),
262
- ),
263
- array(
264
- 'id' => 'bewpi-intro-text',
265
- 'name' => $this->prefix . 'intro_text',
266
- 'title' => __( 'Thank you text', 'woocommerce-pdf-invoices' ),
267
- 'callback' => array( $this, 'textarea_callback' ),
268
- 'page' => $this->settings_key,
269
- 'section' => 'header',
270
- 'type' => 'text',
271
- 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ) . ' '
272
- . __( 'Visible in big colored bar directly after invoice total.', 'woocommerce-pdf-invoices' ),
273
- 'default' => '',
274
- ),
275
- array(
276
- 'id' => 'bewpi-show-ship-to',
277
- 'name' => $this->prefix . 'show_ship_to',
278
- 'title' => '',
279
- 'callback' => array( $this, 'input_callback' ),
280
- 'page' => $this->settings_key,
281
- 'section' => 'body',
282
- 'type' => 'checkbox',
283
- 'desc' => __( 'Show customers shipping address', 'woocommerce-pdf-invoices' )
284
- . '<br/><div class="bewpi-notes">'
285
- . __( 'Customers shipping address won\'t be visible when order has only virtual products.', 'woocommerce-pdf-invoices' )
286
- . '</div>',
287
- 'class' => 'bewpi-checkbox-option-title',
288
- 'default' => 1,
289
- ),
290
- array(
291
- 'id' => 'bewpi-show-customer-notes',
292
- 'name' => $this->prefix . 'show_customer_notes',
293
- 'title' => '',
294
- 'callback' => array( $this, 'input_callback' ),
295
- 'page' => $this->settings_key,
296
- 'section' => 'body',
297
- 'type' => 'checkbox',
298
- 'desc' => __( 'Show customer notes', 'woocommerce-pdf-invoices' ),
299
- 'class' => 'bewpi-checkbox-option-title',
300
- 'default' => 1,
301
- ),
302
- array(
303
- 'id' => 'bewpi-terms',
304
- 'name' => $this->prefix . 'terms',
305
- 'title' => __( 'Terms & conditions, policies etc.', 'woocommerce-pdf-invoices' ),
306
- 'callback' => array( $this, 'textarea_callback' ),
307
- 'page' => $this->settings_key,
308
- 'section' => 'body',
309
- 'type' => 'text',
310
- 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ) . ' '
311
- . sprintf( __( 'Visible below customer notes and above footer. Want to attach additional pages to the invoice? Take a look at <a href="%1$s">%2$s</a> plugin.', 'woocommerce-pdf-invoices' ), 'http://wcpdfinvoices.com', 'WooCommerce PDF Invoices Premium' ),
312
- 'default' => '',
313
- ),
314
- array(
315
- 'id' => 'bewpi-left-footer-column',
316
- 'name' => $this->prefix . 'left_footer_column',
317
- 'title' => __( 'Left footer column.', 'woocommerce-pdf-invoices' ),
318
- 'callback' => array( $this, 'textarea_callback' ),
319
- 'page' => $this->settings_key,
320
- 'section' => 'footer',
321
- 'type' => 'text',
322
- 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ),
323
- 'default' => '',
324
- ),
325
- array(
326
- 'id' => 'bewpi-right-footer-column',
327
- 'name' => $this->prefix . 'right_footer_column',
328
- 'title' => __( 'Right footer column.', 'woocommerce-pdf-invoices' ),
329
- 'callback' => array( $this, 'textarea_callback' ),
330
- 'page' => $this->settings_key,
331
- 'section' => 'footer',
332
- 'type' => 'text',
333
- 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ),
334
- 'default' => '',
335
- ),
336
- array(
337
- 'id' => 'bewpi-invoice-number-type',
338
- 'name' => $this->prefix . 'invoice_number_type',
339
- 'title' => __( 'Type', 'woocommerce-pdf-invoices' ),
340
- 'callback' => array( $this, 'select_callback' ),
341
- 'page' => $this->settings_key,
342
- 'section' => 'invoice_number',
343
- 'type' => 'text',
344
- 'desc' => '',
345
- 'options' => array(
346
- 'woocommerce_order_number' => __( 'WooCommerce order number', 'woocommerce-pdf-invoices' ),
347
- 'sequential_number' => __( 'Sequential number', 'woocommerce-pdf-invoices' ),
348
- ),
349
- 'default' => 'sequential_number',
350
- ),
351
- array(
352
- 'id' => 'bewpi-reset-counter',
353
- 'name' => $this->prefix . 'reset_counter',
354
- 'title' => '',
355
- 'callback' => array( $this, 'reset_counter_callback' ),
356
- 'page' => $this->settings_key,
357
- 'section' => 'invoice_number',
358
- 'type' => 'checkbox',
359
- 'desc' => __( 'Reset invoice counter', 'woocommerce-pdf-invoices' ),
360
- 'class' => 'bewpi-checkbox-option-title',
361
- 'default' => 0,
362
- 'attrs' => array( 'onchange="bewpi.setting.enableDisableNextInvoiceNumbering(this)"' ),
363
- ),
364
- array(
365
- 'id' => 'bewpi-next-invoice-number',
366
- 'name' => $this->prefix . 'next_invoice_number',
367
- 'title' => __( 'Next', 'woocommerce-pdf-invoices' ),
368
- 'callback' => array( $this, 'next_invoice_number_callback' ),
369
- 'page' => $this->settings_key,
370
- 'section' => 'invoice_number',
371
- 'type' => 'number',
372
- 'desc' => __( 'Next invoice number when resetting counter.', 'woocommerce-pdf-invoices' )
373
- . '<br/>'
374
- . __( '<b>Note:</b> Only available for Sequential numbering. All PDF invoices with invoice number greater then next invoice number will be deleted!', 'woocommerce-pdf-invoices' ),
375
- 'default' => 1,
376
- 'attrs' => array(
377
- 'readonly',
378
- 'min="1"',
379
- ),
380
- ),
381
- array(
382
- 'id' => 'bewpi-invoice-number-digits',
383
- 'name' => $this->prefix . 'invoice_number_digits',
384
- 'title' => __( 'Digits', 'woocommerce-pdf-invoices' ),
385
- 'callback' => array( $this, 'input_callback' ),
386
- 'page' => $this->settings_key,
387
- 'section' => 'invoice_number',
388
- 'type' => 'number',
389
- 'desc' => '',
390
- 'default' => 5,
391
- 'attrs' => array(
392
- 'min="3"',
393
- 'max="20"',
394
- 'required',
395
- ),
396
- ),
397
- array(
398
- 'id' => 'bewpi-invoice-number-prefix',
399
- 'name' => $this->prefix . 'invoice_number_prefix',
400
- 'title' => __( 'Prefix', 'woocommerce-pdf-invoices' ),
401
- 'callback' => array( $this, 'input_callback' ),
402
- 'page' => $this->settings_key,
403
- 'section' => 'invoice_number',
404
- 'type' => 'text',
405
- 'desc' => '',
406
- 'default' => '',
407
- ),
408
- array(
409
- 'id' => 'bewpi-invoice-number-suffix',
410
- 'name' => $this->prefix . 'invoice_number_suffix',
411
- 'title' => __( 'Suffix', 'woocommerce-pdf-invoices' ),
412
- 'callback' => array( $this, 'input_callback' ),
413
- 'page' => $this->settings_key,
414
- 'section' => 'invoice_number',
415
- 'type' => 'text',
416
- 'desc' => '',
417
- 'default' => '',
418
- ),
419
- array(
420
- 'id' => 'bewpi-invoice-number-format',
421
- 'name' => $this->prefix . 'invoice_number_format',
422
- 'title' => __( 'Format', 'woocommerce-pdf-invoices' ),
423
- 'callback' => array( $this, 'input_callback' ),
424
- 'page' => $this->settings_key,
425
- 'section' => 'invoice_number',
426
- 'type' => 'text',
427
- 'desc' => sprintf( __( 'Available placeholders: %s.', 'woocommerce-pdf-invoices' ), self::formatted_number_placeholders() )
428
- . '<br>'
429
- . sprintf( __( '<b>Note:</b> %s is required and slashes aren\'t supported.', 'woocommerce-pdf-invoices' ), '<code>[number]</code>' ),
430
- 'default' => '[number]-[Y]',
431
- 'attrs' => array( 'required' ),
432
- ),
433
- array(
434
- 'id' => 'bewpi-reset-counter-yearly',
435
- 'name' => $this->prefix . 'reset_counter_yearly',
436
- 'title' => '',
437
- 'callback' => array( $this, 'input_callback' ),
438
- 'page' => $this->settings_key,
439
- 'section' => 'invoice_number',
440
- 'type' => 'checkbox',
441
- 'desc' => __( 'Reset yearly', 'woocommerce-pdf-invoices' )
442
- . '<br/><div class="bewpi-notes">'
443
- . __( 'Automatically reset invoice numbers on new year\'s day.', 'woocommerce-pdf-invoices' )
444
- . '<br/>'
445
- . __( '<b>Note</b>: You will have to generate all invoices again when changing option.', 'woocommerce-pdf-invoices' )
446
- . '</div>',
447
- 'class' => 'bewpi-checkbox-option-title',
448
- 'default' => 1,
449
- ),
450
- array(
451
- 'id' => 'bewpi-show-sku',
452
- 'name' => $this->prefix . 'show_sku',
453
- 'title' => '',
454
- 'callback' => array( $this, 'input_callback' ),
455
- 'page' => $this->settings_key,
456
- 'section' => 'visible_columns',
457
- 'type' => 'checkbox',
458
- 'desc' => __( 'SKU', 'woocommerce-pdf-invoices' ),
459
- 'class' => 'bewpi-checkbox-option-title',
460
- 'default' => 0,
461
- ),
462
- array(
463
- 'id' => 'bewpi-show-subtotal',
464
- 'name' => $this->prefix . 'show_subtotal',
465
- 'title' => '',
466
- 'callback' => array( $this, 'input_callback' ),
467
- 'page' => $this->settings_key,
468
- 'section' => 'visible_columns',
469
- 'type' => 'checkbox',
470
- 'desc' => __( 'Subtotal', 'woocommerce-pdf-invoices' ),
471
- 'class' => 'bewpi-checkbox-option-title',
472
- 'default' => 1,
473
- ),
474
- array(
475
- 'id' => 'bewpi-show-tax',
476
- 'name' => $this->prefix . 'show_tax',
477
- 'title' => '',
478
- 'callback' => array( $this, 'input_callback' ),
479
- 'page' => $this->settings_key,
480
- 'section' => 'visible_columns',
481
- 'type' => 'checkbox',
482
- 'desc' => __( 'Tax (item)', 'woocommerce-pdf-invoices' ),
483
- 'class' => 'bewpi-checkbox-option-title',
484
- 'default' => 0,
485
- ),
486
- array(
487
- 'id' => 'bewpi-show-tax-row',
488
- 'name' => $this->prefix . 'show_tax_total',
489
- 'title' => '',
490
- 'callback' => array( $this, 'input_callback' ),
491
- 'page' => $this->settings_key,
492
- 'section' => 'visible_columns',
493
- 'type' => 'checkbox',
494
- 'desc' => __( 'Tax (total)', 'woocommerce-pdf-invoices' ),
495
- 'class' => 'bewpi-checkbox-option-title',
496
- 'default' => 1,
497
- ),
498
- array(
499
- 'id' => 'bewpi-show-discount',
500
- 'name' => $this->prefix . 'show_discount',
501
- 'title' => '',
502
- 'callback' => array( $this, 'input_callback' ),
503
- 'page' => $this->settings_key,
504
- 'section' => 'visible_columns',
505
- 'type' => 'checkbox',
506
- 'desc' => __( 'Discount', 'woocommerce-pdf-invoices' ),
507
- 'class' => 'bewpi-checkbox-option-title',
508
- 'default' => 1,
509
- ),
510
- array(
511
- 'id' => 'bewpi-show-shipping',
512
- 'name' => $this->prefix . 'show_shipping',
513
- 'title' => '',
514
- 'callback' => array( $this, 'input_callback' ),
515
- 'page' => $this->settings_key,
516
- 'section' => 'visible_columns',
517
- 'type' => 'checkbox',
518
- 'desc' => __( 'Shipping', 'woocommerce-pdf-invoices' ),
519
- 'class' => 'bewpi-checkbox-option-title',
520
- 'default' => 1,
521
- ),
522
- );
523
-
524
- return apply_filters( 'wpi_template_settings', $settings, $this );
525
- }
526
-
527
- /**
528
- * Sanitize settings.
529
- *
530
- * @param array $input form settings.
531
- *
532
- * @return mixed|void
533
- */
534
- public function sanitize( $input ) {
535
- $output = get_option( $this->settings_key );
536
-
537
- foreach ( $output as $key => $value ) {
538
- if ( ! isset( $input[ $key ] ) ) {
539
- $output[ $key ] = is_array( $output[ $key ] ) ? array() : '';
540
- continue;
541
- }
542
-
543
- if ( is_array( $output[ $key ] ) ) {
544
- $output[ $key ] = $input[ $key ];
545
- continue;
546
- }
547
-
548
- if ( 'bewpi_company_logo' === $key ) {
549
- continue;
550
- }
551
-
552
- // strip all html and php tags and properly handle quoted strings.
553
- $output[ $key ] = $this->strip_str( stripslashes( $input[ $key ] ) );
554
- }
555
-
556
- if ( isset( $input['bewpi_company_logo'] ) && ! empty( $input['bewpi_company_logo'] ) ) {
557
- $image_url = $this->validate_image( $input['bewpi_company_logo'] );
558
- if ( $image_url ) {
559
- $output['bewpi_company_logo'] = $image_url;
560
- } else {
561
- add_settings_error(
562
- esc_attr( $this->settings_key ),
563
- 'file-not-found',
564
- __( 'Company logo not found. Upload the image to the Media Library and try again.', 'woocommerce-pdf-invoices' )
565
- );
566
- }
567
- }
568
-
569
- if ( isset( $input['bewpi_reset_counter'] ) && $input['bewpi_reset_counter'] ) {
570
- set_transient( 'bewpi_next_invoice_number', intval( $input['bewpi_next_invoice_number'] ) );
571
- }
572
-
573
- return apply_filters( 'bewpi_sanitized_' . $this->settings_key, $output, $input );
574
- }
575
-
576
- /**
577
- * Validate image against modified urls and check for extension.
578
- *
579
- * @param string $image_url source url of the image.
580
- *
581
- * @return bool|string false or image url.
582
- */
583
- public function validate_image( $image_url ) {
584
- $image_url = esc_url_raw( $image_url, array( 'http', 'https' ) );
585
- $query = array(
586
- 'post_type' => 'attachment',
587
- 'fields' => 'ids',
588
- 'meta_query' => array(
589
- array(
590
- 'key' => '_wp_attached_file',
591
- 'value' => basename( $image_url ),
592
- 'compare' => 'LIKE',
593
- ),
594
- )
595
- );
596
-
597
- $ids = get_posts( $query );
598
- if ( count( $ids ) === 0 ) {
599
- WPI()->logger()->error( sprintf( 'Image %s not found in post table.', basename( $image_url ) ) );
600
-
601
- return false;
602
- }
603
-
604
- return wp_get_attachment_image_url( $ids[0], 'full' );
605
- }
606
-
607
- /**
608
- * Sets template to default template when custom template has been deleted.
609
- */
610
- private function fix_deleted_custom_template() {
611
- $options = get_option( $this->settings_key );
612
- $templates = array_map( 'basename', WPI()->templater()->get_templates() );
613
-
614
- // Check for deleted custom template.
615
- if ( in_array( $options['bewpi_template_name'], $templates, true ) ) {
616
- return;
617
- }
618
-
619
- $defaults = $this->get_defaults();
620
- $options['bewpi_template_name'] = $defaults['bewpi_template_name'];
621
- update_option( $this->settings_key, $options );
622
- }
623
- }
624
- } // End if().
1
+ <?php
2
+ /**
3
+ * Template settings
4
+ *
5
+ * @author Bas Elbers
6
+ * @category Admin
7
+ * @package BE_WooCommerce_PDF_Invoices/Admin
8
+ * @version 1.0.0
9
+ */
10
+
11
+ defined( 'ABSPATH' ) or exit;
12
+
13
+ if ( ! class_exists( 'BEWPI_Template_Settings' ) ) {
14
+
15
+ /**
16
+ * Class BEWPI_Template_Settings.
17
+ */
18
+ class BEWPI_Template_Settings extends BEWPI_Abstract_Settings {
19
+
20
+ /**
21
+ * BEWPI_Template_Settings constructor.
22
+ */
23
+ public function __construct() {
24
+ $this->settings_key = 'bewpi_template_settings';
25
+ $this->settings_tab = __( 'Template', 'woocommerce-pdf-invoices' );
26
+ $this->fields = $this->get_fields();
27
+ $this->sections = $this->get_sections();
28
+ $this->defaults = $this->get_defaults();
29
+
30
+ parent::__construct();
31
+
32
+ $this->fix_deleted_custom_template();
33
+ }
34
+
35
+ /**
36
+ * Get all sections.
37
+ *
38
+ * @return array.
39
+ */
40
+ private function get_sections() {
41
+ $sections = apply_filters( 'wpi_template_sections', array(
42
+ 'general' => array(
43
+ 'title' => __( 'General Options', 'woocommerce-pdf-invoices' ),
44
+ 'description' => sprintf( __( 'Want to customize the template? The <a href="%s">FAQ</a> will give you a brief description.', 'woocommerce-pdf-invoices' ), 'https://wordpress.org/plugins/woocommerce-pdf-invoices' ),
45
+ ),
46
+ 'invoice_number' => array(
47
+ 'title' => __( 'Invoice Number Options', 'woocommerce-pdf-invoices' ),
48
+ ),
49
+ 'packing_slips' => array(
50
+ 'title' => __( 'Packing Slips Options', 'woocommerce-pdf-invoices' ),
51
+ 'description' => __( 'Packing slips are <strong>only available</strong> when using minimal template.', 'woocommerce-pdf-invoices' ),
52
+ ),
53
+ 'header' => array(
54
+ 'title' => __( 'Header Options', 'woocommerce-pdf-invoices' ),
55
+ 'description' => __( 'The header will be visible on every page.', 'woocommerce-pdf-invoices' ),
56
+ ),
57
+ 'body' => array(
58
+ 'title' => __( 'Body Options', 'woocommerce-pdf-invoices' ),
59
+ 'description' => __( 'Configuration options for the body of the template. .', 'woocommerce-pdf-invoices' ),
60
+ ),
61
+ 'footer' => array(
62
+ 'title' => __( 'Footer Options', 'woocommerce-pdf-invoices' ),
63
+ 'description' => __( 'The footer will be visible on every page.', 'woocommerce-pdf-invoices' ),
64
+ ),
65
+ 'visible_columns' => array(
66
+ 'title' => __( 'Table Content', 'woocommerce-pdf-invoices' ),
67
+ 'description' => __( 'Enable or disable the columns.', 'woocommerce-pdf-invoices' ),
68
+ ),
69
+ ) );
70
+
71
+ return $sections;
72
+ }
73
+
74
+ /**
75
+ * Get templates for options.
76
+ *
77
+ * @return array
78
+ */
79
+ private function get_template_options() {
80
+ $templates = array();
81
+
82
+ foreach ( array_map( 'basename', WPI()->templater()->get_templates() ) as $template ) {
83
+ $templates[ $template ] = strtolower( $template );
84
+ }
85
+
86
+ return $templates;
87
+ }
88
+
89
+ /**
90
+ * Settings configuration.
91
+ *
92
+ * @return array
93
+ */
94
+ private function get_fields() {
95
+ $company_logo = wp_get_attachment_image_src( get_theme_mod( 'custom_logo' ), 'thumbnail' );
96
+
97
+ $settings = array(
98
+ array(
99
+ 'id' => 'bewpi-template-name',
100
+ 'name' => $this->prefix . 'template_name',
101
+ 'title' => __( 'Template', 'woocommerce-pdf-invoices' ),
102
+ 'callback' => array( $this, 'select_callback' ),
103
+ 'page' => $this->settings_key,
104
+ 'section' => 'general',
105
+ 'type' => 'text',
106
+ 'desc' => sprintf( __( 'Create a custom template by copying it from %1$s to %2$s.', 'woocommerce-pdf-invoices' ), '<code>plugins/woocommerce-pdf-invoices/includes/templates/invoice/simple</code>', '<code>uploads/woocommerce-pdf-invoices/templates/invoice/simple</code>' )
107
+ . '<br><div class="bewpi-notes">'
108
+ . sprintf( __( '<strong>Note:</strong> The %1$s template will probably no longer be supported in future versions, consider using the %2$s template.', 'woocommerce-pdf-invoices' ), '<strong>micro</strong>', '<strong>minimal</strong>' )
109
+ . '</div>',
110
+ 'options' => $this->get_template_options(),
111
+ 'default' => 'minimal',
112
+ ),
113
+ array(
114
+ 'id' => 'bewpi-color-theme',
115
+ 'name' => $this->prefix . 'color_theme',
116
+ 'title' => __( 'Color theme', 'woocommerce-pdf-invoices' ),
117
+ 'callback' => array( $this, 'input_callback' ),
118
+ 'page' => $this->settings_key,
119
+ 'section' => 'general',
120
+ 'type' => 'color',
121
+ 'desc' => '',
122
+ 'default' => '#000000',
123
+ ),
124
+ array(
125
+ 'id' => 'bewpi-theme-text-black',
126
+ 'name' => $this->prefix . 'theme_text_black',
127
+ 'title' => '',
128
+ 'callback' => array( $this, 'input_callback' ),
129
+ 'page' => $this->settings_key,
130
+ 'section' => 'general',
131
+ 'type' => 'checkbox',
132
+ 'desc' => __( 'Display theme text in black color', 'woocommerce-pdf-invoices' )
133
+ . '<br/><div class="bewpi-notes">'
134
+ . __( 'Enable if you\'ve set the color theme to white or some other light color.', 'woocommerce-pdf-invoices' )
135
+ . '</div>',
136
+ 'class' => 'bewpi-checkbox-option-title',
137
+ 'default' => 0,
138
+ ),
139
+ array(
140
+ 'id' => 'bewpi-date-format',
141
+ 'name' => $this->prefix . 'date_format',
142
+ 'title' => __( 'Date format', 'woocommerce-pdf-invoices' ),
143
+ 'callback' => array( $this, 'input_callback' ),
144
+ 'page' => $this->settings_key,
145
+ 'section' => 'general',
146
+ 'type' => 'text',
147
+ 'desc' => sprintf( __( '<a href="%s">Format</a> of invoice date and order date.', 'woocommerce-pdf-invoices' ), 'http://php.net/manual/en/datetime.formats.date.php' ),
148
+ 'default' => get_option( 'date_format' ),
149
+ 'attrs' => array( 'required' ),
150
+ ),
151
+ array(
152
+ 'id' => 'bewpi-display-prices-incl-tax',
153
+ 'name' => $this->prefix . 'display_prices_incl_tax',
154
+ 'title' => '',
155
+ 'callback' => array( $this, 'input_callback' ),
156
+ 'page' => $this->settings_key,
157
+ 'section' => 'general',
158
+ 'type' => 'checkbox',
159
+ 'desc' => __( 'Display prices including tax', 'woocommerce-pdf-invoices' )
160
+ . '<br/><div class="bewpi-notes">'
161
+ . __( 'Line item totals will be including tax. <br/><b>Note</b>: Subtotal will still be excluding tax, so disable it within the visible columns section.', 'woocommerce-pdf-invoices' )
162
+ . '</div>',
163
+ 'class' => 'bewpi-checkbox-option-title',
164
+ 'default' => 0,
165
+ ),
166
+ array(
167
+ 'id' => 'bewpi-shipping-taxable',
168
+ 'name' => $this->prefix . 'shipping_taxable',
169
+ 'title' => '',
170
+ 'callback' => array( $this, 'input_callback' ),
171
+ 'page' => $this->settings_key,
172
+ 'section' => 'general',
173
+ 'type' => 'checkbox',
174
+ 'desc' => __( 'Shipping taxable', 'woocommerce-pdf-invoices' )
175
+ . '<br/><div class="bewpi-notes">'
176
+ . __( 'Enable to display subtotal including shipping.', 'woocommerce-pdf-invoices' )
177
+ . '</div>',
178
+ 'class' => 'bewpi-checkbox-option-title',
179
+ 'default' => 0,
180
+ ),
181
+ array(
182
+ 'id' => 'bewpi-show-payment-status',
183
+ 'name' => $this->prefix . 'show_payment_status',
184
+ 'title' => '',
185
+ 'callback' => array( $this, 'input_callback' ),
186
+ 'page' => $this->settings_key,
187
+ 'section' => 'general',
188
+ 'type' => 'checkbox',
189
+ 'desc' => __( 'Mark invoice as paid', 'woocommerce-pdf-invoices' )
190
+ . '<br/><div class="bewpi-notes">'
191
+ . __( 'Invoice will be watermarked when order has been paid.', 'woocommerce-pdf-invoices' )
192
+ . '</div>',
193
+ 'class' => 'bewpi-checkbox-option-title',
194
+ 'default' => 0,
195
+ ),
196
+ array(
197
+ 'id' => 'bewpi-packing-slips',
198
+ 'name' => $this->prefix . 'disable_packing_slips',
199
+ 'title' => '',
200
+ 'callback' => array( $this, 'input_callback' ),
201
+ 'page' => $this->settings_key,
202
+ 'section' => 'packing_slips',
203
+ 'type' => 'checkbox',
204
+ 'desc' => __( 'Disable Packing Slips', 'woocommerce-pdf-invoices' ),
205
+ 'class' => 'bewpi-checkbox-option-title',
206
+ 'default' => 0,
207
+ ),
208
+ array(
209
+ 'id' => 'bewpi-company-name',
210
+ 'name' => $this->prefix . 'company_name',
211
+ 'title' => __( 'Company name', 'woocommerce-pdf-invoices' ),
212
+ 'callback' => array( $this, 'input_callback' ),
213
+ 'page' => $this->settings_key,
214
+ 'section' => 'header',
215
+ 'type' => 'text',
216
+ 'desc' => '',
217
+ 'default' => get_bloginfo(),
218
+ ),
219
+ array(
220
+ 'id' => 'bewpi-company-logo',
221
+ 'name' => $this->prefix . 'company_logo',
222
+ 'title' => __( 'Company logo', 'woocommerce-pdf-invoices' ),
223
+ 'callback' => array( $this, 'input_callback' ),
224
+ 'page' => $this->settings_key,
225
+ 'section' => 'header',
226
+ 'type' => 'text',
227
+ 'desc' => sprintf( __( 'Use the <a href="%1$s">Media Library</a> to <a href="%2$s">upload</a> or choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href="%3$s" target="_blank">File URL</a>.', 'woocommerce-pdf-invoices' ), 'media-new.php', 'upload.php', 'https://codex.wordpress.org/Media_Library_Screen#Attachment_Details' ),
228
+ 'default' => ( is_array( $company_logo ) ) ? $company_logo[0] : '',
229
+ ),
230
+ array(
231
+ 'id' => 'bewpi-company-address',
232
+ 'name' => $this->prefix . 'company_address',
233
+ 'title' => __( 'Company address', 'woocommerce-pdf-invoices' ),
234
+ 'callback' => array( $this, 'textarea_callback' ),
235
+ 'page' => $this->settings_key,
236
+ 'section' => 'header',
237
+ 'type' => 'text',
238
+ 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ),
239
+ 'default' => '',
240
+ ),
241
+ array(
242
+ 'id' => 'bewpi-company-details',
243
+ 'name' => $this->prefix . 'company_details',
244
+ 'title' => __( 'Company details', 'woocommerce-pdf-invoices' ),
245
+ 'callback' => array( $this, 'textarea_callback' ),
246
+ 'page' => $this->settings_key,
247
+ 'section' => 'header',
248
+ 'type' => 'text',
249
+ 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ),
250
+ 'default' => '',
251
+ ),
252
+ array(
253
+ 'id' => 'bewpi-title',
254
+ 'name' => $this->prefix . 'title',
255
+ 'title' => __( 'Title', 'woocommerce-pdf-invoices' ),
256
+ 'callback' => array( $this, 'input_callback' ),
257
+ 'page' => $this->settings_key,
258
+ 'section' => 'body',
259
+ 'type' => 'text',
260
+ 'desc' => __( 'Change the name of the invoice.', 'woocommerce-pdf-invoices' ),
261
+ 'default' => __( 'Invoice', 'woocommerce-pdf-invoices' ),
262
+ ),
263
+ array(
264
+ 'id' => 'bewpi-intro-text',
265
+ 'name' => $this->prefix . 'intro_text',
266
+ 'title' => __( 'Thank you text', 'woocommerce-pdf-invoices' ),
267
+ 'callback' => array( $this, 'textarea_callback' ),
268
+ 'page' => $this->settings_key,
269
+ 'section' => 'header',
270
+ 'type' => 'text',
271
+ 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ) . ' '
272
+ . __( 'Visible in big colored bar directly after invoice total.', 'woocommerce-pdf-invoices' ),
273
+ 'default' => '',
274
+ ),
275
+ array(
276
+ 'id' => 'bewpi-show-ship-to',
277
+ 'name' => $this->prefix . 'show_ship_to',
278
+ 'title' => '',
279
+ 'callback' => array( $this, 'input_callback' ),
280
+ 'page' => $this->settings_key,
281
+ 'section' => 'body',
282
+ 'type' => 'checkbox',
283
+ 'desc' => __( 'Show customers shipping address', 'woocommerce-pdf-invoices' )
284
+ . '<br/><div class="bewpi-notes">'
285
+ . __( 'Customers shipping address won\'t be visible when order has only virtual products.', 'woocommerce-pdf-invoices' )
286
+ . '</div>',
287
+ 'class' => 'bewpi-checkbox-option-title',
288
+ 'default' => 1,
289
+ ),
290
+ array(
291
+ 'id' => 'bewpi-show-customer-notes',
292
+ 'name' => $this->prefix . 'show_customer_notes',
293
+ 'title' => '',
294
+ 'callback' => array( $this, 'input_callback' ),
295
+ 'page' => $this->settings_key,
296
+ 'section' => 'body',
297
+ 'type' => 'checkbox',
298
+ 'desc' => __( 'Show customer notes', 'woocommerce-pdf-invoices' ),
299
+ 'class' => 'bewpi-checkbox-option-title',
300
+ 'default' => 1,
301
+ ),
302
+ array(
303
+ 'id' => 'bewpi-terms',
304
+ 'name' => $this->prefix . 'terms',
305
+ 'title' => __( 'Terms & conditions, policies etc.', 'woocommerce-pdf-invoices' ),
306
+ 'callback' => array( $this, 'textarea_callback' ),
307
+ 'page' => $this->settings_key,
308
+ 'section' => 'body',
309
+ 'type' => 'text',
310
+ 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ) . ' '
311
+ . sprintf( __( 'Visible below customer notes and above footer. Want to attach additional pages to the invoice? Take a look at <a href="%1$s">%2$s</a> plugin.', 'woocommerce-pdf-invoices' ), 'http://wcpdfinvoices.com', 'WooCommerce PDF Invoices Premium' ),
312
+ 'default' => '',
313
+ ),
314
+ array(
315
+ 'id' => 'bewpi-left-footer-column',
316
+ 'name' => $this->prefix . 'left_footer_column',
317
+ 'title' => __( 'Left footer column.', 'woocommerce-pdf-invoices' ),
318
+ 'callback' => array( $this, 'textarea_callback' ),
319
+ 'page' => $this->settings_key,
320
+ 'section' => 'footer',
321
+ 'type' => 'text',
322
+ 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ),
323
+ 'default' => '',
324
+ ),
325
+ array(
326
+ 'id' => 'bewpi-right-footer-column',
327
+ 'name' => $this->prefix . 'right_footer_column',
328
+ 'title' => __( 'Right footer column.', 'woocommerce-pdf-invoices' ),
329
+ 'callback' => array( $this, 'textarea_callback' ),
330
+ 'page' => $this->settings_key,
331
+ 'section' => 'footer',
332
+ 'type' => 'text',
333
+ 'desc' => sprintf( __( 'Allowed HTML tags: %s.', 'woocommerce-pdf-invoices' ), self::formatted_html_tags() ),
334
+ 'default' => '',
335
+ ),
336
+ array(
337
+ 'id' => 'bewpi-invoice-number-type',
338
+ 'name' => $this->prefix . 'invoice_number_type',
339
+ 'title' => __( 'Type', 'woocommerce-pdf-invoices' ),
340
+ 'callback' => array( $this, 'select_callback' ),
341
+ 'page' => $this->settings_key,
342
+ 'section' => 'invoice_number',
343
+ 'type' => 'text',
344
+ 'desc' => '',
345
+ 'options' => array(
346
+ 'woocommerce_order_number' => __( 'WooCommerce order number', 'woocommerce-pdf-invoices' ),
347
+ 'sequential_number' => __( 'Sequential number', 'woocommerce-pdf-invoices' ),
348
+ ),
349
+ 'default' => 'sequential_number',
350
+ ),
351
+ array(
352
+ 'id' => 'bewpi-reset-counter',
353
+ 'name' => $this->prefix . 'reset_counter',
354
+ 'title' => '',
355
+ 'callback' => array( $this, 'reset_counter_callback' ),
356
+ 'page' => $this->settings_key,
357
+ 'section' => 'invoice_number',
358
+ 'type' => 'checkbox',
359
+ 'desc' => __( 'Reset invoice counter', 'woocommerce-pdf-invoices' ),
360
+ 'class' => 'bewpi-checkbox-option-title',
361
+ 'default' => 0,
362
+ 'attrs' => array( 'onchange="bewpi.setting.enableDisableNextInvoiceNumbering(this)"' ),
363
+ ),
364
+ array(
365
+ 'id' => 'bewpi-next-invoice-number',
366
+ 'name' => $this->prefix . 'next_invoice_number',
367
+ 'title' => __( 'Next', 'woocommerce-pdf-invoices' ),
368
+ 'callback' => array( $this, 'next_invoice_number_callback' ),
369
+ 'page' => $this->settings_key,
370
+ 'section' => 'invoice_number',
371
+ 'type' => 'number',
372
+ 'desc' => __( 'Next invoice number when resetting counter.', 'woocommerce-pdf-invoices' )
373
+ . '<br/>'
374
+ . __( '<b>Note:</b> Only available for Sequential numbering. All PDF invoices with invoice number greater then next invoice number will be deleted!', 'woocommerce-pdf-invoices' ),
375
+ 'default' => 1,
376
+ 'attrs' => array(
377
+ 'readonly',
378
+ 'min="1"',
379
+ ),
380
+ ),
381
+ array(
382
+ 'id' => 'bewpi-invoice-number-digits',
383
+ 'name' => $this->prefix . 'invoice_number_digits',
384
+ 'title' => __( 'Digits', 'woocommerce-pdf-invoices' ),
385
+ 'callback' => array( $this, 'input_callback' ),
386
+ 'page' => $this->settings_key,
387
+ 'section' => 'invoice_number',
388
+ 'type' => 'number',
389
+ 'desc' => '',
390
+ 'default' => 5,
391
+ 'attrs' => array(
392
+ 'min="3"',
393
+ 'max="20"',
394
+ 'required',
395
+ ),
396
+ ),
397
+ array(
398
+ 'id' => 'bewpi-invoice-number-prefix',
399
+ 'name' => $this->prefix . 'invoice_number_prefix',
400
+ 'title' => __( 'Prefix', 'woocommerce-pdf-invoices' ),
401
+ 'callback' => array( $this, 'input_callback' ),
402
+ 'page' => $this->settings_key,
403
+ 'section' => 'invoice_number',
404
+ 'type' => 'text',
405
+ 'desc' => '',
406
+ 'default' => '',
407
+ ),
408
+ array(
409
+ 'id' => 'bewpi-invoice-number-suffix',
410
+ 'name' => $this->prefix . 'invoice_number_suffix',
411
+ 'title' => __( 'Suffix', 'woocommerce-pdf-invoices' ),
412
+ 'callback' => array( $this, 'input_callback' ),
413
+ 'page' => $this->settings_key,
414
+ 'section' => 'invoice_number',
415
+ 'type' => 'text',
416
+ 'desc' => '',
417
+ 'default' => '',
418
+ ),
419
+ array(
420
+ 'id' => 'bewpi-invoice-number-format',
421
+ 'name' => $this->prefix . 'invoice_number_format',
422
+ 'title' => __( 'Format', 'woocommerce-pdf-invoices' ),
423
+ 'callback' => array( $this, 'input_callback' ),
424
+ 'page' => $this->settings_key,
425
+ 'section' => 'invoice_number',
426
+ 'type' => 'text',
427
+ 'desc' => sprintf( __( 'Available placeholders: %s.', 'woocommerce-pdf-invoices' ), self::formatted_number_placeholders() )
428
+ . '<br>'
429
+ . sprintf( __( '<b>Note:</b> %s is required and slashes aren\'t supported.', 'woocommerce-pdf-invoices' ), '<code>[number]</code>' ),
430
+ 'default' => '[number]-[Y]',
431
+ 'attrs' => array( 'required' ),
432
+ ),
433
+ array(
434
+ 'id' => 'bewpi-reset-counter-yearly',
435
+ 'name' => $this->prefix . 'reset_counter_yearly',
436
+ 'title' => '',
437
+ 'callback' => array( $this, 'input_callback' ),
438
+ 'page' => $this->settings_key,
439
+ 'section' => 'invoice_number',
440
+ 'type' => 'checkbox',
441
+ 'desc' => __( 'Reset yearly', 'woocommerce-pdf-invoices' )
442
+ . '<br/><div class="bewpi-notes">'
443
+ . __( 'Automatically reset invoice numbers on new year\'s day.', 'woocommerce-pdf-invoices' )
444
+ . '<br/>'
445
+ . __( '<b>Note</b>: You will have to generate all invoices again when changing option.', 'woocommerce-pdf-invoices' )
446
+ . '</div>',
447
+ 'class' => 'bewpi-checkbox-option-title',
448
+ 'default' => 1,
449
+ ),
450
+ array(
451
+ 'id' => 'bewpi-show-sku',
452
+ 'name' => $this->prefix . 'show_sku',
453
+ 'title' => '',
454
+ 'callback' => array( $this, 'input_callback' ),
455
+ 'page' => $this->settings_key,
456
+ 'section' => 'visible_columns',
457
+ 'type' => 'checkbox',
458
+ 'desc' => __( 'SKU', 'woocommerce-pdf-invoices' ),
459
+ 'class' => 'bewpi-checkbox-option-title',
460
+ 'default' => 0,
461
+ ),
462
+ array(
463
+ 'id' => 'bewpi-show-subtotal',
464
+ 'name' => $this->prefix . 'show_subtotal',
465
+ 'title' => '',
466
+ 'callback' => array( $this, 'input_callback' ),
467
+ 'page' => $this->settings_key,
468
+ 'section' => 'visible_columns',
469
+ 'type' => 'checkbox',
470
+ 'desc' => __( 'Subtotal', 'woocommerce-pdf-invoices' ),
471
+ 'class' => 'bewpi-checkbox-option-title',
472
+ 'default' => 1,
473
+ ),
474
+ array(
475
+ 'id' => 'bewpi-show-tax',
476
+ 'name' => $this->prefix . 'show_tax',
477
+ 'title' => '',
478
+ 'callback' => array( $this, 'input_callback' ),
479
+ 'page' => $this->settings_key,
480
+ 'section' => 'visible_columns',
481
+ 'type' => 'checkbox',
482
+ 'desc' => __( 'Tax (item)', 'woocommerce-pdf-invoices' ),
483
+ 'class' => 'bewpi-checkbox-option-title',
484
+ 'default' => 0,
485
+ ),
486
+ array(
487
+ 'id' => 'bewpi-show-tax-row',
488
+ 'name' => $this->prefix . 'show_tax_total',
489
+ 'title' => '',
490
+ 'callback' => array( $this, 'input_callback' ),
491
+ 'page' => $this->settings_key,
492
+ 'section' => 'visible_columns',
493
+ 'type' => 'checkbox',
494
+ 'desc' => __( 'Tax (total)', 'woocommerce-pdf-invoices' ),
495
+ 'class' => 'bewpi-checkbox-option-title',
496
+ 'default' => 1,
497
+ ),
498
+ array(
499
+ 'id' => 'bewpi-show-discount',
500
+ 'name' => $this->prefix . 'show_discount',
501
+ 'title' => '',
502
+ 'callback' => array( $this, 'input_callback' ),
503
+ 'page' => $this->settings_key,
504
+ 'section' => 'visible_columns',
505
+ 'type' => 'checkbox',
506
+ 'desc' => __( 'Discount', 'woocommerce-pdf-invoices' ),
507
+ 'class' => 'bewpi-checkbox-option-title',
508
+ 'default' => 1,
509
+ ),
510
+ array(
511
+ 'id' => 'bewpi-show-shipping',
512
+ 'name' => $this->prefix . 'show_shipping',
513
+ 'title' => '',
514
+ 'callback' => array( $this, 'input_callback' ),
515
+ 'page' => $this->settings_key,
516
+ 'section' => 'visible_columns',
517
+ 'type' => 'checkbox',
518
+ 'desc' => __( 'Shipping', 'woocommerce-pdf-invoices' ),
519
+ 'class' => 'bewpi-checkbox-option-title',
520
+ 'default' => 1,
521
+ ),
522
+ );
523
+
524
+ return apply_filters( 'wpi_template_settings', $settings, $this );
525
+ }
526
+
527
+ /**
528
+ * Sanitize settings.
529
+ *
530
+ * @param array $input form settings.
531
+ *
532
+ * @return mixed|void
533
+ */
534
+ public function sanitize( $input ) {
535
+ $output = get_option( $this->settings_key );
536
+
537
+ foreach ( $output as $key => $value ) {
538
+ if ( ! isset( $input[ $key ] ) ) {
539
+ $output[ $key ] = is_array( $output[ $key ] ) ? array() : '';
540
+ continue;
541
+ }
542
+
543
+ if ( is_array( $output[ $key ] ) ) {
544
+ $output[ $key ] = $input[ $key ];
545
+ continue;
546
+ }
547
+
548
+ if ( 'bewpi_company_logo' === $key ) {
549
+ continue;
550
+ }
551
+
552
+ // strip all html and php tags and properly handle quoted strings.
553
+ $output[ $key ] = $this->strip_str( stripslashes( $input[ $key ] ) );
554
+ }
555
+
556
+ if ( isset( $input['bewpi_company_logo'] ) && ! empty( $input['bewpi_company_logo'] ) ) {
557
+ $image_url = $this->validate_image( $input['bewpi_company_logo'] );
558
+ if ( $image_url ) {
559
+ $output['bewpi_company_logo'] = $image_url;
560
+ } else {
561
+ add_settings_error(
562
+ esc_attr( $this->settings_key ),
563
+ 'file-not-found',
564
+ __( 'Company logo not found. Upload the image to the Media Library and try again.', 'woocommerce-pdf-invoices' )
565
+ );
566
+ }
567
+ }
568
+
569
+ if ( isset( $input['bewpi_reset_counter'] ) && $input['bewpi_reset_counter'] ) {
570
+ set_transient( 'bewpi_next_invoice_number', intval( $input['bewpi_next_invoice_number'] ) );
571
+ }
572
+
573
+ return apply_filters( 'bewpi_sanitized_' . $this->settings_key, $output, $input );
574
+ }
575
+
576
+ /**
577
+ * Validate image against modified urls and check for extension.
578
+ *
579
+ * @param string $image_url source url of the image.
580
+ *
581
+ * @return bool|string false or image url.
582
+ */
583
+ public function validate_image( $image_url ) {
584
+ $image_url = esc_url_raw( $image_url, array( 'http', 'https' ) );
585
+ $query = array(
586
+ 'post_type' => 'attachment',
587
+ 'fields' => 'ids',
588
+ 'meta_query' => array(
589
+ array(
590
+ 'key' => '_wp_attached_file',
591
+ 'value' => basename( $image_url ),
592
+ 'compare' => 'LIKE',
593
+ ),
594
+ )
595
+ );
596
+
597
+ $ids = get_posts( $query );
598
+ if ( count( $ids ) === 0 ) {
599
+ WPI()->logger()->error( sprintf( 'Image %s not found in post table.', basename( $image_url ) ) );
600
+
601
+ return false;
602
+ }
603
+
604
+ return wp_get_attachment_image_url( $ids[0], 'full' );
605
+ }
606
+
607
+ /**
608
+ * Sets template to default template when custom template has been deleted.
609
+ */
610
+ private function fix_deleted_custom_template() {
611
+ $options = get_option( $this->settings_key );
612
+ $templates = array_map( 'basename', WPI()->templater()->get_templates() );
613
+
614
+ // Check for deleted custom template.
615
+ if ( in_array( $options['bewpi_template_name'], $templates, true ) ) {
616
+ return;
617
+ }
618
+
619
+ $defaults = $this->get_defaults();
620
+ $options['bewpi_template_name'] = $defaults['bewpi_template_name'];
621
+ update_option( $this->settings_key, $options );
622
+ }
623
+ }
624
+ } // End if().
includes/admin/views/html-activation-notice.php CHANGED
@@ -1,17 +1,17 @@
1
- <?php
2
- /**
3
- * Activation admin notice
4
- *
5
- * Link to settings page.
6
- *
7
- * @author Bas Elbers
8
- * @category Admin
9
- * @package BE_WooCommerce_PDF_Invoices/Admin
10
- * @version 1.0.0
11
- */
12
-
13
- $settings_url = admin_url( 'admin.php?page=bewpi-invoices' );
14
- ?>
15
- <div class="updated notice notice-success is-dismissible" data-dismissible="activation-forever">
16
- <p><?php printf( __( 'The settings of WooCommerce PDF Invoices are available <a href="%1$s">on this page</a>.', 'woocommerce-pdf-invoices' ), $settings_url ); ?></p>
17
- </div>
1
+ <?php
2
+ /**
3
+ * Activation admin notice
4
+ *
5
+ * Link to settings page.
6
+ *
7
+ * @author Bas Elbers
8
+ * @category Admin
9
+ * @package BE_WooCommerce_PDF_Invoices/Admin
10
+ * @version 1.0.0
11
+ */
12
+
13
+ $settings_url = admin_url( 'admin.php?page=bewpi-invoices' );
14
+ ?>
15
+ <div class="updated notice notice-success is-dismissible" data-dismissible="activation-forever">
16
+ <p><?php printf( __( 'The settings of WooCommerce PDF Invoices are available <a href="%1$s">on this page</a>.', 'woocommerce-pdf-invoices' ), $settings_url ); ?></p>
17
+ </div>
includes/admin/views/html-deactivation-notice.php CHANGED
@@ -1,20 +1,20 @@
1
- <?php
2
- /**
3
- * Deactivation admin notice
4
- *
5
- * Link to settings page.
6
- *
7
- * @author Bas Elbers
8
- * @category Admin
9
- * @package BE_WooCommerce_PDF_Invoices/Admin
10
- * @version 1.0.0
11
- */
12
-
13
- $reason_deactivation_url = 'http://wcpdfinvoices.com/what-made-you-deactivate';
14
- global $status, $page, $s;
15
- $bewpi_plugin_file = basename( dirname( BEWPI_FILE ) ) . '/' . basename( BEWPI_FILE );
16
- $deactivate_url = wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $bewpi_plugin_file . '&amp;plugin_status=' . $status . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $bewpi_plugin_file );
17
- ?>
18
- <div class="notice inline notice-alt notice-warning">
19
- <p><?php printf( __( 'Before we deactivate WooCommerce PDF Invoices, would you care to <a href="%1$s" target="_blank">let us know why</a> so we can improve it for you? <a href="%2$s">No, deactivate now</a>.', 'woocommerce-pdf-invoices' ), $reason_deactivation_url, $deactivate_url ); ?></p>
20
- </div>
1
+ <?php
2
+ /**
3
+ * Deactivation admin notice
4
+ *
5
+ * Link to settings page.
6
+ *
7
+ * @author Bas Elbers
8
+ * @category Admin
9
+ * @package BE_WooCommerce_PDF_Invoices/Admin
10
+ * @version 1.0.0
11
+ */
12
+
13
+ $reason_deactivation_url = 'http://wcpdfinvoices.com/what-made-you-deactivate';
14
+ global $status, $page, $s;
15
+ $bewpi_plugin_file = basename( dirname( BEWPI_FILE ) ) . '/' . basename( BEWPI_FILE );
16
+ $deactivate_url = wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $bewpi_plugin_file . '&amp;plugin_status=' . $status . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $bewpi_plugin_file );
17
+ ?>
18
+ <div class="notice inline notice-alt notice-warning">
19
+ <p><?php printf( __( 'Before we deactivate WooCommerce PDF Invoices, would you care to <a href="%1$s" target="_blank">let us know why</a> so we can improve it for you? <a href="%2$s">No, deactivate now</a>.', 'woocommerce-pdf-invoices' ), $reason_deactivation_url, $deactivate_url ); ?></p>
20
+ </div>
includes/admin/views/html-multiple-checkbox-setting.php CHANGED
@@ -1,33 +1,33 @@
1
- <?php
2
- /**
3
- * Multiple checkbox setting.
4
- *
5
- * Callback html for multiple checkbox setting.
6
- *
7
- * @author Bas Elbers
8
- * @category Admin
9
- * @package BE_WooCommerce_PDF_Invoices/Admin
10
- * @version 1.0.0
11
- */
12
-
13
- $page_options = get_option( $args['page'] );
14
- $options = $page_options[ $args['name'] ];
15
- ?>
16
- <ul id="<?php echo esc_html( $args['id'] ); ?>">
17
- <?php
18
- foreach ( $args['options'] as $arg ) {
19
- $name = sprintf( '%1$s[%2$s][]', $args['page'], $args['name'] );
20
- $checked = in_array( $args['value'], $options, true );
21
- ?>
22
- <li>
23
- <input type="hidden" name="<?php echo esc_attr( $name ); ?>" value="0" />
24
- <input id="<?php echo $arg['value']; ?>" type="checkbox" name="<?php echo esc_attr( $name ); ?>" value="1" <?php checked( $options[ $arg['value'] ], 1 ); ?> />
25
- <label for="<?php echo $arg['value']; ?>"">
26
- <?php echo esc_html( $arg['name'] ); ?>
27
- </label>
28
- </li>
29
- <?php } ?>
30
- </ul>
31
- <div class="bewpi-notes">
32
- <?php echo $args['desc']; ?>
33
- </div>
1
+ <?php
2
+ /**
3
+ * Multiple checkbox setting.
4
+ *
5
+ * Callback html for multiple checkbox setting.
6
+ *
7
+ * @author Bas Elbers
8
+ * @category Admin
9
+ * @package BE_WooCommerce_PDF_Invoices/Admin
10
+ * @version 1.0.0
11
+ */
12
+
13
+ $page_options = get_option( $args['page'] );
14
+ $options = $page_options[ $args['name'] ];
15
+ ?>
16
+ <ul id="<?php echo esc_html( $args['id'] ); ?>">
17
+ <?php
18
+ foreach ( $args['options'] as $arg ) {
19
+ $name = sprintf( '%1$s[%2$s][]', $args['page'], $args['name'] );
20
+ $checked = in_array( $args['value'], $options, true );
21
+ ?>
22
+ <li>
23
+ <input type="hidden" name="<?php echo esc_attr( $name ); ?>" value="0" />
24
+ <input id="<?php echo $arg['value']; ?>" type="checkbox" name="<?php echo esc_attr( $name ); ?>" value="1" <?php checked( $options[ $arg['value'] ], 1 ); ?> />
25
+ <label for="<?php echo $arg['value']; ?>"">
26
+ <?php echo esc_html( $arg['name'] ); ?>
27
+ </label>
28
+ </li>
29
+ <?php } ?>
30
+ </ul>
31
+ <div class="bewpi-notes">
32
+ <?php echo $args['desc']; ?>
33
+ </div>
includes/admin/views/html-order-page-pdf-invoice-meta-box.php CHANGED
@@ -1,21 +1,21 @@
1
- <?php
2
- /**
3
- * PDF Invoice meta box information on order page.
4
- *
5
- * @author Bas Elbers
6
- * @category Admin
7
- * @package BE_WooCommerce_PDF_Invoices/Admin
8
- * @version 1.0.0
9
- */
10
-
11
- ?>
12
- <table class="order-page-meta-box pdf-invoice wpi">
13
- <?php
14
- foreach ( $details as $item ) {
15
- printf( '<tr>' );
16
- printf( '<td>%s</td>', $item['title'] );
17
- printf( '<td>%s</td>', $item['value'] );
18
- printf( '</tr>' );
19
- }
20
- ?>
21
- </table>
1
+ <?php
2
+ /**
3
+ * PDF Invoice meta box information on order page.
4
+ *
5
+ * @author Bas Elbers
6
+ * @category Admin
7
+ * @package BE_WooCommerce_PDF_Invoices/Admin
8
+ * @version 1.0.0
9
+ */
10
+
11
+ ?>
12
+ <table class="order-page-meta-box pdf-invoice wpi">
13
+ <?php
14
+ foreach ( $details as $item ) {
15
+ printf( '<tr>' );
16
+ printf( '<td>%s</td>', $item['title'] );
17
+ printf( '<td>%s</td>', $item['value'] );
18
+ printf( '</tr>' );
19
+ }
20
+ ?>
21
+ </table>
includes/admin/views/html-rate-notice.php CHANGED
@@ -1,19 +1,19 @@
1
- <?php
2
- /**
3
- * Rate notice
4
- *
5
- * Ask user to rate the plugin on wordpress.org
6
- *
7
- * @author Bas Elbers
8
- * @category Admin
9
- * @package BE_WooCommerce_PDF_Invoices/Admin
10
- * @version 1.0.0
11
- */
12
-
13
- $current_user = wp_get_current_user();
14
- $user_firstname = ! empty( $current_user->user_firstname ) ? ' ' . $current_user->user_firstname : '';
15
- $rate_url = 'https://wordpress.org/support/view/plugin-reviews/woocommerce-pdf-invoices?rate=5#postform';
16
- ?>
17
- <div class="updated notice notice-success is-dismissible">
18
- <p><?php printf( __( 'Hi%1$s! You\'re using <b>WooCommerce PDF Invoices</b> for some time now and we would appreciate your <a href="%2$s" target="_blank">★★★★★</a> rating. It will support future development big-time.', 'woocommerce-pdf-invoices' ), esc_html( $user_firstname ), $rate_url ); ?></p>
19
- </div>
1
+ <?php
2
+ /**
3
+ * Rate notice
4
+ *
5
+ * Ask user to rate the plugin on wordpress.org
6
+ *
7
+ * @author Bas Elbers
8
+ * @category Admin
9
+ * @package BE_WooCommerce_PDF_Invoices/Admin
10
+ * @version 1.0.0
11
+ */
12
+
13
+ $current_user = wp_get_current_user();
14
+ $user_firstname = ! empty( $current_user->user_firstname ) ? ' ' . $current_user->user_firstname : '';
15
+ $rate_url = 'https://wordpress.org/support/view/plugin-reviews/woocommerce-pdf-invoices?rate=5#postform';
16
+ ?>
17
+ <div class="updated notice notice-success is-dismissible">
18
+ <p><?php printf( __( 'Hi%1$s! You\'re using <b>WooCommerce PDF Invoices</b> for some time now and we would appreciate your <a href="%2$s" target="_blank">★★★★★</a> rating. It will support future development big-time.', 'woocommerce-pdf-invoices' ), esc_html( $user_firstname ), $rate_url ); ?></p>
19
+ </div>
includes/admin/views/html-sidebar.php CHANGED
@@ -1,99 +1,99 @@
1
- <aside class="bewpi-sidebar premium">
2
- <h3><?php _e( 'WooCommerce PDF Invoices Premium', 'woocommerce-pdf-invoices' ); ?></h3>
3
- <p>
4
- <?php _e( 'This plugin offers a premium version which comes with the following features:', 'woocommerce-pdf-invoices' ); ?><br/>
5
- - <?php _e( 'Attach PDF invoices to many more email types including third party plugins.', 'woocommerce-pdf-invoices' ); ?><br/>
6
- - <?php _e( 'Send credit notes and cancelled PDF invoices when refunding or cancelling order.', 'woocommerce-pdf-invoices' ); ?><br/>
7
- - <?php _e( 'Fully customize the table content by modifying line item columns and total rows.', 'woocommerce-pdf-invoices' ); ?><br/>
8
- - <?php _e( 'Automatically send PDF invoices as a reminder configurable within a specific period of time.', 'woocommerce-pdf-invoices' ); ?><br/>
9
- - <?php _e( 'Let customers decide if they would like to get a PDF invoice on checkout.', 'woocommerce-pdf-invoices' ); ?><br/>
10
- - <?php _e( 'Change the font of the PDF invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
11
-
12
- - <?php _e( 'Generate PDF invoices in multiple languages (WPML and Polylang compatible).', 'woocommerce-pdf-invoices' ); ?><br/>
13
- - <?php _e( 'Bulk generate PDF invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
14
- - <?php _e( 'Bulk export and/or download PDF invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
15
- - <?php _e( 'Bill periodically by generating and sending global invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
16
- - <?php _e( 'Add additional PDF\'s to PDF invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
17
- - <?php _e( 'Send PDF invoices to multiple recipients.', 'woocommerce-pdf-invoices' ); ?><br/>
18
- - <?php printf( __( 'Attach invoices to <a href="%s">WooCommerce Subscriptions</a> emails.', 'woocommerce-pdf-invoices' ), "http://www.woothemes.com/products/woocommerce-subscriptions/" ); ?><br/>
19
- </p>
20
- <a class="bewpi-learn-more" href="http://wcpdfinvoices.com" target="_blank"><?php _e ( 'Learn more', 'woocommerce-pdf-invoices' ); ?></a>
21
- </aside>
22
- <aside class="bewpi-sidebar premium">
23
- <h3><?php _e( 'Stay up-to-date', 'woocommerce-pdf-invoices' ); ?></h3>
24
- <!-- Begin MailChimp Signup Form -->
25
- <link href="//cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
26
- <p>
27
- <?php _e( 'We\'re constantly developing new features, stay up-to-date by subscribing to our newsletter.', 'woocommerce-pdf-invoices' ); ?>
28
- </p>
29
- <div id="bewpi-mc-embed-signup">
30
- <form action="//wcpdfinvoices.us11.list-manage.com/subscribe/post?u=f270649bc41a9687a38a8977f&amp;id=395e1e319a" method="post" id="bewpi-mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate style="padding: 0">
31
- <div id="bewpi-mc-embed-signup-scroll">
32
- <?php $user_email = get_the_author_meta( 'user_email', get_current_user_id() ) ?>
33
- <input type="email" value="<?php if( $user_email !== "" ) echo $user_email; ?>" name="EMAIL" class="email" id="bewpi-mce-EMAIL" placeholder="<?php _e( 'Your email address', 'woocommerce-pdf-invoices' ); ?>" required>
34
- <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
35
- <div style="position: absolute; left: -5000px;">
36
- <input type="text" name="b_f270649bc41a9687a38a8977f_395e1e319a" tabindex="-1" value="">
37
- </div>
38
- <div class="clear">
39
- <input style="" type="submit" value="<?php _e( 'Signup', 'woocommerce-pdf-invoices' ); ?>" name="subscribe" id="bewpi-mc-embedded-subscribe" class="button">
40
- </div>
41
- <div class="bewpi-no-spam">
42
- <?php _e( 'No spam, ever. Unsubscribe at any time', 'woocommerce-pdf-invoices' ); ?>
43
- </div>
44
- </div>
45
- </form>
46
- </div>
47
- <!--End mc_embed_signup-->
48
- </aside>
49
-
50
- <aside class="bewpi-sidebar about">
51
- <h3><?php _e( 'About', 'woocommerce-pdf-invoices' ); ?></h3>
52
- <p>
53
- <?php _e( 'This plugin is an open source project wich aims to fill the invoicing gap of <a href="http://www.woothemes.com/woocommerce">WooCommerce</a>.' , 'woocommerce-pdf-invoices' ); ?>
54
- </p>
55
- <?php
56
- echo '<b>' . sprintf( __( 'Version: %s', 'woocommerce-pdf-invoices' ), WPI_VERSION ) . '</b>';
57
- printf( '<br>' );
58
- echo '<b>' . sprintf( __( 'Author: %s', 'woocommerce-pdf-invoices' ), '<a href="https://github.com/baselbers">Bas Elbers</a>' ) . '</b>';
59
- ?>
60
- </aside>
61
- <aside class="bewpi-sidebar support">
62
- <h3><?php _e( 'Support', 'woocommerce-pdf-invoices' ); ?></h3>
63
- <p>
64
- <?php printf( __( 'We will never ask for donations, but to guarantee future development, we do need your support. Please show us your appreciation by leaving a <a href="%1$s">★★★★★</a> rating and vote for <a href="%2$s">works</a>.', 'woocommerce-pdf-invoices' ), 'https://wordpress.org/support/view/plugin-reviews/woocommerce-pdf-invoices?rate=5#postform', 'https://wordpress.org/plugins/woocommerce-pdf-invoices/' ); ?>
65
- </p>
66
- <!-- Github star -->
67
- <div class="github btn">
68
- <iframe src="https://ghbtns.com/github-btn.html?user=baselbers&repo=woocommerce-pdf-invoices&type=star&count=true" frameborder="0" scrolling="0" width="170px" height="20px"></iframe>
69
- </div>
70
- <!-- FB share -->
71
- <div id="fb-root"></div>
72
- <div class="btn">
73
- <script>
74
- (function(d, s, id) {
75
- var js, fjs = d.getElementsByTagName(s)[0];
76
- if (d.getElementById(id)) return;
77
- js = d.createElement(s); js.id = id;
78
- js.src = "//connect.facebook.net/<?php echo get_locale(); ?>/sdk.js#xfbml=1&version=v2.9";
79
- fjs.parentNode.insertBefore(js, fjs);
80
- }(document, 'script', 'facebook-jssdk'));
81
- </script>
82
- <div class="fb-share-button" data-href="https://wordpress.org/plugins/woocommerce-pdf-invoices/" data-layout="button_count" data-size="small" data-mobile-iframe="true">
83
- <a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fplugins%2F&amp;src=sdkpreparse"></a>
84
- </div>
85
- </div>
86
- <!-- Tweet -->
87
- <div class="twitter btn">
88
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="https://wordpress.org/plugins/woocommerce-pdf-invoices/" data-text="<?php _e( 'Checkout this amazing free WooCommerce PDF Invoices plugin for WordPress!', 'woocommerce-pdf-invoices' ); ?>">Tweet</a>
89
- <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
90
- </div>
91
- </aside>
92
- <aside class="bewpi-sidebar need-help">
93
- <h3><?php _e( 'Need Help?', 'woocommerce-pdf-invoices' ); ?></h3>
94
- <ul>
95
- <li><a href="https://wordpress.org/plugins/woocommerce-pdf-invoices/faq/"><?php _e( 'Frequently Asked Questions', 'woocommerce-pdf-invoices' ); ?> </a></li>
96
- <li><a href="https://wordpress.org/support/plugin/woocommerce-pdf-invoices"><?php _e( 'Support forum', 'woocommerce-pdf-invoices' ); ?></a></li>
97
- <li><a href="https://wordpress.org/support/plugin/woocommerce-pdf-invoices"><?php _e( 'Request a feature', 'woocommerce-pdf-invoices' ); ?></a></li>
98
- </ul>
99
  </aside>
1
+ <aside class="bewpi-sidebar premium">
2
+ <h3><?php _e( 'WooCommerce PDF Invoices Premium', 'woocommerce-pdf-invoices' ); ?></h3>
3
+ <p>
4
+ <?php _e( 'This plugin offers a premium version which comes with the following features:', 'woocommerce-pdf-invoices' ); ?><br/>
5
+ - <?php _e( 'Attach PDF invoices to many more email types including third party plugins.', 'woocommerce-pdf-invoices' ); ?><br/>
6
+ - <?php _e( 'Send credit notes and cancelled PDF invoices when refunding or cancelling order.', 'woocommerce-pdf-invoices' ); ?><br/>
7
+ - <?php _e( 'Fully customize the table content by modifying line item columns and total rows.', 'woocommerce-pdf-invoices' ); ?><br/>
8
+ - <?php _e( 'Automatically send PDF invoices as a reminder configurable within a specific period of time.', 'woocommerce-pdf-invoices' ); ?><br/>
9
+ - <?php _e( 'Let customers decide if they would like to get a PDF invoice on checkout.', 'woocommerce-pdf-invoices' ); ?><br/>
10
+ - <?php _e( 'Change the font of the PDF invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
11
+
12
+ - <?php _e( 'Generate PDF invoices in multiple languages (WPML and Polylang compatible).', 'woocommerce-pdf-invoices' ); ?><br/>
13
+ - <?php _e( 'Bulk generate PDF invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
14
+ - <?php _e( 'Bulk export and/or download PDF invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
15
+ - <?php _e( 'Bill periodically by generating and sending global invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
16
+ - <?php _e( 'Add additional PDF\'s to PDF invoices.', 'woocommerce-pdf-invoices' ); ?><br/>
17
+ - <?php _e( 'Send PDF invoices to multiple recipients.', 'woocommerce-pdf-invoices' ); ?><br/>
18
+ - <?php printf( __( 'Attach invoices to <a href="%s">WooCommerce Subscriptions</a> emails.', 'woocommerce-pdf-invoices' ), "http://www.woothemes.com/products/woocommerce-subscriptions/" ); ?><br/>
19
+ </p>
20
+ <a class="bewpi-learn-more" href="http://wcpdfinvoices.com" target="_blank"><?php _e ( 'Learn more', 'woocommerce-pdf-invoices' ); ?></a>
21
+ </aside>
22
+ <aside class="bewpi-sidebar premium">
23
+ <h3><?php _e( 'Stay up-to-date', 'woocommerce-pdf-invoices' ); ?></h3>
24
+ <!-- Begin MailChimp Signup Form -->
25
+ <link href="//cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
26
+ <p>
27
+ <?php _e( 'We\'re constantly developing new features, stay up-to-date by subscribing to our newsletter.', 'woocommerce-pdf-invoices' ); ?>
28
+ </p>
29
+ <div id="bewpi-mc-embed-signup">
30
+ <form action="//wcpdfinvoices.us11.list-manage.com/subscribe/post?u=f270649bc41a9687a38a8977f&amp;id=395e1e319a" method="post" id="bewpi-mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate style="padding: 0">
31
+ <div id="bewpi-mc-embed-signup-scroll">
32
+ <?php $user_email = get_the_author_meta( 'user_email', get_current_user_id() ) ?>
33
+ <input type="email" value="<?php if( $user_email !== "" ) echo $user_email; ?>" name="EMAIL" class="email" id="bewpi-mce-EMAIL" placeholder="<?php _e( 'Your email address', 'woocommerce-pdf-invoices' ); ?>" required>
34
+ <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
35
+ <div style="position: absolute; left: -5000px;">
36
+ <input type="text" name="b_f270649bc41a9687a38a8977f_395e1e319a" tabindex="-1" value="">
37
+ </div>
38
+ <div class="clear">
39
+ <input style="" type="submit" value="<?php _e( 'Signup', 'woocommerce-pdf-invoices' ); ?>" name="subscribe" id="bewpi-mc-embedded-subscribe" class="button">
40
+ </div>
41
+ <div class="bewpi-no-spam">
42
+ <?php _e( 'No spam, ever. Unsubscribe at any time', 'woocommerce-pdf-invoices' ); ?>
43
+ </div>
44
+ </div>
45
+ </form>
46
+ </div>
47
+ <!--End mc_embed_signup-->
48
+ </aside>
49
+
50
+ <aside class="bewpi-sidebar about">
51
+ <h3><?php _e( 'About', 'woocommerce-pdf-invoices' ); ?></h3>
52
+ <p>
53
+ <?php _e( 'This plugin is an open source project wich aims to fill the invoicing gap of <a href="http://www.woothemes.com/woocommerce">WooCommerce</a>.' , 'woocommerce-pdf-invoices' ); ?>
54
+ </p>
55
+ <?php
56
+ echo '<b>' . sprintf( __( 'Version: %s', 'woocommerce-pdf-invoices' ), WPI_VERSION ) . '</b>';
57
+ printf( '<br>' );
58
+ echo '<b>' . sprintf( __( 'Author: %s', 'woocommerce-pdf-invoices' ), '<a href="https://github.com/baselbers">Bas Elbers</a>' ) . '</b>';
59
+ ?>
60
+ </aside>
61
+ <aside class="bewpi-sidebar support">
62
+ <h3><?php _e( 'Support', 'woocommerce-pdf-invoices' ); ?></h3>
63
+ <p>
64
+ <?php printf( __( 'We will never ask for donations, but to guarantee future development, we do need your support. Please show us your appreciation by leaving a <a href="%1$s">★★★★★</a> rating and vote for <a href="%2$s">works</a>.', 'woocommerce-pdf-invoices' ), 'https://wordpress.org/support/view/plugin-reviews/woocommerce-pdf-invoices?rate=5#postform', 'https://wordpress.org/plugins/woocommerce-pdf-invoices/' ); ?>
65
+ </p>
66
+ <!-- Github star -->
67
+ <div class="github btn">
68
+ <iframe src="https://ghbtns.com/github-btn.html?user=baselbers&repo=woocommerce-pdf-invoices&type=star&count=true" frameborder="0" scrolling="0" width="170px" height="20px"></iframe>
69
+ </div>
70
+ <!-- FB share -->
71
+ <div id="fb-root"></div>
72
+ <div class="btn">
73
+ <script>
74
+ (function(d, s, id) {
75
+ var js, fjs = d.getElementsByTagName(s)[0];
76
+ if (d.getElementById(id)) return;
77
+ js = d.createElement(s); js.id = id;
78
+ js.src = "//connect.facebook.net/<?php echo get_locale(); ?>/sdk.js#xfbml=1&version=v2.9";
79
+ fjs.parentNode.insertBefore(js, fjs);
80
+ }(document, 'script', 'facebook-jssdk'));
81
+ </script>
82
+ <div class="fb-share-button" data-href="https://wordpress.org/plugins/woocommerce-pdf-invoices/" data-layout="button_count" data-size="small" data-mobile-iframe="true">
83
+ <a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fplugins%2F&amp;src=sdkpreparse"></a>
84
+ </div>
85
+ </div>
86
+ <!-- Tweet -->
87
+ <div class="twitter btn">
88
+ <a href="https://twitter.com/share" class="twitter-share-button" data-url="https://wordpress.org/plugins/woocommerce-pdf-invoices/" data-text="<?php _e( 'Checkout this amazing free WooCommerce PDF Invoices plugin for WordPress!', 'woocommerce-pdf-invoices' ); ?>">Tweet</a>
89
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
90
+ </div>
91
+ </aside>
92
+ <aside class="bewpi-sidebar need-help">
93
+ <h3><?php _e( 'Need Help?', 'woocommerce-pdf-invoices' ); ?></h3>
94
+ <ul>
95
+ <li><a href="https://wordpress.org/plugins/woocommerce-pdf-invoices/faq/"><?php _e( 'Frequently Asked Questions', 'woocommerce-pdf-invoices' ); ?> </a></li>
96
+ <li><a href="https://wordpress.org/support/plugin/woocommerce-pdf-invoices"><?php _e( 'Support forum', 'woocommerce-pdf-invoices' ); ?></a></li>
97
+ <li><a href="https://wordpress.org/support/plugin/woocommerce-pdf-invoices"><?php _e( 'Request a feature', 'woocommerce-pdf-invoices' ); ?></a></li>
98
+ </ul>
99
  </aside>
includes/class-debug-log.php CHANGED
@@ -1,178 +1,178 @@
1
- <?php
2
- /**
3
- * Simple logging class that writes to wp-content/debug.log file.
4
- *
5
- * @author Bas Elbers
6
- * @category Class
7
- * @package BE_WooCommerce_PDF_Invoices/Class
8
- * @version 0.0.1
9
- */
10
-
11
- defined( 'ABSPATH' ) or exit;
12
-
13
- if ( ! class_exists( 'BEWPI_Debug_Log' ) ) {
14
- /**
15
- * Class BEWPI_Debug_Log.
16
- */
17
- class BEWPI_Debug_Log {
18
-
19
- /** Main instance.
20
- *
21
- * @var BEWPI_Debug_Log The single instance of the class.
22
- */
23
- protected static $_instance = null;
24
-
25
- /**
26
- * Detailed debug information
27
- */
28
- const DEBUG = 100;
29
-
30
- /**
31
- * Interesting events
32
- *
33
- * Examples: Visitor subscribed
34
- */
35
- const INFO = 200;
36
-
37
- /**
38
- * Exceptional occurrences that are not errors
39
- *
40
- * Examples: User already subscribed
41
- */
42
- const WARNING = 300;
43
-
44
- /**
45
- * Runtime errors
46
- */
47
- const ERROR = 400;
48
-
49
- /**
50
- * Logging levels from syslog protocol defined in RFC 5424
51
- *
52
- * @var array $levels Logging levels
53
- */
54
- protected static $levels = array(
55
- self::DEBUG => 'DEBUG',
56
- self::INFO => 'INFO',
57
- self::WARNING => 'WARNING',
58
- self::ERROR => 'ERROR',
59
- );
60
-
61
- /**
62
- * Main BEWPI_Debug_Log Instance.
63
- *
64
- * Ensures only one instance of BEWPI_Debug_Log is loaded or can be loaded.
65
- *
66
- * @since 2.7.2
67
- * @static
68
- * @return BEWPI_Debug_Log Main instance
69
- */
70
- public static function instance() {
71
- if ( is_null( self::$_instance ) ) {
72
- self::$_instance = new self();
73
- }
74
-
75
- return self::$_instance;
76
- }
77
-
78
- /**
79
- * Log to wp-content/debug.log file.
80
- *
81
- * @param string $level Log level.
82
- * @param string $message Log message.
83
- *
84
- * @return bool true on success and false on failure.
85
- */
86
- private function log( $level, $message ) {
87
- $level = self::to_level( $level );
88
-
89
- // Generate line.
90
- $level_name = self::get_level_name( $level );
91
- $message = sprintf( 'WooCommerce PDF Invoices %s: %s', $level_name, $message );
92
-
93
- return error_log( $message );
94
- }
95
-
96
- /**
97
- * Log warning.
98
- *
99
- * @param string $message Log message.
100
- *
101
- * @return bool true on success and false on failure.
102
- */
103
- public function warning( $message ) {
104
- return $this->log( self::WARNING, $message );
105
- }
106
-
107
- /**
108
- * Log information.
109
- *
110
- * @param string $message Log message.
111
- *
112
- * @return bool true on success and false on failure.
113
- */
114
- public function info( $message ) {
115
- return $this->log( self::INFO, $message );
116
- }
117
-
118
- /**
119
- * Log error.
120
- *
121
- * @param string $message Log message.
122
- *
123
- * @return bool true on success and false on failure.
124
- */
125
- public function error( $message ) {
126
- return $this->log( self::ERROR, $message );
127
- }
128
-
129
- /**
130
- * Log debug information.
131
- *
132
- * @param string $message Log message.
133
- *
134
- * @return bool true on success and false on failure.
135
- */
136
- public function debug( $message ) {
137
- return $this->log( self::DEBUG, $message );
138
- }
139
-
140
- /**
141
- * Converts PSR-3 levels to local ones if necessary.
142
- *
143
- * @param string|int $level Level number or name (PSR-3).
144
- *
145
- * @return int
146
- */
147
- public static function to_level( $level ) {
148
-
149
- if ( is_string( $level ) ) {
150
-
151
- $level = strtoupper( $level );
152
- if ( defined( __CLASS__ . '::' . $level ) ) {
153
- return constant( __CLASS__ . '::' . $level );
154
- }
155
-
156
- throw new InvalidArgumentException( 'Level "' . $level . '" is not defined, use one of: ' . implode( ', ', array_keys( self::$levels ) ) );
157
- }
158
-
159
- return $level;
160
- }
161
-
162
- /**
163
- * Gets the name of the logging level.
164
- *
165
- * @param int $level Log level.
166
- *
167
- * @return string
168
- */
169
- public static function get_level_name( $level ) {
170
-
171
- if ( ! isset( self::$levels[ $level ] ) ) {
172
- throw new InvalidArgumentException( 'Level "' . $level . '" is not defined, use one of: ' . implode( ', ', array_keys( self::$levels ) ) );
173
- }
174
-
175
- return self::$levels[ $level ];
176
- }
177
- }
178
- }
1
+ <?php
2
+ /**
3
+ * Simple logging class that writes to wp-content/debug.log file.
4
+ *
5
+ * @author Bas Elbers
6
+ * @category Class
7
+ * @package BE_WooCommerce_PDF_Invoices/Class
8
+ * @version 0.0.1
9
+ */
10
+
11
+ defined( 'ABSPATH' ) or exit;
12
+
13
+ if ( ! class_exists( 'BEWPI_Debug_Log' ) ) {
14
+ /**
15
+ * Class BEWPI_Debug_Log.
16
+ */
17
+ class BEWPI_Debug_Log {
18
+
19
+ /** Main instance.
20
+ *
21
+ * @var BEWPI_Debug_Log The single instance of the class.
22
+ */
23
+ protected static $_instance = null;
24
+
25
+ /**
26
+ * Detailed debug information
27
+ */
28
+ const DEBUG = 100;
29
+
30
+ /**
31
+ * Interesting events
32
+ *
33
+ * Examples: Visitor subscribed
34
+ */
35
+ const INFO = 200;
36
+
37
+ /**
38
+ * Exceptional occurrences that are not errors
39
+ *
40
+ * Examples: User already subscribed
41
+ */
42
+ const WARNING = 300;
43
+
44
+ /**
45
+ * Runtime errors
46
+ */
47
+ const ERROR = 400;
48
+
49
+ /**
50
+ * Logging levels from syslog protocol defined in RFC 5424
51
+ *
52
+ * @var array $levels Logging levels
53
+ */
54
+ protected static $levels = array(
55
+ self::DEBUG => 'DEBUG',
56
+ self::INFO => 'INFO',
57
+ self::WARNING => 'WARNING',
58
+ self::ERROR => 'ERROR',
59
+ );
60
+
61
+ /**
62
+ * Main BEWPI_Debug_Log Instance.
63
+ *
64
+ * Ensures only one instance of BEWPI_Debug_Log is loaded or can be loaded.
65
+ *
66
+ * @since 2.7.2
67
+ * @static
68
+ * @return BEWPI_Debug_Log Main instance
69
+ */
70
+ public static function instance() {
71
+ if ( is_null( self::$_instance ) ) {
72
+ self::$_instance = new self();
73
+ }
74
+
75
+ return self::$_instance;
76
+ }
77
+
78
+ /**
79
+ * Log to wp-content/debug.log file.
80
+ *
81
+ * @param string $level Log level.
82
+ * @param string $message Log message.
83
+ *
84
+ * @return bool true on success and false on failure.
85
+ */
86
+ private function log( $level, $message ) {
87
+ $level = self::to_level( $level );
88
+
89
+ // Generate line.
90
+ $level_name = self::get_level_name( $level );
91
+ $message = sprintf( 'WooCommerce PDF Invoices %s: %s', $level_name, $message );
92
+
93
+ return error_log( $message );
94
+ }
95
+
96
+ /**
97
+ * Log warning.
98
+ *
99
+ * @param string $message Log message.
100
+ *
101
+ * @return bool true on success and false on failure.
102
+ */
103
+ public function warning( $message ) {
104
+ return $this->log( self::WARNING, $message );
105
+ }
106
+
107
+ /**
108
+ * Log information.
109
+ *
110
+ * @param string $message Log message.
111
+ *
112
+ * @return bool true on success and false on failure.
113
+ */
114
+ public function info( $message ) {
115
+ return $this->log( self::INFO, $message );
116
+ }
117
+
118
+ /**
119
+ * Log error.
120
+ *
121
+ * @param string $message Log message.
122
+ *
123
+ * @return bool true on success and false on failure.
124
+ */
125
+ public function error( $message ) {
126
+ return $this->log( self::ERROR, $message );
127
+ }
128
+
129
+ /**
130
+ * Log debug information.
131
+ *
132
+ * @param string $message Log message.
133
+ *
134
+ * @return bool true on success and false on failure.
135
+ */
136
+ public function debug( $message ) {
137
+ return $this->log( self::DEBUG, $message );
138
+ }
139
+
140
+ /**
141
+ * Converts PSR-3 levels to local ones if necessary.
142
+ *
143
+ * @param string|int $level Level number or name (PSR-3).
144
+ *
145
+ * @return int
146
+ */
147
+ public static function to_level( $level ) {
148
+
149
+ if ( is_string( $level ) ) {
150
+
151
+ $level = strtoupper( $level );
152
+ if ( defined( __CLASS__ . '::' . $level ) ) {
153
+ return constant( __CLASS__ . '::' . $level );
154
+ }
155
+
156
+ throw new InvalidArgumentException( 'Level "' . $level . '" is not defined, use one of: ' . implode( ', ', array_keys( self::$levels ) ) );
157
+ }
158
+
159
+ return $level;
160
+ }
161
+
162
+ /**
163
+ * Gets the name of the logging level.
164
+ *
165
+ * @param int $level Log level.
166
+ *
167
+ * @return string
168
+ */
169
+ public static function get_level_name( $level ) {
170
+
171
+ if ( ! isset( self::$levels[ $level ] ) ) {
172
+ throw new InvalidArgumentException( 'Level "' . $level . '" is not defined, use one of: ' . implode( ', ', array_keys( self::$levels ) ) );
173
+ }
174
+
175
+ return self::$levels[ $level ];
176
+ }
177
+ }
178
+ }
includes/class-invoice.php CHANGED
@@ -1,189 +1,189 @@
1
- <?php
2
- /**
3
- * Invoice class.
4
- *
5
- * Handling invoice specific functionality.
6
- *
7
- * @author Bas Elbers
8
- * @category Class
9
- * @package BE_WooCommerce_PDF_Invoices/Class
10
- * @version 2.5.4
11
- */
12
-
13
- defined( 'ABSPATH' ) or exit;
14
-
15
- if ( ! class_exists( 'BEWPI_Invoice' ) ) {
16
- /**
17
- * Class BEWPI_Invoice.
18
- */
19
- class BEWPI_Invoice extends BEWPI_Abstract_Invoice {
20
- /**
21
- * BEWPI_Invoice constructor.
22
- *
23
- * @param int $order_id WooCommerce Order ID.
24
- */
25
- public function __construct( $order_id ) {
26
- $this->order = wc_get_order( $order_id );
27
- $this->type = 'invoice/simple';
28
- WPI()->templater()->set_invoice( $this );
29
- parent::__construct( $order_id );
30
- }
31
-
32
- /**
33
- * Initialize hooks.
34
- */
35
- public static function init_hooks() {
36
- if ( is_admin() ) {
37
- self::admin_init_hooks();
38
- }
39
- }
40
-
41
- /**
42
- * Initialize admin hooks.
43
- */
44
- private static function admin_init_hooks() {
45
- // Delete PDF invoice file and data when deleting order.
46
- add_action( 'wp_trash_post', array( __CLASS__, 'delete' ) );
47
- add_action( 'before_delete_post', array( __CLASS__, 'delete' ) );
48
- }
49
-
50
- /**
51
- * Delete invoice file and data to prevent invoice number conflicts.
52
- *
53
- * @param int $post_id WordPress post ID.
54
- */
55
- public static function delete( $post_id ) {
56
- if ( 'shop_order' !== get_post_type( $post_id ) ) {
57
- return;
58
- }
59
-
60
- parent::delete( $post_id );
61
- }
62
-
63
- /**
64
- * Check if PDF invoice is sent to client.
65
- *
66
- * @since 2.9.4
67
- * @return bool
68
- */
69
- public function is_sent() {
70
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
71
- $is_sent = get_post_meta( $order_id, 'bewpi_pdf_invoice_sent', true );
72
-
73
- // Backporting.
74
- if ( false === $is_sent ) {
75
- return true;
76
- }
77
-
78
- return 1 === absint( $is_sent ) ? true : false;
79
- }
80
-
81
- /**
82
- * Get invoice number type.
83
- *
84
- * @return string
85
- */
86
- public static function get_number_type() {
87
- $number_type = WPI()->get_option( 'template', 'invoice_number_type' );
88
-
89
- return (string) $number_type;
90
- }
91
-
92
- /**
93
- * Get invoice details.
94
- */
95
- public function get_invoice_info() {
96
-
97
- return apply_filters( 'wpi_invoice_information_meta', array(
98
- 'invoice_number' => array(
99
- 'title' => __( 'Invoice #:', 'woocommerce-pdf-invoices' ),
100
- 'value' => $this->get_formatted_number(),
101
- ),
102
- 'invoice_date' => array(
103
- 'title' => __( 'Invoice Date:', 'woocommerce-pdf-invoices' ),
104
- 'value' => $this->get_formatted_date(),
105
- ),
106
- 'order_date' => array(
107
- 'title' => __( 'Order Date:', 'woocommerce-pdf-invoices' ),
108
- 'value' => $this->get_formatted_order_date(),
109
- ),
110
- 'order_number' => array(
111
- 'title' => __( 'Order Number:', 'woocommerce-pdf-invoices' ),
112
- 'value' => $this->order->get_order_number(),
113
- ),
114
- 'payment_method' => array(
115
- 'title' => __( 'Payment Method:', 'woocommerce-pdf-invoices' ),
116
- 'value' => $this->order->get_payment_method_title(),
117
- ),
118
- ), $this );
119
- }
120
-
121
- /**
122
- * Formatted custom order subtotal.
123
- * Shipping including or excluding tax.
124
- *
125
- * @deprecated No longer used within template files. Custom templates should be replaced.
126
- *
127
- * @return string
128
- */
129
- public function get_formatted_subtotal() {
130
- $subtotal = $this->order->get_subtotal();
131
-
132
- // add shipping to subtotal if shipping is taxable.
133
- if ( (bool) $this->template_options['bewpi_shipping_taxable'] ) {
134
- $subtotal += $this->order->get_total_shipping();
135
- }
136
-
137
- $subtotal -= $this->order->get_total_discount();
138
- return wc_price( $subtotal, array( 'currency' => $this->order->get_order_currency() ) );
139
- }
140
-
141
- /**
142
- * Formatted custom order total.
143
- *
144
- * @deprecated No longer used within template files. Custom templates should be replaced.
145
- *
146
- * @return string
147
- */
148
- public function get_formatted_total() {
149
- if ( $this->order->get_total_refunded() > 0 ) {
150
- return '<del class="total-without-refund">' . wc_price( $this->order->get_total(), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> <ins>' . wc_price( $this->order->get_total() - $this->order->get_total_refunded(), array( 'currency' => $this->order->get_order_currency() ) ) . '</ins>';
151
- }
152
-
153
- return $this->order->get_formatted_order_total();
154
- }
155
-
156
- /**
157
- * Custom order total.
158
- *
159
- * @deprecated No longer used within template files. Custom templates should be replaced.
160
- * @return string
161
- */
162
- public function get_total() {
163
- if ( $this->order->get_total_refunded() > 0 ) {
164
- $total_after_refund = $this->order->get_total() - $this->order->get_total_refunded();
165
- return '<del class="total-without-refund">' . wc_price( $this->order->get_total(), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> <ins>' . wc_price( $total_after_refund, array( 'currency' => $this->order->get_order_currency() ) ) . '</ins>';
166
- }
167
-
168
- return $this->order->get_formatted_order_total();
169
- }
170
-
171
- /**
172
- * Custom order subtotal.
173
- *
174
- * @deprecated No longer used within template files. Custom templates should be replaced.
175
- * @return float|mixed|void
176
- */
177
- public function get_subtotal() {
178
- $subtotal = $this->order->get_subtotal();
179
-
180
- if ( (bool) $this->template_options['bewpi_shipping_taxable'] ) {
181
- $subtotal += $this->order->get_total_shipping();
182
- }
183
-
184
- $subtotal -= $this->order->get_total_discount();
185
-
186
- return $subtotal;
187
- }
188
- }
189
- }
1
+ <?php
2
+ /**
3
+ * Invoice class.
4
+ *
5
+ * Handling invoice specific functionality.
6
+ *
7
+ * @author Bas Elbers
8
+ * @category Class
9
+ * @package BE_WooCommerce_PDF_Invoices/Class
10
+ * @version 2.5.4
11
+ */
12
+
13
+ defined( 'ABSPATH' ) or exit;
14
+
15
+ if ( ! class_exists( 'BEWPI_Invoice' ) ) {
16
+ /**
17
+ * Class BEWPI_Invoice.
18
+ */
19
+ class BEWPI_Invoice extends BEWPI_Abstract_Invoice {
20
+ /**
21
+ * BEWPI_Invoice constructor.
22
+ *
23
+ * @param int $order_id WooCommerce Order ID.
24
+ */
25
+ public function __construct( $order_id ) {
26
+ $this->order = wc_get_order( $order_id );
27
+ $this->type = 'invoice/simple';
28
+ WPI()->templater()->set_invoice( $this );
29
+ parent::__construct( $order_id );
30
+ }
31
+
32
+ /**
33
+ * Initialize hooks.
34
+ */
35
+ public static function init_hooks() {
36
+ if ( is_admin() ) {
37
+ self::admin_init_hooks();
38
+ }
39
+ }
40
+
41
+ /**
42
+ * Initialize admin hooks.
43
+ */
44
+ private static function admin_init_hooks() {
45
+ // Delete PDF invoice file and data when deleting order.
46
+ add_action( 'wp_trash_post', array( __CLASS__, 'delete' ) );
47
+ add_action( 'before_delete_post', array( __CLASS__, 'delete' ) );
48
+ }
49
+
50
+ /**
51
+ * Delete invoice file and data to prevent invoice number conflicts.
52
+ *
53
+ * @param int $post_id WordPress post ID.
54
+ */
55
+ public static function delete( $post_id ) {
56
+ if ( 'shop_order' !== get_post_type( $post_id ) ) {
57
+ return;
58
+ }
59
+
60
+ parent::delete( $post_id );
61
+ }
62
+
63
+ /**
64
+ * Check if PDF invoice is sent to client.
65
+ *
66
+ * @since 2.9.4
67
+ * @return bool
68
+ */
69
+ public function is_sent() {
70
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
71
+ $is_sent = get_post_meta( $order_id, 'bewpi_pdf_invoice_sent', true );
72
+
73
+ // Backporting.
74
+ if ( false === $is_sent ) {
75
+ return true;
76
+ }
77
+
78
+ return 1 === absint( $is_sent ) ? true : false;
79
+ }
80
+
81
+ /**
82
+ * Get invoice number type.
83
+ *
84
+ * @return string
85
+ */
86
+ public static function get_number_type() {
87
+ $number_type = WPI()->get_option( 'template', 'invoice_number_type' );
88
+
89
+ return (string) $number_type;
90
+ }
91
+
92
+ /**
93
+ * Get invoice details.
94
+ */
95
+ public function get_invoice_info() {
96
+
97
+ return apply_filters( 'wpi_invoice_information_meta', array(
98
+ 'invoice_number' => array(
99
+ 'title' => __( 'Invoice #:', 'woocommerce-pdf-invoices' ),
100
+ 'value' => $this->get_formatted_number(),
101
+ ),
102
+ 'invoice_date' => array(
103
+ 'title' => __( 'Invoice Date:', 'woocommerce-pdf-invoices' ),
104
+ 'value' => $this->get_formatted_date(),
105
+ ),
106
+ 'order_date' => array(
107
+ 'title' => __( 'Order Date:', 'woocommerce-pdf-invoices' ),
108
+ 'value' => $this->get_formatted_order_date(),
109
+ ),
110
+ 'order_number' => array(
111
+ 'title' => __( 'Order Number:', 'woocommerce-pdf-invoices' ),
112
+ 'value' => $this->order->get_order_number(),
113
+ ),
114
+ 'payment_method' => array(
115
+ 'title' => __( 'Payment Method:', 'woocommerce-pdf-invoices' ),
116
+ 'value' => $this->order->get_payment_method_title(),
117
+ ),
118
+ ), $this );
119
+ }
120
+
121
+ /**
122
+ * Formatted custom order subtotal.
123
+ * Shipping including or excluding tax.
124
+ *
125
+ * @deprecated No longer used within template files. Custom templates should be replaced.
126
+ *
127
+ * @return string
128
+ */
129
+ public function get_formatted_subtotal() {
130
+ $subtotal = $this->order->get_subtotal();
131
+
132
+ // add shipping to subtotal if shipping is taxable.
133
+ if ( (bool) $this->template_options['bewpi_shipping_taxable'] ) {
134
+ $subtotal += $this->order->get_total_shipping();
135
+ }
136
+
137
+ $subtotal -= $this->order->get_total_discount();
138
+ return wc_price( $subtotal, array( 'currency' => $this->order->get_order_currency() ) );
139
+ }
140
+
141
+ /**
142
+ * Formatted custom order total.
143
+ *
144
+ * @deprecated No longer used within template files. Custom templates should be replaced.
145
+ *
146
+ * @return string
147
+ */
148
+ public function get_formatted_total() {
149
+ if ( $this->order->get_total_refunded() > 0 ) {
150
+ return '<del class="total-without-refund">' . wc_price( $this->order->get_total(), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> <ins>' . wc_price( $this->order->get_total() - $this->order->get_total_refunded(), array( 'currency' => $this->order->get_order_currency() ) ) . '</ins>';
151
+ }
152
+
153
+ return $this->order->get_formatted_order_total();
154
+ }
155
+
156
+ /**
157
+ * Custom order total.
158
+ *
159
+ * @deprecated No longer used within template files. Custom templates should be replaced.
160
+ * @return string
161
+ */
162
+ public function get_total() {
163
+ if ( $this->order->get_total_refunded() > 0 ) {
164
+ $total_after_refund = $this->order->get_total() - $this->order->get_total_refunded();
165
+ return '<del class="total-without-refund">' . wc_price( $this->order->get_total(), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> <ins>' . wc_price( $total_after_refund, array( 'currency' => $this->order->get_order_currency() ) ) . '</ins>';
166
+ }
167
+
168
+ return $this->order->get_formatted_order_total();
169
+ }
170
+
171
+ /**
172
+ * Custom order subtotal.
173
+ *
174
+ * @deprecated No longer used within template files. Custom templates should be replaced.
175
+ * @return float|mixed|void
176
+ */
177
+ public function get_subtotal() {
178
+ $subtotal = $this->order->get_subtotal();
179
+
180
+ if ( (bool) $this->template_options['bewpi_shipping_taxable'] ) {
181
+ $subtotal += $this->order->get_total_shipping();
182
+ }
183
+
184
+ $subtotal -= $this->order->get_total_discount();
185
+
186
+ return $subtotal;
187
+ }
188
+ }
189
+ }
includes/class-packing-slip.php CHANGED
@@ -1,132 +1,132 @@
1
- <?php
2
- /**
3
- * BEWPI_Packing_Slip class.
4
- *
5
- * @author Bas Elbers
6
- * @category Class
7
- * @package BE_WooCommerce_PDF_Invoices/Class
8
- * @version 0.0.1
9
- */
10
-
11
- defined( 'ABSPATH' ) or exit;
12
-
13
- if ( ! class_exists( 'BEWPI_Packing_Slip' ) ) {
14
-
15
- /**
16
- * Class BEWPI_Packing_Slip.
17
- */
18
- class BEWPI_Packing_Slip extends BEWPI_Abstract_Document {
19
- /**
20
- * BEWPI_Packing_Slip constructor.
21
- *
22
- * @param int $order_id WooCommerce Order ID.
23
- */
24
- public function __construct( $order_id ) {
25
- $this->order = wc_get_order( $order_id );
26
- $this->type = 'packing-slip/simple';
27
- $this->filename = apply_filters( 'bewpi_pdf_packing_slip_filename', sprintf( 'packing-slip-%s.pdf', BEWPI_WC_Order_Compatibility::get_id( $this->order ) ), $this );
28
- WPI()->templater()->set_packing_slip( $this );
29
- parent::__construct();
30
- }
31
-
32
- /**
33
- * Initialize packing slips hooks.
34
- */
35
- public static function init_hooks() {
36
- add_action( 'admin_init', array( __CLASS__, 'admin_init_hooks' ) );
37
- }
38
-
39
- /**
40
- * Initialize admin hooks.
41
- */
42
- public static function admin_init_hooks() {
43
- if ( self::show_packing_slip_icons() ) {
44
- add_action( 'woocommerce_admin_order_actions_end', array( __CLASS__, 'add_packing_slip_pdf' ) );
45
- }
46
- }
47
-
48
- /**
49
- * Add packing slip link to 'Shop Order' page.
50
- *
51
- * @param WC_Order $order WooCommerce order object.
52
- */
53
- public static function add_packing_slip_pdf( $order ) {
54
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
55
-
56
- // View Packing Slip.
57
- $action = 'view_packing_slip';
58
- $url = wp_nonce_url( add_query_arg( array(
59
- 'post' => $order_id,
60
- 'action' => 'edit',
61
- 'bewpi_action' => $action,
62
- ), admin_url( 'post.php' ) ), $action, 'nonce' );
63
-
64
- $url = apply_filters( 'bewpi_pdf_packing_slip_url', $url, $order_id, $action );
65
-
66
- printf( '<a href="%1$s" title="%2$s" class="button shop-order-action packing-slip wpi" target="_blank">%2$s</a>', $url, __( 'View packing slip', 'woocommerce-pdf-invoices' ) );
67
- }
68
-
69
- /**
70
- * Determine whether to show packing slip PDF icon on Shop Order page.
71
- *
72
- * @return bool
73
- */
74
- private static function show_packing_slip_icons() {
75
- if ( WPI()->get_option( 'template','disable_packing_slips' ) ) {
76
- return false;
77
- }
78
-
79
- // There is no packing slip available for micro template.
80
- $template_name = WPI()->get_option( 'template', 'template_name' );
81
- if ( strpos( $template_name, 'micro' ) !== false ) {
82
- return false;
83
- }
84
-
85
- return true;
86
- }
87
-
88
- /**
89
- * Get path for Packing Slip PDF.
90
- *
91
- * @return string
92
- */
93
- public function get_pdf_path() {
94
- // Yearly sub-folders.
95
- if ( WPI()->get_option( 'template', 'reset_counter_yearly' ) ) {
96
- $year = date_i18n( 'Y', current_time( 'timestamp' ) );
97
- $pdf_path = $year . '/' . $this->filename;
98
- } else {
99
- // One folder for all invoices.
100
- $pdf_path = $this->filename;
101
- }
102
-
103
- return $pdf_path;
104
- }
105
-
106
-
107
- /**
108
- * Generate Packing Slip.
109
- *
110
- * @param string $destination PDF generation mode.
111
- *
112
- * @return string
113
- */
114
- public function generate( $destination = 'F' ) {
115
-
116
- if ( 'F' === $destination ) {
117
- $pdf_path = $this->get_pdf_path();
118
- $this->full_path = WPI_ATTACHMENTS_DIR . '/' . $pdf_path;
119
-
120
- if ( parent::exists( $this->full_path ) ) {
121
- parent::delete( $this->full_path );
122
- }
123
- }
124
-
125
- do_action( 'bewpi_before_document_generation', $this->type, BEWPI_WC_Order_Compatibility::get_id( $this->order ) );
126
-
127
- parent::generate( $destination );
128
-
129
- return $this->full_path;
130
- }
131
- }
132
- }
1
+ <?php
2
+ /**
3
+ * BEWPI_Packing_Slip class.
4
+ *
5
+ * @author Bas Elbers
6
+ * @category Class
7
+ * @package BE_WooCommerce_PDF_Invoices/Class
8
+ * @version 0.0.1
9
+ */
10
+
11
+ defined( 'ABSPATH' ) or exit;
12
+
13
+ if ( ! class_exists( 'BEWPI_Packing_Slip' ) ) {
14
+
15
+ /**
16
+ * Class BEWPI_Packing_Slip.
17
+ */
18
+ class BEWPI_Packing_Slip extends BEWPI_Abstract_Document {
19
+ /**
20
+ * BEWPI_Packing_Slip constructor.
21
+ *
22
+ * @param int $order_id WooCommerce Order ID.
23
+ */
24
+ public function __construct( $order_id ) {
25
+ $this->order = wc_get_order( $order_id );
26
+ $this->type = 'packing-slip/simple';
27
+ $this->filename = apply_filters( 'bewpi_pdf_packing_slip_filename', sprintf( 'packing-slip-%s.pdf', BEWPI_WC_Order_Compatibility::get_id( $this->order ) ), $this );
28
+ WPI()->templater()->set_packing_slip( $this );
29
+ parent::__construct();
30
+ }
31
+
32
+ /**
33
+ * Initialize packing slips hooks.
34
+ */
35
+ public static function init_hooks() {
36
+ add_action( 'admin_init', array( __CLASS__, 'admin_init_hooks' ) );
37
+ }
38
+
39
+ /**
40
+ * Initialize admin hooks.
41
+ */
42
+ public static function admin_init_hooks() {
43
+ if ( self::show_packing_slip_icons() ) {
44
+ add_action( 'woocommerce_admin_order_actions_end', array( __CLASS__, 'add_packing_slip_pdf' ) );
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Add packing slip link to 'Shop Order' page.
50
+ *
51
+ * @param WC_Order $order WooCommerce order object.
52
+ */
53
+ public static function add_packing_slip_pdf( $order ) {
54
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
55
+
56
+ // View Packing Slip.
57
+ $action = 'view_packing_slip';
58
+ $url = wp_nonce_url( add_query_arg( array(
59
+ 'post' => $order_id,
60
+ 'action' => 'edit',
61
+ 'bewpi_action' => $action,
62
+ ), admin_url( 'post.php' ) ), $action, 'nonce' );
63
+
64
+ $url = apply_filters( 'bewpi_pdf_packing_slip_url', $url, $order_id, $action );
65
+
66
+ printf( '<a href="%1$s" title="%2$s" class="button shop-order-action packing-slip wpi" target="_blank">%2$s</a>', $url, __( 'View packing slip', 'woocommerce-pdf-invoices' ) );
67
+ }
68
+
69
+ /**
70
+ * Determine whether to show packing slip PDF icon on Shop Order page.
71
+ *
72
+ * @return bool
73
+ */
74
+ private static function show_packing_slip_icons() {
75
+ if ( WPI()->get_option( 'template','disable_packing_slips' ) ) {
76
+ return false;
77
+ }
78
+
79
+ // There is no packing slip available for micro template.
80
+ $template_name = WPI()->get_option( 'template', 'template_name' );
81
+ if ( strpos( $template_name, 'micro' ) !== false ) {
82
+ return false;
83
+ }
84
+
85
+ return true;
86
+ }
87
+
88
+ /**
89
+ * Get path for Packing Slip PDF.
90
+ *
91
+ * @return string
92
+ */
93
+ public function get_pdf_path() {
94
+ // Yearly sub-folders.
95
+ if ( WPI()->get_option( 'template', 'reset_counter_yearly' ) ) {
96
+ $year = date_i18n( 'Y', current_time( 'timestamp' ) );
97
+ $pdf_path = $year . '/' . $this->filename;
98
+ } else {
99
+ // One folder for all invoices.
100
+ $pdf_path = $this->filename;
101
+ }
102
+
103
+ return $pdf_path;
104
+ }
105
+
106
+
107
+ /**
108
+ * Generate Packing Slip.
109
+ *
110
+ * @param string $destination PDF generation mode.
111
+ *
112
+ * @return string
113
+ */
114
+ public function generate( $destination = 'F' ) {
115
+
116
+ if ( 'F' === $destination ) {
117
+ $pdf_path = $this->get_pdf_path();
118
+ $this->full_path = WPI_ATTACHMENTS_DIR . '/' . $pdf_path;
119
+
120
+ if ( parent::exists( $this->full_path ) ) {
121
+ parent::delete( $this->full_path );
122
+ }
123
+ }
124
+
125
+ do_action( 'bewpi_before_document_generation', $this->type, BEWPI_WC_Order_Compatibility::get_id( $this->order ) );
126
+
127
+ parent::generate( $destination );
128
+
129
+ return $this->full_path;
130
+ }
131
+ }
132
+ }
includes/class-template.php CHANGED
@@ -1,419 +1,419 @@
1
- <?php
2
- /**
3
- * Templater class to populate templates.
4
- *
5
- * @author Bas Elbers
6
- * @category Class
7
- * @package BE_WooCommerce_PDF_Invoices/Class
8
- * @version 0.0.1
9
- */
10
-
11
- defined( 'ABSPATH' ) or exit;
12
-
13
- /**
14
- * Class BEWPI_Template.
15
- */
16
- class BEWPI_Template {
17
-
18
- /** Main instance.
19
- *
20
- * @var BEWPI_Template The single instance of the class.
21
- */
22
- protected static $_instance = null;
23
-
24
- /**
25
- * WooCommerce order.
26
- *
27
- * @var WC_Order.
28
- */
29
- public $order;
30
-
31
- /**
32
- * WooCommerce PDF Invoices invoice.
33
- *
34
- * @var BEWPI_Abstract_Invoice.
35
- */
36
- public $invoice;
37
-
38
- /**
39
- * WooCommerce PDF Invoices packing slip.
40
- *
41
- * @var BEWPI_Packing_Slip.
42
- */
43
- public $packing_slip;
44
-
45
- /**
46
- * Template directories.
47
- *
48
- * @var array.
49
- */
50
- private $directories = array();
51
-
52
- /**
53
- * String placeholders.
54
- *
55
- * @var array.
56
- */
57
- private static $placeholders = array( '[payment_method]', '[shipping_method]' );
58
-
59
- /**
60
- * Main BEWPI_Template Instance.
61
- *
62
- * Ensures only one instance of BEWPI_Template is loaded or can be loaded.
63
- *
64
- * @since 2.7.0
65
- * @static
66
- * @return BEWPI_Template Main instance
67
- */
68
- public static function instance() {
69
- if ( is_null( self::$_instance ) ) {
70
- self::$_instance = new self();
71
- }
72
-
73
- return self::$_instance;
74
- }
75
-
76
- /**
77
- * BEWPI_Template constructor.
78
- */
79
- private function __construct() {
80
- $upload_dir = wp_upload_dir();
81
- $this->directories = apply_filters( 'bewpi_template_directories', array(
82
- $upload_dir['basedir'] . '/bewpi-templates', // Old custom templates directory.
83
- WPI_TEMPLATES_DIR, // uploads/woocommerce-pdf-invoices/templates.
84
- WPI_DIR . '/includes/templates',
85
- ) );
86
- }
87
-
88
- /**
89
- * Get current active template name.
90
- *
91
- * @return string.
92
- */
93
- public function get_active_template() {
94
- return (string) WPI()->get_option( 'template', 'template_name' );
95
- }
96
-
97
- /**
98
- * Get template files.
99
- *
100
- * @param string $type Document type.
101
- *
102
- * @return array
103
- */
104
- public function get_template( $type ) {
105
- $template = array();
106
- $order_id = BEWPI_WC_Order_Compatibility::get_id( WPI()->templater()->get_order() );
107
-
108
- // get template name from template options.
109
- $name = apply_filters( 'wpi_template_name', WPI()->get_option( 'template', 'template_name' ), $type, $order_id );
110
-
111
- // first check custom directory, second plugin directory.
112
- foreach ( $this->directories as $directory ) {
113
- $template_path = $directory . '/' . $type . '/' . $name;
114
- if ( ! file_exists( $template_path ) ) {
115
- continue;
116
- }
117
-
118
- $files = array_merge( glob( $template_path . '/*.php' ), glob( $template_path . '/*.css' ) );
119
- foreach ( $files as $full_path ) {
120
- $file = pathinfo( $full_path );
121
- $template[ $file['filename'] ] = $full_path;
122
- }
123
-
124
- break;
125
- }
126
-
127
- if ( count( $template ) === 0 ) {
128
- WPI()->logger()->error( sprintf( 'PDF generation aborted. Template not found in %1$s:%2$s', __FILE__, __LINE__ ) );
129
- }
130
-
131
- return $template;
132
- }
133
-
134
- /**
135
- * @param $directory
136
- */
137
- public function add_directory( $directory ) {
138
- $this->directories[] = $directory;
139
- }
140
-
141
- /**
142
- * Get absolute paths of all invoice/simple templates.
143
- *
144
- * @return array
145
- */
146
- public function get_templates() {
147
- $templates = array();
148
-
149
- foreach ( $this->directories as $directory ) {
150
- $templates = array_merge( $templates, glob( $directory . '/invoice/simple/*', GLOB_ONLYDIR ) );
151
- }
152
-
153
- return $templates;
154
- }
155
-
156
- /**
157
- * Get template options by key.
158
- *
159
- * @param string $name the option key.
160
- *
161
- * @return string
162
- */
163
- public function get_option( $name ) {
164
- $template_options = get_option( 'bewpi_template_settings' );
165
-
166
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
167
- $value = apply_filters( $name, $template_options[ $name ], $name, $order_id );
168
-
169
- if ( self::has_placeholder( $value ) ) {
170
- $value = $this->replace_placeholders( $value );
171
- }
172
-
173
- return $value;
174
- }
175
-
176
- /**
177
- * Checks if string has placeholders.
178
- *
179
- * @param string $value Text value.
180
- *
181
- * @return bool
182
- */
183
- private static function has_placeholder( $value ) {
184
- foreach ( self::$placeholders as $placeholder ) {
185
- if ( strpos( $value, $placeholder ) !== false ) {
186
- return true;
187
- }
188
- }
189
-
190
- return false;
191
- }
192
-
193
- /**
194
- * Replace template placeholder within string.
195
- *
196
- * @param string $value string to format.
197
- *
198
- * @return string
199
- */
200
- private function replace_placeholders( $value ) {
201
- $payment_gateway = wc_get_payment_gateway_by_order( $this->order );
202
-
203
- $value = str_replace(
204
- self::$placeholders,
205
- array(
206
- ( $payment_gateway ) ? $payment_gateway->get_title() : $value,
207
- $this->order->get_shipping_method(),
208
- ),
209
- $value
210
- );
211
-
212
- return $value;
213
- }
214
-
215
- /**
216
- * Check if order has only virtual products.
217
- *
218
- * @param array $items WooCommerce products.
219
- *
220
- * @return bool
221
- * @since 2.5.3
222
- */
223
- public function has_only_virtual_products( $items ) {
224
- foreach ( $items as $item ) {
225
- $product = $this->order->get_product_from_item( $item );
226
- if ( ! $product || ! $product->is_virtual() ) {
227
- return false;
228
- }
229
- }
230
-
231
- return true;
232
- }
233
-
234
- /**
235
- * Strip some non-inline elements.
236
- *
237
- * @param string $string Value.
238
- *
239
- * @return mixed
240
- */
241
- private function strip_non_inline_tags( $string ) {
242
- return str_replace( array( '<p>', '</p>', '<br>', '</br>' ), '', $string );
243
- }
244
-
245
- /**
246
- * Order item meta port.
247
- *
248
- * @param object $item Order item meta.
249
- * @param bool $inline Strip <b> and <p> tags to avoid breaks.
250
- */
251
- public function wc_display_item_meta( $item, $inline = false ) {
252
- if ( function_exists( 'wc_display_item_meta' ) ) {
253
-
254
- if ( $inline ) {
255
- echo $this->strip_non_inline_tags( wc_display_item_meta( $item, array( 'echo' => false ) ) );
256
- return;
257
- }
258
-
259
- wc_display_item_meta( $item );
260
-
261
- } else {
262
- $this->order->display_item_meta( $item );
263
- }
264
- }
265
-
266
- /**
267
- * Order item downloads meta.
268
- *
269
- * @param object $item Order item.
270
- * @param bool $inline Strip <b> and <p> tags to avoid breaks.
271
- */
272
- public function wc_display_item_downloads( $item, $inline = false ) {
273
- if ( function_exists( 'wc_display_item_downloads' ) ) {
274
-
275
- if ( $inline ) {
276
- echo $this->strip_non_inline_tags( wc_display_item_downloads( $item, array( 'echo' => false ) ) );
277
- return;
278
- }
279
-
280
- wc_display_item_meta( $item );
281
-
282
- } else {
283
- $this->order->display_item_downloads( $item );
284
- }
285
- }
286
-
287
- /**
288
- * Display column recursively.
289
- *
290
- * @param string $key Column ID.
291
- * @param array/string $data Column or column label.
292
- */
293
- public function display_header_recursive( $key, $data ) {
294
- if ( is_array( $data ) ) {
295
- foreach ( $data as $k => $d ) {
296
- $this->display_header_recursive( $k, $d );
297
- }
298
-
299
- return;
300
- }
301
-
302
- printf( '<th class="%1$s">%2$s</th>', esc_attr( $key ), $data );
303
- }
304
-
305
- /**
306
- * Display row recursively.
307
- *
308
- * @param string $key Column ID.
309
- * @param array/string $data Column or column label.
310
- */
311
- public function display_data_recursive( $key, $data ) {
312
- if ( is_array( $data ) ) {
313
- foreach ( $data as $k => $d ) {
314
- $this->display_data_recursive( $k, $d );
315
- }
316
-
317
- return;
318
- }
319
-
320
- printf( '<td class="%1$s">%2$s</td>', esc_attr( $key ), $data );
321
- }
322
-
323
- /**
324
- * Template uses advanced table content?
325
- *
326
- * @return bool.
327
- */
328
- public function has_advanced_table_content() {
329
- return (bool) WPI()->get_option( 'template', 'enable_advanced_table_content' );
330
- }
331
-
332
- /**
333
- * Template needs to show sku as meta data.
334
- *
335
- * @return bool.
336
- */
337
- public function has_sku_as_meta_data() {
338
- // Only available for minimal template.
339
- if ( false === strpos( $this->get_active_template(), 'minimal' ) ) {
340
- return false;
341
- }
342
-
343
- return $this->has_advanced_table_content() && (bool) WPI()->get_option( 'template', 'show_sku_meta' );
344
- }
345
-
346
- /**
347
- * Get the company logo URL.
348
- *
349
- * @return string The actual url from the Media Library.
350
- */
351
- public function get_logo_url() {
352
- return esc_url_raw( $this->get_option( 'bewpi_company_logo' ) );
353
- }
354
-
355
- /**
356
- * Get custom post meta data.
357
- *
358
- * @param string $meta_key The post meta key.
359
- *
360
- * @return string
361
- */
362
- public function get_meta( $meta_key ) {
363
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
364
-
365
- return get_post_meta( $order_id, $meta_key, true );
366
- }
367
-
368
- /**
369
- * Get template directories.
370
- *
371
- * @return array
372
- */
373
- public function get_directories() {
374
- return $this->directories;
375
- }
376
-
377
- /**
378
- * Get two letter ISO language code.
379
- */
380
- public function get_two_letter_iso_code() {
381
- return substr( get_locale(), 0, 2 );
382
- }
383
-
384
- /**
385
- * Get order object.
386
- *
387
- * @return WC_Order $order order object.
388
- */
389
- public function get_order() {
390
- return $this->order;
391
- }
392
-
393
- /**
394
- * Set order.
395
- *
396
- * @param WC_Order $order WooCommerce Order object.
397
- */
398
- public function set_order( $order ) {
399
- $this->order = $order;
400
- }
401
-
402
- /**
403
- * Set invoice.
404
- *
405
- * @param BEWPI_Abstract_Invoice $invoice invoice object.
406
- */
407
- public function set_invoice( $invoice ) {
408
- $this->invoice = $invoice;
409
- }
410
-
411
- /**
412
- * Set invoice.
413
- *
414
- * @param BEWPI_Packing_Slip $packing_slip WooCommerce PDF Invoices invoice object.
415
- */
416
- public function set_packing_slip( $packing_slip ) {
417
- $this->packing_slip = $packing_slip;
418
- }
419
- }
1
+ <?php
2
+ /**
3
+ * Templater class to populate templates.
4
+ *
5
+ * @author Bas Elbers
6
+ * @category Class
7
+ * @package BE_WooCommerce_PDF_Invoices/Class
8
+ * @version 0.0.1
9
+ */
10
+
11
+ defined( 'ABSPATH' ) or exit;
12
+
13
+ /**
14
+ * Class BEWPI_Template.
15
+ */
16
+ class BEWPI_Template {
17
+
18
+ /** Main instance.
19
+ *
20
+ * @var BEWPI_Template The single instance of the class.
21
+ */
22
+ protected static $_instance = null;
23
+
24
+ /**
25
+ * WooCommerce order.
26
+ *
27
+ * @var WC_Order.
28
+ */
29
+ public $order;
30
+
31
+ /**
32
+ * WooCommerce PDF Invoices invoice.
33
+ *
34
+ * @var BEWPI_Abstract_Invoice.
35
+ */
36
+ public $invoice;
37
+
38
+ /**
39
+ * WooCommerce PDF Invoices packing slip.
40
+ *
41
+ * @var BEWPI_Packing_Slip.
42
+ */
43
+ public $packing_slip;
44
+
45
+ /**
46
+ * Template directories.
47
+ *
48
+ * @var array.
49
+ */
50
+ private $directories = array();
51
+
52
+ /**
53
+ * String placeholders.
54
+ *
55
+ * @var array.
56
+ */
57
+ private static $placeholders = array( '[payment_method]', '[shipping_method]' );
58
+
59
+ /**
60
+ * Main BEWPI_Template Instance.
61
+ *
62
+ * Ensures only one instance of BEWPI_Template is loaded or can be loaded.
63
+ *
64
+ * @since 2.7.0
65
+ * @static
66
+ * @return BEWPI_Template Main instance
67
+ */
68
+ public static function instance() {
69
+ if ( is_null( self::$_instance ) ) {
70
+ self::$_instance = new self();
71
+ }
72
+
73
+ return self::$_instance;
74
+ }
75
+
76
+ /**
77
+ * BEWPI_Template constructor.
78
+ */
79
+ private function __construct() {
80
+ $upload_dir = wp_upload_dir();
81
+ $this->directories = apply_filters( 'bewpi_template_directories', array(
82
+ $upload_dir['basedir'] . '/bewpi-templates', // Old custom templates directory.
83
+ WPI_TEMPLATES_DIR, // uploads/woocommerce-pdf-invoices/templates.
84
+ WPI_DIR . '/includes/templates',
85
+ ) );
86
+ }
87
+
88
+ /**
89
+ * Get current active template name.
90
+ *
91
+ * @return string.
92
+ */
93
+ public function get_active_template() {
94
+ return (string) WPI()->get_option( 'template', 'template_name' );
95
+ }
96
+
97
+ /**
98
+ * Get template files.
99
+ *
100
+ * @param string $type Document type.
101
+ *
102
+ * @return array
103
+ */
104
+ public function get_template( $type ) {
105
+ $template = array();
106
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( WPI()->templater()->get_order() );
107
+
108
+ // get template name from template options.
109
+ $name = apply_filters( 'wpi_template_name', WPI()->get_option( 'template', 'template_name' ), $type, $order_id );
110
+
111
+ // first check custom directory, second plugin directory.
112
+ foreach ( $this->directories as $directory ) {
113
+ $template_path = $directory . '/' . $type . '/' . $name;
114
+ if ( ! file_exists( $template_path ) ) {
115
+ continue;
116
+ }
117
+
118
+ $files = array_merge( glob( $template_path . '/*.php' ), glob( $template_path . '/*.css' ) );
119
+ foreach ( $files as $full_path ) {
120
+ $file = pathinfo( $full_path );
121
+ $template[ $file['filename'] ] = $full_path;
122
+ }
123
+
124
+ break;
125
+ }
126
+
127
+ if ( count( $template ) === 0 ) {
128
+ WPI()->logger()->error( sprintf( 'PDF generation aborted. Template not found in %1$s:%2$s', __FILE__, __LINE__ ) );
129
+ }
130
+
131
+ return $template;
132
+ }
133
+
134
+ /**
135
+ * @param $directory
136
+ */
137
+ public function add_directory( $directory ) {
138
+ $this->directories[] = $directory;
139
+ }
140
+
141
+ /**
142
+ * Get absolute paths of all invoice/simple templates.
143
+ *
144
+ * @return array
145
+ */
146
+ public function get_templates() {
147
+ $templates = array();
148
+
149
+ foreach ( $this->directories as $directory ) {
150
+ $templates = array_merge( $templates, glob( $directory . '/invoice/simple/*', GLOB_ONLYDIR ) );
151
+ }
152
+
153
+ return $templates;
154
+ }
155
+
156
+ /**
157
+ * Get template options by key.
158
+ *
159
+ * @param string $name the option key.
160
+ *
161
+ * @return string
162
+ */
163
+ public function get_option( $name ) {
164
+ $template_options = get_option( 'bewpi_template_settings' );
165
+
166
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
167
+ $value = apply_filters( $name, $template_options[ $name ], $name, $order_id );
168
+
169
+ if ( self::has_placeholder( $value ) ) {
170
+ $value = $this->replace_placeholders( $value );
171
+ }
172
+
173
+ return $value;
174
+ }
175
+
176
+ /**
177
+ * Checks if string has placeholders.
178
+ *
179
+ * @param string $value Text value.
180
+ *
181
+ * @return bool
182
+ */
183
+ private static function has_placeholder( $value ) {
184
+ foreach ( self::$placeholders as $placeholder ) {
185
+ if ( strpos( $value, $placeholder ) !== false ) {
186
+ return true;
187
+ }
188
+ }
189
+
190
+ return false;
191
+ }
192
+
193
+ /**
194
+ * Replace template placeholder within string.
195
+ *
196
+ * @param string $value string to format.
197
+ *
198
+ * @return string
199
+ */
200
+ private function replace_placeholders( $value ) {
201
+ $payment_gateway = wc_get_payment_gateway_by_order( $this->order );
202
+
203
+ $value = str_replace(
204
+ self::$placeholders,
205
+ array(
206
+ ( $payment_gateway ) ? $payment_gateway->get_title() : $value,
207
+ $this->order->get_shipping_method(),
208
+ ),
209
+ $value
210
+ );
211
+
212
+ return $value;
213
+ }
214
+
215
+ /**
216
+ * Check if order has only virtual products.
217
+ *
218
+ * @param array $items WooCommerce products.
219
+ *
220
+ * @return bool
221
+ * @since 2.5.3
222
+ */
223
+ public function has_only_virtual_products( $items ) {
224
+ foreach ( $items as $item ) {
225
+ $product = $this->order->get_product_from_item( $item );
226
+ if ( ! $product || ! $product->is_virtual() ) {
227
+ return false;
228
+ }
229
+ }
230
+
231
+ return true;
232
+ }
233
+
234
+ /**
235
+ * Strip some non-inline elements.
236
+ *
237
+ * @param string $string Value.
238
+ *
239
+ * @return mixed
240
+ */
241
+ private function strip_non_inline_tags( $string ) {
242
+ return str_replace( array( '<p>', '</p>', '<br>', '</br>' ), '', $string );
243
+ }
244
+
245
+ /**
246
+ * Order item meta port.
247
+ *
248
+ * @param object $item Order item meta.
249
+ * @param bool $inline Strip <b> and <p> tags to avoid breaks.
250
+ */
251
+ public function wc_display_item_meta( $item, $inline = false ) {
252
+ if ( function_exists( 'wc_display_item_meta' ) ) {
253
+
254
+ if ( $inline ) {
255
+ echo $this->strip_non_inline_tags( wc_display_item_meta( $item, array( 'echo' => false ) ) );
256
+ return;
257
+ }
258
+
259
+ wc_display_item_meta( $item );
260
+
261
+ } else {
262
+ $this->order->display_item_meta( $item );
263
+ }
264
+ }
265
+
266
+ /**
267
+ * Order item downloads meta.
268
+ *
269
+ * @param object $item Order item.
270
+ * @param bool $inline Strip <b> and <p> tags to avoid breaks.
271
+ */
272
+ public function wc_display_item_downloads( $item, $inline = false ) {
273
+ if ( function_exists( 'wc_display_item_downloads' ) ) {
274
+
275
+ if ( $inline ) {
276
+ echo $this->strip_non_inline_tags( wc_display_item_downloads( $item, array( 'echo' => false ) ) );
277
+ return;
278
+ }
279
+
280
+ wc_display_item_meta( $item );
281
+
282
+ } else {
283
+ $this->order->display_item_downloads( $item );
284
+ }
285
+ }
286
+
287
+ /**
288
+ * Display column recursively.
289
+ *
290
+ * @param string $key Column ID.
291
+ * @param array/string $data Column or column label.
292
+ */
293
+ public function display_header_recursive( $key, $data ) {
294
+ if ( is_array( $data ) ) {
295
+ foreach ( $data as $k => $d ) {
296
+ $this->display_header_recursive( $k, $d );
297
+ }
298
+
299
+ return;
300
+ }
301
+
302
+ printf( '<th class="%1$s">%2$s</th>', esc_attr( $key ), $data );
303
+ }
304
+
305
+ /**
306
+ * Display row recursively.
307
+ *
308
+ * @param string $key Column ID.
309
+ * @param array/string $data Column or column label.
310
+ */
311
+ public function display_data_recursive( $key, $data ) {
312
+ if ( is_array( $data ) ) {
313
+ foreach ( $data as $k => $d ) {
314
+ $this->display_data_recursive( $k, $d );
315
+ }
316
+
317
+ return;
318
+ }
319
+
320
+ printf( '<td class="%1$s">%2$s</td>', esc_attr( $key ), $data );
321
+ }
322
+
323
+ /**
324
+ * Template uses advanced table content?
325
+ *
326
+ * @return bool.
327
+ */
328
+ public function has_advanced_table_content() {
329
+ return (bool) WPI()->get_option( 'template', 'enable_advanced_table_content' );
330
+ }
331
+
332
+ /**
333
+ * Template needs to show sku as meta data.
334
+ *
335
+ * @return bool.
336
+ */
337
+ public function has_sku_as_meta_data() {
338
+ // Only available for minimal template.
339
+ if ( false === strpos( $this->get_active_template(), 'minimal' ) ) {
340
+ return false;
341
+ }
342
+
343
+ return $this->has_advanced_table_content() && (bool) WPI()->get_option( 'template', 'show_sku_meta' );
344
+ }
345
+
346
+ /**
347
+ * Get the company logo URL.
348
+ *
349
+ * @return string The actual url from the Media Library.
350
+ */
351
+ public function get_logo_url() {
352
+ return esc_url_raw( $this->get_option( 'bewpi_company_logo' ) );
353
+ }
354
+
355
+ /**
356
+ * Get custom post meta data.
357
+ *
358
+ * @param string $meta_key The post meta key.
359
+ *
360
+ * @return string
361
+ */
362
+ public function get_meta( $meta_key ) {
363
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $this->order );
364
+
365
+ return get_post_meta( $order_id, $meta_key, true );
366
+ }
367
+
368
+ /**
369
+ * Get template directories.
370
+ *
371
+ * @return array
372
+ */
373
+ public function get_directories() {
374
+ return $this->directories;
375
+ }
376
+
377
+ /**
378
+ * Get two letter ISO language code.
379
+ */
380
+ public function get_two_letter_iso_code() {
381
+ return substr( get_locale(), 0, 2 );
382
+ }
383
+
384
+ /**
385
+ * Get order object.
386
+ *
387
+ * @return WC_Order $order order object.
388
+ */
389
+ public function get_order() {
390
+ return $this->order;
391
+ }
392
+
393
+ /**
394
+ * Set order.
395
+ *
396
+ * @param WC_Order $order WooCommerce Order object.
397
+ */
398
+ public function set_order( $order ) {
399
+ $this->order = $order;
400
+ }
401
+
402
+ /**
403
+ * Set invoice.
404
+ *
405
+ * @param BEWPI_Abstract_Invoice $invoice invoice object.
406
+ */
407
+ public function set_invoice( $invoice ) {
408
+ $this->invoice = $invoice;
409
+ }
410
+
411
+ /**
412
+ * Set invoice.
413
+ *
414
+ * @param BEWPI_Packing_Slip $packing_slip WooCommerce PDF Invoices invoice object.
415
+ */
416
+ public function set_packing_slip( $packing_slip ) {
417
+ $this->packing_slip = $packing_slip;
418
+ }
419
+ }
includes/compatibility/abstract-bewpi-setting.php CHANGED
@@ -1,236 +1,236 @@
1
- <?php
2
- /**
3
- * Settings configuration.
4
- *
5
- * Validate and output settings.
6
- *
7
- * @author Bas Elbers
8
- * @category Abstract Class
9
- * @package BE_WooCommerce_PDF_Invoices/Abstracts
10
- * @version 1.0.0
11
- */
12
-
13
- defined( 'ABSPATH' ) or exit;
14
-
15
- if ( ! class_exists( 'BEWPI_Abstract_Setting' ) ) {
16
- /**
17
- * Class BEWPI_Abstract_Setting.
18
- */
19
- abstract class BEWPI_Abstract_Setting {
20
-
21
- /**
22
- * Options and settings prefix.
23
- *
24
- * @var string
25
- */
26
- const PREFIX = 'bewpi_';
27
-
28
- /**
29
- * @deprecated.
30
- * @var string.
31
- */
32
- protected $prefix = 'bewpi_';
33
-
34
- /**
35
- * Option group key.
36
- *
37
- * @var string.
38
- */
39
- private $settings_key;
40
-
41
- /**
42
- * Format all available invoice number placeholders.
43
- *
44
- * @return string
45
- */
46
- protected static function formatted_number_placeholders() {
47
- $placeholders = array( '[number]', '[order-number]', '[order-date]', '[m]', '[Y]', '[y]' );
48
-
49
- return '<code>' . join( '</code>, <code>', $placeholders ) . '</code>';
50
- }
51
-
52
- /**
53
- * Gets all the tags that are allowed.
54
- *
55
- * @return string|void
56
- */
57
- protected static function formatted_html_tags() {
58
- $html_tags = array_map( 'htmlspecialchars', array( '<b>', '<i>', '<br>' ) );
59
-
60
- return '<code>' . join( '</code>, <code>', $html_tags ) . '</code>';
61
- }
62
-
63
- /**
64
- * String validation.
65
- *
66
- * @param string $str the string to validate.
67
- *
68
- * @return bool
69
- */
70
- protected function strip_str( $str ) {
71
- $str = preg_replace( '/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i', '<$1$2>', $str );
72
-
73
- return strip_tags( $str, '<b><i><br><br/>' );
74
- }
75
-
76
- /**
77
- * Multiple checkboxes html.
78
- *
79
- * @param array $args option arguments.
80
- */
81
- public function multiple_checkbox_callback( $args ) {
82
- include BEWPI_DIR . 'includes/admin/views/html-multiple-checkbox-setting.php';
83
- }
84
-
85
- /**
86
- * Select html.
87
- *
88
- * @param array $args option arguments.
89
- */
90
- public function select_callback( $args ) {
91
- $options = get_option( $args['page'] );
92
- ?>
93
- <select id="<?php echo $args['id']; ?>" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>">
94
- <?php
95
- foreach ( $args['options'] as $option ) :
96
-
97
- // Backwards compatibility.
98
- if ( ! isset( $option['id'] ) ) {
99
- $option['id'] = $option['name'];
100
- }
101
-
102
- ?>
103
- <option
104
- value="<?php echo esc_attr( $option['value'] ); ?>" <?php selected( $options[ $args['name'] ], $option['value'] ); ?>><?php echo esc_html( $option['id'] ); ?></option>
105
- <?php
106
- endforeach;
107
- ?>
108
- </select>
109
- <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
110
- <?php
111
- }
112
-
113
- public function reset_counter_callback( $args ) {
114
- $class = ( isset( $args['class'] ) ) ? $args['class'] : "bewpi-notes";
115
- ?>
116
- <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
117
- <input id="<?php echo $args['id']; ?>"
118
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
119
- type="<?php echo $args['type']; ?>"
120
- value="1"
121
- <?php
122
- checked( (bool) get_transient( 'bewpi_next_invoice_number' ) );
123
-
124
- if ( isset ( $args['attrs'] ) ) {
125
- foreach ( $args['attrs'] as $attr ) {
126
- echo $attr . ' ';
127
- }
128
- }
129
- ?>
130
- />
131
- <label for="<?php echo $args['id']; ?>" class="<?php echo $class; ?>">
132
- <?php echo $args['desc']; ?>
133
- </label>
134
- <?php
135
- }
136
-
137
- public function next_invoice_number_callback( $args ) {
138
- $class = ( isset( $args['class'] ) ) ? $args['class'] : "bewpi-notes";
139
- $next_invoice_number = get_transient( 'bewpi_next_invoice_number' );
140
- ?>
141
- <input id="<?php echo $args['id']; ?>"
142
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
143
- type="<?php echo $args['type']; ?>"
144
- value="<?php echo esc_attr( ( false !== $next_invoice_number ) ? $next_invoice_number : BEWPI_Abstract_Invoice::get_max_invoice_number() + 1 ); ?>"
145
- <?php
146
- if ( isset ( $args['attrs'] ) ) {
147
- foreach ( $args['attrs'] as $attr ) {
148
- echo $attr . ' ';
149
- }
150
- }
151
- ?>
152
- />
153
- <div class="<?php echo $class; ?>"><?php echo $args['desc']; ?></div>
154
- <?php
155
- }
156
-
157
- public function input_callback( $args ) {
158
- $options = get_option( $args['page'] );
159
- $class = ( isset( $args['class'] ) ) ? $args['class'] : "bewpi-notes";
160
- $is_checkbox = $args['type'] === 'checkbox';
161
- if ( $is_checkbox ) { ?>
162
- <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
163
- <?php } ?>
164
- <input id="<?php echo $args['id']; ?>"
165
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
166
- type="<?php echo $args['type']; ?>"
167
- value="<?php echo $is_checkbox ? 1 : esc_attr( $options[ $args['name'] ] ); ?>"
168
-
169
- <?php if ( $is_checkbox ) {
170
- checked( $options[ $args['name'] ] );
171
- }
172
-
173
- if ( isset ( $args['attrs'] ) ) {
174
- foreach ( $args['attrs'] as $attr ) {
175
- echo $attr . ' ';
176
- }
177
- }
178
- ?>
179
- />
180
- <?php if ( $is_checkbox ) { ?>
181
- <label for="<?php echo $args['id']; ?>"
182
- class="<?php echo $class; ?>"><?php echo $args['desc']; ?></label>
183
- <?php } else { ?>
184
- <div class="<?php echo $class; ?>"><?php echo $args['desc']; ?></div>
185
- <?php } ?>
186
- <?php
187
- }
188
-
189
- public function textarea_callback( $args ) {
190
- $options = get_option( $args['page'] );
191
- ?>
192
- <textarea id="<?php echo $args['id']; ?>"
193
- name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
194
- rows="5"
195
- ><?php echo esc_textarea( $options[ $args['name'] ] ); ?></textarea>
196
- <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
197
- <?php
198
- }
199
-
200
- /**
201
- * Validate image against modified urls and check for extension.
202
- *
203
- * @param string $image_url source url of the image.
204
- *
205
- * @return bool|string false or image url.
206
- */
207
- public function validate_image( $image_url ) {
208
- $image_url = esc_url_raw( $image_url, array( 'http', 'https' ) );
209
-
210
- $uploads_dir = wp_upload_dir();
211
- if ( false === strpos( $image_url, $uploads_dir['baseurl'] . '/' ) ) {
212
- // url points to a place outside of upload directory.
213
- return false;
214
- }
215
-
216
- $query = array(
217
- 'post_type' => 'attachment',
218
- 'fields' => 'ids',
219
- 'meta_query' => array(
220
- array(
221
- 'key' => '_wp_attached_file',
222
- 'value' => basename( $image_url ),
223
- 'compare' => 'LIKE',
224
- ),
225
- )
226
- );
227
-
228
- $ids = get_posts( $query );
229
- if ( count( $ids ) === 0 ) {
230
- return false;
231
- }
232
-
233
- return wp_get_attachment_image_url( $ids[0], 'full' );
234
- }
235
- }
236
  }
1
+ <?php
2
+ /**
3
+ * Settings configuration.
4
+ *
5
+ * Validate and output settings.
6
+ *
7
+ * @author Bas Elbers
8
+ * @category Abstract Class
9
+ * @package BE_WooCommerce_PDF_Invoices/Abstracts
10
+ * @version 1.0.0
11
+ */
12
+
13
+ defined( 'ABSPATH' ) or exit;
14
+
15
+ if ( ! class_exists( 'BEWPI_Abstract_Setting' ) ) {
16
+ /**
17
+ * Class BEWPI_Abstract_Setting.
18
+ */
19
+ abstract class BEWPI_Abstract_Setting {
20
+
21
+ /**
22
+ * Options and settings prefix.
23
+ *
24
+ * @var string
25
+ */
26
+ const PREFIX = 'bewpi_';
27
+
28
+ /**
29
+ * @deprecated.
30
+ * @var string.
31
+ */
32
+ protected $prefix = 'bewpi_';
33
+
34
+ /**
35
+ * Option group key.
36
+ *
37
+ * @var string.
38
+ */
39
+ private $settings_key;
40
+
41
+ /**
42
+ * Format all available invoice number placeholders.
43
+ *
44
+ * @return string
45
+ */
46
+ protected static function formatted_number_placeholders() {
47
+ $placeholders = array( '[number]', '[order-number]', '[order-date]', '[m]', '[Y]', '[y]' );
48
+
49
+ return '<code>' . join( '</code>, <code>', $placeholders ) . '</code>';
50
+ }
51
+
52
+ /**
53
+ * Gets all the tags that are allowed.
54
+ *
55
+ * @return string|void
56
+ */
57
+ protected static function formatted_html_tags() {
58
+ $html_tags = array_map( 'htmlspecialchars', array( '<b>', '<i>', '<br>' ) );
59
+
60
+ return '<code>' . join( '</code>, <code>', $html_tags ) . '</code>';
61
+ }
62
+
63
+ /**
64
+ * String validation.
65
+ *
66
+ * @param string $str the string to validate.
67
+ *
68
+ * @return bool
69
+ */
70
+ protected function strip_str( $str ) {
71
+ $str = preg_replace( '/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i', '<$1$2>', $str );
72
+
73
+ return strip_tags( $str, '<b><i><br><br/>' );
74
+ }
75
+
76
+ /**
77
+ * Multiple checkboxes html.
78
+ *
79
+ * @param array $args option arguments.
80
+ */
81
+ public function multiple_checkbox_callback( $args ) {
82
+ include BEWPI_DIR . 'includes/admin/views/html-multiple-checkbox-setting.php';
83
+ }
84
+
85
+ /**
86
+ * Select html.
87
+ *
88
+ * @param array $args option arguments.
89
+ */
90
+ public function select_callback( $args ) {
91
+ $options = get_option( $args['page'] );
92
+ ?>
93
+ <select id="<?php echo $args['id']; ?>" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>">
94
+ <?php
95
+ foreach ( $args['options'] as $option ) :
96
+
97
+ // Backwards compatibility.
98
+ if ( ! isset( $option['id'] ) ) {
99
+ $option['id'] = $option['name'];
100
+ }
101
+
102
+ ?>
103
+ <option
104
+ value="<?php echo esc_attr( $option['value'] ); ?>" <?php selected( $options[ $args['name'] ], $option['value'] ); ?>><?php echo esc_html( $option['id'] ); ?></option>
105
+ <?php
106
+ endforeach;
107
+ ?>
108
+ </select>
109
+ <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
110
+ <?php
111
+ }
112
+
113
+ public function reset_counter_callback( $args ) {
114
+ $class = ( isset( $args['class'] ) ) ? $args['class'] : "bewpi-notes";
115
+ ?>
116
+ <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
117
+ <input id="<?php echo $args['id']; ?>"
118
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
119
+ type="<?php echo $args['type']; ?>"
120
+ value="1"
121
+ <?php
122
+ checked( (bool) get_transient( 'bewpi_next_invoice_number' ) );
123
+
124
+ if ( isset ( $args['attrs'] ) ) {
125
+ foreach ( $args['attrs'] as $attr ) {
126
+ echo $attr . ' ';
127
+ }
128
+ }
129
+ ?>
130
+ />
131
+ <label for="<?php echo $args['id']; ?>" class="<?php echo $class; ?>">
132
+ <?php echo $args['desc']; ?>
133
+ </label>
134
+ <?php
135
+ }
136
+
137
+ public function next_invoice_number_callback( $args ) {
138
+ $class = ( isset( $args['class'] ) ) ? $args['class'] : "bewpi-notes";
139
+ $next_invoice_number = get_transient( 'bewpi_next_invoice_number' );
140
+ ?>
141
+ <input id="<?php echo $args['id']; ?>"
142
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
143
+ type="<?php echo $args['type']; ?>"
144
+ value="<?php echo esc_attr( ( false !== $next_invoice_number ) ? $next_invoice_number : BEWPI_Abstract_Invoice::get_max_invoice_number() + 1 ); ?>"
145
+ <?php
146
+ if ( isset ( $args['attrs'] ) ) {
147
+ foreach ( $args['attrs'] as $attr ) {
148
+ echo $attr . ' ';
149
+ }
150
+ }
151
+ ?>
152
+ />
153
+ <div class="<?php echo $class; ?>"><?php echo $args['desc']; ?></div>
154
+ <?php
155
+ }
156
+
157
+ public function input_callback( $args ) {
158
+ $options = get_option( $args['page'] );
159
+ $class = ( isset( $args['class'] ) ) ? $args['class'] : "bewpi-notes";
160
+ $is_checkbox = $args['type'] === 'checkbox';
161
+ if ( $is_checkbox ) { ?>
162
+ <input type="hidden" name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>" value="0"/>
163
+ <?php } ?>
164
+ <input id="<?php echo $args['id']; ?>"
165
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
166
+ type="<?php echo $args['type']; ?>"
167
+ value="<?php echo $is_checkbox ? 1 : esc_attr( $options[ $args['name'] ] ); ?>"
168
+
169
+ <?php if ( $is_checkbox ) {
170
+ checked( $options[ $args['name'] ] );
171
+ }
172
+
173
+ if ( isset ( $args['attrs'] ) ) {
174
+ foreach ( $args['attrs'] as $attr ) {
175
+ echo $attr . ' ';
176
+ }
177
+ }
178
+ ?>
179
+ />
180
+ <?php if ( $is_checkbox ) { ?>
181
+ <label for="<?php echo $args['id']; ?>"
182
+ class="<?php echo $class; ?>"><?php echo $args['desc']; ?></label>
183
+ <?php } else { ?>
184
+ <div class="<?php echo $class; ?>"><?php echo $args['desc']; ?></div>
185
+ <?php } ?>
186
+ <?php
187
+ }
188
+
189
+ public function textarea_callback( $args ) {
190
+ $options = get_option( $args['page'] );
191
+ ?>
192
+ <textarea id="<?php echo $args['id']; ?>"
193
+ name="<?php echo $args['page'] . '[' . $args['name'] . ']'; ?>"
194
+ rows="5"
195
+ ><?php echo esc_textarea( $options[ $args['name'] ] ); ?></textarea>
196
+ <div class="bewpi-notes"><?php echo $args['desc']; ?></div>
197
+ <?php
198
+ }
199
+
200
+ /**
201
+ * Validate image against modified urls and check for extension.
202
+ *
203
+ * @param string $image_url source url of the image.
204
+ *
205
+ * @return bool|string false or image url.
206
+ */
207
+ public function validate_image( $image_url ) {
208
+ $image_url = esc_url_raw( $image_url, array( 'http', 'https' ) );
209
+
210
+ $uploads_dir = wp_upload_dir();
211
+ if ( false === strpos( $image_url, $uploads_dir['baseurl'] . '/' ) ) {
212
+ // url points to a place outside of upload directory.
213
+ return false;
214
+ }
215
+
216
+ $query = array(
217
+ 'post_type' => 'attachment',
218
+ 'fields' => 'ids',
219
+ 'meta_query' => array(
220
+ array(
221
+ 'key' => '_wp_attached_file',
222
+ 'value' => basename( $image_url ),
223
+ 'compare' => 'LIKE',
224
+ ),
225
+ )
226
+ );
227
+
228
+ $ids = get_posts( $query );
229
+ if ( count( $ids ) === 0 ) {
230
+ return false;
231
+ }
232
+
233
+ return wp_get_attachment_image_url( $ids[0], 'full' );
234
+ }
235
+ }
236
  }
includes/compatibility/abstract-wc-data-compatibility.php CHANGED
@@ -1,224 +1,224 @@
1
- <?php
2
- /**
3
- * WooCommerce Plugin Framework
4
- *
5
- * This source file is subject to the GNU General Public License v3.0
6
- * that is bundled with this package in the file license.txt.
7
- * It is also available through the world-wide-web at this URL:
8
- * http://www.gnu.org/licenses/gpl-3.0.html
9
- * If you did not receive a copy of the license and are unable to
10
- * obtain it through the world-wide-web, please send an email
11
- * to license@skyverge.com so we can send you a copy immediately.
12
- *
13
- * DISCLAIMER
14
- *
15
- * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
- * versions in the future. If you wish to customize the plugin for your
17
- * needs please refer to http://www.skyverge.com
18
- *
19
- * @package SkyVerge/WooCommerce/Compatibility
20
- * @author SkyVerge
21
- * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
- * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
- */
24
-
25
- defined( 'ABSPATH' ) or exit;
26
-
27
- if ( ! class_exists( 'BEWPI_WC_Data_Compatibility' ) ) :
28
-
29
- /**
30
- * WooCommerce data compatibility class.
31
- *
32
- * @since 4.6.0
33
- */
34
- abstract class BEWPI_WC_Data_Compatibility {
35
-
36
-
37
- /**
38
- * Gets an object property.
39
- *
40
- * @since 4.6.0
41
- *
42
- * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
43
- * @param string $prop the property name
44
- * @param string $context if 'view' then the value will be filtered
45
- * @param array $compat_props Compatibility properties.
46
- *
47
- * @return mixed
48
- */
49
- public static function get_prop( $object, $prop, $context = 'edit', $compat_props = array() ) {
50
-
51
- $value = '';
52
-
53
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
54
-
55
- if ( is_callable( array( $object, "get_{$prop}" ) ) ) {
56
- $value = $object->{"get_{$prop}"}( $context );
57
- }
58
-
59
- } else {
60
-
61
- // backport the property name
62
- if ( isset( $compat_props[ $prop ] ) ) {
63
- $prop = $compat_props[ $prop ];
64
- }
65
-
66
- // if this is the 'view' context and there is an accessor method, use it
67
- if ( is_callable( array( $object, "get_{$prop}" ) ) && 'view' === $context ) {
68
- $value = $object->{"get_{$prop}"}();
69
- } else {
70
- $value = $object->$prop;
71
- }
72
- }
73
-
74
- return $value;
75
- }
76
-
77
-
78
- /**
79
- * Sets an object's properties.
80
- *
81
- * Note that this does not save any data to the database.
82
- *
83
- * @since 4.6.0
84
- *
85
- * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
86
- * @param array $props the new properties as $key => $value
87
- * @param array $compat_props Compatibility properties.
88
- *
89
- * @return \WC_Data
90
- */
91
- public static function set_props( $object, $props, $compat_props = array() ) {
92
-
93
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
94
-
95
- $object->set_props( $props );
96
-
97
- } else {
98
-
99
- foreach ( $props as $prop => $value ) {
100
-
101
- if ( isset( $compat_props[ $prop ] ) ) {
102
- $prop = $compat_props[ $prop ];
103
- }
104
-
105
- $object->$prop = $value;
106
- }
107
- }
108
-
109
- return $object;
110
- }
111
-
112
-
113
- /**
114
- * Gets an object's stored meta value.
115
- *
116
- * @since 4.6.0
117
- *
118
- * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
119
- * @param string $key the meta key
120
- * @param bool $single whether to get the meta as a single item. Defaults to `true`
121
- * @param string $context if 'view' then the value will be filtered
122
- *
123
- * @return mixed
124
- */
125
- public static function get_meta( $object, $key = '', $single = true, $context = 'edit' ) {
126
-
127
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
128
-
129
- $value = $object->get_meta( $key, $single, $context );
130
-
131
- } else {
132
-
133
- $object_id = is_callable( array( $object, 'get_id' ) ) ? $object->get_id() : $object->id;
134
-
135
- $value = get_post_meta( $object_id, $key, $single );
136
- }
137
-
138
- return $value;
139
- }
140
-
141
-
142
- /**
143
- * Stores an object meta value.
144
- *
145
- * @since 4.6.0
146
- *
147
- * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
148
- * @param string $key the meta key
149
- * @param string $value the meta value
150
- * @param bool $unique Optional. Whether the meta should be unique.
151
- */
152
- public static function add_meta_data( $object, $key, $value, $unique = false ) {
153
-
154
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
155
-
156
- $object->add_meta_data( $key, $value, $unique );
157
-
158
- $object->save_meta_data();
159
-
160
- } else {
161
-
162
- $object_id = is_callable( array( $object, 'get_id' ) ) ? $object->get_id() : $object->id;
163
-
164
- add_post_meta( $object_id, $key, $value, $unique );
165
- }
166
- }
167
-
168
-
169
- /**
170
- * Updates an object's stored meta value.
171
- *
172
- * @since 4.6.0
173
- *
174
- * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
175
- * @param string $key the meta key
176
- * @param string $value the meta value
177
- * @param int|string $meta_id Optional. The specific meta ID to update
178
- */
179
- public static function update_meta_data( $object, $key, $value, $meta_id = '' ) {
180
-
181
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
182
-
183
- $object->update_meta_data( $key, $value, $meta_id );
184
-
185
- $object->save_meta_data();
186
-
187
- } else {
188
-
189
- $object_id = is_callable( array( $object, 'get_id' ) ) ? $object->get_id() : $object->id;
190
-
191
- update_post_meta( $object_id, $key, $value );
192
- }
193
- }
194
-
195
-
196
- /**
197
- * Deletes an object's stored meta value.
198
- *
199
- * @since 4.6.0
200
- *
201
- * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
202
- * @param string $key the meta key
203
- */
204
- public static function delete_meta_data( $object, $key ) {
205
-
206
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
207
-
208
- $object->delete_meta_data( $key );
209
-
210
- $object->save_meta_data();
211
-
212
- } else {
213
-
214
- $object_id = is_callable( array( $object, 'get_id' ) ) ? $object->get_id() : $object->id;
215
-
216
- delete_post_meta( $object_id, $key );
217
- }
218
- }
219
-
220
-
221
- }
222
-
223
-
224
- endif; // Class exists check
1
+ <?php
2
+ /**
3
+ * WooCommerce Plugin Framework
4
+ *
5
+ * This source file is subject to the GNU General Public License v3.0
6
+ * that is bundled with this package in the file license.txt.
7
+ * It is also available through the world-wide-web at this URL:
8
+ * http://www.gnu.org/licenses/gpl-3.0.html
9
+ * If you did not receive a copy of the license and are unable to
10
+ * obtain it through the world-wide-web, please send an email
11
+ * to license@skyverge.com so we can send you a copy immediately.
12
+ *
13
+ * DISCLAIMER
14
+ *
15
+ * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
+ * versions in the future. If you wish to customize the plugin for your
17
+ * needs please refer to http://www.skyverge.com
18
+ *
19
+ * @package SkyVerge/WooCommerce/Compatibility
20
+ * @author SkyVerge
21
+ * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
+ */
24
+
25
+ defined( 'ABSPATH' ) or exit;
26
+
27
+ if ( ! class_exists( 'BEWPI_WC_Data_Compatibility' ) ) :
28
+
29
+ /**
30
+ * WooCommerce data compatibility class.
31
+ *
32
+ * @since 4.6.0
33
+ */
34
+ abstract class BEWPI_WC_Data_Compatibility {
35
+
36
+
37
+ /**
38
+ * Gets an object property.
39
+ *
40
+ * @since 4.6.0
41
+ *
42
+ * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
43
+ * @param string $prop the property name
44
+ * @param string $context if 'view' then the value will be filtered
45
+ * @param array $compat_props Compatibility properties.
46
+ *
47
+ * @return mixed
48
+ */
49
+ public static function get_prop( $object, $prop, $context = 'edit', $compat_props = array() ) {
50
+
51
+ $value = '';
52
+
53
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
54
+
55
+ if ( is_callable( array( $object, "get_{$prop}" ) ) ) {
56
+ $value = $object->{"get_{$prop}"}( $context );
57
+ }
58
+
59
+ } else {
60
+
61
+ // backport the property name
62
+ if ( isset( $compat_props[ $prop ] ) ) {
63
+ $prop = $compat_props[ $prop ];
64
+ }
65
+
66
+ // if this is the 'view' context and there is an accessor method, use it
67
+ if ( is_callable( array( $object, "get_{$prop}" ) ) && 'view' === $context ) {
68
+ $value = $object->{"get_{$prop}"}();
69
+ } else {
70
+ $value = $object->$prop;
71
+ }
72
+ }
73
+
74
+ return $value;
75
+ }
76
+
77
+
78
+ /**
79
+ * Sets an object's properties.
80
+ *
81
+ * Note that this does not save any data to the database.
82
+ *
83
+ * @since 4.6.0
84
+ *
85
+ * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
86
+ * @param array $props the new properties as $key => $value
87
+ * @param array $compat_props Compatibility properties.
88
+ *
89
+ * @return \WC_Data
90
+ */
91
+ public static function set_props( $object, $props, $compat_props = array() ) {
92
+
93
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
94
+
95
+ $object->set_props( $props );
96
+
97
+ } else {
98
+
99
+ foreach ( $props as $prop => $value ) {
100
+
101
+ if ( isset( $compat_props[ $prop ] ) ) {
102
+ $prop = $compat_props[ $prop ];
103
+ }
104
+
105
+ $object->$prop = $value;
106
+ }
107
+ }
108
+
109
+ return $object;
110
+ }
111
+
112
+
113
+ /**
114
+ * Gets an object's stored meta value.
115
+ *
116
+ * @since 4.6.0
117
+ *
118
+ * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
119
+ * @param string $key the meta key
120
+ * @param bool $single whether to get the meta as a single item. Defaults to `true`
121
+ * @param string $context if 'view' then the value will be filtered
122
+ *
123
+ * @return mixed
124
+ */
125
+ public static function get_meta( $object, $key = '', $single = true, $context = 'edit' ) {
126
+
127
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
128
+
129
+ $value = $object->get_meta( $key, $single, $context );
130
+
131
+ } else {
132
+
133
+ $object_id = is_callable( array( $object, 'get_id' ) ) ? $object->get_id() : $object->id;
134
+
135
+ $value = get_post_meta( $object_id, $key, $single );
136
+ }
137
+
138
+ return $value;
139
+ }
140
+
141
+
142
+ /**
143
+ * Stores an object meta value.
144
+ *
145
+ * @since 4.6.0
146
+ *
147
+ * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
148
+ * @param string $key the meta key
149
+ * @param string $value the meta value
150
+ * @param bool $unique Optional. Whether the meta should be unique.
151
+ */
152
+ public static function add_meta_data( $object, $key, $value, $unique = false ) {
153
+
154
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
155
+
156
+ $object->add_meta_data( $key, $value, $unique );
157
+
158
+ $object->save_meta_data();
159
+
160
+ } else {
161
+
162
+ $object_id = is_callable( array( $object, 'get_id' ) ) ? $object->get_id() : $object->id;
163
+
164
+ add_post_meta( $object_id, $key, $value, $unique );
165
+ }
166
+ }
167
+
168
+
169
+ /**
170
+ * Updates an object's stored meta value.
171
+ *
172
+ * @since 4.6.0
173
+ *
174
+ * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
175
+ * @param string $key the meta key
176
+ * @param string $value the meta value
177
+ * @param int|string $meta_id Optional. The specific meta ID to update
178
+ */
179
+ public static function update_meta_data( $object, $key, $value, $meta_id = '' ) {
180
+
181
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
182
+
183
+ $object->update_meta_data( $key, $value, $meta_id );
184
+
185
+ $object->save_meta_data();
186
+
187
+ } else {
188
+
189
+ $object_id = is_callable( array( $object, 'get_id' ) ) ? $object->get_id() : $object->id;
190
+
191
+ update_post_meta( $object_id, $key, $value );
192
+ }
193
+ }
194
+
195
+
196
+ /**
197
+ * Deletes an object's stored meta value.
198
+ *
199
+ * @since 4.6.0
200
+ *
201
+ * @param \WC_Data $object the data object, likely \WC_Order or \WC_Product
202
+ * @param string $key the meta key
203
+ */
204
+ public static function delete_meta_data( $object, $key ) {
205
+
206
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
207
+
208
+ $object->delete_meta_data( $key );
209
+
210
+ $object->save_meta_data();
211
+
212
+ } else {
213
+
214
+ $object_id = is_callable( array( $object, 'get_id' ) ) ? $object->get_id() : $object->id;
215
+
216
+ delete_post_meta( $object_id, $key );
217
+ }
218
+ }
219
+
220
+
221
+ }
222
+
223
+
224
+ endif; // Class exists check
includes/compatibility/class-wc-core-compatibility.php CHANGED
@@ -1,253 +1,253 @@
1
- <?php
2
- /**
3
- * WooCommerce Plugin Framework
4
- *
5
- * This source file is subject to the GNU General Public License v3.0
6
- * that is bundled with this package in the file license.txt.
7
- * It is also available through the world-wide-web at this URL:
8
- * http://www.gnu.org/licenses/gpl-3.0.html
9
- * If you did not receive a copy of the license and are unable to
10
- * obtain it through the world-wide-web, please send an email
11
- * to license@skyverge.com so we can send you a copy immediately.
12
- *
13
- * DISCLAIMER
14
- *
15
- * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
- * versions in the future. If you wish to customize the plugin for your
17
- * needs please refer to http://www.skyverge.com
18
- *
19
- * @package SkyVerge/WooCommerce/Compatibility
20
- * @author SkyVerge
21
- * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
- * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
- */
24
-
25
- defined( 'ABSPATH' ) or exit;
26
-
27
- if ( ! class_exists( 'BEWPI_WC_Core_Compatibility' ) ) :
28
-
29
- /**
30
- * WooCommerce Compatibility Utility Class
31
- *
32
- * The unfortunate purpose of this class is to provide a single point of
33
- * compatibility functions for dealing with supporting multiple versions
34
- * of WooCommerce and various extensions.
35
- *
36
- * The expected procedure is to remove methods from this class, using the
37
- * latest ones directly in code, as support for older versions of WooCommerce
38
- * are dropped.
39
- *
40
- * Current Compatibility
41
- * + Core 2.5.5 - 3.0.x
42
- *
43
- *
44
- * @since 2.0.0
45
- */
46
- class BEWPI_WC_Core_Compatibility {
47
-
48
- /**
49
- * Backports wc_get_order() to pre-2.2.0
50
- *
51
- * @since 4.3.0
52
- * @return \WC_Order $order order object
53
- */
54
- public static function get_order( $order_id ) {
55
-
56
- if ( function_exists( 'wc_get_order' ) ) {
57
-
58
- return wc_get_order( $order_id );
59
-
60
- } else {
61
-
62
- return new \WC_Order( $order_id );
63
- }
64
- }
65
-
66
-
67
- /**
68
- * Backports wc_checkout_is_https() to 2.4.x
69
- *
70
- * @since 4.3.0
71
- * @return bool
72
- */
73
- public static function wc_checkout_is_https() {
74
-
75
- if ( self::is_wc_version_gte_2_5() ) {
76
-
77
- return wc_checkout_is_https();
78
-
79
- } else {
80
-
81
- return wc_site_is_https() || 'yes' === get_option( 'woocommerce_force_ssl_checkout' ) || class_exists( 'WordPressHTTPS' ) || strstr( wc_get_page_permalink( 'checkout' ), 'https:' );
82
- }
83
- }
84
-
85
-
86
- /**
87
- * Backports wc_help_tip() to WC 2.4.x
88
- *
89
- * @link https://github.com/woothemes/woocommerce/pull/9417
90
- *
91
- * @since 4.2.0
92
- *
93
- * @param string $tip help tip content, HTML allowed if $has_html is true
94
- * @param bool $has_html false by default, true to indicate tip content has HTML
95
- *
96
- * @return string help tip HTML, a <span> in WC 2.5, <img> in WC 2.4
97
- */
98
- public static function wc_help_tip( $tip, $has_html = false ) {
99
-
100
- if ( self::is_wc_version_gte_2_5() ) {
101
-
102
- return wc_help_tip( $tip, $has_html );
103
-
104
- } else {
105
-
106
- $tip = $has_html ? wc_sanitize_tooltip( $tip ) : esc_attr( $tip );
107
-
108
- return sprintf( '<img class="help_tip" data-tip="%1$s" src="%2$s" height="16" width="16" />', $tip, esc_url( WC()->plugin_url() ) . '/assets/images/help.png' );
109
- }
110
- }
111
-
112
-
113
- /**
114
- * Helper method to get the version of the currently installed WooCommerce
115
- *
116
- * @since 3.0.0
117
- * @return string woocommerce version number or null
118
- */
119
- protected static function get_wc_version() {
120
-
121
- return defined( 'WC_VERSION' ) && WC_VERSION ? WC_VERSION : null;
122
- }
123
-
124
-
125
- /**
126
- * Determines if the installed version of WooCommerce is 2.2.0 or greater.
127
- *
128
- * @since 4.2.0
129
- * @return bool
130
- */
131
- public static function is_wc_version_gte_2_2() {
132
- return self::get_wc_version() && version_compare( self::get_wc_version(), '2.2', '>=' );
133
- }
134
-
135
-
136
- /**
137
- * Determines if the installed version of WooCommerce is less than 2.2.0
138
- *
139
- * @since 4.2.0
140
- * @return bool
141
- */
142
- public static function is_wc_version_lt_2_2() {
143
- return self::get_wc_version() && version_compare( self::get_wc_version(), '2.2', '<' );
144
- }
145
-
146
-
147
- /**
148
- * Determines if the installed version of WooCommerce is 2.5.0 or greater.
149
- *
150
- * @since 4.2.0
151
- * @return bool
152
- */
153
- public static function is_wc_version_gte_2_5() {
154
- return self::get_wc_version() && version_compare( self::get_wc_version(), '2.5', '>=' );
155
- }
156
-
157
-
158
- /**
159
- * Determines if the installed version of WooCommerce is less than 2.5.0
160
- *
161
- * @since 4.2.0
162
- * @return bool
163
- */
164
- public static function is_wc_version_lt_2_5() {
165
- return self::get_wc_version() && version_compare( self::get_wc_version(), '2.5', '<' );
166
- }
167
-
168
-
169
- /**
170
- * Determines if the installed version of WooCommerce is 2.6.0 or greater.
171
- *
172
- * @since 4.4.0
173
- * @return bool
174
- */
175
- public static function is_wc_version_gte_2_6() {
176
- return self::get_wc_version() && version_compare( self::get_wc_version(), '2.6', '>=' );
177
- }
178
-
179
-
180
- /**
181
- * Determines if the installed version of WooCommerce is less than 2.6.0
182
- *
183
- * @since 4.4.0
184
- * @return bool
185
- */
186
- public static function is_wc_version_lt_2_6() {
187
- return self::get_wc_version() && version_compare( self::get_wc_version(), '2.6', '<' );
188
- }
189
-
190
-
191
- /**
192
- * Determines if the installed version of WooCommerce is 3.0.0 or greater.
193
- *
194
- * @since 4.6.0-dev
195
- * @return bool
196
- */
197
- public static function is_wc_version_gte_3_0() {
198
- return self::get_wc_version() && version_compare( self::get_wc_version(), '3.0', '>=' );
199
- }
200
-
201
-
202
- /**
203
- * Determines if the installed version of WooCommerce is less than 3.0.0
204
- *
205
- * @since 4.6.0-dev
206
- * @return bool
207
- */
208
- public static function is_wc_version_lt_3_0() {
209
- return self::get_wc_version() && version_compare( self::get_wc_version(), '3.0', '<' );
210
- }
211
-
212
- /**
213
- * Returns true if the installed version of WooCommerce is greater than $version
214
- *
215
- * @since 2.0.0
216
- *
217
- * @param string $version the version to compare
218
- *
219
- * @return boolean true if the installed version of WooCommerce is > $version
220
- */
221
- public static function is_wc_version_gt( $version ) {
222
- return self::get_wc_version() && version_compare( self::get_wc_version(), $version, '>' );
223
- }
224
-
225
-
226
- /** WordPress core ******************************************************/
227
-
228
-
229
- /**
230
- * Normalizes a WooCommerce page screen ID.
231
- *
232
- * Needed because WordPress uses a menu title (which is translatable), not slug, to generate screen ID.
233
- * See details in: https://core.trac.wordpress.org/ticket/21454
234
- * TODO: Add WP version check when https://core.trac.wordpress.org/ticket/18857 is addressed {BR 2016-12-12}
235
- *
236
- * @since 4.6.0-dev
237
- *
238
- * @param string $slug The slug for the screen ID to normalize (minus `woocommerce_page_`).
239
- *
240
- * @return string Normalized screen ID.
241
- */
242
- public static function normalize_wc_screen_id( $slug = 'wc-settings' ) {
243
-
244
- // The textdomain usage is intentional here, we need to match the menu title.
245
- $prefix = sanitize_title( __( 'WooCommerce', 'woocommerce' ) );
246
-
247
- return $prefix . '_page_' . $slug;
248
- }
249
-
250
-
251
- }
252
-
253
- endif;
1
+ <?php
2
+ /**
3
+ * WooCommerce Plugin Framework
4
+ *
5
+ * This source file is subject to the GNU General Public License v3.0
6
+ * that is bundled with this package in the file license.txt.
7
+ * It is also available through the world-wide-web at this URL:
8
+ * http://www.gnu.org/licenses/gpl-3.0.html
9
+ * If you did not receive a copy of the license and are unable to
10
+ * obtain it through the world-wide-web, please send an email
11
+ * to license@skyverge.com so we can send you a copy immediately.
12
+ *
13
+ * DISCLAIMER
14
+ *
15
+ * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
+ * versions in the future. If you wish to customize the plugin for your
17
+ * needs please refer to http://www.skyverge.com
18
+ *
19
+ * @package SkyVerge/WooCommerce/Compatibility
20
+ * @author SkyVerge
21
+ * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
+ */
24
+
25
+ defined( 'ABSPATH' ) or exit;
26
+
27
+ if ( ! class_exists( 'BEWPI_WC_Core_Compatibility' ) ) :
28
+
29
+ /**
30
+ * WooCommerce Compatibility Utility Class
31
+ *
32
+ * The unfortunate purpose of this class is to provide a single point of
33
+ * compatibility functions for dealing with supporting multiple versions
34
+ * of WooCommerce and various extensions.
35
+ *
36
+ * The expected procedure is to remove methods from this class, using the
37
+ * latest ones directly in code, as support for older versions of WooCommerce
38
+ * are dropped.
39
+ *
40
+ * Current Compatibility
41
+ * + Core 2.5.5 - 3.0.x
42
+ *
43
+ *
44
+ * @since 2.0.0
45
+ */
46
+ class BEWPI_WC_Core_Compatibility {
47
+
48
+ /**
49
+ * Backports wc_get_order() to pre-2.2.0
50
+ *
51
+ * @since 4.3.0
52
+ * @return \WC_Order $order order object
53
+ */
54
+ public static function get_order( $order_id ) {
55
+
56
+ if ( function_exists( 'wc_get_order' ) ) {
57
+
58
+ return wc_get_order( $order_id );
59
+
60
+ } else {
61
+
62
+ return new \WC_Order( $order_id );
63
+ }
64
+ }
65
+
66
+
67
+ /**
68
+ * Backports wc_checkout_is_https() to 2.4.x
69
+ *
70
+ * @since 4.3.0
71
+ * @return bool
72
+ */
73
+ public static function wc_checkout_is_https() {
74
+
75
+ if ( self::is_wc_version_gte_2_5() ) {
76
+
77
+ return wc_checkout_is_https();
78
+
79
+ } else {
80
+
81
+ return wc_site_is_https() || 'yes' === get_option( 'woocommerce_force_ssl_checkout' ) || class_exists( 'WordPressHTTPS' ) || strstr( wc_get_page_permalink( 'checkout' ), 'https:' );
82
+ }
83
+ }
84
+
85
+
86
+ /**
87
+ * Backports wc_help_tip() to WC 2.4.x
88
+ *
89
+ * @link https://github.com/woothemes/woocommerce/pull/9417
90
+ *
91
+ * @since 4.2.0
92
+ *
93
+ * @param string $tip help tip content, HTML allowed if $has_html is true
94
+ * @param bool $has_html false by default, true to indicate tip content has HTML
95
+ *
96
+ * @return string help tip HTML, a <span> in WC 2.5, <img> in WC 2.4
97
+ */
98
+ public static function wc_help_tip( $tip, $has_html = false ) {
99
+
100
+ if ( self::is_wc_version_gte_2_5() ) {
101
+
102
+ return wc_help_tip( $tip, $has_html );
103
+
104
+ } else {
105
+
106
+ $tip = $has_html ? wc_sanitize_tooltip( $tip ) : esc_attr( $tip );
107
+
108
+ return sprintf( '<img class="help_tip" data-tip="%1$s" src="%2$s" height="16" width="16" />', $tip, esc_url( WC()->plugin_url() ) . '/assets/images/help.png' );
109
+ }
110
+ }
111
+
112
+
113
+ /**
114
+ * Helper method to get the version of the currently installed WooCommerce
115
+ *
116
+ * @since 3.0.0
117
+ * @return string woocommerce version number or null
118
+ */
119
+ protected static function get_wc_version() {
120
+
121
+ return defined( 'WC_VERSION' ) && WC_VERSION ? WC_VERSION : null;
122
+ }
123
+
124
+
125
+ /**
126
+ * Determines if the installed version of WooCommerce is 2.2.0 or greater.
127
+ *
128
+ * @since 4.2.0
129
+ * @return bool
130
+ */
131
+ public static function is_wc_version_gte_2_2() {
132
+ return self::get_wc_version() && version_compare( self::get_wc_version(), '2.2', '>=' );
133
+ }
134
+
135
+
136
+ /**
137
+ * Determines if the installed version of WooCommerce is less than 2.2.0
138
+ *
139
+ * @since 4.2.0
140
+ * @return bool
141
+ */
142
+ public static function is_wc_version_lt_2_2() {
143
+ return self::get_wc_version() && version_compare( self::get_wc_version(), '2.2', '<' );
144
+ }
145
+
146
+
147
+ /**
148
+ * Determines if the installed version of WooCommerce is 2.5.0 or greater.
149
+ *
150
+ * @since 4.2.0
151
+ * @return bool
152
+ */
153
+ public static function is_wc_version_gte_2_5() {
154
+ return self::get_wc_version() && version_compare( self::get_wc_version(), '2.5', '>=' );
155
+ }
156
+
157
+
158
+ /**
159
+ * Determines if the installed version of WooCommerce is less than 2.5.0
160
+ *
161
+ * @since 4.2.0
162
+ * @return bool
163
+ */
164
+ public static function is_wc_version_lt_2_5() {
165
+ return self::get_wc_version() && version_compare( self::get_wc_version(), '2.5', '<' );
166
+ }
167
+
168
+
169
+ /**
170
+ * Determines if the installed version of WooCommerce is 2.6.0 or greater.
171
+ *
172
+ * @since 4.4.0
173
+ * @return bool
174
+ */
175
+ public static function is_wc_version_gte_2_6() {
176
+ return self::get_wc_version() && version_compare( self::get_wc_version(), '2.6', '>=' );
177
+ }
178
+
179
+
180
+ /**
181
+ * Determines if the installed version of WooCommerce is less than 2.6.0
182
+ *
183
+ * @since 4.4.0
184
+ * @return bool
185
+ */
186
+ public static function is_wc_version_lt_2_6() {
187
+ return self::get_wc_version() && version_compare( self::get_wc_version(), '2.6', '<' );
188
+ }
189
+
190
+
191
+ /**
192
+ * Determines if the installed version of WooCommerce is 3.0.0 or greater.
193
+ *
194
+ * @since 4.6.0-dev
195
+ * @return bool
196
+ */
197
+ public static function is_wc_version_gte_3_0() {
198
+ return self::get_wc_version() && version_compare( self::get_wc_version(), '3.0', '>=' );
199
+ }
200
+
201
+
202
+ /**
203
+ * Determines if the installed version of WooCommerce is less than 3.0.0
204
+ *
205
+ * @since 4.6.0-dev
206
+ * @return bool
207
+ */
208
+ public static function is_wc_version_lt_3_0() {
209
+ return self::get_wc_version() && version_compare( self::get_wc_version(), '3.0', '<' );
210
+ }
211
+
212
+ /**
213
+ * Returns true if the installed version of WooCommerce is greater than $version
214
+ *
215
+ * @since 2.0.0
216
+ *
217
+ * @param string $version the version to compare
218
+ *
219
+ * @return boolean true if the installed version of WooCommerce is > $version
220
+ */
221
+ public static function is_wc_version_gt( $version ) {
222
+ return self::get_wc_version() && version_compare( self::get_wc_version(), $version, '>' );
223
+ }
224
+
225
+
226
+ /** WordPress core ******************************************************/
227
+
228
+
229
+ /**
230
+ * Normalizes a WooCommerce page screen ID.
231
+ *
232
+ * Needed because WordPress uses a menu title (which is translatable), not slug, to generate screen ID.
233
+ * See details in: https://core.trac.wordpress.org/ticket/21454
234
+ * TODO: Add WP version check when https://core.trac.wordpress.org/ticket/18857 is addressed {BR 2016-12-12}
235
+ *
236
+ * @since 4.6.0-dev
237
+ *
238
+ * @param string $slug The slug for the screen ID to normalize (minus `woocommerce_page_`).
239
+ *
240
+ * @return string Normalized screen ID.
241
+ */
242
+ public static function normalize_wc_screen_id( $slug = 'wc-settings' ) {
243
+
244
+ // The textdomain usage is intentional here, we need to match the menu title.
245
+ $prefix = sanitize_title( __( 'WooCommerce', 'woocommerce' ) );
246
+
247
+ return $prefix . '_page_' . $slug;
248
+ }
249
+
250
+
251
+ }
252
+
253
+ endif;
includes/compatibility/class-wc-datetime.php CHANGED
@@ -1,109 +1,109 @@
1
- <?php
2
- /**
3
- * WooCommerce Plugin Framework
4
- *
5
- * This source file is subject to the GNU General Public License v3.0
6
- * that is bundled with this package in the file license.txt.
7
- * It is also available through the world-wide-web at this URL:
8
- * http://www.gnu.org/licenses/gpl-3.0.html
9
- * If you did not receive a copy of the license and are unable to
10
- * obtain it through the world-wide-web, please send an email
11
- * to license@skyverge.com so we can send you a copy immediately.
12
- *
13
- * DISCLAIMER
14
- *
15
- * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
- * versions in the future. If you wish to customize the plugin for your
17
- * needs please refer to http://www.skyverge.com
18
- *
19
- * @package SkyVerge/WooCommerce/Compatibility
20
- * @author SkyVerge
21
- * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
- * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
- */
24
-
25
- defined( 'ABSPATH' ) or exit;
26
-
27
- if ( ! class_exists( 'BEWPI_WC_DateTime' ) ) :
28
-
29
- /**
30
- * Backports the \WC_DateTime class to WooCommerce pre-3.0.0
31
- *
32
- * TODO: Remove this when WC 3.x can be required {CW 2017-03-16}
33
- *
34
- * @since 4.6.0
35
- */
36
- class BEWPI_WC_DateTime extends DateTime {
37
-
38
-
39
- /**
40
- * Outputs an ISO 8601 date string in local timezone.
41
- *
42
- * @since 4.6.0
43
- * @return string
44
- */
45
- public function __toString() {
46
-
47
- return $this->format( DATE_ATOM );
48
- }
49
-
50
-
51
- /**
52
- * Gets the UTC timestamp.
53
- *
54
- * Missing in PHP 5.2.
55
- *
56
- * @since 4.6.0
57
- * @return int
58
- */
59
- public function getTimestamp() {
60
-
61
- return method_exists( 'DateTime', 'getTimestamp' ) ? parent::getTimestamp() : $this->format( 'U' );
62
- }
63
-
64
-
65
- /**
66
- * Gets the timestamp with the WordPress timezone offset added or subtracted.
67
- *
68
- * @since 4.6.0
69
- * @return int
70
- */
71
- public function getOffsetTimestamp() {
72
-
73
- return $this->getTimestamp() + $this->getOffset();
74
- }
75
-
76
-
77
- /**
78
- * Gets a date based on the offset timestamp.
79
- *
80
- * @since 4.6.0
81
- *
82
- * @param string $format date format
83
- *
84
- * @return string
85
- */
86
- public function date( $format ) {
87
-
88
- return gmdate( $format, $this->getOffsetTimestamp() );
89
- }
90
-
91
-
92
- /**
93
- * Gets a localised date based on offset timestamp.
94
- *
95
- * @since 4.6.0
96
- *
97
- * @param string $format date format
98
- *
99
- * @return string
100
- */
101
- public function date_i18n( $format = 'Y-m-d' ) {
102
-
103
- return date_i18n( $format, $this->getOffsetTimestamp() );
104
- }
105
-
106
-
107
- }
108
-
109
- endif;
1
+ <?php
2
+ /**
3
+ * WooCommerce Plugin Framework
4
+ *
5
+ * This source file is subject to the GNU General Public License v3.0
6
+ * that is bundled with this package in the file license.txt.
7
+ * It is also available through the world-wide-web at this URL:
8
+ * http://www.gnu.org/licenses/gpl-3.0.html
9
+ * If you did not receive a copy of the license and are unable to
10
+ * obtain it through the world-wide-web, please send an email
11
+ * to license@skyverge.com so we can send you a copy immediately.
12
+ *
13
+ * DISCLAIMER
14
+ *
15
+ * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
+ * versions in the future. If you wish to customize the plugin for your
17
+ * needs please refer to http://www.skyverge.com
18
+ *
19
+ * @package SkyVerge/WooCommerce/Compatibility
20
+ * @author SkyVerge
21
+ * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
+ */
24
+
25
+ defined( 'ABSPATH' ) or exit;
26
+
27
+ if ( ! class_exists( 'BEWPI_WC_DateTime' ) ) :
28
+
29
+ /**
30
+ * Backports the \WC_DateTime class to WooCommerce pre-3.0.0
31
+ *
32
+ * TODO: Remove this when WC 3.x can be required {CW 2017-03-16}
33
+ *
34
+ * @since 4.6.0
35
+ */
36
+ class BEWPI_WC_DateTime extends DateTime {
37
+
38
+
39
+ /**
40
+ * Outputs an ISO 8601 date string in local timezone.
41
+ *
42
+ * @since 4.6.0
43
+ * @return string
44
+ */
45
+ public function __toString() {
46
+
47
+ return $this->format( DATE_ATOM );
48
+ }
49
+
50
+
51
+ /**
52
+ * Gets the UTC timestamp.
53
+ *
54
+ * Missing in PHP 5.2.
55
+ *
56
+ * @since 4.6.0
57
+ * @return int
58
+ */
59
+ public function getTimestamp() {
60
+
61
+ return method_exists( 'DateTime', 'getTimestamp' ) ? parent::getTimestamp() : $this->format( 'U' );
62
+ }
63
+
64
+
65
+ /**
66
+ * Gets the timestamp with the WordPress timezone offset added or subtracted.
67
+ *
68
+ * @since 4.6.0
69
+ * @return int
70
+ */
71
+ public function getOffsetTimestamp() {
72
+
73
+ return $this->getTimestamp() + $this->getOffset();
74
+ }
75
+
76
+
77
+ /**
78
+ * Gets a date based on the offset timestamp.
79
+ *
80
+ * @since 4.6.0
81
+ *
82
+ * @param string $format date format
83
+ *
84
+ * @return string
85
+ */
86
+ public function date( $format ) {
87
+
88
+ return gmdate( $format, $this->getOffsetTimestamp() );
89
+ }
90
+
91
+
92
+ /**
93
+ * Gets a localised date based on offset timestamp.
94
+ *
95
+ * @since 4.6.0
96
+ *
97
+ * @param string $format date format
98
+ *
99
+ * @return string
100
+ */
101
+ public function date_i18n( $format = 'Y-m-d' ) {
102
+
103
+ return date_i18n( $format, $this->getOffsetTimestamp() );
104
+ }
105
+
106
+
107
+ }
108
+
109
+ endif;
includes/compatibility/class-wc-order-compatibility.php CHANGED
@@ -1,517 +1,517 @@
1
- <?php
2
- /**
3
- * WooCommerce Plugin Framework
4
- *
5
- * This source file is subject to the GNU General Public License v3.0
6
- * that is bundled with this package in the file license.txt.
7
- * It is also available through the world-wide-web at this URL:
8
- * http://www.gnu.org/licenses/gpl-3.0.html
9
- * If you did not receive a copy of the license and are unable to
10
- * obtain it through the world-wide-web, please send an email
11
- * to license@skyverge.com so we can send you a copy immediately.
12
- *
13
- * DISCLAIMER
14
- *
15
- * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
- * versions in the future. If you wish to customize the plugin for your
17
- * needs please refer to http://www.skyverge.com
18
- *
19
- * @package SkyVerge/WooCommerce/Compatibility
20
- * @author SkyVerge
21
- * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
- * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
- */
24
-
25
- defined( 'ABSPATH' ) or exit;
26
-
27
- if ( ! class_exists( 'BEWPI_WC_Order_Compatibility' ) ) :
28
-
29
- /**
30
- * WooCommerce order compatibility class.
31
- *
32
- * @since 4.6.0
33
- */
34
- class BEWPI_WC_Order_Compatibility extends BEWPI_WC_Data_Compatibility {
35
-
36
-
37
- /** @var array mapped compatibility properties, as `$new_prop => $old_prop` */
38
- protected static $compat_props = array(
39
- 'date_completed' => 'completed_date',
40
- 'date_paid' => 'paid_date',
41
- 'date_modified' => 'modified_date',
42
- 'date_created' => 'order_date',
43
- 'customer_id' => 'customer_user',
44
- 'discount' => 'cart_discount',
45
- 'discount_tax' => 'cart_discount_tax',
46
- 'shipping_total' => 'total_shipping',
47
- 'type' => 'order_type',
48
- 'currency' => 'order_currency',
49
- 'version' => 'order_version',
50
- );
51
-
52
- /**
53
- * Backports WC_Order::get_id() method to pre-2.6.0
54
- *
55
- * @since 4.2.0
56
- * @param WC_Abstract_Order $order order object
57
- *
58
- * @return string|int order ID
59
- */
60
- public static function get_id( $order ) {
61
-
62
- if ( method_exists( $order, 'get_id' ) ) {
63
-
64
- return $order->get_id();
65
-
66
- } else {
67
-
68
- return isset( $order->id ) ? $order->id : false;
69
- }
70
- }
71
-
72
- /**
73
- * Backports WC_Order::get_currency() method.
74
- *
75
- * @param WC_Order $order order object.
76
- *
77
- * @return string.
78
- */
79
- public static function get_currency( $order ) {
80
- return method_exists( 'WC_Order', 'get_currency' ) ? $order->get_currency() : $order->get_order_currency();
81
- }
82
-
83
- /**
84
- * Backports WC_Order::get_customer_note() method.
85
- *
86
- * @param WC_Order $order order object.
87
- *
88
- * @return string.
89
- */
90
- public static function get_customer_note( $order ) {
91
- return method_exists( 'WC_Order', 'get_customer_note' ) ? $order->get_customer_note() : $order->customer_note;
92
- }
93
-
94
- /**
95
- * Gets an order's created date.
96
- *
97
- * @since 4.6.0
98
- *
99
- * @param \WC_Abstract_Order $order order object
100
- * @param string $context if 'view' then the value will be filtered
101
- *
102
- * @return \WC_DateTime|null
103
- */
104
- public static function get_date_created( WC_Abstract_Order $order, $context = 'edit' ) {
105
-
106
- return self::get_date_prop( $order, 'created', $context );
107
- }
108
-
109
-
110
- /**
111
- * Gets an order's last modified date.
112
- *
113
- * @since 4.6.0
114
- *
115
- * @param \WC_Order $order order object
116
- * @param string $context if 'view' then the value will be filtered
117
- *
118
- * @return \WC_DateTime|null
119
- */
120
- public static function get_date_modified( WC_Order $order, $context = 'edit' ) {
121
-
122
- return self::get_date_prop( $order, 'modified', $context );
123
- }
124
-
125
-
126
- /**
127
- * Gets an order's paid date.
128
- *
129
- * @since 4.6.0
130
- *
131
- * @param \WC_Order $order order object
132
- * @param string $context if 'view' then the value will be filtered
133
- *
134
- * @return \WC_DateTime|null
135
- */
136
- public static function get_date_paid( WC_Order $order, $context = 'edit' ) {
137
-
138
- return self::get_date_prop( $order, 'paid', $context );
139
- }
140
-
141
-
142
- /**
143
- * Gets an order's completed date.
144
- *
145
- * @since 4.6.0
146
- *
147
- * @param \WC_Order $order order object
148
- * @param string $context if 'view' then the value will be filtered
149
- *
150
- * @return \WC_DateTime|null
151
- */
152
- public static function get_date_completed( WC_Order $order, $context = 'edit' ) {
153
-
154
- return self::get_date_prop( $order, 'completed', $context );
155
- }
156
-
157
-
158
- /**
159
- * Gets an order date.
160
- *
161
- * This should only be used to retrieve WC core date properties.
162
- *
163
- * @since 4.6.0
164
- *
165
- * @param \WC_Abstract_Order $order order object
166
- * @param string $type type of date to get
167
- * @param string $context if 'view' then the value will be filtered
168
- *
169
- * @return \WC_DateTime|null
170
- */
171
- public static function get_date_prop( WC_Abstract_Order $order, $type, $context = 'edit' ) {
172
-
173
- $date = null;
174
- $prop = "date_{$type}";
175
-
176
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
177
-
178
- $date = is_callable( array( $order, "get_{$prop}" ) ) ? $order->{"get_{$prop}"}( $context ) : null;
179
-
180
- } else {
181
-
182
- // backport the property name for WC < 3.0
183
- if ( isset( self::$compat_props[ $prop ] ) ) {
184
- $prop = self::$compat_props[ $prop ];
185
- }
186
-
187
- if ( $date = $order->$prop ) {
188
-
189
- try {
190
-
191
- $date = new BEWPI_WC_DateTime( $date, new DateTimeZone( wc_timezone_string() ) );
192
- $date->setTimezone( new DateTimeZone( wc_timezone_string() ) );
193
-
194
- } catch ( Exception $e ) {
195
-
196
- $date = null;
197
- }
198
- }
199
- }
200
-
201
- return $date;
202
- }
203
-
204
-
205
- /**
206
- * Gets an order property.
207
- *
208
- * @since 4.6.0
209
- *
210
- * @param \WC_Order $object the order object
211
- * @param string $prop the property name
212
- * @param string $context if 'view' then the value will be filtered
213
- *
214
- * @return mixed
215
- */
216
- public static function get_prop( $object, $prop, $context = 'edit', $compat_props = array() ) {
217
-
218
- // backport a few specific properties to pre-3.0
219
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_lt_3_0() ) {
220
-
221
- // convert the shipping_total prop for the edit context
222
- if ( 'shipping_total' === $prop && 'view' !== $context ) {
223
-
224
- $prop = 'order_shipping';
225
-
226
- // get the post_parent and bail early
227
- } elseif ( 'total' === $prop && 'view' !== $context ) {
228
-
229
- $prop = 'order_total';
230
-
231
- } elseif ( 'shipping_tax' === $prop && 'view' !== $context ) {
232
-
233
- $prop = 'order_shipping_tax';
234
-
235
- } elseif ( 'parent_id' === $prop ) {
236
-
237
- return $object->post->post_parent;
238
- }
239
- }
240
-
241
- return parent::get_prop( $object, $prop, $context, self::$compat_props );
242
- }
243
-
244
-
245
- /**
246
- * Sets an order's properties.
247
- *
248
- * Note that this does not save any data to the database.
249
- *
250
- * @since 4.6.0
251
- *
252
- * @param \WC_Order $object the order object
253
- * @param array $props the new properties as $key => $value
254
- *
255
- * @return \WC_Order
256
- */
257
- public static function set_props( $object, $props, $compat_props = array() ) {
258
-
259
- return parent::set_props( $object, $props, self::$compat_props );
260
- }
261
-
262
-
263
- /**
264
- * Order item CRUD compatibility method to add a coupon to an order.
265
- *
266
- * @since 4.6.0
267
- *
268
- * @param \WC_Order $order the order object
269
- * @param array $code the coupon code
270
- * @param int $discount the discount amount.
271
- * @param int $discount_tax the discount tax amount.
272
- *
273
- * @return int the order item ID
274
- */
275
- public static function add_coupon( WC_Order $order, $code = array(), $discount = 0, $discount_tax = 0 ) {
276
-
277
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
278
-
279
- $item = new WC_Order_Item_Coupon();
280
-
281
- $item->set_props( array(
282
- 'code' => $code,
283
- 'discount' => $discount,
284
- 'discount_tax' => $discount_tax,
285
- 'order_id' => $order->get_id(),
286
- ) );
287
-
288
- $item->save();
289
-
290
- $order->add_item( $item );
291
-
292
- return $item->get_id();
293
-
294
- } else {
295
-
296
- return $order->add_coupon( $code, $discount, $discount_tax );
297
- }
298
- }
299
-
300
-
301
- /**
302
- * Order item CRUD compatibility method to add a fee to an order.
303
- *
304
- * @since 4.6.0
305
- *
306
- * @param \WC_Order $order the order object
307
- * @param object $fee the fee to add
308
- *
309
- * @return int the order item ID
310
- */
311
- public static function add_fee( WC_Order $order, $fee ) {
312
-
313
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
314
-
315
- $item = new WC_Order_Item_Fee();
316
-
317
- $item->set_props( array(
318
- 'name' => $fee->name,
319
- 'tax_class' => $fee->taxable ? $fee->tax_class : 0,
320
- 'total' => $fee->amount,
321
- 'total_tax' => $fee->tax,
322
- 'taxes' => array(
323
- 'total' => $fee->tax_data,
324
- ),
325
- 'order_id' => $order->get_id(),
326
- ) );
327
-
328
- $item->save();
329
-
330
- $order->add_item( $item );
331
-
332
- return $item->get_id();
333
-
334
- } else {
335
-
336
- return $order->add_fee( $fee );
337
- }
338
- }
339
-
340
-
341
- /**
342
- * Order item CRUD compatibility method to update an order coupon.
343
- *
344
- * @since 4.6.0
345
- *
346
- * @param \WC_Order $order the order object
347
- * @param int|\WC_Order_Item $item the order item ID
348
- * @param array $args {
349
- * The coupon item args.
350
- *
351
- * @type string $code the coupon code
352
- * @type float $discount the coupon discount amount
353
- * @type float $discount_tax the coupon discount tax amount
354
- * }
355
- * @return int|bool the order item ID or false on failure
356
- */
357
- public static function update_coupon( WC_Order $order, $item, $args ) {
358
-
359
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
360
-
361
- if ( is_numeric( $item ) ) {
362
- $item = $order->get_item( $item );
363
- }
364
-
365
- if ( ! is_object( $item ) || ! $item->is_type( 'coupon' ) ) {
366
- return false;
367
- }
368
-
369
- if ( ! $order->get_id() ) {
370
- $order->save();
371
- }
372
-
373
- $item->set_order_id( $order->get_id() );
374
- $item->set_props( $args );
375
- $item->save();
376
-
377
- return $item->get_id();
378
-
379
- } else {
380
-
381
- // convert WC 3.0+ args for backwards compatibility
382
- if ( isset( $args['discount'] ) ) {
383
- $args['discount_amount'] = $args['discount'];
384
- }
385
- if ( isset( $args['discount_tax'] ) ) {
386
- $args['discount_amount_tax'] = $args['discount_tax'];
387
- }
388
-
389
- return $order->update_coupon( $item, $args );
390
- }
391
- }
392
-
393
-
394
- /**
395
- * Order item CRUD compatibility method to update an order fee.
396
- *
397
- * @since 4.6.0
398
- *
399
- * @param \WC_Order $order the order object
400
- * @param int|\WC_Order_Item $item the order item ID
401
- * @param array $args {
402
- * The fee item args.
403
- *
404
- * @type string $name the fee name
405
- * @type string $tax_class the fee's tax class
406
- * @type float $line_total the fee total amount
407
- * @type float $line_tax the fee tax amount
408
- * }
409
- * @return int|bool the order item ID or false on failure
410
- */
411
- public static function update_fee( WC_Order $order, $item, $args ) {
412
-
413
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
414
-
415
- if ( is_numeric( $item ) ) {
416
- $item = $order->get_item( $item );
417
- }
418
-
419
- if ( ! is_object( $item ) || ! $item->is_type( 'fee' ) ) {
420
- return false;
421
- }
422
-
423
- if ( ! $order->get_id() ) {
424
- $order->save();
425
- }
426
-
427
- $item->set_order_id( $order->get_id() );
428
- $item->set_props( $args );
429
- $item->save();
430
-
431
- return $item->get_id();
432
-
433
- } else {
434
-
435
- return $order->update_fee( $item, $args );
436
- }
437
- }
438
-
439
-
440
- /**
441
- * Backports wc_reduce_stock_levels() to pre-3.0.
442
- *
443
- * @since 4.6.0
444
- *
445
- * @param \WC_Order $order the order object
446
- */
447
- public static function reduce_stock_levels( WC_Order $order ) {
448
-
449
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
450
- wc_reduce_stock_levels( $order->get_id() );
451
- } else {
452
- $order->reduce_order_stock();
453
- }
454
- }
455
-
456
-
457
- /**
458
- * Backports wc_update_total_sales_counts() to pre-3.0.
459
- *
460
- * @since 4.6.0
461
- *
462
- * @param \WC_Order $order the order object
463
- */
464
- public static function update_total_sales_counts( WC_Order $order ) {
465
-
466
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
467
- wc_update_total_sales_counts( $order->get_id() );
468
- } else {
469
- $order->record_product_sales();
470
- }
471
- }
472
-
473
-
474
- /**
475
- * Determines if an order has an available shipping address.
476
- *
477
- * WooCommerce 3.0+ no longer fills the shipping address with the billing if
478
- * a shipping address was never set by the customer at checkout, as is the
479
- * case with virtual orders. This method is helpful for gateways that may
480
- * reject such transactions with blank shipping information.
481
- *
482
- * TODO: Remove when WC 3.0.4 can be required {CW 2017-04-17}
483
- *
484
- * @since 4.6.1
485
- *
486
- * @param \WC_Order $order order object
487
- *
488
- * @return bool
489
- */
490
- public static function has_shipping_address( WC_Order $order ) {
491
-
492
- return self::get_prop( $order, 'shipping_address_1' ) || self::get_prop( $order, 'shipping_address_2' );
493
- }
494
-
495
- /**
496
- * Get product.
497
- *
498
- * @param WC_Order $order order object.
499
- * @param object $item order product object.
500
- *
501
- * @return bool|WC_Product
502
- */
503
- public static function get_product( $order, $item ) {
504
-
505
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
506
- $product = $item->get_product();
507
- } else {
508
- $product = $order->get_product_from_item( $item );
509
- }
510
-
511
- return $product;
512
- }
513
-
514
- }
515
-
516
-
517
- endif; // Class exists check
1
+ <?php
2
+ /**
3
+ * WooCommerce Plugin Framework
4
+ *
5
+ * This source file is subject to the GNU General Public License v3.0
6
+ * that is bundled with this package in the file license.txt.
7
+ * It is also available through the world-wide-web at this URL:
8
+ * http://www.gnu.org/licenses/gpl-3.0.html
9
+ * If you did not receive a copy of the license and are unable to
10
+ * obtain it through the world-wide-web, please send an email
11
+ * to license@skyverge.com so we can send you a copy immediately.
12
+ *
13
+ * DISCLAIMER
14
+ *
15
+ * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
+ * versions in the future. If you wish to customize the plugin for your
17
+ * needs please refer to http://www.skyverge.com
18
+ *
19
+ * @package SkyVerge/WooCommerce/Compatibility
20
+ * @author SkyVerge
21
+ * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
+ */
24
+
25
+ defined( 'ABSPATH' ) or exit;
26
+
27
+ if ( ! class_exists( 'BEWPI_WC_Order_Compatibility' ) ) :
28
+
29
+ /**
30
+ * WooCommerce order compatibility class.
31
+ *
32
+ * @since 4.6.0
33
+ */
34
+ class BEWPI_WC_Order_Compatibility extends BEWPI_WC_Data_Compatibility {
35
+
36
+
37
+ /** @var array mapped compatibility properties, as `$new_prop => $old_prop` */
38
+ protected static $compat_props = array(
39
+ 'date_completed' => 'completed_date',
40
+ 'date_paid' => 'paid_date',
41
+ 'date_modified' => 'modified_date',
42
+ 'date_created' => 'order_date',
43
+ 'customer_id' => 'customer_user',
44
+ 'discount' => 'cart_discount',
45
+ 'discount_tax' => 'cart_discount_tax',
46
+ 'shipping_total' => 'total_shipping',
47
+ 'type' => 'order_type',
48
+ 'currency' => 'order_currency',
49
+ 'version' => 'order_version',
50
+ );
51
+
52
+ /**
53
+ * Backports WC_Order::get_id() method to pre-2.6.0
54
+ *
55
+ * @since 4.2.0
56
+ * @param WC_Abstract_Order $order order object
57
+ *
58
+ * @return string|int order ID
59
+ */
60
+ public static function get_id( $order ) {
61
+
62
+ if ( method_exists( $order, 'get_id' ) ) {
63
+
64
+ return $order->get_id();
65
+
66
+ } else {
67
+
68
+ return isset( $order->id ) ? $order->id : false;
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Backports WC_Order::get_currency() method.
74
+ *
75
+ * @param WC_Order $order order object.
76
+ *
77
+ * @return string.
78
+ */
79
+ public static function get_currency( $order ) {
80
+ return method_exists( 'WC_Order', 'get_currency' ) ? $order->get_currency() : $order->get_order_currency();
81
+ }
82
+
83
+ /**
84
+ * Backports WC_Order::get_customer_note() method.
85
+ *
86
+ * @param WC_Order $order order object.
87
+ *
88
+ * @return string.
89
+ */
90
+ public static function get_customer_note( $order ) {
91
+ return method_exists( 'WC_Order', 'get_customer_note' ) ? $order->get_customer_note() : $order->customer_note;
92
+ }
93
+
94
+ /**
95
+ * Gets an order's created date.
96
+ *
97
+ * @since 4.6.0
98
+ *
99
+ * @param \WC_Abstract_Order $order order object
100
+ * @param string $context if 'view' then the value will be filtered
101
+ *
102
+ * @return \WC_DateTime|null
103
+ */
104
+ public static function get_date_created( WC_Abstract_Order $order, $context = 'edit' ) {
105
+
106
+ return self::get_date_prop( $order, 'created', $context );
107
+ }
108
+
109
+
110
+ /**
111
+ * Gets an order's last modified date.
112
+ *
113
+ * @since 4.6.0
114
+ *
115
+ * @param \WC_Order $order order object
116
+ * @param string $context if 'view' then the value will be filtered
117
+ *
118
+ * @return \WC_DateTime|null
119
+ */
120
+ public static function get_date_modified( WC_Order $order, $context = 'edit' ) {
121
+
122
+ return self::get_date_prop( $order, 'modified', $context );
123
+ }
124
+
125
+
126
+ /**
127
+ * Gets an order's paid date.
128
+ *
129
+ * @since 4.6.0
130
+ *
131
+ * @param \WC_Order $order order object
132
+ * @param string $context if 'view' then the value will be filtered
133
+ *
134
+ * @return \WC_DateTime|null
135
+ */
136
+ public static function get_date_paid( WC_Order $order, $context = 'edit' ) {
137
+
138
+ return self::get_date_prop( $order, 'paid', $context );
139
+ }
140
+
141
+
142
+ /**
143
+ * Gets an order's completed date.
144
+ *
145
+ * @since 4.6.0
146
+ *
147
+ * @param \WC_Order $order order object
148
+ * @param string $context if 'view' then the value will be filtered
149
+ *
150
+ * @return \WC_DateTime|null
151
+ */
152
+ public static function get_date_completed( WC_Order $order, $context = 'edit' ) {
153
+
154
+ return self::get_date_prop( $order, 'completed', $context );
155
+ }
156
+
157
+
158
+ /**
159
+ * Gets an order date.
160
+ *
161
+ * This should only be used to retrieve WC core date properties.
162
+ *
163
+ * @since 4.6.0
164
+ *
165
+ * @param \WC_Abstract_Order $order order object
166
+ * @param string $type type of date to get
167
+ * @param string $context if 'view' then the value will be filtered
168
+ *
169
+ * @return \WC_DateTime|null
170
+ */
171
+ public static function get_date_prop( WC_Abstract_Order $order, $type, $context = 'edit' ) {
172
+
173
+ $date = null;
174
+ $prop = "date_{$type}";
175
+
176
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
177
+
178
+ $date = is_callable( array( $order, "get_{$prop}" ) ) ? $order->{"get_{$prop}"}( $context ) : null;
179
+
180
+ } else {
181
+
182
+ // backport the property name for WC < 3.0
183
+ if ( isset( self::$compat_props[ $prop ] ) ) {
184
+ $prop = self::$compat_props[ $prop ];
185
+ }
186
+
187
+ if ( $date = $order->$prop ) {
188
+
189
+ try {
190
+
191
+ $date = new BEWPI_WC_DateTime( $date, new DateTimeZone( wc_timezone_string() ) );
192
+ $date->setTimezone( new DateTimeZone( wc_timezone_string() ) );
193
+
194
+ } catch ( Exception $e ) {
195
+
196
+ $date = null;
197
+ }
198
+ }
199
+ }
200
+
201
+ return $date;
202
+ }
203
+
204
+
205
+ /**
206
+ * Gets an order property.
207
+ *
208
+ * @since 4.6.0
209
+ *
210
+ * @param \WC_Order $object the order object
211
+ * @param string $prop the property name
212
+ * @param string $context if 'view' then the value will be filtered
213
+ *
214
+ * @return mixed
215
+ */
216
+ public static function get_prop( $object, $prop, $context = 'edit', $compat_props = array() ) {
217
+
218
+ // backport a few specific properties to pre-3.0
219
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_lt_3_0() ) {
220
+
221
+ // convert the shipping_total prop for the edit context
222
+ if ( 'shipping_total' === $prop && 'view' !== $context ) {
223
+
224
+ $prop = 'order_shipping';
225
+
226
+ // get the post_parent and bail early
227
+ } elseif ( 'total' === $prop && 'view' !== $context ) {
228
+
229
+ $prop = 'order_total';
230
+
231
+ } elseif ( 'shipping_tax' === $prop && 'view' !== $context ) {
232
+
233
+ $prop = 'order_shipping_tax';
234
+
235
+ } elseif ( 'parent_id' === $prop ) {
236
+
237
+ return $object->post->post_parent;
238
+ }
239
+ }
240
+
241
+ return parent::get_prop( $object, $prop, $context, self::$compat_props );
242
+ }
243
+
244
+
245
+ /**
246
+ * Sets an order's properties.
247
+ *
248
+ * Note that this does not save any data to the database.
249
+ *
250
+ * @since 4.6.0
251
+ *
252
+ * @param \WC_Order $object the order object
253
+ * @param array $props the new properties as $key => $value
254
+ *
255
+ * @return \WC_Order
256
+ */
257
+ public static function set_props( $object, $props, $compat_props = array() ) {
258
+
259
+ return parent::set_props( $object, $props, self::$compat_props );
260
+ }
261
+
262
+
263
+ /**
264
+ * Order item CRUD compatibility method to add a coupon to an order.
265
+ *
266
+ * @since 4.6.0
267
+ *
268
+ * @param \WC_Order $order the order object
269
+ * @param array $code the coupon code
270
+ * @param int $discount the discount amount.
271
+ * @param int $discount_tax the discount tax amount.
272
+ *
273
+ * @return int the order item ID
274
+ */
275
+ public static function add_coupon( WC_Order $order, $code = array(), $discount = 0, $discount_tax = 0 ) {
276
+
277
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
278
+
279
+ $item = new WC_Order_Item_Coupon();
280
+
281
+ $item->set_props( array(
282
+ 'code' => $code,
283
+ 'discount' => $discount,
284
+ 'discount_tax' => $discount_tax,
285
+ 'order_id' => $order->get_id(),
286
+ ) );
287
+
288
+ $item->save();
289
+
290
+ $order->add_item( $item );
291
+
292
+ return $item->get_id();
293
+
294
+ } else {
295
+
296
+ return $order->add_coupon( $code, $discount, $discount_tax );
297
+ }
298
+ }
299
+
300
+
301
+ /**
302
+ * Order item CRUD compatibility method to add a fee to an order.
303
+ *
304
+ * @since 4.6.0
305
+ *
306
+ * @param \WC_Order $order the order object
307
+ * @param object $fee the fee to add
308
+ *
309
+ * @return int the order item ID
310
+ */
311
+ public static function add_fee( WC_Order $order, $fee ) {
312
+
313
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
314
+
315
+ $item = new WC_Order_Item_Fee();
316
+
317
+ $item->set_props( array(
318
+ 'name' => $fee->name,
319
+ 'tax_class' => $fee->taxable ? $fee->tax_class : 0,
320
+ 'total' => $fee->amount,
321
+ 'total_tax' => $fee->tax,
322
+ 'taxes' => array(
323
+ 'total' => $fee->tax_data,
324
+ ),
325
+ 'order_id' => $order->get_id(),
326
+ ) );
327
+
328
+ $item->save();
329
+
330
+ $order->add_item( $item );
331
+
332
+ return $item->get_id();
333
+
334
+ } else {
335
+
336
+ return $order->add_fee( $fee );
337
+ }
338
+ }
339
+
340
+
341
+ /**
342
+ * Order item CRUD compatibility method to update an order coupon.
343
+ *
344
+ * @since 4.6.0
345
+ *
346
+ * @param \WC_Order $order the order object
347
+ * @param int|\WC_Order_Item $item the order item ID
348
+ * @param array $args {
349
+ * The coupon item args.
350
+ *
351
+ * @type string $code the coupon code
352
+ * @type float $discount the coupon discount amount
353
+ * @type float $discount_tax the coupon discount tax amount
354
+ * }
355
+ * @return int|bool the order item ID or false on failure
356
+ */
357
+ public static function update_coupon( WC_Order $order, $item, $args ) {
358
+
359
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
360
+
361
+ if ( is_numeric( $item ) ) {
362
+ $item = $order->get_item( $item );
363
+ }
364
+
365
+ if ( ! is_object( $item ) || ! $item->is_type( 'coupon' ) ) {
366
+ return false;
367
+ }
368
+
369
+ if ( ! $order->get_id() ) {
370
+ $order->save();
371
+ }
372
+
373
+ $item->set_order_id( $order->get_id() );
374
+ $item->set_props( $args );
375
+ $item->save();
376
+
377
+ return $item->get_id();
378
+
379
+ } else {
380
+
381
+ // convert WC 3.0+ args for backwards compatibility
382
+ if ( isset( $args['discount'] ) ) {
383
+ $args['discount_amount'] = $args['discount'];
384
+ }
385
+ if ( isset( $args['discount_tax'] ) ) {
386
+ $args['discount_amount_tax'] = $args['discount_tax'];
387
+ }
388
+
389
+ return $order->update_coupon( $item, $args );
390
+ }
391
+ }
392
+
393
+
394
+ /**
395
+ * Order item CRUD compatibility method to update an order fee.
396
+ *
397
+ * @since 4.6.0
398
+ *
399
+ * @param \WC_Order $order the order object
400
+ * @param int|\WC_Order_Item $item the order item ID
401
+ * @param array $args {
402
+ * The fee item args.
403
+ *
404
+ * @type string $name the fee name
405
+ * @type string $tax_class the fee's tax class
406
+ * @type float $line_total the fee total amount
407
+ * @type float $line_tax the fee tax amount
408
+ * }
409
+ * @return int|bool the order item ID or false on failure
410
+ */
411
+ public static function update_fee( WC_Order $order, $item, $args ) {
412
+
413
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
414
+
415
+ if ( is_numeric( $item ) ) {
416
+ $item = $order->get_item( $item );
417
+ }
418
+
419
+ if ( ! is_object( $item ) || ! $item->is_type( 'fee' ) ) {
420
+ return false;
421
+ }
422
+
423
+ if ( ! $order->get_id() ) {
424
+ $order->save();
425
+ }
426
+
427
+ $item->set_order_id( $order->get_id() );
428
+ $item->set_props( $args );
429
+ $item->save();
430
+
431
+ return $item->get_id();
432
+
433
+ } else {
434
+
435
+ return $order->update_fee( $item, $args );
436
+ }
437
+ }
438
+
439
+
440
+ /**
441
+ * Backports wc_reduce_stock_levels() to pre-3.0.
442
+ *
443
+ * @since 4.6.0
444
+ *
445
+ * @param \WC_Order $order the order object
446
+ */
447
+ public static function reduce_stock_levels( WC_Order $order ) {
448
+
449
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
450
+ wc_reduce_stock_levels( $order->get_id() );
451
+ } else {
452
+ $order->reduce_order_stock();
453
+ }
454
+ }
455
+
456
+
457
+ /**
458
+ * Backports wc_update_total_sales_counts() to pre-3.0.
459
+ *
460
+ * @since 4.6.0
461
+ *
462
+ * @param \WC_Order $order the order object
463
+ */
464
+ public static function update_total_sales_counts( WC_Order $order ) {
465
+
466
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
467
+ wc_update_total_sales_counts( $order->get_id() );
468
+ } else {
469
+ $order->record_product_sales();
470
+ }
471
+ }
472
+
473
+
474
+ /**
475
+ * Determines if an order has an available shipping address.
476
+ *
477
+ * WooCommerce 3.0+ no longer fills the shipping address with the billing if
478
+ * a shipping address was never set by the customer at checkout, as is the
479
+ * case with virtual orders. This method is helpful for gateways that may
480
+ * reject such transactions with blank shipping information.
481
+ *
482
+ * TODO: Remove when WC 3.0.4 can be required {CW 2017-04-17}
483
+ *
484
+ * @since 4.6.1
485
+ *
486
+ * @param \WC_Order $order order object
487
+ *
488
+ * @return bool
489
+ */
490
+ public static function has_shipping_address( WC_Order $order ) {
491
+
492
+ return self::get_prop( $order, 'shipping_address_1' ) || self::get_prop( $order, 'shipping_address_2' );
493
+ }
494
+
495
+ /**
496
+ * Get product.
497
+ *
498
+ * @param WC_Order $order order object.
499
+ * @param object $item order product object.
500
+ *
501
+ * @return bool|WC_Product
502
+ */
503
+ public static function get_product( $order, $item ) {
504
+
505
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
506
+ $product = $item->get_product();
507
+ } else {
508
+ $product = $order->get_product_from_item( $item );
509
+ }
510
+
511
+ return $product;
512
+ }
513
+
514
+ }
515
+
516
+
517
+ endif; // Class exists check
includes/compatibility/class-wc-payment-gateway-compatibility.php CHANGED
@@ -1,54 +1,54 @@
1
- <?php
2
- /**
3
- * WooCommerce Plugin Framework
4
- *
5
- * This source file is subject to the GNU General Public License v3.0
6
- * that is bundled with this package in the file license.txt.
7
- * It is also available through the world-wide-web at this URL:
8
- * http://www.gnu.org/licenses/gpl-3.0.html
9
- * If you did not receive a copy of the license and are unable to
10
- * obtain it through the world-wide-web, please send an email
11
- * to license@skyverge.com so we can send you a copy immediately.
12
- *
13
- * DISCLAIMER
14
- *
15
- * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
- * versions in the future. If you wish to customize the plugin for your
17
- * needs please refer to http://www.skyverge.com
18
- *
19
- * @package SkyVerge/WooCommerce/Compatibility
20
- * @author SkyVerge
21
- * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
- * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
- */
24
-
25
- defined( 'ABSPATH' ) or exit;
26
-
27
- if ( ! class_exists( 'BEWPI_WC_Payment_Gateway_Compatibility' ) ) :
28
-
29
- /**
30
- * Backports the \WC_Payment_Gateway class.
31
- */
32
- class BEWPI_WC_Payment_Gateway_Compatibility extends DateTime {
33
-
34
- /**
35
- * Get method title.
36
- *
37
- * @param WC_Payment_Gateway $payment_gateway WC payment gateway object.
38
- *
39
- * @return mixed
40
- */
41
- public static function get_method_title( $payment_gateway ) {
42
-
43
- if ( method_exists( $payment_gateway, 'get_method_title' ) ) {
44
- $method_title = $payment_gateway->get_method_title();
45
- } else {
46
- $method_title = $payment_gateway->method_title;
47
- }
48
-
49
- return $method_title;
50
- }
51
-
52
- }
53
-
54
- endif;
1
+ <?php
2
+ /**
3
+ * WooCommerce Plugin Framework
4
+ *
5
+ * This source file is subject to the GNU General Public License v3.0
6
+ * that is bundled with this package in the file license.txt.
7
+ * It is also available through the world-wide-web at this URL:
8
+ * http://www.gnu.org/licenses/gpl-3.0.html
9
+ * If you did not receive a copy of the license and are unable to
10
+ * obtain it through the world-wide-web, please send an email
11
+ * to license@skyverge.com so we can send you a copy immediately.
12
+ *
13
+ * DISCLAIMER
14
+ *
15
+ * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
+ * versions in the future. If you wish to customize the plugin for your
17
+ * needs please refer to http://www.skyverge.com
18
+ *
19
+ * @package SkyVerge/WooCommerce/Compatibility
20
+ * @author SkyVerge
21
+ * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
+ */
24
+
25
+ defined( 'ABSPATH' ) or exit;
26
+
27
+ if ( ! class_exists( 'BEWPI_WC_Payment_Gateway_Compatibility' ) ) :
28
+
29
+ /**
30
+ * Backports the \WC_Payment_Gateway class.
31
+ */
32
+ class BEWPI_WC_Payment_Gateway_Compatibility extends DateTime {
33
+
34
+ /**
35
+ * Get method title.
36
+ *
37
+ * @param WC_Payment_Gateway $payment_gateway WC payment gateway object.
38
+ *
39
+ * @return mixed
40
+ */
41
+ public static function get_method_title( $payment_gateway ) {
42
+
43
+ if ( method_exists( $payment_gateway, 'get_method_title' ) ) {
44
+ $method_title = $payment_gateway->get_method_title();
45
+ } else {
46
+ $method_title = $payment_gateway->method_title;
47
+ }
48
+
49
+ return $method_title;
50
+ }
51
+
52
+ }
53
+
54
+ endif;
includes/compatibility/class-wc-product-compatibility.php CHANGED
@@ -1,280 +1,280 @@
1
- <?php
2
- /**
3
- * WooCommerce Plugin Framework
4
- *
5
- * This source file is subject to the GNU General Public License v3.0
6
- * that is bundled with this package in the file license.txt.
7
- * It is also available through the world-wide-web at this URL:
8
- * http://www.gnu.org/licenses/gpl-3.0.html
9
- * If you did not receive a copy of the license and are unable to
10
- * obtain it through the world-wide-web, please send an email
11
- * to license@skyverge.com so we can send you a copy immediately.
12
- *
13
- * DISCLAIMER
14
- *
15
- * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
- * versions in the future. If you wish to customize the plugin for your
17
- * needs please refer to http://www.skyverge.com
18
- *
19
- * @package SkyVerge/WooCommerce/Compatibility
20
- * @author SkyVerge
21
- * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
- * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
- */
24
-
25
- defined( 'ABSPATH' ) or exit;
26
-
27
- if ( ! class_exists( 'BEWPI_WC_Product_Compatibility' ) ) :
28
-
29
- /**
30
- * WooCommerce product compatibility class.
31
- *
32
- * @since 4.6.0
33
- */
34
- class BEWPI_WC_Product_Compatibility extends BEWPI_WC_Data_Compatibility {
35
-
36
-
37
- /** @var array mapped compatibility properties, as `$new_prop => $old_prop` */
38
- protected static $compat_props = array(
39
- 'catalog_visibility' => 'visibility',
40
- 'date_on_sale_from' => 'sale_price_dates_from',
41
- 'date_on_sale_to' => 'sale_price_dates_to',
42
- 'gallery_image_ids' => 'product_image_gallery',
43
- 'cross_sell_ids' => 'crosssell_ids',
44
- );
45
-
46
-
47
- /**
48
- * Gets a product property.
49
- *
50
- * @since 4.6.0
51
- *
52
- * @param \WC_Product $object the product object
53
- * @param string $prop the property name
54
- * @param string $context if 'view' then the value will be filtered
55
- *
56
- * @return mixed
57
- */
58
- public static function get_prop( $object, $prop, $context = 'edit', $compat_props = array() ) {
59
-
60
- // backport 'WC_Product::get_parent_id()' to pre-3.0
61
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_lt_3_0() && 'parent_id' === $prop ) {
62
- $prop = 'id';
63
- $context = $object->is_type( 'variation' ) ? 'raw' : $context;
64
- }
65
-
66
- return parent::get_prop( $object, $prop, $context, self::$compat_props );
67
- }
68
-
69
-
70
- /**
71
- * Sets an products's properties.
72
- *
73
- * Note that this does not save any data to the database.
74
- *
75
- * @since 4.6.0
76
- *
77
- * @param \WC_Product $object the product object
78
- * @param array $props the new properties as $key => $value
79
- *
80
- * @return \WC_Product
81
- */
82
- public static function set_props( $object, $props, $compat_props = array() ) {
83
-
84
- return parent::set_props( $object, $props, self::$compat_props );
85
- }
86
-
87
-
88
- /**
89
- * Gets a product's parent product.
90
- *
91
- * @since 4.6.0
92
- *
93
- * @param \WC_Product $product the product object
94
- *
95
- * @return \WC_Product|bool
96
- */
97
- public static function get_parent( WC_Product $product ) {
98
-
99
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
100
- $parent = wc_get_product( $product->get_parent_id() );
101
- } else {
102
- $parent = $product->is_type( 'variation' ) ? wc_get_product( $product->id ) : false;
103
- }
104
-
105
- return $parent;
106
- }
107
-
108
-
109
- /**
110
- * Backports wc_update_product_stock() to pre-3.0.
111
- *
112
- * @since 4.6.0
113
- *
114
- * @param \WC_Product $product the product object
115
- * @param int $amount Optional. The new stock quantity
116
- * @param string $mode Optional. Can be set, add, or subtract
117
- *
118
- * @return int
119
- */
120
- public static function wc_update_product_stock( WC_Product $product, $amount = null, $mode = 'set' ) {
121
-
122
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
123
- return wc_update_product_stock( $product, $amount, $mode );
124
- } else {
125
- return $product->set_stock( $amount, $mode );
126
- }
127
- }
128
-
129
-
130
- /**
131
- * Backports wc_get_price_html_from_text() to pre-3.0.
132
- *
133
- * @since 4.6.0
134
- *
135
- * @param \WC_Product $product the product object
136
- *
137
- * @return string
138
- */
139
- public static function wc_get_price_html_from_text( WC_Product $product ) {
140
-
141
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
142
- return wc_get_price_html_from_text();
143
- } else {
144
- return $product->get_price_html_from_text();
145
- }
146
- }
147
-
148
-
149
- /**
150
- * Backports wc_get_price_including_tax() to pre-3.0.
151
- *
152
- * @since 4.6.0
153
- *
154
- * @param \WC_Product $product the product object
155
- * @param int $qty Optional. The quantity
156
- * @param string $price Optional. The product price
157
- *
158
- * @return string
159
- */
160
- public static function wc_get_price_including_tax( WC_Product $product, $qty = 1, $price = '' ) {
161
-
162
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
163
-
164
- return wc_get_price_including_tax( $product, array(
165
- 'qty' => $qty,
166
- 'price' => $price,
167
- ) );
168
-
169
- } else {
170
-
171
- return $product->get_price_including_tax( $qty, $price );
172
- }
173
- }
174
-
175
-
176
- /**
177
- * Backports wc_get_price_excluding_tax() to pre-3.0.
178
- *
179
- * @since 4.6.0
180
- *
181
- * @param \WC_Product $product the product object
182
- * @param int $qty Optional. The quantity
183
- * @param string $price Optional. The product price
184
- *
185
- * @return string
186
- */
187
- public static function wc_get_price_excluding_tax( WC_Product $product, $qty = 1, $price = '' ) {
188
-
189
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
190
-
191
- return wc_get_price_excluding_tax( $product, array(
192
- 'qty' => $qty,
193
- 'price' => $price,
194
- ) );
195
-
196
- } else {
197
-
198
- return $product->get_price_excluding_tax( $qty, $price );
199
- }
200
- }
201
-
202
-
203
- /**
204
- * Backports wc_get_price_to_display() to pre-3.0.
205
- *
206
- * @since 4.6.0
207
- *
208
- * @param \WC_Product $product the product object
209
- * @param string $price Optional. The product price
210
- * @param int $qty Optional. The quantity
211
- *
212
- * @return string
213
- */
214
- public static function wc_get_price_to_display( WC_Product $product, $price = '', $qty = 1 ) {
215
-
216
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
217
-
218
- return wc_get_price_to_display( $product, array(
219
- 'qty' => $qty,
220
- 'price' => $price,
221
- ) );
222
-
223
- } else {
224
-
225
- return $product->get_display_price( $price, $qty );
226
- }
227
- }
228
-
229
-
230
- /**
231
- * Backports wc_get_product_category_list() to pre-3.0.
232
- *
233
- * @since 4.6.0
234
- *
235
- * @param \WC_Product $product the product object
236
- * @param string $sep Optional. The list separator
237
- * @param string $before Optional. To display before the list
238
- * @param string $after Optional. To display after the list
239
- *
240
- * @return string
241
- */
242
- public static function wc_get_product_category_list( WC_Product $product, $sep = ', ', $before = '', $after = '' ) {
243
-
244
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
245
-
246
- $id = $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id();
247
-
248
- return wc_get_product_category_list( $id, $sep, $before, $after );
249
-
250
- } else {
251
-
252
- return $product->get_categories( $sep, $before, $after );
253
- }
254
- }
255
-
256
-
257
- /**
258
- * Backports wc_get_rating_html() to pre-3.0.
259
- *
260
- * @since 4.6.0
261
- *
262
- * @param \WC_Product $product the product object
263
- * @param string $rating Optional. The product rating
264
- *
265
- * @return string
266
- */
267
- public static function wc_get_rating_html( WC_Product $product, $rating = null ) {
268
-
269
- if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
270
- return wc_get_rating_html( $rating );
271
- } else {
272
- return $product->get_rating_html( $rating );
273
- }
274
- }
275
-
276
-
277
- }
278
-
279
-
280
- endif; // Class exists check
1
+ <?php
2
+ /**
3
+ * WooCommerce Plugin Framework
4
+ *
5
+ * This source file is subject to the GNU General Public License v3.0
6
+ * that is bundled with this package in the file license.txt.
7
+ * It is also available through the world-wide-web at this URL:
8
+ * http://www.gnu.org/licenses/gpl-3.0.html
9
+ * If you did not receive a copy of the license and are unable to
10
+ * obtain it through the world-wide-web, please send an email
11
+ * to license@skyverge.com so we can send you a copy immediately.
12
+ *
13
+ * DISCLAIMER
14
+ *
15
+ * Do not edit or add to this file if you wish to upgrade the plugin to newer
16
+ * versions in the future. If you wish to customize the plugin for your
17
+ * needs please refer to http://www.skyverge.com
18
+ *
19
+ * @package SkyVerge/WooCommerce/Compatibility
20
+ * @author SkyVerge
21
+ * @copyright Copyright (c) 2013-2017, SkyVerge, Inc.
22
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
23
+ */
24
+
25
+ defined( 'ABSPATH' ) or exit;
26
+
27
+ if ( ! class_exists( 'BEWPI_WC_Product_Compatibility' ) ) :
28
+
29
+ /**
30
+ * WooCommerce product compatibility class.
31
+ *
32
+ * @since 4.6.0
33
+ */
34
+ class BEWPI_WC_Product_Compatibility extends BEWPI_WC_Data_Compatibility {
35
+
36
+
37
+ /** @var array mapped compatibility properties, as `$new_prop => $old_prop` */
38
+ protected static $compat_props = array(
39
+ 'catalog_visibility' => 'visibility',
40
+ 'date_on_sale_from' => 'sale_price_dates_from',
41
+ 'date_on_sale_to' => 'sale_price_dates_to',
42
+ 'gallery_image_ids' => 'product_image_gallery',
43
+ 'cross_sell_ids' => 'crosssell_ids',
44
+ );
45
+
46
+
47
+ /**
48
+ * Gets a product property.
49
+ *
50
+ * @since 4.6.0
51
+ *
52
+ * @param \WC_Product $object the product object
53
+ * @param string $prop the property name
54
+ * @param string $context if 'view' then the value will be filtered
55
+ *
56
+ * @return mixed
57
+ */
58
+ public static function get_prop( $object, $prop, $context = 'edit', $compat_props = array() ) {
59
+
60
+ // backport 'WC_Product::get_parent_id()' to pre-3.0
61
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_lt_3_0() && 'parent_id' === $prop ) {
62
+ $prop = 'id';
63
+ $context = $object->is_type( 'variation' ) ? 'raw' : $context;
64
+ }
65
+
66
+ return parent::get_prop( $object, $prop, $context, self::$compat_props );
67
+ }
68
+
69
+
70
+ /**
71
+ * Sets an products's properties.
72
+ *
73
+ * Note that this does not save any data to the database.
74
+ *
75
+ * @since 4.6.0
76
+ *
77
+ * @param \WC_Product $object the product object
78
+ * @param array $props the new properties as $key => $value
79
+ *
80
+ * @return \WC_Product
81
+ */
82
+ public static function set_props( $object, $props, $compat_props = array() ) {
83
+
84
+ return parent::set_props( $object, $props, self::$compat_props );
85
+ }
86
+
87
+
88
+ /**
89
+ * Gets a product's parent product.
90
+ *
91
+ * @since 4.6.0
92
+ *
93
+ * @param \WC_Product $product the product object
94
+ *
95
+ * @return \WC_Product|bool
96
+ */
97
+ public static function get_parent( WC_Product $product ) {
98
+
99
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
100
+ $parent = wc_get_product( $product->get_parent_id() );
101
+ } else {
102
+ $parent = $product->is_type( 'variation' ) ? wc_get_product( $product->id ) : false;
103
+ }
104
+
105
+ return $parent;
106
+ }
107
+
108
+
109
+ /**
110
+ * Backports wc_update_product_stock() to pre-3.0.
111
+ *
112
+ * @since 4.6.0
113
+ *
114
+ * @param \WC_Product $product the product object
115
+ * @param int $amount Optional. The new stock quantity
116
+ * @param string $mode Optional. Can be set, add, or subtract
117
+ *
118
+ * @return int
119
+ */
120
+ public static function wc_update_product_stock( WC_Product $product, $amount = null, $mode = 'set' ) {
121
+
122
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
123
+ return wc_update_product_stock( $product, $amount, $mode );
124
+ } else {
125
+ return $product->set_stock( $amount, $mode );
126
+ }
127
+ }
128
+
129
+
130
+ /**
131
+ * Backports wc_get_price_html_from_text() to pre-3.0.
132
+ *
133
+ * @since 4.6.0
134
+ *
135
+ * @param \WC_Product $product the product object
136
+ *
137
+ * @return string
138
+ */
139
+ public static function wc_get_price_html_from_text( WC_Product $product ) {
140
+
141
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
142
+ return wc_get_price_html_from_text();
143
+ } else {
144
+ return $product->get_price_html_from_text();
145
+ }
146
+ }
147
+
148
+
149
+ /**
150
+ * Backports wc_get_price_including_tax() to pre-3.0.
151
+ *
152
+ * @since 4.6.0
153
+ *
154
+ * @param \WC_Product $product the product object
155
+ * @param int $qty Optional. The quantity
156
+ * @param string $price Optional. The product price
157
+ *
158
+ * @return string
159
+ */
160
+ public static function wc_get_price_including_tax( WC_Product $product, $qty = 1, $price = '' ) {
161
+
162
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
163
+
164
+ return wc_get_price_including_tax( $product, array(
165
+ 'qty' => $qty,
166
+ 'price' => $price,
167
+ ) );
168
+
169
+ } else {
170
+
171
+ return $product->get_price_including_tax( $qty, $price );
172
+ }
173
+ }
174
+
175
+
176
+ /**
177
+ * Backports wc_get_price_excluding_tax() to pre-3.0.
178
+ *
179
+ * @since 4.6.0
180
+ *
181
+ * @param \WC_Product $product the product object
182
+ * @param int $qty Optional. The quantity
183
+ * @param string $price Optional. The product price
184
+ *
185
+ * @return string
186
+ */
187
+ public static function wc_get_price_excluding_tax( WC_Product $product, $qty = 1, $price = '' ) {
188
+
189
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
190
+
191
+ return wc_get_price_excluding_tax( $product, array(
192
+ 'qty' => $qty,
193
+ 'price' => $price,
194
+ ) );
195
+
196
+ } else {
197
+
198
+ return $product->get_price_excluding_tax( $qty, $price );
199
+ }
200
+ }
201
+
202
+
203
+ /**
204
+ * Backports wc_get_price_to_display() to pre-3.0.
205
+ *
206
+ * @since 4.6.0
207
+ *
208
+ * @param \WC_Product $product the product object
209
+ * @param string $price Optional. The product price
210
+ * @param int $qty Optional. The quantity
211
+ *
212
+ * @return string
213
+ */
214
+ public static function wc_get_price_to_display( WC_Product $product, $price = '', $qty = 1 ) {
215
+
216
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
217
+
218
+ return wc_get_price_to_display( $product, array(
219
+ 'qty' => $qty,
220
+ 'price' => $price,
221
+ ) );
222
+
223
+ } else {
224
+
225
+ return $product->get_display_price( $price, $qty );
226
+ }
227
+ }
228
+
229
+
230
+ /**
231
+ * Backports wc_get_product_category_list() to pre-3.0.
232
+ *
233
+ * @since 4.6.0
234
+ *
235
+ * @param \WC_Product $product the product object
236
+ * @param string $sep Optional. The list separator
237
+ * @param string $before Optional. To display before the list
238
+ * @param string $after Optional. To display after the list
239
+ *
240
+ * @return string
241
+ */
242
+ public static function wc_get_product_category_list( WC_Product $product, $sep = ', ', $before = '', $after = '' ) {
243
+
244
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
245
+
246
+ $id = $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id();
247
+
248
+ return wc_get_product_category_list( $id, $sep, $before, $after );
249
+
250
+ } else {
251
+
252
+ return $product->get_categories( $sep, $before, $after );
253
+ }
254
+ }
255
+
256
+
257
+ /**
258
+ * Backports wc_get_rating_html() to pre-3.0.
259
+ *
260
+ * @since 4.6.0
261
+ *
262
+ * @param \WC_Product $product the product object
263
+ * @param string $rating Optional. The product rating
264
+ *
265
+ * @return string
266
+ */
267
+ public static function wc_get_rating_html( WC_Product $product, $rating = null ) {
268
+
269
+ if ( BEWPI_WC_Core_Compatibility::is_wc_version_gte_3_0() ) {
270
+ return wc_get_rating_html( $rating );
271
+ } else {
272
+ return $product->get_rating_html( $rating );
273
+ }
274
+ }
275
+
276
+
277
+ }
278
+
279
+
280
+ endif; // Class exists check
includes/templates/invoice/simple/micro/body.php CHANGED
@@ -1,318 +1,318 @@
1
- <?php
2
- $theme_color = $this->template_options['bewpi_color_theme'];
3
- $is_theme_text_black = $this->template_options['bewpi_theme_text_black'];
4
- $columns_count = 4;
5
- echo $this->outlining_columns_html( count( $this->order->get_taxes() ) );
6
- ?>
7
- <table class="two-column customer">
8
- <tbody>
9
- <tr>
10
- <td class="address small-font" width="50%">
11
- <b><?php _e( 'Invoice to', 'woocommerce-pdf-invoices' ); ?></b><br/>
12
- <?php
13
- echo $this->order->get_formatted_billing_address() . '<br/>';
14
- // Billing phone.
15
- $billing_phone = method_exists( 'WC_Order', 'get_billing_phone' ) ? $this->order->get_billing_phone() : $this->order->billing_phone;
16
- echo $billing_phone ? sprintf( __( 'Phone: %s', 'woocommerce-pdf-invoices' ), $billing_phone ) : '';
17
- ?>
18
- </td>
19
- <?php
20
- $formatted_shipping_address = $this->order->get_formatted_shipping_address();
21
- if ( $this->template_options['bewpi_show_ship_to'] && ! empty( $formatted_shipping_address ) && ! $this->has_only_virtual_products() ) { ?>
22
- <td class="address small-font" width="50%">
23
- <b><?php _e( 'Ship to', 'woocommerce-pdf-invoices' ); ?></b><br/>
24
- <?php echo $formatted_shipping_address; ?>
25
- </td>
26
- <?php } ?>
27
- </tr>
28
- </tbody>
29
- </table>
30
- <table class="invoice-head">
31
- <tbody>
32
- <tr>
33
- <td class="invoice-details">
34
- <h1 class="title"><?php echo WPI()->templater()->get_option( 'bewpi_title' ); ?></h1>
35
- <span class="number" style="color: <?php echo ( $is_theme_text_black ) ? 'black' : $theme_color; ?>;"><?php echo $this->get_formatted_number(); ?></span><br/>
36
- <span><?php echo $this->get_formatted_invoice_date(); ?></span><br/><br/>
37
- <span><?php printf( __( 'Order Number: %s', 'woocommerce-pdf-invoices' ), $this->order->get_order_number() ); ?></span><br/>
38
- <span><?php printf( __( 'Order Date: %s', 'woocommerce-pdf-invoices' ), $this->get_formatted_order_date() ); ?></span><br/>
39
- <?php $this->display_purchase_order_number(); ?><br/>
40
- <?php $this->display_vat_number(); ?>
41
- </td>
42
- <td class="total-amount" bgcolor="<?php echo $theme_color; ?>" <?php if ( $is_theme_text_black ) echo 'style="color: black;"'; ?>>
43
- <h1 class="amount"><?php echo wc_price( $this->order->get_total() - $this->order->get_total_refunded(), array( 'currency' => $this->order->get_order_currency() ) ); ?></h1>
44
- <p><?php echo WPI()->templater()->get_option( 'bewpi_intro_text' ); ?></p>
45
- </td>
46
- </tr>
47
- </tbody>
48
- </table>
49
- <table class="products small-font">
50
- <thead>
51
- <tr class="table-headers">
52
- <!-- Description -->
53
- <th class="align-left"><?php _e( 'Description', 'woocommerce-pdf-invoices' ); ?></th>
54
- <!-- SKU -->
55
- <?php if ( $this->template_options['bewpi_show_sku'] ) { ?>
56
- <?php $columns_count++; ?>
57
- <th class="align-left"><?php _e( 'SKU', 'woocommerce-pdf-invoices' ); ?></th>
58
- <?php } ?>
59
- <!-- Cost -->
60
- <th class="align-left"><?php _e( 'Cost', 'woocommerce-pdf-invoices' ); ?></th>
61
- <!-- Qty -->
62
- <th class="align-left"><?php _e( 'Qty', 'woocommerce-pdf-invoices' ); ?></th>
63
- <!-- Tax -->
64
- <?php if ( $this->template_options['bewpi_show_tax'] && wc_tax_enabled() && empty( $legacy_order ) ) { ?>
65
- <?php foreach ( $this->order->get_taxes() as $tax_item ) { ?>
66
- <?php $columns_count++; ?>
67
- <th class="align-left"><?php echo $tax_item['label'] . ' ' . WC_Tax::get_rate_percent( $tax_item['rate_id'] ); ?></th>
68
- <?php } ?>
69
- <?php } ?>
70
- <!-- Total -->
71
- <th class="align-right"><?php _e( 'Total', 'woocommerce-pdf-invoices' ); ?></th>
72
- </tr>
73
- </thead>
74
- <tbody>
75
- <!-- Products -->
76
- <?php foreach ( $this->order->get_items( 'line_item' ) as $item_id => $item ) {
77
- $product = $this->order->get_product_from_item( $item ); ?>
78
- <tr class="product-row">
79
- <td>
80
- <?php echo esc_html( $item['name'] );
81
- global $wpdb;
82
-
83
- $hidden_order_itemmeta = apply_filters( 'woocommerce_hidden_order_itemmeta', array(
84
- '_qty',
85
- '_tax_class',
86
- '_product_id',
87
- '_variation_id',
88
- '_line_subtotal',
89
- '_line_subtotal_tax',
90
- '_line_total',
91
- '_line_tax',
92
- '_wc_cog_item_cost',
93
- '_wc_cog_item_total_cost',
94
- ) );
95
-
96
- $hidden_order_itemmeta = apply_filters( 'bewpi_hidden_order_itemmeta', $hidden_order_itemmeta );
97
-
98
- foreach ( $this->order->has_meta( $item_id ) as $meta ) {
99
- // Skip hidden core fields.
100
- if ( in_array( $meta['meta_key'], $hidden_order_itemmeta, true ) ) {
101
- continue;
102
- }
103
-
104
- // Skip serialised meta.
105
- if ( is_serialized( $meta['meta_value'] ) ) {
106
- continue;
107
- }
108
-
109
- // Get attribute data.
110
- if ( taxonomy_exists( wc_sanitize_taxonomy_name( $meta['meta_key'] ) ) ) {
111
- $term = get_term_by( 'slug', $meta['meta_value'], wc_sanitize_taxonomy_name( $meta['meta_key'] ) );
112
- $meta['meta_key'] = wc_attribute_label( wc_sanitize_taxonomy_name( $meta['meta_key'] ) );
113
- $meta['meta_value'] = isset( $term->name ) ? $term->name : $meta['meta_value'];
114
- } else {
115
- $meta['meta_key'] = apply_filters( 'woocommerce_attribute_label', wc_attribute_label( $meta['meta_key'], $product ), $meta['meta_key'] );
116
- }
117
-
118
- echo '<div class="item-attribute"><span style="font-weight: bold;">' . wp_kses_post( rawurldecode( $meta['meta_key'] ) ) . ': </span>' . wp_kses_post( rawurldecode( $meta['meta_value'] ) ) . '</div>';
119
- }
120
- ?>
121
- </td>
122
- <?php if ( $this->template_options['bewpi_show_sku'] ) { ?>
123
- <td><?php echo ( $product && $product->get_sku() ) ? $product->get_sku() : '-'; ?></td>
124
- <?php } ?>
125
- <td>
126
- <?php
127
- if ( isset( $item['line_total'] ) ) {
128
- if ( isset( $item['line_subtotal'] ) && $item['line_subtotal'] !== $item['line_total'] ) {
129
- echo '<del>' . wc_price( $this->order->get_item_subtotal( $item, false, true ), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> ';
130
- }
131
- echo wc_price( $this->order->get_item_total( $item, false, true ), array( 'currency' => $this->order->get_order_currency() ) );
132
- }
133
- ?>
134
- </td>
135
- <td>
136
- <?php
137
- echo $item['qty'];
138
- $refunded_qty = $this->order->get_qty_refunded_for_item( $item_id );
139
- if ( $refunded_qty ) {
140
- echo '<br/><small class="refunded">-' . $refunded_qty . '</small>';
141
- }
142
- ?>
143
- </td>
144
- <?php
145
- if ( $this->template_options['bewpi_show_tax'] && empty( $legacy_order ) && wc_tax_enabled() ) :
146
- $line_tax_data = isset( $item['line_tax_data'] ) ? $item['line_tax_data'] : '';
147
- $tax_data = maybe_unserialize( $line_tax_data );
148
-
149
- foreach ( $this->order->get_taxes() as $tax_item ) :
150
- $tax_item_id = $tax_item['rate_id'];
151
- $tax_item_total = isset( $tax_data['total'][ $tax_item_id ] ) ? $tax_data['total'][ $tax_item_id ] : '';
152
- $tax_item_subtotal = isset( $tax_data['subtotal'][ $tax_item_id ] ) ? $tax_data['subtotal'][ $tax_item_id ] : '';
153
- ?>
154
- <td class="item-tax">
155
- <?php
156
- if ( isset( $tax_item_total ) ) {
157
- if ( isset( $tax_item_subtotal ) && $tax_item_subtotal !== $tax_item_total ) {
158
- echo '<del>' . wc_price( wc_round_tax_total( $tax_item_subtotal ), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> ';
159
- }
160
-
161
- echo wc_price( wc_round_tax_total( $tax_item_total ), array( 'currency' => $this->order->get_order_currency() ) );
162
- } else {
163
- echo '&ndash;';
164
- }
165
-
166
- $refunded = $this->order->get_tax_refunded_for_item( $item_id, $tax_item_id );
167
- if ( $refunded ) {
168
- echo '<br/><small class="refunded">-' . wc_price( $refunded, array( 'currency' => $this->order->get_order_currency() ) ) . '</small>';
169
- }
170
- ?>
171
- </td>
172
-
173
- <?php
174
- endforeach;
175
- endif;
176
- ?>
177
- <td class="align-right item-total" width="">
178
- <?php
179
- if ( isset( $item['line_total'] ) ) {
180
- $incl_tax = $this->template_options['bewpi_display_prices_incl_tax'];
181
-
182
- if ( isset( $item['line_subtotal'] ) && $item['line_subtotal'] !== $item['line_total'] ) {
183
- echo '<del>' . wc_price( $this->order->get_line_subtotal( $item, $incl_tax, true ), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> ';
184
- }
185
-
186
- echo wc_price( $this->order->get_line_total( $item, $incl_tax, true ), array( 'currency' => $this->order->get_order_currency() ) );
187
- }
188
-
189
- $refunded = $this->order->get_total_refunded_for_item( $item_id );
190
- if ( $refunded ) {
191
- echo '<br/><small class="refunded">-' . wc_price( $refunded, array( 'currency' => $this->order->get_order_currency() ) ) . '</small>';
192
- }
193
- ?>
194
- </td>
195
- </tr>
196
- <?php } ?>
197
- <!-- Space -->
198
- <tr class="space">
199
- <td colspan="<?php echo $columns_count; ?>"></td>
200
- </tr>
201
- <!-- Table footers -->
202
- <!-- Discount -->
203
- <?php $colspan = $this->get_colspan( $columns_count ); ?>
204
- <?php if ( $this->template_options['bewpi_show_discount'] && $this->order->get_total_discount() !== 0.00 ) { ?>
205
- <tr class="discount after-products">
206
- <td colspan="<?php echo $colspan['left']; ?>"></td>
207
- <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'Discount', 'woocommerce-pdf-invoices' ); ?></td>
208
- <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo wc_price( $this->order->get_total_discount(), array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
209
- </tr>
210
- <?php } ?>
211
- <!-- Shipping -->
212
- <?php if ( $this->template_options['bewpi_show_shipping'] && $this->template_options['bewpi_shipping_taxable'] ) { ?>
213
- <tr class="shipping after-products">
214
- <td colspan="<?php echo $colspan['left']; ?>"></td>
215
- <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'Shipping', 'woocommerce-pdf-invoices' ); ?></td>
216
- <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo wc_price( $this->order->get_total_shipping(), array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
217
- </tr>
218
- <?php } ?>
219
- <!-- Subtotal -->
220
- <?php if ( $this->template_options['bewpi_show_subtotal'] ) { ?>
221
- <tr class="subtotal after-products">
222
- <td colspan="<?php echo $colspan['left']; ?>"></td>
223
- <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'Subtotal', 'woocommerce-pdf-invoices' ); ?></td>
224
- <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo $this->get_formatted_subtotal(); ?></td>
225
- </tr>
226
- <?php } ?>
227
- <!-- Shipping -->
228
- <?php if( $this->template_options['bewpi_show_shipping'] && ! (bool)$this->template_options["bewpi_shipping_taxable"] ) { ?>
229
- <tr class="shipping after-products">
230
- <td colspan="<?php echo $colspan['left']; ?>"></td>
231
- <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'Shipping', 'woocommerce-pdf-invoices' ); ?></td>
232
- <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo wc_price( $this->order->get_total_shipping(), array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
233
- </tr>
234
- <?php } ?>
235
- <!-- Fees -->
236
- <?php
237
- $line_items_fee = $this->order->get_items( 'fee' );
238
- foreach ( $line_items_fee as $item_id => $item ) :
239
- ?>
240
- <tr class="after-products">
241
- <td colspan="<?php echo $colspan['left']; ?>"></td>
242
- <td colspan="<?php echo $colspan['right_left']; ?>"><?php echo ! empty( $item['name'] ) ? esc_html( $item['name'] ) : __( 'Fee', 'woocommerce' ); ?></td>
243
- <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right">
244
- <?php
245
- echo ( isset( $item['line_total'] ) ) ? wc_price( wc_round_tax_total( $item['line_total'] ) ) : '';
246
-
247
- if ( $refunded = $this->order->get_total_refunded_for_item( $item_id, 'fee' ) ) {
248
- echo '<br/><small class="refunded">-' . wc_price( $refunded, array( 'currency' => $this->order->get_order_currency() ) ) . '</small>';
249
- }
250
- ?>
251
- </td>
252
- </tr>
253
- <?php endforeach; ?>
254
- <!-- Tax -->
255
- <?php if ( $this->template_options['bewpi_show_tax_total'] && wc_tax_enabled() ) :
256
- foreach ( $this->order->get_tax_totals() as $code => $tax ) : ?>
257
- <tr class="after-products">
258
- <td colspan="<?php echo $colspan['left']; ?>"></td>
259
- <td colspan="<?php echo $colspan['right_left']; ?>"><?php echo $tax->label . ' ' . WC_Tax::get_rate_percent( $tax->rate_id ); ?></td>
260
- <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo $tax->formatted_amount; ?></td>
261
- </tr>
262
- <?php endforeach; ?>
263
- <?php endif; ?>
264
- <!-- Zero Rate VAT -->
265
- <?php if ( $this->display_zero_rated_vat() ) { ?>
266
- <tr class="after-products">
267
- <td colspan="<?php echo $colspan['left']; ?>"></td>
268
- <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'VAT 0%' ); ?></td>
269
- <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo wc_price( 0, array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
270
- </tr>
271
- <?php } ?>
272
- <!-- Total -->
273
- <tr class="after-products">
274
- <td colspan="<?php echo $colspan['left']; ?>"></td>
275
- <td colspan="<?php echo $colspan['right_left']; ?>" class="total"><?php _e( 'Total', 'woocommerce-pdf-invoices' ); ?></td>
276
- <td colspan="<?php echo $colspan['right_right']; ?>" class="grand-total align-right" style="color: <?php echo ( $is_theme_text_black ) ? 'black' : $theme_color; ?>;">
277
- <?php echo $this->get_formatted_total(); ?>
278
- </td>
279
- </tr>
280
- <!-- Refunded -->
281
- <?php if ( $this->order->get_total_refunded() > 0 ) { ?>
282
- <tr class="after-products">
283
- <td colspan="<?php echo $colspan['left']; ?>"></td>
284
- <td colspan="<?php echo $colspan['right_left']; ?>" class="refunded"><?php _e( 'Refunded', 'woocommerce-pdf-invoices' ); ?></td>
285
- <td colspan="<?php echo $colspan['right_right']; ?>" class="refunded align-right"><?php echo '-' . wc_price( $this->order->get_total_refunded(), array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
286
- </tr>
287
- <?php } ?>
288
- </thead>
289
- </table>
290
- <table id="terms-notes">
291
- <!-- Notes & terms -->
292
- <tr>
293
- <td class="border" colspan="3">
294
- <?php echo nl2br( WPI()->templater()->get_option( 'bewpi_terms' ) ); ?><br/>
295
- <?php
296
- if ( $this->template_options['bewpi_show_customer_notes'] ) :
297
- // Note added by customer.
298
- $customer_note = method_exists( 'WC_Order', 'get_customer_note' ) ? $this->order->get_customer_note() : $this->order->customer_note;
299
- if ( $customer_note ) {
300
- echo '<p><strong>' . __( 'Customer note', 'woocommerce-pdf-invoices' ) . ' </strong> ' . $customer_note . '</p>';
301
- }
302
- // Notes added by administrator on order details page.
303
- $customer_order_notes = $this->order->get_customer_order_notes();
304
- if ( count( $customer_order_notes ) > 0 ) {
305
- echo '<p><strong>' . __('Customer note', 'woocommerce-pdf-invoices') . ' </strong>' . $customer_order_notes[0]->comment_content . '</p>';
306
- }
307
- endif;
308
- ?>
309
- </td>
310
- </tr>
311
- <?php if ( $this->display_zero_rated_vat() ) { ?>
312
- <tr>
313
- <td class="border" colspan="3">
314
- <?php _e( 'Zero rated for VAT as customer has supplied EU VAT number', 'woocommerce-pdf-invoices' ); ?>
315
- </td>
316
- </tr>
317
- <?php } ?>
318
  </table>
1
+ <?php
2
+ $theme_color = $this->template_options['bewpi_color_theme'];
3
+ $is_theme_text_black = $this->template_options['bewpi_theme_text_black'];
4
+ $columns_count = 4;
5
+ echo $this->outlining_columns_html( count( $this->order->get_taxes() ) );
6
+ ?>
7
+ <table class="two-column customer">
8
+ <tbody>
9
+ <tr>
10
+ <td class="address small-font" width="50%">
11
+ <b><?php _e( 'Invoice to', 'woocommerce-pdf-invoices' ); ?></b><br/>
12
+ <?php
13
+ echo $this->order->get_formatted_billing_address() . '<br/>';
14
+ // Billing phone.
15
+ $billing_phone = method_exists( 'WC_Order', 'get_billing_phone' ) ? $this->order->get_billing_phone() : $this->order->billing_phone;
16
+ echo $billing_phone ? sprintf( __( 'Phone: %s', 'woocommerce-pdf-invoices' ), $billing_phone ) : '';
17
+ ?>
18
+ </td>
19
+ <?php
20
+ $formatted_shipping_address = $this->order->get_formatted_shipping_address();
21
+ if ( $this->template_options['bewpi_show_ship_to'] && ! empty( $formatted_shipping_address ) && ! $this->has_only_virtual_products() ) { ?>
22
+ <td class="address small-font" width="50%">
23
+ <b><?php _e( 'Ship to', 'woocommerce-pdf-invoices' ); ?></b><br/>
24
+ <?php echo $formatted_shipping_address; ?>
25
+ </td>
26
+ <?php } ?>
27
+ </tr>
28
+ </tbody>
29
+ </table>
30
+ <table class="invoice-head">
31
+ <tbody>
32
+ <tr>
33
+ <td class="invoice-details">
34
+ <h1 class="title"><?php echo WPI()->templater()->get_option( 'bewpi_title' ); ?></h1>
35
+ <span class="number" style="color: <?php echo ( $is_theme_text_black ) ? 'black' : $theme_color; ?>;"><?php echo $this->get_formatted_number(); ?></span><br/>
36
+ <span><?php echo $this->get_formatted_invoice_date(); ?></span><br/><br/>
37
+ <span><?php printf( __( 'Order Number: %s', 'woocommerce-pdf-invoices' ), $this->order->get_order_number() ); ?></span><br/>
38
+ <span><?php printf( __( 'Order Date: %s', 'woocommerce-pdf-invoices' ), $this->get_formatted_order_date() ); ?></span><br/>
39
+ <?php $this->display_purchase_order_number(); ?><br/>
40
+ <?php $this->display_vat_number(); ?>
41
+ </td>
42
+ <td class="total-amount" bgcolor="<?php echo $theme_color; ?>" <?php if ( $is_theme_text_black ) echo 'style="color: black;"'; ?>>
43
+ <h1 class="amount"><?php echo wc_price( $this->order->get_total() - $this->order->get_total_refunded(), array( 'currency' => $this->order->get_order_currency() ) ); ?></h1>
44
+ <p><?php echo WPI()->templater()->get_option( 'bewpi_intro_text' ); ?></p>
45
+ </td>
46
+ </tr>
47
+ </tbody>
48
+ </table>
49
+ <table class="products small-font">
50
+ <thead>
51
+ <tr class="table-headers">
52
+ <!-- Description -->
53
+ <th class="align-left"><?php _e( 'Description', 'woocommerce-pdf-invoices' ); ?></th>
54
+ <!-- SKU -->
55
+ <?php if ( $this->template_options['bewpi_show_sku'] ) { ?>
56
+ <?php $columns_count++; ?>
57
+ <th class="align-left"><?php _e( 'SKU', 'woocommerce-pdf-invoices' ); ?></th>
58
+ <?php } ?>
59
+ <!-- Cost -->
60
+ <th class="align-left"><?php _e( 'Cost', 'woocommerce-pdf-invoices' ); ?></th>
61
+ <!-- Qty -->
62
+ <th class="align-left"><?php _e( 'Qty', 'woocommerce-pdf-invoices' ); ?></th>
63
+ <!-- Tax -->
64
+ <?php if ( $this->template_options['bewpi_show_tax'] && wc_tax_enabled() && empty( $legacy_order ) ) { ?>
65
+ <?php foreach ( $this->order->get_taxes() as $tax_item ) { ?>
66
+ <?php $columns_count++; ?>
67
+ <th class="align-left"><?php echo $tax_item['label'] . ' ' . WC_Tax::get_rate_percent( $tax_item['rate_id'] ); ?></th>
68
+ <?php } ?>
69
+ <?php } ?>
70
+ <!-- Total -->
71
+ <th class="align-right"><?php _e( 'Total', 'woocommerce-pdf-invoices' ); ?></th>
72
+ </tr>
73
+ </thead>
74
+ <tbody>
75
+ <!-- Products -->
76
+ <?php foreach ( $this->order->get_items( 'line_item' ) as $item_id => $item ) {
77
+ $product = $this->order->get_product_from_item( $item ); ?>
78
+ <tr class="product-row">
79
+ <td>
80
+ <?php echo esc_html( $item['name'] );
81
+ global $wpdb;
82
+
83
+ $hidden_order_itemmeta = apply_filters( 'woocommerce_hidden_order_itemmeta', array(
84
+ '_qty',
85
+ '_tax_class',
86
+ '_product_id',
87
+ '_variation_id',
88
+ '_line_subtotal',
89
+ '_line_subtotal_tax',
90
+ '_line_total',
91
+ '_line_tax',
92
+ '_wc_cog_item_cost',
93
+ '_wc_cog_item_total_cost',
94
+ ) );
95
+
96
+ $hidden_order_itemmeta = apply_filters( 'bewpi_hidden_order_itemmeta', $hidden_order_itemmeta );
97
+
98
+ foreach ( $this->order->has_meta( $item_id ) as $meta ) {
99
+ // Skip hidden core fields.
100
+ if ( in_array( $meta['meta_key'], $hidden_order_itemmeta, true ) ) {
101
+ continue;
102
+ }
103
+
104
+ // Skip serialised meta.
105
+ if ( is_serialized( $meta['meta_value'] ) ) {
106
+ continue;
107
+ }
108
+
109
+ // Get attribute data.
110
+ if ( taxonomy_exists( wc_sanitize_taxonomy_name( $meta['meta_key'] ) ) ) {
111
+ $term = get_term_by( 'slug', $meta['meta_value'], wc_sanitize_taxonomy_name( $meta['meta_key'] ) );
112
+ $meta['meta_key'] = wc_attribute_label( wc_sanitize_taxonomy_name( $meta['meta_key'] ) );
113
+ $meta['meta_value'] = isset( $term->name ) ? $term->name : $meta['meta_value'];
114
+ } else {
115
+ $meta['meta_key'] = apply_filters( 'woocommerce_attribute_label', wc_attribute_label( $meta['meta_key'], $product ), $meta['meta_key'] );
116
+ }
117
+
118
+ echo '<div class="item-attribute"><span style="font-weight: bold;">' . wp_kses_post( rawurldecode( $meta['meta_key'] ) ) . ': </span>' . wp_kses_post( rawurldecode( $meta['meta_value'] ) ) . '</div>';
119
+ }
120
+ ?>
121
+ </td>
122
+ <?php if ( $this->template_options['bewpi_show_sku'] ) { ?>
123
+ <td><?php echo ( $product && $product->get_sku() ) ? $product->get_sku() : '-'; ?></td>
124
+ <?php } ?>
125
+ <td>
126
+ <?php
127
+ if ( isset( $item['line_total'] ) ) {
128
+ if ( isset( $item['line_subtotal'] ) && $item['line_subtotal'] !== $item['line_total'] ) {
129
+ echo '<del>' . wc_price( $this->order->get_item_subtotal( $item, false, true ), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> ';
130
+ }
131
+ echo wc_price( $this->order->get_item_total( $item, false, true ), array( 'currency' => $this->order->get_order_currency() ) );
132
+ }
133
+ ?>
134
+ </td>
135
+ <td>
136
+ <?php
137
+ echo $item['qty'];
138
+ $refunded_qty = $this->order->get_qty_refunded_for_item( $item_id );
139
+ if ( $refunded_qty ) {
140
+ echo '<br/><small class="refunded">-' . $refunded_qty . '</small>';
141
+ }
142
+ ?>
143
+ </td>
144
+ <?php
145
+ if ( $this->template_options['bewpi_show_tax'] && empty( $legacy_order ) && wc_tax_enabled() ) :
146
+ $line_tax_data = isset( $item['line_tax_data'] ) ? $item['line_tax_data'] : '';
147
+ $tax_data = maybe_unserialize( $line_tax_data );
148
+
149
+ foreach ( $this->order->get_taxes() as $tax_item ) :
150
+ $tax_item_id = $tax_item['rate_id'];
151
+ $tax_item_total = isset( $tax_data['total'][ $tax_item_id ] ) ? $tax_data['total'][ $tax_item_id ] : '';
152
+ $tax_item_subtotal = isset( $tax_data['subtotal'][ $tax_item_id ] ) ? $tax_data['subtotal'][ $tax_item_id ] : '';
153
+ ?>
154
+ <td class="item-tax">
155
+ <?php
156
+ if ( isset( $tax_item_total ) ) {
157
+ if ( isset( $tax_item_subtotal ) && $tax_item_subtotal !== $tax_item_total ) {
158
+ echo '<del>' . wc_price( wc_round_tax_total( $tax_item_subtotal ), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> ';
159
+ }
160
+
161
+ echo wc_price( wc_round_tax_total( $tax_item_total ), array( 'currency' => $this->order->get_order_currency() ) );
162
+ } else {
163
+ echo '&ndash;';
164
+ }
165
+
166
+ $refunded = $this->order->get_tax_refunded_for_item( $item_id, $tax_item_id );
167
+ if ( $refunded ) {
168
+ echo '<br/><small class="refunded">-' . wc_price( $refunded, array( 'currency' => $this->order->get_order_currency() ) ) . '</small>';
169
+ }
170
+ ?>
171
+ </td>
172
+
173
+ <?php
174
+ endforeach;
175
+ endif;
176
+ ?>
177
+ <td class="align-right item-total" width="">
178
+ <?php
179
+ if ( isset( $item['line_total'] ) ) {
180
+ $incl_tax = $this->template_options['bewpi_display_prices_incl_tax'];
181
+
182
+ if ( isset( $item['line_subtotal'] ) && $item['line_subtotal'] !== $item['line_total'] ) {
183
+ echo '<del>' . wc_price( $this->order->get_line_subtotal( $item, $incl_tax, true ), array( 'currency' => $this->order->get_order_currency() ) ) . '</del> ';
184
+ }
185
+
186
+ echo wc_price( $this->order->get_line_total( $item, $incl_tax, true ), array( 'currency' => $this->order->get_order_currency() ) );
187
+ }
188
+
189
+ $refunded = $this->order->get_total_refunded_for_item( $item_id );
190
+ if ( $refunded ) {
191
+ echo '<br/><small class="refunded">-' . wc_price( $refunded, array( 'currency' => $this->order->get_order_currency() ) ) . '</small>';
192
+ }
193
+ ?>
194
+ </td>
195
+ </tr>
196
+ <?php } ?>
197
+ <!-- Space -->
198
+ <tr class="space">
199
+ <td colspan="<?php echo $columns_count; ?>"></td>
200
+ </tr>
201
+ <!-- Table footers -->
202
+ <!-- Discount -->
203
+ <?php $colspan = $this->get_colspan( $columns_count ); ?>
204
+ <?php if ( $this->template_options['bewpi_show_discount'] && $this->order->get_total_discount() !== 0.00 ) { ?>
205
+ <tr class="discount after-products">
206
+ <td colspan="<?php echo $colspan['left']; ?>"></td>
207
+ <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'Discount', 'woocommerce-pdf-invoices' ); ?></td>
208
+ <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo wc_price( $this->order->get_total_discount(), array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
209
+ </tr>
210
+ <?php } ?>
211
+ <!-- Shipping -->
212
+ <?php if ( $this->template_options['bewpi_show_shipping'] && $this->template_options['bewpi_shipping_taxable'] ) { ?>
213
+ <tr class="shipping after-products">
214
+ <td colspan="<?php echo $colspan['left']; ?>"></td>
215
+ <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'Shipping', 'woocommerce-pdf-invoices' ); ?></td>
216
+ <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo wc_price( $this->order->get_total_shipping(), array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
217
+ </tr>
218
+ <?php } ?>
219
+ <!-- Subtotal -->
220
+ <?php if ( $this->template_options['bewpi_show_subtotal'] ) { ?>
221
+ <tr class="subtotal after-products">
222
+ <td colspan="<?php echo $colspan['left']; ?>"></td>
223
+ <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'Subtotal', 'woocommerce-pdf-invoices' ); ?></td>
224
+ <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo $this->get_formatted_subtotal(); ?></td>
225
+ </tr>
226
+ <?php } ?>
227
+ <!-- Shipping -->
228
+ <?php if( $this->template_options['bewpi_show_shipping'] && ! (bool)$this->template_options["bewpi_shipping_taxable"] ) { ?>
229
+ <tr class="shipping after-products">
230
+ <td colspan="<?php echo $colspan['left']; ?>"></td>
231
+ <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'Shipping', 'woocommerce-pdf-invoices' ); ?></td>
232
+ <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo wc_price( $this->order->get_total_shipping(), array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
233
+ </tr>
234
+ <?php } ?>
235
+ <!-- Fees -->
236
+ <?php
237
+ $line_items_fee = $this->order->get_items( 'fee' );
238
+ foreach ( $line_items_fee as $item_id => $item ) :
239
+ ?>
240
+ <tr class="after-products">
241
+ <td colspan="<?php echo $colspan['left']; ?>"></td>
242
+ <td colspan="<?php echo $colspan['right_left']; ?>"><?php echo ! empty( $item['name'] ) ? esc_html( $item['name'] ) : __( 'Fee', 'woocommerce' ); ?></td>
243
+ <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right">
244
+ <?php
245
+ echo ( isset( $item['line_total'] ) ) ? wc_price( wc_round_tax_total( $item['line_total'] ) ) : '';
246
+
247
+ if ( $refunded = $this->order->get_total_refunded_for_item( $item_id, 'fee' ) ) {
248
+ echo '<br/><small class="refunded">-' . wc_price( $refunded, array( 'currency' => $this->order->get_order_currency() ) ) . '</small>';
249
+ }
250
+ ?>
251
+ </td>
252
+ </tr>
253
+ <?php endforeach; ?>
254
+ <!-- Tax -->
255
+ <?php if ( $this->template_options['bewpi_show_tax_total'] && wc_tax_enabled() ) :
256
+ foreach ( $this->order->get_tax_totals() as $code => $tax ) : ?>
257
+ <tr class="after-products">
258
+ <td colspan="<?php echo $colspan['left']; ?>"></td>
259
+ <td colspan="<?php echo $colspan['right_left']; ?>"><?php echo $tax->label . ' ' . WC_Tax::get_rate_percent( $tax->rate_id ); ?></td>
260
+ <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo $tax->formatted_amount; ?></td>
261
+ </tr>
262
+ <?php endforeach; ?>
263
+ <?php endif; ?>
264
+ <!-- Zero Rate VAT -->
265
+ <?php if ( $this->display_zero_rated_vat() ) { ?>
266
+ <tr class="after-products">
267
+ <td colspan="<?php echo $colspan['left']; ?>"></td>
268
+ <td colspan="<?php echo $colspan['right_left']; ?>"><?php _e( 'VAT 0%' ); ?></td>
269
+ <td colspan="<?php echo $colspan['right_right']; ?>" class="align-right"><?php echo wc_price( 0, array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
270
+ </tr>
271
+ <?php } ?>
272
+ <!-- Total -->
273
+ <tr class="after-products">
274
+ <td colspan="<?php echo $colspan['left']; ?>"></td>
275
+ <td colspan="<?php echo $colspan['right_left']; ?>" class="total"><?php _e( 'Total', 'woocommerce-pdf-invoices' ); ?></td>
276
+ <td colspan="<?php echo $colspan['right_right']; ?>" class="grand-total align-right" style="color: <?php echo ( $is_theme_text_black ) ? 'black' : $theme_color; ?>;">
277
+ <?php echo $this->get_formatted_total(); ?>
278
+ </td>
279
+ </tr>
280
+ <!-- Refunded -->
281
+ <?php if ( $this->order->get_total_refunded() > 0 ) { ?>
282
+ <tr class="after-products">
283
+ <td colspan="<?php echo $colspan['left']; ?>"></td>
284
+ <td colspan="<?php echo $colspan['right_left']; ?>" class="refunded"><?php _e( 'Refunded', 'woocommerce-pdf-invoices' ); ?></td>
285
+ <td colspan="<?php echo $colspan['right_right']; ?>" class="refunded align-right"><?php echo '-' . wc_price( $this->order->get_total_refunded(), array( 'currency' => $this->order->get_order_currency() ) ); ?></td>
286
+ </tr>
287
+ <?php } ?>
288
+ </thead>
289
+ </table>
290
+ <table id="terms-notes">
291
+ <!-- Notes & terms -->
292
+ <tr>
293
+ <td class="border" colspan="3">
294
+ <?php echo nl2br( WPI()->templater()->get_option( 'bewpi_terms' ) ); ?><br/>
295
+ <?php
296
+ if ( $this->template_options['bewpi_show_customer_notes'] ) :
297
+ // Note added by customer.
298
+ $customer_note = method_exists( 'WC_Order', 'get_customer_note' ) ? $this->order->get_customer_note() : $this->order->customer_note;
299
+ if ( $customer_note ) {
300
+ echo '<p><strong>' . __( 'Customer note', 'woocommerce-pdf-invoices' ) . ' </strong> ' . $customer_note . '</p>';
301
+ }
302
+ // Notes added by administrator on order details page.
303
+ $customer_order_notes = $this->order->get_customer_order_notes();
304
+ if ( count( $customer_order_notes ) > 0 ) {
305
+ echo '<p><strong>' . __('Customer note', 'woocommerce-pdf-invoices') . ' </strong>' . $customer_order_notes[0]->comment_content . '</p>';
306
+ }
307
+ endif;
308
+ ?>
309
+ </td>
310
+ </tr>
311
+ <?php if ( $this->display_zero_rated_vat() ) { ?>
312
+ <tr>
313
+ <td class="border" colspan="3">
314
+ <?php _e( 'Zero rated for VAT as customer has supplied EU VAT number', 'woocommerce-pdf-invoices' ); ?>
315
+ </td>
316
+ </tr>
317
+ <?php } ?>
318
  </table>
includes/templates/invoice/simple/micro/footer.php CHANGED
@@ -1,15 +1,15 @@
1
- <?php
2
- $theme_color = $this->template_options['bewpi_color_theme'];
3
- $is_theme_text_black = $this->template_options['bewpi_theme_text_black'];
4
- ?>
5
- <table class="foot border" style="border-top: 4px solid <?php echo ( $is_theme_text_black ) ? 'black' : $theme_color; ?>;">
6
- <tr>
7
- <td class="company-details">
8
- <p><?php echo nl2br( WPI()->templater()->get_option( 'bewpi_left_footer_column' ) ); ?></p>
9
- </td>
10
- <td class="payment">
11
- <p><?php echo nl2br( WPI()->templater()->get_option( 'bewpi_right_footer_column' ) ); ?></p>
12
- <p><?php printf( __( '%1$s of %2$s', 'woocommerce-pdf-invoices' ), '{PAGENO}', '{nbpg}' ); ?></p>
13
- </td>
14
- </tr>
15
  </table>
1
+ <?php
2
+ $theme_color = $this->template_options['bewpi_color_theme'];
3
+ $is_theme_text_black = $this->template_options['bewpi_theme_text_black'];
4
+ ?>
5
+ <table class="foot border" style="border-top: 4px solid <?php echo ( $is_theme_text_black ) ? 'black' : $theme_color; ?>;">
6
+ <tr>
7
+ <td class="company-details">
8
+ <p><?php echo nl2br( WPI()->templater()->get_option( 'bewpi_left_footer_column' ) ); ?></p>
9
+ </td>
10
+ <td class="payment">
11
+ <p><?php echo nl2br( WPI()->templater()->get_option( 'bewpi_right_footer_column' ) ); ?></p>
12
+ <p><?php printf( __( '%1$s of %2$s', 'woocommerce-pdf-invoices' ), '{PAGENO}', '{nbpg}' ); ?></p>
13
+ </td>
14
+ </tr>
15
  </table>
includes/templates/invoice/simple/micro/header.php CHANGED
@@ -1,17 +1,17 @@
1
- <table class="company two-column">
2
- <tr>
3
- <td class="logo" width="50%">
4
- <?php
5
- if ( WPI()->templater()->get_logo_url() ) {
6
- printf( '<img class="company-logo" src="var:company_logo"/>' );
7
- } else {
8
- printf( '<h1 class="company-logo">%s</h1>', esc_html( WPI()->templater()->get_option( 'bewpi_company_name' ) ) );
9
- }
10
- ?>
11
- </td>
12
- <td class="info small-font" width="50%">
13
- <p><?php echo nl2br( WPI()->templater()->get_option( 'bewpi_company_address' ) ); ?></p>
14
- <p><?php echo nl2br( WPI()->templater()->get_option( 'bewpi_company_details' ) ); ?></p>
15
- </td>
16
- </tr>
17
- </table>
1
+ <table class="company two-column">
2
+ <tr>
3
+ <td class="logo" width="50%">
4
+ <?php
5
+ if ( WPI()->templater()->get_logo_url() ) {
6
+ printf( '<img class="company-logo" src="var:company_logo"/>' );
7
+ } else {
8
+ printf( '<h1 class="company-logo">%s</h1>', esc_html( WPI()->templater()->get_option( 'bewpi_company_name' ) ) );
9
+ }
10
+ ?>
11
+ </td>
12
+ <td class="info small-font" width="50%">
13
+ <p><?php echo nl2br( WPI()->templater()->get_option( 'bewpi_company_address' ) ); ?></p>
14
+ <p><?php echo nl2br( WPI()->templater()->get_option( 'bewpi_company_details' ) ); ?></p>
15
+ </td>
16
+ </tr>
17
+ </table>
includes/templates/invoice/simple/micro/style.css CHANGED
@@ -1,140 +1,140 @@
1
- table {
2
- font-family: Arial, sans-serif;
3
- }
4
- table.company {
5
- overflow: hidden;
6
- }
7
- h1.company-logo {
8
- color: black;
9
- }
10
- table {
11
- border-collapse: collapse;
12
- font-size: 14px;
13
- width: 100%;
14
- color: #757575;
15
- }
16
- .align-left { text-align: left; }
17
- .align-right { text-align: right; }
18
- .company .info,
19
- .company .logo {
20
- text-align: left;
21
- vertical-align: middle;
22
- font-size: 14px !important;
23
- }
24
- table.two-column {
25
- margin: 40px 0;
26
- width: 100%;
27
- }
28
- .two-column td {
29
- text-align: left;
30
- vertical-align: top;
31
- }
32
- table.products th {
33
- border-bottom: 2px solid #A5A5A5;
34
- }
35
- table.products td{
36
- vertical-align: top;
37
- }
38
- table.products td, table.products th {
39
- padding: 5px;
40
- }
41
- #terms-notes {
42
- margin-top: 30px;
43
- }
44
- tr.product-row td {
45
- border-bottom: 1px solid #CECECE;
46
- }
47
- td.total, td.grand-total {
48
- border-top: 4px solid #8D8D8D;
49
- padding-bottom: 0; margin-bottom: 0;
50
- }
51
- td.grand-total {
52
- font-size: 16px !important;
53
- }
54
- table, tbody, h1 {
55
- margin: 0;
56
- padding: 0;
57
- }
58
- h1 {
59
- font-size: 36px;
60
- }
61
- span.payment-status {
62
- font-size: 14px;
63
- font-weight: normal;
64
- }
65
- .nowrap {
66
- white-space: nowrap;
67
- }
68
- .invoice-head {
69
- margin-bottom: 30px;
70
- margin-right: -64px;
71
- }
72
- .invoice-head td {
73
- text-align: left;
74
- }
75
- .invoice-head .title {
76
- color: #525252;
77
- }
78
- td.invoice-details {
79
- vertical-align: top;
80
- /*line-height: 30px;*/
81
- }
82
- td.invoice-details span {
83
- font-size: 14px;
84
- }
85
- .number {
86
- font-size: 16px;
87
- }
88
- .small-font {
89
- font-size: 14px;
90
- }
91
- .total-amount {
92
- padding: 20px 20px 30px 20px;
93
- width: 54%;
94
- }
95
- .total-amount, .total-amount h1 {
96
- color: white;
97
- font-size: 14px;
98
- }
99
- div.item-attribute {
100
- font-size: 12px;
101
- margin-top: 10px;
102
- }
103
- .invoice {
104
- margin-bottom: 20px;
105
- }
106
- .foot {
107
- margin: 0 -64px;
108
- }
109
- .foot td.border {
110
- padding: 20px 40px;
111
- width: 100%;
112
- text-align: center;
113
- }
114
- td.company-details, td.payment {
115
- padding: 20px 40px 0;
116
- text-align: center;
117
- vertical-align: top;
118
- width: 50%;
119
- }
120
- .foot td {
121
- border: 1px solid white;
122
- font-size: 12px;
123
- }
124
- .refunded {
125
- color: #a00 !important;
126
- }
127
- .total-without-refund {
128
- color: #757575 !important;
129
- }
130
- /* End change colors */
131
- .space td {
132
- padding-bottom: 30px;
133
- }
134
- table.products td {
135
- overflow: hidden;
136
- }
137
- .total-amount p {
138
- font-weight: bold;
139
- font-size: 16px;
140
  }
1
+ table {
2
+ font-family: Arial, sans-serif;
3
+ }
4
+ table.company {
5
+ overflow: hidden;
6
+ }
7
+ h1.company-logo {
8
+ color: black;
9
+ }
10
+ table {
11
+ border-collapse: collapse;
12
+ font-size: 14px;
13
+ width: 100%;
14
+ color: #757575;
15
+ }
16
+ .align-left { text-align: left; }
17
+ .align-right { text-align: right; }
18
+ .company .info,
19
+ .company .logo {
20
+ text-align: left;
21
+ vertical-align: middle;
22
+ font-size: 14px !important;
23
+ }
24
+ table.two-column {
25
+ margin: 40px 0;
26
+ width: 100%;
27
+ }
28
+ .two-column td {
29
+ text-align: left;
30
+ vertical-align: top;
31
+ }
32
+ table.products th {
33
+ border-bottom: 2px solid #A5A5A5;
34
+ }
35
+ table.products td{
36
+ vertical-align: top;
37
+ }
38
+ table.products td, table.products th {
39
+ padding: 5px;
40
+ }
41
+ #terms-notes {
42
+ margin-top: 30px;
43
+ }
44
+ tr.product-row td {
45
+ border-bottom: 1px solid #CECECE;
46
+ }
47
+ td.total, td.grand-total {
48
+ border-top: 4px solid #8D8D8D;
49
+ padding-bottom: 0; margin-bottom: 0;
50
+ }
51
+ td.grand-total {
52
+ font-size: 16px !important;
53
+ }
54
+ table, tbody, h1 {
55
+ margin: 0;
56
+ padding: 0;
57
+ }
58
+ h1 {
59
+ font-size: 36px;
60
+ }
61
+ span.payment-status {
62
+ font-size: 14px;
63
+ font-weight: normal;
64
+ }
65
+ .nowrap {
66
+ white-space: nowrap;
67
+ }
68
+ .invoice-head {
69
+ margin-bottom: 30px;
70
+ margin-right: -64px;
71
+ }
72
+ .invoice-head td {
73
+ text-align: left;
74
+ }
75
+ .invoice-head .title {
76
+ color: #525252;
77
+ }
78
+ td.invoice-details {
79
+ vertical-align: top;
80
+ /*line-height: 30px;*/
81
+ }
82
+ td.invoice-details span {
83
+ font-size: 14px;
84
+ }
85
+ .number {
86
+ font-size: 16px;
87
+ }
88
+ .small-font {
89
+ font-size: 14px;
90
+ }
91
+ .total-amount {
92
+ padding: 20px 20px 30px 20px;
93
+ width: 54%;
94
+ }
95
+ .total-amount, .total-amount h1 {
96
+ color: white;
97
+ font-size: 14px;
98
+ }
99
+ div.item-attribute {
100
+ font-size: 12px;
101
+ margin-top: 10px;
102
+ }
103
+ .invoice {
104
+ margin-bottom: 20px;
105
+ }
106
+ .foot {
107
+ margin: 0 -64px;
108
+ }
109
+ .foot td.border {
110
+ padding: 20px 40px;
111
+ width: 100%;
112
+ text-align: center;
113
+ }
114
+ td.company-details, td.payment {
115
+ padding: 20px 40px 0;
116
+ text-align: center;
117
+ vertical-align: top;
118
+ width: 50%;
119
+ }
120
+ .foot td {
121
+ border: 1px solid white;
122
+ font-size: 12px;
123
+ }
124
+ .refunded {
125
+ color: #a00 !important;
126
+ }
127
+ .total-without-refund {
128
+ color: #757575 !important;
129
+ }
130
+ /* End change colors */
131
+ .space td {
132
+ padding-bottom: 30px;
133
+ }
134
+ table.products td {
135
+ overflow: hidden;
136
+ }
137
+ .total-amount p {
138
+ font-weight: bold;
139
+ font-size: 16px;
140
  }
includes/templates/invoice/simple/minimal/body.php CHANGED
@@ -1,163 +1,177 @@
1
- <?php
2
- /**
3
- * PDF invoice template body.
4
- *
5
- * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/invoice/simple/yourtemplatename/body.php.
6
- *
7
- * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
- * (the theme developer) will need to copy the new files to your theme to
9
- * maintain compatibility. We try to do this as little as possible, but it does
10
- * happen. When this occurs the version of the template file will be bumped and
11
- * the readme will list any important changes.
12
- *
13
- * @author Bas Elbers
14
- * @package WooCommerce_PDF_Invoices/Templates
15
- * @version 0.0.1
16
- */
17
-
18
- $templater = WPI()->templater();
19
- $order = $templater->order;
20
- $invoice = $templater->invoice;
21
- $line_items = $order->get_items( 'line_item' );
22
- $formatted_shipping_address = $order->get_formatted_shipping_address();
23
- $formatted_billing_address = $order->get_formatted_billing_address();
24
- $columns = $invoice->get_columns();
25
- $color = $templater->get_option( 'bewpi_color_theme' );
26
- $terms = $templater->get_option( 'bewpi_terms' );
27
- ?>
28
-
29
- <div class="title">
30
- <div>
31
- <h2><?php echo esc_html( $templater->get_option( 'bewpi_title' ) ); ?></h2>
32
- </div>
33
- <div class="watermark">
34
- <?php
35
- if ( $templater->get_option( 'bewpi_show_payment_status' ) && $order->is_paid() ) {
36
- printf( '<h2 class="green">%s</h2>', esc_html__( 'Paid', 'woocommerce-pdf-invoices' ) );
37
- }
38
-
39
- do_action( 'wpi_watermark_end', $order, $invoice );
40
- ?>
41
- </div>
42
- </div>
43
- <table cellpadding="0" cellspacing="0">
44
- <tr class="information">
45
- <td width="50%">
46
- <?php echo nl2br( $templater->get_option( 'bewpi_company_address' ) ); ?>
47
- </td>
48
-
49
- <td>
50
- <?php
51
- if ( $templater->get_option( 'bewpi_show_ship_to' ) && ! empty( $formatted_shipping_address ) && $formatted_shipping_address !== $formatted_billing_address && ! $templater->has_only_virtual_products( $line_items ) ) {
52
- printf( '<strong>%s</strong><br />', esc_html__( 'Ship to:', 'woocommerce-pdf-invoices' ) );
53
- echo $formatted_shipping_address;
54
- }
55
- ?>
56
- </td>
57
-
58
- <td>
59
- <?php echo $formatted_billing_address; ?>
60
- </td>
61
- </tr>
62
- </table>
63
- <table cellpadding="0" cellspacing="0">
64
- <thead>
65
- <tr class="heading" bgcolor="<?php echo esc_attr( $color ); ?>;">
66
- <?php
67
- foreach ( $columns as $key => $data ) {
68
- $templater->display_header_recursive( $key, $data );
69
- }
70
- ?>
71
- </tr>
72
- </thead>
73
- <tbody>
74
- <?php
75
- foreach ( $invoice->get_columns_data() as $index => $row ) {
76
- echo '<tr class="item">';
77
-
78
- // Display row data.
79
- foreach ( $row as $column_key => $data ) {
80
- $templater->display_data_recursive( $column_key, $data );
81
- }
82
-
83
- echo '</tr>';
84
- } // End foreach().
85
- ?>
86
-
87
- <tr class="spacer">
88
- <td></td>
89
- </tr>
90
-
91
- </tbody>
92
- </table>
93
-
94
- <table cellpadding="0" cellspacing="0">
95
- <tbody>
96
-
97
- <?php
98
- foreach ( $invoice->get_order_item_totals() as $key => $total ) {
99
- $class = str_replace( '_', '-', $key );
100
- ?>
101
-
102
- <tr class="total">
103
- <td width="50%"></td>
104
-
105
- <td width="25%" align="left" class="border <?php echo esc_attr( $class ); ?>">
106
- <?php echo $total['label']; ?>
107
- </td>
108
-
109
- <td width="25%" align="right" class="border <?php echo esc_attr( $class ); ?>">
110
- <?php echo str_replace( '&nbsp;', '', $total['value'] ); ?>
111
- </td>
112
- </tr>
113
-
114
- <?php } ?>
115
- </tbody>
116
- </table>
117
-
118
- <table class="notes" cellpadding="0" cellspacing="0">
119
- <tr>
120
- <td>
121
- <?php
122
- // Customer notes.
123
- if ( $templater->get_option( 'bewpi_show_customer_notes' ) ) {
124
- // Note added by customer.
125
- $customer_note = BEWPI_WC_Order_Compatibility::get_customer_note( $order );
126
- if ( $customer_note ) {
127
- printf( '<strong>' . __( 'Note from customer: %s', 'woocommerce-pdf-invoices' ) . '</strong><br />', nl2br( $customer_note ) );
128
- }
129
-
130
- // Notes added by administrator on 'Edit Order' page.
131
- foreach ( $order->get_customer_order_notes() as $custom_order_note ) {
132
- printf( '<strong>' . __( 'Note to customer: %s', 'woocommerce-pdf-invoices' ) . '</strong><br />', nl2br( $custom_order_note->comment_content ) );
133
- }
134
- }
135
- ?>
136
- </td>
137
- </tr>
138
-
139
- <tr>
140
- <td>
141
- <?php
142
- // Zero Rated VAT message.
143
- if ( 'true' === $templater->get_meta( '_vat_number_is_valid' ) && count( $order->get_tax_totals() ) === 0 ) {
144
- _e( 'Zero rated for VAT as customer has supplied EU VAT number', 'woocommerce-pdf-invoices' );
145
- printf( '<br />' );
146
- }
147
- ?>
148
- </td>
149
- </tr>
150
- </table>
151
-
152
- <?php if ( $terms ) { ?>
153
- <!-- Using div to position absolute the block. -->
154
- <div class="terms">
155
- <table>
156
- <tr>
157
- <td style="border: 1px solid #000;">
158
- <?php echo nl2br( $terms ); ?>
159
- </td>
160
- </tr>
161
- </table>
162
- </div>
163
- <?php }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * PDF invoice template body.
4
+ *
5
+ * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/invoice/simple/yourtemplatename/body.php.
6
+ *
7
+ * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
+ * (the theme developer) will need to copy the new files to your theme to
9
+ * maintain compatibility. We try to do this as little as possible, but it does
10
+ * happen. When this occurs the version of the template file will be bumped and
11
+ * the readme will list any important changes.
12
+ *
13
+ * @author Bas Elbers
14
+ * @package WooCommerce_PDF_Invoices/Templates
15
+ * @version 0.0.1
16
+ */
17
+
18
+ $templater = WPI()->templater();
19
+ $order = $templater->order;
20
+ $invoice = $templater->invoice;
21
+ $line_items = $order->get_items( 'line_item' );
22
+ $formatted_shipping_address = $order->get_formatted_shipping_address();
23
+ $formatted_billing_address = $order->get_formatted_billing_address();
24
+ $columns = $invoice->get_columns();
25
+ $color = $templater->get_option( 'bewpi_color_theme' );
26
+ $terms = $templater->get_option( 'bewpi_terms' );
27
+ ?>
28
+
29
+ <div class="title">
30
+ <div>
31
+ <h2><?php echo esc_html( $templater->get_option( 'bewpi_title' ) ); ?></h2>
32
+ </div>
33
+ <div class="watermark">
34
+ <?php
35
+ if ( $templater->get_option( 'bewpi_show_payment_status' ) && $order->is_paid() ) {
36
+ printf( '<h2 class="green">%s</h2>', esc_html__( 'Paid', 'woocommerce-pdf-invoices' ) );
37
+ }
38
+
39
+ do_action( 'wpi_watermark_end', $order, $invoice );
40
+ ?>
41
+ </div>
42
+ </div>
43
+ <table cellpadding="0" cellspacing="0">
44
+ <tr class="information">
45
+ <td width="50%">
46
+ <?php
47
+ /**
48
+ * Invoice object.
49
+ *
50
+ * @var BEWPI_Invoice $invoice.
51
+ */
52
+ foreach ( $invoice->get_invoice_info() as $id => $info ) {
53
+ printf( '<span class="%1$s">%2$s %3$s</span>', esc_attr( $id ), esc_html( $info['title'] ), esc_html( $info['value'] ) );
54
+ echo '<br>';
55
+ }
56
+ ?>
57
+ </td>
58
+
59
+ <td>
60
+
61
+ <?php
62
+ printf( '<strong>%s</strong><br />', esc_html__( 'Bill to:', 'woocommerce-pdf-invoices' ) );
63
+ echo $formatted_billing_address;
64
+ ?>
65
+ </td>
66
+
67
+ <td>
68
+ <?php
69
+ if ( $templater->get_option( 'bewpi_show_ship_to' ) && ! $templater->has_only_virtual_products( $line_items ) ) {
70
+ printf( '<strong>%s</strong><br />', esc_html__( 'Ship to:', 'woocommerce-pdf-invoices' ) );
71
+ echo $formatted_shipping_address;
72
+ }
73
+ ?>
74
+ </td>
75
+ </tr>
76
+ </table>
77
+ <table cellpadding="0" cellspacing="0">
78
+ <thead>
79
+ <tr class="heading" bgcolor="<?php echo esc_attr( $color ); ?>;">
80
+ <?php
81
+ foreach ( $columns as $key => $data ) {
82
+ $templater->display_header_recursive( $key, $data );
83
+ }
84
+ ?>
85
+ </tr>
86
+ </thead>
87
+ <tbody>
88
+ <?php
89
+ foreach ( $invoice->get_columns_data() as $index => $row ) {
90
+ echo '<tr class="item">';
91
+
92
+ // Display row data.
93
+ foreach ( $row as $column_key => $data ) {
94
+ $templater->display_data_recursive( $column_key, $data );
95
+ }
96
+
97
+ echo '</tr>';
98
+ } // End foreach().
99
+ ?>
100
+
101
+ <tr class="spacer">
102
+ <td></td>
103
+ </tr>
104
+
105
+ </tbody>
106
+ </table>
107
+
108
+ <table cellpadding="0" cellspacing="0">
109
+ <tbody>
110
+
111
+ <?php
112
+ foreach ( $invoice->get_order_item_totals() as $key => $total ) {
113
+ $class = str_replace( '_', '-', $key );
114
+ ?>
115
+
116
+ <tr class="total">
117
+ <td width="50%"></td>
118
+
119
+ <td width="25%" align="left" class="border <?php echo esc_attr( $class ); ?>">
120
+ <?php echo $total['label']; ?>
121
+ </td>
122
+
123
+ <td width="25%" align="right" class="border <?php echo esc_attr( $class ); ?>">
124
+ <?php echo str_replace( '&nbsp;', '', $total['value'] ); ?>
125
+ </td>
126
+ </tr>
127
+
128
+ <?php } ?>
129
+ </tbody>
130
+ </table>
131
+
132
+ <table class="notes" cellpadding="0" cellspacing="0">
133
+ <tr>
134
+ <td>
135
+ <?php
136
+ // Customer notes.
137
+ if ( $templater->get_option( 'bewpi_show_customer_notes' ) ) {
138
+ // Note added by customer.
139
+ $customer_note = BEWPI_WC_Order_Compatibility::get_customer_note( $order );
140
+ if ( $customer_note ) {
141
+ printf( '<strong>' . __( 'Note from customer: %s', 'woocommerce-pdf-invoices' ) . '</strong><br />', nl2br( $customer_note ) );
142
+ }
143
+
144
+ // Notes added by administrator on 'Edit Order' page.
145
+ foreach ( $order->get_customer_order_notes() as $custom_order_note ) {
146
+ printf( '<strong>' . __( 'Note to customer: %s', 'woocommerce-pdf-invoices' ) . '</strong><br />', nl2br( $custom_order_note->comment_content ) );
147
+ }
148
+ }
149
+ ?>
150
+ </td>
151
+ </tr>
152
+
153
+ <tr>
154
+ <td>
155
+ <?php
156
+ // Zero Rated VAT message.
157
+ if ( 'true' === $templater->get_meta( '_vat_number_is_valid' ) && count( $order->get_tax_totals() ) === 0 ) {
158
+ _e( 'Zero rated for VAT as customer has supplied EU VAT number', 'woocommerce-pdf-invoices' );
159
+ printf( '<br />' );
160
+ }
161
+ ?>
162
+ </td>
163
+ </tr>
164
+ </table>
165
+
166
+ <?php if ( $terms ) { ?>
167
+ <!-- Using div to position absolute the block. -->
168
+ <div class="terms">
169
+ <table>
170
+ <tr>
171
+ <td style="border: 1px solid #000;">
172
+ <?php echo nl2br( $terms ); ?>
173
+ </td>
174
+ </tr>
175
+ </table>
176
+ </div>
177
+ <?php }
includes/templates/invoice/simple/minimal/footer.php CHANGED
@@ -1,29 +1,29 @@
1
- <?php
2
- /**
3
- * PDF invoice footer template that will be visible on every page.
4
- *
5
- * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/invoice/simple/yourtemplatename/footer.php.
6
- *
7
- * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
- * (the theme developer) will need to copy the new files to your theme to
9
- * maintain compatibility. We try to do this as little as possible, but it does
10
- * happen. When this occurs the version of the template file will be bumped and
11
- * the readme will list any important changes.
12
- *
13
- * @author Bas Elbers
14
- * @package WooCommerce_PDF_Invoices/Templates
15
- * @version 0.0.1
16
- */
17
-
18
- ?>
19
-
20
- <table class="footer">
21
- <tr>
22
- <td>
23
- <?php echo nl2br( WPI()->templater()->get_option( 'bewpi_left_footer_column' ) ); ?>
24
- </td>
25
- <td width="20%">
26
- <?php printf( __( '%1$s of %2$s', 'woocommerce-pdf-invoices' ), '{PAGENO}', '{nbpg}' ); ?>
27
- </td>
28
- </tr>
29
- </table>
1
+ <?php
2
+ /**
3
+ * PDF invoice footer template that will be visible on every page.
4
+ *
5
+ * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/invoice/simple/yourtemplatename/footer.php.
6
+ *
7
+ * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
+ * (the theme developer) will need to copy the new files to your theme to
9
+ * maintain compatibility. We try to do this as little as possible, but it does
10
+ * happen. When this occurs the version of the template file will be bumped and
11
+ * the readme will list any important changes.
12
+ *
13
+ * @author Bas Elbers
14
+ * @package WooCommerce_PDF_Invoices/Templates
15
+ * @version 0.0.1
16
+ */
17
+
18
+ ?>
19
+
20
+ <table class="footer">
21
+ <tr>
22
+ <td>
23
+ <?php echo nl2br( WPI()->templater()->get_option( 'bewpi_left_footer_column' ) ); ?>
24
+ </td>
25
+ <td width="20%">
26
+ <?php printf( __( '%1$s of %2$s', 'woocommerce-pdf-invoices' ), '{PAGENO}', '{nbpg}' ); ?>
27
+ </td>
28
+ </tr>
29
+ </table>
includes/templates/invoice/simple/minimal/header.php CHANGED
@@ -1,49 +1,39 @@
1
- <?php
2
- /**
3
- * PDF invoice header template that will be visible on every page.
4
- *
5
- * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/invoice/simple/yourtemplatename/header.php.
6
- *
7
- * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
- * (the theme developer) will need to copy the new files to your theme to
9
- * maintain compatibility. We try to do this as little as possible, but it does
10
- * happen. When this occurs the version of the template file will be bumped and
11
- * the readme will list any important changes.
12
- *
13
- * @author Bas Elbers
14
- * @package WooCommerce_PDF_Invoices/Templates
15
- * @version 0.0.1
16
- */
17
-
18
- $templater = WPI()->templater();
19
- $order = $templater->order;
20
- $invoice = $templater->invoice;
21
- ?>
22
-
23
- <table cellpadding="0" cellspacing="0">
24
- <tr class="top">
25
- <td>
26
- <?php
27
- if ( $templater->get_logo_url() ) {
28
- printf( '<img src="var:company_logo" style="max-height:100px;"/>' );
29
- } else {
30
- printf( '<h2>%s</h2>', esc_html( $templater->get_option( 'bewpi_company_name' ) ) );
31
- }
32
- ?>
33
- </td>
34
-
35
- <td>
36
- <?php
37
- /**
38
- * Invoice object.
39
- *
40
- * @var BEWPI_Invoice $invoice.
41
- */
42
- foreach ( $invoice->get_invoice_info() as $id => $info ) {
43
- printf( '<span class="%1$s">%2$s %3$s</span>', esc_attr( $id ), esc_html( $info['title'] ), esc_html( $info['value'] ) );
44
- echo '<br>';
45
- }
46
- ?>
47
- </td>
48
- </tr>
49
- </table>
1
+ <?php
2
+ /**
3
+ * PDF invoice header template that will be visible on every page.
4
+ *
5
+ * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/invoice/simple/yourtemplatename/header.php.
6
+ *
7
+ * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
+ * (the theme developer) will need to copy the new files to your theme to
9
+ * maintain compatibility. We try to do this as little as possible, but it does
10
+ * happen. When this occurs the version of the template file will be bumped and
11
+ * the readme will list any important changes.
12
+ *
13
+ * @author Bas Elbers
14
+ * @package WooCommerce_PDF_Invoices/Templates
15
+ * @version 0.0.1
16
+ */
17
+
18
+ $templater = WPI()->templater();
19
+ $order = $templater->order;
20
+ $invoice = $templater->invoice;
21
+ ?>
22
+
23
+ <table cellpadding="0" cellspacing="0">
24
+ <tr class="top">
25
+ <td>
26
+ <?php
27
+ if ( $templater->get_logo_url() ) {
28
+ printf( '<img src="var:company_logo" style="max-height:100px;"/>' );
29
+ } else {
30
+ printf( '<h2>%s</h2>', esc_html( $templater->get_option( 'bewpi_company_name' ) ) );
31
+ }
32
+ ?>
33
+ </td>
34
+
35
+ <td>
36
+ <?php echo nl2br( $templater->get_option( 'bewpi_company_address' ) ); ?>
37
+ </td>
38
+ </tr>
39
+ </table>
 
 
 
 
 
 
 
 
 
 
includes/templates/invoice/simple/minimal/style.css CHANGED
@@ -1,153 +1,153 @@
1
- table, tr, td, div, p {
2
- /*border:1px solid black;*/
3
- }
4
-
5
- h1, h2, h3, h4, h5, h6{
6
- padding:0;
7
- margin:0;
8
- }
9
-
10
- table, div {
11
- font-family: dejavusanscondensed, Arial, sans-serif;
12
- }
13
-
14
- table {
15
- width: 100%;
16
- line-height: normal;
17
- color: #555;
18
- font-size: 12px;
19
- margin-left: 60px; /* Invoice margin */
20
- margin-right: 60px; /* Invoice margin */
21
- }
22
-
23
- table td, table th {
24
- padding:5px;
25
- vertical-align:top;
26
- line-height: inherit;
27
- }
28
-
29
- table tr.top td {
30
- padding-top: 40px;
31
- }
32
-
33
- /* Invoice information */
34
- table tr.top td:nth-child(2){
35
- text-align:right;
36
- }
37
-
38
- div.title div {
39
- padding: 5px;
40
- width: 40%;
41
- float: left;
42
- margin-left: 60px; /* Invoice margin */
43
- line-height: 55px;
44
- }
45
-
46
- div.title div.watermark {
47
- float: right;
48
- margin-right: 60px; /* Invoice margin */
49
- line-height: normal;
50
- }
51
-
52
- div.title div.watermark h2 {
53
- font-family: serif;
54
- text-transform: uppercase;
55
- font-weight: bold;
56
- padding: 10px 7px;
57
- border-radius: 10px;
58
- opacity: 0.8;
59
- text-align: center;
60
- width: 130px;
61
- float:right;
62
- }
63
-
64
- div.title div.watermark h2.green {
65
- color: green;
66
- border: 3px solid green;
67
- }
68
-
69
- div.title div.watermark h2.red {
70
- color: red;
71
- border: 3px solid red;
72
- }
73
-
74
- table tr.information td {
75
- padding-bottom: 20px;
76
- }
77
-
78
- /* Customer billing address */
79
- table tr.information td:nth-child(3){
80
- text-align: right;
81
- }
82
-
83
- table tr.heading th:nth-child(1) {
84
- width: 50%;
85
- }
86
-
87
- table tr.heading th:nth-child(1),
88
- table tr.item td:nth-child(1) {
89
- text-align: left;
90
- }
91
-
92
- table tr.heading th {
93
- font-weight: bold;
94
- color: #FFFFFF;
95
- text-align: center;
96
- }
97
-
98
- table tr.heading th.total,
99
- table tr.heading th.total_ex_vat,
100
- table tr.heading th.total_incl_vat,
101
- table tr.item td.total,
102
- table tr.item td.total_ex_vat,
103
- table tr.item td.total_incl_vat {
104
- text-align: right;
105
- }
106
-
107
- table tr.item td {
108
- border-bottom: 1px solid #eee;
109
- text-align: center;
110
- }
111
-
112
- table tr.spacer td {
113
- padding-top: 20px;
114
- }
115
-
116
- /* Totals */
117
- table tr.total td.border {
118
- border-top: 2px solid #eee;
119
- font-weight: bold;
120
- }
121
-
122
- small.shipped_via {
123
- display: none;
124
- }
125
-
126
- /* Dynamic class */
127
- table tr.total td.order-total{
128
- border-top: 2px solid #000;
129
- }
130
-
131
- table.notes {
132
- margin-top: 40px;
133
- }
134
-
135
- div.terms {
136
- margin-top: 40px;
137
- position: absolute;
138
- bottom: 120px;
139
- }
140
-
141
- table.footer {
142
- padding-top: 20px;
143
- padding-bottom: 20px; /* Invoice margin */
144
- width: 100%;
145
- }
146
-
147
- table.footer tr td {
148
- vertical-align: bottom;
149
- }
150
-
151
- table.footer tr td:nth-child(2) {
152
- text-align: right;
153
- }
1
+ table, tr, td, div, p {
2
+ /*border:1px solid black;*/
3
+ }
4
+
5
+ h1, h2, h3, h4, h5, h6{
6
+ padding:0;
7
+ margin:0;
8
+ }
9
+
10
+ table, div {
11
+ font-family: dejavusanscondensed, Arial, sans-serif;
12
+ }
13
+
14
+ table {
15
+ width: 100%;
16
+ line-height: normal;
17
+ color: #555;
18
+ font-size: 12px;
19
+ margin-left: 80px; /* Invoice margin */
20
+ margin-right: 80px; /* Invoice margin */
21
+ }
22
+
23
+ table td, table th {
24
+ padding:5px;
25
+ vertical-align:top;
26
+ line-height: inherit;
27
+ }
28
+
29
+ table tr.top td {
30
+ padding-top: 75px;
31
+ }
32
+
33
+ /* Invoice information */
34
+ table tr.top td:nth-child(2){
35
+ text-align:right;
36
+ }
37
+
38
+ div.title div {
39
+ padding: 5px;
40
+ width: 35%;
41
+ float: left;
42
+ margin-left: 80px; /* Invoice margin */
43
+ line-height: 55px;
44
+ }
45
+
46
+ div.title div.watermark {
47
+ float: right;
48
+ margin-right: 80px; /* Invoice margin */
49
+ line-height: normal;
50
+ }
51
+
52
+ div.title div.watermark h2 {
53
+ font-family: serif;
54
+ text-transform: uppercase;
55
+ font-weight: bold;
56
+ padding: 10px 7px;
57
+ border-radius: 10px;
58
+ opacity: 0.8;
59
+ text-align: center;
60
+ width: 130px;
61
+ float:right;
62
+ }
63
+
64
+ div.title div.watermark h2.green {
65
+ color: green;
66
+ border: 3px solid green;
67
+ }
68
+
69
+ div.title div.watermark h2.red {
70
+ color: red;
71
+ border: 3px solid red;
72
+ }
73
+
74
+ table tr.information td {
75
+ padding-bottom: 20px;
76
+ }
77
+
78
+ /* Customer billing address */
79
+ table tr.information td:nth-child(3){
80
+ text-align: right;
81
+ }
82
+
83
+ table tr.heading th:nth-child(1) {
84
+ width: 50%;
85
+ }
86
+
87
+ table tr.heading th:nth-child(1),
88
+ table tr.item td:nth-child(1) {
89
+ text-align: left;
90
+ }
91
+
92
+ table tr.heading th {
93
+ font-weight: bold;
94
+ color: #FFFFFF;
95
+ text-align: center;
96
+ }
97
+
98
+ table tr.heading th.total,
99
+ table tr.heading th.total_ex_vat,
100
+ table tr.heading th.total_incl_vat,
101
+ table tr.item td.total,
102
+ table tr.item td.total_ex_vat,
103
+ table tr.item td.total_incl_vat {
104
+ text-align: right;
105
+ }
106
+
107
+ table tr.item td {
108
+ border-bottom: 1px solid #eee;
109
+ text-align: center;
110
+ }
111
+
112
+ table tr.spacer td {
113
+ padding-top: 20px;
114
+ }
115
+
116
+ /* Totals */
117
+ table tr.total td.border {
118
+ border-top: 2px solid #eee;
119
+ font-weight: bold;
120
+ }
121
+
122
+ small.shipped_via {
123
+ display: none;
124
+ }
125
+
126
+ /* Dynamic class */
127
+ table tr.total td.order-total{
128
+ border-top: 2px solid #000;
129
+ }
130
+
131
+ table.notes {
132
+ margin-top: 40px;
133
+ }
134
+
135
+ div.terms {
136
+ margin-top: 40px;
137
+ position: absolute;
138
+ bottom: 120px;
139
+ }
140
+
141
+ table.footer {
142
+ padding-top: 20px;
143
+ padding-bottom: 20px; /* Invoice margin */
144
+ width: 100%;
145
+ }
146
+
147
+ table.footer tr td {
148
+ vertical-align: bottom;
149
+ }
150
+
151
+ table.footer tr td:nth-child(2) {
152
+ text-align: right;
153
+ }
includes/templates/packing-slip/simple/minimal/body.php CHANGED
@@ -1,120 +1,133 @@
1
- <?php
2
- /**
3
- * PDF packing slip template body.
4
- *
5
- * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/packing-slip/simple/yourtemplatename/body.php.
6
- *
7
- * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
- * (the theme developer) will need to copy the new files to your theme to
9
- * maintain compatibility. We try to do this as little as possible, but it does
10
- * happen. When this occurs the version of the template file will be bumped and
11
- * the readme will list any important changes.
12
- *
13
- * @author Bas Elbers
14
- * @package WooCommerce_PDF_Invoices/Templates
15
- * @version 0.0.1
16
- */
17
-
18
- $templater = WPI()->templater();
19
- $order = $templater->order;
20
- $formatted_shipping_address = $order->get_formatted_shipping_address();
21
- $formatted_billing_address = $order->get_formatted_billing_address();
22
- $line_items = $order->get_items( 'line_item' );
23
- $color = $templater->get_option( 'bewpi_color_theme' );
24
- ?>
25
-
26
- <table>
27
- <tr class="title">
28
- <td colspan="3">
29
- <h2><?php _e( 'Packing Slip', 'woocommerce-pdf-invoices' ); ?></h2>
30
- </td>
31
- </tr>
32
- <tr class="information">
33
- <td width="50%">
34
- <?php echo nl2br( $templater->get_option( 'bewpi_company_address' ) ); ?>
35
- </td>
36
-
37
- <td>
38
- <?php
39
- if ( $templater->get_option( 'bewpi_show_ship_to' ) && ! empty( $formatted_shipping_address ) && $formatted_shipping_address !== $formatted_billing_address && ! $templater->has_only_virtual_products( $line_items ) ) {
40
- printf( '<strong>%s</strong><br />', __( 'Ship to:', 'woocommerce-pdf-invoices' ) );
41
- echo $formatted_shipping_address;
42
- }
43
- ?>
44
- </td>
45
-
46
- <td>
47
- <?php echo $formatted_billing_address; ?>
48
- </td>
49
- </tr>
50
- </table>
51
- <table>
52
- <thead>
53
- <tr class="heading" bgcolor="<?php echo $color; ?>;">
54
- <th>
55
- <?php _e( 'SKU', 'woocommerce-pdf-invoices' ); ?>
56
- </th>
57
-
58
- <th>
59
- <?php _e( 'Product', 'woocommerce-pdf-invoices' ); ?>
60
- </th>
61
-
62
- <th>
63
- <?php _e( 'Qty', 'woocommerce-pdf-invoices' ); ?>
64
- </th>
65
- </tr>
66
- </thead>
67
- <tbody>
68
- <?php
69
- foreach ( $line_items as $item_id => $item ) {
70
- $product = BEWPI_WC_Order_Compatibility::get_product( $order, $item );
71
- ?>
72
-
73
- <tr class="item">
74
- <td width="10%">
75
- <?php echo $product && $product->get_sku() ? $product->get_sku() : '-'; ?>
76
- </td>
77
-
78
- <td width="65%">
79
- <?php
80
- echo $item['name'];
81
-
82
- do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $order );
83
-
84
- $templater->wc_display_item_meta( $item, true );
85
- $templater->wc_display_item_downloads( $item, true );
86
-
87
- do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $order );
88
- ?>
89
- </td>
90
-
91
- <td width="25%">
92
- <?php echo $item['qty']; ?>
93
- </td>
94
- </tr>
95
-
96
- <?php } ?>
97
- </tbody>
98
- </table>
99
-
100
- <table class="notes">
101
- <tr>
102
- <td>
103
- <?php
104
- // Customer notes.
105
- if ( $templater->get_option( 'bewpi_show_customer_notes' ) ) {
106
- // Note added by customer.
107
- $customer_note = BEWPI_WC_Order_Compatibility::get_customer_note( $order );
108
- if ( $customer_note ) {
109
- printf( '<strong>' . __( 'Note from customer: %s', 'woocommerce-pdf-invoices' ) . '</strong><br />', nl2br( $customer_note ) );
110
- }
111
-
112
- // Notes added by administrator on 'Edit Order' page.
113
- foreach ( $order->get_customer_order_notes() as $custom_order_note ) {
114
- printf( '<strong>' . __( 'Note to customer: %s', 'woocommerce-pdf-invoices' ) . '</strong><br />', nl2br( $custom_order_note->comment_content ) );
115
- }
116
- }
117
- ?>
118
- </td>
119
- </tr>
120
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * PDF packing slip template body.
4
+ *
5
+ * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/packing-slip/simple/yourtemplatename/body.php.
6
+ *
7
+ * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
+ * (the theme developer) will need to copy the new files to your theme to
9
+ * maintain compatibility. We try to do this as little as possible, but it does
10
+ * happen. When this occurs the version of the template file will be bumped and
11
+ * the readme will list any important changes.
12
+ *
13
+ * @author Bas Elbers
14
+ * @package WooCommerce_PDF_Invoices/Templates
15
+ * @version 0.0.1
16
+ */
17
+
18
+ $templater = WPI()->templater();
19
+ $order = $templater->order;
20
+ $document = $templater->packing_slip;
21
+ $formatted_shipping_address = $order->get_formatted_shipping_address();
22
+ $formatted_billing_address = $order->get_formatted_billing_address();
23
+ $line_items = $order->get_items( 'line_item' );
24
+ $color = $templater->get_option( 'bewpi_color_theme' );
25
+ ?>
26
+
27
+ <table>
28
+ <tr class="title">
29
+ <td colspan="3">
30
+ <h2><?php _e( 'Packing Slip', 'woocommerce-pdf-invoices' ); ?></h2>
31
+ </td>
32
+ </tr>
33
+ <tr class="information">
34
+ <td width="50%">
35
+
36
+ <?php
37
+ printf( __( 'Order Date: %s', 'woocommerce-pdf-invoices' ), $document->get_formatted_order_date() );
38
+ printf( '<br />' );
39
+ printf( __( 'Order Number: %s', 'woocommerce-pdf-invoices' ), $order->get_order_number() );
40
+
41
+ $shipping_method = $order->get_shipping_method();
42
+ if ( $shipping_method ) {
43
+ printf( '<br />' );
44
+ printf( __( 'Shipping Method: %s', 'woocommerce-pdf-invoices' ), $shipping_method );
45
+ }
46
+ ?>
47
+ </td>
48
+
49
+ <td>
50
+ <?php
51
+ printf( '<strong>%s</strong><br />', __( 'Bill to:', 'woocommerce-pdf-invoices' ) );
52
+ echo $formatted_billing_address;
53
+ ?>
54
+ </td>
55
+
56
+ <td>
57
+ <?php
58
+ printf( '<strong>%s</strong><br />', __( 'Ship to:', 'woocommerce-pdf-invoices' ) );
59
+ echo $formatted_shipping_address;
60
+ ?>
61
+ </td>
62
+ </tr>
63
+ </table>
64
+ <table>
65
+ <thead>
66
+ <tr class="heading" bgcolor="<?php echo $color; ?>;">
67
+ <th>
68
+ <?php _e( 'SKU', 'woocommerce-pdf-invoices' ); ?>
69
+ </th>
70
+
71
+ <th>
72
+ <?php _e( 'Product', 'woocommerce-pdf-invoices' ); ?>
73
+ </th>
74
+
75
+ <th>
76
+ <?php _e( 'Qty', 'woocommerce-pdf-invoices' ); ?>
77
+ </th>
78
+ </tr>
79
+ </thead>
80
+ <tbody>
81
+ <?php
82
+ foreach ( $line_items as $item_id => $item ) {
83
+ $product = BEWPI_WC_Order_Compatibility::get_product( $order, $item );
84
+ ?>
85
+
86
+ <tr class="item">
87
+ <td width="10%">
88
+ <?php echo $product && $product->get_sku() ? $product->get_sku() : '-'; ?>
89
+ </td>
90
+
91
+ <td width="65%">
92
+ <?php
93
+ echo $item['name'];
94
+
95
+ do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $order );
96
+
97
+ $templater->wc_display_item_meta( $item, true );
98
+ $templater->wc_display_item_downloads( $item, true );
99
+
100
+ do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $order );
101
+ ?>
102
+ </td>
103
+
104
+ <td width="25%">
105
+ <?php echo $item['qty']; ?>
106
+ </td>
107
+ </tr>
108
+
109
+ <?php } ?>
110
+ </tbody>
111
+ </table>
112
+
113
+ <table class="notes">
114
+ <tr>
115
+ <td>
116
+ <?php
117
+ // Customer notes.
118
+ if ( $templater->get_option( 'bewpi_show_customer_notes' ) ) {
119
+ // Note added by customer.
120
+ $customer_note = BEWPI_WC_Order_Compatibility::get_customer_note( $order );
121
+ if ( $customer_note ) {
122
+ printf( '<strong>' . __( 'Note from customer: %s', 'woocommerce-pdf-invoices' ) . '</strong><br />', nl2br( $customer_note ) );
123
+ }
124
+
125
+ // Notes added by administrator on 'Edit Order' page.
126
+ foreach ( $order->get_customer_order_notes() as $custom_order_note ) {
127
+ printf( '<strong>' . __( 'Note to customer: %s', 'woocommerce-pdf-invoices' ) . '</strong><br />', nl2br( $custom_order_note->comment_content ) );
128
+ }
129
+ }
130
+ ?>
131
+ </td>
132
+ </tr>
133
+ </table>
includes/templates/packing-slip/simple/minimal/footer.php CHANGED
@@ -1,26 +1,26 @@
1
- <?php
2
- /**
3
- * PDF packing slip footer template that will be visible on every page.
4
- *
5
- * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/packing-slip/simple/yourtemplatename/footer.php.
6
- *
7
- * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
- * (the theme developer) will need to copy the new files to your theme to
9
- * maintain compatibility. We try to do this as little as possible, but it does
10
- * happen. When this occurs the version of the template file will be bumped and
11
- * the readme will list any important changes.
12
- *
13
- * @author Bas Elbers
14
- * @package WooCommerce_PDF_Invoices/Templates
15
- * @version 0.0.1
16
- */
17
-
18
- ?>
19
-
20
- <table class="footer">
21
- <tr>
22
- <td>
23
- <?php printf( __( '%1$s of %2$s', 'woocommerce-pdf-invoices' ), '{PAGENO}', '{nbpg}' ); ?>
24
- </td>
25
- </tr>
26
- </table>
1
+ <?php
2
+ /**
3
+ * PDF packing slip footer template that will be visible on every page.
4
+ *
5
+ * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/packing-slip/simple/yourtemplatename/footer.php.
6
+ *
7
+ * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
+ * (the theme developer) will need to copy the new files to your theme to
9
+ * maintain compatibility. We try to do this as little as possible, but it does
10
+ * happen. When this occurs the version of the template file will be bumped and
11
+ * the readme will list any important changes.
12
+ *
13
+ * @author Bas Elbers
14
+ * @package WooCommerce_PDF_Invoices/Templates
15
+ * @version 0.0.1
16
+ */
17
+
18
+ ?>
19
+
20
+ <table class="footer">
21
+ <tr>
22
+ <td>
23
+ <?php printf( __( '%1$s of %2$s', 'woocommerce-pdf-invoices' ), '{PAGENO}', '{nbpg}' ); ?>
24
+ </td>
25
+ </tr>
26
+ </table>
includes/templates/packing-slip/simple/minimal/header.php CHANGED
@@ -1,49 +1,39 @@
1
- <?php
2
- /**
3
- * PDF packing slip header template that will be visible on every page.
4
- *
5
- * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/packing-slip/simple/yourtemplatename/header.php.
6
- *
7
- * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
- * (the theme developer) will need to copy the new files to your theme to
9
- * maintain compatibility. We try to do this as little as possible, but it does
10
- * happen. When this occurs the version of the template file will be bumped and
11
- * the readme will list any important changes.
12
- *
13
- * @author Bas Elbers
14
- * @package WooCommerce_PDF_Invoices/Templates
15
- * @version 0.0.1
16
- */
17
-
18
- $templater = WPI()->templater();
19
- $document = $templater->packing_slip;
20
- $order = $templater->order;
21
- ?>
22
-
23
- <table>
24
- <tr class="top">
25
- <td>
26
- <?php
27
- if ( $templater->get_logo_url() ) {
28
- printf( '<img src="var:company_logo" style="max-height:100px;"/>' );
29
- } else {
30
- printf( '<h2>%s</h2>', esc_html( $templater->get_option( 'bewpi_company_name' ) ) );
31
- }
32
- ?>
33
- </td>
34
-
35
- <td>
36
- <?php
37
- printf( __( 'Order Date: %s', 'woocommerce-pdf-invoices' ), $document->get_formatted_order_date() );
38
- printf( '<br />' );
39
- printf( __( 'Order Number: %s', 'woocommerce-pdf-invoices' ), $order->get_order_number() );
40
-
41
- $shipping_method = $order->get_shipping_method();
42
- if ( $shipping_method ) {
43
- printf( '<br />' );
44
- printf( __( 'Shipping Method: %s', 'woocommerce-pdf-invoices' ), $shipping_method );
45
- }
46
- ?>
47
- </td>
48
- </tr>
49
- </table>
1
+ <?php
2
+ /**
3
+ * PDF packing slip header template that will be visible on every page.
4
+ *
5
+ * This template can be overridden by copying it to youruploadsfolder/woocommerce-pdf-invoices/templates/packing-slip/simple/yourtemplatename/header.php.
6
+ *
7
+ * HOWEVER, on occasion WooCommerce PDF Invoices will need to update template files and you
8
+ * (the theme developer) will need to copy the new files to your theme to
9
+ * maintain compatibility. We try to do this as little as possible, but it does
10
+ * happen. When this occurs the version of the template file will be bumped and
11
+ * the readme will list any important changes.
12
+ *
13
+ * @author Bas Elbers
14
+ * @package WooCommerce_PDF_Invoices/Templates
15
+ * @version 0.0.1
16
+ */
17
+
18
+ $templater = WPI()->templater();
19
+ $document = $templater->packing_slip;
20
+ $order = $templater->order;
21
+ ?>
22
+
23
+ <table>
24
+ <tr class="top">
25
+ <td>
26
+ <?php
27
+ if ( $templater->get_logo_url() ) {
28
+ printf( '<img src="var:company_logo" style="max-height:100px;"/>' );
29
+ } else {
30
+ printf( '<h2>%s</h2>', esc_html( $templater->get_option( 'bewpi_company_name' ) ) );
31
+ }
32
+ ?>
33
+ </td>
34
+
35
+ <td>
36
+ <?php echo nl2br( $templater->get_option( 'bewpi_company_address' ) ); ?>
37
+ </td>
38
+ </tr>
39
+ </table>
 
 
 
 
 
 
 
 
 
 
includes/templates/packing-slip/simple/minimal/style.css CHANGED
@@ -1,80 +1,80 @@
1
- table, tr, td, div, p {
2
- /*border: 1px solid black;*/
3
- }
4
-
5
- h1, h2, h3, h4, h5, h6{
6
- padding: 0;
7
- margin: 0;
8
- }
9
-
10
- table, div {
11
- font-family: dejavusanscondensed, Arial, sans-serif;
12
- }
13
-
14
- table {
15
- width: 100%;
16
- border-spacing: 0;
17
- border-collapse: collapse;
18
- line-height: normal;
19
- color: #555;
20
- font-size: 12px;
21
- margin-left: 60px; /* Document margin */
22
- margin-right: 60px; /* Document margin */
23
- }
24
-
25
- table td, table th {
26
- padding: 5px;
27
- vertical-align: top;
28
- line-height: inherit;
29
- }
30
-
31
- table tr.top td {
32
- padding-top: 40px;
33
- }
34
-
35
- /* Top information */
36
- table tr.top td:nth-child(2){
37
- text-align: right;
38
- }
39
-
40
- table tr.title td {
41
- margin-left: 60px; /* Document margin */
42
- line-height: 55px;
43
- }
44
-
45
- table tr.information td {
46
- padding-bottom: 20px;
47
- }
48
-
49
- /* Customer billing address */
50
- table tr.information td:nth-child(3){
51
- text-align: right;
52
- }
53
-
54
- table tr.heading th {
55
- font-weight: bold;
56
- text-align: left;
57
- color: #FFFFFF;
58
- }
59
-
60
- table tr.item td{
61
- border-bottom: 1px solid #eee;
62
- }
63
-
64
- table.notes {
65
- margin-top: 40px;
66
- }
67
-
68
- table.footer {
69
- margin-top: 20px;
70
- margin-bottom: 20px; /* Document margin */
71
- width: 100%;
72
- }
73
-
74
- table.footer tr td {
75
- vertical-align: bottom;
76
- }
77
-
78
- table.footer tr td {
79
- text-align: right;
80
- }
1
+ table, tr, td, div, p {
2
+ /*border: 1px solid black;*/
3
+ }
4
+
5
+ h1, h2, h3, h4, h5, h6{
6
+ padding: 0;
7
+ margin: 0;
8
+ }
9
+
10
+ table, div {
11
+ font-family: dejavusanscondensed, Arial, sans-serif;
12
+ }
13
+
14
+ table {
15
+ width: 100%;
16
+ border-spacing: 0;
17
+ border-collapse: collapse;
18
+ line-height: normal;
19
+ color: #555;
20
+ font-size: 12px;
21
+ margin-left: 80px; /* Document margin */
22
+ margin-right: 80px; /* Document margin */
23
+ }
24
+
25
+ table td, table th {
26
+ padding: 5px;
27
+ vertical-align: top;
28
+ line-height: inherit;
29
+ }
30
+
31
+ table tr.top td {
32
+ padding-top: 80px;
33
+ }
34
+
35
+ /* Top information */
36
+ table tr.top td:nth-child(2){
37
+ text-align: right;
38
+ }
39
+
40
+ table tr.title td {
41
+ margin-left: 80px; /* Document margin */
42
+ line-height: 55px;
43
+ }
44
+
45
+ table tr.information td {
46
+ padding-bottom: 20px;
47
+ }
48
+
49
+ /* Customer billing address */
50
+ table tr.information td:nth-child(3){
51
+ text-align: right;
52
+ }
53
+
54
+ table tr.heading th {
55
+ font-weight: bold;
56
+ text-align: left;
57
+ color: #FFFFFF;
58
+ }
59
+
60
+ table tr.item td{
61
+ border-bottom: 1px solid #eee;
62
+ }
63
+
64
+ table.notes {
65
+ margin-top: 40px;
66
+ }
67
+
68
+ table.footer {
69
+ margin-top: 20px;
70
+ margin-bottom: 20px; /* Document margin */
71
+ width: 100%;
72
+ }
73
+
74
+ table.footer tr td {
75
+ vertical-align: bottom;
76
+ }
77
+
78
+ table.footer tr td {
79
+ text-align: right;
80
+ }
includes/woocommerce-pdf-invoices.php CHANGED
@@ -1,1060 +1,1060 @@
1
- <?php
2
- /**
3
- * Final WooCommerce PDF Invoices Class.
4
- *
5
- * Processes several hooks and filter callbacks.
6
- *
7
- * @author Bas Elbers
8
- * @category Class
9
- * @package BE_WooCommerce_PDF_Invoices/Class
10
- * @version 1.0.0
11
- */
12
-
13
- defined( 'ABSPATH' ) or exit;
14
-
15
- if ( ! class_exists( 'BE_WooCommerce_PDF_Invoices' ) ) {
16
-
17
- /**
18
- * Implements main function for attaching invoice to email and show invoice buttons.
19
- */
20
- final class BE_WooCommerce_PDF_Invoices {
21
- /**
22
- * Main BE_WooCommerce_PDF_Invoices instance.
23
- *
24
- * @var BE_WooCommerce_PDF_Invoices
25
- * @since 2.5.0
26
- */
27
- protected static $_instance = null;
28
-
29
- /**
30
- * Settings classes.
31
- *
32
- * @var array.
33
- */
34
- public $settings = array();
35
-
36
- /**
37
- * Prefix.
38
- *
39
- * @var string.
40
- */
41
- private $prefix = 'wpi_';
42
-
43
- /**
44
- * Main BE_WooCommerce_PDF_Invoices instance.
45
- *
46
- * @return BE_WooCommerce_PDF_Invoices
47
- * @since 2.5.0
48
- */
49
- public static function instance() {
50
- if ( is_null( self::$_instance ) ) {
51
- self::$_instance = new self();
52
- }
53
-
54
- return self::$_instance;
55
- }
56
-
57
- /**
58
- * Setup multisite sepcific upload dir.
59
- *
60
- * @param array $upload_dir uploads dir data.
61
- *
62
- * @return array
63
- */
64
- public function setup_multisite_upload_dir( $upload_dir ) {
65
- $upload_dir['path'] = $upload_dir['basedir'] . $upload_dir['subdir'];
66
- $upload_dir['url'] = $upload_dir['baseurl'] . $upload_dir['subdir'];
67
-
68
- return $upload_dir;
69
- }
70
-
71
- /**
72
- * WooCommerce Constructor.
73
- */
74
- private function __construct() {
75
- if ( is_multisite() ) {
76
- add_filter( 'upload_dir', array( $this, 'setup_multisite_upload_dir' ) );
77
- }
78
-
79
- $this->define_constants();
80
- $this->load_plugin_textdomain();
81
- $this->init_hooks();
82
- }
83
-
84
- /**
85
- * Define WooCommerce PDF Invoices Constants.
86
- *
87
- * @since 2.5.0
88
- */
89
- private function define_constants() {
90
- $wp_upload_dir = wp_upload_dir();
91
-
92
- /**
93
- * URL.
94
- *
95
- * @deprecated instead use WPI_URL.
96
- *
97
- * @since 2.7.0
98
- */
99
- if ( ! defined( 'BEWPI_URL' ) ) {
100
- define( 'BEWPI_URL', plugins_url( '', BEWPI_FILE ) . '/' );
101
- }
102
-
103
- /**
104
- * Templates dir.
105
- *
106
- * @deprecated instead use WPI_DIR.
107
- *
108
- * @since 2.7.0
109
- */
110
- if ( ! defined( 'BEWPI_TEMPLATES_DIR' ) ) {
111
- define( 'BEWPI_TEMPLATES_DIR', BEWPI_DIR . 'includes/templates' );
112
- }
113
-
114
- /**
115
- * Custom templates directory.
116
- *
117
- * @deprecated instead use WPI_TEMPLATES_DIR.
118
- *
119
- * @since 2.7.0 moved to uploads/woocommerce-pdf-invoices/invoices.
120
- */
121
- if ( ! defined( 'BEWPI_CUSTOM_TEMPLATES_INVOICES_DIR' ) ) {
122
- define( 'BEWPI_CUSTOM_TEMPLATES_INVOICES_DIR', $wp_upload_dir['basedir'] . '/bewpi-templates/invoices' );
123
- }
124
-
125
- /**
126
- * Attachments/invoices directory.
127
- *
128
- * @deprecated use WPI_ATTACHMENTS_DIR instead.
129
- *
130
- * @since 2.7.0 moved to uploads/woocommerce-pdf-invoices/attachments.
131
- */
132
- if ( ! defined( 'BEWPI_INVOICES_DIR' ) ) {
133
- define( 'BEWPI_INVOICES_DIR', $wp_upload_dir['basedir'] . '/bewpi-invoices' );
134
- }
135
-
136
- if ( ! defined( 'WPI_URL' ) ) {
137
- define( 'WPI_URL', untrailingslashit( plugins_url( '', WPI_FILE ) ) );
138
- }
139
-
140
- if ( ! defined( 'WPI_UPLOADS_DIR' ) ) {
141
- define( 'WPI_UPLOADS_DIR', $wp_upload_dir['basedir'] . '/woocommerce-pdf-invoices' );
142
- }
143
-
144
- if ( ! defined( 'WPI_TEMPLATES_DIR' ) ) {
145
- define( 'WPI_TEMPLATES_DIR', $wp_upload_dir['basedir'] . '/woocommerce-pdf-invoices/templates' );
146
- }
147
-
148
- if ( ! defined( 'WPI_ATTACHMENTS_DIR' ) ) {
149
- define( 'WPI_ATTACHMENTS_DIR', $wp_upload_dir['basedir'] . '/woocommerce-pdf-invoices/attachments' );
150
- }
151
- }
152
-
153
- /**
154
- * Load the translation / textdomain files
155
- *
156
- * @since 2.6.5 removed 'bewpi_lang_dir' filter. WordPress made update-safe WP_LANG_DIR directory.
157
- */
158
- public function load_plugin_textdomain() {
159
- $locale = apply_filters( 'plugin_locale', get_locale(), 'woocommerce-pdf-invoices' );
160
-
161
- load_textdomain( 'woocommerce-pdf-invoices', WP_LANG_DIR . '/plugins/woocommerce-pdf-invoices-' . $locale . '.mo' );
162
- load_plugin_textdomain( 'woocommerce-pdf-invoices', false, 'woocommerce-pdf-invoices/lang' );
163
- }
164
-
165
- /**
166
- * Initialize hooks and filters.
167
- *
168
- * @since 2.5.0
169
- */
170
- private function init_hooks() {
171
- if ( is_admin() ) {
172
- $this->admin_init_hooks();
173
- } else {
174
- $this->frontend_init_hooks();
175
- }
176
-
177
- add_action( 'woocommerce_checkout_order_processed', array( __CLASS__, 'set_order' ), 10, 1 );
178
-
179
- // @todo Move to BEWPI_Invoice class.
180
- add_filter( 'woocommerce_email_headers', array( $this, 'add_emailitin_as_recipient' ), 10, 3 );
181
- add_filter( 'woocommerce_email_attachments', array( $this, 'attach_invoice_to_email' ), 99, 3 );
182
- add_shortcode( 'bewpi-download-invoice', array( $this, 'download_invoice_shortcode' ) );
183
- }
184
-
185
- /**
186
- * Initialize admin.
187
- *
188
- * @since 2.5.0
189
- */
190
- public function admin_init_hooks() {
191
- add_action( 'admin_init', array( $this, 'admin_pdf_callback' ) );
192
- add_action( 'admin_enqueue_scripts', array( $this, 'admin_styles' ) );
193
- add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
194
- add_filter( 'plugin_action_links_' . plugin_basename( WPI_FILE ), array(
195
- $this,
196
- 'add_plugin_action_links',
197
- ) );
198
- add_filter( 'plugin_row_meta', array( $this, 'add_plugin_row_meta' ), 10, 2 );
199
- add_action( 'admin_notices', array( $this, 'admin_notice_rate' ) );
200
-
201
- BEWPI_Abstract_Settings::init_hooks();
202
- BEWPI_Admin_Notices::init_hooks();
203
- BEWPI_Invoice::init_hooks();
204
- BEWPI_Packing_Slip::init_hooks();
205
-
206
- // @todo Move to BEWPI_Invoice class.
207
- add_action( 'woocommerce_admin_order_actions_end', array( $this, 'add_admin_order_pdf' ) );
208
- add_action( 'add_meta_boxes', array( $this, 'add_admin_order_pdf_meta_box' ) );
209
- add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_invoice_number_column' ), 999 );
210
- add_action( 'manage_shop_order_posts_custom_column', array( $this, 'invoice_number_column_data' ), 2 );
211
- }
212
-
213
- /**
214
- * Initialize non-admin.
215
- */
216
- private function frontend_init_hooks() {
217
- add_action( 'init', array( $this, 'frontend_pdf_callback' ) );
218
- add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'add_my_account_pdf' ), 10, 2 );
219
- }
220
-
221
- /**
222
- * Creates invoices dir in uploads folder.
223
- */
224
- public static function setup_directories() {
225
- $current_year = date_i18n( 'Y', current_time( 'timestamp' ) );
226
- $directories = apply_filters( 'bewpi_uploads_directories', array(
227
- WPI_UPLOADS_DIR . '/attachments/' => array(
228
- '.htaccess',
229
- 'index.php',
230
- ),
231
- WPI_UPLOADS_DIR . '/attachments/' . $current_year . '/' => array(
232
- '.htaccess',
233
- 'index.php',
234
- ),
235
- WPI_UPLOADS_DIR . '/fonts/' => array(
236
- '.htaccess',
237
- 'index.php',
238
- ),
239
- WPI_UPLOADS_DIR . '/mpdf/ttfontdata/' => array(
240
- '.htaccess',
241
- 'index.php',
242
- ),
243
- WPI_UPLOADS_DIR . '/templates/invoice/simple/' => array(),
244
- ) );
245
-
246
- // Create directories and copy files.
247
- foreach ( $directories as $directory => $files ) {
248
- if ( ! file_exists( $directory ) ) {
249
- wp_mkdir_p( $directory );
250
- }
251
-
252
- foreach ( $files as $file ) {
253
- $destination_file = $directory . basename( $file );
254
- if ( file_exists( $destination_file ) ) {
255
- continue;
256
- }
257
-
258
- $source_file = WPI_DIR . '/tmp/' . $file;
259
- copy( $source_file, $destination_file );
260
- }
261
- }
262
-
263
- // Copy fonts from tmp directory to uploads/woocommerce-pdf-invoices/fonts.
264
- $font_files = array_merge( glob( WPI_DIR . '/tmp/fonts/*.ttf' ), glob( WPI_DIR . '/tmp/fonts/*.otf' ) );
265
- foreach ( $font_files as $font_file ) {
266
- $destination_file = WPI_UPLOADS_DIR . '/fonts/' . basename( $font_file );
267
- if ( file_exists( $destination_file ) ) {
268
- continue;
269
- }
270
-
271
- copy( $font_file, $destination_file );
272
- }
273
-
274
- do_action( 'bewpi_after_setup_directories' );
275
- }
276
-
277
- /**
278
- * Check if request is PDF action.
279
- *
280
- * @return bool
281
- */
282
- private static function is_pdf_request() {
283
- return ( isset( $_GET['post'] ) && isset( $_GET['bewpi_action'] ) && isset( $_GET['nonce'] ) );
284
- }
285
-
286
- /**
287
- * Frontend pdf actions callback.
288
- * Customers only have permission to view invoice, so invoice should be created by system/admin.
289
- */
290
- public function frontend_pdf_callback() {
291
- if ( ! self::is_pdf_request() ) {
292
- return;
293
- }
294
-
295
- // verify nonce.
296
- $action = sanitize_key( $_GET['bewpi_action'] );
297
- if ( 'view' !== $action ) {
298
- return;
299
- }
300
-
301
- $nonce = sanitize_key( $_GET['nonce'] );
302
- if ( ! wp_verify_nonce( $nonce, $action ) ) {
303
- wp_die( 'Invalid request.' );
304
- }
305
-
306
- if ( ! is_user_logged_in() ) {
307
- wp_die( 'Access denied' );
308
- }
309
-
310
- // verify woocommerce order.
311
- $post_id = intval( $_GET['post'] );
312
- $order = wc_get_order( $post_id );
313
- if ( ! $order ) {
314
- wp_die( 'Order not found.' );
315
- }
316
-
317
- // check if user has ordered order.
318
- $user = wp_get_current_user();
319
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
320
- $customer_user_id = (int) get_post_meta( $order_id, '_customer_user', true );
321
- if ( $user->ID !== $customer_user_id ) {
322
- wp_die( 'Access denied' );
323
- }
324
-
325
- $full_path = BEWPI_Abstract_Invoice::exists( $order_id );
326
- if ( false === $full_path ) {
327
- wp_die( 'PDF invoice not found.' );
328
- }
329
-
330
- BEWPI_Invoice::view( $full_path );
331
- }
332
-
333
- /**
334
- * Admin pdf actions callback.
335
- * Within admin by default only administrator and shop managers have permission to view, create, cancel invoice.
336
- */
337
- public function admin_pdf_callback() {
338
- if ( ! self::is_pdf_request() ) {
339
- return;
340
- }
341
-
342
- // sanitize data and verify nonce.
343
- $action = sanitize_key( $_GET['bewpi_action'] );
344
- $nonce = sanitize_key( $_GET['nonce'] );
345
- if ( ! wp_verify_nonce( $nonce, $action ) ) {
346
- wp_die( 'Invalid request.' );
347
- }
348
-
349
- // validate allowed user roles.
350
- $user = wp_get_current_user();
351
- $allowed_roles = apply_filters( 'bewpi_allowed_roles_to_download_invoice', array(
352
- 'administrator',
353
- 'shop_manager',
354
- ) );
355
-
356
- if ( ! array_intersect( $allowed_roles, $user->roles ) && !user_can( $user, 'manage_network_snippets' ) ) {
357
- wp_die( 'Access denied' );
358
- }
359
-
360
- $order_id = intval( $_GET['post'] );
361
-
362
- // execute invoice action.
363
- switch ( $action ) {
364
- case 'view':
365
- $full_path = BEWPI_Abstract_Invoice::exists( $order_id );
366
- if ( false === $full_path ) {
367
- wp_die( 'PDF invoice not found.' );
368
- }
369
-
370
- BEWPI_Invoice::view( $full_path );
371
- break;
372
- case 'view_packing_slip':
373
- $view_mode = 'download' === WPI()->get_option( 'general', 'view_pdf' ) ? 'D' : 'I';
374
- $packing_slip = new BEWPI_Packing_Slip( $order_id );
375
- $packing_slip->generate( $view_mode );
376
- break;
377
- case 'delete':
378
- BEWPI_Invoice::delete( $order_id );
379
- break;
380
- case 'create':
381
- $invoice = new BEWPI_Invoice( $order_id );
382
- $invoice->generate();
383
- break;
384
- case 'update':
385
- $invoice = new BEWPI_Invoice( $order_id );
386
- $invoice->update();
387
- break;
388
- case 'debug':
389
- $invoice = new BEWPI_Invoice( $order_id );
390
- $full_path = $invoice->update();
391
- BEWPI_Invoice::view( $full_path );
392
- break;
393
- }
394
-
395
- do_action( 'bewpi_admin_pdf_callback_end', $action, $order_id );
396
- }
397
-
398
- /**
399
- * Add plugin action links on plugin.php page.
400
- *
401
- * @param array $links action links.
402
- *
403
- * @return array
404
- */
405
- function add_plugin_action_links( $links ) {
406
- // add settings link.
407
- $settings_url = add_query_arg( array( 'page' => 'bewpi-invoices' ), admin_url( 'admin.php' ) );
408
- $settings_title = __( 'Settings', 'woocommerce-pdf-invoices' );
409
- array_unshift( $links, sprintf( '<a href="%1$s">%2$s</a>', $settings_url, $settings_title ) );
410
-
411
- return $links;
412
- }
413
-
414
- /**
415
- * Add links to row meta on plugins.php page.
416
- *
417
- * @param array $links row meta.
418
- * @param string $file plugin basename.
419
- *
420
- * @return array
421
- */
422
- public static function add_plugin_row_meta( $links, $file ) {
423
- if ( plugin_basename( WPI_FILE ) === $file ) {
424
- // add premium plugin link.
425
- $premium_url = 'http://wcpdfinvoices.com';
426
- $premium_title = __( 'Premium', 'woocommerce-pdf-invoices' );
427
- $links[] = sprintf( '<a href="%1$s" target="_blank">%2$s</a>', $premium_url, $premium_title );
428
- }
429
-
430
- return $links;
431
- }
432
-
433
- /**
434
- * Get plugin screen ids.
435
- *
436
- * @return array
437
- */
438
- public static function get_screen_ids() {
439
- $screen_ids = array(
440
- 'woocommerce_page_bewpi-invoices',
441
- 'edit-shop_order',
442
- 'shop_order',
443
- );
444
-
445
- return $screen_ids;
446
- }
447
-
448
- /**
449
- * Load admin styles.
450
- */
451
- public function admin_styles() {
452
- wp_register_style( 'bewpi_settings_css', WPI_URL . '/assets/css/admin.css', false, WPI_VERSION );
453
- wp_register_style( 'woocommerce_admin_styles', WC()->plugin_url() . '/assets/css/admin.css', array(), WC()->version );
454
-
455
- $screen = get_current_screen();
456
- $screen_id = $screen ? $screen->id : '';
457
- if ( in_array( $screen_id, self::get_screen_ids(), true ) ) {
458
- wp_enqueue_style( 'bewpi_settings_css' );
459
- wp_enqueue_style( 'woocommerce_admin_styles' );
460
- }
461
- }
462
-
463
- /**
464
- * Load admin scripts.
465
- */
466
- public function admin_scripts() {
467
- wp_register_script( 'bewpi_admin_js', WPI_URL . '/assets/js/admin.js', array(), WPI_VERSION, true );
468
- wp_enqueue_script( 'bewpi_admin_js' );
469
- wp_localize_script( 'bewpi_admin_js', 'BEWPI_AJAX', array(
470
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
471
- 'deactivation_nonce' => wp_create_nonce( 'deactivation-notice' ),
472
- 'dismiss_nonce' => wp_create_nonce( 'dismiss-notice' ),
473
- )
474
- );
475
- wp_register_script( 'bewpi_settings_js', WPI_URL . '/assets/js/settings.js', array(), WPI_VERSION, true );
476
- wp_register_script( 'wc-enhanced-select', WC()->plugin_url() . '/assets/js/admin/wc-enhanced-select.js', array(
477
- 'jquery',
478
- 'jquery-ui-sortable',
479
- version_compare( WC()->version, '3.2.0', '>=' ) ? 'selectWoo' : 'select2',
480
- ), WC()->version );
481
-
482
- $screen = get_current_screen();
483
- $screen_id = $screen ? $screen->id : '';
484
- if ( in_array( $screen_id, self::get_screen_ids(), true ) ) {
485
- wp_enqueue_script( 'bewpi_settings_js' );
486
- wp_enqueue_script( 'wc-enhanced-select' );
487
- wp_enqueue_script( 'jquery-ui-sortable' );
488
- }
489
- }
490
-
491
- /**
492
- * Add "Email It In" email address as BCC to WooCommerce email.
493
- *
494
- * @param string $headers email headers.
495
- * @param string $status email name.
496
- * @param object $order WooCommerce order.
497
- *
498
- * @return string
499
- */
500
- function add_emailitin_as_recipient( $headers, $status, $order ) {
501
- // Only attach to emails with WC_Order object.
502
- if ( ! $order instanceof WC_Order ) {
503
- return $headers;
504
- }
505
-
506
- // make sure invoice got only send once for each order.
507
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
508
- $transient_name = sprintf( 'bewpi_emailitin_processed-%1$s', $order_id );
509
- if ( get_transient( $transient_name ) ) {
510
- return $headers;
511
- }
512
-
513
- $emailitin_account = WPI()->get_option( 'general', 'email_it_in_account' );
514
- $emailitin_enabled = WPI()->get_option( 'general', 'email_it_in' );
515
- // Email It In option enabled?
516
- if ( ! $emailitin_enabled || empty( $emailitin_account ) ) {
517
- return $headers;
518
- }
519
-
520
- // check if email is enabled.
521
- if ( ! WPI()->is_email_enabled( $status ) ) {
522
- return $headers;
523
- }
524
-
525
- set_transient( $transient_name, true, 20 );
526
-
527
- $headers .= 'BCC: <' . $emailitin_account . '>' . "\r\n";
528
-
529
- return $headers;
530
- }
531
-
532
- /**
533
- * Attach a generated invoice to WooCommerce emails.
534
- *
535
- * @param array $attachments attachments.
536
- * @param string $status name of email.
537
- * @param object $order order.
538
- *
539
- * @return array.
540
- */
541
- public function attach_invoice_to_email( $attachments, $status, $order ) {
542
- // only attach to emails with WC_Order object.
543
- if ( ! $order instanceof WC_Order ) {
544
- return $attachments;
545
- }
546
-
547
- // check if email is enabled.
548
- if ( ! WPI()->is_email_enabled( $status ) ) {
549
- return $attachments;
550
- }
551
-
552
- // Skip invoice generation.
553
- $skip = apply_filters( 'bewpi_skip_invoice_generation', false, $status, $order );
554
- if ( $skip ) {
555
- return $attachments;
556
- }
557
-
558
- // Skip invoice generation for free orders.
559
- if ( 0.00 === (double) WPI()->get_prop( $order, 'total' ) && WPI()->get_option( 'general', 'disable_free_products' ) ) {
560
- return $attachments;
561
- }
562
-
563
- // payment methods for which the invoice generation should be cancelled.
564
- $payment_methods = apply_filters( 'bewpi_attach_invoice_excluded_payment_methods', array() );
565
- if ( in_array( WPI()->get_prop( $order, 'payment_method' ), $payment_methods, true ) ) {
566
- return $attachments;
567
- }
568
-
569
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
570
- $invoice = new BEWPI_Invoice( $order_id );
571
- $full_path = $invoice->get_full_path();
572
- if ( ! $full_path ) {
573
- $full_path = $invoice->generate();
574
- } elseif ( ! $invoice->is_sent() ) {
575
- // Only update PDF invoice when client doesn't got it already.
576
- $full_path = $invoice->update();
577
- }
578
-
579
- if ( apply_filters( 'wpi_skip_pdf_invoice_attachment', false, $status, $order ) ) {
580
- return $attachments;
581
- }
582
-
583
- // Attach invoice to email.
584
- $attachments[] = $full_path;
585
-
586
- /**
587
- * Check if current email is a customer email.
588
- *
589
- * @var WC_Email $email
590
- */
591
- $is_customer_email = false;
592
- foreach ( WC()->mailer()->get_emails() as $email ) {
593
- if ( $email->id === $status ) {
594
- $is_customer_email = $email->is_customer_email();
595
- break;
596
- }
597
- }
598
-
599
- // Only mark the invoice as sent for customer emails.
600
- if ( $is_customer_email ) {
601
- update_post_meta( $order_id, 'bewpi_pdf_invoice_sent', 1 );
602
- }
603
-
604
- return $attachments;
605
- }
606
-
607
- /**
608
- * Create Shop Order column for Invoice Number and place it before 'Actions' column.
609
- *
610
- * @param array $columns Shop Order columns.
611
- *
612
- * @return array
613
- */
614
- public function add_invoice_number_column( $columns ) {
615
- // invoice number column enabled by user?
616
- if ( ! (bool) WPI()->get_option( 'general', 'invoice_number_column' ) ) {
617
- return $columns;
618
- }
619
-
620
- $actions_column = BEWPI_WC_Core_Compatibility::is_wc_version_gt( '3.2.6' ) ? 'wc_actions' : 'order_actions';
621
- // Splice columns at 'Actions' column, add 'Invoice No.' column and merge with last part.
622
- $offset = array_search( $actions_column, array_keys( $columns ), true );
623
- $columns = array_merge(
624
- array_splice( $columns, 0, $offset ),
625
- array(
626
- 'bewpi_invoice_number' => __( 'Invoice No.', 'woocommerce-pdf-invoices' ),
627
- ),
628
- $columns
629
- );
630
-
631
- return $columns;
632
- }
633
-
634
- /**
635
- * Display Invoice Number in Shop Order column (if available).
636
- *
637
- * @param string $column column slug.
638
- */
639
- public function invoice_number_column_data( $column ) {
640
- global $post;
641
-
642
- if ( 'bewpi_invoice_number' !== $column ) {
643
- return;
644
- }
645
-
646
- if ( BEWPI_Invoice::exists( $post->ID ) ) {
647
- echo esc_html( get_post_meta( $post->ID, '_bewpi_invoice_number', true ) );
648
- } else {
649
- echo '-';
650
- }
651
- }
652
-
653
- /**
654
- * Display PDF button on "Orders" page to view invoice.
655
- *
656
- * @param WC_ORDER $order WooCommerce Order.
657
- */
658
- public function add_admin_order_pdf( $order ) {
659
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
660
-
661
- if ( BEWPI_Invoice::exists( $order_id ) ) {
662
- $this->show_invoice_button(
663
- __( 'View invoice', 'woocommerce-pdf-invoices' ),
664
- $order_id,
665
- 'view',
666
- array(
667
- 'class="button shop-order-action invoice wpi"',
668
- 'target="_blank"',
669
- )
670
- );
671
- }
672
- }
673
-
674
- /**
675
- * Add meta box to "Order Details" page to create, view and cancel PDF invoice.
676
- */
677
- function add_admin_order_pdf_meta_box() {
678
- add_meta_box( 'order_page_create_invoice', __( 'PDF Invoice', 'woocommerce-pdf-invoices' ), array(
679
- $this,
680
- 'display_order_page_pdf_invoice_meta_box',
681
- ), 'shop_order', 'side', 'high' );
682
- }
683
-
684
- /**
685
- * Display invoice button html.
686
- *
687
- * @param string $title title attribute of button.
688
- * @param int $order_id WC_ORDER id.
689
- * @param string $action action create, view or cancel.
690
- * @param array $attributes additional attributes.
691
- */
692
- private function show_invoice_button( $title, $order_id, $action, $attributes = array() ) {
693
- $url = wp_nonce_url( add_query_arg( array(
694
- 'post' => $order_id,
695
- 'action' => 'edit',
696
- 'bewpi_action' => $action,
697
- ), admin_url( 'post.php' ) ), $action, 'nonce' );
698
-
699
- $url = apply_filters( 'bewpi_pdf_invoice_url', $url, $order_id, $action );
700
- $attr_title = $title . ' ' . __( 'PDF Invoice', 'woocommerce-pdf-invoices' );
701
-
702
- printf( '<a href="%1$s" title="%2$s" %3$s>%4$s</a>', $url, $attr_title, join( ' ', $attributes ), $title );
703
- }
704
-
705
- /**
706
- * Display invoice actions on "Order Details" page.
707
- *
708
- * @param WP_Post $post as WC_Order object.
709
- */
710
- public function display_order_page_pdf_invoice_meta_box( $post ) {
711
- $invoice = new BEWPI_Invoice( $post->ID );
712
-
713
- if ( ! $invoice->get_full_path() ) {
714
-
715
- $this->show_invoice_button( __( 'Create', 'woocommerce-pdf-invoices' ), $post->ID, 'create', array( 'class="button grant_access order-page invoice wpi"' ) );
716
-
717
- } else {
718
-
719
- $details = array(
720
- 'invoice_date' => array(
721
- 'title' => __( 'Date:', 'woocommerce-pdf-invoices' ),
722
- 'value' => $invoice->get_formatted_date(),
723
- ),
724
- 'invoice_number' => array(
725
- 'title' => __( 'Number:', 'woocommerce-pdf-invoices' ),
726
- 'value' => $invoice->get_formatted_number(),
727
- ),
728
- );
729
-
730
- // Backporting --only show when meta exists.
731
- $is_sent = $invoice->is_sent();
732
- if ( false !== get_post_meta( $post->ID, 'bewpi_pdf_invoice_sent', true ) ) {
733
- $details['invoice_sent'] = array(
734
- 'title' => __( 'Sent?', 'woocommerce-pdf-invoices' ),
735
- 'value' => (bool) $is_sent ? __( 'Yes', 'woocommerce-pdf-invoices' ) : __( 'No', 'woocommerce-pdf-invoices' ),
736
- );
737
- }
738
-
739
- $details = apply_filters( 'bewpi_order_page_pdf_invoice_meta_box_details', $details, $invoice );
740
- include WPI_DIR . '/includes/admin/views/html-order-page-pdf-invoice-meta-box.php';
741
-
742
- echo '<p class="invoice-actions">';
743
-
744
- // display button to view invoice.
745
- $this->show_invoice_button( __( 'View', 'woocommerce-pdf-invoices' ), $post->ID, 'view', array(
746
- 'class="button grant_access order-page invoice wpi"',
747
- 'target="_blank"',
748
- ) );
749
-
750
- // PDF invoice should not be changed when it has been sent to the client already.
751
- if ( ! $is_sent ) {
752
- $this->show_invoice_button( __( 'Update', 'woocommerce-pdf-invoices' ), $post->ID, 'update', array(
753
- 'class="button grant_access order-page invoice wpi"',
754
- ) );
755
-
756
- // Create confirm message when deleting PDF invoice.
757
- $message = __( 'Are you sure to delete the PDF invoice?', 'woocommerce-pdf-invoices' );
758
- if ( 'sequential_number' === BEWPI_Invoice::get_number_type() && $invoice->get_number() !== BEWPI_Abstract_Invoice::get_max_invoice_number() ) {
759
-
760
- /* translators: $d: invoice number */
761
- $message .= ' ' . sprintf( __( 'You will be missing a PDF invoice with invoice number %d and thus creating an accounting gap!', 'woocommerce-pdf-invoices' ), $invoice->get_number() );
762
-
763
- /* translators: %s: plugin name. */
764
- $message .= ' ' . apply_filters( 'wpi_delete_invoice_confirm_message', sprintf( __( 'Instead consider using Cancelled PDF invoices with %s.', 'woocommerce-pdf-invoices' ), 'WooCommerce PDF Invoices Premium' ) );
765
-
766
- }
767
-
768
- // display button to delete invoice.
769
- $this->show_invoice_button( __( 'Delete', 'woocommerce-pdf-invoices' ), $post->ID, 'delete', array(
770
- 'class="button grant_access order-page invoice wpi"',
771
- 'onclick="return confirm(\'' . $message . '\');"',
772
- ) );
773
- }
774
-
775
- // display button to view invoice in debug mode.
776
- if ( (bool) WPI()->get_option( 'general', 'mpdf_debug' ) ) {
777
- $this->show_invoice_button( __( 'Debug', 'woocommerce-pdf-invoices' ), $post->ID, 'debug', array(
778
- 'class="button grant_access order-page invoice wpi"',
779
- 'target="_blank"',
780
- ) );
781
- }
782
-
783
- echo '</p>';
784
-
785
- } // End if().
786
-
787
- do_action( 'bewpi_order_page_after_meta_box_details_end', $post->ID );
788
- }
789
-
790
- /**
791
- * Shortcode to download invoice.
792
- *
793
- * @param array $atts shortcode attributes.
794
- */
795
- public function download_invoice_shortcode( $atts ) {
796
- if ( ! isset( $atts['order_id'] ) || 0 === intval( $atts['order_id'] ) ) {
797
- return;
798
- }
799
-
800
- // by default order status should be Processing or Completed.
801
- $order = wc_get_order( $atts['order_id'] );
802
- if ( ! $order->is_paid() ) {
803
- return;
804
- }
805
-
806
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
807
- $invoice = new BEWPI_Invoice( $order_id );
808
- if ( ! $invoice->get_full_path() ) {
809
- return;
810
- }
811
-
812
- $url = add_query_arg( array(
813
- 'bewpi_action' => 'view',
814
- 'post' => $order_id,
815
- 'nonce' => wp_create_nonce( 'view' ),
816
- ) );
817
-
818
- $tags = array(
819
- '{formatted_invoice_number}' => $invoice->get_formatted_number(),
820
- '{order_number}' => $order_id,
821
- '{formatted_invoice_date}' => $invoice->get_formatted_date(),
822
- '{formatted_order_date}' => $invoice->get_formatted_order_date(),
823
- );
824
- // find and replace placeholders.
825
- $title = str_replace( array_keys( $tags ), array_values( $tags ), $atts['title'] );
826
- printf( '<a href="%1$s">%2$s</a>', esc_attr( $url ), esc_html( $title ) );
827
- }
828
-
829
- /**
830
- * Display download link on My Account page.
831
- *
832
- * @param array $actions my account order table actions.
833
- * @param WC_Order $order WooCommerce order object.
834
- *
835
- * @return mixed
836
- */
837
- public function add_my_account_pdf( $actions, $order ) {
838
- $order = wc_get_order( $order );
839
-
840
- if ( ! WPI()->get_option( 'general', 'download_invoice_account' ) || ! $order->is_paid() ) {
841
- return $actions;
842
- }
843
-
844
- $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
845
- $invoice = new BEWPI_Invoice( $order_id );
846
- if ( ! $invoice->get_full_path() ) {
847
- return $actions;
848
- }
849
-
850
- $url = add_query_arg( array(
851
- 'bewpi_action' => 'view',
852
- 'post' => $order_id,
853
- 'nonce' => wp_create_nonce( 'view' ),
854
- ) );
855
-
856
- $actions['invoice'] = array(
857
- 'url' => $url,
858
- 'name' => apply_filters( 'bewpi_my_account_pdf_name', __( 'Invoice', 'woocommerce-pdf-invoices' ), $invoice ),
859
- );
860
-
861
- return $actions;
862
- }
863
-
864
- /**
865
- * Check if email is enabled.
866
- *
867
- * @param string $email Email ID.
868
- *
869
- * @return bool
870
- */
871
- public function is_email_enabled( $email ) {
872
- return in_array( $email, (array) $this->get_option( 'general', 'email_types' ), true );
873
- }
874
-
875
- /**
876
- * Get plugin install date.
877
- *
878
- * @return DateTime|bool
879
- */
880
- private function get_install_date() {
881
- if ( version_compare( WPI_VERSION, '2.6.1' ) >= 0 ) {
882
- // since 2.6.1+ option name changed and date has mysql format.
883
- return DateTime::createFromFormat( 'Y-m-d H:i:s', get_site_option( 'bewpi_install_date' ) );
884
- }
885
-
886
- return DateTime::createFromFormat( 'Y-m-d', get_site_option( 'bewpi-install-date' ) );
887
- }
888
-
889
- /**
890
- * Display rate notice after 10 days based on installation date.
891
- */
892
- public function admin_notice_rate() {
893
- if ( get_site_transient( 'wpi_admin_notice_rate' ) ) {
894
- return;
895
- }
896
-
897
- // install date should be valid.
898
- $install_date = $this->get_install_date();
899
- if ( false === $install_date ) {
900
- return;
901
- }
902
-
903
- // at least 10 days should be past to display notice.
904
- if ( new DateTime( '10 days ago' ) >= $install_date ) {
905
- include WPI_DIR . '/includes/admin/views/html-rate-notice.php';
906
- set_site_transient( 'wpi_admin_notice_rate', true );
907
- }
908
- }
909
-
910
- /**
911
- * Get invoice by order ID.
912
- *
913
- * @param int $order_id order ID.
914
- *
915
- * @return BEWPI_Abstract_Invoice
916
- */
917
- public function get_invoice( $order_id ) {
918
-
919
- return new BEWPI_Invoice( $order_id );
920
- }
921
-
922
- /**
923
- * Set order for templater directly after creation to fetch order data.
924
- *
925
- * @since 2.9.3 Do not use second and third parameters since several plugins do not use them. This prevents a fatal error.
926
- *
927
- * @param int $order_id WC_Order ID.
928
- */
929
- public static function set_order( $order_id ) {
930
- $order = wc_get_order( $order_id );
931
- WPI()->templater()->set_order( $order );
932
- }
933
-
934
- /**
935
- * Get option by group and name.
936
- *
937
- * @param string $group Option group name (without 'bewpi_' prefix and '_settings' suffix). Available groups are: 'general', 'template' and 'premium'.
938
- * @param string $name Option name (without 'bewpi_' prefix).
939
- *
940
- * @return bool|mixed
941
- */
942
- public static function get_option( $group, $name = '' ) {
943
- $option = apply_filters( 'bewpi_option', false, $group, $name );
944
-
945
- if ( false === $option ) {
946
- $options = get_option( 'bewpi_' . $group . '_settings' );
947
- if ( false === $options ) {
948
- return false;
949
- }
950
-
951
- if ( ! isset( $options[ 'bewpi_' . $name ] ) ) {
952
- return false;
953
- }
954
-
955
- $option = $options[ 'bewpi_' . $name ];
956
- }
957
-
958
- $hook = sprintf( 'bewpi_pre_option-%1$s-%2$s', $group, $name );
959
-
960
- return apply_filters( $hook, $option );
961
- }
962
-
963
- /**
964
- * Get tax or vat label.
965
- *
966
- * @param bool $incl Including tax or vat.
967
- * @param bool $small text font size.
968
- *
969
- * @return string
970
- */
971
- public function tax_or_vat_label( $incl = true, $small = true ) {
972
- if ( $incl ) {
973
- $label = WC()->countries->inc_tax_or_vat();
974
- } else {
975
- $label = WC()->countries->ex_tax_or_vat();
976
- }
977
-
978
- if ( $small ) {
979
- $label = sprintf( '<small class="tax_label">%s</small>', $label );
980
- }
981
-
982
- return $label;
983
- }
984
-
985
- /**
986
- * Get order currency.
987
- *
988
- * @param WC_Order $order order object.
989
- *
990
- * @return string
991
- */
992
- public function get_currency( $order ) {
993
- return BEWPI_WC_Order_Compatibility::get_currency( $order );
994
- }
995
-
996
- /**
997
- * Get order property.
998
- *
999
- * @param WC_Order $order order object.
1000
- * @param string $prop order property.
1001
- * @param string $context display context.
1002
- *
1003
- * @return mixed
1004
- */
1005
- public function get_prop( $order, $prop, $context = 'edit' ) {
1006
- return BEWPI_WC_Order_Compatibility::get_prop( $order, $prop, $context );
1007
- }
1008
-
1009
- /**
1010
- * Get order meta.
1011
- *
1012
- * @param WC_Order $order Order object.
1013
- * @param string $meta_key Post meta key.
1014
- *
1015
- * @return bool/string
1016
- */
1017
- public function get_meta( $order, $meta_key ) {
1018
- return get_post_meta( BEWPI_WC_Order_Compatibility::get_id( $order ), $meta_key, true );
1019
- }
1020
-
1021
- /**
1022
- * Get all total rows before subtotal.
1023
- *
1024
- * @return array
1025
- */
1026
- public function get_totals_before_subtotal() {
1027
- $selected_totals = self::get_option( 'template', 'totals' );
1028
- $subtotal = array_search( 'subtotal_ex_vat', $selected_totals, true );
1029
-
1030
- return array_slice( $selected_totals, 0, $subtotal );
1031
- }
1032
-
1033
- /**
1034
- * Get prefix.
1035
- *
1036
- * @return string
1037
- */
1038
- public function get_prefix() {
1039
- return $this->prefix;
1040
- }
1041
-
1042
- /**
1043
- * Templater instance.
1044
- *
1045
- * @return BEWPI_Template.
1046
- */
1047
- public function templater() {
1048
- return BEWPI_Template::instance();
1049
- }
1050
-
1051
- /**
1052
- * Logger instance;
1053
- *
1054
- * @return BEWPI_Debug_Log.
1055
- */
1056
- public function logger() {
1057
- return BEWPI_Debug_Log::instance();
1058
- }
1059
- }
1060
- }
1
+ <?php
2
+ /**
3
+ * Final WooCommerce PDF Invoices Class.
4
+ *
5
+ * Processes several hooks and filter callbacks.
6
+ *
7
+ * @author Bas Elbers
8
+ * @category Class
9
+ * @package BE_WooCommerce_PDF_Invoices/Class
10
+ * @version 1.0.0
11
+ */
12
+
13
+ defined( 'ABSPATH' ) or exit;
14
+
15
+ if ( ! class_exists( 'BE_WooCommerce_PDF_Invoices' ) ) {
16
+
17
+ /**
18
+ * Implements main function for attaching invoice to email and show invoice buttons.
19
+ */
20
+ final class BE_WooCommerce_PDF_Invoices {
21
+ /**
22
+ * Main BE_WooCommerce_PDF_Invoices instance.
23
+ *
24
+ * @var BE_WooCommerce_PDF_Invoices
25
+ * @since 2.5.0
26
+ */
27
+ protected static $_instance = null;
28
+
29
+ /**
30
+ * Settings classes.
31
+ *
32
+ * @var array.
33
+ */
34
+ public $settings = array();
35
+
36
+ /**
37
+ * Prefix.
38
+ *
39
+ * @var string.
40
+ */
41
+ private $prefix = 'wpi_';
42
+
43
+ /**
44
+ * Main BE_WooCommerce_PDF_Invoices instance.
45
+ *
46
+ * @return BE_WooCommerce_PDF_Invoices
47
+ * @since 2.5.0
48
+ */
49
+ public static function instance() {
50
+ if ( is_null( self::$_instance ) ) {
51
+ self::$_instance = new self();
52
+ }
53
+
54
+ return self::$_instance;
55
+ }
56
+
57
+ /**
58
+ * Setup multisite sepcific upload dir.
59
+ *
60
+ * @param array $upload_dir uploads dir data.
61
+ *
62
+ * @return array
63
+ */
64
+ public function setup_multisite_upload_dir( $upload_dir ) {
65
+ $upload_dir['path'] = $upload_dir['basedir'] . $upload_dir['subdir'];
66
+ $upload_dir['url'] = $upload_dir['baseurl'] . $upload_dir['subdir'];
67
+
68
+ return $upload_dir;
69
+ }
70
+
71
+ /**
72
+ * WooCommerce Constructor.
73
+ */
74
+ private function __construct() {
75
+ if ( is_multisite() ) {
76
+ add_filter( 'upload_dir', array( $this, 'setup_multisite_upload_dir' ) );
77
+ }
78
+
79
+ $this->define_constants();
80
+ $this->load_plugin_textdomain();
81
+ $this->init_hooks();
82
+ }
83
+
84
+ /**
85
+ * Define WooCommerce PDF Invoices Constants.
86
+ *
87
+ * @since 2.5.0
88
+ */
89
+ private function define_constants() {
90
+ $wp_upload_dir = wp_upload_dir();
91
+
92
+ /**
93
+ * URL.
94
+ *
95
+ * @deprecated instead use WPI_URL.
96
+ *
97
+ * @since 2.7.0
98
+ */
99
+ if ( ! defined( 'BEWPI_URL' ) ) {
100
+ define( 'BEWPI_URL', plugins_url( '', BEWPI_FILE ) . '/' );
101
+ }
102
+
103
+ /**
104
+ * Templates dir.
105
+ *
106
+ * @deprecated instead use WPI_DIR.
107
+ *
108
+ * @since 2.7.0
109
+ */
110
+ if ( ! defined( 'BEWPI_TEMPLATES_DIR' ) ) {
111
+ define( 'BEWPI_TEMPLATES_DIR', BEWPI_DIR . 'includes/templates' );
112
+ }
113
+
114
+ /**
115
+ * Custom templates directory.
116
+ *
117
+ * @deprecated instead use WPI_TEMPLATES_DIR.
118
+ *
119
+ * @since 2.7.0 moved to uploads/woocommerce-pdf-invoices/invoices.
120
+ */
121
+ if ( ! defined( 'BEWPI_CUSTOM_TEMPLATES_INVOICES_DIR' ) ) {
122
+ define( 'BEWPI_CUSTOM_TEMPLATES_INVOICES_DIR', $wp_upload_dir['basedir'] . '/bewpi-templates/invoices' );
123
+ }
124
+
125
+ /**
126
+ * Attachments/invoices directory.
127
+ *
128
+ * @deprecated use WPI_ATTACHMENTS_DIR instead.
129
+ *
130
+ * @since 2.7.0 moved to uploads/woocommerce-pdf-invoices/attachments.
131
+ */
132
+ if ( ! defined( 'BEWPI_INVOICES_DIR' ) ) {
133
+ define( 'BEWPI_INVOICES_DIR', $wp_upload_dir['basedir'] . '/bewpi-invoices' );
134
+ }
135
+
136
+ if ( ! defined( 'WPI_URL' ) ) {
137
+ define( 'WPI_URL', untrailingslashit( plugins_url( '', WPI_FILE ) ) );
138
+ }
139
+
140
+ if ( ! defined( 'WPI_UPLOADS_DIR' ) ) {
141
+ define( 'WPI_UPLOADS_DIR', $wp_upload_dir['basedir'] . '/woocommerce-pdf-invoices' );
142
+ }
143
+
144
+ if ( ! defined( 'WPI_TEMPLATES_DIR' ) ) {
145
+ define( 'WPI_TEMPLATES_DIR', $wp_upload_dir['basedir'] . '/woocommerce-pdf-invoices/templates' );
146
+ }
147
+
148
+ if ( ! defined( 'WPI_ATTACHMENTS_DIR' ) ) {
149
+ define( 'WPI_ATTACHMENTS_DIR', $wp_upload_dir['basedir'] . '/woocommerce-pdf-invoices/attachments' );
150
+ }
151
+ }
152
+
153
+ /**
154
+ * Load the translation / textdomain files
155
+ *
156
+ * @since 2.6.5 removed 'bewpi_lang_dir' filter. WordPress made update-safe WP_LANG_DIR directory.
157
+ */
158
+ public function load_plugin_textdomain() {
159
+ $locale = apply_filters( 'plugin_locale', get_locale(), 'woocommerce-pdf-invoices' );
160
+
161
+ load_textdomain( 'woocommerce-pdf-invoices', WP_LANG_DIR . '/plugins/woocommerce-pdf-invoices-' . $locale . '.mo' );
162
+ load_plugin_textdomain( 'woocommerce-pdf-invoices', false, 'woocommerce-pdf-invoices/lang' );
163
+ }
164
+
165
+ /**
166
+ * Initialize hooks and filters.
167
+ *
168
+ * @since 2.5.0
169
+ */
170
+ private function init_hooks() {
171
+ if ( is_admin() ) {
172
+ $this->admin_init_hooks();
173
+ } else {
174
+ $this->frontend_init_hooks();
175
+ }
176
+
177
+ add_action( 'woocommerce_checkout_order_processed', array( __CLASS__, 'set_order' ), 10, 1 );
178
+
179
+ // @todo Move to BEWPI_Invoice class.
180
+ add_filter( 'woocommerce_email_headers', array( $this, 'add_emailitin_as_recipient' ), 10, 3 );
181
+ add_filter( 'woocommerce_email_attachments', array( $this, 'attach_invoice_to_email' ), 99, 3 );
182
+ add_shortcode( 'bewpi-download-invoice', array( $this, 'download_invoice_shortcode' ) );
183
+ }
184
+
185
+ /**
186
+ * Initialize admin.
187
+ *
188
+ * @since 2.5.0
189
+ */
190
+ public function admin_init_hooks() {
191
+ add_action( 'admin_init', array( $this, 'admin_pdf_callback' ) );
192
+ add_action( 'admin_enqueue_scripts', array( $this, 'admin_styles' ) );
193
+ add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
194
+ add_filter( 'plugin_action_links_' . plugin_basename( WPI_FILE ), array(
195
+ $this,
196
+ 'add_plugin_action_links',
197
+ ) );
198
+ add_filter( 'plugin_row_meta', array( $this, 'add_plugin_row_meta' ), 10, 2 );
199
+ add_action( 'admin_notices', array( $this, 'admin_notice_rate' ) );
200
+
201
+ BEWPI_Abstract_Settings::init_hooks();
202
+ BEWPI_Admin_Notices::init_hooks();
203
+ BEWPI_Invoice::init_hooks();
204
+ BEWPI_Packing_Slip::init_hooks();
205
+
206
+ // @todo Move to BEWPI_Invoice class.
207
+ add_action( 'woocommerce_admin_order_actions_end', array( $this, 'add_admin_order_pdf' ) );
208
+ add_action( 'add_meta_boxes', array( $this, 'add_admin_order_pdf_meta_box' ) );
209
+ add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_invoice_number_column' ), 999 );
210
+ add_action( 'manage_shop_order_posts_custom_column', array( $this, 'invoice_number_column_data' ), 2 );
211
+ }
212
+
213
+ /**
214
+ * Initialize non-admin.
215
+ */
216
+ private function frontend_init_hooks() {
217
+ add_action( 'init', array( $this, 'frontend_pdf_callback' ) );
218
+ add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'add_my_account_pdf' ), 10, 2 );
219
+ }
220
+
221
+ /**
222
+ * Creates invoices dir in uploads folder.
223
+ */
224
+ public static function setup_directories() {
225
+ $current_year = date_i18n( 'Y', current_time( 'timestamp' ) );
226
+ $directories = apply_filters( 'bewpi_uploads_directories', array(
227
+ WPI_UPLOADS_DIR . '/attachments/' => array(
228
+ '.htaccess',
229
+ 'index.php',
230
+ ),
231
+ WPI_UPLOADS_DIR . '/attachments/' . $current_year . '/' => array(
232
+ '.htaccess',
233
+ 'index.php',
234
+ ),
235
+ WPI_UPLOADS_DIR . '/fonts/' => array(
236
+ '.htaccess',
237
+ 'index.php',
238
+ ),
239
+ WPI_UPLOADS_DIR . '/mpdf/ttfontdata/' => array(
240
+ '.htaccess',
241
+ 'index.php',
242
+ ),
243
+ WPI_UPLOADS_DIR . '/templates/invoice/simple/' => array(),
244
+ ) );
245
+
246
+ // Create directories and copy files.
247
+ foreach ( $directories as $directory => $files ) {
248
+ if ( ! file_exists( $directory ) ) {
249
+ wp_mkdir_p( $directory );
250
+ }
251
+
252
+ foreach ( $files as $file ) {
253
+ $destination_file = $directory . basename( $file );
254
+ if ( file_exists( $destination_file ) ) {
255
+ continue;
256
+ }
257
+
258
+ $source_file = WPI_DIR . '/tmp/' . $file;
259
+ copy( $source_file, $destination_file );
260
+ }
261
+ }
262
+
263
+ // Copy fonts from tmp directory to uploads/woocommerce-pdf-invoices/fonts.
264
+ $font_files = array_merge( glob( WPI_DIR . '/tmp/fonts/*.ttf' ), glob( WPI_DIR . '/tmp/fonts/*.otf' ) );
265
+ foreach ( $font_files as $font_file ) {
266
+ $destination_file = WPI_UPLOADS_DIR . '/fonts/' . basename( $font_file );
267
+ if ( file_exists( $destination_file ) ) {
268
+ continue;
269
+ }
270
+
271
+ copy( $font_file, $destination_file );
272
+ }
273
+
274
+ do_action( 'bewpi_after_setup_directories' );
275
+ }
276
+
277
+ /**
278
+ * Check if request is PDF action.
279
+ *
280
+ * @return bool
281
+ */
282
+ private static function is_pdf_request() {
283
+ return ( isset( $_GET['post'] ) && isset( $_GET['bewpi_action'] ) && isset( $_GET['nonce'] ) );
284
+ }
285
+
286
+ /**
287
+ * Frontend pdf actions callback.
288
+ * Customers only have permission to view invoice, so invoice should be created by system/admin.
289
+ */
290
+ public function frontend_pdf_callback() {
291
+ if ( ! self::is_pdf_request() ) {
292
+ return;
293
+ }
294
+
295
+ // verify nonce.
296
+ $action = sanitize_key( $_GET['bewpi_action'] );
297
+ if ( 'view' !== $action ) {
298
+ return;
299
+ }
300
+
301
+ $nonce = sanitize_key( $_GET['nonce'] );
302
+ if ( ! wp_verify_nonce( $nonce, $action ) ) {
303
+ wp_die( 'Invalid request.' );
304
+ }
305
+
306
+ if ( ! is_user_logged_in() ) {
307
+ wp_die( 'Access denied' );
308
+ }
309
+
310
+ // verify woocommerce order.
311
+ $post_id = intval( $_GET['post'] );
312
+ $order = wc_get_order( $post_id );
313
+ if ( ! $order ) {
314
+ wp_die( 'Order not found.' );
315
+ }
316
+
317
+ // check if user has ordered order.
318
+ $user = wp_get_current_user();
319
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
320
+ $customer_user_id = (int) get_post_meta( $order_id, '_customer_user', true );
321
+ if ( $user->ID !== $customer_user_id ) {
322
+ wp_die( 'Access denied' );
323
+ }
324
+
325
+ $full_path = BEWPI_Abstract_Invoice::exists( $order_id );
326
+ if ( false === $full_path ) {
327
+ wp_die( 'PDF invoice not found.' );
328
+ }
329
+
330
+ BEWPI_Invoice::view( $full_path );
331
+ }
332
+
333
+ /**
334
+ * Admin pdf actions callback.
335
+ * Within admin by default only administrator and shop managers have permission to view, create, cancel invoice.
336
+ */
337
+ public function admin_pdf_callback() {
338
+ if ( ! self::is_pdf_request() ) {
339
+ return;
340
+ }
341
+
342
+ // sanitize data and verify nonce.
343
+ $action = sanitize_key( $_GET['bewpi_action'] );
344
+ $nonce = sanitize_key( $_GET['nonce'] );
345
+ if ( ! wp_verify_nonce( $nonce, $action ) ) {
346
+ wp_die( 'Invalid request.' );
347
+ }
348
+
349
+ // validate allowed user roles.
350
+ $user = wp_get_current_user();
351
+ $allowed_roles = apply_filters( 'bewpi_allowed_roles_to_download_invoice', array(
352
+ 'administrator',
353
+ 'shop_manager',
354
+ ) );
355
+
356
+ if ( ! array_intersect( $allowed_roles, $user->roles ) && !user_can( $user, 'manage_network_snippets' ) ) {
357
+ wp_die( 'Access denied' );
358
+ }
359
+
360
+ $order_id = intval( $_GET['post'] );
361
+
362
+ // execute invoice action.
363
+ switch ( $action ) {
364
+ case 'view':
365
+ $full_path = BEWPI_Abstract_Invoice::exists( $order_id );
366
+ if ( false === $full_path ) {
367
+ wp_die( 'PDF invoice not found.' );
368
+ }
369
+
370
+ BEWPI_Invoice::view( $full_path );
371
+ break;
372
+ case 'view_packing_slip':
373
+ $view_mode = 'download' === WPI()->get_option( 'general', 'view_pdf' ) ? 'D' : 'I';
374
+ $packing_slip = new BEWPI_Packing_Slip( $order_id );
375
+ $packing_slip->generate( $view_mode );
376
+ break;
377
+ case 'delete':
378
+ BEWPI_Invoice::delete( $order_id );
379
+ break;
380
+ case 'create':
381
+ $invoice = new BEWPI_Invoice( $order_id );
382
+ $invoice->generate();
383
+ break;
384
+ case 'update':
385
+ $invoice = new BEWPI_Invoice( $order_id );
386
+ $invoice->update();
387
+ break;
388
+ case 'debug':
389
+ $invoice = new BEWPI_Invoice( $order_id );
390
+ $full_path = $invoice->update();
391
+ BEWPI_Invoice::view( $full_path );
392
+ break;
393
+ }
394
+
395
+ do_action( 'bewpi_admin_pdf_callback_end', $action, $order_id );
396
+ }
397
+
398
+ /**
399
+ * Add plugin action links on plugin.php page.
400
+ *
401
+ * @param array $links action links.
402
+ *
403
+ * @return array
404
+ */
405
+ function add_plugin_action_links( $links ) {
406
+ // add settings link.
407
+ $settings_url = add_query_arg( array( 'page' => 'bewpi-invoices' ), admin_url( 'admin.php' ) );
408
+ $settings_title = __( 'Settings', 'woocommerce-pdf-invoices' );
409
+ array_unshift( $links, sprintf( '<a href="%1$s">%2$s</a>', $settings_url, $settings_title ) );
410
+
411
+ return $links;
412
+ }
413
+
414
+ /**
415
+ * Add links to row meta on plugins.php page.
416
+ *
417
+ * @param array $links row meta.
418
+ * @param string $file plugin basename.
419
+ *
420
+ * @return array
421
+ */
422
+ public static function add_plugin_row_meta( $links, $file ) {
423
+ if ( plugin_basename( WPI_FILE ) === $file ) {
424
+ // add premium plugin link.
425
+ $premium_url = 'http://wcpdfinvoices.com';
426
+ $premium_title = __( 'Premium', 'woocommerce-pdf-invoices' );
427
+ $links[] = sprintf( '<a href="%1$s" target="_blank">%2$s</a>', $premium_url, $premium_title );
428
+ }
429
+
430
+ return $links;
431
+ }
432
+
433
+ /**
434
+ * Get plugin screen ids.
435
+ *
436
+ * @return array
437
+ */
438
+ public static function get_screen_ids() {
439
+ $screen_ids = array(
440
+ 'woocommerce_page_bewpi-invoices',
441
+ 'edit-shop_order',
442
+ 'shop_order',
443
+ );
444
+
445
+ return $screen_ids;
446
+ }
447
+
448
+ /**
449
+ * Load admin styles.
450
+ */
451
+ public function admin_styles() {
452
+ wp_register_style( 'bewpi_settings_css', WPI_URL . '/assets/css/admin.css', false, WPI_VERSION );
453
+ wp_register_style( 'woocommerce_admin_styles', WC()->plugin_url() . '/assets/css/admin.css', array(), WC()->version );
454
+
455
+ $screen = get_current_screen();
456
+ $screen_id = $screen ? $screen->id : '';
457
+ if ( in_array( $screen_id, self::get_screen_ids(), true ) ) {
458
+ wp_enqueue_style( 'bewpi_settings_css' );
459
+ wp_enqueue_style( 'woocommerce_admin_styles' );
460
+ }
461
+ }
462
+
463
+ /**
464
+ * Load admin scripts.
465
+ */
466
+ public function admin_scripts() {
467
+ wp_register_script( 'bewpi_admin_js', WPI_URL . '/assets/js/admin.js', array(), WPI_VERSION, true );
468
+ wp_enqueue_script( 'bewpi_admin_js' );
469
+ wp_localize_script( 'bewpi_admin_js', 'BEWPI_AJAX', array(
470
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
471
+ 'deactivation_nonce' => wp_create_nonce( 'deactivation-notice' ),
472
+ 'dismiss_nonce' => wp_create_nonce( 'dismiss-notice' ),
473
+ )
474
+ );
475
+ wp_register_script( 'bewpi_settings_js', WPI_URL . '/assets/js/settings.js', array(), WPI_VERSION, true );
476
+ wp_register_script( 'wc-enhanced-select', WC()->plugin_url() . '/assets/js/admin/wc-enhanced-select.js', array(
477
+ 'jquery',
478
+ 'jquery-ui-sortable',
479
+ version_compare( WC()->version, '3.2.0', '>=' ) ? 'selectWoo' : 'select2',
480
+ ), WC()->version );
481
+
482
+ $screen = get_current_screen();
483
+ $screen_id = $screen ? $screen->id : '';
484
+ if ( in_array( $screen_id, self::get_screen_ids(), true ) ) {
485
+ wp_enqueue_script( 'bewpi_settings_js' );
486
+ wp_enqueue_script( 'wc-enhanced-select' );
487
+ wp_enqueue_script( 'jquery-ui-sortable' );
488
+ }
489
+ }
490
+
491
+ /**
492
+ * Add "Email It In" email address as BCC to WooCommerce email.
493
+ *
494
+ * @param string $headers email headers.
495
+ * @param string $status email name.
496
+ * @param object $order WooCommerce order.
497
+ *
498
+ * @return string
499
+ */
500
+ function add_emailitin_as_recipient( $headers, $status, $order ) {
501
+ // Only attach to emails with WC_Order object.
502
+ if ( ! $order instanceof WC_Order ) {
503
+ return $headers;
504
+ }
505
+
506
+ // make sure invoice got only send once for each order.
507
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
508
+ $transient_name = sprintf( 'bewpi_emailitin_processed-%1$s', $order_id );
509
+ if ( get_transient( $transient_name ) ) {
510
+ return $headers;
511
+ }
512
+
513
+ $emailitin_account = WPI()->get_option( 'general', 'email_it_in_account' );
514
+ $emailitin_enabled = WPI()->get_option( 'general', 'email_it_in' );
515
+ // Email It In option enabled?
516
+ if ( ! $emailitin_enabled || empty( $emailitin_account ) ) {
517
+ return $headers;
518
+ }
519
+
520
+ // check if email is enabled.
521
+ if ( ! WPI()->is_email_enabled( $status ) ) {
522
+ return $headers;
523
+ }
524
+
525
+ set_transient( $transient_name, true, 20 );
526
+
527
+ $headers .= 'BCC: <' . $emailitin_account . '>' . "\r\n";
528
+
529
+ return $headers;
530
+ }
531
+
532
+ /**
533
+ * Attach a generated invoice to WooCommerce emails.
534
+ *
535
+ * @param array $attachments attachments.
536
+ * @param string $status name of email.
537
+ * @param object $order order.
538
+ *
539
+ * @return array.
540
+ */
541
+ public function attach_invoice_to_email( $attachments, $status, $order ) {
542
+ // only attach to emails with WC_Order object.
543
+ if ( ! $order instanceof WC_Order ) {
544
+ return $attachments;
545
+ }
546
+
547
+ // check if email is enabled.
548
+ if ( ! WPI()->is_email_enabled( $status ) ) {
549
+ return $attachments;
550
+ }
551
+
552
+ // Skip invoice generation.
553
+ $skip = apply_filters( 'bewpi_skip_invoice_generation', false, $status, $order );
554
+ if ( $skip ) {
555
+ return $attachments;
556
+ }
557
+
558
+ // Skip invoice generation for free orders.
559
+ if ( 0.00 === (double) WPI()->get_prop( $order, 'total' ) && WPI()->get_option( 'general', 'disable_free_products' ) ) {
560
+ return $attachments;
561
+ }
562
+
563
+ // payment methods for which the invoice generation should be cancelled.
564
+ $payment_methods = apply_filters( 'bewpi_attach_invoice_excluded_payment_methods', array() );
565
+ if ( in_array( WPI()->get_prop( $order, 'payment_method' ), $payment_methods, true ) ) {
566
+ return $attachments;
567
+ }
568
+
569
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
570
+ $invoice = new BEWPI_Invoice( $order_id );
571
+ $full_path = $invoice->get_full_path();
572
+ if ( ! $full_path ) {
573
+ $full_path = $invoice->generate();
574
+ } elseif ( ! $invoice->is_sent() ) {
575
+ // Only update PDF invoice when client doesn't got it already.
576
+ $full_path = $invoice->update();
577
+ }
578
+
579
+ if ( apply_filters( 'wpi_skip_pdf_invoice_attachment', false, $status, $order ) ) {
580
+ return $attachments;
581
+ }
582
+
583
+ // Attach invoice to email.
584
+ $attachments[] = $full_path;
585
+
586
+ /**
587
+ * Check if current email is a customer email.
588
+ *
589
+ * @var WC_Email $email
590
+ */
591
+ $is_customer_email = false;
592
+ foreach ( WC()->mailer()->get_emails() as $email ) {
593
+ if ( $email->id === $status ) {
594
+ $is_customer_email = $email->is_customer_email();
595
+ break;
596
+ }
597
+ }
598
+
599
+ // Only mark the invoice as sent for customer emails.
600
+ if ( $is_customer_email ) {
601
+ update_post_meta( $order_id, 'bewpi_pdf_invoice_sent', 1 );
602
+ }
603
+
604
+ return $attachments;
605
+ }
606
+
607
+ /**
608
+ * Create Shop Order column for Invoice Number and place it before 'Actions' column.
609
+ *
610
+ * @param array $columns Shop Order columns.
611
+ *
612
+ * @return array
613
+ */
614
+ public function add_invoice_number_column( $columns ) {
615
+ // invoice number column enabled by user?
616
+ if ( ! (bool) WPI()->get_option( 'general', 'invoice_number_column' ) ) {
617
+ return $columns;
618
+ }
619
+
620
+ $actions_column = BEWPI_WC_Core_Compatibility::is_wc_version_gt( '3.2.6' ) ? 'wc_actions' : 'order_actions';
621
+ // Splice columns at 'Actions' column, add 'Invoice No.' column and merge with last part.
622
+ $offset = array_search( $actions_column, array_keys( $columns ), true );
623
+ $columns = array_merge(
624
+ array_splice( $columns, 0, $offset ),
625
+ array(
626
+ 'bewpi_invoice_number' => __( 'Invoice No.', 'woocommerce-pdf-invoices' ),
627
+ ),
628
+ $columns
629
+ );
630
+
631
+ return $columns;
632
+ }
633
+
634
+ /**
635
+ * Display Invoice Number in Shop Order column (if available).
636
+ *
637
+ * @param string $column column slug.
638
+ */
639
+ public function invoice_number_column_data( $column ) {
640
+ global $post;
641
+
642
+ if ( 'bewpi_invoice_number' !== $column ) {
643
+ return;
644
+ }
645
+
646
+ if ( BEWPI_Invoice::exists( $post->ID ) ) {
647
+ echo esc_html( get_post_meta( $post->ID, '_bewpi_invoice_number', true ) );
648
+ } else {
649
+ echo '-';
650
+ }
651
+ }
652
+
653
+ /**
654
+ * Display PDF button on "Orders" page to view invoice.
655
+ *
656
+ * @param WC_ORDER $order WooCommerce Order.
657
+ */
658
+ public function add_admin_order_pdf( $order ) {
659
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
660
+
661
+ if ( BEWPI_Invoice::exists( $order_id ) ) {
662
+ $this->show_invoice_button(
663
+ __( 'View invoice', 'woocommerce-pdf-invoices' ),
664
+ $order_id,
665
+ 'view',
666
+ array(
667
+ 'class="button shop-order-action invoice wpi"',
668
+ 'target="_blank"',
669
+ )
670
+ );
671
+ }
672
+ }
673
+
674
+ /**
675
+ * Add meta box to "Order Details" page to create, view and cancel PDF invoice.
676
+ */
677
+ function add_admin_order_pdf_meta_box() {
678
+ add_meta_box( 'order_page_create_invoice', __( 'PDF Invoice', 'woocommerce-pdf-invoices' ), array(
679
+ $this,
680
+ 'display_order_page_pdf_invoice_meta_box',
681
+ ), 'shop_order', 'side', 'high' );
682
+ }
683
+
684
+ /**
685
+ * Display invoice button html.
686
+ *
687
+ * @param string $title title attribute of button.
688
+ * @param int $order_id WC_ORDER id.
689
+ * @param string $action action create, view or cancel.
690
+ * @param array $attributes additional attributes.
691
+ */
692
+ private function show_invoice_button( $title, $order_id, $action, $attributes = array() ) {
693
+ $url = wp_nonce_url( add_query_arg( array(
694
+ 'post' => $order_id,
695
+ 'action' => 'edit',
696
+ 'bewpi_action' => $action,
697
+ ), admin_url( 'post.php' ) ), $action, 'nonce' );
698
+
699
+ $url = apply_filters( 'bewpi_pdf_invoice_url', $url, $order_id, $action );
700
+ $attr_title = $title . ' ' . __( 'PDF Invoice', 'woocommerce-pdf-invoices' );
701
+
702
+ printf( '<a href="%1$s" title="%2$s" %3$s>%4$s</a>', $url, $attr_title, join( ' ', $attributes ), $title );
703
+ }
704
+
705
+ /**
706
+ * Display invoice actions on "Order Details" page.
707
+ *
708
+ * @param WP_Post $post as WC_Order object.
709
+ */
710
+ public function display_order_page_pdf_invoice_meta_box( $post ) {
711
+ $invoice = new BEWPI_Invoice( $post->ID );
712
+
713
+ if ( ! $invoice->get_full_path() ) {
714
+
715
+ $this->show_invoice_button( __( 'Create', 'woocommerce-pdf-invoices' ), $post->ID, 'create', array( 'class="button grant_access order-page invoice wpi"' ) );
716
+
717
+ } else {
718
+
719
+ $details = array(
720
+ 'invoice_date' => array(
721
+ 'title' => __( 'Date:', 'woocommerce-pdf-invoices' ),
722
+ 'value' => $invoice->get_formatted_date(),
723
+ ),
724
+ 'invoice_number' => array(
725
+ 'title' => __( 'Number:', 'woocommerce-pdf-invoices' ),
726
+ 'value' => $invoice->get_formatted_number(),
727
+ ),
728
+ );
729
+
730
+ // Backporting --only show when meta exists.
731
+ $is_sent = $invoice->is_sent();
732
+ if ( false !== get_post_meta( $post->ID, 'bewpi_pdf_invoice_sent', true ) ) {
733
+ $details['invoice_sent'] = array(
734
+ 'title' => __( 'Sent?', 'woocommerce-pdf-invoices' ),
735
+ 'value' => (bool) $is_sent ? __( 'Yes', 'woocommerce-pdf-invoices' ) : __( 'No', 'woocommerce-pdf-invoices' ),
736
+ );
737
+ }
738
+
739
+ $details = apply_filters( 'bewpi_order_page_pdf_invoice_meta_box_details', $details, $invoice );
740
+ include WPI_DIR . '/includes/admin/views/html-order-page-pdf-invoice-meta-box.php';
741
+
742
+ echo '<p class="invoice-actions">';
743
+
744
+ // display button to view invoice.
745
+ $this->show_invoice_button( __( 'View', 'woocommerce-pdf-invoices' ), $post->ID, 'view', array(
746
+ 'class="button grant_access order-page invoice wpi"',
747
+ 'target="_blank"',
748
+ ) );
749
+
750
+ // PDF invoice should not be changed when it has been sent to the client already.
751
+ if ( ! $is_sent ) {
752
+ $this->show_invoice_button( __( 'Update', 'woocommerce-pdf-invoices' ), $post->ID, 'update', array(
753
+ 'class="button grant_access order-page invoice wpi"',
754
+ ) );
755
+
756
+ // Create confirm message when deleting PDF invoice.
757
+ $message = __( 'Are you sure to delete the PDF invoice?', 'woocommerce-pdf-invoices' );
758
+ if ( 'sequential_number' === BEWPI_Invoice::get_number_type() && $invoice->get_number() !== BEWPI_Abstract_Invoice::get_max_invoice_number() ) {
759
+
760
+ /* translators: $d: invoice number */
761
+ $message .= ' ' . sprintf( __( 'You will be missing a PDF invoice with invoice number %d and thus creating an accounting gap!', 'woocommerce-pdf-invoices' ), $invoice->get_number() );
762
+
763
+ /* translators: %s: plugin name. */
764
+ $message .= ' ' . apply_filters( 'wpi_delete_invoice_confirm_message', sprintf( __( 'Instead consider using Cancelled PDF invoices with %s.', 'woocommerce-pdf-invoices' ), 'WooCommerce PDF Invoices Premium' ) );
765
+
766
+ }
767
+
768
+ // display button to delete invoice.
769
+ $this->show_invoice_button( __( 'Delete', 'woocommerce-pdf-invoices' ), $post->ID, 'delete', array(
770
+ 'class="button grant_access order-page invoice wpi"',
771
+ 'onclick="return confirm(\'' . $message . '\');"',
772
+ ) );
773
+ }
774
+
775
+ // display button to view invoice in debug mode.
776
+ if ( (bool) WPI()->get_option( 'general', 'mpdf_debug' ) ) {
777
+ $this->show_invoice_button( __( 'Debug', 'woocommerce-pdf-invoices' ), $post->ID, 'debug', array(
778
+ 'class="button grant_access order-page invoice wpi"',
779
+ 'target="_blank"',
780
+ ) );
781
+ }
782
+
783
+ echo '</p>';
784
+
785
+ } // End if().
786
+
787
+ do_action( 'bewpi_order_page_after_meta_box_details_end', $post->ID );
788
+ }
789
+
790
+ /**
791
+ * Shortcode to download invoice.
792
+ *
793
+ * @param array $atts shortcode attributes.
794
+ */
795
+ public function download_invoice_shortcode( $atts ) {
796
+ if ( ! isset( $atts['order_id'] ) || 0 === intval( $atts['order_id'] ) ) {
797
+ return;
798
+ }
799
+
800
+ // by default order status should be Processing or Completed.
801
+ $order = wc_get_order( $atts['order_id'] );
802
+ if ( ! $order->is_paid() ) {
803
+ return;
804
+ }
805
+
806
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
807
+ $invoice = new BEWPI_Invoice( $order_id );
808
+ if ( ! $invoice->get_full_path() ) {
809
+ return;
810
+ }
811
+
812
+ $url = add_query_arg( array(
813
+ 'bewpi_action' => 'view',
814
+ 'post' => $order_id,
815
+ 'nonce' => wp_create_nonce( 'view' ),
816
+ ) );
817
+
818
+ $tags = array(
819
+ '{formatted_invoice_number}' => $invoice->get_formatted_number(),
820
+ '{order_number}' => $order_id,
821
+ '{formatted_invoice_date}' => $invoice->get_formatted_date(),
822
+ '{formatted_order_date}' => $invoice->get_formatted_order_date(),
823
+ );
824
+ // find and replace placeholders.
825
+ $title = str_replace( array_keys( $tags ), array_values( $tags ), $atts['title'] );
826
+ printf( '<a href="%1$s">%2$s</a>', esc_attr( $url ), esc_html( $title ) );
827
+ }
828
+
829
+ /**
830
+ * Display download link on My Account page.
831
+ *
832
+ * @param array $actions my account order table actions.
833
+ * @param WC_Order $order WooCommerce order object.
834
+ *
835
+ * @return mixed
836
+ */
837
+ public function add_my_account_pdf( $actions, $order ) {
838
+ $order = wc_get_order( $order );
839
+
840
+ if ( ! WPI()->get_option( 'general', 'download_invoice_account' ) || ! $order->is_paid() ) {
841
+ return $actions;
842
+ }
843
+
844
+ $order_id = BEWPI_WC_Order_Compatibility::get_id( $order );
845
+ $invoice = new BEWPI_Invoice( $order_id );
846
+ if ( ! $invoice->get_full_path() ) {
847
+ return $actions;
848
+ }
849
+
850
+ $url = add_query_arg( array(
851
+ 'bewpi_action' => 'view',
852
+ 'post' => $order_id,
853
+ 'nonce' => wp_create_nonce( 'view' ),
854
+ ) );
855
+
856
+ $actions['invoice'] = array(
857
+ 'url' => $url,
858
+ 'name' => apply_filters( 'bewpi_my_account_pdf_name', __( 'Invoice', 'woocommerce-pdf-invoices' ), $invoice ),
859
+ );
860
+
861
+ return $actions;
862
+ }
863
+
864
+ /**
865
+ * Check if email is enabled.
866
+ *
867
+ * @param string $email Email ID.
868
+ *
869
+ * @return bool
870
+ */
871
+ public function is_email_enabled( $email ) {
872
+ return in_array( $email, (array) $this->get_option( 'general', 'email_types' ), true );
873
+ }
874
+
875
+ /**
876
+ * Get plugin install date.
877
+ *
878
+ * @return DateTime|bool
879
+ */
880
+ private function get_install_date() {
881
+ if ( version_compare( WPI_VERSION, '2.6.1' ) >= 0 ) {
882
+ // since 2.6.1+ option name changed and date has mysql format.
883
+ return DateTime::createFromFormat( 'Y-m-d H:i:s', get_site_option( 'bewpi_install_date' ) );
884
+ }
885
+
886
+ return DateTime::createFromFormat( 'Y-m-d', get_site_option( 'bewpi-install-date' ) );
887
+ }
888
+
889
+ /**
890
+ * Display rate notice after 10 days based on installation date.
891
+ */
892
+ public function admin_notice_rate() {
893
+ if ( get_site_transient( 'wpi_admin_notice_rate' ) ) {
894
+ return;
895
+ }
896
+
897
+ // install date should be valid.
898
+ $install_date = $this->get_install_date();
899
+ if ( false === $install_date ) {
900
+ return;
901
+ }
902
+
903
+ // at least 10 days should be past to display notice.
904
+ if ( new DateTime( '10 days ago' ) >= $install_date ) {
905
+ include WPI_DIR . '/includes/admin/views/html-rate-notice.php';
906
+ set_site_transient( 'wpi_admin_notice_rate', true );
907
+ }
908
+ }
909
+
910
+ /**
911
+ * Get invoice by order ID.
912
+ *
913
+ * @param int $order_id order ID.
914
+ *
915
+ * @return BEWPI_Abstract_Invoice
916
+ */
917
+ public function get_invoice( $order_id ) {
918
+
919
+ return new BEWPI_Invoice( $order_id );
920
+ }
921
+
922
+ /**
923
+ * Set order for templater directly after creation to fetch order data.
924
+ *
925
+ * @since 2.9.3 Do not use second and third parameters since several plugins do not use them. This prevents a fatal error.
926
+ *
927
+ * @param int $order_id WC_Order ID.
928
+ */
929
+ public static function set_order( $order_id ) {
930
+ $order = wc_get_order( $order_id );
931
+ WPI()->templater()->set_order( $order );
932
+ }
933
+
934
+ /**
935
+ * Get option by group and name.
936
+ *
937
+ * @param string $group Option group name (without 'bewpi_' prefix and '_settings' suffix). Available groups are: 'general', 'template' and 'premium'.
938
+ * @param string $name Option name (without 'bewpi_' prefix).
939
+ *
940
+ * @return bool|mixed
941
+ */
942
+ public static function get_option( $group, $name = '' ) {
943
+ $option = apply_filters( 'bewpi_option', false, $group, $name );
944
+
945
+ if ( false === $option ) {
946
+ $options = get_option( 'bewpi_' . $group . '_settings' );
947
+ if ( false === $options ) {
948
+ return false;
949
+ }
950
+
951
+ if ( ! isset( $options[ 'bewpi_' . $name ] ) ) {
952
+ return false;
953
+ }
954
+
955
+ $option = $options[ 'bewpi_' . $name ];
956
+ }
957
+
958
+ $hook = sprintf( 'bewpi_pre_option-%1$s-%2$s', $group, $name );
959
+
960
+ return apply_filters( $hook, $option );
961
+ }
962
+
963
+ /**
964
+ * Get tax or vat label.
965
+ *
966
+ * @param bool $incl Including tax or vat.
967
+ * @param bool $small text font size.
968
+ *
969
+ * @return string
970
+ */
971
+ public function tax_or_vat_label( $incl = true, $small = true ) {
972
+ if ( $incl ) {
973
+ $label = WC()->countries->inc_tax_or_vat();
974
+ } else {
975
+ $label = WC()->countries->ex_tax_or_vat();
976
+ }
977
+
978
+ if ( $small ) {
979
+ $label = sprintf( '<small class="tax_label">%s</small>', $label );
980
+ }
981
+
982
+ return $label;
983
+ }
984
+
985
+ /**
986
+ * Get order currency.
987
+ *
988
+ * @param WC_Order $order order object.
989
+ *
990
+ * @return string
991
+ */
992
+ public function get_currency( $order ) {
993
+ return BEWPI_WC_Order_Compatibility::get_currency( $order );
994
+ }
995
+
996
+ /**
997
+ * Get order property.
998
+ *
999
+ * @param WC_Order $order order object.
1000
+ * @param string $prop order property.
1001
+ * @param string $context display context.
1002
+ *
1003
+ * @return mixed
1004
+ */
1005
+ public function get_prop( $order, $prop, $context = 'edit' ) {
1006
+ return BEWPI_WC_Order_Compatibility::get_prop( $order, $prop, $context );
1007
+ }
1008
+
1009
+ /**
1010
+ * Get order meta.
1011
+ *
1012
+ * @param WC_Order $order Order object.
1013
+ * @param string $meta_key Post meta key.
1014
+ *
1015
+ * @return bool/string
1016
+ */
1017
+ public function get_meta( $order, $meta_key ) {
1018
+ return get_post_meta( BEWPI_WC_Order_Compatibility::get_id( $order ), $meta_key, true );
1019
+ }
1020
+
1021
+ /**
1022
+ * Get all total rows before subtotal.
1023
+ *
1024
+ * @return array
1025
+ */
1026
+ public function get_totals_before_subtotal() {
1027
+ $selected_totals = self::get_option( 'template', 'totals' );
1028
+ $subtotal = array_search( 'subtotal_ex_vat', $selected_totals, true );
1029
+
1030
+ return array_slice( $selected_totals, 0, $subtotal );
1031
+ }
1032
+
1033
+ /**
1034
+ * Get prefix.
1035
+ *
1036
+ * @return string
1037
+ */
1038
+ public function get_prefix() {
1039
+ return $this->prefix;
1040
+ }
1041
+
1042
+ /**
1043
+ * Templater instance.
1044
+ *
1045
+ * @return BEWPI_Template.
1046
+ */
1047
+ public function templater() {
1048
+ return BEWPI_Template::instance();
1049
+ }
1050
+
1051
+ /**
1052
+ * Logger instance;
1053
+ *
1054
+ * @return BEWPI_Debug_Log.
1055
+ */
1056
+ public function logger() {
1057
+ return BEWPI_Debug_Log::instance();
1058
+ }
1059
+ }
1060
+ }
lang/woocommerce-pdf-invoices-cs_CZ.po CHANGED
@@ -1,1949 +1,1949 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
- # This file is distributed under the same license as the PACKAGE package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
- #
6
- msgid ""
7
- msgstr ""
8
- "Project-Id-Version: WooCommerce PDF Invoices\n"
9
- "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2017-11-29 20:36+0100\n"
11
- "PO-Revision-Date: 2017-11-29 20:36+0100\n"
12
- "Last-Translator: \n"
13
- "Language-Team: \n"
14
- "Language: cs_CZ\n"
15
- "MIME-Version: 1.0\n"
16
- "Content-Type: text/plain; charset=UTF-8\n"
17
- "Content-Transfer-Encoding: 8bit\n"
18
- "X-Generator: Poedit 2.0.4\n"
19
- "X-Poedit-SourceCharset: UTF-8\n"
20
- "X-Poedit-KeywordsList: __;_e\n"
21
- "X-Poedit-Basepath: ../..\n"
22
- "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
23
- "X-Poedit-SearchPath-0: woocommerce-pdf-invoices\n"
24
- "X-Poedit-SearchPath-1: woocommerce-pdf-invoices-premium\n"
25
- "X-Poedit-SearchPathExcluded-0: *.js\n"
26
-
27
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:25
28
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:427
29
- msgid "Premium"
30
- msgstr "Premium"
31
-
32
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:99
33
- #, php-format
34
- msgid ""
35
- "Whoops, your license for %1$s has expired. To keep receiving updates and "
36
- "premium support, we offer you a 30%% discount when you <a href=\"%2$s\" "
37
- "target=\"_blank\">renew your license</a>."
38
- msgstr ""
39
-
40
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:225
41
- msgid "Premium Options"
42
- msgstr "Volby verze Premium"
43
-
44
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:228
45
- msgid "Template Options"
46
- msgstr ""
47
-
48
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:231
49
- msgid "Supplier Options"
50
- msgstr "Možnosti dodavatelů"
51
-
52
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:232
53
- msgid "Send customer invoice automatically to your supplier(s)."
54
- msgstr "Poslat automaticky zákaznickou fakturu Vašemu dodavateli."
55
-
56
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:235
57
- #, fuzzy
58
- #| msgid "Header Options"
59
- msgid "Credit Note Options"
60
- msgstr "Nastavení záhlaví"
61
-
62
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:238
63
- #, fuzzy
64
- #| msgid "Invoice Number Options"
65
- msgid "Credit Note Number Options"
66
- msgstr "Nastavení číslování faktur"
67
-
68
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:241
69
- msgid "Global Invoice Options"
70
- msgstr "Možnosti globální fakturace"
71
-
72
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:242
73
- msgid ""
74
- "Generate global invoices on Orders page by selecting multiple orders and "
75
- "applying action or let customers generate periodically from My Account page. "
76
- "<strong>Global invoices are only supported when using the micro template!</"
77
- "strong>"
78
- msgstr ""
79
-
80
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:245
81
- msgid "Reminder Options"
82
- msgstr "Možnosti připomínání"
83
-
84
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:246
85
- #, php-format
86
- msgid ""
87
- "Automatically send PDF invoice after a specific period of time. When "
88
- "enabled, a new <a href=\"%s\">Customer invoice reminder</a> email will be "
89
- "used to send the PDF invoice."
90
- msgstr ""
91
-
92
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:249
93
- msgid "Request Invoice Options"
94
- msgstr ""
95
-
96
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:250
97
- msgid ""
98
- "Let a customer decide to generate a PDF invoice. When enabled, a checkbox "
99
- "field will be added on the checkout page so customers can request a PDF "
100
- "invoice."
101
- msgstr ""
102
-
103
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:267
104
- msgid "Activation email"
105
- msgstr ""
106
-
107
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:272
108
- #, php-format
109
- msgid "Enter your activation email from %s."
110
- msgstr ""
111
-
112
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:278
113
- msgid "License"
114
- msgstr "Licence"
115
-
116
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:283
117
- #, php-format
118
- msgid "Enter your license key from %s to receive updates."
119
- msgstr ""
120
-
121
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:289
122
- msgid "PDF attachment"
123
- msgstr "Příloha PDF"
124
-
125
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:294
126
- msgid "Add for example a PDF with your terms & conditions."
127
- msgstr "Přidejte například soubor PDF s obchodními podmínkami."
128
-
129
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:300
130
- msgid "Suppliers"
131
- msgstr "Dodavatelé"
132
-
133
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:305
134
- #, fuzzy
135
- #| msgid ""
136
- #| "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by "
137
- #| "simply adding there Email It In email addresses. Email addresses need to "
138
- #| "be seperated by comma's."
139
- msgid ""
140
- "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by simply "
141
- "adding their Email It In email addresses. Email addresses need to be "
142
- "seperated by comma's."
143
- msgstr ""
144
- "<b>Tip</b>: Posílejte faktury do zákaznických cloudových úložišť snadno "
145
- "přidáním e-mailových adres Email It In. E-mailové adresy oddělujte čárkami."
146
-
147
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:311
148
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:72
149
- msgid "Attach to Emails"
150
- msgstr ""
151
-
152
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:322
153
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:400
154
- msgid "Prefix"
155
- msgstr ""
156
-
157
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:333
158
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:411
159
- msgid "Suffix"
160
- msgstr ""
161
-
162
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:344
163
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:422
164
- msgid "Format"
165
- msgstr "Formát"
166
-
167
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:349
168
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:427
169
- #, php-format
170
- msgid "Available placeholders: %s."
171
- msgstr ""
172
-
173
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:351
174
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:429
175
- #, php-format
176
- msgid "<b>Note:</b> %s is required and slashes aren't supported."
177
- msgstr ""
178
-
179
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:363
180
- msgid "Enable customer generation"
181
- msgstr ""
182
-
183
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:365
184
- msgid "Let customers generate a global invoice from their account"
185
- msgstr ""
186
-
187
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:373
188
- msgid "Customer generation period"
189
- msgstr "Perioda zákaznického generování"
190
-
191
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:378
192
- msgid ""
193
- "Should your customers have the ability to generate a global invoice by month "
194
- "or by year?<br/><strong>Note:</strong> Customer generation should be enabled."
195
- msgstr ""
196
- "Mám mít zákazník možnost generovat globální faktury měsíčně nebo ročně?<br/"
197
- "><strong>Poznámka:</strong> Zákaznické generování má být povolené."
198
-
199
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:380
200
- msgid "Month"
201
- msgstr "Měsíc"
202
-
203
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:381
204
- msgid "Year"
205
- msgstr "Rok"
206
-
207
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:393
208
- msgid "Send to your Cloud Storage"
209
- msgstr "Poslat do cloudového úložiště"
210
-
211
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:405
212
- msgid "Email to customer"
213
- msgstr "E-mail zákazníkovi"
214
-
215
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:417
216
- msgid "Email to supplier(s)"
217
- msgstr "E-mail dodavatelům"
218
-
219
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:424
220
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:146
221
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:146
222
- msgid "Email subject"
223
- msgstr "Předmět e-mailu"
224
-
225
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:429
226
- msgid "Subject for the global invoice email."
227
- msgstr "Předmět globálního fakturačního e-mailu"
228
-
229
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:436
230
- msgid "Email message"
231
- msgstr "Obsah e-mailu"
232
-
233
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:441
234
- msgid "Message for the global invoice email."
235
- msgstr "Obsah globálního fakturačního e-mailu."
236
-
237
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:453
238
- msgid "Enable reminder"
239
- msgstr "Povolit upozorňování"
240
-
241
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:460
242
- #, fuzzy
243
- #| msgid "Days until reminder"
244
- msgid "Days until due date"
245
- msgstr "Počet dnů do upozornění"
246
-
247
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:465
248
- #, fuzzy
249
- #| msgid "Number of days from starting date until reminder date."
250
- msgid "Number of days from order or invoice date until due date."
251
- msgstr "Počet dnů od počátečního data do data upozornění."
252
-
253
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:474
254
- msgid "Days until reminder"
255
- msgstr "Počet dnů do upozornění"
256
-
257
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:479
258
- msgid "Number of days from order or invoice date until reminder date."
259
- msgstr ""
260
-
261
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:488
262
- msgid "Date type"
263
- msgstr ""
264
-
265
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:493
266
- msgid "Choose the type of date to count from."
267
- msgstr ""
268
-
269
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:495
270
- msgid "Order date"
271
- msgstr "Datum objednávky"
272
-
273
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:496
274
- msgid "Invoice date"
275
- msgstr ""
276
-
277
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:508
278
- msgid "Enable Request Invoice."
279
- msgstr ""
280
-
281
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:590
282
- msgid "Activation email cannot be empty."
283
- msgstr ""
284
-
285
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:630
286
- msgid ""
287
- "Something went wrong with the activation of your license. Contact the author "
288
- "for support."
289
- msgstr ""
290
-
291
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:651
292
- msgid "File to large."
293
- msgstr "Soubor je příliš velký."
294
-
295
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:657
296
- msgid "Only PDF files are allowed."
297
- msgstr "Jsou povoleny pouze soubory PDF."
298
-
299
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:682
300
- msgid "Remove"
301
- msgstr "Odebrat"
302
-
303
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:684
304
- msgid "Choose"
305
- msgstr "Zvolit"
306
-
307
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-credit-note.php:12
308
- #, php-format
309
- msgid "PDF Credit Note %1$s"
310
- msgstr ""
311
-
312
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:10
313
- msgid "Generate Global Invoice"
314
- msgstr "Vygenerovat globální fakturu"
315
-
316
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:20
317
- msgid "Select a month"
318
- msgstr "Vyberte měsíc"
319
-
320
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:33
321
- msgid "Select a year"
322
- msgstr "Vyberte rok"
323
-
324
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:47
325
- msgid "Generate invoice"
326
- msgstr "Vygenerovat fakturu"
327
-
328
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:16
329
- #, fuzzy
330
- #| msgid "Global invoice successfully generated! "
331
- msgid "Global invoice successfully generated!"
332
- msgstr "Globální faktura byla úspěšně vygenerována!"
333
-
334
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
335
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:663
336
- msgid "View invoice"
337
- msgstr "Prohlédnout fakturu"
338
-
339
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
340
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:751
341
- msgid "View"
342
- msgstr "Prohlédnout"
343
-
344
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:37
345
- msgid "Bulk Export PDF Invoices"
346
- msgstr ""
347
-
348
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:38
349
- msgid "Bulk Export PDF Packing Slips"
350
- msgstr ""
351
-
352
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:85
353
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:73
354
- msgid "No order selected."
355
- msgstr ""
356
-
357
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:37
358
- msgid "Bulk Generate PDF Invoices"
359
- msgstr ""
360
-
361
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:38
362
- msgid "Bulk Generate PDF Packing Slips"
363
- msgstr ""
364
-
365
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:135
366
- msgid "PDF Credit Notes"
367
- msgstr ""
368
-
369
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:283
370
- #, php-format
371
- msgid ""
372
- "<a href=\"%1$s\" class=\"%2$s\" target=\"%3$s\">PDF Credit Note (%4$s)</a> "
373
- "for Refund #%5$s."
374
- msgstr ""
375
-
376
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:289
377
- #, php-format
378
- msgid "created on %1$s at %2$s"
379
- msgstr ""
380
-
381
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:291
382
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:775
383
- msgid "Delete"
384
- msgstr ""
385
-
386
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:297
387
- msgid "There are no credit notes yet."
388
- msgstr ""
389
-
390
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:309
391
- msgid "Create PDF Credit Notes for selected refund(s)"
392
- msgstr ""
393
-
394
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:339
395
- msgid "Credit note"
396
- msgstr ""
397
-
398
- #: woocommerce-pdf-invoices-premium/includes/class-install.php:91
399
- #, php-format
400
- msgid ""
401
- "%1$s requires %2$s to be activated. Install and activate it and you should "
402
- "be good to go! :)"
403
- msgstr ""
404
-
405
- #: woocommerce-pdf-invoices-premium/includes/class-install.php:100
406
- #, php-format
407
- msgid ""
408
- "%1$s requires at least %2$s. Update it and get the best out of both "
409
- "plugins. :)"
410
- msgstr ""
411
-
412
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:228
413
- msgid "Invalid request"
414
- msgstr "Neplatný požadavek"
415
-
416
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:248
417
- msgid "No orders found."
418
- msgstr "Nebyly nalezeny žádné objednávky."
419
-
420
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:295
421
- msgid "Generate global invoice"
422
- msgstr "Generovat globální fakturu"
423
-
424
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:323
425
- msgid ""
426
- "Could not generate the invoice. Global invoices are only supported when "
427
- "using the micro template."
428
- msgstr ""
429
-
430
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:336
431
- msgid "Select more then one order to generate a global invoice."
432
- msgstr ""
433
-
434
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
435
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
436
- msgid "Yes"
437
- msgstr "Ano"
438
-
439
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
440
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
441
- msgid "No"
442
- msgstr "Ne"
443
-
444
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:83
445
- msgid "Reminder on:"
446
- msgstr ""
447
-
448
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:88
449
- msgid "Reminder sent?"
450
- msgstr "Posláno upozornění?"
451
-
452
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:296
453
- #, fuzzy
454
- #| msgid "Order Date: %s"
455
- msgid "Due Date:"
456
- msgstr "Datum objednávky: %s"
457
-
458
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:61
459
- msgid ""
460
- "Instead consider creating a Cancelled PDF invoice by changing the order "
461
- "status to Cancelled."
462
- msgstr ""
463
-
464
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:116
465
- msgid "Advanced Table Content"
466
- msgstr ""
467
-
468
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:117
469
- msgid ""
470
- "Enable Advanced Table Content settings to fully customize line item columns "
471
- "and total rows. When enabled the standard Table Content settings will be "
472
- "ignored. When using a custom template, make sure to update it! Micro "
473
- "template is not supported."
474
- msgstr ""
475
-
476
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:145
477
- msgid "Enable Advanced Table Content"
478
- msgstr ""
479
-
480
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:157
481
- msgid "Show SKU as meta data"
482
- msgstr ""
483
-
484
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:164
485
- msgid "Display tax totals"
486
- msgstr ""
487
-
488
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:172
489
- msgid "Itemized"
490
- msgstr ""
491
-
492
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:173
493
- msgid "As a single total"
494
- msgstr ""
495
-
496
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:179
497
- #, fuzzy
498
- #| msgid "Left footer column."
499
- msgid "Line item columns"
500
- msgstr "Levý sloupec zápatí"
501
-
502
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:188
503
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:393
504
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:48
505
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:403
506
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:53
507
- msgid "Description"
508
- msgstr "Popis"
509
-
510
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:193
511
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:198
512
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:401
513
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:405
514
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:57
515
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:60
516
- msgid "Cost"
517
- msgstr "Cena za kus"
518
-
519
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:203
520
- msgid "Quantity"
521
- msgstr ""
522
-
523
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:213
524
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:218
525
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:281
526
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:286
527
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:413
528
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:417
529
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:77
530
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:235
531
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:405
532
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:71
533
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:275
534
- msgid "Total"
535
- msgstr "Celkem"
536
-
537
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:227
538
- #, fuzzy
539
- #| msgid "Total"
540
- msgid "Total rows"
541
- msgstr "Celkem"
542
-
543
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:236
544
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:261
545
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:173
546
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:506
547
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:207
548
- msgid "Discount"
549
- msgstr "Sleva"
550
-
551
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:241
552
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:266
553
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:182
554
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:200
555
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:518
556
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:215
557
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:231
558
- msgid "Shipping"
559
- msgstr "Dopravné"
560
-
561
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:246
562
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:271
563
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:212
564
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:242
565
- msgid "Fee"
566
- msgstr "Poplatky"
567
-
568
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:251
569
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:256
570
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:191
571
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:470
572
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:223
573
- msgid "Subtotal"
574
- msgstr "Mezisoučet"
575
-
576
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:397
577
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:65
578
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:59
579
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:404
580
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:62
581
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:63
582
- msgid "Qty"
583
- msgstr "Počet kusů"
584
-
585
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:607
586
- #, fuzzy, php-format
587
- #| msgid "Subtotal"
588
- msgid "Subtotal %s"
589
- msgstr "Mezisoučet"
590
-
591
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:625
592
- #, fuzzy, php-format
593
- #| msgid "Discount"
594
- msgid "Discount %s"
595
- msgstr "Sleva"
596
-
597
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:652
598
- #, fuzzy, php-format
599
- #| msgid "Shipping"
600
- msgid "Shipping %s"
601
- msgstr "Dopravné"
602
-
603
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:685
604
- #, php-format
605
- msgid "%1$s %2$s"
606
- msgstr ""
607
-
608
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:866
609
- #, fuzzy, php-format
610
- #| msgid "Total"
611
- msgid "Total %s"
612
- msgstr "Celkem"
613
-
614
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:993
615
- msgid "Request invoice"
616
- msgstr ""
617
-
618
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:43
619
- #, fuzzy
620
- #| msgid "Customer note"
621
- msgid "Customer credit note"
622
- msgstr "Poznámka zákazníka"
623
-
624
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:44
625
- msgid ""
626
- "Customer credit note emails can be sent to customers containing their PDF "
627
- "Credit Note."
628
- msgstr ""
629
-
630
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:50
631
- msgid "Credit note for order {order_number} from {order_date}"
632
- msgstr ""
633
-
634
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:51
635
- msgid "Credit note for order {order_number}"
636
- msgstr ""
637
-
638
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:149
639
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:158
640
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:149
641
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:158
642
- #, php-format
643
- msgid "Defaults to %s"
644
- msgstr ""
645
-
646
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:155
647
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:155
648
- msgid "Email heading"
649
- msgstr ""
650
-
651
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:164
652
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:164
653
- msgid "Email type"
654
- msgstr ""
655
-
656
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:166
657
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:166
658
- msgid "Choose which format of email to send."
659
- msgstr ""
660
-
661
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:43
662
- msgid "Customer invoice reminder"
663
- msgstr ""
664
-
665
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:44
666
- msgid ""
667
- "Customer invoice reminder emails can be sent to customers containing their "
668
- "order information and payment links."
669
- msgstr ""
670
-
671
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:49
672
- msgid "Invoice reminder for order {order_number} from {order_date}"
673
- msgstr ""
674
-
675
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:50
676
- msgid "Invoice reminder for order {order_number}"
677
- msgstr ""
678
-
679
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:35
680
- msgid "Credit Note"
681
- msgstr ""
682
-
683
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:46
684
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:40
685
- msgid "Ship to:"
686
- msgstr ""
687
-
688
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:61
689
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:59
690
- msgid "Product"
691
- msgstr ""
692
-
693
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:71
694
- msgid "Price"
695
- msgstr ""
696
-
697
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:135
698
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:127
699
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:109
700
- #, php-format
701
- msgid "Note from customer: %s"
702
- msgstr ""
703
-
704
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:140
705
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:132
706
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:114
707
- #, php-format
708
- msgid "Note to customer: %s"
709
- msgstr ""
710
-
711
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:152
712
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:314
713
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:144
714
- msgid "Zero rated for VAT as customer has supplied EU VAT number"
715
- msgstr ""
716
-
717
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/footer.php:26
718
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/footer.php:15
719
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/footer.php:12
720
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/footer.php:26
721
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/footer.php:23
722
- #, php-format
723
- msgid "%1$s of %2$s"
724
- msgstr ""
725
-
726
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:39
727
- #, php-format
728
- msgid "Credit Note #: %s"
729
- msgstr ""
730
-
731
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:41
732
- #, fuzzy, php-format
733
- #| msgid "Order Date: %s"
734
- msgid "Date: %s"
735
- msgstr "Datum objednávky: %s"
736
-
737
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:45
738
- #, php-format
739
- msgid "Invoice #: %s"
740
- msgstr ""
741
-
742
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:47
743
- #, php-format
744
- msgid "Invoice Date: %s"
745
- msgstr ""
746
-
747
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:51
748
- #, fuzzy, php-format
749
- #| msgid "Order #%d - %s"
750
- msgid "Order #: %s"
751
- msgstr "Objednávka #%d - %s"
752
-
753
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:53
754
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:38
755
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:37
756
- #, php-format
757
- msgid "Order Date: %s"
758
- msgstr "Datum objednávky: %s"
759
-
760
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:57
761
- #, php-format
762
- msgid "Payment Method: %s"
763
- msgstr ""
764
-
765
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:64
766
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:681
767
- #, php-format
768
- msgid "Purchase Order Number: %s"
769
- msgstr "Číslo objednávky: %s"
770
-
771
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:73
772
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:663
773
- #, php-format
774
- msgid "VAT Number: %s"
775
- msgstr "DIČ: %s"
776
-
777
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/customer-credit-note.php:25
778
- #, fuzzy
779
- #| msgid "Order date"
780
- msgid "Order:"
781
- msgstr "Datum objednávky"
782
-
783
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:23
784
- #, fuzzy, php-format
785
- #| msgid "Order Number: %s"
786
- msgid "Order number: %s"
787
- msgstr "Číslo objednávky: %s"
788
-
789
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:24
790
- #, fuzzy, php-format
791
- #| msgid "Order Date: %s"
792
- msgid "Order date: %s"
793
- msgstr "Datum objednávky: %s"
794
-
795
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:9
796
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:11
797
- msgid "Invoice to"
798
- msgstr "Fakturační adresa"
799
-
800
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:14
801
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:16
802
- #, php-format
803
- msgid "Phone: %s"
804
- msgstr "Telefon: %s"
805
-
806
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:19
807
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:23
808
- msgid "Ship to"
809
- msgstr "Doručovací adresa"
810
-
811
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:30
812
- msgid "Global Invoice"
813
- msgstr "Globální faktura"
814
-
815
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:53
816
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:458
817
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:57
818
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:55
819
- msgid "SKU"
820
- msgstr "Číslo zboží"
821
-
822
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:66
823
- msgid "VAT"
824
- msgstr "DPH"
825
-
826
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:89
827
- #, php-format
828
- msgid "Order #%d - %s"
829
- msgstr "Objednávka #%d - %s"
830
-
831
- #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:103
832
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:409
833
- msgid "Settings"
834
- msgstr "Nastavení"
835
-
836
- #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:104
837
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:62
838
- msgid "Support"
839
- msgstr "Podpora"
840
-
841
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-document.php:150
842
- msgid "Paid"
843
- msgstr "Placeno"
844
-
845
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:491
846
- msgid "Subtotal:"
847
- msgstr ""
848
-
849
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:506
850
- msgid "Discount:"
851
- msgstr ""
852
-
853
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:521
854
- msgid "Shipping:"
855
- msgstr ""
856
-
857
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:594
858
- msgid "Total:"
859
- msgstr ""
860
-
861
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:861
862
- #, php-format
863
- msgid "%s of %s"
864
- msgstr "%s z %s"
865
-
866
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:100
867
- msgid "Invoices"
868
- msgstr "Faktury"
869
-
870
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:164
871
- #, php-format
872
- msgid ""
873
- "If you like <strong>WooCommerce PDF Invoices</strong> please leave us a <a "
874
- "href=\"%s\">★★★★★</a> rating. A huge thank you in advance!"
875
- msgstr ""
876
-
877
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:173
878
- #, php-format
879
- msgid "Version %s"
880
- msgstr "Verze %s"
881
-
882
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
883
- #, fuzzy
884
- #| msgid "Select a year"
885
- msgid "Select all"
886
- msgstr "Vyberte rok"
887
-
888
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
889
- #, fuzzy
890
- #| msgid "Select a month"
891
- msgid "Select none"
892
- msgstr "Vyberte měsíc"
893
-
894
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:25
895
- msgid "General"
896
- msgstr "Obecné"
897
-
898
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:41
899
- msgid "Email Options"
900
- msgstr "Možnosti e-mailu"
901
-
902
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:42
903
- #, php-format
904
- msgid ""
905
- "The PDF invoice will be generated when WooCommerce sends the corresponding "
906
- "email. The email should be <a href=\"%1$s\">enabled</a> in order to "
907
- "automatically generate the PDF invoice. Want to attach PDF documents to many "
908
- "more email types? Take a look at %2$s."
909
- msgstr ""
910
-
911
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:45
912
- msgid "Download Options"
913
- msgstr "Možnosti stahování"
914
-
915
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:48
916
- msgid "Cloud Storage Options"
917
- msgstr "Možnosti cloudového úložiště"
918
-
919
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:49
920
- #, php-format
921
- msgid ""
922
- "Sign-up at <a href=\"%1$s\">Email It In</a> to send invoices to your "
923
- "Dropbox, OneDrive, Google Drive or Egnyte and enter your account below."
924
- msgstr ""
925
-
926
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:52
927
- msgid "Interface Options"
928
- msgstr ""
929
-
930
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:55
931
- msgid "Debug Options"
932
- msgstr "Možnosti debugování"
933
-
934
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:80
935
- msgid "New order"
936
- msgstr ""
937
-
938
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:85
939
- msgid "Order on-hold"
940
- msgstr "Objednat dočasně"
941
-
942
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:90
943
- msgid "Processing order"
944
- msgstr "Objednávka se zpracovává"
945
-
946
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:95
947
- msgid "Completed order"
948
- msgstr "Objednávka je dokončená"
949
-
950
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:100
951
- msgid "Customer invoice"
952
- msgstr "Zákaznická faktura"
953
-
954
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:114
955
- msgid "Disable for free products"
956
- msgstr ""
957
-
958
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:116
959
- msgid ""
960
- "Skip automatic PDF invoice generation for orders containing only free "
961
- "products."
962
- msgstr ""
963
-
964
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:124
965
- msgid "View PDF"
966
- msgstr "Prohlédnout PDF"
967
-
968
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:131
969
- msgid "Download"
970
- msgstr "Stáhnout"
971
-
972
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:132
973
- msgid "Open in new browser tab/window"
974
- msgstr "Otevřít v nové záložce nebo okně prohlížeče"
975
-
976
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:144
977
- msgid "Enable download from my account"
978
- msgstr ""
979
-
980
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:146
981
- msgid ""
982
- "By default PDF is only downloadable when order has been paid, so order "
983
- "status should be Processing or Completed."
984
- msgstr ""
985
-
986
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:159
987
- msgid "Enable Email It In"
988
- msgstr "Povolit Email It In"
989
-
990
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:166
991
- msgid "Email It In account"
992
- msgstr "Účet Email It In"
993
-
994
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:171
995
- #, php-format
996
- msgid "Get your account from your %1$s <a href=\"%2$s\">user account</a>."
997
- msgstr ""
998
-
999
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:182
1000
- msgid "Enable Invoice Number column"
1001
- msgstr ""
1002
-
1003
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:183
1004
- msgid "Display invoice numbers on Shop Order page."
1005
- msgstr ""
1006
-
1007
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:195
1008
- msgid "Enable mPDF debugging"
1009
- msgstr "Povolit mPDF debugování"
1010
-
1011
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:196
1012
- msgid "Enable if you aren't able to create an invoice."
1013
- msgstr ""
1014
-
1015
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:25
1016
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:101
1017
- msgid "Template"
1018
- msgstr "Šablona"
1019
-
1020
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:43
1021
- msgid "General Options"
1022
- msgstr "Obecné nastavení"
1023
-
1024
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:44
1025
- #, php-format
1026
- msgid ""
1027
- "Want to customize the template? The <a href=\"%s\">FAQ</a> will give you a "
1028
- "brief description."
1029
- msgstr ""
1030
-
1031
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:47
1032
- msgid "Invoice Number Options"
1033
- msgstr "Nastavení číslování faktur"
1034
-
1035
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:50
1036
- msgid "Packing Slips Options"
1037
- msgstr ""
1038
-
1039
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:51
1040
- msgid ""
1041
- "Packing slips are <strong>only available</strong> when using minimal "
1042
- "template."
1043
- msgstr ""
1044
-
1045
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:54
1046
- msgid "Header Options"
1047
- msgstr "Nastavení záhlaví"
1048
-
1049
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:55
1050
- msgid "The header will be visible on every page."
1051
- msgstr ""
1052
-
1053
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:58
1054
- msgid "Body Options"
1055
- msgstr "Nastavení těla faktury"
1056
-
1057
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:59
1058
- msgid "Configuration options for the body of the template. ."
1059
- msgstr ""
1060
-
1061
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:62
1062
- msgid "Footer Options"
1063
- msgstr "Nastavení zápatí"
1064
-
1065
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:63
1066
- msgid "The footer will be visible on every page."
1067
- msgstr "Zápatí bude na všech stránkách"
1068
-
1069
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:66
1070
- msgid "Table Content"
1071
- msgstr ""
1072
-
1073
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:67
1074
- msgid "Enable or disable the columns."
1075
- msgstr "Povolit nebo zakázat sloupce."
1076
-
1077
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:106
1078
- #, php-format
1079
- msgid "Create a custom template by copying it from %1$s to %2$s."
1080
- msgstr ""
1081
-
1082
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:108
1083
- #, php-format
1084
- msgid ""
1085
- "<strong>Note:</strong> The %1$s template will probably no longer be "
1086
- "supported in future versions, consider using the %2$s template."
1087
- msgstr ""
1088
-
1089
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:116
1090
- msgid "Color theme"
1091
- msgstr "Barevné téma"
1092
-
1093
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:132
1094
- msgid "Display theme text in black color"
1095
- msgstr ""
1096
-
1097
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:134
1098
- msgid ""
1099
- "Enable if you've set the color theme to white or some other light color."
1100
- msgstr ""
1101
-
1102
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:142
1103
- msgid "Date format"
1104
- msgstr "Formát datumu"
1105
-
1106
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:147
1107
- #, php-format
1108
- msgid "<a href=\"%s\">Format</a> of invoice date and order date."
1109
- msgstr ""
1110
-
1111
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:159
1112
- msgid "Display prices including tax"
1113
- msgstr "Ceny zobrazovat včetně DPH"
1114
-
1115
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:161
1116
- msgid ""
1117
- "Line item totals will be including tax. <br/><b>Note</b>: Subtotal will "
1118
- "still be excluding tax, so disable it within the visible columns section."
1119
- msgstr ""
1120
- "Řádky součtů budou obsahovat DPH.<br/><b>Poznámka</b>: Mezisoučet bude stále "
1121
- "bez DPH, takže jej odstraňte v nastavení viditelných sloupců."
1122
-
1123
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:174
1124
- msgid "Shipping taxable"
1125
- msgstr "Dopravně podléhá DPH"
1126
-
1127
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:176
1128
- msgid "Enable to display subtotal including shipping."
1129
- msgstr "Povolit zobrazení mezisoučtu včetně dopravného."
1130
-
1131
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:189
1132
- msgid "Mark invoice as paid"
1133
- msgstr "Označit fakturu jako zaplacenou"
1134
-
1135
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:191
1136
- msgid "Invoice will be watermarked when order has been paid."
1137
- msgstr "Faktura bude označena vodotiskem, pokud bude objednávka zaplacena."
1138
-
1139
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:204
1140
- msgid "Disable Packing Slips"
1141
- msgstr ""
1142
-
1143
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:211
1144
- msgid "Company name"
1145
- msgstr "Jméno firmy"
1146
-
1147
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:222
1148
- msgid "Company logo"
1149
- msgstr "Logo firmy"
1150
-
1151
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:227
1152
- #, php-format
1153
- msgid ""
1154
- "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> or "
1155
- "choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href=\"%3$s"
1156
- "\" target=\"_blank\">File URL</a>."
1157
- msgstr ""
1158
-
1159
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:233
1160
- msgid "Company address"
1161
- msgstr "Adresa firmy"
1162
-
1163
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:238
1164
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:249
1165
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:271
1166
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:310
1167
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:322
1168
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:333
1169
- #, php-format
1170
- msgid "Allowed HTML tags: %s."
1171
- msgstr ""
1172
-
1173
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:244
1174
- msgid "Company details"
1175
- msgstr "Detaily o firmě"
1176
-
1177
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:255
1178
- msgid "Title"
1179
- msgstr "Nadpis"
1180
-
1181
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:260
1182
- msgid "Change the name of the invoice."
1183
- msgstr "Změnit označení faktury."
1184
-
1185
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:261
1186
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:853
1187
- msgid "Invoice"
1188
- msgstr "Faktura"
1189
-
1190
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:266
1191
- msgid "Thank you text"
1192
- msgstr "Text pro poděkování"
1193
-
1194
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:272
1195
- msgid "Visible in big colored bar directly after invoice total."
1196
- msgstr ""
1197
-
1198
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:283
1199
- msgid "Show customers shipping address"
1200
- msgstr ""
1201
-
1202
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:285
1203
- msgid ""
1204
- "Customers shipping address won't be visible when order has only virtual "
1205
- "products."
1206
- msgstr ""
1207
-
1208
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:298
1209
- msgid "Show customer notes"
1210
- msgstr "Zobrazit poznámky zákazníka"
1211
-
1212
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:305
1213
- msgid "Terms & conditions, policies etc."
1214
- msgstr "Obchodní podmínky, záruky apod."
1215
-
1216
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:311
1217
- #, php-format
1218
- msgid ""
1219
- "Visible below customer notes and above footer. Want to attach additional "
1220
- "pages to the invoice? Take a look at <a href=\"%1$s\">%2$s</a> plugin."
1221
- msgstr ""
1222
-
1223
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:317
1224
- msgid "Left footer column."
1225
- msgstr "Levý sloupec zápatí"
1226
-
1227
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:328
1228
- msgid "Right footer column."
1229
- msgstr "Pravý sloupec zápatí"
1230
-
1231
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:339
1232
- msgid "Type"
1233
- msgstr "Typ"
1234
-
1235
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:346
1236
- msgid "WooCommerce order number"
1237
- msgstr "Objednací číslo WooCommerce"
1238
-
1239
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:347
1240
- msgid "Sequential number"
1241
- msgstr "Postupné číslování"
1242
-
1243
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:359
1244
- msgid "Reset invoice counter"
1245
- msgstr "Vynulovat počítadlo číslování faktur"
1246
-
1247
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:367
1248
- msgid "Next"
1249
- msgstr "Další"
1250
-
1251
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:372
1252
- msgid "Next invoice number when resetting counter."
1253
- msgstr ""
1254
-
1255
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:374
1256
- msgid ""
1257
- "<b>Note:</b> Only available for Sequential numbering. All PDF invoices with "
1258
- "invoice number greater then next invoice number will be deleted!"
1259
- msgstr ""
1260
-
1261
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:384
1262
- msgid "Digits"
1263
- msgstr "Počet číslic"
1264
-
1265
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:441
1266
- msgid "Reset yearly"
1267
- msgstr ""
1268
-
1269
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:443
1270
- msgid "Automatically reset invoice numbers on new year's day."
1271
- msgstr ""
1272
-
1273
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:445
1274
- msgid ""
1275
- "<b>Note</b>: You will have to generate all invoices again when changing "
1276
- "option."
1277
- msgstr ""
1278
-
1279
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:482
1280
- msgid "Tax (item)"
1281
- msgstr "DPH (za položku)"
1282
-
1283
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:494
1284
- msgid "Tax (total)"
1285
- msgstr "DPH (celkem)"
1286
-
1287
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:564
1288
- msgid ""
1289
- "Company logo not found. Upload the image to the Media Library and try again."
1290
- msgstr ""
1291
-
1292
- #: woocommerce-pdf-invoices/includes/admin/views/html-activation-notice.php:16
1293
- #, php-format
1294
- msgid ""
1295
- "The settings of WooCommerce PDF Invoices are available <a href=\"%1$s\">on "
1296
- "this page</a>."
1297
- msgstr ""
1298
-
1299
- #: woocommerce-pdf-invoices/includes/admin/views/html-deactivation-notice.php:19
1300
- #, php-format
1301
- msgid ""
1302
- "Before we deactivate WooCommerce PDF Invoices, would you care to <a href="
1303
- "\"%1$s\" target=\"_blank\">let us know why</a> so we can improve it for you? "
1304
- "<a href=\"%2$s\">No, deactivate now</a>."
1305
- msgstr ""
1306
-
1307
- #: woocommerce-pdf-invoices/includes/admin/views/html-rate-notice.php:18
1308
- #, php-format
1309
- msgid ""
1310
- "Hi%1$s! You're using <b>WooCommerce PDF Invoices</b> for some time now and "
1311
- "we would appreciate your <a href=\"%2$s\" target=\"_blank\">★★★★★</a> "
1312
- "rating. It will support future development big-time."
1313
- msgstr ""
1314
-
1315
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:2
1316
- msgid "WooCommerce PDF Invoices Premium"
1317
- msgstr "WooCommerce PDF Invoices Premium"
1318
-
1319
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:4
1320
- msgid ""
1321
- "This plugin offers a premium version which comes with the following features:"
1322
- msgstr "Tento plugin je dostupný i v prémiové verzi, která nabízí:"
1323
-
1324
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:5
1325
- msgid ""
1326
- "Attach PDF invoices to many more email types including third party plugins."
1327
- msgstr ""
1328
-
1329
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:6
1330
- msgid ""
1331
- "Send credit notes and cancelled PDF invoices when refunding or cancelling "
1332
- "order."
1333
- msgstr ""
1334
-
1335
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:7
1336
- msgid ""
1337
- "Fully customize the table content by modifying line item columns and total "
1338
- "rows."
1339
- msgstr ""
1340
-
1341
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:8
1342
- msgid ""
1343
- "Automatically send PDF invoices as a reminder configurable within a specific "
1344
- "period of time."
1345
- msgstr ""
1346
-
1347
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:9
1348
- msgid ""
1349
- "Let customers decide if they would like to get a PDF invoice on checkout."
1350
- msgstr ""
1351
-
1352
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:10
1353
- msgid "Change the font of the PDF invoices."
1354
- msgstr ""
1355
-
1356
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:12
1357
- msgid ""
1358
- "Generate PDF invoices in multiple languages (WPML and Polylang compatible)."
1359
- msgstr ""
1360
-
1361
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:13
1362
- msgid "Bulk generate PDF invoices."
1363
- msgstr ""
1364
-
1365
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:14
1366
- msgid "Bulk export and/or download PDF invoices."
1367
- msgstr ""
1368
-
1369
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:15
1370
- msgid "Bill periodically by generating and sending global invoices."
1371
- msgstr "Fakturujte periodicky pomocí generování a posílání globálních faktur. "
1372
-
1373
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:16
1374
- msgid "Add additional PDF's to PDF invoices."
1375
- msgstr ""
1376
-
1377
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:17
1378
- msgid "Send PDF invoices to multiple recipients."
1379
- msgstr ""
1380
-
1381
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:18
1382
- #, php-format
1383
- msgid "Attach invoices to <a href=\"%s\">WooCommerce Subscriptions</a> emails."
1384
- msgstr ""
1385
- "Připojte faktury k e-mailům to <a href=\"%s\">WooCommerce Subscriptions</a> ."
1386
-
1387
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:20
1388
- msgid "Learn more"
1389
- msgstr "Dozvědět se více"
1390
-
1391
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:23
1392
- msgid "Stay up-to-date"
1393
- msgstr "Zůstaňte na vlně"
1394
-
1395
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:27
1396
- msgid ""
1397
- "We're constantly developing new features, stay up-to-date by subscribing to "
1398
- "our newsletter."
1399
- msgstr ""
1400
- "Stále pracujeme na nových možnostech, informujte se o novinkách odebíráním "
1401
- "našeho newsletteru."
1402
-
1403
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:33
1404
- msgid "Your email address"
1405
- msgstr "Vaše e-mailová adresa"
1406
-
1407
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:39
1408
- msgid "Signup"
1409
- msgstr "Přihlásit se "
1410
-
1411
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:42
1412
- msgid "No spam, ever. Unsubscribe at any time"
1413
- msgstr "Už nikdy žádný spam! Kdykoliv se můžete odhlásit"
1414
-
1415
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:51
1416
- msgid "About"
1417
- msgstr "O pluginu"
1418
-
1419
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:53
1420
- msgid ""
1421
- "This plugin is an open source project wich aims to fill the invoicing gap of "
1422
- "<a href=\"http://www.woothemes.com/woocommerce\">WooCommerce</a>."
1423
- msgstr ""
1424
- "Tento pluginu je open source projekt, který zajišťuje fakturování objednávek "
1425
- "<a href=\"http://www.woothemes.com/woocommerce\">WooCommerce</a>."
1426
-
1427
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:56
1428
- #, php-format
1429
- msgid "Version: %s"
1430
- msgstr ""
1431
-
1432
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:58
1433
- #, php-format
1434
- msgid "Author: %s"
1435
- msgstr ""
1436
-
1437
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:64
1438
- #, php-format
1439
- msgid ""
1440
- "We will never ask for donations, but to guarantee future development, we do "
1441
- "need your support. Please show us your appreciation by leaving a <a href="
1442
- "\"%1$s\">★★★★★</a> rating and vote for <a href=\"%2$s\">works</a>."
1443
- msgstr ""
1444
-
1445
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:88
1446
- msgid ""
1447
- "Checkout this amazing free WooCommerce PDF Invoices plugin for WordPress!"
1448
- msgstr ""
1449
- "Podporuji tento úžasný bezplatný WooCommerce PDF Invoices plugin pro "
1450
- "WordPress!"
1451
-
1452
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:93
1453
- msgid "Need Help?"
1454
- msgstr "Potřebujete pomoc?"
1455
-
1456
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:95
1457
- msgid "Frequently Asked Questions"
1458
- msgstr "Nejčastější dotazy"
1459
-
1460
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:96
1461
- msgid "Support forum"
1462
- msgstr "Fórum podpory"
1463
-
1464
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:97
1465
- msgid "Request a feature"
1466
- msgstr "Navrh na nové možnosti"
1467
-
1468
- #: woocommerce-pdf-invoices/includes/class-invoice.php:99
1469
- #, fuzzy
1470
- #| msgid "Invoice"
1471
- msgid "Invoice #:"
1472
- msgstr "Faktura"
1473
-
1474
- #: woocommerce-pdf-invoices/includes/class-invoice.php:103
1475
- #, fuzzy
1476
- #| msgid "Invoice to"
1477
- msgid "Invoice Date:"
1478
- msgstr "Fakturační adresa"
1479
-
1480
- #: woocommerce-pdf-invoices/includes/class-invoice.php:107
1481
- #, fuzzy
1482
- #| msgid "Order Date: %s"
1483
- msgid "Order Date:"
1484
- msgstr "Datum objednávky: %s"
1485
-
1486
- #: woocommerce-pdf-invoices/includes/class-invoice.php:111
1487
- #, fuzzy
1488
- #| msgid "Order Number: %s"
1489
- msgid "Order Number:"
1490
- msgstr "Číslo objednávky: %s"
1491
-
1492
- #: woocommerce-pdf-invoices/includes/class-invoice.php:115
1493
- #, fuzzy
1494
- #| msgid "<b>Payment method</b> %s"
1495
- msgid "Payment Method:"
1496
- msgstr "<b>Platební metoda</b> %s"
1497
-
1498
- #: woocommerce-pdf-invoices/includes/class-packing-slip.php:66
1499
- msgid "View packing slip"
1500
- msgstr ""
1501
-
1502
- #: woocommerce-pdf-invoices/includes/compatibility/class-wc-core-compatibility.php:245
1503
- msgid "WooCommerce"
1504
- msgstr ""
1505
-
1506
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:37
1507
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:39
1508
- #, php-format
1509
- msgid "Order Number: %s"
1510
- msgstr "Číslo objednávky: %s"
1511
-
1512
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:268
1513
- msgid "VAT 0%"
1514
- msgstr ""
1515
-
1516
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:284
1517
- msgid "Refunded"
1518
- msgstr "Vráceno"
1519
-
1520
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:300
1521
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:305
1522
- msgid "Customer note"
1523
- msgstr "Poznámka zákazníka"
1524
-
1525
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:29
1526
- msgid "Packing Slip"
1527
- msgstr ""
1528
-
1529
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:44
1530
- #, php-format
1531
- msgid "Shipping Method: %s"
1532
- msgstr ""
1533
-
1534
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:626
1535
- msgid "Invoice No."
1536
- msgstr ""
1537
-
1538
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:678
1539
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:700
1540
- msgid "PDF Invoice"
1541
- msgstr "PDF faktura"
1542
-
1543
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:715
1544
- msgid "Create"
1545
- msgstr "Vytvořit"
1546
-
1547
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:721
1548
- #, fuzzy
1549
- #| msgid "Order Date: %s"
1550
- msgid "Date:"
1551
- msgstr "Datum objednávky: %s"
1552
-
1553
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:725
1554
- #, fuzzy
1555
- #| msgid "VAT Number: %s"
1556
- msgid "Number:"
1557
- msgstr "DIČ: %s"
1558
-
1559
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:734
1560
- msgid "Sent?"
1561
- msgstr ""
1562
-
1563
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:744
1564
- msgid "Debug"
1565
- msgstr ""
1566
-
1567
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:758
1568
- msgid "Update"
1569
- msgstr ""
1570
-
1571
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:763
1572
- #, fuzzy
1573
- #| msgid "Are you sure to delete the invoice?"
1574
- msgid "Are you sure to delete the PDF invoice?"
1575
- msgstr "Opravdu chcete fakturu zrušit?"
1576
-
1577
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:767
1578
- #, php-format
1579
- msgid ""
1580
- "You will be missing a PDF invoice with invoice number %d and thus creating "
1581
- "an accounting gap!"
1582
- msgstr ""
1583
-
1584
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:770
1585
- #, php-format
1586
- msgid "Instead consider using Cancelled PDF invoices with %s."
1587
- msgstr ""
1588
-
1589
- #~ msgid "Send customer invoices directly to suppliers and others."
1590
- #~ msgstr "Posílejte zákaznické faktury přímo dodavatelům a dalším subjektům."
1591
-
1592
- #~ msgid "Active"
1593
- #~ msgstr "Aktivní"
1594
-
1595
- #~ msgid "Inactive"
1596
- #~ msgstr "Neaktivní"
1597
-
1598
- #, fuzzy
1599
- #~| msgid "Cancel"
1600
- #~ msgid "Cancelled"
1601
- #~ msgstr "Zrušit"
1602
-
1603
- #~ msgid "Visible Columns"
1604
- #~ msgstr "Zobrazené sloupce"
1605
-
1606
- #~ msgid "Invoiced on:"
1607
- #~ msgstr "Fakturováno dne:"
1608
-
1609
- #~ msgid "Invoice number:"
1610
- #~ msgstr "Číslo faktury:"
1611
-
1612
- #~ msgid "Completed Renewal Order"
1613
- #~ msgstr "Dokončena obnova objednávky"
1614
-
1615
- #~ msgid "Customer Renewal Invoice"
1616
- #~ msgstr "Zákaznická obnovená faktura"
1617
-
1618
- #~ msgid ""
1619
- #~ "Generate global invoices on Orders page by selecting multiple orders and "
1620
- #~ "applying action or let customers generate periodically from My Account "
1621
- #~ "page."
1622
- #~ msgstr ""
1623
- #~ "Generovat globální faktury na stránce Objednávky výběrem objednávek a "
1624
- #~ "volbou akce nebo nechat zákazníky generovat periodicky na stránce Můj "
1625
- #~ "účet."
1626
-
1627
- #~ msgid "Something went wrong."
1628
- #~ msgstr "Něco je špatně."
1629
-
1630
- #~ msgid "Start date type"
1631
- #~ msgstr "Typ počátečního data."
1632
-
1633
- #~ msgid ""
1634
- #~ "Custom date will add a checkout field to the Checkout page, so a customer "
1635
- #~ "can decide from which date to start counting."
1636
- #~ msgstr ""
1637
- #~ "Jiné nastavení data přidá do potvrzovací stránky zaškrtávací box, takže "
1638
- #~ "se zákazník může rozhodnout od kterého data začne odpočet."
1639
-
1640
- #~ msgid "Custom date"
1641
- #~ msgstr "Nastavitelné datum"
1642
-
1643
- #~ msgid "Custom date is editable on My Account page"
1644
- #~ msgstr "Nastavitelné datum lze změnit na stránce Můj účet"
1645
-
1646
- #~ msgid "Custom date is required"
1647
- #~ msgstr "Nastavitelné datum je povinné"
1648
-
1649
- #~ msgid "Custom date field name"
1650
- #~ msgstr "Jméno pole pro Nastavitelné datum"
1651
-
1652
- #~ msgid ""
1653
- #~ "Send a reminder email with invoice after a specific period of time. The "
1654
- #~ "period until the actual sending date, uses the order date as a starting "
1655
- #~ "point to count from. The email template called Customer Invoice will be "
1656
- #~ "used. By default an email will only be sent, if the order has the "
1657
- #~ "Processing status."
1658
- #~ msgstr ""
1659
- #~ "Poslat e-mail s upozorněním a fakturou po zadaném počtu dnů. Období do "
1660
- #~ "aktuálního data odeslání používá datum vytvoření objednávky jako "
1661
- #~ "počáteční datum od kterého se období počítá. Bude použita šablona faktury "
1662
- #~ "nazvaná Zákaznická faktura (Costumer Invoice). Obecně e-mail bude odeslán "
1663
- #~ "pouze pokud bude objednávka ve stavu, kdy se vyřizuje. "
1664
-
1665
- #~ msgid "YYYY-MM-DD"
1666
- #~ msgstr "YYYY-MM-DD"
1667
-
1668
- #~ msgid "Save"
1669
- #~ msgstr "Uložit"
1670
-
1671
- #~ msgid "Reminder scheduled on:"
1672
- #~ msgstr "Upozornění nastavit na:"
1673
-
1674
- #~ msgid "%s is required."
1675
- #~ msgstr "%s je vyžadován."
1676
-
1677
- #~ msgid "Order changed successfully."
1678
- #~ msgstr "Objednávka bylo úspěšně změněna."
1679
-
1680
- #~ msgid "PDF Invoice Reminder"
1681
- #~ msgstr "Připomenutí PDF faktury"
1682
-
1683
- #~ msgid "Enable mPDF debugging if you aren't able to create an invoice."
1684
- #~ msgstr "Povolit mPDF debugování pokud není možno vytvořit fakturu."
1685
-
1686
- #~ msgid "<b>Version</b>: "
1687
- #~ msgstr "<b>Verze</b>: "
1688
-
1689
- #~ msgid ""
1690
- #~ "<b>Author</b>: <a href=\"https://github.com/baselbers\">Bas Elbers</a>"
1691
- #~ msgstr ""
1692
- #~ "<b>Autor</b>: <a href=\"https://github.com/baselbers\">Bas Elbers</a>"
1693
-
1694
- #~ msgid ""
1695
- #~ "We will never ask for donations, but to guarantee future development, we "
1696
- #~ "do need your support. Please show us your appreciation by leaving a <a "
1697
- #~ "href=\"https://wordpress.org/support/view/plugin-reviews/woocommerce-pdf-"
1698
- #~ "invoices?rate=5#postform\">★★★★★</a> rating and vote for <a href="
1699
- #~ "\"https://wordpress.org/plugins/woocommerce-pdf-invoices/\">works</a>."
1700
- #~ msgstr ""
1701
- #~ "Nikdy Vás nebudeme žádat o dary, ale abychom byli schopni dále pokračovat "
1702
- #~ "ve vývoji, potřebujeme vaši podporu. Prokažte prosím svoji náklonnost "
1703
- #~ "oceněním <a href=\"https://wordpress.org/support/view/plugin-reviews/"
1704
- #~ "woocommerce-pdf-invoices?rate=5#postform\">★★★★★</a> a hlasujte pro naše "
1705
- #~ "<a href=\"https://wordpress.org/plugins/woocommerce-pdf-invoices/\">díla</"
1706
- #~ "a>."
1707
-
1708
- #~ msgid "Please select more then one order."
1709
- #~ msgstr "Vyberte prosím víc než jednu objednávku."
1710
-
1711
- #~ msgid "Purchase email"
1712
- #~ msgstr "Potvrzovací e-mail"
1713
-
1714
- #~ msgid ""
1715
- #~ "Enter your email account from <a href=\"http://wcpdfinvoices.com"
1716
- #~ "\">wcpdfinvoices.com</a>."
1717
- #~ msgstr ""
1718
- #~ "Zadejte svůj e-mailový účet od <a href=\"http://wcpdfinvoices.com"
1719
- #~ "\">wcpdfinvoices.com</a> ."
1720
-
1721
- #~ msgid ""
1722
- #~ "Enter your license key from <a href=\"http://wcpdfinvoices.com"
1723
- #~ "\">wcpdfinvoices.com</a> to receive updates."
1724
- #~ msgstr ""
1725
- #~ "Zadejte své licenční klíč od <a href=\"http://wcpdfinvoices.com"
1726
- #~ "\">wcpdfinvoices.com</a> k zasílání novinek."
1727
-
1728
- #~ msgid ""
1729
- #~ "Enable customer generation<br/><div class=\"bewpi-notes\">Let customers "
1730
- #~ "generate a global invoice from there account</div>"
1731
- #~ msgstr ""
1732
- #~ "Povolit generování zákazníkem<br/><div class=\"bewpi-notes\">Povolit "
1733
- #~ "zákazníkům generovat globální faktury z jejich účtu</div>"
1734
-
1735
- #~ msgid "These are the general template options."
1736
- #~ msgstr "Toto jsou základní nastavení šablony"
1737
-
1738
- #~ msgid "These are the invoice number options."
1739
- #~ msgstr "Toto je nastavení číslování faktury"
1740
-
1741
- #~ msgid "[prefix]"
1742
- #~ msgstr "[prefix]"
1743
-
1744
- #~ msgid "[suffix]"
1745
- #~ msgstr "[suffix]"
1746
-
1747
- #~ msgid "Invoice %s (PDF)"
1748
- #~ msgstr "Faktura %s (PDF)"
1749
-
1750
- #~ msgid ""
1751
- #~ "<p>Woops, could not activate <a href=\"%s\"><strong>WooCommerce PDF "
1752
- #~ "Invoices Premium</strong></a>. It requires <a href=\"%s"
1753
- #~ "\"><strong>WooCommerce PDF Invoices</strong></a> to be installed.</p>"
1754
- #~ msgstr ""
1755
- #~ "<p>Ajaj, nemůžeme aktivovat <a href=\"%s\"><strong>WooCommerce PDF "
1756
- #~ "Invoices Premium</strong></a>. Musíte mít napřed nainstalovaný plugin <a "
1757
- #~ "href=\"%s\"><strong>WooCommerce PDF Invoices</strong></a> .</p>"
1758
-
1759
- #~ msgid ""
1760
- #~ "<p><a href=\"%s\"><strong>WooCommerce PDF Invoices Premium</strong></a> "
1761
- #~ "requires <a href=\"%s\"><strong>WooCommerce PDF Invoices</strong></a>. "
1762
- #~ "Please install the free version (%s+) and try again.</p>"
1763
- #~ msgstr ""
1764
- #~ "<p><a href=\"%s\"><strong>WooCommerce PDF Invoices Premium</strong></a> "
1765
- #~ "vyžaduje <a href=\"%s\"><strong>WooCommerce PDF Invoices</strong></a>. "
1766
- #~ "Nainstalujte prosím napřed bezplatnou verzi (%s+) a zkuste to znovu.</p>"
1767
-
1768
- #~ msgid "Displayed in upper-right corner near logo."
1769
- #~ msgstr "Zobrazí se v pravém horním rohu vedle loga."
1770
-
1771
- #~ msgid "Displayed below company address."
1772
- #~ msgstr "Zobrazí se pod adresou firmy."
1773
-
1774
- #~ msgid "Displayed in big colored bar directly after invoice total."
1775
- #~ msgstr ""
1776
- #~ "Zobrazí se ve velkém barevném pruhu hned pod celkovou částkou faktury."
1777
-
1778
- #~ msgid "Thank you for your purchase!"
1779
- #~ msgstr "Děkujeme za Váš nákup!"
1780
-
1781
- #~ msgid ""
1782
- #~ "Displayed below customer notes and above footer. Want to attach "
1783
- #~ "additional pages to the invoice? Take a look at the <a href=\"%s"
1784
- #~ "\">Premium</a> plugin."
1785
- #~ msgstr ""
1786
- #~ "Zobrazí se pod poznámkami zákazníka nad zápatím. Chcete připojit další "
1787
- #~ "stránky k faktuře? Koukněte na verzi pluginu <a href=\"%s\">Premium</a>."
1788
-
1789
- #~ msgid "Items will be shipped within 2 days."
1790
- #~ msgstr "Zboží bude odesláno do 2 dnů."
1791
-
1792
- #~ msgid "Leave empty to show page numbering."
1793
- #~ msgstr "Nechte prázdné pro číslování stránek."
1794
-
1795
- #~ msgid "Add additional PDF's to customer invoices."
1796
- #~ msgstr "Přidejte dodatečné PDF soubory k zákaznickým fakturám."
1797
-
1798
- #~ msgid "Attachment Options"
1799
- #~ msgstr "Možnosti příloh"
1800
-
1801
- #~ msgid "Attach a PDF to the invoice."
1802
- #~ msgstr "Připojit k faktuře PDF."
1803
-
1804
- #~ msgid "Remove logo"
1805
- #~ msgstr "Odebrat logo"
1806
-
1807
- #~ msgid "File is invalid and contains either '..' or './'."
1808
- #~ msgstr "Soubor je neplatný, obsahuje znaky '..' nebo './'."
1809
-
1810
- #~ msgid "File is invalid and contains ':' after the first character."
1811
- #~ msgstr "Soubor je neplatný, obsahuje ':' po prvním znaku."
1812
-
1813
- #~ msgid "File should be less then 2MB."
1814
- #~ msgstr "Soubor má být menší než 2MB."
1815
-
1816
- #~ msgid "Email us"
1817
- #~ msgstr "Napište nám"
1818
-
1819
- #~ msgid ""
1820
- #~ "Invoice with invoice number %s not found. First create invoice and try "
1821
- #~ "again."
1822
- #~ msgstr ""
1823
- #~ "Faktura s číslem %s nebyla nalezena. Nejdříve fakturu vytvořte a pak to "
1824
- #~ "zkuste znovu."
1825
-
1826
- #~ msgid "Reset on 1st of january"
1827
- #~ msgstr "Vynulovat vždy 1. ledna"
1828
-
1829
- #~ msgid ""
1830
- #~ "Reset the invoice counter and start counting from given invoice number."
1831
- #~ "<br/><b>Note:</b> Only available for Sequential numbering. All PDF "
1832
- #~ "invoices will be deleted and need to be manually created again! Value "
1833
- #~ "will be editable by selecting checkbox."
1834
- #~ msgstr ""
1835
- #~ "Vynulovat počítadlo číslování faktur a začít počítat od nastaveného čísla."
1836
- #~ "<br/><b>Poznámka:</b> Dostupné pouze při povoleném postupném číslování "
1837
- #~ "faktur. Všechny PDF faktury budou vymazány a budete muset všechny "
1838
- #~ "vytvořit ručně znovu! Hodnotu můžete změnit po zaškrtnutí boxu."
1839
-
1840
- #~ msgid "Attach to Email"
1841
- #~ msgstr "Připojit k e-mailu"
1842
-
1843
- #~ msgid "Processing Renewal Order"
1844
- #~ msgstr "Obnovuje se objednávka"
1845
-
1846
- #~ msgid "Do not attach"
1847
- #~ msgstr "Nepřipojovat"
1848
-
1849
- #~ msgid "Attach to New Renewal Order Email"
1850
- #~ msgstr "Připojit k e-mailu o obnovené objednávce"
1851
-
1852
- #~ msgid "Woocommerce Subscriptions Email Options"
1853
- #~ msgstr "Možnosti e-mailů předplatného WooCommerce Subscriptions"
1854
-
1855
- #~ msgid ""
1856
- #~ "Attach PDF invoice to <a href=\"http://www.woothemes.com/products/"
1857
- #~ "woocommerce-subscriptions/\">WooCommerce Subscriptions</a> email. Plugin "
1858
- #~ "should be activated in order to work."
1859
- #~ msgstr ""
1860
- #~ "P5ipojit PDF fakturu k e-mailu<a href=\"http://www.woothemes.com/products/"
1861
- #~ "woocommerce-subscriptions/\">WooCommerce Subscriptions</a>. Plugin musí "
1862
- #~ "být pro správnou funkci povolen."
1863
-
1864
- #~ msgid "Allowed HTML tags: "
1865
- #~ msgstr "Jsou povoleny HTML tagy:"
1866
-
1867
- #~ msgid "Attach to New order Email"
1868
- #~ msgstr "Připojit k e-mailu o nové objednávce"
1869
-
1870
- #~ msgid "Enable download from account"
1871
- #~ msgstr "Povolit stahování z účtu"
1872
-
1873
- #~ msgid ""
1874
- #~ "<br/><div class=\"bewpi-notes\">Let customers download invoice from "
1875
- #~ "account page.</div>"
1876
- #~ msgstr ""
1877
- #~ "<br/><div class=\"bewpi-notes\">Povolit zákazníkovi stahovat fakturu z "
1878
- #~ "jeho účtu.</div>"
1879
-
1880
- #~ msgid "Get your account from your Email It In %suser account%s."
1881
- #~ msgstr "Použít tvůj účet z účtu Email It In %suser account%s."
1882
-
1883
- #~ msgid ""
1884
- #~ "Signup at %s to send invoices to your Dropbox, OneDrive, Google Drive or "
1885
- #~ "Egnyte and enter your account below."
1886
- #~ msgstr ""
1887
- #~ "Přihlásit se k %s k posílání faktur do služeb Dropbox, OneDrive, Google "
1888
- #~ "Drive nebo Egnyte a vložit níže údaje k účtu."
1889
-
1890
- #~ msgid "%sFormat%s of invoice date and order date."
1891
- #~ msgstr "%sFormát%s data vytvoření faktury a data objednávky. "
1892
-
1893
- #~ msgid ""
1894
- #~ "Allowed placeholders: %s %s %s %s %s %s.<br/>%sNote:%s %s is required and "
1895
- #~ "slashes aren't supported."
1896
- #~ msgstr ""
1897
- #~ "Povolené kódy: %s %s %s %s %s %s.<br/>%sPoznámka:%s %s je povinné a "
1898
- #~ "lomítka nejsou podporována."
1899
-
1900
- #~ msgid "The header will be visible on every page. "
1901
- #~ msgstr "Záhlaví bude na všech stránkách"
1902
-
1903
- #~ msgid ""
1904
- #~ "<b>Hint</b>: Use <code>[payment_method]</code> placeholder to display the "
1905
- #~ "order payment method or <code>[shipping_method]</code> to display "
1906
- #~ "shipping method."
1907
- #~ msgstr ""
1908
- #~ "<b>Tip </b>: Použijte kód <code>[payment_method]</code> pro zobrazení "
1909
- #~ "metody platby nebo <code>[shipping_method]</code> pro zobrazení metody "
1910
- #~ "přepravy."
1911
-
1912
- #~ msgid ""
1913
- #~ "Alrighty then! <a href=\"%s\">Let's start configuring <strong>WooCommerce "
1914
- #~ "PDF Invoices</strong></a>."
1915
- #~ msgstr ""
1916
- #~ "Dobře tedy! <a href=\"%s\">Pojďme začít s konfigurací pluginu "
1917
- #~ "<strong>WooCommerce PDF Invoices</strong></a>."
1918
-
1919
- #~ msgid "Invalid order ID"
1920
- #~ msgstr "Neplatné číslo objednávky"
1921
-
1922
- #~ msgid "Access denied"
1923
- #~ msgstr "Přístup odepřen"
1924
-
1925
- #~ msgid ""
1926
- #~ "If you like <strong>WooCommerce PDF Invoices</strong> please leave us a "
1927
- #~ "%s★★★★★%s rating. A huge thank you in advance!"
1928
- #~ msgstr ""
1929
- #~ "Pokud se Vám líbí plugin <strong>WooCommerce PDF Invoices</strong> dejte "
1930
- #~ "nám prosím hodnocení %s★★★★★%s . Předem moc děkujeme!"
1931
-
1932
- #~ msgid "Cancel invoice"
1933
- #~ msgstr "Zrušit fakturu"
1934
-
1935
- #~ msgid "Create invoice"
1936
- #~ msgstr "Vytvořit fakturu"
1937
-
1938
- #~ msgid ""
1939
- #~ "You are working with <b>WooCommerce PDF Invoices</b> for some time now. "
1940
- #~ "We really need your ★★★★★ rating. It will support future development big-"
1941
- #~ "time. A huge thanks in advance and keep up the good work! <br /> <a "
1942
- #~ "href='%s' target='_blank'>Yes, will do it right away!</a> - <a "
1943
- #~ "href='%s'>No, already done it!</a>"
1944
- #~ msgstr ""
1945
- #~ "Pracujete s <b>WooCommerce PDF Invoices</b> už nějakou dobu. Opravdu "
1946
- #~ "potřebujeme Vaše hodnocení ★★★★★. Pomůže nám to v pokračování dalšího "
1947
- #~ "masivního vývoje. Předem hodně děkujeme a pokračujeme v dobrém díle! <br /"
1948
- #~ "> <a href='%s' target='_blank'>Ano, udělejte to zrovna teď!</a> - <a "
1949
- #~ "href='%s'>Ne, už jsem to udělal!</a>"
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: WooCommerce PDF Invoices\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2017-11-29 20:36+0100\n"
11
+ "PO-Revision-Date: 2017-11-29 20:36+0100\n"
12
+ "Last-Translator: \n"
13
+ "Language-Team: \n"
14
+ "Language: cs_CZ\n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "X-Generator: Poedit 2.0.4\n"
19
+ "X-Poedit-SourceCharset: UTF-8\n"
20
+ "X-Poedit-KeywordsList: __;_e\n"
21
+ "X-Poedit-Basepath: ../..\n"
22
+ "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
23
+ "X-Poedit-SearchPath-0: woocommerce-pdf-invoices\n"
24
+ "X-Poedit-SearchPath-1: woocommerce-pdf-invoices-premium\n"
25
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
26
+
27
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:25
28
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:427
29
+ msgid "Premium"
30
+ msgstr "Premium"
31
+
32
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:99
33
+ #, php-format
34
+ msgid ""
35
+ "Whoops, your license for %1$s has expired. To keep receiving updates and "
36
+ "premium support, we offer you a 30%% discount when you <a href=\"%2$s\" "
37
+ "target=\"_blank\">renew your license</a>."
38
+ msgstr ""
39
+
40
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:225
41
+ msgid "Premium Options"
42
+ msgstr "Volby verze Premium"
43
+
44
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:228
45
+ msgid "Template Options"
46
+ msgstr ""
47
+
48
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:231
49
+ msgid "Supplier Options"
50
+ msgstr "Možnosti dodavatelů"
51
+
52
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:232
53
+ msgid "Send customer invoice automatically to your supplier(s)."
54
+ msgstr "Poslat automaticky zákaznickou fakturu Vašemu dodavateli."
55
+
56
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:235
57
+ #, fuzzy
58
+ #| msgid "Header Options"
59
+ msgid "Credit Note Options"
60
+ msgstr "Nastavení záhlaví"
61
+
62
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:238
63
+ #, fuzzy
64
+ #| msgid "Invoice Number Options"
65
+ msgid "Credit Note Number Options"
66
+ msgstr "Nastavení číslování faktur"
67
+
68
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:241
69
+ msgid "Global Invoice Options"
70
+ msgstr "Možnosti globální fakturace"
71
+
72
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:242
73
+ msgid ""
74
+ "Generate global invoices on Orders page by selecting multiple orders and "
75
+ "applying action or let customers generate periodically from My Account page. "
76
+ "<strong>Global invoices are only supported when using the micro template!</"
77
+ "strong>"
78
+ msgstr ""
79
+
80
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:245
81
+ msgid "Reminder Options"
82
+ msgstr "Možnosti připomínání"
83
+
84
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:246
85
+ #, php-format
86
+ msgid ""
87
+ "Automatically send PDF invoice after a specific period of time. When "
88
+ "enabled, a new <a href=\"%s\">Customer invoice reminder</a> email will be "
89
+ "used to send the PDF invoice."
90
+ msgstr ""
91
+
92
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:249
93
+ msgid "Request Invoice Options"
94
+ msgstr ""
95
+
96
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:250
97
+ msgid ""
98
+ "Let a customer decide to generate a PDF invoice. When enabled, a checkbox "
99
+ "field will be added on the checkout page so customers can request a PDF "
100
+ "invoice."
101
+ msgstr ""
102
+
103
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:267
104
+ msgid "Activation email"
105
+ msgstr ""
106
+
107
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:272
108
+ #, php-format
109
+ msgid "Enter your activation email from %s."
110
+ msgstr ""
111
+
112
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:278
113
+ msgid "License"
114
+ msgstr "Licence"
115
+
116
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:283
117
+ #, php-format
118
+ msgid "Enter your license key from %s to receive updates."
119
+ msgstr ""
120
+
121
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:289
122
+ msgid "PDF attachment"
123
+ msgstr "Příloha PDF"
124
+
125
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:294
126
+ msgid "Add for example a PDF with your terms & conditions."
127
+ msgstr "Přidejte například soubor PDF s obchodními podmínkami."
128
+
129
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:300
130
+ msgid "Suppliers"
131
+ msgstr "Dodavatelé"
132
+
133
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:305
134
+ #, fuzzy
135
+ #| msgid ""
136
+ #| "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by "
137
+ #| "simply adding there Email It In email addresses. Email addresses need to "
138
+ #| "be seperated by comma's."
139
+ msgid ""
140
+ "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by simply "
141
+ "adding their Email It In email addresses. Email addresses need to be "
142
+ "seperated by comma's."
143
+ msgstr ""
144
+ "<b>Tip</b>: Posílejte faktury do zákaznických cloudových úložišť snadno "
145
+ "přidáním e-mailových adres Email It In. E-mailové adresy oddělujte čárkami."
146
+
147
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:311
148
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:72
149
+ msgid "Attach to Emails"
150
+ msgstr ""
151
+
152
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:322
153
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:400
154
+ msgid "Prefix"
155
+ msgstr ""
156
+
157
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:333
158
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:411
159
+ msgid "Suffix"
160
+ msgstr ""
161
+
162
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:344
163
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:422
164
+ msgid "Format"
165
+ msgstr "Formát"
166
+
167
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:349
168
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:427
169
+ #, php-format
170
+ msgid "Available placeholders: %s."
171
+ msgstr ""
172
+
173
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:351
174
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:429
175
+ #, php-format
176
+ msgid "<b>Note:</b> %s is required and slashes aren't supported."
177
+ msgstr ""
178
+
179
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:363
180
+ msgid "Enable customer generation"
181
+ msgstr ""
182
+
183
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:365
184
+ msgid "Let customers generate a global invoice from their account"
185
+ msgstr ""
186
+
187
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:373
188
+ msgid "Customer generation period"
189
+ msgstr "Perioda zákaznického generování"
190
+
191
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:378
192
+ msgid ""
193
+ "Should your customers have the ability to generate a global invoice by month "
194
+ "or by year?<br/><strong>Note:</strong> Customer generation should be enabled."
195
+ msgstr ""
196
+ "Mám mít zákazník možnost generovat globální faktury měsíčně nebo ročně?<br/"
197
+ "><strong>Poznámka:</strong> Zákaznické generování má být povolené."
198
+
199
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:380
200
+ msgid "Month"
201
+ msgstr "Měsíc"
202
+
203
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:381
204
+ msgid "Year"
205
+ msgstr "Rok"
206
+
207
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:393
208
+ msgid "Send to your Cloud Storage"
209
+ msgstr "Poslat do cloudového úložiště"
210
+
211
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:405
212
+ msgid "Email to customer"
213
+ msgstr "E-mail zákazníkovi"
214
+
215
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:417
216
+ msgid "Email to supplier(s)"
217
+ msgstr "E-mail dodavatelům"
218
+
219
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:424
220
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:146
221
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:146
222
+ msgid "Email subject"
223
+ msgstr "Předmět e-mailu"
224
+
225
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:429
226
+ msgid "Subject for the global invoice email."
227
+ msgstr "Předmět globálního fakturačního e-mailu"
228
+
229
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:436
230
+ msgid "Email message"
231
+ msgstr "Obsah e-mailu"
232
+
233
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:441
234
+ msgid "Message for the global invoice email."
235
+ msgstr "Obsah globálního fakturačního e-mailu."
236
+
237
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:453
238
+ msgid "Enable reminder"
239
+ msgstr "Povolit upozorňování"
240
+
241
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:460
242
+ #, fuzzy
243
+ #| msgid "Days until reminder"
244
+ msgid "Days until due date"
245
+ msgstr "Počet dnů do upozornění"
246
+
247
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:465
248
+ #, fuzzy
249
+ #| msgid "Number of days from starting date until reminder date."
250
+ msgid "Number of days from order or invoice date until due date."
251
+ msgstr "Počet dnů od počátečního data do data upozornění."
252
+
253
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:474
254
+ msgid "Days until reminder"
255
+ msgstr "Počet dnů do upozornění"
256
+
257
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:479
258
+ msgid "Number of days from order or invoice date until reminder date."
259
+ msgstr ""
260
+
261
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:488
262
+ msgid "Date type"
263
+ msgstr ""
264
+
265
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:493
266
+ msgid "Choose the type of date to count from."
267
+ msgstr ""
268
+
269
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:495
270
+ msgid "Order date"
271
+ msgstr "Datum objednávky"
272
+
273
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:496
274
+ msgid "Invoice date"
275
+ msgstr ""
276
+
277
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:508
278
+ msgid "Enable Request Invoice."
279
+ msgstr ""
280
+
281
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:590
282
+ msgid "Activation email cannot be empty."
283
+ msgstr ""
284
+
285
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:630
286
+ msgid ""
287
+ "Something went wrong with the activation of your license. Contact the author "
288
+ "for support."
289
+ msgstr ""
290
+
291
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:651
292
+ msgid "File to large."
293
+ msgstr "Soubor je příliš velký."
294
+
295
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:657
296
+ msgid "Only PDF files are allowed."
297
+ msgstr "Jsou povoleny pouze soubory PDF."
298
+
299
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:682
300
+ msgid "Remove"
301
+ msgstr "Odebrat"
302
+
303
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:684
304
+ msgid "Choose"
305
+ msgstr "Zvolit"
306
+
307
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-credit-note.php:12
308
+ #, php-format
309
+ msgid "PDF Credit Note %1$s"
310
+ msgstr ""
311
+
312
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:10
313
+ msgid "Generate Global Invoice"
314
+ msgstr "Vygenerovat globální fakturu"
315
+
316
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:20
317
+ msgid "Select a month"
318
+ msgstr "Vyberte měsíc"
319
+
320
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:33
321
+ msgid "Select a year"
322
+ msgstr "Vyberte rok"
323
+
324
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:47
325
+ msgid "Generate invoice"
326
+ msgstr "Vygenerovat fakturu"
327
+
328
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:16
329
+ #, fuzzy
330
+ #| msgid "Global invoice successfully generated! "
331
+ msgid "Global invoice successfully generated!"
332
+ msgstr "Globální faktura byla úspěšně vygenerována!"
333
+
334
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
335
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:663
336
+ msgid "View invoice"
337
+ msgstr "Prohlédnout fakturu"
338
+
339
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
340
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:751
341
+ msgid "View"
342
+ msgstr "Prohlédnout"
343
+
344
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:37
345
+ msgid "Bulk Export PDF Invoices"
346
+ msgstr ""
347
+
348
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:38
349
+ msgid "Bulk Export PDF Packing Slips"
350
+ msgstr ""
351
+
352
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:85
353
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:73
354
+ msgid "No order selected."
355
+ msgstr ""
356
+
357
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:37
358
+ msgid "Bulk Generate PDF Invoices"
359
+ msgstr ""
360
+
361
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:38
362
+ msgid "Bulk Generate PDF Packing Slips"
363
+ msgstr ""
364
+
365
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:135
366
+ msgid "PDF Credit Notes"
367
+ msgstr ""
368
+
369
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:283
370
+ #, php-format
371
+ msgid ""
372
+ "<a href=\"%1$s\" class=\"%2$s\" target=\"%3$s\">PDF Credit Note (%4$s)</a> "
373
+ "for Refund #%5$s."
374
+ msgstr ""
375
+
376
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:289
377
+ #, php-format
378
+ msgid "created on %1$s at %2$s"
379
+ msgstr ""
380
+
381
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:291
382
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:775
383
+ msgid "Delete"
384
+ msgstr ""
385
+
386
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:297
387
+ msgid "There are no credit notes yet."
388
+ msgstr ""
389
+
390
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:309
391
+ msgid "Create PDF Credit Notes for selected refund(s)"
392
+ msgstr ""
393
+
394
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:339
395
+ msgid "Credit note"
396
+ msgstr ""
397
+
398
+ #: woocommerce-pdf-invoices-premium/includes/class-install.php:91
399
+ #, php-format
400
+ msgid ""
401
+ "%1$s requires %2$s to be activated. Install and activate it and you should "
402
+ "be good to go! :)"
403
+ msgstr ""
404
+
405
+ #: woocommerce-pdf-invoices-premium/includes/class-install.php:100
406
+ #, php-format
407
+ msgid ""
408
+ "%1$s requires at least %2$s. Update it and get the best out of both "
409
+ "plugins. :)"
410
+ msgstr ""
411
+
412
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:228
413
+ msgid "Invalid request"
414
+ msgstr "Neplatný požadavek"
415
+
416
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:248
417
+ msgid "No orders found."
418
+ msgstr "Nebyly nalezeny žádné objednávky."
419
+
420
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:295
421
+ msgid "Generate global invoice"
422
+ msgstr "Generovat globální fakturu"
423
+
424
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:323
425
+ msgid ""
426
+ "Could not generate the invoice. Global invoices are only supported when "
427
+ "using the micro template."
428
+ msgstr ""
429
+
430
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:336
431
+ msgid "Select more then one order to generate a global invoice."
432
+ msgstr ""
433
+
434
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
435
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
436
+ msgid "Yes"
437
+ msgstr "Ano"
438
+
439
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
440
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
441
+ msgid "No"
442
+ msgstr "Ne"
443
+
444
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:83
445
+ msgid "Reminder on:"
446
+ msgstr ""
447
+
448
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:88
449
+ msgid "Reminder sent?"
450
+ msgstr "Posláno upozornění?"
451
+
452
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:296
453
+ #, fuzzy
454
+ #| msgid "Order Date: %s"
455
+ msgid "Due Date:"
456
+ msgstr "Datum objednávky: %s"
457
+
458
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:61
459
+ msgid ""
460
+ "Instead consider creating a Cancelled PDF invoice by changing the order "
461
+ "status to Cancelled."
462
+ msgstr ""
463
+
464
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:116
465
+ msgid "Advanced Table Content"
466
+ msgstr ""
467
+
468
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:117
469
+ msgid ""
470
+ "Enable Advanced Table Content settings to fully customize line item columns "
471
+ "and total rows. When enabled the standard Table Content settings will be "
472
+ "ignored. When using a custom template, make sure to update it! Micro "
473
+ "template is not supported."
474
+ msgstr ""
475
+
476
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:145
477
+ msgid "Enable Advanced Table Content"
478
+ msgstr ""
479
+
480
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:157
481
+ msgid "Show SKU as meta data"
482
+ msgstr ""
483
+
484
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:164
485
+ msgid "Display tax totals"
486
+ msgstr ""
487
+
488
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:172
489
+ msgid "Itemized"
490
+ msgstr ""
491
+
492
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:173
493
+ msgid "As a single total"
494
+ msgstr ""
495
+
496
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:179
497
+ #, fuzzy
498
+ #| msgid "Left footer column."
499
+ msgid "Line item columns"
500
+ msgstr "Levý sloupec zápatí"
501
+
502
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:188
503
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:393
504
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:48
505
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:403
506
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:53
507
+ msgid "Description"
508
+ msgstr "Popis"
509
+
510
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:193
511
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:198
512
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:401
513
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:405
514
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:57
515
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:60
516
+ msgid "Cost"
517
+ msgstr "Cena za kus"
518
+
519
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:203
520
+ msgid "Quantity"
521
+ msgstr ""
522
+
523
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:213
524
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:218
525
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:281
526
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:286
527
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:413
528
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:417
529
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:77
530
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:235
531
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:405
532
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:71
533
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:275
534
+ msgid "Total"
535
+ msgstr "Celkem"
536
+
537
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:227
538
+ #, fuzzy
539
+ #| msgid "Total"
540
+ msgid "Total rows"
541
+ msgstr "Celkem"
542
+
543
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:236
544
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:261
545
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:173
546
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:506
547
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:207
548
+ msgid "Discount"
549
+ msgstr "Sleva"
550
+
551
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:241
552
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:266
553
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:182
554
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:200
555
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:518
556
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:215
557
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:231
558
+ msgid "Shipping"
559
+ msgstr "Dopravné"
560
+
561
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:246
562
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:271
563
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:212
564
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:242
565
+ msgid "Fee"
566
+ msgstr "Poplatky"
567
+
568
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:251
569
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:256
570
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:191
571
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:470
572
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:223
573
+ msgid "Subtotal"
574
+ msgstr "Mezisoučet"
575
+
576
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:397
577
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:65
578
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:59
579
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:404
580
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:62
581
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:63
582
+ msgid "Qty"
583
+ msgstr "Počet kusů"
584
+
585
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:607
586
+ #, fuzzy, php-format
587
+ #| msgid "Subtotal"
588
+ msgid "Subtotal %s"
589
+ msgstr "Mezisoučet"
590
+
591
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:625
592
+ #, fuzzy, php-format
593
+ #| msgid "Discount"
594
+ msgid "Discount %s"
595
+ msgstr "Sleva"
596
+
597
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:652
598
+ #, fuzzy, php-format
599
+ #| msgid "Shipping"
600
+ msgid "Shipping %s"
601
+ msgstr "Dopravné"
602
+
603
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:685
604
+ #, php-format
605
+ msgid "%1$s %2$s"
606
+ msgstr ""
607
+
608
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:866
609
+ #, fuzzy, php-format
610
+ #| msgid "Total"
611
+ msgid "Total %s"
612
+ msgstr "Celkem"
613
+
614
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:993
615
+ msgid "Request invoice"
616
+ msgstr ""
617
+
618
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:43
619
+ #, fuzzy
620
+ #| msgid "Customer note"
621
+ msgid "Customer credit note"
622
+ msgstr "Poznámka zákazníka"
623
+
624
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:44
625
+ msgid ""
626
+ "Customer credit note emails can be sent to customers containing their PDF "
627
+ "Credit Note."
628
+ msgstr ""
629
+
630
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:50
631
+ msgid "Credit note for order {order_number} from {order_date}"
632
+ msgstr ""
633
+
634
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:51
635
+ msgid "Credit note for order {order_number}"
636
+ msgstr ""
637
+
638
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:149
639
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:158
640
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:149
641
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:158
642
+ #, php-format
643
+ msgid "Defaults to %s"
644
+ msgstr ""
645
+
646
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:155
647
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:155
648
+ msgid "Email heading"
649
+ msgstr ""
650
+
651
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:164
652
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:164
653
+ msgid "Email type"
654
+ msgstr ""
655
+
656
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:166
657
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:166
658
+ msgid "Choose which format of email to send."
659
+ msgstr ""
660
+
661
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:43
662
+ msgid "Customer invoice reminder"
663
+ msgstr ""
664
+
665
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:44
666
+ msgid ""
667
+ "Customer invoice reminder emails can be sent to customers containing their "
668
+ "order information and payment links."
669
+ msgstr ""
670
+
671
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:49
672
+ msgid "Invoice reminder for order {order_number} from {order_date}"
673
+ msgstr ""
674
+
675
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:50
676
+ msgid "Invoice reminder for order {order_number}"
677
+ msgstr ""
678
+
679
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:35
680
+ msgid "Credit Note"
681
+ msgstr ""
682
+
683
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:46
684
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:40
685
+ msgid "Ship to:"
686
+ msgstr ""
687
+
688
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:61
689
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:59
690
+ msgid "Product"
691
+ msgstr ""
692
+
693
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:71
694
+ msgid "Price"
695
+ msgstr ""
696
+
697
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:135
698
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:127
699
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:109
700
+ #, php-format
701
+ msgid "Note from customer: %s"
702
+ msgstr ""
703
+
704
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:140
705
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:132
706
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:114
707
+ #, php-format
708
+ msgid "Note to customer: %s"
709
+ msgstr ""
710
+
711
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:152
712
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:314
713
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:144
714
+ msgid "Zero rated for VAT as customer has supplied EU VAT number"
715
+ msgstr ""
716
+
717
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/footer.php:26
718
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/footer.php:15
719
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/footer.php:12
720
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/footer.php:26
721
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/footer.php:23
722
+ #, php-format
723
+ msgid "%1$s of %2$s"
724
+ msgstr ""
725
+
726
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:39
727
+ #, php-format
728
+ msgid "Credit Note #: %s"
729
+ msgstr ""
730
+
731
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:41
732
+ #, fuzzy, php-format
733
+ #| msgid "Order Date: %s"
734
+ msgid "Date: %s"
735
+ msgstr "Datum objednávky: %s"
736
+
737
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:45
738
+ #, php-format
739
+ msgid "Invoice #: %s"
740
+ msgstr ""
741
+
742
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:47
743
+ #, php-format
744
+ msgid "Invoice Date: %s"
745
+ msgstr ""
746
+
747
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:51
748
+ #, fuzzy, php-format
749
+ #| msgid "Order #%d - %s"
750
+ msgid "Order #: %s"
751
+ msgstr "Objednávka #%d - %s"
752
+
753
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:53
754
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:38
755
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:37
756
+ #, php-format
757
+ msgid "Order Date: %s"
758
+ msgstr "Datum objednávky: %s"
759
+
760
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:57
761
+ #, php-format
762
+ msgid "Payment Method: %s"
763
+ msgstr ""
764
+
765
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:64
766
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:681
767
+ #, php-format
768
+ msgid "Purchase Order Number: %s"
769
+ msgstr "Číslo objednávky: %s"
770
+
771
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:73
772
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:663
773
+ #, php-format
774
+ msgid "VAT Number: %s"
775
+ msgstr "DIČ: %s"
776
+
777
+ #: woocommerce-pdf-invoices-premium/includes/templates/emails/customer-credit-note.php:25
778
+ #, fuzzy
779
+ #| msgid "Order date"
780
+ msgid "Order:"
781
+ msgstr "Datum objednávky"
782
+
783
+ #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:23
784
+ #, fuzzy, php-format
785
+ #| msgid "Order Number: %s"
786
+ msgid "Order number: %s"
787
+ msgstr "Číslo objednávky: %s"
788
+
789
+ #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:24
790
+ #, fuzzy, php-format
791
+ #| msgid "Order Date: %s"
792
+ msgid "Order date: %s"
793
+ msgstr "Datum objednávky: %s"
794
+
795
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:9
796
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:11
797
+ msgid "Invoice to"
798
+ msgstr "Fakturační adresa"
799
+
800
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:14
801
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:16
802
+ #, php-format
803
+ msgid "Phone: %s"
804
+ msgstr "Telefon: %s"
805
+
806
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:19
807
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:23
808
+ msgid "Ship to"
809
+ msgstr "Doručovací adresa"
810
+
811
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:30
812
+ msgid "Global Invoice"
813
+ msgstr "Globální faktura"
814
+
815
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:53
816
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:458
817
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:57
818
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:55
819
+ msgid "SKU"
820
+ msgstr "Číslo zboží"
821
+
822
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:66
823
+ msgid "VAT"
824
+ msgstr "DPH"
825
+
826
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:89
827
+ #, php-format
828
+ msgid "Order #%d - %s"
829
+ msgstr "Objednávka #%d - %s"
830
+
831
+ #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:103
832
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:409
833
+ msgid "Settings"
834
+ msgstr "Nastavení"
835
+
836
+ #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:104
837
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:62
838
+ msgid "Support"
839
+ msgstr "Podpora"
840
+
841
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-document.php:150
842
+ msgid "Paid"
843
+ msgstr "Placeno"
844
+
845
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:491
846
+ msgid "Subtotal:"
847
+ msgstr ""
848
+
849
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:506
850
+ msgid "Discount:"
851
+ msgstr ""
852
+
853
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:521
854
+ msgid "Shipping:"
855
+ msgstr ""
856
+
857
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:594
858
+ msgid "Total:"
859
+ msgstr ""
860
+
861
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:861
862
+ #, php-format
863
+ msgid "%s of %s"
864
+ msgstr "%s z %s"
865
+
866
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:100
867
+ msgid "Invoices"
868
+ msgstr "Faktury"
869
+
870
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:164
871
+ #, php-format
872
+ msgid ""
873
+ "If you like <strong>WooCommerce PDF Invoices</strong> please leave us a <a "
874
+ "href=\"%s\">★★★★★</a> rating. A huge thank you in advance!"
875
+ msgstr ""
876
+
877
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:173
878
+ #, php-format
879
+ msgid "Version %s"
880
+ msgstr "Verze %s"
881
+
882
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
883
+ #, fuzzy
884
+ #| msgid "Select a year"
885
+ msgid "Select all"
886
+ msgstr "Vyberte rok"
887
+
888
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
889
+ #, fuzzy
890
+ #| msgid "Select a month"
891
+ msgid "Select none"
892
+ msgstr "Vyberte měsíc"
893
+
894
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:25
895
+ msgid "General"
896
+ msgstr "Obecné"
897
+
898
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:41
899
+ msgid "Email Options"
900
+ msgstr "Možnosti e-mailu"
901
+
902
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:42
903
+ #, php-format
904
+ msgid ""
905
+ "The PDF invoice will be generated when WooCommerce sends the corresponding "
906
+ "email. The email should be <a href=\"%1$s\">enabled</a> in order to "
907
+ "automatically generate the PDF invoice. Want to attach PDF documents to many "
908
+ "more email types? Take a look at %2$s."
909
+ msgstr ""
910
+
911
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:45
912
+ msgid "Download Options"
913
+ msgstr "Možnosti stahování"
914
+
915
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:48
916
+ msgid "Cloud Storage Options"
917
+ msgstr "Možnosti cloudového úložiště"
918
+
919
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:49
920
+ #, php-format
921
+ msgid ""
922
+ "Sign-up at <a href=\"%1$s\">Email It In</a> to send invoices to your "
923
+ "Dropbox, OneDrive, Google Drive or Egnyte and enter your account below."
924
+ msgstr ""
925
+
926
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:52
927
+ msgid "Interface Options"
928
+ msgstr ""
929
+
930
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:55
931
+ msgid "Debug Options"
932
+ msgstr "Možnosti debugování"
933
+
934
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:80
935
+ msgid "New order"
936
+ msgstr ""
937
+
938
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:85
939
+ msgid "Order on-hold"
940
+ msgstr "Objednat dočasně"
941
+
942
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:90
943
+ msgid "Processing order"
944
+ msgstr "Objednávka se zpracovává"
945
+
946
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:95
947
+ msgid "Completed order"
948
+ msgstr "Objednávka je dokončená"
949
+
950
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:100
951
+ msgid "Customer invoice"
952
+ msgstr "Zákaznická faktura"
953
+
954
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:114
955
+ msgid "Disable for free products"
956
+ msgstr ""
957
+
958
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:116
959
+ msgid ""
960
+ "Skip automatic PDF invoice generation for orders containing only free "
961
+ "products."
962
+ msgstr ""
963
+
964
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:124
965
+ msgid "View PDF"
966
+ msgstr "Prohlédnout PDF"
967
+
968
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:131
969
+ msgid "Download"
970
+ msgstr "Stáhnout"
971
+
972
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:132
973
+ msgid "Open in new browser tab/window"
974
+ msgstr "Otevřít v nové záložce nebo okně prohlížeče"
975
+
976
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:144
977
+ msgid "Enable download from my account"
978
+ msgstr ""
979
+
980
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:146
981
+ msgid ""
982
+ "By default PDF is only downloadable when order has been paid, so order "
983
+ "status should be Processing or Completed."
984
+ msgstr ""
985
+
986
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:159
987
+ msgid "Enable Email It In"
988
+ msgstr "Povolit Email It In"
989
+
990
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:166
991
+ msgid "Email It In account"
992
+ msgstr "Účet Email It In"
993
+
994
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:171
995
+ #, php-format
996
+ msgid "Get your account from your %1$s <a href=\"%2$s\">user account</a>."
997
+ msgstr ""
998
+
999
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:182
1000
+ msgid "Enable Invoice Number column"
1001
+ msgstr ""
1002
+
1003
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:183
1004
+ msgid "Display invoice numbers on Shop Order page."
1005
+ msgstr ""
1006
+
1007
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:195
1008
+ msgid "Enable mPDF debugging"
1009
+ msgstr "Povolit mPDF debugování"
1010
+
1011
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:196
1012
+ msgid "Enable if you aren't able to create an invoice."
1013
+ msgstr ""
1014
+
1015
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:25
1016
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:101
1017
+ msgid "Template"
1018
+ msgstr "Šablona"
1019
+
1020
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:43
1021
+ msgid "General Options"
1022
+ msgstr "Obecné nastavení"
1023
+
1024
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:44
1025
+ #, php-format
1026
+ msgid ""
1027
+ "Want to customize the template? The <a href=\"%s\">FAQ</a> will give you a "
1028
+ "brief description."
1029
+ msgstr ""
1030
+
1031
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:47
1032
+ msgid "Invoice Number Options"
1033
+ msgstr "Nastavení číslování faktur"
1034
+
1035
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:50
1036
+ msgid "Packing Slips Options"
1037
+ msgstr ""
1038
+
1039
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:51
1040
+ msgid ""
1041
+ "Packing slips are <strong>only available</strong> when using minimal "
1042
+ "template."
1043
+ msgstr ""
1044
+
1045
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:54
1046
+ msgid "Header Options"
1047
+ msgstr "Nastavení záhlaví"
1048
+
1049
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:55
1050
+ msgid "The header will be visible on every page."
1051
+ msgstr ""
1052
+
1053
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:58
1054
+ msgid "Body Options"
1055
+ msgstr "Nastavení těla faktury"
1056
+
1057
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:59
1058
+ msgid "Configuration options for the body of the template. ."
1059
+ msgstr ""
1060
+
1061
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:62
1062
+ msgid "Footer Options"
1063
+ msgstr "Nastavení zápatí"
1064
+
1065
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:63
1066
+ msgid "The footer will be visible on every page."
1067
+ msgstr "Zápatí bude na všech stránkách"
1068
+
1069
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:66
1070
+ msgid "Table Content"
1071
+ msgstr ""
1072
+
1073
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:67
1074
+ msgid "Enable or disable the columns."
1075
+ msgstr "Povolit nebo zakázat sloupce."
1076
+
1077
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:106
1078
+ #, php-format
1079
+ msgid "Create a custom template by copying it from %1$s to %2$s."
1080
+ msgstr ""
1081
+
1082
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:108
1083
+ #, php-format
1084
+ msgid ""
1085
+ "<strong>Note:</strong> The %1$s template will probably no longer be "
1086
+ "supported in future versions, consider using the %2$s template."
1087
+ msgstr ""
1088
+
1089
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:116
1090
+ msgid "Color theme"
1091
+ msgstr "Barevné téma"
1092
+
1093
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:132
1094
+ msgid "Display theme text in black color"
1095
+ msgstr ""
1096
+
1097
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:134
1098
+ msgid ""
1099
+ "Enable if you've set the color theme to white or some other light color."
1100
+ msgstr ""
1101
+
1102
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:142
1103
+ msgid "Date format"
1104
+ msgstr "Formát datumu"
1105
+
1106
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:147
1107
+ #, php-format
1108
+ msgid "<a href=\"%s\">Format</a> of invoice date and order date."
1109
+ msgstr ""
1110
+
1111
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:159
1112
+ msgid "Display prices including tax"
1113
+ msgstr "Ceny zobrazovat včetně DPH"
1114
+
1115
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:161
1116
+ msgid ""
1117
+ "Line item totals will be including tax. <br/><b>Note</b>: Subtotal will "
1118
+ "still be excluding tax, so disable it within the visible columns section."
1119
+ msgstr ""
1120
+ "Řádky součtů budou obsahovat DPH.<br/><b>Poznámka</b>: Mezisoučet bude stále "
1121
+ "bez DPH, takže jej odstraňte v nastavení viditelných sloupců."
1122
+
1123
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:174
1124
+ msgid "Shipping taxable"
1125
+ msgstr "Dopravně podléhá DPH"
1126
+
1127
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:176
1128
+ msgid "Enable to display subtotal including shipping."
1129
+ msgstr "Povolit zobrazení mezisoučtu včetně dopravného."
1130
+
1131
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:189
1132
+ msgid "Mark invoice as paid"
1133
+ msgstr "Označit fakturu jako zaplacenou"
1134
+
1135
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:191
1136
+ msgid "Invoice will be watermarked when order has been paid."
1137
+ msgstr "Faktura bude označena vodotiskem, pokud bude objednávka zaplacena."
1138
+
1139
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:204
1140
+ msgid "Disable Packing Slips"
1141
+ msgstr ""
1142
+
1143
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:211
1144
+ msgid "Company name"
1145
+ msgstr "Jméno firmy"
1146
+
1147
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:222
1148
+ msgid "Company logo"
1149
+ msgstr "Logo firmy"
1150
+
1151
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:227
1152
+ #, php-format
1153
+ msgid ""
1154
+ "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> or "
1155
+ "choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href=\"%3$s"
1156
+ "\" target=\"_blank\">File URL</a>."
1157
+ msgstr ""
1158
+
1159
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:233
1160
+ msgid "Company address"
1161
+ msgstr "Adresa firmy"
1162
+
1163
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:238
1164
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:249
1165
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:271
1166
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:310
1167
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:322
1168
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:333
1169
+ #, php-format
1170
+ msgid "Allowed HTML tags: %s."
1171
+ msgstr ""
1172
+
1173
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:244
1174
+ msgid "Company details"
1175
+ msgstr "Detaily o firmě"
1176
+
1177
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:255
1178
+ msgid "Title"
1179
+ msgstr "Nadpis"
1180
+
1181
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:260
1182
+ msgid "Change the name of the invoice."
1183
+ msgstr "Změnit označení faktury."
1184
+
1185
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:261
1186
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:853
1187
+ msgid "Invoice"
1188
+ msgstr "Faktura"
1189
+
1190
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:266
1191
+ msgid "Thank you text"
1192
+ msgstr "Text pro poděkování"
1193
+
1194
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:272
1195
+ msgid "Visible in big colored bar directly after invoice total."
1196
+ msgstr ""
1197
+
1198
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:283
1199
+ msgid "Show customers shipping address"
1200
+ msgstr ""
1201
+
1202
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:285
1203
+ msgid ""
1204
+ "Customers shipping address won't be visible when order has only virtual "
1205
+ "products."
1206
+ msgstr ""
1207
+
1208
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:298
1209
+ msgid "Show customer notes"
1210
+ msgstr "Zobrazit poznámky zákazníka"
1211
+
1212
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:305
1213
+ msgid "Terms & conditions, policies etc."
1214
+ msgstr "Obchodní podmínky, záruky apod."
1215
+
1216
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:311
1217
+ #, php-format
1218
+ msgid ""
1219
+ "Visible below customer notes and above footer. Want to attach additional "
1220
+ "pages to the invoice? Take a look at <a href=\"%1$s\">%2$s</a> plugin."
1221
+ msgstr ""
1222
+
1223
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:317
1224
+ msgid "Left footer column."
1225
+ msgstr "Levý sloupec zápatí"
1226
+
1227
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:328
1228
+ msgid "Right footer column."
1229
+ msgstr "Pravý sloupec zápatí"
1230
+
1231
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:339
1232
+ msgid "Type"
1233
+ msgstr "Typ"
1234
+
1235
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:346
1236
+ msgid "WooCommerce order number"
1237
+ msgstr "Objednací číslo WooCommerce"
1238
+
1239
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:347
1240
+ msgid "Sequential number"
1241
+ msgstr "Postupné číslování"
1242
+
1243
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:359
1244
+ msgid "Reset invoice counter"
1245
+ msgstr "Vynulovat počítadlo číslování faktur"
1246
+
1247
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:367
1248
+ msgid "Next"
1249
+ msgstr "Další"
1250
+
1251
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:372
1252
+ msgid "Next invoice number when resetting counter."
1253
+ msgstr ""
1254
+
1255
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:374
1256
+ msgid ""
1257
+ "<b>Note:</b> Only available for Sequential numbering. All PDF invoices with "
1258
+ "invoice number greater then next invoice number will be deleted!"
1259
+ msgstr ""
1260
+
1261
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:384
1262
+ msgid "Digits"
1263
+ msgstr "Počet číslic"
1264
+
1265
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:441
1266
+ msgid "Reset yearly"
1267
+ msgstr ""
1268
+
1269
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:443
1270
+ msgid "Automatically reset invoice numbers on new year's day."
1271
+ msgstr ""
1272
+
1273
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:445
1274
+ msgid ""
1275
+ "<b>Note</b>: You will have to generate all invoices again when changing "
1276
+ "option."
1277
+ msgstr ""
1278
+
1279
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:482
1280
+ msgid "Tax (item)"
1281
+ msgstr "DPH (za položku)"
1282
+
1283
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:494
1284
+ msgid "Tax (total)"
1285
+ msgstr "DPH (celkem)"
1286
+
1287
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:564
1288
+ msgid ""
1289
+ "Company logo not found. Upload the image to the Media Library and try again."
1290
+ msgstr ""
1291
+
1292
+ #: woocommerce-pdf-invoices/includes/admin/views/html-activation-notice.php:16
1293
+ #, php-format
1294
+ msgid ""
1295
+ "The settings of WooCommerce PDF Invoices are available <a href=\"%1$s\">on "
1296
+ "this page</a>."
1297
+ msgstr ""
1298
+
1299
+ #: woocommerce-pdf-invoices/includes/admin/views/html-deactivation-notice.php:19
1300
+ #, php-format
1301
+ msgid ""
1302
+ "Before we deactivate WooCommerce PDF Invoices, would you care to <a href="
1303
+ "\"%1$s\" target=\"_blank\">let us know why</a> so we can improve it for you? "
1304
+ "<a href=\"%2$s\">No, deactivate now</a>."
1305
+ msgstr ""
1306
+
1307
+ #: woocommerce-pdf-invoices/includes/admin/views/html-rate-notice.php:18
1308
+ #, php-format
1309
+ msgid ""
1310
+ "Hi%1$s! You're using <b>WooCommerce PDF Invoices</b> for some time now and "
1311
+ "we would appreciate your <a href=\"%2$s\" target=\"_blank\">★★★★★</a> "
1312
+ "rating. It will support future development big-time."
1313
+ msgstr ""
1314
+
1315
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:2
1316
+ msgid "WooCommerce PDF Invoices Premium"
1317
+ msgstr "WooCommerce PDF Invoices Premium"
1318
+
1319
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:4
1320
+ msgid ""
1321
+ "This plugin offers a premium version which comes with the following features:"
1322
+ msgstr "Tento plugin je dostupný i v prémiové verzi, která nabízí:"
1323
+
1324
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:5
1325
+ msgid ""
1326
+ "Attach PDF invoices to many more email types including third party plugins."
1327
+ msgstr ""
1328
+
1329
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:6
1330
+ msgid ""
1331
+ "Send credit notes and cancelled PDF invoices when refunding or cancelling "
1332
+ "order."
1333
+ msgstr ""
1334
+
1335
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:7
1336
+ msgid ""
1337
+ "Fully customize the table content by modifying line item columns and total "
1338
+ "rows."
1339
+ msgstr ""
1340
+
1341
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:8
1342
+ msgid ""
1343
+ "Automatically send PDF invoices as a reminder configurable within a specific "
1344
+ "period of time."
1345
+ msgstr ""
1346
+
1347
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:9
1348
+ msgid ""
1349
+ "Let customers decide if they would like to get a PDF invoice on checkout."
1350
+ msgstr ""
1351
+
1352
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:10
1353
+ msgid "Change the font of the PDF invoices."
1354
+ msgstr ""
1355
+
1356
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:12
1357
+ msgid ""
1358
+ "Generate PDF invoices in multiple languages (WPML and Polylang compatible)."
1359
+ msgstr ""
1360
+
1361
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:13
1362
+ msgid "Bulk generate PDF invoices."
1363
+ msgstr ""
1364
+
1365
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:14
1366
+ msgid "Bulk export and/or download PDF invoices."
1367
+ msgstr ""
1368
+
1369
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:15
1370
+ msgid "Bill periodically by generating and sending global invoices."
1371
+ msgstr "Fakturujte periodicky pomocí generování a posílání globálních faktur. "
1372
+
1373
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:16
1374
+ msgid "Add additional PDF's to PDF invoices."
1375
+ msgstr ""
1376
+
1377
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:17
1378
+ msgid "Send PDF invoices to multiple recipients."
1379
+ msgstr ""
1380
+
1381
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:18
1382
+ #, php-format
1383
+ msgid "Attach invoices to <a href=\"%s\">WooCommerce Subscriptions</a> emails."
1384
+ msgstr ""
1385
+ "Připojte faktury k e-mailům to <a href=\"%s\">WooCommerce Subscriptions</a> ."
1386
+
1387
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:20
1388
+ msgid "Learn more"
1389
+ msgstr "Dozvědět se více"
1390
+
1391
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:23
1392
+ msgid "Stay up-to-date"
1393
+ msgstr "Zůstaňte na vlně"
1394
+
1395
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:27
1396
+ msgid ""
1397
+ "We're constantly developing new features, stay up-to-date by subscribing to "
1398
+ "our newsletter."
1399
+ msgstr ""
1400
+ "Stále pracujeme na nových možnostech, informujte se o novinkách odebíráním "
1401
+ "našeho newsletteru."
1402
+
1403
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:33
1404
+ msgid "Your email address"
1405
+ msgstr "Vaše e-mailová adresa"
1406
+
1407
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:39
1408
+ msgid "Signup"
1409
+ msgstr "Přihlásit se "
1410
+
1411
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:42
1412
+ msgid "No spam, ever. Unsubscribe at any time"
1413
+ msgstr "Už nikdy žádný spam! Kdykoliv se můžete odhlásit"
1414
+
1415
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:51
1416
+ msgid "About"
1417
+ msgstr "O pluginu"
1418
+
1419
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:53
1420
+ msgid ""
1421
+ "This plugin is an open source project wich aims to fill the invoicing gap of "
1422
+ "<a href=\"http://www.woothemes.com/woocommerce\">WooCommerce</a>."
1423
+ msgstr ""
1424
+ "Tento pluginu je open source projekt, který zajišťuje fakturování objednávek "
1425
+ "<a href=\"http://www.woothemes.com/woocommerce\">WooCommerce</a>."
1426
+
1427
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:56
1428
+ #, php-format
1429
+ msgid "Version: %s"
1430
+ msgstr ""
1431
+
1432
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:58
1433
+ #, php-format
1434
+ msgid "Author: %s"
1435
+ msgstr ""
1436
+
1437
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:64
1438
+ #, php-format
1439
+ msgid ""
1440
+ "We will never ask for donations, but to guarantee future development, we do "
1441
+ "need your support. Please show us your appreciation by leaving a <a href="
1442
+ "\"%1$s\">★★★★★</a> rating and vote for <a href=\"%2$s\">works</a>."
1443
+ msgstr ""
1444
+
1445
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:88
1446
+ msgid ""
1447
+ "Checkout this amazing free WooCommerce PDF Invoices plugin for WordPress!"
1448
+ msgstr ""
1449
+ "Podporuji tento úžasný bezplatný WooCommerce PDF Invoices plugin pro "
1450
+ "WordPress!"
1451
+
1452
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:93
1453
+ msgid "Need Help?"
1454
+ msgstr "Potřebujete pomoc?"
1455
+
1456
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:95
1457
+ msgid "Frequently Asked Questions"
1458
+ msgstr "Nejčastější dotazy"
1459
+
1460
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:96
1461
+ msgid "Support forum"
1462
+ msgstr "Fórum podpory"
1463
+
1464
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:97
1465
+ msgid "Request a feature"
1466
+ msgstr "Navrh na nové možnosti"
1467
+
1468
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:99
1469
+ #, fuzzy
1470
+ #| msgid "Invoice"
1471
+ msgid "Invoice #:"
1472
+ msgstr "Faktura"
1473
+
1474
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:103
1475
+ #, fuzzy
1476
+ #| msgid "Invoice to"
1477
+ msgid "Invoice Date:"
1478
+ msgstr "Fakturační adresa"
1479
+
1480
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:107
1481
+ #, fuzzy
1482
+ #| msgid "Order Date: %s"
1483
+ msgid "Order Date:"
1484
+ msgstr "Datum objednávky: %s"
1485
+
1486
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:111
1487
+ #, fuzzy
1488
+ #| msgid "Order Number: %s"
1489
+ msgid "Order Number:"
1490
+ msgstr "Číslo objednávky: %s"
1491
+
1492
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:115
1493
+ #, fuzzy
1494
+ #| msgid "<b>Payment method</b> %s"
1495
+ msgid "Payment Method:"
1496
+ msgstr "<b>Platební metoda</b> %s"
1497
+
1498
+ #: woocommerce-pdf-invoices/includes/class-packing-slip.php:66
1499
+ msgid "View packing slip"
1500
+ msgstr ""
1501
+
1502
+ #: woocommerce-pdf-invoices/includes/compatibility/class-wc-core-compatibility.php:245
1503
+ msgid "WooCommerce"
1504
+ msgstr ""
1505
+
1506
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:37
1507
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:39
1508
+ #, php-format
1509
+ msgid "Order Number: %s"
1510
+ msgstr "Číslo objednávky: %s"
1511
+
1512
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:268
1513
+ msgid "VAT 0%"
1514
+ msgstr ""
1515
+
1516
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:284
1517
+ msgid "Refunded"
1518
+ msgstr "Vráceno"
1519
+
1520
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:300
1521
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:305
1522
+ msgid "Customer note"
1523
+ msgstr "Poznámka zákazníka"
1524
+
1525
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:29
1526
+ msgid "Packing Slip"
1527
+ msgstr ""
1528
+
1529
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:44
1530
+ #, php-format
1531
+ msgid "Shipping Method: %s"
1532
+ msgstr ""
1533
+
1534
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:626
1535
+ msgid "Invoice No."
1536
+ msgstr ""
1537
+
1538
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:678
1539
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:700
1540
+ msgid "PDF Invoice"
1541
+ msgstr "PDF faktura"
1542
+
1543
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:715
1544
+ msgid "Create"
1545
+ msgstr "Vytvořit"
1546
+
1547
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:721
1548
+ #, fuzzy
1549
+ #| msgid "Order Date: %s"
1550
+ msgid "Date:"
1551
+ msgstr "Datum objednávky: %s"
1552
+
1553
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:725
1554
+ #, fuzzy
1555
+ #| msgid "VAT Number: %s"
1556
+ msgid "Number:"
1557
+ msgstr "DIČ: %s"
1558
+
1559
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:734
1560
+ msgid "Sent?"
1561
+ msgstr ""
1562
+
1563
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:744
1564
+ msgid "Debug"
1565
+ msgstr ""
1566
+
1567
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:758
1568
+ msgid "Update"
1569
+ msgstr ""
1570
+
1571
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:763
1572
+ #, fuzzy
1573
+ #| msgid "Are you sure to delete the invoice?"
1574
+ msgid "Are you sure to delete the PDF invoice?"
1575
+ msgstr "Opravdu chcete fakturu zrušit?"
1576
+
1577
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:767
1578
+ #, php-format
1579
+ msgid ""
1580
+ "You will be missing a PDF invoice with invoice number %d and thus creating "
1581
+ "an accounting gap!"
1582
+ msgstr ""
1583
+
1584
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:770
1585
+ #, php-format
1586
+ msgid "Instead consider using Cancelled PDF invoices with %s."
1587
+ msgstr ""
1588
+
1589
+ #~ msgid "Send customer invoices directly to suppliers and others."
1590
+ #~ msgstr "Posílejte zákaznické faktury přímo dodavatelům a dalším subjektům."
1591
+
1592
+ #~ msgid "Active"
1593
+ #~ msgstr "Aktivní"
1594
+
1595
+ #~ msgid "Inactive"
1596
+ #~ msgstr "Neaktivní"
1597
+
1598
+ #, fuzzy
1599
+ #~| msgid "Cancel"
1600
+ #~ msgid "Cancelled"
1601
+ #~ msgstr "Zrušit"
1602
+
1603
+ #~ msgid "Visible Columns"
1604
+ #~ msgstr "Zobrazené sloupce"
1605
+
1606
+ #~ msgid "Invoiced on:"
1607
+ #~ msgstr "Fakturováno dne:"
1608
+
1609
+ #~ msgid "Invoice number:"
1610
+ #~ msgstr "Číslo faktury:"
1611
+
1612
+ #~ msgid "Completed Renewal Order"
1613
+ #~ msgstr "Dokončena obnova objednávky"
1614
+
1615
+ #~ msgid "Customer Renewal Invoice"
1616
+ #~ msgstr "Zákaznická obnovená faktura"
1617
+
1618
+ #~ msgid ""
1619
+ #~ "Generate global invoices on Orders page by selecting multiple orders and "
1620
+ #~ "applying action or let customers generate periodically from My Account "
1621
+ #~ "page."
1622
+ #~ msgstr ""
1623
+ #~ "Generovat globální faktury na stránce Objednávky výběrem objednávek a "
1624
+ #~ "volbou akce nebo nechat zákazníky generovat periodicky na stránce Můj "
1625
+ #~ "účet."
1626
+
1627
+ #~ msgid "Something went wrong."
1628
+ #~ msgstr "Něco je špatně."
1629
+
1630
+ #~ msgid "Start date type"
1631
+ #~ msgstr "Typ počátečního data."
1632
+
1633
+ #~ msgid ""
1634
+ #~ "Custom date will add a checkout field to the Checkout page, so a customer "
1635
+ #~ "can decide from which date to start counting."
1636
+ #~ msgstr ""
1637
+ #~ "Jiné nastavení data přidá do potvrzovací stránky zaškrtávací box, takže "
1638
+ #~ "se zákazník může rozhodnout od kterého data začne odpočet."
1639
+
1640
+ #~ msgid "Custom date"
1641
+ #~ msgstr "Nastavitelné datum"
1642
+
1643
+ #~ msgid "Custom date is editable on My Account page"
1644
+ #~ msgstr "Nastavitelné datum lze změnit na stránce Můj účet"
1645
+
1646
+ #~ msgid "Custom date is required"
1647
+ #~ msgstr "Nastavitelné datum je povinné"
1648
+
1649
+ #~ msgid "Custom date field name"
1650
+ #~ msgstr "Jméno pole pro Nastavitelné datum"
1651
+
1652
+ #~ msgid ""
1653
+ #~ "Send a reminder email with invoice after a specific period of time. The "
1654
+ #~ "period until the actual sending date, uses the order date as a starting "
1655
+ #~ "point to count from. The email template called Customer Invoice will be "
1656
+ #~ "used. By default an email will only be sent, if the order has the "
1657
+ #~ "Processing status."
1658
+ #~ msgstr ""
1659
+ #~ "Poslat e-mail s upozorněním a fakturou po zadaném počtu dnů. Období do "
1660
+ #~ "aktuálního data odeslání používá datum vytvoření objednávky jako "
1661
+ #~ "počáteční datum od kterého se období počítá. Bude použita šablona faktury "
1662
+ #~ "nazvaná Zákaznická faktura (Costumer Invoice). Obecně e-mail bude odeslán "
1663
+ #~ "pouze pokud bude objednávka ve stavu, kdy se vyřizuje. "
1664
+
1665
+ #~ msgid "YYYY-MM-DD"
1666
+ #~ msgstr "YYYY-MM-DD"
1667
+
1668
+ #~ msgid "Save"
1669
+ #~ msgstr "Uložit"
1670
+
1671
+ #~ msgid "Reminder scheduled on:"
1672
+ #~ msgstr "Upozornění nastavit na:"
1673
+
1674
+ #~ msgid "%s is required."
1675
+ #~ msgstr "%s je vyžadován."
1676
+
1677
+ #~ msgid "Order changed successfully."
1678
+ #~ msgstr "Objednávka bylo úspěšně změněna."
1679
+
1680
+ #~ msgid "PDF Invoice Reminder"
1681
+ #~ msgstr "Připomenutí PDF faktury"
1682
+
1683
+ #~ msgid "Enable mPDF debugging if you aren't able to create an invoice."
1684
+ #~ msgstr "Povolit mPDF debugování pokud není možno vytvořit fakturu."
1685
+
1686
+ #~ msgid "<b>Version</b>: "
1687
+ #~ msgstr "<b>Verze</b>: "
1688
+
1689
+ #~ msgid ""
1690
+ #~ "<b>Author</b>: <a href=\"https://github.com/baselbers\">Bas Elbers</a>"
1691
+ #~ msgstr ""
1692
+ #~ "<b>Autor</b>: <a href=\"https://github.com/baselbers\">Bas Elbers</a>"
1693
+
1694
+ #~ msgid ""
1695
+ #~ "We will never ask for donations, but to guarantee future development, we "
1696
+ #~ "do need your support. Please show us your appreciation by leaving a <a "
1697
+ #~ "href=\"https://wordpress.org/support/view/plugin-reviews/woocommerce-pdf-"
1698
+ #~ "invoices?rate=5#postform\">★★★★★</a> rating and vote for <a href="
1699
+ #~ "\"https://wordpress.org/plugins/woocommerce-pdf-invoices/\">works</a>."
1700
+ #~ msgstr ""
1701
+ #~ "Nikdy Vás nebudeme žádat o dary, ale abychom byli schopni dále pokračovat "
1702
+ #~ "ve vývoji, potřebujeme vaši podporu. Prokažte prosím svoji náklonnost "
1703
+ #~ "oceněním <a href=\"https://wordpress.org/support/view/plugin-reviews/"
1704
+ #~ "woocommerce-pdf-invoices?rate=5#postform\">★★★★★</a> a hlasujte pro naše "
1705
+ #~ "<a href=\"https://wordpress.org/plugins/woocommerce-pdf-invoices/\">díla</"
1706
+ #~ "a>."
1707
+
1708
+ #~ msgid "Please select more then one order."
1709
+ #~ msgstr "Vyberte prosím víc než jednu objednávku."
1710
+
1711
+ #~ msgid "Purchase email"
1712
+ #~ msgstr "Potvrzovací e-mail"
1713
+
1714
+ #~ msgid ""
1715
+ #~ "Enter your email account from <a href=\"http://wcpdfinvoices.com"
1716
+ #~ "\">wcpdfinvoices.com</a>."
1717
+ #~ msgstr ""
1718
+ #~ "Zadejte svůj e-mailový účet od <a href=\"http://wcpdfinvoices.com"
1719
+ #~ "\">wcpdfinvoices.com</a> ."
1720
+
1721
+ #~ msgid ""
1722
+ #~ "Enter your license key from <a href=\"http://wcpdfinvoices.com"
1723
+ #~ "\">wcpdfinvoices.com</a> to receive updates."
1724
+ #~ msgstr ""
1725
+ #~ "Zadejte své licenční klíč od <a href=\"http://wcpdfinvoices.com"
1726
+ #~ "\">wcpdfinvoices.com</a> k zasílání novinek."
1727
+
1728
+ #~ msgid ""
1729
+ #~ "Enable customer generation<br/><div class=\"bewpi-notes\">Let customers "
1730
+ #~ "generate a global invoice from there account</div>"
1731
+ #~ msgstr ""
1732
+ #~ "Povolit generování zákazníkem<br/><div class=\"bewpi-notes\">Povolit "
1733
+ #~ "zákazníkům generovat globální faktury z jejich účtu</div>"
1734
+
1735
+ #~ msgid "These are the general template options."
1736
+ #~ msgstr "Toto jsou základní nastavení šablony"
1737
+
1738
+ #~ msgid "These are the invoice number options."
1739
+ #~ msgstr "Toto je nastavení číslování faktury"
1740
+
1741
+ #~ msgid "[prefix]"
1742
+ #~ msgstr "[prefix]"
1743
+
1744
+ #~ msgid "[suffix]"
1745
+ #~ msgstr "[suffix]"
1746
+
1747
+ #~ msgid "Invoice %s (PDF)"
1748
+ #~ msgstr "Faktura %s (PDF)"
1749
+
1750
+ #~ msgid ""
1751
+ #~ "<p>Woops, could not activate <a href=\"%s\"><strong>WooCommerce PDF "
1752
+ #~ "Invoices Premium</strong></a>. It requires <a href=\"%s"
1753
+ #~ "\"><strong>WooCommerce PDF Invoices</strong></a> to be installed.</p>"
1754
+ #~ msgstr ""
1755
+ #~ "<p>Ajaj, nemůžeme aktivovat <a href=\"%s\"><strong>WooCommerce PDF "
1756
+ #~ "Invoices Premium</strong></a>. Musíte mít napřed nainstalovaný plugin <a "
1757
+ #~ "href=\"%s\"><strong>WooCommerce PDF Invoices</strong></a> .</p>"
1758
+
1759
+ #~ msgid ""
1760
+ #~ "<p><a href=\"%s\"><strong>WooCommerce PDF Invoices Premium</strong></a> "
1761
+ #~ "requires <a href=\"%s\"><strong>WooCommerce PDF Invoices</strong></a>. "
1762
+ #~ "Please install the free version (%s+) and try again.</p>"
1763
+ #~ msgstr ""
1764
+ #~ "<p><a href=\"%s\"><strong>WooCommerce PDF Invoices Premium</strong></a> "
1765
+ #~ "vyžaduje <a href=\"%s\"><strong>WooCommerce PDF Invoices</strong></a>. "
1766
+ #~ "Nainstalujte prosím napřed bezplatnou verzi (%s+) a zkuste to znovu.</p>"
1767
+
1768
+ #~ msgid "Displayed in upper-right corner near logo."
1769
+ #~ msgstr "Zobrazí se v pravém horním rohu vedle loga."
1770
+
1771
+ #~ msgid "Displayed below company address."
1772
+ #~ msgstr "Zobrazí se pod adresou firmy."
1773
+
1774
+ #~ msgid "Displayed in big colored bar directly after invoice total."
1775
+ #~ msgstr ""
1776
+ #~ "Zobrazí se ve velkém barevném pruhu hned pod celkovou částkou faktury."
1777
+
1778
+ #~ msgid "Thank you for your purchase!"
1779
+ #~ msgstr "Děkujeme za Váš nákup!"
1780
+
1781
+ #~ msgid ""
1782
+ #~ "Displayed below customer notes and above footer. Want to attach "
1783
+ #~ "additional pages to the invoice? Take a look at the <a href=\"%s"
1784
+ #~ "\">Premium</a> plugin."
1785
+ #~ msgstr ""
1786
+ #~ "Zobrazí se pod poznámkami zákazníka nad zápatím. Chcete připojit další "
1787
+ #~ "stránky k faktuře? Koukněte na verzi pluginu <a href=\"%s\">Premium</a>."
1788
+
1789
+ #~ msgid "Items will be shipped within 2 days."
1790
+ #~ msgstr "Zboží bude odesláno do 2 dnů."
1791
+
1792
+ #~ msgid "Leave empty to show page numbering."
1793
+ #~ msgstr "Nechte prázdné pro číslování stránek."
1794
+
1795
+ #~ msgid "Add additional PDF's to customer invoices."
1796
+ #~ msgstr "Přidejte dodatečné PDF soubory k zákaznickým fakturám."
1797
+
1798
+ #~ msgid "Attachment Options"
1799
+ #~ msgstr "Možnosti příloh"
1800
+
1801
+ #~ msgid "Attach a PDF to the invoice."
1802
+ #~ msgstr "Připojit k faktuře PDF."
1803
+
1804
+ #~ msgid "Remove logo"
1805
+ #~ msgstr "Odebrat logo"
1806
+
1807
+ #~ msgid "File is invalid and contains either '..' or './'."
1808
+ #~ msgstr "Soubor je neplatný, obsahuje znaky '..' nebo './'."
1809
+
1810
+ #~ msgid "File is invalid and contains ':' after the first character."
1811
+ #~ msgstr "Soubor je neplatný, obsahuje ':' po prvním znaku."
1812
+
1813
+ #~ msgid "File should be less then 2MB."
1814
+ #~ msgstr "Soubor má být menší než 2MB."
1815
+
1816
+ #~ msgid "Email us"
1817
+ #~ msgstr "Napište nám"
1818
+
1819
+ #~ msgid ""
1820
+ #~ "Invoice with invoice number %s not found. First create invoice and try "
1821
+ #~ "again."
1822
+ #~ msgstr ""
1823
+ #~ "Faktura s číslem %s nebyla nalezena. Nejdříve fakturu vytvořte a pak to "
1824
+ #~ "zkuste znovu."
1825
+
1826
+ #~ msgid "Reset on 1st of january"
1827
+ #~ msgstr "Vynulovat vždy 1. ledna"
1828
+
1829
+ #~ msgid ""
1830
+ #~ "Reset the invoice counter and start counting from given invoice number."
1831
+ #~ "<br/><b>Note:</b> Only available for Sequential numbering. All PDF "
1832
+ #~ "invoices will be deleted and need to be manually created again! Value "
1833
+ #~ "will be editable by selecting checkbox."
1834
+ #~ msgstr ""
1835
+ #~ "Vynulovat počítadlo číslování faktur a začít počítat od nastaveného čísla."
1836
+ #~ "<br/><b>Poznámka:</b> Dostupné pouze při povoleném postupném číslování "
1837
+ #~ "faktur. Všechny PDF faktury budou vymazány a budete muset všechny "
1838
+ #~ "vytvořit ručně znovu! Hodnotu můžete změnit po zaškrtnutí boxu."
1839
+
1840
+ #~ msgid "Attach to Email"
1841
+ #~ msgstr "Připojit k e-mailu"
1842
+
1843
+ #~ msgid "Processing Renewal Order"
1844
+ #~ msgstr "Obnovuje se objednávka"
1845
+
1846
+ #~ msgid "Do not attach"
1847
+ #~ msgstr "Nepřipojovat"
1848
+
1849
+ #~ msgid "Attach to New Renewal Order Email"
1850
+ #~ msgstr "Připojit k e-mailu o obnovené objednávce"
1851
+
1852
+ #~ msgid "Woocommerce Subscriptions Email Options"
1853
+ #~ msgstr "Možnosti e-mailů předplatného WooCommerce Subscriptions"
1854
+
1855
+ #~ msgid ""
1856
+ #~ "Attach PDF invoice to <a href=\"http://www.woothemes.com/products/"
1857
+ #~ "woocommerce-subscriptions/\">WooCommerce Subscriptions</a> email. Plugin "
1858
+ #~ "should be activated in order to work."
1859
+ #~ msgstr ""
1860
+ #~ "P5ipojit PDF fakturu k e-mailu<a href=\"http://www.woothemes.com/products/"
1861
+ #~ "woocommerce-subscriptions/\">WooCommerce Subscriptions</a>. Plugin musí "
1862
+ #~ "být pro správnou funkci povolen."
1863
+
1864
+ #~ msgid "Allowed HTML tags: "
1865
+ #~ msgstr "Jsou povoleny HTML tagy:"
1866
+
1867
+ #~ msgid "Attach to New order Email"
1868
+ #~ msgstr "Připojit k e-mailu o nové objednávce"
1869
+
1870
+ #~ msgid "Enable download from account"
1871
+ #~ msgstr "Povolit stahování z účtu"
1872
+
1873
+ #~ msgid ""
1874
+ #~ "<br/><div class=\"bewpi-notes\">Let customers download invoice from "
1875
+ #~ "account page.</div>"
1876
+ #~ msgstr ""
1877
+ #~ "<br/><div class=\"bewpi-notes\">Povolit zákazníkovi stahovat fakturu z "
1878
+ #~ "jeho účtu.</div>"
1879
+
1880
+ #~ msgid "Get your account from your Email It In %suser account%s."
1881
+ #~ msgstr "Použít tvůj účet z účtu Email It In %suser account%s."
1882
+
1883
+ #~ msgid ""
1884
+ #~ "Signup at %s to send invoices to your Dropbox, OneDrive, Google Drive or "
1885
+ #~ "Egnyte and enter your account below."
1886
+ #~ msgstr ""
1887
+ #~ "Přihlásit se k %s k posílání faktur do služeb Dropbox, OneDrive, Google "
1888
+ #~ "Drive nebo Egnyte a vložit níže údaje k účtu."
1889
+
1890
+ #~ msgid "%sFormat%s of invoice date and order date."
1891
+ #~ msgstr "%sFormát%s data vytvoření faktury a data objednávky. "
1892
+
1893
+ #~ msgid ""
1894
+ #~ "Allowed placeholders: %s %s %s %s %s %s.<br/>%sNote:%s %s is required and "
1895
+ #~ "slashes aren't supported."
1896
+ #~ msgstr ""
1897
+ #~ "Povolené kódy: %s %s %s %s %s %s.<br/>%sPoznámka:%s %s je povinné a "
1898
+ #~ "lomítka nejsou podporována."
1899
+
1900
+ #~ msgid "The header will be visible on every page. "
1901
+ #~ msgstr "Záhlaví bude na všech stránkách"
1902
+
1903
+ #~ msgid ""
1904
+ #~ "<b>Hint</b>: Use <code>[payment_method]</code> placeholder to display the "
1905
+ #~ "order payment method or <code>[shipping_method]</code> to display "
1906
+ #~ "shipping method."
1907
+ #~ msgstr ""
1908
+ #~ "<b>Tip </b>: Použijte kód <code>[payment_method]</code> pro zobrazení "
1909
+ #~ "metody platby nebo <code>[shipping_method]</code> pro zobrazení metody "
1910
+ #~ "přepravy."
1911
+
1912
+ #~ msgid ""
1913
+ #~ "Alrighty then! <a href=\"%s\">Let's start configuring <strong>WooCommerce "
1914
+ #~ "PDF Invoices</strong></a>."
1915
+ #~ msgstr ""
1916
+ #~ "Dobře tedy! <a href=\"%s\">Pojďme začít s konfigurací pluginu "
1917
+ #~ "<strong>WooCommerce PDF Invoices</strong></a>."
1918
+
1919
+ #~ msgid "Invalid order ID"
1920
+ #~ msgstr "Neplatné číslo objednávky"
1921
+
1922
+ #~ msgid "Access denied"
1923
+ #~ msgstr "Přístup odepřen"
1924
+
1925
+ #~ msgid ""
1926
+ #~ "If you like <strong>WooCommerce PDF Invoices</strong> please leave us a "
1927
+ #~ "%s★★★★★%s rating. A huge thank you in advance!"
1928
+ #~ msgstr ""
1929
+ #~ "Pokud se Vám líbí plugin <strong>WooCommerce PDF Invoices</strong> dejte "
1930
+ #~ "nám prosím hodnocení %s★★★★★%s . Předem moc děkujeme!"
1931
+
1932
+ #~ msgid "Cancel invoice"
1933
+ #~ msgstr "Zrušit fakturu"
1934
+
1935
+ #~ msgid "Create invoice"
1936
+ #~ msgstr "Vytvořit fakturu"
1937
+
1938
+ #~ msgid ""
1939
+ #~ "You are working with <b>WooCommerce PDF Invoices</b> for some time now. "
1940
+ #~ "We really need your ★★★★★ rating. It will support future development big-"
1941
+ #~ "time. A huge thanks in advance and keep up the good work! <br /> <a "
1942
+ #~ "href='%s' target='_blank'>Yes, will do it right away!</a> - <a "
1943
+ #~ "href='%s'>No, already done it!</a>"
1944
+ #~ msgstr ""
1945
+ #~ "Pracujete s <b>WooCommerce PDF Invoices</b> už nějakou dobu. Opravdu "
1946
+ #~ "potřebujeme Vaše hodnocení ★★★★★. Pomůže nám to v pokračování dalšího "
1947
+ #~ "masivního vývoje. Předem hodně děkujeme a pokračujeme v dobrém díle! <br /"
1948
+ #~ "> <a href='%s' target='_blank'>Ano, udělejte to zrovna teď!</a> - <a "
1949
+ #~ "href='%s'>Ne, už jsem to udělal!</a>"
lang/woocommerce-pdf-invoices-de_DE.po CHANGED
@@ -1,1712 +1,1712 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WooCommerce PDF Invoices\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2017-11-29 20:36+0100\n"
6
- "PO-Revision-Date: 2017-11-29 20:36+0100\n"
7
- "Last-Translator: Julius Reich <shop@koerner-musik.de>\n"
8
- "Language-Team: German (Formal)\n"
9
- "Language: de_DE\n"
10
- "MIME-Version: 1.0\n"
11
- "Content-Type: text/plain; charset=UTF-8\n"
12
- "Content-Transfer-Encoding: 8bit\n"
13
- "X-Generator: Poedit 2.0.4\n"
14
- "X-Poedit-Basepath: ../..\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
- "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
18
- "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
19
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
20
- "X-Poedit-SearchPath-0: woocommerce-pdf-invoices\n"
21
- "X-Poedit-SearchPath-1: woocommerce-pdf-invoices-premium\n"
22
- "X-Poedit-SearchPathExcluded-0: *.js\n"
23
-
24
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:25
25
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:427
26
- msgid "Premium"
27
- msgstr "Premium"
28
-
29
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:99
30
- #, php-format
31
- msgid ""
32
- "Whoops, your license for %1$s has expired. To keep receiving updates and "
33
- "premium support, we offer you a 30%% discount when you <a href=\"%2$s\" "
34
- "target=\"_blank\">renew your license</a>."
35
- msgstr ""
36
-
37
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:225
38
- msgid "Premium Options"
39
- msgstr "Premium Optionen"
40
-
41
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:228
42
- msgid "Template Options"
43
- msgstr "Template Optionen"
44
-
45
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:231
46
- msgid "Supplier Options"
47
- msgstr "Lieferanten Optionen"
48
-
49
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:232
50
- msgid "Send customer invoice automatically to your supplier(s)."
51
- msgstr "Kunden Rechnung automatisch an Lieferanten senden."
52
-
53
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:235
54
- #, fuzzy
55
- #| msgid "Header Options"
56
- msgid "Credit Note Options"
57
- msgstr "Header Optionen"
58
-
59
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:238
60
- #, fuzzy
61
- #| msgid "Invoice Number Options"
62
- msgid "Credit Note Number Options"
63
- msgstr "Rechnungsnummer Optionen"
64
-
65
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:241
66
- msgid "Global Invoice Options"
67
- msgstr "Optionen für Sammelrechnungen"
68
-
69
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:242
70
- msgid ""
71
- "Generate global invoices on Orders page by selecting multiple orders and "
72
- "applying action or let customers generate periodically from My Account page. "
73
- "<strong>Global invoices are only supported when using the micro template!</"
74
- "strong>"
75
- msgstr ""
76
- "Sammelrechnungen aktivieren, durch Anwahl mehrerer Bestellungen aus der "
77
- "Übersicht, oder durch den Kunden in seinem Kundenkonto (Sammelrechnungen "
78
- "benötigen das micro template!)"
79
-
80
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:245
81
- msgid "Reminder Options"
82
- msgstr "Erinnerungen (Optionen)"
83
-
84
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:246
85
- #, php-format
86
- msgid ""
87
- "Automatically send PDF invoice after a specific period of time. When "
88
- "enabled, a new <a href=\"%s\">Customer invoice reminder</a> email will be "
89
- "used to send the PDF invoice."
90
- msgstr ""
91
- "Automatischer Rechnungsversand nach bestimmter Zeit. Wenn aktiviert, wird "
92
- "eine neue Email <a href=\"%s\">\"Kundenerinnerung für Rechnungen\"</a> "
93
- "benutzt, um die Rechnung zu versenden."
94
-
95
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:249
96
- msgid "Request Invoice Options"
97
- msgstr "\"Rechnung anfordern\" Optionen"
98
-
99
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:250
100
- msgid ""
101
- "Let a customer decide to generate a PDF invoice. When enabled, a checkbox "
102
- "field will be added on the checkout page so customers can request a PDF "
103
- "invoice."
104
- msgstr ""
105
- "Der Kunde kann entscheiden, ob eine PDF-Rechnung erstellt wird (blendet "
106
- "checkbox in der Kasse ein)."
107
-
108
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:267
109
- msgid "Activation email"
110
- msgstr "Aktivierungsmail"
111
-
112
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:272
113
- #, php-format
114
- msgid "Enter your activation email from %s."
115
- msgstr "Bitte geben Sie ihre Aktivierung von %s ein."
116
-
117
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:278
118
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:703
119
- msgid "License"
120
- msgstr "Lizenz"
121
-
122
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:283
123
- #, php-format
124
- msgid "Enter your license key from %s to receive updates."
125
- msgstr "Bitte geben Sie ihre Lizenz von %s ein, um Updates zu erhalten."
126
-
127
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:289
128
- msgid "PDF attachment"
129
- msgstr "PDF-Anhang"
130
-
131
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:294
132
- msgid "Add for example a PDF with your terms & conditions."
133
- msgstr "Hänge ein PDF-Dokument an, wie zum Beispiel deine AGBs."
134
-
135
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:300
136
- msgid "Suppliers"
137
- msgstr "Lieferanten"
138
-
139
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:305
140
- #, fuzzy
141
- #| msgid ""
142
- #| "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by "
143
- #| "simply adding there Email It In email addresses. Email addresses need to "
144
- #| "be seperated by comma's."
145
- msgid ""
146
- "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by simply "
147
- "adding their Email It In email addresses. Email addresses need to be "
148
- "seperated by comma's."
149
- msgstr "Tip: Nutzen Sie \"Email it in\""
150
-
151
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:311
152
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:72
153
- msgid "Attach to Emails"
154
- msgstr "Email anfügen"
155
-
156
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:322
157
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:400
158
- msgid "Prefix"
159
- msgstr "Prefix"
160
-
161
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:333
162
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:411
163
- msgid "Suffix"
164
- msgstr "Suffix"
165
-
166
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:344
167
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:422
168
- msgid "Format"
169
- msgstr "Format"
170
-
171
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:349
172
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:427
173
- #, php-format
174
- msgid "Available placeholders: %s."
175
- msgstr "Verfügbare Platzhalter: %s."
176
-
177
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:351
178
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:429
179
- #, php-format
180
- msgid "<b>Note:</b> %s is required and slashes aren't supported."
181
- msgstr "<b>Hinweis:</b> %s wird benötigt und Schräger sind nicht unterstützt."
182
-
183
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:363
184
- msgid "Enable customer generation"
185
- msgstr "Rechnungserstellung im Kundenkonto aktivieren"
186
-
187
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:365
188
- msgid "Let customers generate a global invoice from their account"
189
- msgstr "Kunden können eine Sammelrechnung in ihrem Konto erstellen"
190
-
191
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:373
192
- msgid "Customer generation period"
193
- msgstr "Laufzeit"
194
-
195
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:378
196
- msgid ""
197
- "Should your customers have the ability to generate a global invoice by month "
198
- "or by year?<br/><strong>Note:</strong> Customer generation should be enabled."
199
- msgstr "Sammelrechnungsoption für Monat, oder Jahr?"
200
-
201
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:380
202
- msgid "Month"
203
- msgstr "Monat"
204
-
205
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:381
206
- msgid "Year"
207
- msgstr "Jahr"
208
-
209
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:393
210
- msgid "Send to your Cloud Storage"
211
- msgstr "An Cloud Storage senden"
212
-
213
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:405
214
- msgid "Email to customer"
215
- msgstr "Email an Kunden"
216
-
217
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:417
218
- msgid "Email to supplier(s)"
219
- msgstr "Email an Lieferanten"
220
-
221
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:424
222
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:146
223
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:146
224
- msgid "Email subject"
225
- msgstr "Email Betreff"
226
-
227
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:429
228
- msgid "Subject for the global invoice email."
229
- msgstr "Betreff für Sammelrechnung."
230
-
231
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:436
232
- msgid "Email message"
233
- msgstr "Email-Text"
234
-
235
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:441
236
- msgid "Message for the global invoice email."
237
- msgstr "Mail-Text für Sammelrechnung"
238
-
239
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:453
240
- msgid "Enable reminder"
241
- msgstr "Erinnerungen aktivieren"
242
-
243
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:460
244
- #, fuzzy
245
- #| msgid "Days until reminder"
246
- msgid "Days until due date"
247
- msgstr "Tage bis zur Erinnerung"
248
-
249
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:465
250
- #, fuzzy
251
- #| msgid "Number of days from order or invoice date until reminder date."
252
- msgid "Number of days from order or invoice date until due date."
253
- msgstr "Anzahl der Tage bis zur Erinnerung an die Rechnung."
254
-
255
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:474
256
- msgid "Days until reminder"
257
- msgstr "Tage bis zur Erinnerung"
258
-
259
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:479
260
- msgid "Number of days from order or invoice date until reminder date."
261
- msgstr "Anzahl der Tage bis zur Erinnerung an die Rechnung."
262
-
263
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:488
264
- msgid "Date type"
265
- msgstr "Datumsart"
266
-
267
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:493
268
- msgid "Choose the type of date to count from."
269
- msgstr "Wählen Sie das Datum, von dem aus gezählt werden soll."
270
-
271
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:495
272
- msgid "Order date"
273
- msgstr "Bestelldatum"
274
-
275
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:496
276
- msgid "Invoice date"
277
- msgstr "Rechnungsdatum"
278
-
279
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:508
280
- msgid "Enable Request Invoice."
281
- msgstr "Rechnung anfordern aktivieren"
282
-
283
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:590
284
- msgid "Activation email cannot be empty."
285
- msgstr "Aktivierungsmail darf nicht leer sein."
286
-
287
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:630
288
- msgid ""
289
- "Something went wrong with the activation of your license. Contact the author "
290
- "for support."
291
- msgstr "Lizenz konnte nicht aktiviert werden."
292
-
293
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:651
294
- msgid "File to large."
295
- msgstr "Datei ist zu groß."
296
-
297
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:657
298
- msgid "Only PDF files are allowed."
299
- msgstr "Es sind lediglich PDF-Dokumente zulässig."
300
-
301
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:682
302
- msgid "Remove"
303
- msgstr "Entfernen"
304
-
305
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:684
306
- msgid "Choose"
307
- msgstr "Auswählen"
308
-
309
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:712
310
- msgid "Inactive"
311
- msgstr "Inaktiv"
312
-
313
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:714
314
- msgid "Active"
315
- msgstr "Aktiv"
316
-
317
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-credit-note.php:12
318
- #, php-format
319
- msgid "PDF Credit Note %1$s"
320
- msgstr ""
321
-
322
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:10
323
- msgid "Generate Global Invoice"
324
- msgstr "Sammelrechnung erstellen"
325
-
326
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:20
327
- msgid "Select a month"
328
- msgstr "Monat auswählen"
329
-
330
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:33
331
- msgid "Select a year"
332
- msgstr "Jahr auswählen"
333
-
334
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:47
335
- msgid "Generate invoice"
336
- msgstr "Rechnung generieren"
337
-
338
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:16
339
- #, fuzzy
340
- #| msgid "Global invoice successfully generated! "
341
- msgid "Global invoice successfully generated!"
342
- msgstr "Sammelrechnung erfolgreich erstellt!"
343
-
344
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
345
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:663
346
- msgid "View invoice"
347
- msgstr "Rechnung anzeigen"
348
-
349
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
350
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:751
351
- msgid "View"
352
- msgstr "Anzeigen"
353
-
354
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:37
355
- msgid "Bulk Export PDF Invoices"
356
- msgstr "Mehrere Rechnungen exportieren"
357
-
358
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:38
359
- msgid "Bulk Export PDF Packing Slips"
360
- msgstr "Mehrere Lieferscheine exportieren"
361
-
362
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:85
363
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:73
364
- msgid "No order selected."
365
- msgstr "Keine Bestellung ausgewählt."
366
-
367
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:37
368
- msgid "Bulk Generate PDF Invoices"
369
- msgstr "Mehrere Rechnungen erstellen"
370
-
371
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:38
372
- msgid "Bulk Generate PDF Packing Slips"
373
- msgstr "Mehrere Lieferscheine erstellen"
374
-
375
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:135
376
- msgid "PDF Credit Notes"
377
- msgstr ""
378
-
379
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:283
380
- #, php-format
381
- msgid ""
382
- "<a href=\"%1$s\" class=\"%2$s\" target=\"%3$s\">PDF Credit Note (%4$s)</a> "
383
- "for Refund #%5$s."
384
- msgstr ""
385
-
386
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:289
387
- #, php-format
388
- msgid "created on %1$s at %2$s"
389
- msgstr ""
390
-
391
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:291
392
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:775
393
- msgid "Delete"
394
- msgstr ""
395
-
396
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:297
397
- msgid "There are no credit notes yet."
398
- msgstr ""
399
-
400
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:309
401
- msgid "Create PDF Credit Notes for selected refund(s)"
402
- msgstr ""
403
-
404
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:339
405
- msgid "Credit note"
406
- msgstr ""
407
-
408
- #: woocommerce-pdf-invoices-premium/includes/class-install.php:91
409
- #, php-format
410
- msgid ""
411
- "%1$s requires %2$s to be activated. Install and activate it and you should "
412
- "be good to go! :)"
413
- msgstr "%1$s benötigt %2$s."
414
-
415
- #: woocommerce-pdf-invoices-premium/includes/class-install.php:100
416
- #, php-format
417
- msgid ""
418
- "%1$s requires at least %2$s. Update it and get the best out of both "
419
- "plugins. :)"
420
- msgstr "%1$s benötigt mindestens %2$s."
421
-
422
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:228
423
- msgid "Invalid request"
424
- msgstr "Ungültige Anfrage"
425
-
426
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:248
427
- msgid "No orders found."
428
- msgstr "Keine Bestellungen gefunden."
429
-
430
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:295
431
- msgid "Generate global invoice"
432
- msgstr "Sammelrechnung erstellen"
433
-
434
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:323
435
- msgid ""
436
- "Could not generate the invoice. Global invoices are only supported when "
437
- "using the micro template."
438
- msgstr "Sammelrechnung kann nur mit dem micro template erstellt werden."
439
-
440
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:336
441
- msgid "Select more then one order to generate a global invoice."
442
- msgstr "Wählen Sie mehr als eine Bestellung für eine Sammelrechnung aus."
443
-
444
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
445
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
446
- msgid "Yes"
447
- msgstr "Ja"
448
-
449
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
450
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
451
- msgid "No"
452
- msgstr "Nein"
453
-
454
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:83
455
- msgid "Reminder on:"
456
- msgstr "Erinnerung:"
457
-
458
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:88
459
- msgid "Reminder sent?"
460
- msgstr "Erinnerung aktiviert?"
461
-
462
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:296
463
- #, fuzzy
464
- #| msgid "Order Date: %s"
465
- msgid "Due Date:"
466
- msgstr "Lieferdatum: %s"
467
-
468
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:61
469
- msgid ""
470
- "Instead consider creating a Cancelled PDF invoice by changing the order "
471
- "status to Cancelled."
472
- msgstr ""
473
-
474
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:103
475
- #, fuzzy
476
- #| msgid "Cancel"
477
- msgid "Cancelled"
478
- msgstr "Abbrechen"
479
-
480
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:116
481
- msgid "Advanced Table Content"
482
- msgstr ""
483
-
484
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:117
485
- msgid ""
486
- "Enable Advanced Table Content settings to fully customize line item columns "
487
- "and total rows. When enabled the standard Table Content settings will be "
488
- "ignored. When using a custom template, make sure to update it! Micro "
489
- "template is not supported."
490
- msgstr ""
491
-
492
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:145
493
- msgid "Enable Advanced Table Content"
494
- msgstr ""
495
-
496
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:157
497
- msgid "Show SKU as meta data"
498
- msgstr ""
499
-
500
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:164
501
- msgid "Display tax totals"
502
- msgstr ""
503
-
504
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:172
505
- msgid "Itemized"
506
- msgstr ""
507
-
508
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:173
509
- msgid "As a single total"
510
- msgstr ""
511
-
512
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:179
513
- #, fuzzy
514
- #| msgid "Left footer column."
515
- msgid "Line item columns"
516
- msgstr "Linke Fußzeilenspalte."
517
-
518
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:188
519
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:393
520
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:48
521
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:403
522
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:53
523
- msgid "Description"
524
- msgstr "Beschreibung"
525
-
526
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:193
527
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:198
528
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:401
529
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:405
530
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:57
531
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:60
532
- msgid "Cost"
533
- msgstr "Preis"
534
-
535
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:203
536
- msgid "Quantity"
537
- msgstr ""
538
-
539
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:213
540
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:218
541
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:281
542
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:286
543
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:413
544
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:417
545
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:77
546
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:235
547
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:405
548
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:71
549
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:275
550
- msgid "Total"
551
- msgstr "Gesamt"
552
-
553
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:227
554
- #, fuzzy
555
- #| msgid "Total"
556
- msgid "Total rows"
557
- msgstr "Gesamt"
558
-
559
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:236
560
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:261
561
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:173
562
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:506
563
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:207
564
- msgid "Discount"
565
- msgstr "Rabatt"
566
-
567
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:241
568
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:266
569
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:182
570
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:200
571
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:518
572
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:215
573
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:231
574
- msgid "Shipping"
575
- msgstr "Versand"
576
-
577
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:246
578
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:271
579
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:212
580
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:242
581
- msgid "Fee"
582
- msgstr "Gebühr"
583
-
584
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:251
585
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:256
586
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:191
587
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:470
588
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:223
589
- msgid "Subtotal"
590
- msgstr "Zwischensumme"
591
-
592
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:349
593
- msgid "SKU:"
594
- msgstr ""
595
-
596
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:397
597
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:65
598
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:59
599
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:404
600
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:62
601
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:63
602
- msgid "Qty"
603
- msgstr "Stück"
604
-
605
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:607
606
- #, fuzzy, php-format
607
- #| msgid "Subtotal"
608
- msgid "Subtotal %s"
609
- msgstr "Zwischensumme"
610
-
611
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:625
612
- #, fuzzy, php-format
613
- #| msgid "Discount"
614
- msgid "Discount %s"
615
- msgstr "Rabatt"
616
-
617
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:652
618
- #, fuzzy, php-format
619
- #| msgid "Shipping"
620
- msgid "Shipping %s"
621
- msgstr "Versand"
622
-
623
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:685
624
- #, fuzzy, php-format
625
- #| msgid "%1$s of %2$s"
626
- msgid "%1$s %2$s"
627
- msgstr "%1$s von %2$s"
628
-
629
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:866
630
- #, fuzzy, php-format
631
- #| msgid "Total"
632
- msgid "Total %s"
633
- msgstr "Gesamt"
634
-
635
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:993
636
- msgid "Request invoice"
637
- msgstr "Rechnung anfordern"
638
-
639
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:43
640
- #, fuzzy
641
- #| msgid "Customer note"
642
- msgid "Customer credit note"
643
- msgstr "Kundenkommentar"
644
-
645
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:44
646
- #, fuzzy
647
- #| msgid ""
648
- #| "Customer invoice reminder emails can be sent to customers containing "
649
- #| "their order information and payment links."
650
- msgid ""
651
- "Customer credit note emails can be sent to customers containing their PDF "
652
- "Credit Note."
653
- msgstr ""
654
- "Erinnerungen für noch nicht versandte Rechnungen können mit Information zur "
655
- "Bestellung und Bezahlung verschickt werden."
656
-
657
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:50
658
- #, fuzzy
659
- #| msgid "Invoice reminder for order {order_number} from {order_date}"
660
- msgid "Credit note for order {order_number} from {order_date}"
661
- msgstr "Erinnerung an Rechnung für Bestellung {order_number} vom {order_date}"
662
-
663
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:51
664
- #, fuzzy
665
- #| msgid "Invoice reminder for order {order_number}"
666
- msgid "Credit note for order {order_number}"
667
- msgstr "Erinnerung an Rechnung für Bestellung {order_number}"
668
-
669
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:149
670
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:158
671
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:149
672
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:158
673
- #, php-format
674
- msgid "Defaults to %s"
675
- msgstr "Defaults to %s"
676
-
677
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:155
678
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:155
679
- msgid "Email heading"
680
- msgstr "Email Überschrift"
681
-
682
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:164
683
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:164
684
- msgid "Email type"
685
- msgstr "Email Typ"
686
-
687
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:166
688
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:166
689
- msgid "Choose which format of email to send."
690
- msgstr "Email Format."
691
-
692
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:43
693
- msgid "Customer invoice reminder"
694
- msgstr "Erinnerung für nicht versandte Rechnungen"
695
-
696
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:44
697
- msgid ""
698
- "Customer invoice reminder emails can be sent to customers containing their "
699
- "order information and payment links."
700
- msgstr ""
701
- "Erinnerungen für noch nicht versandte Rechnungen können mit Information zur "
702
- "Bestellung und Bezahlung verschickt werden."
703
-
704
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:49
705
- msgid "Invoice reminder for order {order_number} from {order_date}"
706
- msgstr "Erinnerung an Rechnung für Bestellung {order_number} vom {order_date}"
707
-
708
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:50
709
- msgid "Invoice reminder for order {order_number}"
710
- msgstr "Erinnerung an Rechnung für Bestellung {order_number}"
711
-
712
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:35
713
- msgid "Credit Note"
714
- msgstr ""
715
-
716
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:46
717
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:52
718
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:40
719
- msgid "Ship to:"
720
- msgstr "Versand an:"
721
-
722
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:61
723
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:59
724
- msgid "Product"
725
- msgstr "Produkt"
726
-
727
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:71
728
- msgid "Price"
729
- msgstr "Preis"
730
-
731
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:135
732
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:127
733
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:109
734
- #, php-format
735
- msgid "Note from customer: %s"
736
- msgstr "Bemerkung des Kunden: %s"
737
-
738
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:140
739
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:132
740
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:114
741
- #, php-format
742
- msgid "Note to customer: %s"
743
- msgstr "Hinweis an Kunden: %s"
744
-
745
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:152
746
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:314
747
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:144
748
- msgid "Zero rated for VAT as customer has supplied EU VAT number"
749
- msgstr "Keine USt. auf Grund innergemeinschaftlicher Leistung"
750
-
751
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/footer.php:26
752
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/footer.php:15
753
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/footer.php:12
754
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/footer.php:26
755
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/footer.php:23
756
- #, php-format
757
- msgid "%1$s of %2$s"
758
- msgstr "%1$s von %2$s"
759
-
760
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:39
761
- #, php-format
762
- msgid "Credit Note #: %s"
763
- msgstr ""
764
-
765
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:41
766
- #, fuzzy, php-format
767
- #| msgid "Order Date: %s"
768
- msgid "Date: %s"
769
- msgstr "Lieferdatum: %s"
770
-
771
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:45
772
- #, php-format
773
- msgid "Invoice #: %s"
774
- msgstr "Rechnungsnummer: %s"
775
-
776
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:47
777
- #, php-format
778
- msgid "Invoice Date: %s"
779
- msgstr "Rechnungsdatum: %s"
780
-
781
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:51
782
- #, fuzzy, php-format
783
- #| msgid "Order #%d - %s"
784
- msgid "Order #: %s"
785
- msgstr "Bestellung #%d - %s"
786
-
787
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:53
788
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:38
789
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:37
790
- #, php-format
791
- msgid "Order Date: %s"
792
- msgstr "Lieferdatum: %s"
793
-
794
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:57
795
- #, php-format
796
- msgid "Payment Method: %s"
797
- msgstr "Zahlungsart: %s"
798
-
799
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:64
800
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:681
801
- #, php-format
802
- msgid "Purchase Order Number: %s"
803
- msgstr "Auftragsnummer: %s"
804
-
805
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:73
806
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:663
807
- #, php-format
808
- msgid "VAT Number: %s"
809
- msgstr "USt-IdNr.: %s"
810
-
811
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/customer-credit-note.php:25
812
- #, fuzzy
813
- #| msgid "Order date"
814
- msgid "Order:"
815
- msgstr "Bestelldatum"
816
-
817
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:23
818
- #, fuzzy, php-format
819
- #| msgid "Order Number: %s"
820
- msgid "Order number: %s"
821
- msgstr "Auftragsnummer: %s"
822
-
823
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:24
824
- #, fuzzy, php-format
825
- #| msgid "Order Date: %s"
826
- msgid "Order date: %s"
827
- msgstr "Lieferdatum: %s"
828
-
829
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:9
830
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:11
831
- msgid "Invoice to"
832
- msgstr "Rechnung an"
833
-
834
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:14
835
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:16
836
- #, php-format
837
- msgid "Phone: %s"
838
- msgstr "Telefon: %s"
839
-
840
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:19
841
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:23
842
- msgid "Ship to"
843
- msgstr "Lieferadresse"
844
-
845
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:30
846
- msgid "Global Invoice"
847
- msgstr "Sammelrechnung"
848
-
849
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:53
850
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:458
851
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:57
852
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:55
853
- msgid "SKU"
854
- msgstr "SKU"
855
-
856
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:66
857
- msgid "VAT"
858
- msgstr "USt."
859
-
860
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:89
861
- #, php-format
862
- msgid "Order #%d - %s"
863
- msgstr "Bestellung #%d - %s"
864
-
865
- #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:103
866
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:409
867
- msgid "Settings"
868
- msgstr "Einstellungen"
869
-
870
- #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:104
871
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:62
872
- msgid "Support"
873
- msgstr "Support"
874
-
875
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-document.php:150
876
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:36
877
- msgid "Paid"
878
- msgstr "Bezahlt"
879
-
880
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:491
881
- msgid "Subtotal:"
882
- msgstr "Zwischensumme:"
883
-
884
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:506
885
- msgid "Discount:"
886
- msgstr "Rabatt:"
887
-
888
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:521
889
- msgid "Shipping:"
890
- msgstr "Versand:"
891
-
892
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:594
893
- msgid "Total:"
894
- msgstr "Summe:"
895
-
896
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:861
897
- #, php-format
898
- msgid "%s of %s"
899
- msgstr "%s von %s"
900
-
901
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:100
902
- msgid "Invoices"
903
- msgstr "Rechnungen"
904
-
905
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:164
906
- #, php-format
907
- msgid ""
908
- "If you like <strong>WooCommerce PDF Invoices</strong> please leave us a <a "
909
- "href=\"%s\">★★★★★</a> rating. A huge thank you in advance!"
910
- msgstr ""
911
- "Bitte unterstützen Sie <strong>WooCommerce PDF Invoices</strong> mit einer "
912
- "<a href=\"%s\">★★★★★</a> Bewertung!"
913
-
914
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:173
915
- #, php-format
916
- msgid "Version %s"
917
- msgstr "Version %s"
918
-
919
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:286
920
- #, fuzzy
921
- #| msgid "Choose"
922
- msgid "Choose&hellip;"
923
- msgstr "Auswählen"
924
-
925
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:287
926
- msgid "Column"
927
- msgstr ""
928
-
929
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
930
- #, fuzzy
931
- #| msgid "Select a year"
932
- msgid "Select all"
933
- msgstr "Jahr auswählen"
934
-
935
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
936
- #, fuzzy
937
- #| msgid "Select a month"
938
- msgid "Select none"
939
- msgstr "Monat auswählen"
940
-
941
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:25
942
- msgid "General"
943
- msgstr "Allgemein"
944
-
945
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:41
946
- msgid "Email Options"
947
- msgstr "Email Optionen"
948
-
949
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:42
950
- #, fuzzy, php-format
951
- #| msgid ""
952
- #| "The PDF invoice will be generated when WooCommerce sends the "
953
- #| "corresponding email. The email should be <a href=\"%1$s\">enabled</a> in "
954
- #| "order to automatically generate the PDF invoice."
955
- msgid ""
956
- "The PDF invoice will be generated when WooCommerce sends the corresponding "
957
- "email. The email should be <a href=\"%1$s\">enabled</a> in order to "
958
- "automatically generate the PDF invoice. Want to attach PDF documents to many "
959
- "more email types? Take a look at %2$s."
960
- msgstr ""
961
- "Die PDF-Rechnung wird erstellt, wenn WooCommerce eine korrespondierende "
962
- "Email versendet. Diese sollte <a href=\"%1$s\">aktiviert</a> sein."
963
-
964
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:45
965
- msgid "Download Options"
966
- msgstr "Download Optionen"
967
-
968
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:48
969
- msgid "Cloud Storage Options"
970
- msgstr "Cloud Storage Optionen"
971
-
972
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:49
973
- #, php-format
974
- msgid ""
975
- "Sign-up at <a href=\"%1$s\">Email It In</a> to send invoices to your "
976
- "Dropbox, OneDrive, Google Drive or Egnyte and enter your account below."
977
- msgstr ""
978
- "Anmelden für <a href=\"%1$s\">Email It In</a> um Rechnungen zur Dropbox, "
979
- "OneDrive, Google Drive oder Egnyte, oder einem weiteren Account zu schicken."
980
-
981
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:52
982
- msgid "Interface Options"
983
- msgstr "Interface Optionen"
984
-
985
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:55
986
- msgid "Debug Options"
987
- msgstr "Debug Optionen"
988
-
989
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:80
990
- msgid "New order"
991
- msgstr "Neue Bestellung"
992
-
993
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:85
994
- msgid "Order on-hold"
995
- msgstr "Bestellung in Wartestellung"
996
-
997
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:90
998
- msgid "Processing order"
999
- msgstr "Bestellung in Bearbeitung"
1000
-
1001
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:95
1002
- msgid "Completed order"
1003
- msgstr "Abgeschlossene Bestellung"
1004
-
1005
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:100
1006
- msgid "Customer invoice"
1007
- msgstr "Kundenrechnung"
1008
-
1009
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:114
1010
- msgid "Disable for free products"
1011
- msgstr "Für kostenlose Produkte deaktivieren"
1012
-
1013
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:116
1014
- msgid ""
1015
- "Skip automatic PDF invoice generation for orders containing only free "
1016
- "products."
1017
- msgstr ""
1018
- "Keine PDF erstellen, wenn die Bestellung nur kostenlose Produkte beinhaltet."
1019
-
1020
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:124
1021
- msgid "View PDF"
1022
- msgstr "PDF anzeigen"
1023
-
1024
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:131
1025
- msgid "Download"
1026
- msgstr "Download"
1027
-
1028
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:132
1029
- msgid "Open in new browser tab/window"
1030
- msgstr "In neuen Tab/Fenster öffnen"
1031
-
1032
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:144
1033
- msgid "Enable download from my account"
1034
- msgstr "Download vom Konto aktivieren"
1035
-
1036
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:146
1037
- msgid ""
1038
- "By default PDF is only downloadable when order has been paid, so order "
1039
- "status should be Processing or Completed."
1040
- msgstr ""
1041
- "Eine PDF wird in der Standardeinstellung erst erstellt, wenn die Bestellung "
1042
- "bezahlt ist, oder der Status auf \"Bearbeitung\" oder \"Abgeschlossen\" "
1043
- "gesetzt wird."
1044
-
1045
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:159
1046
- msgid "Enable Email It In"
1047
- msgstr "\"Email It In\" aktivieren"
1048
-
1049
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:166
1050
- msgid "Email It In account"
1051
- msgstr "\"Email It In\" Account"
1052
-
1053
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:171
1054
- #, php-format
1055
- msgid "Get your account from your %1$s <a href=\"%2$s\">user account</a>."
1056
- msgstr ""
1057
- "Erstellen Sie ihren Account von ihrem %1$s <a href=\"%2$s\">User Account</a>."
1058
-
1059
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:182
1060
- msgid "Enable Invoice Number column"
1061
- msgstr "Spalte mit Rechnungsnummer anzeigen"
1062
-
1063
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:183
1064
- msgid "Display invoice numbers on Shop Order page."
1065
- msgstr "Rechnungsnummer in der Bestellseite anzeigen"
1066
-
1067
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:195
1068
- msgid "Enable mPDF debugging"
1069
- msgstr "mPDF debugging aktivieren"
1070
-
1071
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:196
1072
- msgid "Enable if you aren't able to create an invoice."
1073
- msgstr "Aktivieren, wenn keine PDF automatisch erstellt wird"
1074
-
1075
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:25
1076
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:101
1077
- msgid "Template"
1078
- msgstr "Template"
1079
-
1080
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:43
1081
- msgid "General Options"
1082
- msgstr "Allgemeine Optionen"
1083
-
1084
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:44
1085
- #, php-format
1086
- msgid ""
1087
- "Want to customize the template? The <a href=\"%s\">FAQ</a> will give you a "
1088
- "brief description."
1089
- msgstr "Template verändern? Das <a href=\"%s\">FAQ</a> gibt eine Einführung."
1090
-
1091
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:47
1092
- msgid "Invoice Number Options"
1093
- msgstr "Rechnungsnummer Optionen"
1094
-
1095
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:50
1096
- msgid "Packing Slips Options"
1097
- msgstr "Lieferscheinoptionen"
1098
-
1099
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:51
1100
- msgid ""
1101
- "Packing slips are <strong>only available</strong> when using minimal "
1102
- "template."
1103
- msgstr ""
1104
- "Lieferscheine sind nur verfügbar, wenn das minimal template genutzt wird."
1105
-
1106
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:54
1107
- msgid "Header Options"
1108
- msgstr "Header Optionen"
1109
-
1110
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:55
1111
- msgid "The header will be visible on every page."
1112
- msgstr "Die Kopfzeile auf jeder Seite sichtbar."
1113
-
1114
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:58
1115
- #, fuzzy
1116
- #| msgid "Download Options"
1117
- msgid "Body Options"
1118
- msgstr "Download Optionen"
1119
-
1120
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:59
1121
- msgid "Configuration options for the body of the template. ."
1122
- msgstr ""
1123
-
1124
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:62
1125
- msgid "Footer Options"
1126
- msgstr "Footer Optionen"
1127
-
1128
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:63
1129
- msgid "The footer will be visible on every page."
1130
- msgstr "Die Fußzeile auf jeder Seite sichtbar."
1131
-
1132
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:66
1133
- msgid "Table Content"
1134
- msgstr ""
1135
-
1136
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:67
1137
- msgid "Enable or disable the columns."
1138
- msgstr "Aktiviere oder deaktiviere die Spalten."
1139
-
1140
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:106
1141
- #, php-format
1142
- msgid "Create a custom template by copying it from %1$s to %2$s."
1143
- msgstr "Erstellen Sie ein eigenes template durch Kopie von %1$s zu %2$s."
1144
-
1145
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:108
1146
- #, php-format
1147
- msgid ""
1148
- "<strong>Note:</strong> The %1$s template will probably no longer be "
1149
- "supported in future versions, consider using the %2$s template."
1150
- msgstr "Hinweis: Das %1$s template wird nicht mehr weiterentwickelt."
1151
-
1152
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:116
1153
- msgid "Color theme"
1154
- msgstr "Farben (theme)"
1155
-
1156
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:132
1157
- msgid "Display theme text in black color"
1158
- msgstr "Text in schwarz"
1159
-
1160
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:134
1161
- msgid ""
1162
- "Enable if you've set the color theme to white or some other light color."
1163
- msgstr "Aktivieren, wenn ihr Theme weiß oder hell gestaltet ist."
1164
-
1165
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:142
1166
- msgid "Date format"
1167
- msgstr "Datumsformat"
1168
-
1169
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:147
1170
- #, php-format
1171
- msgid "<a href=\"%s\">Format</a> of invoice date and order date."
1172
- msgstr "<a href=\"%s\">Format</a> des Datums."
1173
-
1174
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:159
1175
- msgid "Display prices including tax"
1176
- msgstr "Preis inklusive Mehrwertsteuer anzeigen"
1177
-
1178
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:161
1179
- msgid ""
1180
- "Line item totals will be including tax. <br/><b>Note</b>: Subtotal will "
1181
- "still be excluding tax, so disable it within the visible columns section."
1182
- msgstr ""
1183
- "Einzelpostensummen beinhalten Steuern. \n"
1184
- "<br/><b>Hinweis</b>: Zwischensummen werden ohne Steuern angezeigt, wenn "
1185
- "keine andere Einstellung getroffen wird."
1186
-
1187
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:174
1188
- msgid "Shipping taxable"
1189
- msgstr "Versandkosten versteuerbar"
1190
-
1191
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:176
1192
- msgid "Enable to display subtotal including shipping."
1193
- msgstr "Einschalten um Zwischensumme mit Versandkosten anzuzeigen."
1194
-
1195
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:189
1196
- msgid "Mark invoice as paid"
1197
- msgstr "Rechnung als bezahlt markieren"
1198
-
1199
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:191
1200
- msgid "Invoice will be watermarked when order has been paid."
1201
- msgstr "Rechnung erhält Wasserzeichen, wenn bezahlt."
1202
-
1203
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:204
1204
- msgid "Disable Packing Slips"
1205
- msgstr "Lieferschein nicht erstellen"
1206
-
1207
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:211
1208
- msgid "Company name"
1209
- msgstr "Firmenname"
1210
-
1211
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:222
1212
- msgid "Company logo"
1213
- msgstr "Firmenlogo"
1214
-
1215
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:227
1216
- #, fuzzy, php-format
1217
- #| msgid ""
1218
- #| "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> "
1219
- #| "or choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href="
1220
- #| "\"%3$s\" target=\"_blank\">URL</a>."
1221
- msgid ""
1222
- "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> or "
1223
- "choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href=\"%3$s"
1224
- "\" target=\"_blank\">File URL</a>."
1225
- msgstr ""
1226
- "Benutzen Sie die <a href=\"%1$s\">Media Library</a> und geben Sie die <a "
1227
- "href=\"%3$s\" target=\"_blank\">URL</a> der Datei an."
1228
-
1229
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:233
1230
- msgid "Company address"
1231
- msgstr "Firmenadresse"
1232
-
1233
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:238
1234
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:249
1235
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:271
1236
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:310
1237
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:322
1238
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:333
1239
- #, php-format
1240
- msgid "Allowed HTML tags: %s."
1241
- msgstr "Erlaubte HTML tags: %s."
1242
-
1243
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:244
1244
- msgid "Company details"
1245
- msgstr "Firmendetails"
1246
-
1247
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:255
1248
- msgid "Title"
1249
- msgstr "Titel"
1250
-
1251
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:260
1252
- msgid "Change the name of the invoice."
1253
- msgstr "Ändern Sie den Namen der Rechnung."
1254
-
1255
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:261
1256
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:853
1257
- msgid "Invoice"
1258
- msgstr "Rechnung"
1259
-
1260
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:266
1261
- msgid "Thank you text"
1262
- msgstr "Dankestext"
1263
-
1264
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:272
1265
- msgid "Visible in big colored bar directly after invoice total."
1266
- msgstr ""
1267
- "Sichtbar in großer, farbig markierter Zeile direkt nach der Gesamtsumme."
1268
-
1269
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:283
1270
- msgid "Show customers shipping address"
1271
- msgstr "Kundenadresse anzeigen"
1272
-
1273
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:285
1274
- msgid ""
1275
- "Customers shipping address won't be visible when order has only virtual "
1276
- "products."
1277
- msgstr ""
1278
- "Kundenadresse wird nicht sichtbar sein, wenn die Bestellung nur virtuelle "
1279
- "Produkte beeinhaltet."
1280
-
1281
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:298
1282
- msgid "Show customer notes"
1283
- msgstr "Kundenkommentare anzeigen"
1284
-
1285
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:305
1286
- msgid "Terms & conditions, policies etc."
1287
- msgstr "AGB’s‚ Richtlinien etc."
1288
-
1289
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:311
1290
- #, php-format
1291
- msgid ""
1292
- "Visible below customer notes and above footer. Want to attach additional "
1293
- "pages to the invoice? Take a look at <a href=\"%1$s\">%2$s</a> plugin."
1294
- msgstr ""
1295
- "Wird angezeigt unter Kundenbemerkungen und über dem Footer. Möchten Sie "
1296
- "weitere Seiten an die Rechnung anfügen? Schauen Sie sich dieses Plugin an: "
1297
- "<a href=\"%1$s\">%2$s</a>."
1298
-
1299
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:317
1300
- msgid "Left footer column."
1301
- msgstr "Linke Fußzeilenspalte."
1302
-
1303
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:328
1304
- msgid "Right footer column."
1305
- msgstr "Rechte Fußzeilenspalte."
1306
-
1307
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:339
1308
- msgid "Type"
1309
- msgstr "Typ"
1310
-
1311
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:346
1312
- msgid "WooCommerce order number"
1313
- msgstr "WooCommerce Auftragsnummer"
1314
-
1315
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:347
1316
- msgid "Sequential number"
1317
- msgstr "Lfd. Nummer"
1318
-
1319
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:359
1320
- msgid "Reset invoice counter"
1321
- msgstr "Reset invoice counter"
1322
-
1323
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:367
1324
- msgid "Next"
1325
- msgstr "Weiter"
1326
-
1327
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:372
1328
- msgid "Next invoice number when resetting counter."
1329
- msgstr "Nächste Rechnungsnummer nach Reset."
1330
-
1331
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:374
1332
- msgid ""
1333
- "<b>Note:</b> Only available for Sequential numbering. All PDF invoices with "
1334
- "invoice number greater then next invoice number will be deleted!"
1335
- msgstr ""
1336
- "<b>Hinweis:</b> Nur verfügbar für sequentielle Nummerierung. Alle Rechnungen "
1337
- "mit einer Nummer größer als die folgende werden gelöscht!"
1338
-
1339
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:384
1340
- msgid "Digits"
1341
- msgstr "Ziffern"
1342
-
1343
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:441
1344
- msgid "Reset yearly"
1345
- msgstr "Jährlicher Reset."
1346
-
1347
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:443
1348
- msgid "Automatically reset invoice numbers on new year's day."
1349
- msgstr ""
1350
- "Automatischer Reset der laufenden Rechnungsnummern zu Beginn eines neuen "
1351
- "Jahres."
1352
-
1353
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:445
1354
- msgid ""
1355
- "<b>Note</b>: You will have to generate all invoices again when changing "
1356
- "option."
1357
- msgstr ""
1358
- "<b>Hinweis</b>: Sie müssen alle Rechnungen erneut generieren, wenn Sie diese "
1359
- "Option ändern."
1360
-
1361
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:482
1362
- msgid "Tax (item)"
1363
- msgstr "Steuer (Einzel)"
1364
-
1365
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:494
1366
- msgid "Tax (total)"
1367
- msgstr "Steuer (Summe)"
1368
-
1369
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:564
1370
- msgid ""
1371
- "Company logo not found. Upload the image to the Media Library and try again."
1372
- msgstr "Datei (Logo) nicht gefunden."
1373
-
1374
- #: woocommerce-pdf-invoices/includes/admin/views/html-activation-notice.php:16
1375
- #, php-format
1376
- msgid ""
1377
- "The settings of WooCommerce PDF Invoices are available <a href=\"%1$s\">on "
1378
- "this page</a>."
1379
- msgstr ""
1380
- "Die Einstellungen von WooCommerce PDF Invoices finden Sie <a href=\"%1$s"
1381
- "\">hier</a>."
1382
-
1383
- #: woocommerce-pdf-invoices/includes/admin/views/html-deactivation-notice.php:19
1384
- #, php-format
1385
- msgid ""
1386
- "Before we deactivate WooCommerce PDF Invoices, would you care to <a href="
1387
- "\"%1$s\" target=\"_blank\">let us know why</a> so we can improve it for you? "
1388
- "<a href=\"%2$s\">No, deactivate now</a>."
1389
- msgstr ""
1390
- "Helfen Sie uns WooCommerce PDF Invoices zu verbessern und teilen Sie uns den "
1391
- "<a href=\"%1$s\" target=\"_blank\">Grund</a> für die Deaktivierung mit? <a "
1392
- "href=\"%2$s\">Sofort deaktivieren</a>."
1393
-
1394
- #: woocommerce-pdf-invoices/includes/admin/views/html-rate-notice.php:18
1395
- #, php-format
1396
- msgid ""
1397
- "Hi%1$s! You're using <b>WooCommerce PDF Invoices</b> for some time now and "
1398
- "we would appreciate your <a href=\"%2$s\" target=\"_blank\">★★★★★</a> "
1399
- "rating. It will support future development big-time."
1400
- msgstr ""
1401
- "Hi%1$s! Sie benutzen <b>WooCommerce PDF Invoices</b> jetzt schon einige "
1402
- "Zeit. Wir freuen uns über ihre Unterstützung durch ein Rating <a href=\"%2$s"
1403
- "\" target=\"_blank\">★★★★★</a>."
1404
-
1405
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:2
1406
- msgid "WooCommerce PDF Invoices Premium"
1407
- msgstr "WooCommerce PDF Invoices Premium"
1408
-
1409
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:4
1410
- msgid ""
1411
- "This plugin offers a premium version which comes with the following features:"
1412
- msgstr "Dieses Plugin gibt es als Premiumversion mit folgenden Features:"
1413
-
1414
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:5
1415
- msgid ""
1416
- "Attach PDF invoices to many more email types including third party plugins."
1417
- msgstr ""
1418
-
1419
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:6
1420
- msgid ""
1421
- "Send credit notes and cancelled PDF invoices when refunding or cancelling "
1422
- "order."
1423
- msgstr ""
1424
-
1425
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:7
1426
- msgid ""
1427
- "Fully customize the table content by modifying line item columns and total "
1428
- "rows."
1429
- msgstr ""
1430
-
1431
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:8
1432
- msgid ""
1433
- "Automatically send PDF invoices as a reminder configurable within a specific "
1434
- "period of time."
1435
- msgstr ""
1436
-
1437
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:9
1438
- #, fuzzy
1439
- #| msgid "Let customers generate a global invoice from their account"
1440
- msgid ""
1441
- "Let customers decide if they would like to get a PDF invoice on checkout."
1442
- msgstr "Kunden können eine Sammelrechnung in ihrem Konto erstellen"
1443
-
1444
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:10
1445
- msgid "Change the font of the PDF invoices."
1446
- msgstr "Schriftart ändern."
1447
-
1448
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:12
1449
- msgid ""
1450
- "Generate PDF invoices in multiple languages (WPML and Polylang compatible)."
1451
- msgstr ""
1452
- "Rechnungen in unterschiedlichen Sprachen generieren (WPML and Polylang "
1453
- "compatible)."
1454
-
1455
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:13
1456
- msgid "Bulk generate PDF invoices."
1457
- msgstr "Mehrere Rechnungen gleichzeitig generieren."
1458
-
1459
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:14
1460
- msgid "Bulk export and/or download PDF invoices."
1461
- msgstr "Download/Export mehrerer Rechnungen gleichzeitig."
1462
-
1463
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:15
1464
- msgid "Bill periodically by generating and sending global invoices."
1465
- msgstr "Periodische Sammelrechnungen verschicken."
1466
-
1467
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:16
1468
- msgid "Add additional PDF's to PDF invoices."
1469
- msgstr "Weitere PDF-Dateien anhängen."
1470
-
1471
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:17
1472
- msgid "Send PDF invoices to multiple recipients."
1473
- msgstr ""
1474
-
1475
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:18
1476
- #, php-format
1477
- msgid "Attach invoices to <a href=\"%s\">WooCommerce Subscriptions</a> emails."
1478
- msgstr "Rechnungen an <a href=\"%s\">WooCommerce Subscriptions</a> anhängen."
1479
-
1480
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:20
1481
- msgid "Learn more"
1482
- msgstr "Mehr erfahren"
1483
-
1484
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:23
1485
- msgid "Stay up-to-date"
1486
- msgstr "Bleiben Sie up-to-date"
1487
-
1488
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:27
1489
- msgid ""
1490
- "We're constantly developing new features, stay up-to-date by subscribing to "
1491
- "our newsletter."
1492
- msgstr "Bleiben Sie mit unserem Newsletter up-to-date über neue Funktionen."
1493
-
1494
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:33
1495
- msgid "Your email address"
1496
- msgstr "Ihre E-Mail"
1497
-
1498
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:39
1499
- msgid "Signup"
1500
- msgstr "Registrieren"
1501
-
1502
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:42
1503
- msgid "No spam, ever. Unsubscribe at any time"
1504
- msgstr ""
1505
- "Einwilligung kann jederzeit widerrufen werden, keine Weitergabe der Daten, "
1506
- "kein Spam."
1507
-
1508
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:51
1509
- msgid "About"
1510
- msgstr "Über Uns"
1511
-
1512
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:53
1513
- msgid ""
1514
- "This plugin is an open source project wich aims to fill the invoicing gap of "
1515
- "<a href=\"http://www.woothemes.com/woocommerce\">WooCommerce</a>."
1516
- msgstr ""
1517
- "Dieses Plugin ist ein Opensource-Projekt um die fehlende Funktion "
1518
- "automatisierter PDF-Rechnungen in <a href=\"http://www.woothemes.com/"
1519
- "woocommerce\">WooCommerce</a> zu schließen."
1520
-
1521
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:56
1522
- #, php-format
1523
- msgid "Version: %s"
1524
- msgstr "Version: %s"
1525
-
1526
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:58
1527
- #, php-format
1528
- msgid "Author: %s"
1529
- msgstr "Autor: %s"
1530
-
1531
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:64
1532
- #, php-format
1533
- msgid ""
1534
- "We will never ask for donations, but to guarantee future development, we do "
1535
- "need your support. Please show us your appreciation by leaving a <a href="
1536
- "\"%1$s\">★★★★★</a> rating and vote for <a href=\"%2$s\">works</a>."
1537
- msgstr ""
1538
- "Bitte unterstützen Sie mit einem Rating <a href=\"%1$s\">★★★★★</a><a href="
1539
- "\"%2$s\">unsere Arbeit</a>."
1540
-
1541
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:88
1542
- msgid ""
1543
- "Checkout this amazing free WooCommerce PDF Invoices plugin for WordPress!"
1544
- msgstr ""
1545
- "Testen sie das kostenlose WooCommerce PDF Invoices plugin for WordPress!"
1546
-
1547
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:93
1548
- msgid "Need Help?"
1549
- msgstr "Benötigen Sie Hilfe?"
1550
-
1551
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:95
1552
- msgid "Frequently Asked Questions"
1553
- msgstr "FAQ"
1554
-
1555
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:96
1556
- msgid "Support forum"
1557
- msgstr "Support forum"
1558
-
1559
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:97
1560
- msgid "Request a feature"
1561
- msgstr "Feature Request"
1562
-
1563
- #: woocommerce-pdf-invoices/includes/class-invoice.php:99
1564
- #, fuzzy
1565
- #| msgid "Invoice #: %s"
1566
- msgid "Invoice #:"
1567
- msgstr "Rechnungsnummer: %s"
1568
-
1569
- #: woocommerce-pdf-invoices/includes/class-invoice.php:103
1570
- #, fuzzy
1571
- #| msgid "Invoice Date: %s"
1572
- msgid "Invoice Date:"
1573
- msgstr "Rechnungsdatum: %s"
1574
-
1575
- #: woocommerce-pdf-invoices/includes/class-invoice.php:107
1576
- #, fuzzy
1577
- #| msgid "Order Date: %s"
1578
- msgid "Order Date:"
1579
- msgstr "Lieferdatum: %s"
1580
-
1581
- #: woocommerce-pdf-invoices/includes/class-invoice.php:111
1582
- #, fuzzy
1583
- #| msgid "Order Number: %s"
1584
- msgid "Order Number:"
1585
- msgstr "Auftragsnummer: %s"
1586
-
1587
- #: woocommerce-pdf-invoices/includes/class-invoice.php:115
1588
- #, fuzzy
1589
- #| msgid "Payment Method: %s"
1590
- msgid "Payment Method:"
1591
- msgstr "Zahlungsart: %s"
1592
-
1593
- #: woocommerce-pdf-invoices/includes/class-packing-slip.php:66
1594
- msgid "View packing slip"
1595
- msgstr "Lieferschein öffnen"
1596
-
1597
- #: woocommerce-pdf-invoices/includes/compatibility/class-wc-core-compatibility.php:245
1598
- msgid "WooCommerce"
1599
- msgstr "WooCommerce"
1600
-
1601
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:37
1602
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:39
1603
- #, php-format
1604
- msgid "Order Number: %s"
1605
- msgstr "Auftragsnummer: %s"
1606
-
1607
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:268
1608
- msgid "VAT 0%"
1609
- msgstr "USt. 0%"
1610
-
1611
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:284
1612
- msgid "Refunded"
1613
- msgstr "Erstattet"
1614
-
1615
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:300
1616
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:305
1617
- msgid "Customer note"
1618
- msgstr "Kundenkommentar"
1619
-
1620
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:29
1621
- msgid "Packing Slip"
1622
- msgstr "Lieferschein"
1623
-
1624
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:44
1625
- #, php-format
1626
- msgid "Shipping Method: %s"
1627
- msgstr "Versand: %s"
1628
-
1629
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:626
1630
- msgid "Invoice No."
1631
- msgstr "Rechnungsnummer"
1632
-
1633
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:678
1634
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:700
1635
- msgid "PDF Invoice"
1636
- msgstr "PDF Rechnung"
1637
-
1638
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:715
1639
- msgid "Create"
1640
- msgstr "Erstellen"
1641
-
1642
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:721
1643
- #, fuzzy
1644
- #| msgid "Order Date: %s"
1645
- msgid "Date:"
1646
- msgstr "Lieferdatum: %s"
1647
-
1648
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:725
1649
- #, fuzzy
1650
- #| msgid "VAT Number: %s"
1651
- msgid "Number:"
1652
- msgstr "USt-IdNr.: %s"
1653
-
1654
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:734
1655
- msgid "Sent?"
1656
- msgstr ""
1657
-
1658
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:744
1659
- msgid "Debug"
1660
- msgstr ""
1661
-
1662
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:758
1663
- msgid "Update"
1664
- msgstr ""
1665
-
1666
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:763
1667
- #, fuzzy
1668
- #| msgid "Are you sure to delete the invoice?"
1669
- msgid "Are you sure to delete the PDF invoice?"
1670
- msgstr "Rechnung wirklich löschen?"
1671
-
1672
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:767
1673
- #, php-format
1674
- msgid ""
1675
- "You will be missing a PDF invoice with invoice number %d and thus creating "
1676
- "an accounting gap!"
1677
- msgstr ""
1678
-
1679
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:770
1680
- #, php-format
1681
- msgid "Instead consider using Cancelled PDF invoices with %s."
1682
- msgstr ""
1683
-
1684
- #~ msgid "Send customer invoices directly to suppliers and others."
1685
- #~ msgstr "Rechnungen direkt an Lieferanten und weitere versenden.\n"
1686
-
1687
- #~ msgid "Visible Columns"
1688
- #~ msgstr "Sichtbare Spalten"
1689
-
1690
- #~ msgid "Invoiced on:"
1691
- #~ msgstr "In Rechnung gestellt am:"
1692
-
1693
- #~ msgid "Invoice number:"
1694
- #~ msgstr "Rechnungsnummer:"
1695
-
1696
- #~ msgid "Attach to %s Emails"
1697
- #~ msgstr "%s Emails anfügen"
1698
-
1699
- #~ msgid "New Renewal Order"
1700
- #~ msgstr "New Renewal Order"
1701
-
1702
- #~ msgid "Subscription Switch Complete"
1703
- #~ msgstr "Subscription Switch Complete"
1704
-
1705
- #~ msgid "Processing Renewal order"
1706
- #~ msgstr "Processing Renewal order"
1707
-
1708
- #~ msgid "Completed Renewal Order"
1709
- #~ msgstr "Neue Rechnung fertiggestellt"
1710
-
1711
- #~ msgid "Customer Renewal Invoice"
1712
- #~ msgstr "Neue Kundenrechnung"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WooCommerce PDF Invoices\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2017-11-29 20:36+0100\n"
6
+ "PO-Revision-Date: 2017-11-29 20:36+0100\n"
7
+ "Last-Translator: Julius Reich <shop@koerner-musik.de>\n"
8
+ "Language-Team: German (Formal)\n"
9
+ "Language: de_DE\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 2.0.4\n"
14
+ "X-Poedit-Basepath: ../..\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
18
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
19
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
20
+ "X-Poedit-SearchPath-0: woocommerce-pdf-invoices\n"
21
+ "X-Poedit-SearchPath-1: woocommerce-pdf-invoices-premium\n"
22
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
23
+
24
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:25
25
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:427
26
+ msgid "Premium"
27
+ msgstr "Premium"
28
+
29
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:99
30
+ #, php-format
31
+ msgid ""
32
+ "Whoops, your license for %1$s has expired. To keep receiving updates and "
33
+ "premium support, we offer you a 30%% discount when you <a href=\"%2$s\" "
34
+ "target=\"_blank\">renew your license</a>."
35
+ msgstr ""
36
+
37
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:225
38
+ msgid "Premium Options"
39
+ msgstr "Premium Optionen"
40
+
41
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:228
42
+ msgid "Template Options"
43
+ msgstr "Template Optionen"
44
+
45
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:231
46
+ msgid "Supplier Options"
47
+ msgstr "Lieferanten Optionen"
48
+
49
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:232
50
+ msgid "Send customer invoice automatically to your supplier(s)."
51
+ msgstr "Kunden Rechnung automatisch an Lieferanten senden."
52
+
53
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:235
54
+ #, fuzzy
55
+ #| msgid "Header Options"
56
+ msgid "Credit Note Options"
57
+ msgstr "Header Optionen"
58
+
59
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:238
60
+ #, fuzzy
61
+ #| msgid "Invoice Number Options"
62
+ msgid "Credit Note Number Options"
63
+ msgstr "Rechnungsnummer Optionen"
64
+
65
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:241
66
+ msgid "Global Invoice Options"
67
+ msgstr "Optionen für Sammelrechnungen"
68
+
69
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:242
70
+ msgid ""
71
+ "Generate global invoices on Orders page by selecting multiple orders and "
72
+ "applying action or let customers generate periodically from My Account page. "
73
+ "<strong>Global invoices are only supported when using the micro template!</"
74
+ "strong>"
75
+ msgstr ""
76
+ "Sammelrechnungen aktivieren, durch Anwahl mehrerer Bestellungen aus der "
77
+ "Übersicht, oder durch den Kunden in seinem Kundenkonto (Sammelrechnungen "
78
+ "benötigen das micro template!)"
79
+
80
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:245
81
+ msgid "Reminder Options"
82
+ msgstr "Erinnerungen (Optionen)"
83
+
84
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:246
85
+ #, php-format
86
+ msgid ""
87
+ "Automatically send PDF invoice after a specific period of time. When "
88
+ "enabled, a new <a href=\"%s\">Customer invoice reminder</a> email will be "
89
+ "used to send the PDF invoice."
90
+ msgstr ""
91
+ "Automatischer Rechnungsversand nach bestimmter Zeit. Wenn aktiviert, wird "
92
+ "eine neue Email <a href=\"%s\">\"Kundenerinnerung für Rechnungen\"</a> "
93
+ "benutzt, um die Rechnung zu versenden."
94
+
95
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:249
96
+ msgid "Request Invoice Options"
97
+ msgstr "\"Rechnung anfordern\" Optionen"
98
+
99
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:250
100
+ msgid ""
101
+ "Let a customer decide to generate a PDF invoice. When enabled, a checkbox "
102
+ "field will be added on the checkout page so customers can request a PDF "
103
+ "invoice."
104
+ msgstr ""
105
+ "Der Kunde kann entscheiden, ob eine PDF-Rechnung erstellt wird (blendet "
106
+ "checkbox in der Kasse ein)."
107
+
108
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:267
109
+ msgid "Activation email"
110
+ msgstr "Aktivierungsmail"
111
+
112
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:272
113
+ #, php-format
114
+ msgid "Enter your activation email from %s."
115
+ msgstr "Bitte geben Sie ihre Aktivierung von %s ein."
116
+
117
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:278
118
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:703
119
+ msgid "License"
120
+ msgstr "Lizenz"
121
+
122
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:283
123
+ #, php-format
124
+ msgid "Enter your license key from %s to receive updates."
125
+ msgstr "Bitte geben Sie ihre Lizenz von %s ein, um Updates zu erhalten."
126
+
127
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:289
128
+ msgid "PDF attachment"
129
+ msgstr "PDF-Anhang"
130
+
131
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:294
132
+ msgid "Add for example a PDF with your terms & conditions."
133
+ msgstr "Hänge ein PDF-Dokument an, wie zum Beispiel deine AGBs."
134
+
135
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:300
136
+ msgid "Suppliers"
137
+ msgstr "Lieferanten"
138
+
139
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:305
140
+ #, fuzzy
141
+ #| msgid ""
142
+ #| "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by "
143
+ #| "simply adding there Email It In email addresses. Email addresses need to "
144
+ #| "be seperated by comma's."
145
+ msgid ""
146
+ "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by simply "
147
+ "adding their Email It In email addresses. Email addresses need to be "
148
+ "seperated by comma's."
149
+ msgstr "Tip: Nutzen Sie \"Email it in\""
150
+
151
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:311
152
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:72
153
+ msgid "Attach to Emails"
154
+ msgstr "Email anfügen"
155
+
156
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:322
157
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:400
158
+ msgid "Prefix"
159
+ msgstr "Prefix"
160
+
161
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:333
162
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:411
163
+ msgid "Suffix"
164
+ msgstr "Suffix"
165
+
166
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:344
167
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:422
168
+ msgid "Format"
169
+ msgstr "Format"
170
+
171
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:349
172
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:427
173
+ #, php-format
174
+ msgid "Available placeholders: %s."
175
+ msgstr "Verfügbare Platzhalter: %s."
176
+
177
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:351
178
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:429
179
+ #, php-format
180
+ msgid "<b>Note:</b> %s is required and slashes aren't supported."
181
+ msgstr "<b>Hinweis:</b> %s wird benötigt und Schräger sind nicht unterstützt."
182
+
183
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:363
184
+ msgid "Enable customer generation"
185
+ msgstr "Rechnungserstellung im Kundenkonto aktivieren"
186
+
187
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:365
188
+ msgid "Let customers generate a global invoice from their account"
189
+ msgstr "Kunden können eine Sammelrechnung in ihrem Konto erstellen"
190
+
191
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:373
192
+ msgid "Customer generation period"
193
+ msgstr "Laufzeit"
194
+
195
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:378
196
+ msgid ""
197
+ "Should your customers have the ability to generate a global invoice by month "
198
+ "or by year?<br/><strong>Note:</strong> Customer generation should be enabled."
199
+ msgstr "Sammelrechnungsoption für Monat, oder Jahr?"
200
+
201
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:380
202
+ msgid "Month"
203
+ msgstr "Monat"
204
+
205
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:381
206
+ msgid "Year"
207
+ msgstr "Jahr"
208
+
209
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:393
210
+ msgid "Send to your Cloud Storage"
211
+ msgstr "An Cloud Storage senden"
212
+
213
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:405
214
+ msgid "Email to customer"
215
+ msgstr "Email an Kunden"
216
+
217
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:417
218
+ msgid "Email to supplier(s)"
219
+ msgstr "Email an Lieferanten"
220
+
221
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:424
222
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:146
223
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:146
224
+ msgid "Email subject"
225
+ msgstr "Email Betreff"
226
+
227
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:429
228
+ msgid "Subject for the global invoice email."
229
+ msgstr "Betreff für Sammelrechnung."
230
+
231
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:436
232
+ msgid "Email message"
233
+ msgstr "Email-Text"
234
+
235
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:441
236
+ msgid "Message for the global invoice email."
237
+ msgstr "Mail-Text für Sammelrechnung"
238
+
239
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:453
240
+ msgid "Enable reminder"
241
+ msgstr "Erinnerungen aktivieren"
242
+
243
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:460
244
+ #, fuzzy
245
+ #| msgid "Days until reminder"
246
+ msgid "Days until due date"
247
+ msgstr "Tage bis zur Erinnerung"
248
+
249
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:465
250
+ #, fuzzy
251
+ #| msgid "Number of days from order or invoice date until reminder date."
252
+ msgid "Number of days from order or invoice date until due date."
253
+ msgstr "Anzahl der Tage bis zur Erinnerung an die Rechnung."
254
+
255
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:474
256
+ msgid "Days until reminder"
257
+ msgstr "Tage bis zur Erinnerung"
258
+
259
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:479
260
+ msgid "Number of days from order or invoice date until reminder date."
261
+ msgstr "Anzahl der Tage bis zur Erinnerung an die Rechnung."
262
+
263
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:488
264
+ msgid "Date type"
265
+ msgstr "Datumsart"
266
+
267
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:493
268
+ msgid "Choose the type of date to count from."
269
+ msgstr "Wählen Sie das Datum, von dem aus gezählt werden soll."
270
+
271
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:495
272
+ msgid "Order date"
273
+ msgstr "Bestelldatum"
274
+
275
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:496
276
+ msgid "Invoice date"
277
+ msgstr "Rechnungsdatum"
278
+
279
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:508
280
+ msgid "Enable Request Invoice."
281
+ msgstr "Rechnung anfordern aktivieren"
282
+
283
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:590
284
+ msgid "Activation email cannot be empty."
285
+ msgstr "Aktivierungsmail darf nicht leer sein."
286
+
287
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:630
288
+ msgid ""
289
+ "Something went wrong with the activation of your license. Contact the author "
290
+ "for support."
291
+ msgstr "Lizenz konnte nicht aktiviert werden."
292
+
293
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:651
294
+ msgid "File to large."
295
+ msgstr "Datei ist zu groß."
296
+
297
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:657
298
+ msgid "Only PDF files are allowed."
299
+ msgstr "Es sind lediglich PDF-Dokumente zulässig."
300
+
301
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:682
302
+ msgid "Remove"
303
+ msgstr "Entfernen"
304
+
305
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:684
306
+ msgid "Choose"
307
+ msgstr "Auswählen"
308
+
309
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:712
310
+ msgid "Inactive"
311
+ msgstr "Inaktiv"
312
+
313
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:714
314
+ msgid "Active"
315
+ msgstr "Aktiv"
316
+
317
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-credit-note.php:12
318
+ #, php-format
319
+ msgid "PDF Credit Note %1$s"
320
+ msgstr ""
321
+
322
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:10
323
+ msgid "Generate Global Invoice"
324
+ msgstr "Sammelrechnung erstellen"
325
+
326
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:20
327
+ msgid "Select a month"
328
+ msgstr "Monat auswählen"
329
+
330
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:33
331
+ msgid "Select a year"
332
+ msgstr "Jahr auswählen"
333
+
334
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:47
335
+ msgid "Generate invoice"
336
+ msgstr "Rechnung generieren"
337
+
338
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:16
339
+ #, fuzzy
340
+ #| msgid "Global invoice successfully generated! "
341
+ msgid "Global invoice successfully generated!"
342
+ msgstr "Sammelrechnung erfolgreich erstellt!"
343
+
344
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
345
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:663
346
+ msgid "View invoice"
347
+ msgstr "Rechnung anzeigen"
348
+
349
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
350
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:751
351
+ msgid "View"
352
+ msgstr "Anzeigen"
353
+
354
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:37
355
+ msgid "Bulk Export PDF Invoices"
356
+ msgstr "Mehrere Rechnungen exportieren"
357
+
358
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:38
359
+ msgid "Bulk Export PDF Packing Slips"
360
+ msgstr "Mehrere Lieferscheine exportieren"
361
+
362
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:85
363
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:73
364
+ msgid "No order selected."
365
+ msgstr "Keine Bestellung ausgewählt."
366
+
367
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:37
368
+ msgid "Bulk Generate PDF Invoices"
369
+ msgstr "Mehrere Rechnungen erstellen"
370
+
371
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:38
372
+ msgid "Bulk Generate PDF Packing Slips"
373
+ msgstr "Mehrere Lieferscheine erstellen"
374
+
375
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:135
376
+ msgid "PDF Credit Notes"
377
+ msgstr ""
378
+
379
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:283
380
+ #, php-format
381
+ msgid ""
382
+ "<a href=\"%1$s\" class=\"%2$s\" target=\"%3$s\">PDF Credit Note (%4$s)</a> "
383
+ "for Refund #%5$s."
384
+ msgstr ""
385
+
386
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:289
387
+ #, php-format
388
+ msgid "created on %1$s at %2$s"
389
+ msgstr ""
390
+
391
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:291
392
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:775
393
+ msgid "Delete"
394
+ msgstr ""
395
+
396
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:297
397
+ msgid "There are no credit notes yet."
398
+ msgstr ""
399
+
400
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:309
401
+ msgid "Create PDF Credit Notes for selected refund(s)"
402
+ msgstr ""
403
+
404
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:339
405
+ msgid "Credit note"
406
+ msgstr ""
407
+
408
+ #: woocommerce-pdf-invoices-premium/includes/class-install.php:91
409
+ #, php-format
410
+ msgid ""
411
+ "%1$s requires %2$s to be activated. Install and activate it and you should "
412
+ "be good to go! :)"
413
+ msgstr "%1$s benötigt %2$s."
414
+
415
+ #: woocommerce-pdf-invoices-premium/includes/class-install.php:100
416
+ #, php-format
417
+ msgid ""
418
+ "%1$s requires at least %2$s. Update it and get the best out of both "
419
+ "plugins. :)"
420
+ msgstr "%1$s benötigt mindestens %2$s."
421
+
422
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:228
423
+ msgid "Invalid request"
424
+ msgstr "Ungültige Anfrage"
425
+
426
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:248
427
+ msgid "No orders found."
428
+ msgstr "Keine Bestellungen gefunden."
429
+
430
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:295
431
+ msgid "Generate global invoice"
432
+ msgstr "Sammelrechnung erstellen"
433
+
434
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:323
435
+ msgid ""
436
+ "Could not generate the invoice. Global invoices are only supported when "
437
+ "using the micro template."
438
+ msgstr "Sammelrechnung kann nur mit dem micro template erstellt werden."
439
+
440
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:336
441
+ msgid "Select more then one order to generate a global invoice."
442
+ msgstr "Wählen Sie mehr als eine Bestellung für eine Sammelrechnung aus."
443
+
444
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
445
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
446
+ msgid "Yes"
447
+ msgstr "Ja"
448
+
449
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
450
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
451
+ msgid "No"
452
+ msgstr "Nein"
453
+
454
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:83
455
+ msgid "Reminder on:"
456
+ msgstr "Erinnerung:"
457
+
458
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:88
459
+ msgid "Reminder sent?"
460
+ msgstr "Erinnerung aktiviert?"
461
+
462
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:296
463
+ #, fuzzy
464
+ #| msgid "Order Date: %s"
465
+ msgid "Due Date:"
466
+ msgstr "Lieferdatum: %s"
467
+
468
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:61
469
+ msgid ""
470
+ "Instead consider creating a Cancelled PDF invoice by changing the order "
471
+ "status to Cancelled."
472
+ msgstr ""
473
+
474
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:103
475
+ #, fuzzy
476
+ #| msgid "Cancel"
477
+ msgid "Cancelled"
478
+ msgstr "Abbrechen"
479
+
480
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:116
481
+ msgid "Advanced Table Content"
482
+ msgstr ""
483
+
484
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:117
485
+ msgid ""
486
+ "Enable Advanced Table Content settings to fully customize line item columns "
487
+ "and total rows. When enabled the standard Table Content settings will be "
488
+ "ignored. When using a custom template, make sure to update it! Micro "
489
+ "template is not supported."
490
+ msgstr ""
491
+
492
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:145
493
+ msgid "Enable Advanced Table Content"
494
+ msgstr ""
495
+
496
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:157
497
+ msgid "Show SKU as meta data"
498
+ msgstr ""
499
+
500
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:164
501
+ msgid "Display tax totals"
502
+ msgstr ""
503
+
504
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:172
505
+ msgid "Itemized"
506
+ msgstr ""
507
+
508
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:173
509
+ msgid "As a single total"
510
+ msgstr ""
511
+
512
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:179
513
+ #, fuzzy
514
+ #| msgid "Left footer column."
515
+ msgid "Line item columns"
516
+ msgstr "Linke Fußzeilenspalte."
517
+
518
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:188
519
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:393
520
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:48
521
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:403
522
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:53
523
+ msgid "Description"
524
+ msgstr "Beschreibung"
525
+
526
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:193
527
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:198
528
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:401
529
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:405
530
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:57
531
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:60
532
+ msgid "Cost"
533
+ msgstr "Preis"
534
+
535
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:203
536
+ msgid "Quantity"
537
+ msgstr ""
538
+
539
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:213
540
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:218
541
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:281
542
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:286
543
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:413
544
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:417
545
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:77
546
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:235
547
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:405
548
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:71
549
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:275
550
+ msgid "Total"
551
+ msgstr "Gesamt"
552
+
553
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:227
554
+ #, fuzzy
555
+ #| msgid "Total"
556
+ msgid "Total rows"
557
+ msgstr "Gesamt"
558
+
559
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:236
560
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:261
561
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:173
562
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:506
563
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:207
564
+ msgid "Discount"
565
+ msgstr "Rabatt"
566
+
567
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:241
568
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:266
569
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:182
570
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:200
571
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:518
572
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:215
573
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:231
574
+ msgid "Shipping"
575
+ msgstr "Versand"
576
+
577
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:246
578
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:271
579
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:212
580
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:242
581
+ msgid "Fee"
582
+ msgstr "Gebühr"
583
+
584
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:251
585
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:256
586
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:191
587
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:470
588
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:223
589
+ msgid "Subtotal"
590
+ msgstr "Zwischensumme"
591
+
592
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:349
593
+ msgid "SKU:"
594
+ msgstr ""
595
+
596
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:397
597
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:65
598
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:59
599
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:404
600
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:62
601
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:63
602
+ msgid "Qty"
603
+ msgstr "Stück"
604
+
605
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:607
606
+ #, fuzzy, php-format
607
+ #| msgid "Subtotal"
608
+ msgid "Subtotal %s"
609
+ msgstr "Zwischensumme"
610
+
611
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:625
612
+ #, fuzzy, php-format
613
+ #| msgid "Discount"
614
+ msgid "Discount %s"
615
+ msgstr "Rabatt"
616
+
617
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:652
618
+ #, fuzzy, php-format
619
+ #| msgid "Shipping"
620
+ msgid "Shipping %s"
621
+ msgstr "Versand"
622
+
623
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:685
624
+ #, fuzzy, php-format
625
+ #| msgid "%1$s of %2$s"
626
+ msgid "%1$s %2$s"
627
+ msgstr "%1$s von %2$s"
628
+
629
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:866
630
+ #, fuzzy, php-format
631
+ #| msgid "Total"
632
+ msgid "Total %s"
633
+ msgstr "Gesamt"
634
+
635
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:993
636
+ msgid "Request invoice"
637
+ msgstr "Rechnung anfordern"
638
+
639
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:43
640
+ #, fuzzy
641
+ #| msgid "Customer note"
642
+ msgid "Customer credit note"
643
+ msgstr "Kundenkommentar"
644
+
645
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:44
646
+ #, fuzzy
647
+ #| msgid ""
648
+ #| "Customer invoice reminder emails can be sent to customers containing "
649
+ #| "their order information and payment links."
650
+ msgid ""
651
+ "Customer credit note emails can be sent to customers containing their PDF "
652
+ "Credit Note."
653
+ msgstr ""
654
+ "Erinnerungen für noch nicht versandte Rechnungen können mit Information zur "
655
+ "Bestellung und Bezahlung verschickt werden."
656
+
657
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:50
658
+ #, fuzzy
659
+ #| msgid "Invoice reminder for order {order_number} from {order_date}"
660
+ msgid "Credit note for order {order_number} from {order_date}"
661
+ msgstr "Erinnerung an Rechnung für Bestellung {order_number} vom {order_date}"
662
+
663
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:51
664
+ #, fuzzy
665
+ #| msgid "Invoice reminder for order {order_number}"
666
+ msgid "Credit note for order {order_number}"
667
+ msgstr "Erinnerung an Rechnung für Bestellung {order_number}"
668
+
669
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:149
670
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:158
671
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:149
672
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:158
673
+ #, php-format
674
+ msgid "Defaults to %s"
675
+ msgstr "Defaults to %s"
676
+
677
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:155
678
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:155
679
+ msgid "Email heading"
680
+ msgstr "Email Überschrift"
681
+
682
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:164
683
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:164
684
+ msgid "Email type"
685
+ msgstr "Email Typ"
686
+
687
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:166
688
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:166
689
+ msgid "Choose which format of email to send."
690
+ msgstr "Email Format."
691
+
692
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:43
693
+ msgid "Customer invoice reminder"
694
+ msgstr "Erinnerung für nicht versandte Rechnungen"
695
+
696
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:44
697
+ msgid ""
698
+ "Customer invoice reminder emails can be sent to customers containing their "
699
+ "order information and payment links."
700
+ msgstr ""
701
+ "Erinnerungen für noch nicht versandte Rechnungen können mit Information zur "
702
+ "Bestellung und Bezahlung verschickt werden."
703
+
704
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:49
705
+ msgid "Invoice reminder for order {order_number} from {order_date}"
706
+ msgstr "Erinnerung an Rechnung für Bestellung {order_number} vom {order_date}"
707
+
708
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:50
709
+ msgid "Invoice reminder for order {order_number}"
710
+ msgstr "Erinnerung an Rechnung für Bestellung {order_number}"
711
+
712
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:35
713
+ msgid "Credit Note"
714
+ msgstr ""
715
+
716
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:46
717
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:52
718
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:40
719
+ msgid "Ship to:"
720
+ msgstr "Versand an:"
721
+
722
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:61
723
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:59
724
+ msgid "Product"
725
+ msgstr "Produkt"
726
+
727
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:71
728
+ msgid "Price"
729
+ msgstr "Preis"
730
+
731
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:135
732
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:127
733
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:109
734
+ #, php-format
735
+ msgid "Note from customer: %s"
736
+ msgstr "Bemerkung des Kunden: %s"
737
+
738
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:140
739
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:132
740
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:114
741
+ #, php-format
742
+ msgid "Note to customer: %s"
743
+ msgstr "Hinweis an Kunden: %s"
744
+
745
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:152
746
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:314
747
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:144
748
+ msgid "Zero rated for VAT as customer has supplied EU VAT number"
749
+ msgstr "Keine USt. auf Grund innergemeinschaftlicher Leistung"
750
+
751
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/footer.php:26
752
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/footer.php:15
753
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/footer.php:12
754
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/footer.php:26
755
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/footer.php:23
756
+ #, php-format
757
+ msgid "%1$s of %2$s"
758
+ msgstr "%1$s von %2$s"
759
+
760
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:39
761
+ #, php-format
762
+ msgid "Credit Note #: %s"
763
+ msgstr ""
764
+
765
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:41
766
+ #, fuzzy, php-format
767
+ #| msgid "Order Date: %s"
768
+ msgid "Date: %s"
769
+ msgstr "Lieferdatum: %s"
770
+
771
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:45
772
+ #, php-format
773
+ msgid "Invoice #: %s"
774
+ msgstr "Rechnungsnummer: %s"
775
+
776
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:47
777
+ #, php-format
778
+ msgid "Invoice Date: %s"
779
+ msgstr "Rechnungsdatum: %s"
780
+
781
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:51
782
+ #, fuzzy, php-format
783
+ #| msgid "Order #%d - %s"
784
+ msgid "Order #: %s"
785
+ msgstr "Bestellung #%d - %s"
786
+
787
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:53
788
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:38
789
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:37
790
+ #, php-format
791
+ msgid "Order Date: %s"
792
+ msgstr "Lieferdatum: %s"
793
+
794
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:57
795
+ #, php-format
796
+ msgid "Payment Method: %s"
797
+ msgstr "Zahlungsart: %s"
798
+
799
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:64
800
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:681
801
+ #, php-format
802
+ msgid "Purchase Order Number: %s"
803
+ msgstr "Auftragsnummer: %s"
804
+
805
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:73
806
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:663
807
+ #, php-format
808
+ msgid "VAT Number: %s"
809
+ msgstr "USt-IdNr.: %s"
810
+
811
+ #: woocommerce-pdf-invoices-premium/includes/templates/emails/customer-credit-note.php:25
812
+ #, fuzzy
813
+ #| msgid "Order date"
814
+ msgid "Order:"
815
+ msgstr "Bestelldatum"
816
+
817
+ #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:23
818
+ #, fuzzy, php-format
819
+ #| msgid "Order Number: %s"
820
+ msgid "Order number: %s"
821
+ msgstr "Auftragsnummer: %s"
822
+
823
+ #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:24
824
+ #, fuzzy, php-format
825
+ #| msgid "Order Date: %s"
826
+ msgid "Order date: %s"
827
+ msgstr "Lieferdatum: %s"
828
+
829
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:9
830
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:11
831
+ msgid "Invoice to"
832
+ msgstr "Rechnung an"
833
+
834
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:14
835
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:16
836
+ #, php-format
837
+ msgid "Phone: %s"
838
+ msgstr "Telefon: %s"
839
+
840
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:19
841
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:23
842
+ msgid "Ship to"
843
+ msgstr "Lieferadresse"
844
+
845
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:30
846
+ msgid "Global Invoice"
847
+ msgstr "Sammelrechnung"
848
+
849
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:53
850
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:458
851
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:57
852
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:55
853
+ msgid "SKU"
854
+ msgstr "SKU"
855
+
856
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:66
857
+ msgid "VAT"
858
+ msgstr "USt."
859
+
860
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:89
861
+ #, php-format
862
+ msgid "Order #%d - %s"
863
+ msgstr "Bestellung #%d - %s"
864
+
865
+ #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:103
866
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:409
867
+ msgid "Settings"
868
+ msgstr "Einstellungen"
869
+
870
+ #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:104
871
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:62
872
+ msgid "Support"
873
+ msgstr "Support"
874
+
875
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-document.php:150
876
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:36
877
+ msgid "Paid"
878
+ msgstr "Bezahlt"
879
+
880
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:491
881
+ msgid "Subtotal:"
882
+ msgstr "Zwischensumme:"
883
+
884
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:506
885
+ msgid "Discount:"
886
+ msgstr "Rabatt:"
887
+
888
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:521
889
+ msgid "Shipping:"
890
+ msgstr "Versand:"
891
+
892
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:594
893
+ msgid "Total:"
894
+ msgstr "Summe:"
895
+
896
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:861
897
+ #, php-format
898
+ msgid "%s of %s"
899
+ msgstr "%s von %s"
900
+
901
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:100
902
+ msgid "Invoices"
903
+ msgstr "Rechnungen"
904
+
905
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:164
906
+ #, php-format
907
+ msgid ""
908
+ "If you like <strong>WooCommerce PDF Invoices</strong> please leave us a <a "
909
+ "href=\"%s\">★★★★★</a> rating. A huge thank you in advance!"
910
+ msgstr ""
911
+ "Bitte unterstützen Sie <strong>WooCommerce PDF Invoices</strong> mit einer "
912
+ "<a href=\"%s\">★★★★★</a> Bewertung!"
913
+
914
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:173
915
+ #, php-format
916
+ msgid "Version %s"
917
+ msgstr "Version %s"
918
+
919
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:286
920
+ #, fuzzy
921
+ #| msgid "Choose"
922
+ msgid "Choose&hellip;"
923
+ msgstr "Auswählen"
924
+
925
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:287
926
+ msgid "Column"
927
+ msgstr ""
928
+
929
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
930
+ #, fuzzy
931
+ #| msgid "Select a year"
932
+ msgid "Select all"
933
+ msgstr "Jahr auswählen"
934
+
935
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
936
+ #, fuzzy
937
+ #| msgid "Select a month"
938
+ msgid "Select none"
939
+ msgstr "Monat auswählen"
940
+
941
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:25
942
+ msgid "General"
943
+ msgstr "Allgemein"
944
+
945
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:41
946
+ msgid "Email Options"
947
+ msgstr "Email Optionen"
948
+
949
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:42
950
+ #, fuzzy, php-format
951
+ #| msgid ""
952
+ #| "The PDF invoice will be generated when WooCommerce sends the "
953
+ #| "corresponding email. The email should be <a href=\"%1$s\">enabled</a> in "
954
+ #| "order to automatically generate the PDF invoice."
955
+ msgid ""
956
+ "The PDF invoice will be generated when WooCommerce sends the corresponding "
957
+ "email. The email should be <a href=\"%1$s\">enabled</a> in order to "
958
+ "automatically generate the PDF invoice. Want to attach PDF documents to many "
959
+ "more email types? Take a look at %2$s."
960
+ msgstr ""
961
+ "Die PDF-Rechnung wird erstellt, wenn WooCommerce eine korrespondierende "
962
+ "Email versendet. Diese sollte <a href=\"%1$s\">aktiviert</a> sein."
963
+
964
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:45
965
+ msgid "Download Options"
966
+ msgstr "Download Optionen"
967
+
968
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:48
969
+ msgid "Cloud Storage Options"
970
+ msgstr "Cloud Storage Optionen"
971
+
972
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:49
973
+ #, php-format
974
+ msgid ""
975
+ "Sign-up at <a href=\"%1$s\">Email It In</a> to send invoices to your "
976
+ "Dropbox, OneDrive, Google Drive or Egnyte and enter your account below."
977
+ msgstr ""
978
+ "Anmelden für <a href=\"%1$s\">Email It In</a> um Rechnungen zur Dropbox, "
979
+ "OneDrive, Google Drive oder Egnyte, oder einem weiteren Account zu schicken."
980
+
981
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:52
982
+ msgid "Interface Options"
983
+ msgstr "Interface Optionen"
984
+
985
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:55
986
+ msgid "Debug Options"
987
+ msgstr "Debug Optionen"
988
+
989
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:80
990
+ msgid "New order"
991
+ msgstr "Neue Bestellung"
992
+
993
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:85
994
+ msgid "Order on-hold"
995
+ msgstr "Bestellung in Wartestellung"
996
+
997
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:90
998
+ msgid "Processing order"
999
+ msgstr "Bestellung in Bearbeitung"
1000
+
1001
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:95
1002
+ msgid "Completed order"
1003
+ msgstr "Abgeschlossene Bestellung"
1004
+
1005
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:100
1006
+ msgid "Customer invoice"
1007
+ msgstr "Kundenrechnung"
1008
+
1009
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:114
1010
+ msgid "Disable for free products"
1011
+ msgstr "Für kostenlose Produkte deaktivieren"
1012
+
1013
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:116
1014
+ msgid ""
1015
+ "Skip automatic PDF invoice generation for orders containing only free "
1016
+ "products."
1017
+ msgstr ""
1018
+ "Keine PDF erstellen, wenn die Bestellung nur kostenlose Produkte beinhaltet."
1019
+
1020
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:124
1021
+ msgid "View PDF"
1022
+ msgstr "PDF anzeigen"
1023
+
1024
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:131
1025
+ msgid "Download"
1026
+ msgstr "Download"
1027
+
1028
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:132
1029
+ msgid "Open in new browser tab/window"
1030
+ msgstr "In neuen Tab/Fenster öffnen"
1031
+
1032
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:144
1033
+ msgid "Enable download from my account"
1034
+ msgstr "Download vom Konto aktivieren"
1035
+
1036
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:146
1037
+ msgid ""
1038
+ "By default PDF is only downloadable when order has been paid, so order "
1039
+ "status should be Processing or Completed."
1040
+ msgstr ""
1041
+ "Eine PDF wird in der Standardeinstellung erst erstellt, wenn die Bestellung "
1042
+ "bezahlt ist, oder der Status auf \"Bearbeitung\" oder \"Abgeschlossen\" "
1043
+ "gesetzt wird."
1044
+
1045
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:159
1046
+ msgid "Enable Email It In"
1047
+ msgstr "\"Email It In\" aktivieren"
1048
+
1049
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:166
1050
+ msgid "Email It In account"
1051
+ msgstr "\"Email It In\" Account"
1052
+
1053
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:171
1054
+ #, php-format
1055
+ msgid "Get your account from your %1$s <a href=\"%2$s\">user account</a>."
1056
+ msgstr ""
1057
+ "Erstellen Sie ihren Account von ihrem %1$s <a href=\"%2$s\">User Account</a>."
1058
+
1059
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:182
1060
+ msgid "Enable Invoice Number column"
1061
+ msgstr "Spalte mit Rechnungsnummer anzeigen"
1062
+
1063
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:183
1064
+ msgid "Display invoice numbers on Shop Order page."
1065
+ msgstr "Rechnungsnummer in der Bestellseite anzeigen"
1066
+
1067
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:195
1068
+ msgid "Enable mPDF debugging"
1069
+ msgstr "mPDF debugging aktivieren"
1070
+
1071
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:196
1072
+ msgid "Enable if you aren't able to create an invoice."
1073
+ msgstr "Aktivieren, wenn keine PDF automatisch erstellt wird"
1074
+
1075
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:25
1076
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:101
1077
+ msgid "Template"
1078
+ msgstr "Template"
1079
+
1080
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:43
1081
+ msgid "General Options"
1082
+ msgstr "Allgemeine Optionen"
1083
+
1084
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:44
1085
+ #, php-format
1086
+ msgid ""
1087
+ "Want to customize the template? The <a href=\"%s\">FAQ</a> will give you a "
1088
+ "brief description."
1089
+ msgstr "Template verändern? Das <a href=\"%s\">FAQ</a> gibt eine Einführung."
1090
+
1091
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:47
1092
+ msgid "Invoice Number Options"
1093
+ msgstr "Rechnungsnummer Optionen"
1094
+
1095
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:50
1096
+ msgid "Packing Slips Options"
1097
+ msgstr "Lieferscheinoptionen"
1098
+
1099
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:51
1100
+ msgid ""
1101
+ "Packing slips are <strong>only available</strong> when using minimal "
1102
+ "template."
1103
+ msgstr ""
1104
+ "Lieferscheine sind nur verfügbar, wenn das minimal template genutzt wird."
1105
+
1106
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:54
1107
+ msgid "Header Options"
1108
+ msgstr "Header Optionen"
1109
+
1110
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:55
1111
+ msgid "The header will be visible on every page."
1112
+ msgstr "Die Kopfzeile auf jeder Seite sichtbar."
1113
+
1114
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:58
1115
+ #, fuzzy
1116
+ #| msgid "Download Options"
1117
+ msgid "Body Options"
1118
+ msgstr "Download Optionen"
1119
+
1120
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:59
1121
+ msgid "Configuration options for the body of the template. ."
1122
+ msgstr ""
1123
+
1124
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:62
1125
+ msgid "Footer Options"
1126
+ msgstr "Footer Optionen"
1127
+
1128
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:63
1129
+ msgid "The footer will be visible on every page."
1130
+ msgstr "Die Fußzeile auf jeder Seite sichtbar."
1131
+
1132
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:66
1133
+ msgid "Table Content"
1134
+ msgstr ""
1135
+
1136
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:67
1137
+ msgid "Enable or disable the columns."
1138
+ msgstr "Aktiviere oder deaktiviere die Spalten."
1139
+
1140
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:106
1141
+ #, php-format
1142
+ msgid "Create a custom template by copying it from %1$s to %2$s."
1143
+ msgstr "Erstellen Sie ein eigenes template durch Kopie von %1$s zu %2$s."
1144
+
1145
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:108
1146
+ #, php-format
1147
+ msgid ""
1148
+ "<strong>Note:</strong> The %1$s template will probably no longer be "
1149
+ "supported in future versions, consider using the %2$s template."
1150
+ msgstr "Hinweis: Das %1$s template wird nicht mehr weiterentwickelt."
1151
+
1152
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:116
1153
+ msgid "Color theme"
1154
+ msgstr "Farben (theme)"
1155
+
1156
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:132
1157
+ msgid "Display theme text in black color"
1158
+ msgstr "Text in schwarz"
1159
+
1160
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:134
1161
+ msgid ""
1162
+ "Enable if you've set the color theme to white or some other light color."
1163
+ msgstr "Aktivieren, wenn ihr Theme weiß oder hell gestaltet ist."
1164
+
1165
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:142
1166
+ msgid "Date format"
1167
+ msgstr "Datumsformat"
1168
+
1169
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:147
1170
+ #, php-format
1171
+ msgid "<a href=\"%s\">Format</a> of invoice date and order date."
1172
+ msgstr "<a href=\"%s\">Format</a> des Datums."
1173
+
1174
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:159
1175
+ msgid "Display prices including tax"
1176
+ msgstr "Preis inklusive Mehrwertsteuer anzeigen"
1177
+
1178
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:161
1179
+ msgid ""
1180
+ "Line item totals will be including tax. <br/><b>Note</b>: Subtotal will "
1181
+ "still be excluding tax, so disable it within the visible columns section."
1182
+ msgstr ""
1183
+ "Einzelpostensummen beinhalten Steuern. \n"
1184
+ "<br/><b>Hinweis</b>: Zwischensummen werden ohne Steuern angezeigt, wenn "
1185
+ "keine andere Einstellung getroffen wird."
1186
+
1187
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:174
1188
+ msgid "Shipping taxable"
1189
+ msgstr "Versandkosten versteuerbar"
1190
+
1191
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:176
1192
+ msgid "Enable to display subtotal including shipping."
1193
+ msgstr "Einschalten um Zwischensumme mit Versandkosten anzuzeigen."
1194
+
1195
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:189
1196
+ msgid "Mark invoice as paid"
1197
+ msgstr "Rechnung als bezahlt markieren"
1198
+
1199
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:191
1200
+ msgid "Invoice will be watermarked when order has been paid."
1201
+ msgstr "Rechnung erhält Wasserzeichen, wenn bezahlt."
1202
+
1203
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:204
1204
+ msgid "Disable Packing Slips"
1205
+ msgstr "Lieferschein nicht erstellen"
1206
+
1207
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:211
1208
+ msgid "Company name"
1209
+ msgstr "Firmenname"
1210
+
1211
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:222
1212
+ msgid "Company logo"
1213
+ msgstr "Firmenlogo"
1214
+
1215
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:227
1216
+ #, fuzzy, php-format
1217
+ #| msgid ""
1218
+ #| "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> "
1219
+ #| "or choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href="
1220
+ #| "\"%3$s\" target=\"_blank\">URL</a>."
1221
+ msgid ""
1222
+ "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> or "
1223
+ "choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href=\"%3$s"
1224
+ "\" target=\"_blank\">File URL</a>."
1225
+ msgstr ""
1226
+ "Benutzen Sie die <a href=\"%1$s\">Media Library</a> und geben Sie die <a "
1227
+ "href=\"%3$s\" target=\"_blank\">URL</a> der Datei an."
1228
+
1229
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:233
1230
+ msgid "Company address"
1231
+ msgstr "Firmenadresse"
1232
+
1233
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:238
1234
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:249
1235
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:271
1236
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:310
1237
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:322
1238
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:333
1239
+ #, php-format
1240
+ msgid "Allowed HTML tags: %s."
1241
+ msgstr "Erlaubte HTML tags: %s."
1242
+
1243
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:244
1244
+ msgid "Company details"
1245
+ msgstr "Firmendetails"
1246
+
1247
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:255
1248
+ msgid "Title"
1249
+ msgstr "Titel"
1250
+
1251
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:260
1252
+ msgid "Change the name of the invoice."
1253
+ msgstr "Ändern Sie den Namen der Rechnung."
1254
+
1255
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:261
1256
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:853
1257
+ msgid "Invoice"
1258
+ msgstr "Rechnung"
1259
+
1260
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:266
1261
+ msgid "Thank you text"
1262
+ msgstr "Dankestext"
1263
+
1264
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:272
1265
+ msgid "Visible in big colored bar directly after invoice total."
1266
+ msgstr ""
1267
+ "Sichtbar in großer, farbig markierter Zeile direkt nach der Gesamtsumme."
1268
+
1269
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:283
1270
+ msgid "Show customers shipping address"
1271
+ msgstr "Kundenadresse anzeigen"
1272
+
1273
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:285
1274
+ msgid ""
1275
+ "Customers shipping address won't be visible when order has only virtual "
1276
+ "products."
1277
+ msgstr ""
1278
+ "Kundenadresse wird nicht sichtbar sein, wenn die Bestellung nur virtuelle "
1279
+ "Produkte beeinhaltet."
1280
+
1281
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:298
1282
+ msgid "Show customer notes"
1283
+ msgstr "Kundenkommentare anzeigen"
1284
+
1285
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:305
1286
+ msgid "Terms & conditions, policies etc."
1287
+ msgstr "AGB’s‚ Richtlinien etc."
1288
+
1289
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:311
1290
+ #, php-format
1291
+ msgid ""
1292
+ "Visible below customer notes and above footer. Want to attach additional "
1293
+ "pages to the invoice? Take a look at <a href=\"%1$s\">%2$s</a> plugin."
1294
+ msgstr ""
1295
+ "Wird angezeigt unter Kundenbemerkungen und über dem Footer. Möchten Sie "
1296
+ "weitere Seiten an die Rechnung anfügen? Schauen Sie sich dieses Plugin an: "
1297
+ "<a href=\"%1$s\">%2$s</a>."
1298
+
1299
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:317
1300
+ msgid "Left footer column."
1301
+ msgstr "Linke Fußzeilenspalte."
1302
+
1303
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:328
1304
+ msgid "Right footer column."
1305
+ msgstr "Rechte Fußzeilenspalte."
1306
+
1307
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:339
1308
+ msgid "Type"
1309
+ msgstr "Typ"
1310
+
1311
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:346
1312
+ msgid "WooCommerce order number"
1313
+ msgstr "WooCommerce Auftragsnummer"
1314
+
1315
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:347
1316
+ msgid "Sequential number"
1317
+ msgstr "Lfd. Nummer"
1318
+
1319
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:359
1320
+ msgid "Reset invoice counter"
1321
+ msgstr "Reset invoice counter"
1322
+
1323
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:367
1324
+ msgid "Next"
1325
+ msgstr "Weiter"
1326
+
1327
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:372
1328
+ msgid "Next invoice number when resetting counter."
1329
+ msgstr "Nächste Rechnungsnummer nach Reset."
1330
+
1331
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:374
1332
+ msgid ""
1333
+ "<b>Note:</b> Only available for Sequential numbering. All PDF invoices with "
1334
+ "invoice number greater then next invoice number will be deleted!"
1335
+ msgstr ""
1336
+ "<b>Hinweis:</b> Nur verfügbar für sequentielle Nummerierung. Alle Rechnungen "
1337
+ "mit einer Nummer größer als die folgende werden gelöscht!"
1338
+
1339
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:384
1340
+ msgid "Digits"
1341
+ msgstr "Ziffern"
1342
+
1343
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:441
1344
+ msgid "Reset yearly"
1345
+ msgstr "Jährlicher Reset."
1346
+
1347
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:443
1348
+ msgid "Automatically reset invoice numbers on new year's day."
1349
+ msgstr ""
1350
+ "Automatischer Reset der laufenden Rechnungsnummern zu Beginn eines neuen "
1351
+ "Jahres."
1352
+
1353
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:445
1354
+ msgid ""
1355
+ "<b>Note</b>: You will have to generate all invoices again when changing "
1356
+ "option."
1357
+ msgstr ""
1358
+ "<b>Hinweis</b>: Sie müssen alle Rechnungen erneut generieren, wenn Sie diese "
1359
+ "Option ändern."
1360
+
1361
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:482
1362
+ msgid "Tax (item)"
1363
+ msgstr "Steuer (Einzel)"
1364
+
1365
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:494
1366
+ msgid "Tax (total)"
1367
+ msgstr "Steuer (Summe)"
1368
+
1369
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:564
1370
+ msgid ""
1371
+ "Company logo not found. Upload the image to the Media Library and try again."
1372
+ msgstr "Datei (Logo) nicht gefunden."
1373
+
1374
+ #: woocommerce-pdf-invoices/includes/admin/views/html-activation-notice.php:16
1375
+ #, php-format
1376
+ msgid ""
1377
+ "The settings of WooCommerce PDF Invoices are available <a href=\"%1$s\">on "
1378
+ "this page</a>."
1379
+ msgstr ""
1380
+ "Die Einstellungen von WooCommerce PDF Invoices finden Sie <a href=\"%1$s"
1381
+ "\">hier</a>."
1382
+
1383
+ #: woocommerce-pdf-invoices/includes/admin/views/html-deactivation-notice.php:19
1384
+ #, php-format
1385
+ msgid ""
1386
+ "Before we deactivate WooCommerce PDF Invoices, would you care to <a href="
1387
+ "\"%1$s\" target=\"_blank\">let us know why</a> so we can improve it for you? "
1388
+ "<a href=\"%2$s\">No, deactivate now</a>."
1389
+ msgstr ""
1390
+ "Helfen Sie uns WooCommerce PDF Invoices zu verbessern und teilen Sie uns den "
1391
+ "<a href=\"%1$s\" target=\"_blank\">Grund</a> für die Deaktivierung mit? <a "
1392
+ "href=\"%2$s\">Sofort deaktivieren</a>."
1393
+
1394
+ #: woocommerce-pdf-invoices/includes/admin/views/html-rate-notice.php:18
1395
+ #, php-format
1396
+ msgid ""
1397
+ "Hi%1$s! You're using <b>WooCommerce PDF Invoices</b> for some time now and "
1398
+ "we would appreciate your <a href=\"%2$s\" target=\"_blank\">★★★★★</a> "
1399
+ "rating. It will support future development big-time."
1400
+ msgstr ""
1401
+ "Hi%1$s! Sie benutzen <b>WooCommerce PDF Invoices</b> jetzt schon einige "
1402
+ "Zeit. Wir freuen uns über ihre Unterstützung durch ein Rating <a href=\"%2$s"
1403
+ "\" target=\"_blank\">★★★★★</a>."
1404
+
1405
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:2
1406
+ msgid "WooCommerce PDF Invoices Premium"
1407
+ msgstr "WooCommerce PDF Invoices Premium"
1408
+
1409
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:4
1410
+ msgid ""
1411
+ "This plugin offers a premium version which comes with the following features:"
1412
+ msgstr "Dieses Plugin gibt es als Premiumversion mit folgenden Features:"
1413
+
1414
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:5
1415
+ msgid ""
1416
+ "Attach PDF invoices to many more email types including third party plugins."
1417
+ msgstr ""
1418
+
1419
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:6
1420
+ msgid ""
1421
+ "Send credit notes and cancelled PDF invoices when refunding or cancelling "
1422
+ "order."
1423
+ msgstr ""
1424
+
1425
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:7
1426
+ msgid ""
1427
+ "Fully customize the table content by modifying line item columns and total "
1428
+ "rows."
1429
+ msgstr ""
1430
+
1431
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:8
1432
+ msgid ""
1433
+ "Automatically send PDF invoices as a reminder configurable within a specific "
1434
+ "period of time."
1435
+ msgstr ""
1436
+
1437
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:9
1438
+ #, fuzzy
1439
+ #| msgid "Let customers generate a global invoice from their account"
1440
+ msgid ""
1441
+ "Let customers decide if they would like to get a PDF invoice on checkout."
1442
+ msgstr "Kunden können eine Sammelrechnung in ihrem Konto erstellen"
1443
+
1444
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:10
1445
+ msgid "Change the font of the PDF invoices."
1446
+ msgstr "Schriftart ändern."
1447
+
1448
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:12
1449
+ msgid ""
1450
+ "Generate PDF invoices in multiple languages (WPML and Polylang compatible)."
1451
+ msgstr ""
1452
+ "Rechnungen in unterschiedlichen Sprachen generieren (WPML and Polylang "
1453
+ "compatible)."
1454
+
1455
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:13
1456
+ msgid "Bulk generate PDF invoices."
1457
+ msgstr "Mehrere Rechnungen gleichzeitig generieren."
1458
+
1459
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:14
1460
+ msgid "Bulk export and/or download PDF invoices."
1461
+ msgstr "Download/Export mehrerer Rechnungen gleichzeitig."
1462
+
1463
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:15
1464
+ msgid "Bill periodically by generating and sending global invoices."
1465
+ msgstr "Periodische Sammelrechnungen verschicken."
1466
+
1467
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:16
1468
+ msgid "Add additional PDF's to PDF invoices."
1469
+ msgstr "Weitere PDF-Dateien anhängen."
1470
+
1471
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:17
1472
+ msgid "Send PDF invoices to multiple recipients."
1473
+ msgstr ""
1474
+
1475
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:18
1476
+ #, php-format
1477
+ msgid "Attach invoices to <a href=\"%s\">WooCommerce Subscriptions</a> emails."
1478
+ msgstr "Rechnungen an <a href=\"%s\">WooCommerce Subscriptions</a> anhängen."
1479
+
1480
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:20
1481
+ msgid "Learn more"
1482
+ msgstr "Mehr erfahren"
1483
+
1484
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:23
1485
+ msgid "Stay up-to-date"
1486
+ msgstr "Bleiben Sie up-to-date"
1487
+
1488
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:27
1489
+ msgid ""
1490
+ "We're constantly developing new features, stay up-to-date by subscribing to "
1491
+ "our newsletter."
1492
+ msgstr "Bleiben Sie mit unserem Newsletter up-to-date über neue Funktionen."
1493
+
1494
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:33
1495
+ msgid "Your email address"
1496
+ msgstr "Ihre E-Mail"
1497
+
1498
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:39
1499
+ msgid "Signup"
1500
+ msgstr "Registrieren"
1501
+
1502
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:42
1503
+ msgid "No spam, ever. Unsubscribe at any time"
1504
+ msgstr ""
1505
+ "Einwilligung kann jederzeit widerrufen werden, keine Weitergabe der Daten, "
1506
+ "kein Spam."
1507
+
1508
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:51
1509
+ msgid "About"
1510
+ msgstr "Über Uns"
1511
+
1512
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:53
1513
+ msgid ""
1514
+ "This plugin is an open source project wich aims to fill the invoicing gap of "
1515
+ "<a href=\"http://www.woothemes.com/woocommerce\">WooCommerce</a>."
1516
+ msgstr ""
1517
+ "Dieses Plugin ist ein Opensource-Projekt um die fehlende Funktion "
1518
+ "automatisierter PDF-Rechnungen in <a href=\"http://www.woothemes.com/"
1519
+ "woocommerce\">WooCommerce</a> zu schließen."
1520
+
1521
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:56
1522
+ #, php-format
1523
+ msgid "Version: %s"
1524
+ msgstr "Version: %s"
1525
+
1526
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:58
1527
+ #, php-format
1528
+ msgid "Author: %s"
1529
+ msgstr "Autor: %s"
1530
+
1531
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:64
1532
+ #, php-format
1533
+ msgid ""
1534
+ "We will never ask for donations, but to guarantee future development, we do "
1535
+ "need your support. Please show us your appreciation by leaving a <a href="
1536
+ "\"%1$s\">★★★★★</a> rating and vote for <a href=\"%2$s\">works</a>."
1537
+ msgstr ""
1538
+ "Bitte unterstützen Sie mit einem Rating <a href=\"%1$s\">★★★★★</a><a href="
1539
+ "\"%2$s\">unsere Arbeit</a>."
1540
+
1541
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:88
1542
+ msgid ""
1543
+ "Checkout this amazing free WooCommerce PDF Invoices plugin for WordPress!"
1544
+ msgstr ""
1545
+ "Testen sie das kostenlose WooCommerce PDF Invoices plugin for WordPress!"
1546
+
1547
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:93
1548
+ msgid "Need Help?"
1549
+ msgstr "Benötigen Sie Hilfe?"
1550
+
1551
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:95
1552
+ msgid "Frequently Asked Questions"
1553
+ msgstr "FAQ"
1554
+
1555
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:96
1556
+ msgid "Support forum"
1557
+ msgstr "Support forum"
1558
+
1559
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:97
1560
+ msgid "Request a feature"
1561
+ msgstr "Feature Request"
1562
+
1563
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:99
1564
+ #, fuzzy
1565
+ #| msgid "Invoice #: %s"
1566
+ msgid "Invoice #:"
1567
+ msgstr "Rechnungsnummer: %s"
1568
+
1569
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:103
1570
+ #, fuzzy
1571
+ #| msgid "Invoice Date: %s"
1572
+ msgid "Invoice Date:"
1573
+ msgstr "Rechnungsdatum: %s"
1574
+
1575
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:107
1576
+ #, fuzzy
1577
+ #| msgid "Order Date: %s"
1578
+ msgid "Order Date:"
1579
+ msgstr "Lieferdatum: %s"
1580
+
1581
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:111
1582
+ #, fuzzy
1583
+ #| msgid "Order Number: %s"
1584
+ msgid "Order Number:"
1585
+ msgstr "Auftragsnummer: %s"
1586
+
1587
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:115
1588
+ #, fuzzy
1589
+ #| msgid "Payment Method: %s"
1590
+ msgid "Payment Method:"
1591
+ msgstr "Zahlungsart: %s"
1592
+
1593
+ #: woocommerce-pdf-invoices/includes/class-packing-slip.php:66
1594
+ msgid "View packing slip"
1595
+ msgstr "Lieferschein öffnen"
1596
+
1597
+ #: woocommerce-pdf-invoices/includes/compatibility/class-wc-core-compatibility.php:245
1598
+ msgid "WooCommerce"
1599
+ msgstr "WooCommerce"
1600
+
1601
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:37
1602
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:39
1603
+ #, php-format
1604
+ msgid "Order Number: %s"
1605
+ msgstr "Auftragsnummer: %s"
1606
+
1607
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:268
1608
+ msgid "VAT 0%"
1609
+ msgstr "USt. 0%"
1610
+
1611
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:284
1612
+ msgid "Refunded"
1613
+ msgstr "Erstattet"
1614
+
1615
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:300
1616
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:305
1617
+ msgid "Customer note"
1618
+ msgstr "Kundenkommentar"
1619
+
1620
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:29
1621
+ msgid "Packing Slip"
1622
+ msgstr "Lieferschein"
1623
+
1624
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:44
1625
+ #, php-format
1626
+ msgid "Shipping Method: %s"
1627
+ msgstr "Versand: %s"
1628
+
1629
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:626
1630
+ msgid "Invoice No."
1631
+ msgstr "Rechnungsnummer"
1632
+
1633
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:678
1634
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:700
1635
+ msgid "PDF Invoice"
1636
+ msgstr "PDF Rechnung"
1637
+
1638
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:715
1639
+ msgid "Create"
1640
+ msgstr "Erstellen"
1641
+
1642
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:721
1643
+ #, fuzzy
1644
+ #| msgid "Order Date: %s"
1645
+ msgid "Date:"
1646
+ msgstr "Lieferdatum: %s"
1647
+
1648
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:725
1649
+ #, fuzzy
1650
+ #| msgid "VAT Number: %s"
1651
+ msgid "Number:"
1652
+ msgstr "USt-IdNr.: %s"
1653
+
1654
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:734
1655
+ msgid "Sent?"
1656
+ msgstr ""
1657
+
1658
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:744
1659
+ msgid "Debug"
1660
+ msgstr ""
1661
+
1662
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:758
1663
+ msgid "Update"
1664
+ msgstr ""
1665
+
1666
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:763
1667
+ #, fuzzy
1668
+ #| msgid "Are you sure to delete the invoice?"
1669
+ msgid "Are you sure to delete the PDF invoice?"
1670
+ msgstr "Rechnung wirklich löschen?"
1671
+
1672
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:767
1673
+ #, php-format
1674
+ msgid ""
1675
+ "You will be missing a PDF invoice with invoice number %d and thus creating "
1676
+ "an accounting gap!"
1677
+ msgstr ""
1678
+
1679
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:770
1680
+ #, php-format
1681
+ msgid "Instead consider using Cancelled PDF invoices with %s."
1682
+ msgstr ""
1683
+
1684
+ #~ msgid "Send customer invoices directly to suppliers and others."
1685
+ #~ msgstr "Rechnungen direkt an Lieferanten und weitere versenden.\n"
1686
+
1687
+ #~ msgid "Visible Columns"
1688
+ #~ msgstr "Sichtbare Spalten"
1689
+
1690
+ #~ msgid "Invoiced on:"
1691
+ #~ msgstr "In Rechnung gestellt am:"
1692
+
1693
+ #~ msgid "Invoice number:"
1694
+ #~ msgstr "Rechnungsnummer:"
1695
+
1696
+ #~ msgid "Attach to %s Emails"
1697
+ #~ msgstr "%s Emails anfügen"
1698
+
1699
+ #~ msgid "New Renewal Order"
1700
+ #~ msgstr "New Renewal Order"
1701
+
1702
+ #~ msgid "Subscription Switch Complete"
1703
+ #~ msgstr "Subscription Switch Complete"
1704
+
1705
+ #~ msgid "Processing Renewal order"
1706
+ #~ msgstr "Processing Renewal order"
1707
+
1708
+ #~ msgid "Completed Renewal Order"
1709
+ #~ msgstr "Neue Rechnung fertiggestellt"
1710
+
1711
+ #~ msgid "Customer Renewal Invoice"
1712
+ #~ msgstr "Neue Kundenrechnung"
lang/woocommerce-pdf-invoices-es_ES.po CHANGED
@@ -1,1896 +1,1896 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WooCommerce PDF Invoices\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2017-11-29 20:36+0100\n"
6
- "PO-Revision-Date: 2017-11-29 20:36+0100\n"
7
- "Last-Translator: iduran <iduran@solucionesc2.com>\n"
8
- "Language-Team: \n"
9
- "Language: es_ES\n"
10
- "MIME-Version: 1.0\n"
11
- "Content-Type: text/plain; charset=UTF-8\n"
12
- "Content-Transfer-Encoding: 8bit\n"
13
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-Basepath: ../..\n"
16
- "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
17
- "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
18
- "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
19
- "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
20
- "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
21
- "X-Loco-Target-Locale: es_ES\n"
22
- "X-Generator: Poedit 2.0.4\n"
23
- "X-Poedit-SearchPath-0: woocommerce-pdf-invoices\n"
24
- "X-Poedit-SearchPath-1: woocommerce-pdf-invoices-premium\n"
25
- "X-Poedit-SearchPathExcluded-0: woocommerce-pdf-invoices/lib\n"
26
-
27
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:25
28
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:427
29
- msgid "Premium"
30
- msgstr "Premium"
31
-
32
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:99
33
- #, php-format
34
- msgid ""
35
- "Whoops, your license for %1$s has expired. To keep receiving updates and "
36
- "premium support, we offer you a 30%% discount when you <a href=\"%2$s\" "
37
- "target=\"_blank\">renew your license</a>."
38
- msgstr ""
39
-
40
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:225
41
- msgid "Premium Options"
42
- msgstr "Opciones Premium"
43
-
44
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:228
45
- msgid "Template Options"
46
- msgstr "Opciones de plantilla"
47
-
48
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:231
49
- msgid "Supplier Options"
50
- msgstr "Opciones de Proveedor"
51
-
52
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:232
53
- msgid "Send customer invoice automatically to your supplier(s)."
54
- msgstr "Mandar factura del cliente automáticamente a tu(s) proveedor(es)."
55
-
56
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:235
57
- #, fuzzy
58
- #| msgid "Header Options"
59
- msgid "Credit Note Options"
60
- msgstr "Opciones de la cabecera"
61
-
62
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:238
63
- #, fuzzy
64
- #| msgid "Invoice Number Options"
65
- msgid "Credit Note Number Options"
66
- msgstr "Opciones de número de factura"
67
-
68
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:241
69
- msgid "Global Invoice Options"
70
- msgstr "Opciones de Factura Global"
71
-
72
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:242
73
- msgid ""
74
- "Generate global invoices on Orders page by selecting multiple orders and "
75
- "applying action or let customers generate periodically from My Account page. "
76
- "<strong>Global invoices are only supported when using the micro template!</"
77
- "strong>"
78
- msgstr ""
79
-
80
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:245
81
- msgid "Reminder Options"
82
- msgstr "Opciones Recordatorio"
83
-
84
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:246
85
- #, php-format
86
- msgid ""
87
- "Automatically send PDF invoice after a specific period of time. When "
88
- "enabled, a new <a href=\"%s\">Customer invoice reminder</a> email will be "
89
- "used to send the PDF invoice."
90
- msgstr ""
91
-
92
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:249
93
- msgid "Request Invoice Options"
94
- msgstr ""
95
-
96
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:250
97
- msgid ""
98
- "Let a customer decide to generate a PDF invoice. When enabled, a checkbox "
99
- "field will be added on the checkout page so customers can request a PDF "
100
- "invoice."
101
- msgstr ""
102
-
103
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:267
104
- msgid "Activation email"
105
- msgstr "E-mail de activación"
106
-
107
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:272
108
- #, php-format
109
- msgid "Enter your activation email from %s."
110
- msgstr "Introduce tu e-mail de activación de %s."
111
-
112
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:278
113
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:703
114
- msgid "License"
115
- msgstr "Licencia"
116
-
117
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:283
118
- #, php-format
119
- msgid "Enter your license key from %s to receive updates."
120
- msgstr "Introduce tu número de licencia de %s para recibir actualizaciones."
121
-
122
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:289
123
- msgid "PDF attachment"
124
- msgstr "Adjunto PDF"
125
-
126
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:294
127
- msgid "Add for example a PDF with your terms & conditions."
128
- msgstr "Añade, por ejemplo, un PDF con tus términos y condiciones."
129
-
130
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:300
131
- msgid "Suppliers"
132
- msgstr "Proveedores"
133
-
134
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:305
135
- #, fuzzy
136
- #| msgid ""
137
- #| "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by "
138
- #| "simply adding there Email It In email addresses. Email addresses need to "
139
- #| "be seperated by comma's."
140
- msgid ""
141
- "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by simply "
142
- "adding their Email It In email addresses. Email addresses need to be "
143
- "seperated by comma's."
144
- msgstr ""
145
- "<b>Instrucciones</b>: Manda facturas de cliente al almacenamiento en la nube "
146
- "del proveedor simplemente añadiendo sus direcciones de e-mail de Email It "
147
- "In. Las direcciones de e-mail deben estar separadas por comas."
148
-
149
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:311
150
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:72
151
- msgid "Attach to Emails"
152
- msgstr "Adjuntar a e-mails"
153
-
154
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:322
155
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:400
156
- msgid "Prefix"
157
- msgstr "Prefijo"
158
-
159
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:333
160
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:411
161
- msgid "Suffix"
162
- msgstr "Sufijo"
163
-
164
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:344
165
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:422
166
- msgid "Format"
167
- msgstr "Formato"
168
-
169
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:349
170
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:427
171
- #, php-format
172
- msgid "Available placeholders: %s."
173
- msgstr "Módulos disponibles: %s."
174
-
175
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:351
176
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:429
177
- #, php-format
178
- msgid "<b>Note:</b> %s is required and slashes aren't supported."
179
- msgstr "<b>Nota:</b> Se requiere %s y no se admiten barras (/, \\)."
180
-
181
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:363
182
- msgid "Enable customer generation"
183
- msgstr "Activar generación de cliente"
184
-
185
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:365
186
- msgid "Let customers generate a global invoice from their account"
187
- msgstr "Permitir a los clientes generar una factura global desde su cuenta"
188
-
189
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:373
190
- msgid "Customer generation period"
191
- msgstr "Período de generación de cliente"
192
-
193
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:378
194
- msgid ""
195
- "Should your customers have the ability to generate a global invoice by month "
196
- "or by year?<br/><strong>Note:</strong> Customer generation should be enabled."
197
- msgstr ""
198
- "Deberían los clientes tener la posibilidad de generar una factura global por "
199
- "mes o por año?<br/><strong>Nota:</strong> \"Generación de cliente\" debe "
200
- "estar activada."
201
-
202
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:380
203
- msgid "Month"
204
- msgstr "Mes"
205
-
206
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:381
207
- msgid "Year"
208
- msgstr "Año"
209
-
210
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:393
211
- msgid "Send to your Cloud Storage"
212
- msgstr "Mandar a tu almacenamiento en la nube"
213
-
214
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:405
215
- msgid "Email to customer"
216
- msgstr "E-mail a cliente"
217
-
218
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:417
219
- msgid "Email to supplier(s)"
220
- msgstr "E-mail a proveedor(es)"
221
-
222
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:424
223
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:146
224
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:146
225
- msgid "Email subject"
226
- msgstr "Asunto del e-mail"
227
-
228
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:429
229
- msgid "Subject for the global invoice email."
230
- msgstr "Asunto para el e-mail de factura global."
231
-
232
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:436
233
- msgid "Email message"
234
- msgstr "Mensaje e-mail"
235
-
236
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:441
237
- msgid "Message for the global invoice email."
238
- msgstr "Mensaje para el e-mail de factura global."
239
-
240
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:453
241
- msgid "Enable reminder"
242
- msgstr "Activar recordatorio"
243
-
244
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:460
245
- #, fuzzy
246
- #| msgid "Days until reminder"
247
- msgid "Days until due date"
248
- msgstr "Días hasta el recordatorio"
249
-
250
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:465
251
- #, fuzzy
252
- #| msgid "Number of days from starting date until reminder date."
253
- msgid "Number of days from order or invoice date until due date."
254
- msgstr ""
255
- "Número de días desde la fecha de inicio hasta la fecha del recordatorio."
256
-
257
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:474
258
- msgid "Days until reminder"
259
- msgstr "Días hasta el recordatorio"
260
-
261
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:479
262
- msgid "Number of days from order or invoice date until reminder date."
263
- msgstr ""
264
-
265
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:488
266
- msgid "Date type"
267
- msgstr ""
268
-
269
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:493
270
- msgid "Choose the type of date to count from."
271
- msgstr ""
272
-
273
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:495
274
- msgid "Order date"
275
- msgstr "Fecha del pedido"
276
-
277
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:496
278
- msgid "Invoice date"
279
- msgstr ""
280
-
281
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:508
282
- msgid "Enable Request Invoice."
283
- msgstr ""
284
-
285
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:590
286
- msgid "Activation email cannot be empty."
287
- msgstr ""
288
-
289
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:630
290
- msgid ""
291
- "Something went wrong with the activation of your license. Contact the author "
292
- "for support."
293
- msgstr ""
294
-
295
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:651
296
- msgid "File to large."
297
- msgstr "Archivo demasiado largo."
298
-
299
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:657
300
- msgid "Only PDF files are allowed."
301
- msgstr "Sólo se permiten archivos PDF."
302
-
303
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:682
304
- msgid "Remove"
305
- msgstr "Eliminar"
306
-
307
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:684
308
- msgid "Choose"
309
- msgstr "Escoger"
310
-
311
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:712
312
- msgid "Inactive"
313
- msgstr "Inactivo"
314
-
315
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:714
316
- msgid "Active"
317
- msgstr "Activo"
318
-
319
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-credit-note.php:12
320
- #, php-format
321
- msgid "PDF Credit Note %1$s"
322
- msgstr ""
323
-
324
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:10
325
- msgid "Generate Global Invoice"
326
- msgstr "Generar Factura Global"
327
-
328
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:20
329
- msgid "Select a month"
330
- msgstr "Selecciona un mes"
331
-
332
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:33
333
- msgid "Select a year"
334
- msgstr "Selecciona un año"
335
-
336
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:47
337
- msgid "Generate invoice"
338
- msgstr "Generar factura"
339
-
340
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:16
341
- #, fuzzy
342
- #| msgid "Global invoice successfully generated! "
343
- msgid "Global invoice successfully generated!"
344
- msgstr "¡Factura global creada con éxito! "
345
-
346
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
347
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:663
348
- msgid "View invoice"
349
- msgstr "Ver factura"
350
-
351
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
352
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:751
353
- msgid "View"
354
- msgstr "Ver"
355
-
356
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:37
357
- msgid "Bulk Export PDF Invoices"
358
- msgstr "Exportar facturas PDF en lote"
359
-
360
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:38
361
- msgid "Bulk Export PDF Packing Slips"
362
- msgstr ""
363
-
364
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:85
365
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:73
366
- msgid "No order selected."
367
- msgstr "No hay un pedido seleccionado."
368
-
369
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:37
370
- msgid "Bulk Generate PDF Invoices"
371
- msgstr "Crear facturas PDF en lote"
372
-
373
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:38
374
- msgid "Bulk Generate PDF Packing Slips"
375
- msgstr ""
376
-
377
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:135
378
- msgid "PDF Credit Notes"
379
- msgstr ""
380
-
381
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:283
382
- #, php-format
383
- msgid ""
384
- "<a href=\"%1$s\" class=\"%2$s\" target=\"%3$s\">PDF Credit Note (%4$s)</a> "
385
- "for Refund #%5$s."
386
- msgstr ""
387
-
388
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:289
389
- #, php-format
390
- msgid "created on %1$s at %2$s"
391
- msgstr ""
392
-
393
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:291
394
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:775
395
- msgid "Delete"
396
- msgstr ""
397
-
398
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:297
399
- msgid "There are no credit notes yet."
400
- msgstr ""
401
-
402
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:309
403
- msgid "Create PDF Credit Notes for selected refund(s)"
404
- msgstr ""
405
-
406
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:339
407
- msgid "Credit note"
408
- msgstr ""
409
-
410
- #: woocommerce-pdf-invoices-premium/includes/class-install.php:91
411
- #, php-format
412
- msgid ""
413
- "%1$s requires %2$s to be activated. Install and activate it and you should "
414
- "be good to go! :)"
415
- msgstr ""
416
- "%1$s requiere que %2$s esté activado. Instálalo y actívalo y ya debería "
417
- "estar listo :)"
418
-
419
- #: woocommerce-pdf-invoices-premium/includes/class-install.php:100
420
- #, php-format
421
- msgid ""
422
- "%1$s requires at least %2$s. Update it and get the best out of both "
423
- "plugins. :)"
424
- msgstr ""
425
- "%1$s requiere al menos %2$s. Actualízalo y consigue lo mejor de ambos "
426
- "plugins. :)"
427
-
428
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:228
429
- msgid "Invalid request"
430
- msgstr "Solicitud no válida"
431
-
432
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:248
433
- msgid "No orders found."
434
- msgstr "No se han encontrado pedidos."
435
-
436
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:295
437
- msgid "Generate global invoice"
438
- msgstr "Generar factura global"
439
-
440
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:323
441
- msgid ""
442
- "Could not generate the invoice. Global invoices are only supported when "
443
- "using the micro template."
444
- msgstr ""
445
-
446
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:336
447
- msgid "Select more then one order to generate a global invoice."
448
- msgstr "Selecciona más de un pedido para poder generar una factura global."
449
-
450
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
451
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
452
- msgid "Yes"
453
- msgstr "Sí"
454
-
455
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
456
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
457
- msgid "No"
458
- msgstr "No"
459
-
460
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:83
461
- msgid "Reminder on:"
462
- msgstr ""
463
-
464
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:88
465
- msgid "Reminder sent?"
466
- msgstr "¿Recordatorio enviado?"
467
-
468
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:296
469
- #, fuzzy
470
- #| msgid "Order Date: %s"
471
- msgid "Due Date:"
472
- msgstr "Fecha Pedido: %s"
473
-
474
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:61
475
- msgid ""
476
- "Instead consider creating a Cancelled PDF invoice by changing the order "
477
- "status to Cancelled."
478
- msgstr ""
479
-
480
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:103
481
- #, fuzzy
482
- #| msgid "Cancel"
483
- msgid "Cancelled"
484
- msgstr "Cancelar"
485
-
486
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:116
487
- msgid "Advanced Table Content"
488
- msgstr ""
489
-
490
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:117
491
- msgid ""
492
- "Enable Advanced Table Content settings to fully customize line item columns "
493
- "and total rows. When enabled the standard Table Content settings will be "
494
- "ignored. When using a custom template, make sure to update it! Micro "
495
- "template is not supported."
496
- msgstr ""
497
-
498
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:145
499
- msgid "Enable Advanced Table Content"
500
- msgstr ""
501
-
502
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:157
503
- msgid "Show SKU as meta data"
504
- msgstr ""
505
-
506
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:164
507
- msgid "Display tax totals"
508
- msgstr ""
509
-
510
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:172
511
- msgid "Itemized"
512
- msgstr ""
513
-
514
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:173
515
- msgid "As a single total"
516
- msgstr ""
517
-
518
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:179
519
- #, fuzzy
520
- #| msgid "Left footer column."
521
- msgid "Line item columns"
522
- msgstr "Columna izquierda del pie de página."
523
-
524
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:188
525
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:393
526
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:48
527
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:403
528
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:53
529
- msgid "Description"
530
- msgstr "Descripción"
531
-
532
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:193
533
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:198
534
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:401
535
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:405
536
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:57
537
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:60
538
- msgid "Cost"
539
- msgstr "Importe"
540
-
541
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:203
542
- msgid "Quantity"
543
- msgstr ""
544
-
545
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:213
546
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:218
547
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:281
548
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:286
549
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:413
550
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:417
551
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:77
552
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:235
553
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:405
554
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:71
555
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:275
556
- msgid "Total"
557
- msgstr "Total"
558
-
559
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:227
560
- #, fuzzy
561
- #| msgid "Total"
562
- msgid "Total rows"
563
- msgstr "Total"
564
-
565
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:236
566
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:261
567
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:173
568
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:506
569
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:207
570
- msgid "Discount"
571
- msgstr "Descuento"
572
-
573
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:241
574
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:266
575
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:182
576
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:200
577
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:518
578
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:215
579
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:231
580
- msgid "Shipping"
581
- msgstr "Envío"
582
-
583
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:246
584
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:271
585
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:212
586
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:242
587
- msgid "Fee"
588
- msgstr "Cuota"
589
-
590
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:251
591
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:256
592
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:191
593
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:470
594
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:223
595
- msgid "Subtotal"
596
- msgstr "Subtotal"
597
-
598
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:349
599
- msgid "SKU:"
600
- msgstr ""
601
-
602
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:397
603
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:65
604
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:59
605
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:404
606
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:62
607
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:63
608
- msgid "Qty"
609
- msgstr "Cant."
610
-
611
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:607
612
- #, fuzzy, php-format
613
- #| msgid "Subtotal"
614
- msgid "Subtotal %s"
615
- msgstr "Subtotal"
616
-
617
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:625
618
- #, fuzzy, php-format
619
- #| msgid "Discount"
620
- msgid "Discount %s"
621
- msgstr "Descuento"
622
-
623
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:652
624
- #, fuzzy, php-format
625
- #| msgid "Shipping"
626
- msgid "Shipping %s"
627
- msgstr "Envío"
628
-
629
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:685
630
- #, fuzzy, php-format
631
- #| msgid "%1$s of %2$s"
632
- msgid "%1$s %2$s"
633
- msgstr "%1$s de %2$s"
634
-
635
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:866
636
- #, fuzzy, php-format
637
- #| msgid "Total"
638
- msgid "Total %s"
639
- msgstr "Total"
640
-
641
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:993
642
- msgid "Request invoice"
643
- msgstr ""
644
-
645
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:43
646
- #, fuzzy
647
- #| msgid "Customer note"
648
- msgid "Customer credit note"
649
- msgstr "Nota del Cliente"
650
-
651
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:44
652
- msgid ""
653
- "Customer credit note emails can be sent to customers containing their PDF "
654
- "Credit Note."
655
- msgstr ""
656
-
657
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:50
658
- msgid "Credit note for order {order_number} from {order_date}"
659
- msgstr ""
660
-
661
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:51
662
- msgid "Credit note for order {order_number}"
663
- msgstr ""
664
-
665
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:149
666
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:158
667
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:149
668
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:158
669
- #, php-format
670
- msgid "Defaults to %s"
671
- msgstr ""
672
-
673
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:155
674
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:155
675
- msgid "Email heading"
676
- msgstr ""
677
-
678
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:164
679
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:164
680
- msgid "Email type"
681
- msgstr ""
682
-
683
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:166
684
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:166
685
- msgid "Choose which format of email to send."
686
- msgstr ""
687
-
688
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:43
689
- msgid "Customer invoice reminder"
690
- msgstr ""
691
-
692
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:44
693
- msgid ""
694
- "Customer invoice reminder emails can be sent to customers containing their "
695
- "order information and payment links."
696
- msgstr ""
697
-
698
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:49
699
- msgid "Invoice reminder for order {order_number} from {order_date}"
700
- msgstr ""
701
-
702
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:50
703
- msgid "Invoice reminder for order {order_number}"
704
- msgstr ""
705
-
706
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:35
707
- msgid "Credit Note"
708
- msgstr ""
709
-
710
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:46
711
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:52
712
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:40
713
- msgid "Ship to:"
714
- msgstr "Mandar a:"
715
-
716
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:61
717
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:59
718
- msgid "Product"
719
- msgstr "Producto"
720
-
721
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:71
722
- msgid "Price"
723
- msgstr "Precio"
724
-
725
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:135
726
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:127
727
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:109
728
- #, php-format
729
- msgid "Note from customer: %s"
730
- msgstr "Nota del cliente: %s"
731
-
732
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:140
733
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:132
734
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:114
735
- #, php-format
736
- msgid "Note to customer: %s"
737
- msgstr "Nota al cliente: %s"
738
-
739
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:152
740
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:314
741
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:144
742
- msgid "Zero rated for VAT as customer has supplied EU VAT number"
743
- msgstr ""
744
- "No se aplican impuestos ya que el cliente ha aportado un VAT number para la "
745
- "UE"
746
-
747
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/footer.php:26
748
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/footer.php:15
749
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/footer.php:12
750
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/footer.php:26
751
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/footer.php:23
752
- #, php-format
753
- msgid "%1$s of %2$s"
754
- msgstr "%1$s de %2$s"
755
-
756
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:39
757
- #, php-format
758
- msgid "Credit Note #: %s"
759
- msgstr ""
760
-
761
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:41
762
- #, fuzzy, php-format
763
- #| msgid "Order Date: %s"
764
- msgid "Date: %s"
765
- msgstr "Fecha Pedido: %s"
766
-
767
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:45
768
- #, php-format
769
- msgid "Invoice #: %s"
770
- msgstr "Factura nº: %s"
771
-
772
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:47
773
- #, php-format
774
- msgid "Invoice Date: %s"
775
- msgstr "Fecha de factura: %s"
776
-
777
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:51
778
- #, fuzzy, php-format
779
- #| msgid "Order #%d - %s"
780
- msgid "Order #: %s"
781
- msgstr "Pedido nº %d - %s"
782
-
783
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:53
784
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:38
785
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:37
786
- #, php-format
787
- msgid "Order Date: %s"
788
- msgstr "Fecha Pedido: %s"
789
-
790
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:57
791
- #, php-format
792
- msgid "Payment Method: %s"
793
- msgstr "Método de pago: %s"
794
-
795
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:64
796
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:681
797
- #, php-format
798
- msgid "Purchase Order Number: %s"
799
- msgstr "Comprar Pedido Número: %s"
800
-
801
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:73
802
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:663
803
- #, php-format
804
- msgid "VAT Number: %s"
805
- msgstr "VAT Number: %s"
806
-
807
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/customer-credit-note.php:25
808
- #, fuzzy
809
- #| msgid "Order date"
810
- msgid "Order:"
811
- msgstr "Fecha del pedido"
812
-
813
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:23
814
- #, fuzzy, php-format
815
- #| msgid "Order Number: %s"
816
- msgid "Order number: %s"
817
- msgstr "Pedido nº: %s"
818
-
819
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:24
820
- #, fuzzy, php-format
821
- #| msgid "Order Date: %s"
822
- msgid "Order date: %s"
823
- msgstr "Fecha Pedido: %s"
824
-
825
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:9
826
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:11
827
- msgid "Invoice to"
828
- msgstr "Factura a"
829
-
830
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:14
831
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:16
832
- #, php-format
833
- msgid "Phone: %s"
834
- msgstr "Teléfono: %s"
835
-
836
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:19
837
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:23
838
- msgid "Ship to"
839
- msgstr "Enviar a"
840
-
841
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:30
842
- msgid "Global Invoice"
843
- msgstr "Factura Global"
844
-
845
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:53
846
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:458
847
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:57
848
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:55
849
- msgid "SKU"
850
- msgstr "Identificador"
851
-
852
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:66
853
- msgid "VAT"
854
- msgstr "Impuestos"
855
-
856
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:89
857
- #, php-format
858
- msgid "Order #%d - %s"
859
- msgstr "Pedido nº %d - %s"
860
-
861
- #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:103
862
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:409
863
- msgid "Settings"
864
- msgstr "Ajustes"
865
-
866
- #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:104
867
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:62
868
- msgid "Support"
869
- msgstr "Soporte"
870
-
871
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-document.php:150
872
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:36
873
- msgid "Paid"
874
- msgstr "Pagado"
875
-
876
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:491
877
- msgid "Subtotal:"
878
- msgstr "Subtotal:"
879
-
880
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:506
881
- msgid "Discount:"
882
- msgstr "Descuento:"
883
-
884
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:521
885
- msgid "Shipping:"
886
- msgstr "Envío:"
887
-
888
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:594
889
- msgid "Total:"
890
- msgstr "Total:"
891
-
892
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:861
893
- #, php-format
894
- msgid "%s of %s"
895
- msgstr "%s de %s"
896
-
897
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:100
898
- msgid "Invoices"
899
- msgstr "Facturas"
900
-
901
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:164
902
- #, php-format
903
- msgid ""
904
- "If you like <strong>WooCommerce PDF Invoices</strong> please leave us a <a "
905
- "href=\"%s\">★★★★★</a> rating. A huge thank you in advance!"
906
- msgstr ""
907
- "Si te gusta <strong>WooCommerce PDF Invoices</strong>, por favor, déjanos "
908
- "una valoración <a href=\"%s\">★★★★★</a>. ¡Muchas gracias!"
909
-
910
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:173
911
- #, php-format
912
- msgid "Version %s"
913
- msgstr "Versión %s"
914
-
915
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:286
916
- #, fuzzy
917
- #| msgid "Choose"
918
- msgid "Choose&hellip;"
919
- msgstr "Escoger"
920
-
921
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:287
922
- msgid "Column"
923
- msgstr ""
924
-
925
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
926
- #, fuzzy
927
- #| msgid "Select a year"
928
- msgid "Select all"
929
- msgstr "Selecciona un año"
930
-
931
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
932
- #, fuzzy
933
- #| msgid "Select a month"
934
- msgid "Select none"
935
- msgstr "Selecciona un mes"
936
-
937
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:25
938
- msgid "General"
939
- msgstr "General"
940
-
941
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:41
942
- msgid "Email Options"
943
- msgstr "Opciones de correo electrónico"
944
-
945
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:42
946
- #, fuzzy, php-format
947
- #| msgid ""
948
- #| "The PDF invoice will be generated when WooCommerce sends the "
949
- #| "corresponding email. The email should be <a href=\"%1$s\">enabled</a> in "
950
- #| "order to automatically generate the PDF invoice."
951
- msgid ""
952
- "The PDF invoice will be generated when WooCommerce sends the corresponding "
953
- "email. The email should be <a href=\"%1$s\">enabled</a> in order to "
954
- "automatically generate the PDF invoice. Want to attach PDF documents to many "
955
- "more email types? Take a look at %2$s."
956
- msgstr ""
957
- "La factura PDF será creada cuando WooCommerce mande el e-mail "
958
- "correspondiente. El e-mail debería estar <a href=\"%1$s\">activado</a> para "
959
- "poder generar la factura PDF automáticamente."
960
-
961
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:45
962
- msgid "Download Options"
963
- msgstr "Opciones de descarga"
964
-
965
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:48
966
- msgid "Cloud Storage Options"
967
- msgstr "Opciones de almacenamiento en la nube"
968
-
969
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:49
970
- #, php-format
971
- msgid ""
972
- "Sign-up at <a href=\"%1$s\">Email It In</a> to send invoices to your "
973
- "Dropbox, OneDrive, Google Drive or Egnyte and enter your account below."
974
- msgstr ""
975
- "Date de alta en <a href=\"%1$s\">Email It In</a> para mandar facturas a tu "
976
- "Dropbox, OneDrive, Google Drive o Egnyte e introduce los datos de tu cuenta "
977
- "debajo."
978
-
979
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:52
980
- msgid "Interface Options"
981
- msgstr "Opciones de interfaz"
982
-
983
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:55
984
- msgid "Debug Options"
985
- msgstr "Opciones de Debug"
986
-
987
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:80
988
- msgid "New order"
989
- msgstr "Nuevo pedido"
990
-
991
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:85
992
- msgid "Order on-hold"
993
- msgstr "Pedido en espera"
994
-
995
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:90
996
- msgid "Processing order"
997
- msgstr "Procesando el pedido."
998
-
999
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:95
1000
- msgid "Completed order"
1001
- msgstr "Pedido completado"
1002
-
1003
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:100
1004
- msgid "Customer invoice"
1005
- msgstr "Factura de Cliente"
1006
-
1007
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:114
1008
- msgid "Disable for free products"
1009
- msgstr "Desactivar para productos gratuitos"
1010
-
1011
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:116
1012
- msgid ""
1013
- "Skip automatic PDF invoice generation for orders containing only free "
1014
- "products."
1015
- msgstr ""
1016
- "Saltarse la generación de facturas PDF para pedidos que sólo contienen "
1017
- "productos gratuitos."
1018
-
1019
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:124
1020
- msgid "View PDF"
1021
- msgstr "Ver PDF"
1022
-
1023
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:131
1024
- msgid "Download"
1025
- msgstr "Descargar"
1026
-
1027
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:132
1028
- msgid "Open in new browser tab/window"
1029
- msgstr "Abrir en una nueva ventana/pestaña del navegador"
1030
-
1031
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:144
1032
- msgid "Enable download from my account"
1033
- msgstr "Activar la descarga desde \"mi cuenta\""
1034
-
1035
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:146
1036
- msgid ""
1037
- "By default PDF is only downloadable when order has been paid, so order "
1038
- "status should be Processing or Completed."
1039
- msgstr ""
1040
- "Por defecto el PDF es sólo descargable cuando el pedido se ha pagado, así "
1041
- "que el estado del pedido debería ser Procesando o Completado."
1042
-
1043
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:159
1044
- msgid "Enable Email It In"
1045
- msgstr "Habilitar Email It In"
1046
-
1047
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:166
1048
- msgid "Email It In account"
1049
- msgstr "Cuenta Email it In"
1050
-
1051
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:171
1052
- #, php-format
1053
- msgid "Get your account from your %1$s <a href=\"%2$s\">user account</a>."
1054
- msgstr ""
1055
- "Consigue tu cuenta desde tu <a href=\"%2$s\">cuenta de usuario</a> en %1$s."
1056
-
1057
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:182
1058
- msgid "Enable Invoice Number column"
1059
- msgstr "Activar columna número de factura"
1060
-
1061
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:183
1062
- msgid "Display invoice numbers on Shop Order page."
1063
- msgstr ""
1064
- "Mostrar una columna con los números de factura en la página de "
1065
- "administración de pedidos de WooCommerce."
1066
-
1067
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:195
1068
- msgid "Enable mPDF debugging"
1069
- msgstr "Activar debugging de mPDF"
1070
-
1071
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:196
1072
- msgid "Enable if you aren't able to create an invoice."
1073
- msgstr "Activar si por alguna razón no puedes crear facturas."
1074
-
1075
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:25
1076
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:101
1077
- msgid "Template"
1078
- msgstr "Plantilla"
1079
-
1080
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:43
1081
- msgid "General Options"
1082
- msgstr "Ajustes generales"
1083
-
1084
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:44
1085
- #, php-format
1086
- msgid ""
1087
- "Want to customize the template? The <a href=\"%s\">FAQ</a> will give you a "
1088
- "brief description."
1089
- msgstr ""
1090
- "¿Quieres personalizar la plantilla? El <a href=\"%s\">FAQ</a> te explicará "
1091
- "brevemente cómo hacerlo."
1092
-
1093
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:47
1094
- msgid "Invoice Number Options"
1095
- msgstr "Opciones de número de factura"
1096
-
1097
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:50
1098
- msgid "Packing Slips Options"
1099
- msgstr ""
1100
-
1101
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:51
1102
- msgid ""
1103
- "Packing slips are <strong>only available</strong> when using minimal "
1104
- "template."
1105
- msgstr ""
1106
-
1107
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:54
1108
- msgid "Header Options"
1109
- msgstr "Opciones de la cabecera"
1110
-
1111
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:55
1112
- msgid "The header will be visible on every page."
1113
- msgstr "El encabezado se mostrará en todas las páginas."
1114
-
1115
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:58
1116
- msgid "Body Options"
1117
- msgstr "Opciones de Contenido"
1118
-
1119
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:59
1120
- msgid "Configuration options for the body of the template. ."
1121
- msgstr ""
1122
-
1123
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:62
1124
- msgid "Footer Options"
1125
- msgstr "Opciones del Pie"
1126
-
1127
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:63
1128
- msgid "The footer will be visible on every page."
1129
- msgstr "El pie de página se mostrará en todas las páginas."
1130
-
1131
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:66
1132
- msgid "Table Content"
1133
- msgstr ""
1134
-
1135
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:67
1136
- msgid "Enable or disable the columns."
1137
- msgstr "Activar o desactivar las columnas."
1138
-
1139
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:106
1140
- #, php-format
1141
- msgid "Create a custom template by copying it from %1$s to %2$s."
1142
- msgstr "Crea una plantilla personalizada copiándola de %1$s a %2$s."
1143
-
1144
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:108
1145
- #, php-format
1146
- msgid ""
1147
- "<strong>Note:</strong> The %1$s template will probably no longer be "
1148
- "supported in future versions, consider using the %2$s template."
1149
- msgstr ""
1150
-
1151
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:116
1152
- msgid "Color theme"
1153
- msgstr "Color del tema"
1154
-
1155
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:132
1156
- msgid "Display theme text in black color"
1157
- msgstr "Mostrar el texto de la plantilla en color negro"
1158
-
1159
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:134
1160
- msgid ""
1161
- "Enable if you've set the color theme to white or some other light color."
1162
- msgstr ""
1163
- "Activar si has cambiado el color de la plantilla a blanco u otro color claro."
1164
-
1165
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:142
1166
- msgid "Date format"
1167
- msgstr "Formato de fecha"
1168
-
1169
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:147
1170
- #, php-format
1171
- msgid "<a href=\"%s\">Format</a> of invoice date and order date."
1172
- msgstr ""
1173
- "<a href=\"%s\">Formato</a> de la fecha de la factura y fecha del pedido."
1174
-
1175
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:159
1176
- msgid "Display prices including tax"
1177
- msgstr "Mostrar precios con impuesto incluido"
1178
-
1179
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:161
1180
- msgid ""
1181
- "Line item totals will be including tax. <br/><b>Note</b>: Subtotal will "
1182
- "still be excluding tax, so disable it within the visible columns section."
1183
- msgstr ""
1184
- "Los totales por línea de producto incluirán impuestos. <br/><b>Nota</b>: El "
1185
- "subtotal continuará excluyendo impuestos, así que desactívalo en la sección "
1186
- "de columnas visibles."
1187
-
1188
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:174
1189
- msgid "Shipping taxable"
1190
- msgstr "Envío sujeto a impuestos"
1191
-
1192
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:176
1193
- msgid "Enable to display subtotal including shipping."
1194
- msgstr "Mostrar subtotal incluyendo envío."
1195
-
1196
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:189
1197
- msgid "Mark invoice as paid"
1198
- msgstr "Marcar factura como pagada"
1199
-
1200
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:191
1201
- msgid "Invoice will be watermarked when order has been paid."
1202
- msgstr "La factura se marcará cuando el pedido haya sido pagado."
1203
-
1204
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:204
1205
- msgid "Disable Packing Slips"
1206
- msgstr "Desactivar Notas de Empaquetado"
1207
-
1208
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:211
1209
- msgid "Company name"
1210
- msgstr "Nombre de la empresa"
1211
-
1212
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:222
1213
- msgid "Company logo"
1214
- msgstr "Logo de la empresa"
1215
-
1216
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:227
1217
- #, fuzzy, php-format
1218
- #| msgid ""
1219
- #| "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> "
1220
- #| "or choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href="
1221
- #| "\"%3$s\" target=\"_blank\">URL</a>."
1222
- msgid ""
1223
- "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> or "
1224
- "choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href=\"%3$s"
1225
- "\" target=\"_blank\">File URL</a>."
1226
- msgstr ""
1227
- "Usa la <a href=\"%1$s\">Librería de Medios</a> para <a href=\"%2$s\">subir "
1228
- "una imagen</a> o escoge un archivo .jpg, .jpeg, .gif o .png y copia y pega "
1229
- "la <a href=\"%3$s\" target=\"_blank\">URL</a>."
1230
-
1231
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:233
1232
- msgid "Company address"
1233
- msgstr "Dirección de la empresa"
1234
-
1235
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:238
1236
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:249
1237
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:271
1238
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:310
1239
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:322
1240
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:333
1241
- #, php-format
1242
- msgid "Allowed HTML tags: %s."
1243
- msgstr "Etiquetas HTML permitidas: %s."
1244
-
1245
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:244
1246
- msgid "Company details"
1247
- msgstr "Detalles de la empresa"
1248
-
1249
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:255
1250
- msgid "Title"
1251
- msgstr "Título"
1252
-
1253
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:260
1254
- msgid "Change the name of the invoice."
1255
- msgstr "Cambia el nombre de la factura."
1256
-
1257
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:261
1258
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:853
1259
- msgid "Invoice"
1260
- msgstr "Factura"
1261
-
1262
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:266
1263
- msgid "Thank you text"
1264
- msgstr "Texto de agradecimiento"
1265
-
1266
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:272
1267
- msgid "Visible in big colored bar directly after invoice total."
1268
- msgstr ""
1269
- "Se muestra en una barra grande coloreada justo después del total de la "
1270
- "factura."
1271
-
1272
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:283
1273
- msgid "Show customers shipping address"
1274
- msgstr "Mostrar la dirección de envío del cliente"
1275
-
1276
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:285
1277
- msgid ""
1278
- "Customers shipping address won't be visible when order has only virtual "
1279
- "products."
1280
- msgstr ""
1281
- "La dirección de envío del cliente no será visible cuando el pedido sólo "
1282
- "contenga productos virtuales."
1283
-
1284
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:298
1285
- msgid "Show customer notes"
1286
- msgstr "Mostrar notas de cliente"
1287
-
1288
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:305
1289
- msgid "Terms & conditions, policies etc."
1290
- msgstr "Términos y condiciones, políticas, etc."
1291
-
1292
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:311
1293
- #, php-format
1294
- msgid ""
1295
- "Visible below customer notes and above footer. Want to attach additional "
1296
- "pages to the invoice? Take a look at <a href=\"%1$s\">%2$s</a> plugin."
1297
- msgstr ""
1298
- "Visible bajo las notas de cliente y encima del pie de página. ¿Quieres "
1299
- "añadir páginas adicionales a la factura? Échale un vistazo al plugin <a href="
1300
- "\"%1$s\">%2$s</a>."
1301
-
1302
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:317
1303
- msgid "Left footer column."
1304
- msgstr "Columna izquierda del pie de página."
1305
-
1306
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:328
1307
- msgid "Right footer column."
1308
- msgstr "Columna derecha del pie de página."
1309
-
1310
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:339
1311
- msgid "Type"
1312
- msgstr "Tipo"
1313
-
1314
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:346
1315
- msgid "WooCommerce order number"
1316
- msgstr "Número de pedido de WooCommerce"
1317
-
1318
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:347
1319
- msgid "Sequential number"
1320
- msgstr "Número secuencial"
1321
-
1322
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:359
1323
- msgid "Reset invoice counter"
1324
- msgstr "Restablecer contador de facturas"
1325
-
1326
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:367
1327
- msgid "Next"
1328
- msgstr "Siguiente"
1329
-
1330
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:372
1331
- msgid "Next invoice number when resetting counter."
1332
- msgstr "Próximo número de factura al restablecer el contador."
1333
-
1334
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:374
1335
- msgid ""
1336
- "<b>Note:</b> Only available for Sequential numbering. All PDF invoices with "
1337
- "invoice number greater then next invoice number will be deleted!"
1338
- msgstr ""
1339
- "<b>Nota:</b> Sólo disponible para numeración secuencial. ¡Todas las facturas "
1340
- "PDF con un número superior al \"próximo número de factura\" especificado "
1341
- "serán borradas!"
1342
-
1343
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:384
1344
- msgid "Digits"
1345
- msgstr "Dígitos"
1346
-
1347
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:441
1348
- msgid "Reset yearly"
1349
- msgstr "Restablecer anualmente"
1350
-
1351
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:443
1352
- msgid "Automatically reset invoice numbers on new year's day."
1353
- msgstr "Restablecer números de factura automáticamente el día de año nuevo."
1354
-
1355
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:445
1356
- msgid ""
1357
- "<b>Note</b>: You will have to generate all invoices again when changing "
1358
- "option."
1359
- msgstr ""
1360
- "<b>Nota</b>: Tendrás que generar todas las facturas de nuevo al cambiar la "
1361
- "opción."
1362
-
1363
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:482
1364
- msgid "Tax (item)"
1365
- msgstr "Impuesto (item)"
1366
-
1367
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:494
1368
- msgid "Tax (total)"
1369
- msgstr "Impuesto (total)"
1370
-
1371
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:564
1372
- msgid ""
1373
- "Company logo not found. Upload the image to the Media Library and try again."
1374
- msgstr ""
1375
- "No se ha encontrado el logo de la empresa. Sube la imagen a la Librería de "
1376
- "Medios e inténtalo de nuevo."
1377
-
1378
- #: woocommerce-pdf-invoices/includes/admin/views/html-activation-notice.php:16
1379
- #, php-format
1380
- msgid ""
1381
- "The settings of WooCommerce PDF Invoices are available <a href=\"%1$s\">on "
1382
- "this page</a>."
1383
- msgstr ""
1384
- "Los ajustes de WooCommerce PDF Invoices están disponibles <a href=\"%1$s"
1385
- "\">en esta página</a>."
1386
-
1387
- #: woocommerce-pdf-invoices/includes/admin/views/html-deactivation-notice.php:19
1388
- #, php-format
1389
- msgid ""
1390
- "Before we deactivate WooCommerce PDF Invoices, would you care to <a href="
1391
- "\"%1$s\" target=\"_blank\">let us know why</a> so we can improve it for you? "
1392
- "<a href=\"%2$s\">No, deactivate now</a>."
1393
- msgstr ""
1394
- "Antes de desactivar WooCommerce PDF Invoices, ¿podrías <a href=\"%1$s\" "
1395
- "target=\"_blank\">decirnos por qué</a> quieres hacerlo, de manera que lo "
1396
- "podamos mejorar? <a href=\"%2$s\">No, desactivar ahora</a>."
1397
-
1398
- #: woocommerce-pdf-invoices/includes/admin/views/html-rate-notice.php:18
1399
- #, php-format
1400
- msgid ""
1401
- "Hi%1$s! You're using <b>WooCommerce PDF Invoices</b> for some time now and "
1402
- "we would appreciate your <a href=\"%2$s\" target=\"_blank\">★★★★★</a> "
1403
- "rating. It will support future development big-time."
1404
- msgstr ""
1405
- "¡Hola%1$s! Llevas usando <b>WooCommerce PDF Invoices</b> un tiempo y "
1406
- "apreciaríamos mucho tu valoración <a href=\"%2$s\" target=\"_blank\">★★★★★</"
1407
- "a>. Nos ayudaría mucho para seguir desarrollándolo."
1408
-
1409
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:2
1410
- msgid "WooCommerce PDF Invoices Premium"
1411
- msgstr "WooCommerce PDF Invoices Premium"
1412
-
1413
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:4
1414
- msgid ""
1415
- "This plugin offers a premium version which comes with the following features:"
1416
- msgstr ""
1417
- "Este plugin ofrece una versión premium que tiene las siguientes "
1418
- "características:"
1419
-
1420
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:5
1421
- msgid ""
1422
- "Attach PDF invoices to many more email types including third party plugins."
1423
- msgstr ""
1424
-
1425
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:6
1426
- msgid ""
1427
- "Send credit notes and cancelled PDF invoices when refunding or cancelling "
1428
- "order."
1429
- msgstr ""
1430
-
1431
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:7
1432
- msgid ""
1433
- "Fully customize the table content by modifying line item columns and total "
1434
- "rows."
1435
- msgstr ""
1436
-
1437
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:8
1438
- msgid ""
1439
- "Automatically send PDF invoices as a reminder configurable within a specific "
1440
- "period of time."
1441
- msgstr ""
1442
-
1443
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:9
1444
- #, fuzzy
1445
- #| msgid "Let customers generate a global invoice from their account"
1446
- msgid ""
1447
- "Let customers decide if they would like to get a PDF invoice on checkout."
1448
- msgstr "Permitir a los clientes generar una factura global desde su cuenta"
1449
-
1450
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:10
1451
- msgid "Change the font of the PDF invoices."
1452
- msgstr "Cambiar el tipo de letra de las facturas PDF."
1453
-
1454
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:12
1455
- msgid ""
1456
- "Generate PDF invoices in multiple languages (WPML and Polylang compatible)."
1457
- msgstr ""
1458
- "Generar facturas PDF en múltiples lenguajes (Compatible con WPML y Polylang)."
1459
-
1460
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:13
1461
- msgid "Bulk generate PDF invoices."
1462
- msgstr "Generar facturas PDF en lote."
1463
-
1464
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:14
1465
- msgid "Bulk export and/or download PDF invoices."
1466
- msgstr "Exportar o descargar facturas PDF en lote."
1467
-
1468
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:15
1469
- msgid "Bill periodically by generating and sending global invoices."
1470
- msgstr ""
1471
- "Facturar periódicamente mediante generación y envío de facturas globales."
1472
-
1473
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:16
1474
- msgid "Add additional PDF's to PDF invoices."
1475
- msgstr "Añadir PDFs adicionales a las facturas PDF."
1476
-
1477
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:17
1478
- msgid "Send PDF invoices to multiple recipients."
1479
- msgstr ""
1480
-
1481
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:18
1482
- #, php-format
1483
- msgid "Attach invoices to <a href=\"%s\">WooCommerce Subscriptions</a> emails."
1484
- msgstr ""
1485
- "Adjuntar facturas a e-mails de <a href=\"%s\">suscripciones de WooCommerce</"
1486
- "a>."
1487
-
1488
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:20
1489
- msgid "Learn more"
1490
- msgstr "Descubre más"
1491
-
1492
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:23
1493
- msgid "Stay up-to-date"
1494
- msgstr "Mantente al día"
1495
-
1496
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:27
1497
- msgid ""
1498
- "We're constantly developing new features, stay up-to-date by subscribing to "
1499
- "our newsletter."
1500
- msgstr ""
1501
- "Estamos desarrollando nuevas características constantemente, mantente al día "
1502
- "suscribiéndote a nuestra lista de correo."
1503
-
1504
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:33
1505
- msgid "Your email address"
1506
- msgstr "Tu dirección de e-mail"
1507
-
1508
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:39
1509
- msgid "Signup"
1510
- msgstr "Alta"
1511
-
1512
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:42
1513
- msgid "No spam, ever. Unsubscribe at any time"
1514
- msgstr "Nunca mandamos spam. Date de baja en cualquier momento"
1515
-
1516
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:51
1517
- msgid "About"
1518
- msgstr "Acerca de"
1519
-
1520
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:53
1521
- msgid ""
1522
- "This plugin is an open source project wich aims to fill the invoicing gap of "
1523
- "<a href=\"http://www.woothemes.com/woocommerce\">WooCommerce</a>."
1524
- msgstr ""
1525
- "Este plugin es un proyecto de código abierto que intenta llenar el vacío en "
1526
- "torno a la facturación de <a href=\"http://www.woothemes.com/woocommerce"
1527
- "\">WooCommerce</a>."
1528
-
1529
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:56
1530
- #, php-format
1531
- msgid "Version: %s"
1532
- msgstr "Versión: %s"
1533
-
1534
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:58
1535
- #, php-format
1536
- msgid "Author: %s"
1537
- msgstr "Autor: %s"
1538
-
1539
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:64
1540
- #, php-format
1541
- msgid ""
1542
- "We will never ask for donations, but to guarantee future development, we do "
1543
- "need your support. Please show us your appreciation by leaving a <a href="
1544
- "\"%1$s\">★★★★★</a> rating and vote for <a href=\"%2$s\">works</a>."
1545
- msgstr ""
1546
- "Nunca pediremos donaciones, pero para garantizar el desarrollo futuro de "
1547
- "este plugin, necesitamos tu apoyo. Por favor, muestra tu apreciación dejando "
1548
- "una valoración <a href=\"%1$s\">★★★★★</a> y votando por nuestro <a href="
1549
- "\"%2$s\">trabajo</a>."
1550
-
1551
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:88
1552
- msgid ""
1553
- "Checkout this amazing free WooCommerce PDF Invoices plugin for WordPress!"
1554
- msgstr ""
1555
- "¡Échale un vistazo a este increíble plugin gratuito de facturas PDF para "
1556
- "Wordpress y WooCommerce!"
1557
-
1558
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:93
1559
- msgid "Need Help?"
1560
- msgstr "¿Necesitas ayuda?"
1561
-
1562
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:95
1563
- msgid "Frequently Asked Questions"
1564
- msgstr "Preguntas Frecuentes"
1565
-
1566
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:96
1567
- msgid "Support forum"
1568
- msgstr "Foro de soporte"
1569
-
1570
- #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:97
1571
- msgid "Request a feature"
1572
- msgstr "Pide una funcionalidad"
1573
-
1574
- #: woocommerce-pdf-invoices/includes/class-invoice.php:99
1575
- #, fuzzy
1576
- #| msgid "Invoice #: %s"
1577
- msgid "Invoice #:"
1578
- msgstr "Factura nº: %s"
1579
-
1580
- #: woocommerce-pdf-invoices/includes/class-invoice.php:103
1581
- #, fuzzy
1582
- #| msgid "Invoice Date: %s"
1583
- msgid "Invoice Date:"
1584
- msgstr "Fecha de factura: %s"
1585
-
1586
- #: woocommerce-pdf-invoices/includes/class-invoice.php:107
1587
- #, fuzzy
1588
- #| msgid "Order Date: %s"
1589
- msgid "Order Date:"
1590
- msgstr "Fecha Pedido: %s"
1591
-
1592
- #: woocommerce-pdf-invoices/includes/class-invoice.php:111
1593
- #, fuzzy
1594
- #| msgid "Order Number: %s"
1595
- msgid "Order Number:"
1596
- msgstr "Pedido nº: %s"
1597
-
1598
- #: woocommerce-pdf-invoices/includes/class-invoice.php:115
1599
- #, fuzzy
1600
- #| msgid "Payment Method: %s"
1601
- msgid "Payment Method:"
1602
- msgstr "Método de pago: %s"
1603
-
1604
- #: woocommerce-pdf-invoices/includes/class-packing-slip.php:66
1605
- msgid "View packing slip"
1606
- msgstr "Ver nota de empaquetado"
1607
-
1608
- #: woocommerce-pdf-invoices/includes/compatibility/class-wc-core-compatibility.php:245
1609
- msgid "WooCommerce"
1610
- msgstr "WooCommerce"
1611
-
1612
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:37
1613
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:39
1614
- #, php-format
1615
- msgid "Order Number: %s"
1616
- msgstr "Pedido nº: %s"
1617
-
1618
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:268
1619
- msgid "VAT 0%"
1620
- msgstr "IVA 0%"
1621
-
1622
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:284
1623
- msgid "Refunded"
1624
- msgstr "Rembolsado"
1625
-
1626
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:300
1627
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:305
1628
- msgid "Customer note"
1629
- msgstr "Nota del Cliente"
1630
-
1631
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:29
1632
- msgid "Packing Slip"
1633
- msgstr "Nota Empaquetado"
1634
-
1635
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:44
1636
- #, php-format
1637
- msgid "Shipping Method: %s"
1638
- msgstr "Método de envío: %s"
1639
-
1640
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:626
1641
- msgid "Invoice No."
1642
- msgstr "Factura nº"
1643
-
1644
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:678
1645
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:700
1646
- msgid "PDF Invoice"
1647
- msgstr "PDF Factura"
1648
-
1649
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:715
1650
- msgid "Create"
1651
- msgstr "Crear"
1652
-
1653
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:721
1654
- #, fuzzy
1655
- #| msgid "Order Date: %s"
1656
- msgid "Date:"
1657
- msgstr "Fecha Pedido: %s"
1658
-
1659
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:725
1660
- #, fuzzy
1661
- #| msgid "VAT Number: %s"
1662
- msgid "Number:"
1663
- msgstr "VAT Number: %s"
1664
-
1665
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:734
1666
- msgid "Sent?"
1667
- msgstr ""
1668
-
1669
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:744
1670
- msgid "Debug"
1671
- msgstr ""
1672
-
1673
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:758
1674
- msgid "Update"
1675
- msgstr ""
1676
-
1677
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:763
1678
- #, fuzzy
1679
- #| msgid "Are you sure to delete the invoice?"
1680
- msgid "Are you sure to delete the PDF invoice?"
1681
- msgstr "¿Está seguro de eliminar la factura?"
1682
-
1683
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:767
1684
- #, php-format
1685
- msgid ""
1686
- "You will be missing a PDF invoice with invoice number %d and thus creating "
1687
- "an accounting gap!"
1688
- msgstr ""
1689
-
1690
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:770
1691
- #, php-format
1692
- msgid "Instead consider using Cancelled PDF invoices with %s."
1693
- msgstr ""
1694
-
1695
- #~ msgid "Send customer invoices directly to suppliers and others."
1696
- #~ msgstr "Mandar facturas de cliente directamente a proveedores y otros."
1697
-
1698
- #~ msgid "Visible Columns"
1699
- #~ msgstr "Columnas visibles"
1700
-
1701
- #~ msgid "Invoiced on:"
1702
- #~ msgstr "Facturado en:"
1703
-
1704
- #~ msgid "Invoice number:"
1705
- #~ msgstr "Nº de factura:"
1706
-
1707
- #~ msgid "Attach to %s Emails"
1708
- #~ msgstr "Adjuntar a %s e-mails"
1709
-
1710
- #~ msgid "New Renewal Order"
1711
- #~ msgstr "Nuevo Pedido Renovación"
1712
-
1713
- #~ msgid "Subscription Switch Complete"
1714
- #~ msgstr "Cambio Suscripción Completo"
1715
-
1716
- #~ msgid "Processing Renewal order"
1717
- #~ msgstr "Procesando Pedido de renovación"
1718
-
1719
- #~ msgid "Completed Renewal Order"
1720
- #~ msgstr "Pedido de renovación completado"
1721
-
1722
- #~ msgid "Customer Renewal Invoice"
1723
- #~ msgstr "Factura de renovación de cliente"
1724
-
1725
- #~ msgid ""
1726
- #~ "Generate global invoices on Orders page by selecting multiple orders and "
1727
- #~ "applying action or let customers generate periodically from My Account "
1728
- #~ "page."
1729
- #~ msgstr ""
1730
- #~ "Generar facturas globales en la página de Pedidos seleccionando múltiples "
1731
- #~ "pedidos y aplicando la acción o dejar a los clientes generarlas "
1732
- #~ "periódicamente desde la página \"Mi Cuenta\"."
1733
-
1734
- #~ msgid "Start date type"
1735
- #~ msgstr "Tipo de fecha de inicio"
1736
-
1737
- #~ msgid ""
1738
- #~ "Custom date will add a checkout field to the Checkout page, so a customer "
1739
- #~ "can decide from which date to start counting."
1740
- #~ msgstr ""
1741
- #~ "La fecha personalizada añadirá un campo de checkout a la página de "
1742
- #~ "Checkout, de manera que un cliente pueda decidir desde qué fecha empezar "
1743
- #~ "a contar."
1744
-
1745
- #~ msgid "Custom date"
1746
- #~ msgstr "Fecha personalizada"
1747
-
1748
- #~ msgid "Custom date is editable on My Account page"
1749
- #~ msgstr "La fecha personalizada es editable en la página \"Mi cuenta\""
1750
-
1751
- #~ msgid "Custom date is required"
1752
- #~ msgstr "Se requiere una fecha personalizada"
1753
-
1754
- #~ msgid "Custom date field name"
1755
- #~ msgstr "Nombre campo de fecha personalizada"
1756
-
1757
- #~ msgid ""
1758
- #~ "Send a reminder email with invoice after a specific period of time. The "
1759
- #~ "period until the actual sending date, uses the order date as a starting "
1760
- #~ "point to count from. The email template called Customer Invoice will be "
1761
- #~ "used. By default an email will only be sent, if the order has the "
1762
- #~ "Processing status."
1763
- #~ msgstr ""
1764
- #~ "Mandar un e-mail recordatorio con la factura tras un período específico. "
1765
- #~ "El período hasta la fecha de envío real usa la fecha de pedido como punto "
1766
- #~ "desde el que contar. La plantilla de e-mail llamada \"Customer Invoice\" "
1767
- #~ "será usada. Por defecto, sólo un e-mail será enviado, si el estado del "
1768
- #~ "pedido es \"Procesando\"."
1769
-
1770
- #~ msgid "YYYY-MM-DD"
1771
- #~ msgstr "AAAA-MM-DD"
1772
-
1773
- #~ msgid "Save"
1774
- #~ msgstr "Guardar"
1775
-
1776
- #~ msgid "Reminder scheduled on:"
1777
- #~ msgstr "Recordatorio programado para el:"
1778
-
1779
- #~ msgid "Something went wrong."
1780
- #~ msgstr "Algo ha fallado."
1781
-
1782
- #~ msgid "%s is required."
1783
- #~ msgstr "Se requiere %s."
1784
-
1785
- #~ msgid "Order changed successfully."
1786
- #~ msgstr "Pedido cambiado con éxito."
1787
-
1788
- #~ msgid "PDF Invoice Reminder"
1789
- #~ msgstr "Recordatorio Factura PDF"
1790
-
1791
- #~ msgid ""
1792
- #~ "Packing Slips are <strong>only available</strong> when using minimal "
1793
- #~ "template."
1794
- #~ msgstr ""
1795
- #~ "Las Notas de Empaquetado se usan <strong>únicamente</strong> en la "
1796
- #~ "plantilla \"minimal\"."
1797
-
1798
- #~ msgid "Packing Slip Options"
1799
- #~ msgstr "Opciones de Notas de Empaquetado"
1800
-
1801
- #~ msgid "Invoice %s"
1802
- #~ msgstr "Factura %s"
1803
-
1804
- #~ msgid "These are the general template options."
1805
- #~ msgstr "Estas son las opciones de plantilla general."
1806
-
1807
- #~ msgid "These are the invoice number options."
1808
- #~ msgstr "Estas son las opciones de número de factura."
1809
-
1810
- #~ msgid "[prefix]"
1811
- #~ msgstr "Prefijo"
1812
-
1813
- #~ msgid "[suffix]"
1814
- #~ msgstr "Sufijo"
1815
-
1816
- #~ msgid "Invoice %s (PDF)"
1817
- #~ msgstr "Factura %s (PDF)"
1818
-
1819
- #~ msgid "Remove logo"
1820
- #~ msgstr "Eliminar logo"
1821
-
1822
- #~ msgid "File is invalid and contains either '..' or './'."
1823
- #~ msgstr "Archivo no es válido y contiene '..' o './'."
1824
-
1825
- #~ msgid "File is invalid and contains ':' after the first character."
1826
- #~ msgstr "Archivo no es válido y contiene ':' después del primer carácter."
1827
-
1828
- #~ msgid "File should be less then 2MB."
1829
- #~ msgstr "Este archivo debe pesar menos de 2MB."
1830
-
1831
- #~ msgid "Reset on 1st of january"
1832
- #~ msgstr "Reiniciar el 1 de enero"
1833
-
1834
- #~ msgid "Attach to Email"
1835
- #~ msgstr "Adjuntar a correo electrónico"
1836
-
1837
- #~ msgid "Get your account from your Email It In %suser account%s."
1838
- #~ msgstr "Obtenga su cuenta desde su Email It In %suser account%s."
1839
-
1840
- #~ msgid "%sFormat%s of invoice date and order date."
1841
- #~ msgstr "%sFormat%s de la fecha de la factura y fecha del pedido."
1842
-
1843
- #~ msgid "Cancel invoice"
1844
- #~ msgstr "Cancelar factura"
1845
-
1846
- #~ msgid "Create invoice"
1847
- #~ msgstr "Crear factura"
1848
-
1849
- #~ msgid "Feel free to use "
1850
- #~ msgstr "Siéntase libre de utilizar"
1851
-
1852
- #~ msgid "Intro text"
1853
- #~ msgstr "Texto introductorio"
1854
-
1855
- #~ msgid ""
1856
- #~ "Reset the invoice counter and start with next invoice number. %s %sNote:"
1857
- #~ "%s Only available with sequential numbering type and you need to check "
1858
- #~ "the checkbox to actually reset the value."
1859
- #~ msgstr ""
1860
- #~ "Reiniciar el contador de factura y comenzar con el siguiente número de la "
1861
- #~ "factura. %s %sNote:%s Sólo está disponible con el tipo de numeración "
1862
- #~ "secuencial y necesitas marcar la casilla para reiniciar realmente el "
1863
- #~ "valor."
1864
-
1865
- #~ msgid "Tax"
1866
- #~ msgstr "Impuesto"
1867
-
1868
- #~ msgid "%sPayment%s via"
1869
- #~ msgstr "%sPayment%s vía"
1870
-
1871
- #~ msgid ""
1872
- #~ "Feel free to use the placeholders %s %s %s %s %s and %s. %s %sNote:%s %s "
1873
- #~ "is required."
1874
- #~ msgstr ""
1875
- #~ "No dude en utilizar los marcadores de posición %s %s %s %s %s y %s. %s "
1876
- #~ "%sNote:%s %s es necesario."
1877
-
1878
- #~ msgid "Subtotal will be including tax and excluding discount and shipping."
1879
- #~ msgstr "Subtotal es incluyendo impuestos y excepto el descuento y el envío."
1880
-
1881
- #~ msgid ""
1882
- #~ "Thank you for using <b>WooCommerce PDF Invoices</b> for some time now. "
1883
- #~ "Please show us your appreciation by leaving a ★★★★★ rating. A huge thank "
1884
- #~ "you in advance! <br /> <a href='%s' target='_blank'>Yes, will do it right "
1885
- #~ "away!</a> - <a href='%s'>No, already done it!</a>"
1886
- #~ msgstr ""
1887
- #~ "Gracias por usar <b>WooCommerce PDF Facturas</b> por algún tiempo ahora. "
1888
- #~ "Por favor, mostrar su agradecimiento al dejar una calificación ★★★★★. Un "
1889
- #~ "enorme gracias por adelantado! <br /> <a href='%s' target='_blank'>Sí, lo "
1890
- #~ "hará de inmediato!</a> - <a href='%s'>No, ya hecho!</a>"
1891
-
1892
- #~ msgid "Order Number %s"
1893
- #~ msgstr "Número de pedido: %s"
1894
-
1895
- #~ msgid "Order Date %s"
1896
- #~ msgstr "Fecha del pedido: %s"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WooCommerce PDF Invoices\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2017-11-29 20:36+0100\n"
6
+ "PO-Revision-Date: 2017-11-29 20:36+0100\n"
7
+ "Last-Translator: iduran <iduran@solucionesc2.com>\n"
8
+ "Language-Team: \n"
9
+ "Language: es_ES\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Poedit-Basepath: ../..\n"
16
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
17
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
18
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
19
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
20
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
21
+ "X-Loco-Target-Locale: es_ES\n"
22
+ "X-Generator: Poedit 2.0.4\n"
23
+ "X-Poedit-SearchPath-0: woocommerce-pdf-invoices\n"
24
+ "X-Poedit-SearchPath-1: woocommerce-pdf-invoices-premium\n"
25
+ "X-Poedit-SearchPathExcluded-0: woocommerce-pdf-invoices/lib\n"
26
+
27
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:25
28
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:427
29
+ msgid "Premium"
30
+ msgstr "Premium"
31
+
32
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:99
33
+ #, php-format
34
+ msgid ""
35
+ "Whoops, your license for %1$s has expired. To keep receiving updates and "
36
+ "premium support, we offer you a 30%% discount when you <a href=\"%2$s\" "
37
+ "target=\"_blank\">renew your license</a>."
38
+ msgstr ""
39
+
40
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:225
41
+ msgid "Premium Options"
42
+ msgstr "Opciones Premium"
43
+
44
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:228
45
+ msgid "Template Options"
46
+ msgstr "Opciones de plantilla"
47
+
48
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:231
49
+ msgid "Supplier Options"
50
+ msgstr "Opciones de Proveedor"
51
+
52
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:232
53
+ msgid "Send customer invoice automatically to your supplier(s)."
54
+ msgstr "Mandar factura del cliente automáticamente a tu(s) proveedor(es)."
55
+
56
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:235
57
+ #, fuzzy
58
+ #| msgid "Header Options"
59
+ msgid "Credit Note Options"
60
+ msgstr "Opciones de la cabecera"
61
+
62
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:238
63
+ #, fuzzy
64
+ #| msgid "Invoice Number Options"
65
+ msgid "Credit Note Number Options"
66
+ msgstr "Opciones de número de factura"
67
+
68
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:241
69
+ msgid "Global Invoice Options"
70
+ msgstr "Opciones de Factura Global"
71
+
72
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:242
73
+ msgid ""
74
+ "Generate global invoices on Orders page by selecting multiple orders and "
75
+ "applying action or let customers generate periodically from My Account page. "
76
+ "<strong>Global invoices are only supported when using the micro template!</"
77
+ "strong>"
78
+ msgstr ""
79
+
80
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:245
81
+ msgid "Reminder Options"
82
+ msgstr "Opciones Recordatorio"
83
+
84
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:246
85
+ #, php-format
86
+ msgid ""
87
+ "Automatically send PDF invoice after a specific period of time. When "
88
+ "enabled, a new <a href=\"%s\">Customer invoice reminder</a> email will be "
89
+ "used to send the PDF invoice."
90
+ msgstr ""
91
+
92
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:249
93
+ msgid "Request Invoice Options"
94
+ msgstr ""
95
+
96
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:250
97
+ msgid ""
98
+ "Let a customer decide to generate a PDF invoice. When enabled, a checkbox "
99
+ "field will be added on the checkout page so customers can request a PDF "
100
+ "invoice."
101
+ msgstr ""
102
+
103
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:267
104
+ msgid "Activation email"
105
+ msgstr "E-mail de activación"
106
+
107
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:272
108
+ #, php-format
109
+ msgid "Enter your activation email from %s."
110
+ msgstr "Introduce tu e-mail de activación de %s."
111
+
112
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:278
113
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:703
114
+ msgid "License"
115
+ msgstr "Licencia"
116
+
117
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:283
118
+ #, php-format
119
+ msgid "Enter your license key from %s to receive updates."
120
+ msgstr "Introduce tu número de licencia de %s para recibir actualizaciones."
121
+
122
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:289
123
+ msgid "PDF attachment"
124
+ msgstr "Adjunto PDF"
125
+
126
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:294
127
+ msgid "Add for example a PDF with your terms & conditions."
128
+ msgstr "Añade, por ejemplo, un PDF con tus términos y condiciones."
129
+
130
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:300
131
+ msgid "Suppliers"
132
+ msgstr "Proveedores"
133
+
134
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:305
135
+ #, fuzzy
136
+ #| msgid ""
137
+ #| "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by "
138
+ #| "simply adding there Email It In email addresses. Email addresses need to "
139
+ #| "be seperated by comma's."
140
+ msgid ""
141
+ "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by simply "
142
+ "adding their Email It In email addresses. Email addresses need to be "
143
+ "seperated by comma's."
144
+ msgstr ""
145
+ "<b>Instrucciones</b>: Manda facturas de cliente al almacenamiento en la nube "
146
+ "del proveedor simplemente añadiendo sus direcciones de e-mail de Email It "
147
+ "In. Las direcciones de e-mail deben estar separadas por comas."
148
+
149
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:311
150
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:72
151
+ msgid "Attach to Emails"
152
+ msgstr "Adjuntar a e-mails"
153
+
154
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:322
155
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:400
156
+ msgid "Prefix"
157
+ msgstr "Prefijo"
158
+
159
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:333
160
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:411
161
+ msgid "Suffix"
162
+ msgstr "Sufijo"
163
+
164
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:344
165
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:422
166
+ msgid "Format"
167
+ msgstr "Formato"
168
+
169
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:349
170
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:427
171
+ #, php-format
172
+ msgid "Available placeholders: %s."
173
+ msgstr "Módulos disponibles: %s."
174
+
175
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:351
176
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:429
177
+ #, php-format
178
+ msgid "<b>Note:</b> %s is required and slashes aren't supported."
179
+ msgstr "<b>Nota:</b> Se requiere %s y no se admiten barras (/, \\)."
180
+
181
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:363
182
+ msgid "Enable customer generation"
183
+ msgstr "Activar generación de cliente"
184
+
185
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:365
186
+ msgid "Let customers generate a global invoice from their account"
187
+ msgstr "Permitir a los clientes generar una factura global desde su cuenta"
188
+
189
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:373
190
+ msgid "Customer generation period"
191
+ msgstr "Período de generación de cliente"
192
+
193
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:378
194
+ msgid ""
195
+ "Should your customers have the ability to generate a global invoice by month "
196
+ "or by year?<br/><strong>Note:</strong> Customer generation should be enabled."
197
+ msgstr ""
198
+ "Deberían los clientes tener la posibilidad de generar una factura global por "
199
+ "mes o por año?<br/><strong>Nota:</strong> \"Generación de cliente\" debe "
200
+ "estar activada."
201
+
202
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:380
203
+ msgid "Month"
204
+ msgstr "Mes"
205
+
206
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:381
207
+ msgid "Year"
208
+ msgstr "Año"
209
+
210
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:393
211
+ msgid "Send to your Cloud Storage"
212
+ msgstr "Mandar a tu almacenamiento en la nube"
213
+
214
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:405
215
+ msgid "Email to customer"
216
+ msgstr "E-mail a cliente"
217
+
218
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:417
219
+ msgid "Email to supplier(s)"
220
+ msgstr "E-mail a proveedor(es)"
221
+
222
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:424
223
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:146
224
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:146
225
+ msgid "Email subject"
226
+ msgstr "Asunto del e-mail"
227
+
228
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:429
229
+ msgid "Subject for the global invoice email."
230
+ msgstr "Asunto para el e-mail de factura global."
231
+
232
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:436
233
+ msgid "Email message"
234
+ msgstr "Mensaje e-mail"
235
+
236
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:441
237
+ msgid "Message for the global invoice email."
238
+ msgstr "Mensaje para el e-mail de factura global."
239
+
240
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:453
241
+ msgid "Enable reminder"
242
+ msgstr "Activar recordatorio"
243
+
244
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:460
245
+ #, fuzzy
246
+ #| msgid "Days until reminder"
247
+ msgid "Days until due date"
248
+ msgstr "Días hasta el recordatorio"
249
+
250
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:465
251
+ #, fuzzy
252
+ #| msgid "Number of days from starting date until reminder date."
253
+ msgid "Number of days from order or invoice date until due date."
254
+ msgstr ""
255
+ "Número de días desde la fecha de inicio hasta la fecha del recordatorio."
256
+
257
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:474
258
+ msgid "Days until reminder"
259
+ msgstr "Días hasta el recordatorio"
260
+
261
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:479
262
+ msgid "Number of days from order or invoice date until reminder date."
263
+ msgstr ""
264
+
265
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:488
266
+ msgid "Date type"
267
+ msgstr ""
268
+
269
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:493
270
+ msgid "Choose the type of date to count from."
271
+ msgstr ""
272
+
273
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:495
274
+ msgid "Order date"
275
+ msgstr "Fecha del pedido"
276
+
277
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:496
278
+ msgid "Invoice date"
279
+ msgstr ""
280
+
281
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:508
282
+ msgid "Enable Request Invoice."
283
+ msgstr ""
284
+
285
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:590
286
+ msgid "Activation email cannot be empty."
287
+ msgstr ""
288
+
289
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:630
290
+ msgid ""
291
+ "Something went wrong with the activation of your license. Contact the author "
292
+ "for support."
293
+ msgstr ""
294
+
295
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:651
296
+ msgid "File to large."
297
+ msgstr "Archivo demasiado largo."
298
+
299
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:657
300
+ msgid "Only PDF files are allowed."
301
+ msgstr "Sólo se permiten archivos PDF."
302
+
303
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:682
304
+ msgid "Remove"
305
+ msgstr "Eliminar"
306
+
307
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:684
308
+ msgid "Choose"
309
+ msgstr "Escoger"
310
+
311
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:712
312
+ msgid "Inactive"
313
+ msgstr "Inactivo"
314
+
315
+ #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:714
316
+ msgid "Active"
317
+ msgstr "Activo"
318
+
319
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-credit-note.php:12
320
+ #, php-format
321
+ msgid "PDF Credit Note %1$s"
322
+ msgstr ""
323
+
324
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:10
325
+ msgid "Generate Global Invoice"
326
+ msgstr "Generar Factura Global"
327
+
328
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:20
329
+ msgid "Select a month"
330
+ msgstr "Selecciona un mes"
331
+
332
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:33
333
+ msgid "Select a year"
334
+ msgstr "Selecciona un año"
335
+
336
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:47
337
+ msgid "Generate invoice"
338
+ msgstr "Generar factura"
339
+
340
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:16
341
+ #, fuzzy
342
+ #| msgid "Global invoice successfully generated! "
343
+ msgid "Global invoice successfully generated!"
344
+ msgstr "¡Factura global creada con éxito! "
345
+
346
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
347
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:663
348
+ msgid "View invoice"
349
+ msgstr "Ver factura"
350
+
351
+ #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
352
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:751
353
+ msgid "View"
354
+ msgstr "Ver"
355
+
356
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:37
357
+ msgid "Bulk Export PDF Invoices"
358
+ msgstr "Exportar facturas PDF en lote"
359
+
360
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:38
361
+ msgid "Bulk Export PDF Packing Slips"
362
+ msgstr ""
363
+
364
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:85
365
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:73
366
+ msgid "No order selected."
367
+ msgstr "No hay un pedido seleccionado."
368
+
369
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:37
370
+ msgid "Bulk Generate PDF Invoices"
371
+ msgstr "Crear facturas PDF en lote"
372
+
373
+ #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:38
374
+ msgid "Bulk Generate PDF Packing Slips"
375
+ msgstr ""
376
+
377
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:135
378
+ msgid "PDF Credit Notes"
379
+ msgstr ""
380
+
381
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:283
382
+ #, php-format
383
+ msgid ""
384
+ "<a href=\"%1$s\" class=\"%2$s\" target=\"%3$s\">PDF Credit Note (%4$s)</a> "
385
+ "for Refund #%5$s."
386
+ msgstr ""
387
+
388
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:289
389
+ #, php-format
390
+ msgid "created on %1$s at %2$s"
391
+ msgstr ""
392
+
393
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:291
394
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:775
395
+ msgid "Delete"
396
+ msgstr ""
397
+
398
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:297
399
+ msgid "There are no credit notes yet."
400
+ msgstr ""
401
+
402
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:309
403
+ msgid "Create PDF Credit Notes for selected refund(s)"
404
+ msgstr ""
405
+
406
+ #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:339
407
+ msgid "Credit note"
408
+ msgstr ""
409
+
410
+ #: woocommerce-pdf-invoices-premium/includes/class-install.php:91
411
+ #, php-format
412
+ msgid ""
413
+ "%1$s requires %2$s to be activated. Install and activate it and you should "
414
+ "be good to go! :)"
415
+ msgstr ""
416
+ "%1$s requiere que %2$s esté activado. Instálalo y actívalo y ya debería "
417
+ "estar listo :)"
418
+
419
+ #: woocommerce-pdf-invoices-premium/includes/class-install.php:100
420
+ #, php-format
421
+ msgid ""
422
+ "%1$s requires at least %2$s. Update it and get the best out of both "
423
+ "plugins. :)"
424
+ msgstr ""
425
+ "%1$s requiere al menos %2$s. Actualízalo y consigue lo mejor de ambos "
426
+ "plugins. :)"
427
+
428
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:228
429
+ msgid "Invalid request"
430
+ msgstr "Solicitud no válida"
431
+
432
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:248
433
+ msgid "No orders found."
434
+ msgstr "No se han encontrado pedidos."
435
+
436
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:295
437
+ msgid "Generate global invoice"
438
+ msgstr "Generar factura global"
439
+
440
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:323
441
+ msgid ""
442
+ "Could not generate the invoice. Global invoices are only supported when "
443
+ "using the micro template."
444
+ msgstr ""
445
+
446
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:336
447
+ msgid "Select more then one order to generate a global invoice."
448
+ msgstr "Selecciona más de un pedido para poder generar una factura global."
449
+
450
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
451
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
452
+ msgid "Yes"
453
+ msgstr "Sí"
454
+
455
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
456
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
457
+ msgid "No"
458
+ msgstr "No"
459
+
460
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:83
461
+ msgid "Reminder on:"
462
+ msgstr ""
463
+
464
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:88
465
+ msgid "Reminder sent?"
466
+ msgstr "¿Recordatorio enviado?"
467
+
468
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:296
469
+ #, fuzzy
470
+ #| msgid "Order Date: %s"
471
+ msgid "Due Date:"
472
+ msgstr "Fecha Pedido: %s"
473
+
474
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:61
475
+ msgid ""
476
+ "Instead consider creating a Cancelled PDF invoice by changing the order "
477
+ "status to Cancelled."
478
+ msgstr ""
479
+
480
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:103
481
+ #, fuzzy
482
+ #| msgid "Cancel"
483
+ msgid "Cancelled"
484
+ msgstr "Cancelar"
485
+
486
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:116
487
+ msgid "Advanced Table Content"
488
+ msgstr ""
489
+
490
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:117
491
+ msgid ""
492
+ "Enable Advanced Table Content settings to fully customize line item columns "
493
+ "and total rows. When enabled the standard Table Content settings will be "
494
+ "ignored. When using a custom template, make sure to update it! Micro "
495
+ "template is not supported."
496
+ msgstr ""
497
+
498
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:145
499
+ msgid "Enable Advanced Table Content"
500
+ msgstr ""
501
+
502
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:157
503
+ msgid "Show SKU as meta data"
504
+ msgstr ""
505
+
506
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:164
507
+ msgid "Display tax totals"
508
+ msgstr ""
509
+
510
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:172
511
+ msgid "Itemized"
512
+ msgstr ""
513
+
514
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:173
515
+ msgid "As a single total"
516
+ msgstr ""
517
+
518
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:179
519
+ #, fuzzy
520
+ #| msgid "Left footer column."
521
+ msgid "Line item columns"
522
+ msgstr "Columna izquierda del pie de página."
523
+
524
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:188
525
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:393
526
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:48
527
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:403
528
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:53
529
+ msgid "Description"
530
+ msgstr "Descripción"
531
+
532
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:193
533
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:198
534
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:401
535
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:405
536
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:57
537
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:60
538
+ msgid "Cost"
539
+ msgstr "Importe"
540
+
541
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:203
542
+ msgid "Quantity"
543
+ msgstr ""
544
+
545
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:213
546
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:218
547
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:281
548
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:286
549
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:413
550
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:417
551
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:77
552
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:235
553
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:405
554
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:71
555
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:275
556
+ msgid "Total"
557
+ msgstr "Total"
558
+
559
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:227
560
+ #, fuzzy
561
+ #| msgid "Total"
562
+ msgid "Total rows"
563
+ msgstr "Total"
564
+
565
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:236
566
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:261
567
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:173
568
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:506
569
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:207
570
+ msgid "Discount"
571
+ msgstr "Descuento"
572
+
573
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:241
574
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:266
575
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:182
576
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:200
577
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:518
578
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:215
579
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:231
580
+ msgid "Shipping"
581
+ msgstr "Envío"
582
+
583
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:246
584
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:271
585
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:212
586
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:242
587
+ msgid "Fee"
588
+ msgstr "Cuota"
589
+
590
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:251
591
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:256
592
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:191
593
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:470
594
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:223
595
+ msgid "Subtotal"
596
+ msgstr "Subtotal"
597
+
598
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:349
599
+ msgid "SKU:"
600
+ msgstr ""
601
+
602
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:397
603
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:65
604
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:59
605
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:404
606
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:62
607
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:63
608
+ msgid "Qty"
609
+ msgstr "Cant."
610
+
611
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:607
612
+ #, fuzzy, php-format
613
+ #| msgid "Subtotal"
614
+ msgid "Subtotal %s"
615
+ msgstr "Subtotal"
616
+
617
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:625
618
+ #, fuzzy, php-format
619
+ #| msgid "Discount"
620
+ msgid "Discount %s"
621
+ msgstr "Descuento"
622
+
623
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:652
624
+ #, fuzzy, php-format
625
+ #| msgid "Shipping"
626
+ msgid "Shipping %s"
627
+ msgstr "Envío"
628
+
629
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:685
630
+ #, fuzzy, php-format
631
+ #| msgid "%1$s of %2$s"
632
+ msgid "%1$s %2$s"
633
+ msgstr "%1$s de %2$s"
634
+
635
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:866
636
+ #, fuzzy, php-format
637
+ #| msgid "Total"
638
+ msgid "Total %s"
639
+ msgstr "Total"
640
+
641
+ #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:993
642
+ msgid "Request invoice"
643
+ msgstr ""
644
+
645
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:43
646
+ #, fuzzy
647
+ #| msgid "Customer note"
648
+ msgid "Customer credit note"
649
+ msgstr "Nota del Cliente"
650
+
651
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:44
652
+ msgid ""
653
+ "Customer credit note emails can be sent to customers containing their PDF "
654
+ "Credit Note."
655
+ msgstr ""
656
+
657
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:50
658
+ msgid "Credit note for order {order_number} from {order_date}"
659
+ msgstr ""
660
+
661
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:51
662
+ msgid "Credit note for order {order_number}"
663
+ msgstr ""
664
+
665
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:149
666
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:158
667
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:149
668
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:158
669
+ #, php-format
670
+ msgid "Defaults to %s"
671
+ msgstr ""
672
+
673
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:155
674
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:155
675
+ msgid "Email heading"
676
+ msgstr ""
677
+
678
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:164
679
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:164
680
+ msgid "Email type"
681
+ msgstr ""
682
+
683
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:166
684
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:166
685
+ msgid "Choose which format of email to send."
686
+ msgstr ""
687
+
688
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:43
689
+ msgid "Customer invoice reminder"
690
+ msgstr ""
691
+
692
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:44
693
+ msgid ""
694
+ "Customer invoice reminder emails can be sent to customers containing their "
695
+ "order information and payment links."
696
+ msgstr ""
697
+
698
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:49
699
+ msgid "Invoice reminder for order {order_number} from {order_date}"
700
+ msgstr ""
701
+
702
+ #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:50
703
+ msgid "Invoice reminder for order {order_number}"
704
+ msgstr ""
705
+
706
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:35
707
+ msgid "Credit Note"
708
+ msgstr ""
709
+
710
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:46
711
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:52
712
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:40
713
+ msgid "Ship to:"
714
+ msgstr "Mandar a:"
715
+
716
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:61
717
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:59
718
+ msgid "Product"
719
+ msgstr "Producto"
720
+
721
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:71
722
+ msgid "Price"
723
+ msgstr "Precio"
724
+
725
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:135
726
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:127
727
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:109
728
+ #, php-format
729
+ msgid "Note from customer: %s"
730
+ msgstr "Nota del cliente: %s"
731
+
732
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:140
733
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:132
734
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:114
735
+ #, php-format
736
+ msgid "Note to customer: %s"
737
+ msgstr "Nota al cliente: %s"
738
+
739
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:152
740
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:314
741
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:144
742
+ msgid "Zero rated for VAT as customer has supplied EU VAT number"
743
+ msgstr ""
744
+ "No se aplican impuestos ya que el cliente ha aportado un VAT number para la "
745
+ "UE"
746
+
747
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/footer.php:26
748
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/footer.php:15
749
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/footer.php:12
750
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/footer.php:26
751
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/footer.php:23
752
+ #, php-format
753
+ msgid "%1$s of %2$s"
754
+ msgstr "%1$s de %2$s"
755
+
756
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:39
757
+ #, php-format
758
+ msgid "Credit Note #: %s"
759
+ msgstr ""
760
+
761
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:41
762
+ #, fuzzy, php-format
763
+ #| msgid "Order Date: %s"
764
+ msgid "Date: %s"
765
+ msgstr "Fecha Pedido: %s"
766
+
767
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:45
768
+ #, php-format
769
+ msgid "Invoice #: %s"
770
+ msgstr "Factura nº: %s"
771
+
772
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:47
773
+ #, php-format
774
+ msgid "Invoice Date: %s"
775
+ msgstr "Fecha de factura: %s"
776
+
777
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:51
778
+ #, fuzzy, php-format
779
+ #| msgid "Order #%d - %s"
780
+ msgid "Order #: %s"
781
+ msgstr "Pedido nº %d - %s"
782
+
783
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:53
784
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:38
785
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:37
786
+ #, php-format
787
+ msgid "Order Date: %s"
788
+ msgstr "Fecha Pedido: %s"
789
+
790
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:57
791
+ #, php-format
792
+ msgid "Payment Method: %s"
793
+ msgstr "Método de pago: %s"
794
+
795
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:64
796
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:681
797
+ #, php-format
798
+ msgid "Purchase Order Number: %s"
799
+ msgstr "Comprar Pedido Número: %s"
800
+
801
+ #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:73
802
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:663
803
+ #, php-format
804
+ msgid "VAT Number: %s"
805
+ msgstr "VAT Number: %s"
806
+
807
+ #: woocommerce-pdf-invoices-premium/includes/templates/emails/customer-credit-note.php:25
808
+ #, fuzzy
809
+ #| msgid "Order date"
810
+ msgid "Order:"
811
+ msgstr "Fecha del pedido"
812
+
813
+ #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:23
814
+ #, fuzzy, php-format
815
+ #| msgid "Order Number: %s"
816
+ msgid "Order number: %s"
817
+ msgstr "Pedido nº: %s"
818
+
819
+ #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:24
820
+ #, fuzzy, php-format
821
+ #| msgid "Order Date: %s"
822
+ msgid "Order date: %s"
823
+ msgstr "Fecha Pedido: %s"
824
+
825
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:9
826
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:11
827
+ msgid "Invoice to"
828
+ msgstr "Factura a"
829
+
830
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:14
831
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:16
832
+ #, php-format
833
+ msgid "Phone: %s"
834
+ msgstr "Teléfono: %s"
835
+
836
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:19
837
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:23
838
+ msgid "Ship to"
839
+ msgstr "Enviar a"
840
+
841
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:30
842
+ msgid "Global Invoice"
843
+ msgstr "Factura Global"
844
+
845
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:53
846
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:458
847
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:57
848
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:55
849
+ msgid "SKU"
850
+ msgstr "Identificador"
851
+
852
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:66
853
+ msgid "VAT"
854
+ msgstr "Impuestos"
855
+
856
+ #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:89
857
+ #, php-format
858
+ msgid "Order #%d - %s"
859
+ msgstr "Pedido nº %d - %s"
860
+
861
+ #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:103
862
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:409
863
+ msgid "Settings"
864
+ msgstr "Ajustes"
865
+
866
+ #: woocommerce-pdf-invoices-premium/includes/woocommerce-pdf-invoices-premium.php:104
867
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:62
868
+ msgid "Support"
869
+ msgstr "Soporte"
870
+
871
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-document.php:150
872
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:36
873
+ msgid "Paid"
874
+ msgstr "Pagado"
875
+
876
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:491
877
+ msgid "Subtotal:"
878
+ msgstr "Subtotal:"
879
+
880
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:506
881
+ msgid "Discount:"
882
+ msgstr "Descuento:"
883
+
884
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:521
885
+ msgid "Shipping:"
886
+ msgstr "Envío:"
887
+
888
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:594
889
+ msgid "Total:"
890
+ msgstr "Total:"
891
+
892
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:861
893
+ #, php-format
894
+ msgid "%s of %s"
895
+ msgstr "%s de %s"
896
+
897
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:100
898
+ msgid "Invoices"
899
+ msgstr "Facturas"
900
+
901
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:164
902
+ #, php-format
903
+ msgid ""
904
+ "If you like <strong>WooCommerce PDF Invoices</strong> please leave us a <a "
905
+ "href=\"%s\">★★★★★</a> rating. A huge thank you in advance!"
906
+ msgstr ""
907
+ "Si te gusta <strong>WooCommerce PDF Invoices</strong>, por favor, déjanos "
908
+ "una valoración <a href=\"%s\">★★★★★</a>. ¡Muchas gracias!"
909
+
910
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:173
911
+ #, php-format
912
+ msgid "Version %s"
913
+ msgstr "Versión %s"
914
+
915
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:286
916
+ #, fuzzy
917
+ #| msgid "Choose"
918
+ msgid "Choose&hellip;"
919
+ msgstr "Escoger"
920
+
921
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:287
922
+ msgid "Column"
923
+ msgstr ""
924
+
925
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
926
+ #, fuzzy
927
+ #| msgid "Select a year"
928
+ msgid "Select all"
929
+ msgstr "Selecciona un año"
930
+
931
+ #: woocommerce-pdf-invoices/includes/abstracts/abstract-settings.php:296
932
+ #, fuzzy
933
+ #| msgid "Select a month"
934
+ msgid "Select none"
935
+ msgstr "Selecciona un mes"
936
+
937
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:25
938
+ msgid "General"
939
+ msgstr "General"
940
+
941
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:41
942
+ msgid "Email Options"
943
+ msgstr "Opciones de correo electrónico"
944
+
945
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:42
946
+ #, fuzzy, php-format
947
+ #| msgid ""
948
+ #| "The PDF invoice will be generated when WooCommerce sends the "
949
+ #| "corresponding email. The email should be <a href=\"%1$s\">enabled</a> in "
950
+ #| "order to automatically generate the PDF invoice."
951
+ msgid ""
952
+ "The PDF invoice will be generated when WooCommerce sends the corresponding "
953
+ "email. The email should be <a href=\"%1$s\">enabled</a> in order to "
954
+ "automatically generate the PDF invoice. Want to attach PDF documents to many "
955
+ "more email types? Take a look at %2$s."
956
+ msgstr ""
957
+ "La factura PDF será creada cuando WooCommerce mande el e-mail "
958
+ "correspondiente. El e-mail debería estar <a href=\"%1$s\">activado</a> para "
959
+ "poder generar la factura PDF automáticamente."
960
+
961
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:45
962
+ msgid "Download Options"
963
+ msgstr "Opciones de descarga"
964
+
965
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:48
966
+ msgid "Cloud Storage Options"
967
+ msgstr "Opciones de almacenamiento en la nube"
968
+
969
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:49
970
+ #, php-format
971
+ msgid ""
972
+ "Sign-up at <a href=\"%1$s\">Email It In</a> to send invoices to your "
973
+ "Dropbox, OneDrive, Google Drive or Egnyte and enter your account below."
974
+ msgstr ""
975
+ "Date de alta en <a href=\"%1$s\">Email It In</a> para mandar facturas a tu "
976
+ "Dropbox, OneDrive, Google Drive o Egnyte e introduce los datos de tu cuenta "
977
+ "debajo."
978
+
979
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:52
980
+ msgid "Interface Options"
981
+ msgstr "Opciones de interfaz"
982
+
983
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:55
984
+ msgid "Debug Options"
985
+ msgstr "Opciones de Debug"
986
+
987
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:80
988
+ msgid "New order"
989
+ msgstr "Nuevo pedido"
990
+
991
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:85
992
+ msgid "Order on-hold"
993
+ msgstr "Pedido en espera"
994
+
995
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:90
996
+ msgid "Processing order"
997
+ msgstr "Procesando el pedido."
998
+
999
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:95
1000
+ msgid "Completed order"
1001
+ msgstr "Pedido completado"
1002
+
1003
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:100
1004
+ msgid "Customer invoice"
1005
+ msgstr "Factura de Cliente"
1006
+
1007
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:114
1008
+ msgid "Disable for free products"
1009
+ msgstr "Desactivar para productos gratuitos"
1010
+
1011
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:116
1012
+ msgid ""
1013
+ "Skip automatic PDF invoice generation for orders containing only free "
1014
+ "products."
1015
+ msgstr ""
1016
+ "Saltarse la generación de facturas PDF para pedidos que sólo contienen "
1017
+ "productos gratuitos."
1018
+
1019
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:124
1020
+ msgid "View PDF"
1021
+ msgstr "Ver PDF"
1022
+
1023
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:131
1024
+ msgid "Download"
1025
+ msgstr "Descargar"
1026
+
1027
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:132
1028
+ msgid "Open in new browser tab/window"
1029
+ msgstr "Abrir en una nueva ventana/pestaña del navegador"
1030
+
1031
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:144
1032
+ msgid "Enable download from my account"
1033
+ msgstr "Activar la descarga desde \"mi cuenta\""
1034
+
1035
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:146
1036
+ msgid ""
1037
+ "By default PDF is only downloadable when order has been paid, so order "
1038
+ "status should be Processing or Completed."
1039
+ msgstr ""
1040
+ "Por defecto el PDF es sólo descargable cuando el pedido se ha pagado, así "
1041
+ "que el estado del pedido debería ser Procesando o Completado."
1042
+
1043
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:159
1044
+ msgid "Enable Email It In"
1045
+ msgstr "Habilitar Email It In"
1046
+
1047
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:166
1048
+ msgid "Email It In account"
1049
+ msgstr "Cuenta Email it In"
1050
+
1051
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:171
1052
+ #, php-format
1053
+ msgid "Get your account from your %1$s <a href=\"%2$s\">user account</a>."
1054
+ msgstr ""
1055
+ "Consigue tu cuenta desde tu <a href=\"%2$s\">cuenta de usuario</a> en %1$s."
1056
+
1057
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:182
1058
+ msgid "Enable Invoice Number column"
1059
+ msgstr "Activar columna número de factura"
1060
+
1061
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:183
1062
+ msgid "Display invoice numbers on Shop Order page."
1063
+ msgstr ""
1064
+ "Mostrar una columna con los números de factura en la página de "
1065
+ "administración de pedidos de WooCommerce."
1066
+
1067
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:195
1068
+ msgid "Enable mPDF debugging"
1069
+ msgstr "Activar debugging de mPDF"
1070
+
1071
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:196
1072
+ msgid "Enable if you aren't able to create an invoice."
1073
+ msgstr "Activar si por alguna razón no puedes crear facturas."
1074
+
1075
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:25
1076
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:101
1077
+ msgid "Template"
1078
+ msgstr "Plantilla"
1079
+
1080
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:43
1081
+ msgid "General Options"
1082
+ msgstr "Ajustes generales"
1083
+
1084
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:44
1085
+ #, php-format
1086
+ msgid ""
1087
+ "Want to customize the template? The <a href=\"%s\">FAQ</a> will give you a "
1088
+ "brief description."
1089
+ msgstr ""
1090
+ "¿Quieres personalizar la plantilla? El <a href=\"%s\">FAQ</a> te explicará "
1091
+ "brevemente cómo hacerlo."
1092
+
1093
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:47
1094
+ msgid "Invoice Number Options"
1095
+ msgstr "Opciones de número de factura"
1096
+
1097
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:50
1098
+ msgid "Packing Slips Options"
1099
+ msgstr ""
1100
+
1101
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:51
1102
+ msgid ""
1103
+ "Packing slips are <strong>only available</strong> when using minimal "
1104
+ "template."
1105
+ msgstr ""
1106
+
1107
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:54
1108
+ msgid "Header Options"
1109
+ msgstr "Opciones de la cabecera"
1110
+
1111
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:55
1112
+ msgid "The header will be visible on every page."
1113
+ msgstr "El encabezado se mostrará en todas las páginas."
1114
+
1115
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:58
1116
+ msgid "Body Options"
1117
+ msgstr "Opciones de Contenido"
1118
+
1119
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:59
1120
+ msgid "Configuration options for the body of the template. ."
1121
+ msgstr ""
1122
+
1123
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:62
1124
+ msgid "Footer Options"
1125
+ msgstr "Opciones del Pie"
1126
+
1127
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:63
1128
+ msgid "The footer will be visible on every page."
1129
+ msgstr "El pie de página se mostrará en todas las páginas."
1130
+
1131
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:66
1132
+ msgid "Table Content"
1133
+ msgstr ""
1134
+
1135
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:67
1136
+ msgid "Enable or disable the columns."
1137
+ msgstr "Activar o desactivar las columnas."
1138
+
1139
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:106
1140
+ #, php-format
1141
+ msgid "Create a custom template by copying it from %1$s to %2$s."
1142
+ msgstr "Crea una plantilla personalizada copiándola de %1$s a %2$s."
1143
+
1144
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:108
1145
+ #, php-format
1146
+ msgid ""
1147
+ "<strong>Note:</strong> The %1$s template will probably no longer be "
1148
+ "supported in future versions, consider using the %2$s template."
1149
+ msgstr ""
1150
+
1151
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:116
1152
+ msgid "Color theme"
1153
+ msgstr "Color del tema"
1154
+
1155
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:132
1156
+ msgid "Display theme text in black color"
1157
+ msgstr "Mostrar el texto de la plantilla en color negro"
1158
+
1159
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:134
1160
+ msgid ""
1161
+ "Enable if you've set the color theme to white or some other light color."
1162
+ msgstr ""
1163
+ "Activar si has cambiado el color de la plantilla a blanco u otro color claro."
1164
+
1165
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:142
1166
+ msgid "Date format"
1167
+ msgstr "Formato de fecha"
1168
+
1169
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:147
1170
+ #, php-format
1171
+ msgid "<a href=\"%s\">Format</a> of invoice date and order date."
1172
+ msgstr ""
1173
+ "<a href=\"%s\">Formato</a> de la fecha de la factura y fecha del pedido."
1174
+
1175
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:159
1176
+ msgid "Display prices including tax"
1177
+ msgstr "Mostrar precios con impuesto incluido"
1178
+
1179
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:161
1180
+ msgid ""
1181
+ "Line item totals will be including tax. <br/><b>Note</b>: Subtotal will "
1182
+ "still be excluding tax, so disable it within the visible columns section."
1183
+ msgstr ""
1184
+ "Los totales por línea de producto incluirán impuestos. <br/><b>Nota</b>: El "
1185
+ "subtotal continuará excluyendo impuestos, así que desactívalo en la sección "
1186
+ "de columnas visibles."
1187
+
1188
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:174
1189
+ msgid "Shipping taxable"
1190
+ msgstr "Envío sujeto a impuestos"
1191
+
1192
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:176
1193
+ msgid "Enable to display subtotal including shipping."
1194
+ msgstr "Mostrar subtotal incluyendo envío."
1195
+
1196
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:189
1197
+ msgid "Mark invoice as paid"
1198
+ msgstr "Marcar factura como pagada"
1199
+
1200
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:191
1201
+ msgid "Invoice will be watermarked when order has been paid."
1202
+ msgstr "La factura se marcará cuando el pedido haya sido pagado."
1203
+
1204
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:204
1205
+ msgid "Disable Packing Slips"
1206
+ msgstr "Desactivar Notas de Empaquetado"
1207
+
1208
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:211
1209
+ msgid "Company name"
1210
+ msgstr "Nombre de la empresa"
1211
+
1212
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:222
1213
+ msgid "Company logo"
1214
+ msgstr "Logo de la empresa"
1215
+
1216
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:227
1217
+ #, fuzzy, php-format
1218
+ #| msgid ""
1219
+ #| "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> "
1220
+ #| "or choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href="
1221
+ #| "\"%3$s\" target=\"_blank\">URL</a>."
1222
+ msgid ""
1223
+ "Use the <a href=\"%1$s\">Media Library</a> to <a href=\"%2$s\">upload</a> or "
1224
+ "choose a .jpg, .jpeg, .gif or .png file and copy and paste the <a href=\"%3$s"
1225
+ "\" target=\"_blank\">File URL</a>."
1226
+ msgstr ""
1227
+ "Usa la <a href=\"%1$s\">Librería de Medios</a> para <a href=\"%2$s\">subir "
1228
+ "una imagen</a> o escoge un archivo .jpg, .jpeg, .gif o .png y copia y pega "
1229
+ "la <a href=\"%3$s\" target=\"_blank\">URL</a>."
1230
+
1231
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:233
1232
+ msgid "Company address"
1233
+ msgstr "Dirección de la empresa"
1234
+
1235
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:238
1236
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:249
1237
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:271
1238
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:310
1239
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:322
1240
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:333
1241
+ #, php-format
1242
+ msgid "Allowed HTML tags: %s."
1243
+ msgstr "Etiquetas HTML permitidas: %s."
1244
+
1245
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:244
1246
+ msgid "Company details"
1247
+ msgstr "Detalles de la empresa"
1248
+
1249
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:255
1250
+ msgid "Title"
1251
+ msgstr "Título"
1252
+
1253
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:260
1254
+ msgid "Change the name of the invoice."
1255
+ msgstr "Cambia el nombre de la factura."
1256
+
1257
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:261
1258
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:853
1259
+ msgid "Invoice"
1260
+ msgstr "Factura"
1261
+
1262
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:266
1263
+ msgid "Thank you text"
1264
+ msgstr "Texto de agradecimiento"
1265
+
1266
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:272
1267
+ msgid "Visible in big colored bar directly after invoice total."
1268
+ msgstr ""
1269
+ "Se muestra en una barra grande coloreada justo después del total de la "
1270
+ "factura."
1271
+
1272
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:283
1273
+ msgid "Show customers shipping address"
1274
+ msgstr "Mostrar la dirección de envío del cliente"
1275
+
1276
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:285
1277
+ msgid ""
1278
+ "Customers shipping address won't be visible when order has only virtual "
1279
+ "products."
1280
+ msgstr ""
1281
+ "La dirección de envío del cliente no será visible cuando el pedido sólo "
1282
+ "contenga productos virtuales."
1283
+
1284
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:298
1285
+ msgid "Show customer notes"
1286
+ msgstr "Mostrar notas de cliente"
1287
+
1288
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:305
1289
+ msgid "Terms & conditions, policies etc."
1290
+ msgstr "Términos y condiciones, políticas, etc."
1291
+
1292
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:311
1293
+ #, php-format
1294
+ msgid ""
1295
+ "Visible below customer notes and above footer. Want to attach additional "
1296
+ "pages to the invoice? Take a look at <a href=\"%1$s\">%2$s</a> plugin."
1297
+ msgstr ""
1298
+ "Visible bajo las notas de cliente y encima del pie de página. ¿Quieres "
1299
+ "añadir páginas adicionales a la factura? Échale un vistazo al plugin <a href="
1300
+ "\"%1$s\">%2$s</a>."
1301
+
1302
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:317
1303
+ msgid "Left footer column."
1304
+ msgstr "Columna izquierda del pie de página."
1305
+
1306
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:328
1307
+ msgid "Right footer column."
1308
+ msgstr "Columna derecha del pie de página."
1309
+
1310
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:339
1311
+ msgid "Type"
1312
+ msgstr "Tipo"
1313
+
1314
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:346
1315
+ msgid "WooCommerce order number"
1316
+ msgstr "Número de pedido de WooCommerce"
1317
+
1318
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:347
1319
+ msgid "Sequential number"
1320
+ msgstr "Número secuencial"
1321
+
1322
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:359
1323
+ msgid "Reset invoice counter"
1324
+ msgstr "Restablecer contador de facturas"
1325
+
1326
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:367
1327
+ msgid "Next"
1328
+ msgstr "Siguiente"
1329
+
1330
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:372
1331
+ msgid "Next invoice number when resetting counter."
1332
+ msgstr "Próximo número de factura al restablecer el contador."
1333
+
1334
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:374
1335
+ msgid ""
1336
+ "<b>Note:</b> Only available for Sequential numbering. All PDF invoices with "
1337
+ "invoice number greater then next invoice number will be deleted!"
1338
+ msgstr ""
1339
+ "<b>Nota:</b> Sólo disponible para numeración secuencial. ¡Todas las facturas "
1340
+ "PDF con un número superior al \"próximo número de factura\" especificado "
1341
+ "serán borradas!"
1342
+
1343
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:384
1344
+ msgid "Digits"
1345
+ msgstr "Dígitos"
1346
+
1347
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:441
1348
+ msgid "Reset yearly"
1349
+ msgstr "Restablecer anualmente"
1350
+
1351
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:443
1352
+ msgid "Automatically reset invoice numbers on new year's day."
1353
+ msgstr "Restablecer números de factura automáticamente el día de año nuevo."
1354
+
1355
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:445
1356
+ msgid ""
1357
+ "<b>Note</b>: You will have to generate all invoices again when changing "
1358
+ "option."
1359
+ msgstr ""
1360
+ "<b>Nota</b>: Tendrás que generar todas las facturas de nuevo al cambiar la "
1361
+ "opción."
1362
+
1363
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:482
1364
+ msgid "Tax (item)"
1365
+ msgstr "Impuesto (item)"
1366
+
1367
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:494
1368
+ msgid "Tax (total)"
1369
+ msgstr "Impuesto (total)"
1370
+
1371
+ #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:564
1372
+ msgid ""
1373
+ "Company logo not found. Upload the image to the Media Library and try again."
1374
+ msgstr ""
1375
+ "No se ha encontrado el logo de la empresa. Sube la imagen a la Librería de "
1376
+ "Medios e inténtalo de nuevo."
1377
+
1378
+ #: woocommerce-pdf-invoices/includes/admin/views/html-activation-notice.php:16
1379
+ #, php-format
1380
+ msgid ""
1381
+ "The settings of WooCommerce PDF Invoices are available <a href=\"%1$s\">on "
1382
+ "this page</a>."
1383
+ msgstr ""
1384
+ "Los ajustes de WooCommerce PDF Invoices están disponibles <a href=\"%1$s"
1385
+ "\">en esta página</a>."
1386
+
1387
+ #: woocommerce-pdf-invoices/includes/admin/views/html-deactivation-notice.php:19
1388
+ #, php-format
1389
+ msgid ""
1390
+ "Before we deactivate WooCommerce PDF Invoices, would you care to <a href="
1391
+ "\"%1$s\" target=\"_blank\">let us know why</a> so we can improve it for you? "
1392
+ "<a href=\"%2$s\">No, deactivate now</a>."
1393
+ msgstr ""
1394
+ "Antes de desactivar WooCommerce PDF Invoices, ¿podrías <a href=\"%1$s\" "
1395
+ "target=\"_blank\">decirnos por qué</a> quieres hacerlo, de manera que lo "
1396
+ "podamos mejorar? <a href=\"%2$s\">No, desactivar ahora</a>."
1397
+
1398
+ #: woocommerce-pdf-invoices/includes/admin/views/html-rate-notice.php:18
1399
+ #, php-format
1400
+ msgid ""
1401
+ "Hi%1$s! You're using <b>WooCommerce PDF Invoices</b> for some time now and "
1402
+ "we would appreciate your <a href=\"%2$s\" target=\"_blank\">★★★★★</a> "
1403
+ "rating. It will support future development big-time."
1404
+ msgstr ""
1405
+ "¡Hola%1$s! Llevas usando <b>WooCommerce PDF Invoices</b> un tiempo y "
1406
+ "apreciaríamos mucho tu valoración <a href=\"%2$s\" target=\"_blank\">★★★★★</"
1407
+ "a>. Nos ayudaría mucho para seguir desarrollándolo."
1408
+
1409
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:2
1410
+ msgid "WooCommerce PDF Invoices Premium"
1411
+ msgstr "WooCommerce PDF Invoices Premium"
1412
+
1413
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:4
1414
+ msgid ""
1415
+ "This plugin offers a premium version which comes with the following features:"
1416
+ msgstr ""
1417
+ "Este plugin ofrece una versión premium que tiene las siguientes "
1418
+ "características:"
1419
+
1420
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:5
1421
+ msgid ""
1422
+ "Attach PDF invoices to many more email types including third party plugins."
1423
+ msgstr ""
1424
+
1425
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:6
1426
+ msgid ""
1427
+ "Send credit notes and cancelled PDF invoices when refunding or cancelling "
1428
+ "order."
1429
+ msgstr ""
1430
+
1431
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:7
1432
+ msgid ""
1433
+ "Fully customize the table content by modifying line item columns and total "
1434
+ "rows."
1435
+ msgstr ""
1436
+
1437
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:8
1438
+ msgid ""
1439
+ "Automatically send PDF invoices as a reminder configurable within a specific "
1440
+ "period of time."
1441
+ msgstr ""
1442
+
1443
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:9
1444
+ #, fuzzy
1445
+ #| msgid "Let customers generate a global invoice from their account"
1446
+ msgid ""
1447
+ "Let customers decide if they would like to get a PDF invoice on checkout."
1448
+ msgstr "Permitir a los clientes generar una factura global desde su cuenta"
1449
+
1450
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:10
1451
+ msgid "Change the font of the PDF invoices."
1452
+ msgstr "Cambiar el tipo de letra de las facturas PDF."
1453
+
1454
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:12
1455
+ msgid ""
1456
+ "Generate PDF invoices in multiple languages (WPML and Polylang compatible)."
1457
+ msgstr ""
1458
+ "Generar facturas PDF en múltiples lenguajes (Compatible con WPML y Polylang)."
1459
+
1460
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:13
1461
+ msgid "Bulk generate PDF invoices."
1462
+ msgstr "Generar facturas PDF en lote."
1463
+
1464
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:14
1465
+ msgid "Bulk export and/or download PDF invoices."
1466
+ msgstr "Exportar o descargar facturas PDF en lote."
1467
+
1468
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:15
1469
+ msgid "Bill periodically by generating and sending global invoices."
1470
+ msgstr ""
1471
+ "Facturar periódicamente mediante generación y envío de facturas globales."
1472
+
1473
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:16
1474
+ msgid "Add additional PDF's to PDF invoices."
1475
+ msgstr "Añadir PDFs adicionales a las facturas PDF."
1476
+
1477
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:17
1478
+ msgid "Send PDF invoices to multiple recipients."
1479
+ msgstr ""
1480
+
1481
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:18
1482
+ #, php-format
1483
+ msgid "Attach invoices to <a href=\"%s\">WooCommerce Subscriptions</a> emails."
1484
+ msgstr ""
1485
+ "Adjuntar facturas a e-mails de <a href=\"%s\">suscripciones de WooCommerce</"
1486
+ "a>."
1487
+
1488
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:20
1489
+ msgid "Learn more"
1490
+ msgstr "Descubre más"
1491
+
1492
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:23
1493
+ msgid "Stay up-to-date"
1494
+ msgstr "Mantente al día"
1495
+
1496
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:27
1497
+ msgid ""
1498
+ "We're constantly developing new features, stay up-to-date by subscribing to "
1499
+ "our newsletter."
1500
+ msgstr ""
1501
+ "Estamos desarrollando nuevas características constantemente, mantente al día "
1502
+ "suscribiéndote a nuestra lista de correo."
1503
+
1504
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:33
1505
+ msgid "Your email address"
1506
+ msgstr "Tu dirección de e-mail"
1507
+
1508
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:39
1509
+ msgid "Signup"
1510
+ msgstr "Alta"
1511
+
1512
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:42
1513
+ msgid "No spam, ever. Unsubscribe at any time"
1514
+ msgstr "Nunca mandamos spam. Date de baja en cualquier momento"
1515
+
1516
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:51
1517
+ msgid "About"
1518
+ msgstr "Acerca de"
1519
+
1520
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:53
1521
+ msgid ""
1522
+ "This plugin is an open source project wich aims to fill the invoicing gap of "
1523
+ "<a href=\"http://www.woothemes.com/woocommerce\">WooCommerce</a>."
1524
+ msgstr ""
1525
+ "Este plugin es un proyecto de código abierto que intenta llenar el vacío en "
1526
+ "torno a la facturación de <a href=\"http://www.woothemes.com/woocommerce"
1527
+ "\">WooCommerce</a>."
1528
+
1529
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:56
1530
+ #, php-format
1531
+ msgid "Version: %s"
1532
+ msgstr "Versión: %s"
1533
+
1534
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:58
1535
+ #, php-format
1536
+ msgid "Author: %s"
1537
+ msgstr "Autor: %s"
1538
+
1539
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:64
1540
+ #, php-format
1541
+ msgid ""
1542
+ "We will never ask for donations, but to guarantee future development, we do "
1543
+ "need your support. Please show us your appreciation by leaving a <a href="
1544
+ "\"%1$s\">★★★★★</a> rating and vote for <a href=\"%2$s\">works</a>."
1545
+ msgstr ""
1546
+ "Nunca pediremos donaciones, pero para garantizar el desarrollo futuro de "
1547
+ "este plugin, necesitamos tu apoyo. Por favor, muestra tu apreciación dejando "
1548
+ "una valoración <a href=\"%1$s\">★★★★★</a> y votando por nuestro <a href="
1549
+ "\"%2$s\">trabajo</a>."
1550
+
1551
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:88
1552
+ msgid ""
1553
+ "Checkout this amazing free WooCommerce PDF Invoices plugin for WordPress!"
1554
+ msgstr ""
1555
+ "¡Échale un vistazo a este increíble plugin gratuito de facturas PDF para "
1556
+ "Wordpress y WooCommerce!"
1557
+
1558
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:93
1559
+ msgid "Need Help?"
1560
+ msgstr "¿Necesitas ayuda?"
1561
+
1562
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:95
1563
+ msgid "Frequently Asked Questions"
1564
+ msgstr "Preguntas Frecuentes"
1565
+
1566
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:96
1567
+ msgid "Support forum"
1568
+ msgstr "Foro de soporte"
1569
+
1570
+ #: woocommerce-pdf-invoices/includes/admin/views/html-sidebar.php:97
1571
+ msgid "Request a feature"
1572
+ msgstr "Pide una funcionalidad"
1573
+
1574
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:99
1575
+ #, fuzzy
1576
+ #| msgid "Invoice #: %s"
1577
+ msgid "Invoice #:"
1578
+ msgstr "Factura nº: %s"
1579
+
1580
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:103
1581
+ #, fuzzy
1582
+ #| msgid "Invoice Date: %s"
1583
+ msgid "Invoice Date:"
1584
+ msgstr "Fecha de factura: %s"
1585
+
1586
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:107
1587
+ #, fuzzy
1588
+ #| msgid "Order Date: %s"
1589
+ msgid "Order Date:"
1590
+ msgstr "Fecha Pedido: %s"
1591
+
1592
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:111
1593
+ #, fuzzy
1594
+ #| msgid "Order Number: %s"
1595
+ msgid "Order Number:"
1596
+ msgstr "Pedido nº: %s"
1597
+
1598
+ #: woocommerce-pdf-invoices/includes/class-invoice.php:115
1599
+ #, fuzzy
1600
+ #| msgid "Payment Method: %s"
1601
+ msgid "Payment Method:"
1602
+ msgstr "Método de pago: %s"
1603
+
1604
+ #: woocommerce-pdf-invoices/includes/class-packing-slip.php:66
1605
+ msgid "View packing slip"
1606
+ msgstr "Ver nota de empaquetado"
1607
+
1608
+ #: woocommerce-pdf-invoices/includes/compatibility/class-wc-core-compatibility.php:245
1609
+ msgid "WooCommerce"
1610
+ msgstr "WooCommerce"
1611
+
1612
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:37
1613
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:39
1614
+ #, php-format
1615
+ msgid "Order Number: %s"
1616
+ msgstr "Pedido nº: %s"
1617
+
1618
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:268
1619
+ msgid "VAT 0%"
1620
+ msgstr "IVA 0%"
1621
+
1622
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:284
1623
+ msgid "Refunded"
1624
+ msgstr "Rembolsado"
1625
+
1626
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:300
1627
+ #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:305
1628
+ msgid "Customer note"
1629
+ msgstr "Nota del Cliente"
1630
+
1631
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:29
1632
+ msgid "Packing Slip"
1633
+ msgstr "Nota Empaquetado"
1634
+
1635
+ #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:44
1636
+ #, php-format
1637
+ msgid "Shipping Method: %s"
1638
+ msgstr "Método de envío: %s"
1639
+
1640
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:626
1641
+ msgid "Invoice No."
1642
+ msgstr "Factura nº"
1643
+
1644
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:678
1645
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:700
1646
+ msgid "PDF Invoice"
1647
+ msgstr "PDF Factura"
1648
+
1649
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:715
1650
+ msgid "Create"
1651
+ msgstr "Crear"
1652
+
1653
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:721
1654
+ #, fuzzy
1655
+ #| msgid "Order Date: %s"
1656
+ msgid "Date:"
1657
+ msgstr "Fecha Pedido: %s"
1658
+
1659
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:725
1660
+ #, fuzzy
1661
+ #| msgid "VAT Number: %s"
1662
+ msgid "Number:"
1663
+ msgstr "VAT Number: %s"
1664
+
1665
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:734
1666
+ msgid "Sent?"
1667
+ msgstr ""
1668
+
1669
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:744
1670
+ msgid "Debug"
1671
+ msgstr ""
1672
+
1673
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:758
1674
+ msgid "Update"
1675
+ msgstr ""
1676
+
1677
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:763
1678
+ #, fuzzy
1679
+ #| msgid "Are you sure to delete the invoice?"
1680
+ msgid "Are you sure to delete the PDF invoice?"
1681
+ msgstr "¿Está seguro de eliminar la factura?"
1682
+
1683
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:767
1684
+ #, php-format
1685
+ msgid ""
1686
+ "You will be missing a PDF invoice with invoice number %d and thus creating "
1687
+ "an accounting gap!"
1688
+ msgstr ""
1689
+
1690
+ #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:770
1691
+ #, php-format
1692
+ msgid "Instead consider using Cancelled PDF invoices with %s."
1693
+ msgstr ""
1694
+
1695
+ #~ msgid "Send customer invoices directly to suppliers and others."
1696
+ #~ msgstr "Mandar facturas de cliente directamente a proveedores y otros."
1697
+
1698
+ #~ msgid "Visible Columns"
1699
+ #~ msgstr "Columnas visibles"
1700
+
1701
+ #~ msgid "Invoiced on:"
1702
+ #~ msgstr "Facturado en:"
1703
+
1704
+ #~ msgid "Invoice number:"
1705
+ #~ msgstr "Nº de factura:"
1706
+
1707
+ #~ msgid "Attach to %s Emails"
1708
+ #~ msgstr "Adjuntar a %s e-mails"
1709
+
1710
+ #~ msgid "New Renewal Order"
1711
+ #~ msgstr "Nuevo Pedido Renovación"
1712
+
1713
+ #~ msgid "Subscription Switch Complete"
1714
+ #~ msgstr "Cambio Suscripción Completo"
1715
+
1716
+ #~ msgid "Processing Renewal order"
1717
+ #~ msgstr "Procesando Pedido de renovación"
1718
+
1719
+ #~ msgid "Completed Renewal Order"
1720
+ #~ msgstr "Pedido de renovación completado"
1721
+
1722
+ #~ msgid "Customer Renewal Invoice"
1723
+ #~ msgstr "Factura de renovación de cliente"
1724
+
1725
+ #~ msgid ""
1726
+ #~ "Generate global invoices on Orders page by selecting multiple orders and "
1727
+ #~ "applying action or let customers generate periodically from My Account "
1728
+ #~ "page."
1729
+ #~ msgstr ""
1730
+ #~ "Generar facturas globales en la página de Pedidos seleccionando múltiples "
1731
+ #~ "pedidos y aplicando la acción o dejar a los clientes generarlas "
1732
+ #~ "periódicamente desde la página \"Mi Cuenta\"."
1733
+
1734
+ #~ msgid "Start date type"
1735
+ #~ msgstr "Tipo de fecha de inicio"
1736
+
1737
+ #~ msgid ""
1738
+ #~ "Custom date will add a checkout field to the Checkout page, so a customer "
1739
+ #~ "can decide from which date to start counting."
1740
+ #~ msgstr ""
1741
+ #~ "La fecha personalizada añadirá un campo de checkout a la página de "
1742
+ #~ "Checkout, de manera que un cliente pueda decidir desde qué fecha empezar "
1743
+ #~ "a contar."
1744
+
1745
+ #~ msgid "Custom date"
1746
+ #~ msgstr "Fecha personalizada"
1747
+
1748
+ #~ msgid "Custom date is editable on My Account page"
1749
+ #~ msgstr "La fecha personalizada es editable en la página \"Mi cuenta\""
1750
+
1751
+ #~ msgid "Custom date is required"
1752
+ #~ msgstr "Se requiere una fecha personalizada"
1753
+
1754
+ #~ msgid "Custom date field name"
1755
+ #~ msgstr "Nombre campo de fecha personalizada"
1756
+
1757
+ #~ msgid ""
1758
+ #~ "Send a reminder email with invoice after a specific period of time. The "
1759
+ #~ "period until the actual sending date, uses the order date as a starting "
1760
+ #~ "point to count from. The email template called Customer Invoice will be "
1761
+ #~ "used. By default an email will only be sent, if the order has the "
1762
+ #~ "Processing status."
1763
+ #~ msgstr ""
1764
+ #~ "Mandar un e-mail recordatorio con la factura tras un período específico. "
1765
+ #~ "El período hasta la fecha de envío real usa la fecha de pedido como punto "
1766
+ #~ "desde el que contar. La plantilla de e-mail llamada \"Customer Invoice\" "
1767
+ #~ "será usada. Por defecto, sólo un e-mail será enviado, si el estado del "
1768
+ #~ "pedido es \"Procesando\"."
1769
+
1770
+ #~ msgid "YYYY-MM-DD"
1771
+ #~ msgstr "AAAA-MM-DD"
1772
+
1773
+ #~ msgid "Save"
1774
+ #~ msgstr "Guardar"
1775
+
1776
+ #~ msgid "Reminder scheduled on:"
1777
+ #~ msgstr "Recordatorio programado para el:"
1778
+
1779
+ #~ msgid "Something went wrong."
1780
+ #~ msgstr "Algo ha fallado."
1781
+
1782
+ #~ msgid "%s is required."
1783
+ #~ msgstr "Se requiere %s."
1784
+
1785
+ #~ msgid "Order changed successfully."
1786
+ #~ msgstr "Pedido cambiado con éxito."
1787
+
1788
+ #~ msgid "PDF Invoice Reminder"
1789
+ #~ msgstr "Recordatorio Factura PDF"
1790
+
1791
+ #~ msgid ""
1792
+ #~ "Packing Slips are <strong>only available</strong> when using minimal "
1793
+ #~ "template."
1794
+ #~ msgstr ""
1795
+ #~ "Las Notas de Empaquetado se usan <strong>únicamente</strong> en la "
1796
+ #~ "plantilla \"minimal\"."
1797
+
1798
+ #~ msgid "Packing Slip Options"
1799
+ #~ msgstr "Opciones de Notas de Empaquetado"
1800
+
1801
+ #~ msgid "Invoice %s"
1802
+ #~ msgstr "Factura %s"
1803
+
1804
+ #~ msgid "These are the general template options."
1805
+ #~ msgstr "Estas son las opciones de plantilla general."
1806
+
1807
+ #~ msgid "These are the invoice number options."
1808
+ #~ msgstr "Estas son las opciones de número de factura."
1809
+
1810
+ #~ msgid "[prefix]"
1811
+ #~ msgstr "Prefijo"
1812
+
1813
+ #~ msgid "[suffix]"
1814
+ #~ msgstr "Sufijo"
1815
+
1816
+ #~ msgid "Invoice %s (PDF)"
1817
+ #~ msgstr "Factura %s (PDF)"
1818
+
1819
+ #~ msgid "Remove logo"
1820
+ #~ msgstr "Eliminar logo"
1821
+
1822
+ #~ msgid "File is invalid and contains either '..' or './'."
1823
+ #~ msgstr "Archivo no es válido y contiene '..' o './'."
1824
+
1825
+ #~ msgid "File is invalid and contains ':' after the first character."
1826
+ #~ msgstr "Archivo no es válido y contiene ':' después del primer carácter."
1827
+
1828
+ #~ msgid "File should be less then 2MB."
1829
+ #~ msgstr "Este archivo debe pesar menos de 2MB."
1830
+
1831
+ #~ msgid "Reset on 1st of january"
1832
+ #~ msgstr "Reiniciar el 1 de enero"
1833
+
1834
+ #~ msgid "Attach to Email"
1835
+ #~ msgstr "Adjuntar a correo electrónico"
1836
+
1837
+ #~ msgid "Get your account from your Email It In %suser account%s."
1838
+ #~ msgstr "Obtenga su cuenta desde su Email It In %suser account%s."
1839
+
1840
+ #~ msgid "%sFormat%s of invoice date and order date."
1841
+ #~ msgstr "%sFormat%s de la fecha de la factura y fecha del pedido."
1842
+
1843
+ #~ msgid "Cancel invoice"
1844
+ #~ msgstr "Cancelar factura"
1845
+
1846
+ #~ msgid "Create invoice"
1847
+ #~ msgstr "Crear factura"
1848
+
1849
+ #~ msgid "Feel free to use "
1850
+ #~ msgstr "Siéntase libre de utilizar"
1851
+
1852
+ #~ msgid "Intro text"
1853
+ #~ msgstr "Texto introductorio"
1854
+
1855
+ #~ msgid ""
1856
+ #~ "Reset the invoice counter and start with next invoice number. %s %sNote:"
1857
+ #~ "%s Only available with sequential numbering type and you need to check "
1858
+ #~ "the checkbox to actually reset the value."
1859
+ #~ msgstr ""
1860
+ #~ "Reiniciar el contador de factura y comenzar con el siguiente número de la "
1861
+ #~ "factura. %s %sNote:%s Sólo está disponible con el tipo de numeración "
1862
+ #~ "secuencial y necesitas marcar la casilla para reiniciar realmente el "
1863
+ #~ "valor."
1864
+
1865
+ #~ msgid "Tax"
1866
+ #~ msgstr "Impuesto"
1867
+
1868
+ #~ msgid "%sPayment%s via"
1869
+ #~ msgstr "%sPayment%s vía"
1870
+
1871
+ #~ msgid ""
1872
+ #~ "Feel free to use the placeholders %s %s %s %s %s and %s. %s %sNote:%s %s "
1873
+ #~ "is required."
1874
+ #~ msgstr ""
1875
+ #~ "No dude en utilizar los marcadores de posición %s %s %s %s %s y %s. %s "
1876
+ #~ "%sNote:%s %s es necesario."
1877
+
1878
+ #~ msgid "Subtotal will be including tax and excluding discount and shipping."
1879
+ #~ msgstr "Subtotal es incluyendo impuestos y excepto el descuento y el envío."
1880
+
1881
+ #~ msgid ""
1882
+ #~ "Thank you for using <b>WooCommerce PDF Invoices</b> for some time now. "
1883
+ #~ "Please show us your appreciation by leaving a ★★★★★ rating. A huge thank "
1884
+ #~ "you in advance! <br /> <a href='%s' target='_blank'>Yes, will do it right "
1885
+ #~ "away!</a> - <a href='%s'>No, already done it!</a>"
1886
+ #~ msgstr ""
1887
+ #~ "Gracias por usar <b>WooCommerce PDF Facturas</b> por algún tiempo ahora. "
1888
+ #~ "Por favor, mostrar su agradecimiento al dejar una calificación ★★★★★. Un "
1889
+ #~ "enorme gracias por adelantado! <br /> <a href='%s' target='_blank'>Sí, lo "
1890
+ #~ "hará de inmediato!</a> - <a href='%s'>No, ya hecho!</a>"
1891
+
1892
+ #~ msgid "Order Number %s"
1893
+ #~ msgstr "Número de pedido: %s"
1894
+
1895
+ #~ msgid "Order Date %s"
1896
+ #~ msgstr "Fecha del pedido: %s"
lang/woocommerce-pdf-invoices-et.po CHANGED
@@ -1,1807 +1,1807 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
- # This file is distributed under the same license as the PACKAGE package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
- #
6
- msgid ""
7
- msgstr ""
8
- "Project-Id-Version: WooCommerce PDF Invoices\n"
9
- "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2017-11-29 20:36+0100\n"
11
- "PO-Revision-Date: 2017-11-29 20:36+0100\n"
12
- "Last-Translator: Jüri Laur <jyri@jyrilaur.com>\n"
13
- "Language-Team: Jüri Laur\n"
14
- "Language: et\n"
15
- "MIME-Version: 1.0\n"
16
- "Content-Type: text/plain; charset=UTF-8\n"
17
- "Content-Transfer-Encoding: 8bit\n"
18
- "X-Generator: Poedit 2.0.4\n"
19
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
- "X-Poedit-KeywordsList: __;_e\n"
21
- "X-Poedit-Basepath: ../..\n"
22
- "X-Poedit-SourceCharset: UTF-8\n"
23
- "X-Poedit-SearchPath-0: woocommerce-pdf-invoices\n"
24
- "X-Poedit-SearchPath-1: woocommerce-pdf-invoices-premium\n"
25
- "X-Poedit-SearchPathExcluded-0: *.js\n"
26
-
27
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:25
28
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:427
29
- msgid "Premium"
30
- msgstr "Premium"
31
-
32
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:99
33
- #, php-format
34
- msgid ""
35
- "Whoops, your license for %1$s has expired. To keep receiving updates and "
36
- "premium support, we offer you a 30%% discount when you <a href=\"%2$s\" "
37
- "target=\"_blank\">renew your license</a>."
38
- msgstr ""
39
-
40
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:225
41
- msgid "Premium Options"
42
- msgstr ""
43
-
44
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:228
45
- msgid "Template Options"
46
- msgstr ""
47
-
48
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:231
49
- msgid "Supplier Options"
50
- msgstr ""
51
-
52
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:232
53
- msgid "Send customer invoice automatically to your supplier(s)."
54
- msgstr ""
55
-
56
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:235
57
- #, fuzzy
58
- #| msgid "Header Options"
59
- msgid "Credit Note Options"
60
- msgstr "Päise seaded"
61
-
62
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:238
63
- #, fuzzy
64
- #| msgid "Invoice Number Options"
65
- msgid "Credit Note Number Options"
66
- msgstr "Arve numbri seaded"
67
-
68
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:241
69
- msgid "Global Invoice Options"
70
- msgstr ""
71
-
72
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:242
73
- msgid ""
74
- "Generate global invoices on Orders page by selecting multiple orders and "
75
- "applying action or let customers generate periodically from My Account page. "
76
- "<strong>Global invoices are only supported when using the micro template!</"
77
- "strong>"
78
- msgstr ""
79
-
80
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:245
81
- msgid "Reminder Options"
82
- msgstr ""
83
-
84
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:246
85
- #, php-format
86
- msgid ""
87
- "Automatically send PDF invoice after a specific period of time. When "
88
- "enabled, a new <a href=\"%s\">Customer invoice reminder</a> email will be "
89
- "used to send the PDF invoice."
90
- msgstr ""
91
-
92
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:249
93
- msgid "Request Invoice Options"
94
- msgstr ""
95
-
96
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:250
97
- msgid ""
98
- "Let a customer decide to generate a PDF invoice. When enabled, a checkbox "
99
- "field will be added on the checkout page so customers can request a PDF "
100
- "invoice."
101
- msgstr ""
102
-
103
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:267
104
- msgid "Activation email"
105
- msgstr ""
106
-
107
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:272
108
- #, php-format
109
- msgid "Enter your activation email from %s."
110
- msgstr ""
111
-
112
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:278
113
- msgid "License"
114
- msgstr ""
115
-
116
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:283
117
- #, php-format
118
- msgid "Enter your license key from %s to receive updates."
119
- msgstr ""
120
-
121
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:289
122
- msgid "PDF attachment"
123
- msgstr ""
124
-
125
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:294
126
- msgid "Add for example a PDF with your terms & conditions."
127
- msgstr ""
128
-
129
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:300
130
- msgid "Suppliers"
131
- msgstr ""
132
-
133
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:305
134
- msgid ""
135
- "<b>Hint</b>: Send customer invoices to suppliers' Cloud Storages by simply "
136
- "adding their Email It In email addresses. Email addresses need to be "
137
- "seperated by comma's."
138
- msgstr ""
139
-
140
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:311
141
- #: woocommerce-pdf-invoices/includes/admin/settings/class-general.php:72
142
- msgid "Attach to Emails"
143
- msgstr ""
144
-
145
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:322
146
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:400
147
- msgid "Prefix"
148
- msgstr ""
149
-
150
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:333
151
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:411
152
- msgid "Suffix"
153
- msgstr ""
154
-
155
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:344
156
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:422
157
- msgid "Format"
158
- msgstr "Formaat"
159
-
160
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:349
161
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:427
162
- #, php-format
163
- msgid "Available placeholders: %s."
164
- msgstr ""
165
-
166
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:351
167
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:429
168
- #, php-format
169
- msgid "<b>Note:</b> %s is required and slashes aren't supported."
170
- msgstr ""
171
-
172
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:363
173
- msgid "Enable customer generation"
174
- msgstr ""
175
-
176
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:365
177
- msgid "Let customers generate a global invoice from their account"
178
- msgstr ""
179
-
180
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:373
181
- msgid "Customer generation period"
182
- msgstr ""
183
-
184
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:378
185
- msgid ""
186
- "Should your customers have the ability to generate a global invoice by month "
187
- "or by year?<br/><strong>Note:</strong> Customer generation should be enabled."
188
- msgstr ""
189
-
190
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:380
191
- msgid "Month"
192
- msgstr ""
193
-
194
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:381
195
- msgid "Year"
196
- msgstr ""
197
-
198
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:393
199
- msgid "Send to your Cloud Storage"
200
- msgstr ""
201
-
202
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:405
203
- msgid "Email to customer"
204
- msgstr ""
205
-
206
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:417
207
- msgid "Email to supplier(s)"
208
- msgstr ""
209
-
210
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:424
211
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:146
212
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:146
213
- msgid "Email subject"
214
- msgstr ""
215
-
216
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:429
217
- msgid "Subject for the global invoice email."
218
- msgstr ""
219
-
220
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:436
221
- msgid "Email message"
222
- msgstr ""
223
-
224
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:441
225
- msgid "Message for the global invoice email."
226
- msgstr ""
227
-
228
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:453
229
- msgid "Enable reminder"
230
- msgstr ""
231
-
232
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:460
233
- msgid "Days until due date"
234
- msgstr ""
235
-
236
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:465
237
- msgid "Number of days from order or invoice date until due date."
238
- msgstr ""
239
-
240
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:474
241
- msgid "Days until reminder"
242
- msgstr ""
243
-
244
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:479
245
- msgid "Number of days from order or invoice date until reminder date."
246
- msgstr ""
247
-
248
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:488
249
- msgid "Date type"
250
- msgstr ""
251
-
252
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:493
253
- msgid "Choose the type of date to count from."
254
- msgstr ""
255
-
256
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:495
257
- msgid "Order date"
258
- msgstr ""
259
-
260
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:496
261
- msgid "Invoice date"
262
- msgstr ""
263
-
264
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:508
265
- msgid "Enable Request Invoice."
266
- msgstr ""
267
-
268
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:590
269
- msgid "Activation email cannot be empty."
270
- msgstr ""
271
-
272
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:630
273
- msgid ""
274
- "Something went wrong with the activation of your license. Contact the author "
275
- "for support."
276
- msgstr ""
277
-
278
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:651
279
- msgid "File to large."
280
- msgstr ""
281
-
282
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:657
283
- msgid "Only PDF files are allowed."
284
- msgstr ""
285
-
286
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:682
287
- msgid "Remove"
288
- msgstr ""
289
-
290
- #: woocommerce-pdf-invoices-premium/includes/admin/settings/class-premium.php:684
291
- msgid "Choose"
292
- msgstr ""
293
-
294
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-credit-note.php:12
295
- #, php-format
296
- msgid "PDF Credit Note %1$s"
297
- msgstr ""
298
-
299
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:10
300
- msgid "Generate Global Invoice"
301
- msgstr ""
302
-
303
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:20
304
- msgid "Select a month"
305
- msgstr ""
306
-
307
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:33
308
- msgid "Select a year"
309
- msgstr ""
310
-
311
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-customer-generation.php:47
312
- msgid "Generate invoice"
313
- msgstr ""
314
-
315
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:16
316
- msgid "Global invoice successfully generated!"
317
- msgstr ""
318
-
319
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
320
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:663
321
- msgid "View invoice"
322
- msgstr "Vaata arvet"
323
-
324
- #: woocommerce-pdf-invoices-premium/includes/admin/views/html-global-notice.php:17
325
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:751
326
- msgid "View"
327
- msgstr "Vaata"
328
-
329
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:37
330
- msgid "Bulk Export PDF Invoices"
331
- msgstr ""
332
-
333
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:38
334
- msgid "Bulk Export PDF Packing Slips"
335
- msgstr ""
336
-
337
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-export.php:85
338
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:73
339
- msgid "No order selected."
340
- msgstr ""
341
-
342
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:37
343
- msgid "Bulk Generate PDF Invoices"
344
- msgstr ""
345
-
346
- #: woocommerce-pdf-invoices-premium/includes/class-bulk-generate.php:38
347
- msgid "Bulk Generate PDF Packing Slips"
348
- msgstr ""
349
-
350
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:135
351
- msgid "PDF Credit Notes"
352
- msgstr ""
353
-
354
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:283
355
- #, php-format
356
- msgid ""
357
- "<a href=\"%1$s\" class=\"%2$s\" target=\"%3$s\">PDF Credit Note (%4$s)</a> "
358
- "for Refund #%5$s."
359
- msgstr ""
360
-
361
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:289
362
- #, php-format
363
- msgid "created on %1$s at %2$s"
364
- msgstr ""
365
-
366
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:291
367
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:775
368
- msgid "Delete"
369
- msgstr ""
370
-
371
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:297
372
- msgid "There are no credit notes yet."
373
- msgstr ""
374
-
375
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:309
376
- msgid "Create PDF Credit Notes for selected refund(s)"
377
- msgstr ""
378
-
379
- #: woocommerce-pdf-invoices-premium/includes/class-credit-note.php:339
380
- msgid "Credit note"
381
- msgstr ""
382
-
383
- #: woocommerce-pdf-invoices-premium/includes/class-install.php:91
384
- #, php-format
385
- msgid ""
386
- "%1$s requires %2$s to be activated. Install and activate it and you should "
387
- "be good to go! :)"
388
- msgstr ""
389
-
390
- #: woocommerce-pdf-invoices-premium/includes/class-install.php:100
391
- #, php-format
392
- msgid ""
393
- "%1$s requires at least %2$s. Update it and get the best out of both "
394
- "plugins. :)"
395
- msgstr ""
396
-
397
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:228
398
- msgid "Invalid request"
399
- msgstr "Vigane päring"
400
-
401
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:248
402
- msgid "No orders found."
403
- msgstr ""
404
-
405
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:295
406
- msgid "Generate global invoice"
407
- msgstr ""
408
-
409
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:323
410
- msgid ""
411
- "Could not generate the invoice. Global invoices are only supported when "
412
- "using the micro template."
413
- msgstr ""
414
-
415
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-global.php:336
416
- msgid "Select more then one order to generate a global invoice."
417
- msgstr ""
418
-
419
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
420
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
421
- msgid "Yes"
422
- msgstr ""
423
-
424
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:80
425
- #: woocommerce-pdf-invoices/includes/woocommerce-pdf-invoices.php:735
426
- msgid "No"
427
- msgstr ""
428
-
429
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:83
430
- msgid "Reminder on:"
431
- msgstr ""
432
-
433
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:88
434
- msgid "Reminder sent?"
435
- msgstr ""
436
-
437
- #: woocommerce-pdf-invoices-premium/includes/class-invoice-reminder.php:296
438
- #, fuzzy
439
- #| msgid "Order Date: %s"
440
- msgid "Due Date:"
441
- msgstr "Tellimuse kuupäev %s"
442
-
443
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:61
444
- msgid ""
445
- "Instead consider creating a Cancelled PDF invoice by changing the order "
446
- "status to Cancelled."
447
- msgstr ""
448
-
449
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:116
450
- msgid "Advanced Table Content"
451
- msgstr ""
452
-
453
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:117
454
- msgid ""
455
- "Enable Advanced Table Content settings to fully customize line item columns "
456
- "and total rows. When enabled the standard Table Content settings will be "
457
- "ignored. When using a custom template, make sure to update it! Micro "
458
- "template is not supported."
459
- msgstr ""
460
-
461
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:145
462
- msgid "Enable Advanced Table Content"
463
- msgstr ""
464
-
465
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:157
466
- msgid "Show SKU as meta data"
467
- msgstr ""
468
-
469
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:164
470
- msgid "Display tax totals"
471
- msgstr ""
472
-
473
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:172
474
- msgid "Itemized"
475
- msgstr ""
476
-
477
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:173
478
- msgid "As a single total"
479
- msgstr ""
480
-
481
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:179
482
- #, fuzzy
483
- #| msgid "Left footer column."
484
- msgid "Line item columns"
485
- msgstr "Vasak jaluse tulp."
486
-
487
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:188
488
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:393
489
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:48
490
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:403
491
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:53
492
- msgid "Description"
493
- msgstr "Kirjeldus"
494
-
495
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:193
496
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:198
497
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:401
498
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:405
499
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:57
500
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:60
501
- msgid "Cost"
502
- msgstr "Hind"
503
-
504
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:203
505
- msgid "Quantity"
506
- msgstr ""
507
-
508
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:213
509
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:218
510
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:281
511
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:286
512
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:413
513
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:417
514
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:77
515
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:235
516
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:405
517
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:71
518
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:275
519
- msgid "Total"
520
- msgstr "Kokku"
521
-
522
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:227
523
- #, fuzzy
524
- #| msgid "Total"
525
- msgid "Total rows"
526
- msgstr "Kokku"
527
-
528
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:236
529
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:261
530
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:173
531
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:506
532
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:207
533
- msgid "Discount"
534
- msgstr "Allahindlus"
535
-
536
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:241
537
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:266
538
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:182
539
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:200
540
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:518
541
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:215
542
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:231
543
- msgid "Shipping"
544
- msgstr "Postikulu"
545
-
546
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:246
547
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:271
548
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:212
549
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:242
550
- msgid "Fee"
551
- msgstr "Tasu"
552
-
553
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:251
554
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:256
555
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:191
556
- #: woocommerce-pdf-invoices/includes/admin/settings/class-template.php:470
557
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:223
558
- msgid "Subtotal"
559
- msgstr "Vahesumma"
560
-
561
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:397
562
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:65
563
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:59
564
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:404
565
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:62
566
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:63
567
- msgid "Qty"
568
- msgstr "TK"
569
-
570
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:607
571
- #, fuzzy, php-format
572
- #| msgid "Subtotal"
573
- msgid "Subtotal %s"
574
- msgstr "Vahesumma"
575
-
576
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:625
577
- #, fuzzy, php-format
578
- #| msgid "Discount"
579
- msgid "Discount %s"
580
- msgstr "Allahindlus"
581
-
582
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:652
583
- #, fuzzy, php-format
584
- #| msgid "Shipping"
585
- msgid "Shipping %s"
586
- msgstr "Postikulu"
587
-
588
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:685
589
- #, php-format
590
- msgid "%1$s %2$s"
591
- msgstr ""
592
-
593
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:866
594
- #, fuzzy, php-format
595
- #| msgid "Total"
596
- msgid "Total %s"
597
- msgstr "Kokku"
598
-
599
- #: woocommerce-pdf-invoices-premium/includes/class-invoice.php:993
600
- msgid "Request invoice"
601
- msgstr ""
602
-
603
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:43
604
- #, fuzzy
605
- #| msgid "Customer note"
606
- msgid "Customer credit note"
607
- msgstr "Kliendi märkus"
608
-
609
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:44
610
- msgid ""
611
- "Customer credit note emails can be sent to customers containing their PDF "
612
- "Credit Note."
613
- msgstr ""
614
-
615
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:50
616
- msgid "Credit note for order {order_number} from {order_date}"
617
- msgstr ""
618
-
619
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:51
620
- msgid "Credit note for order {order_number}"
621
- msgstr ""
622
-
623
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:149
624
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:158
625
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:149
626
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:158
627
- #, php-format
628
- msgid "Defaults to %s"
629
- msgstr ""
630
-
631
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:155
632
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:155
633
- msgid "Email heading"
634
- msgstr ""
635
-
636
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:164
637
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:164
638
- msgid "Email type"
639
- msgstr ""
640
-
641
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-credit-note.php:166
642
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:166
643
- msgid "Choose which format of email to send."
644
- msgstr ""
645
-
646
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:43
647
- msgid "Customer invoice reminder"
648
- msgstr ""
649
-
650
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:44
651
- msgid ""
652
- "Customer invoice reminder emails can be sent to customers containing their "
653
- "order information and payment links."
654
- msgstr ""
655
-
656
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:49
657
- msgid "Invoice reminder for order {order_number} from {order_date}"
658
- msgstr ""
659
-
660
- #: woocommerce-pdf-invoices-premium/includes/emails/class-wc-email-invoice-reminder.php:50
661
- msgid "Invoice reminder for order {order_number}"
662
- msgstr ""
663
-
664
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:35
665
- msgid "Credit Note"
666
- msgstr ""
667
-
668
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:46
669
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:40
670
- msgid "Ship to:"
671
- msgstr ""
672
-
673
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:61
674
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:59
675
- msgid "Product"
676
- msgstr ""
677
-
678
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:71
679
- msgid "Price"
680
- msgstr ""
681
-
682
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:135
683
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:127
684
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:109
685
- #, php-format
686
- msgid "Note from customer: %s"
687
- msgstr ""
688
-
689
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:140
690
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:132
691
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/body.php:114
692
- #, php-format
693
- msgid "Note to customer: %s"
694
- msgstr ""
695
-
696
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/body.php:152
697
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:314
698
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/body.php:144
699
- msgid "Zero rated for VAT as customer has supplied EU VAT number"
700
- msgstr ""
701
-
702
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/footer.php:26
703
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/footer.php:15
704
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/footer.php:12
705
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/minimal/footer.php:26
706
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/footer.php:23
707
- #, php-format
708
- msgid "%1$s of %2$s"
709
- msgstr ""
710
-
711
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:39
712
- #, php-format
713
- msgid "Credit Note #: %s"
714
- msgstr ""
715
-
716
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:41
717
- #, fuzzy, php-format
718
- #| msgid "Order Date: %s"
719
- msgid "Date: %s"
720
- msgstr "Tellimuse kuupäev %s"
721
-
722
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:45
723
- #, php-format
724
- msgid "Invoice #: %s"
725
- msgstr ""
726
-
727
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:47
728
- #, php-format
729
- msgid "Invoice Date: %s"
730
- msgstr ""
731
-
732
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:51
733
- #, fuzzy, php-format
734
- #| msgid "Order #%d - %s"
735
- msgid "Order #: %s"
736
- msgstr "Tellimus #%d - %s"
737
-
738
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:53
739
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:38
740
- #: woocommerce-pdf-invoices/includes/templates/packing-slip/simple/minimal/header.php:37
741
- #, php-format
742
- msgid "Order Date: %s"
743
- msgstr "Tellimuse kuupäev %s"
744
-
745
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:57
746
- #, php-format
747
- msgid "Payment Method: %s"
748
- msgstr ""
749
-
750
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:64
751
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:681
752
- #, php-format
753
- msgid "Purchase Order Number: %s"
754
- msgstr "Ostukorralduse number: %s"
755
-
756
- #: woocommerce-pdf-invoices-premium/includes/templates/credit-note/simple/minimal/header.php:73
757
- #: woocommerce-pdf-invoices/includes/abstracts/abstract-invoice.php:663
758
- #, php-format
759
- msgid "VAT Number: %s"
760
- msgstr "KMKR nr: %s"
761
-
762
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/customer-credit-note.php:25
763
- #, fuzzy
764
- #| msgid "Order Date: %s"
765
- msgid "Order:"
766
- msgstr "Tellimuse kuupäev %s"
767
-
768
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:23
769
- #, fuzzy, php-format
770
- #| msgid "Order Number: %s"
771
- msgid "Order number: %s"
772
- msgstr "Tellimuse number: %s"
773
-
774
- #: woocommerce-pdf-invoices-premium/includes/templates/emails/plain/customer-credit-note.php:24
775
- #, fuzzy, php-format
776
- #| msgid "Order Date: %s"
777
- msgid "Order date: %s"
778
- msgstr "Tellimuse kuupäev %s"
779
-
780
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:9
781
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:11
782
- msgid "Invoice to"
783
- msgstr "Arve saaja"
784
-
785
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:14
786
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:16
787
- #, php-format
788
- msgid "Phone: %s"
789
- msgstr "Telefon: %s"
790
-
791
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:19
792
- #: woocommerce-pdf-invoices/includes/templates/invoice/simple/micro/body.php:23
793
- msgid "Ship to"
794
- msgstr "Tarne aadress"
795
-
796
- #: woocommerce-pdf-invoices-premium/includes/templates/invoice/global/micro/body.php:30
797
- msgid "Global Invoice"
798
- msgstr "Globaal