Version Description
July 23, 2018 =
Improved: Margin between template header and body.
Download this release
Release Info
Developer | baaaaas |
Plugin | WooCommerce PDF Invoices |
Version | 2.9.14 |
Comparing to | |
See all releases |
Code changes from version 2.9.12 to 2.9.14
- LICENSE +621 -621
- assets/css/admin.css +194 -194
- assets/js/admin.js +134 -134
- assets/js/settings.js +52 -52
- bootstrap.php +346 -346
- includes/abstracts/abstract-document.php +335 -335
- includes/abstracts/abstract-invoice.php +880 -880
- includes/abstracts/abstract-settings.php +485 -485
- includes/admin/class-admin-notices.php +144 -144
- includes/admin/settings/class-general.php +233 -233
- includes/admin/settings/class-template.php +624 -624
- includes/admin/views/html-activation-notice.php +17 -17
- includes/admin/views/html-deactivation-notice.php +20 -20
- includes/admin/views/html-multiple-checkbox-setting.php +33 -33
- includes/admin/views/html-order-page-pdf-invoice-meta-box.php +21 -21
- includes/admin/views/html-rate-notice.php +19 -19
- includes/admin/views/html-sidebar.php +98 -98
- includes/class-debug-log.php +178 -178
- includes/class-invoice.php +189 -189
- includes/class-packing-slip.php +132 -132
- includes/class-template.php +419 -419
- includes/compatibility/abstract-bewpi-setting.php +235 -235
- includes/compatibility/abstract-wc-data-compatibility.php +224 -224
- includes/compatibility/class-wc-core-compatibility.php +253 -253
- includes/compatibility/class-wc-datetime.php +109 -109
- includes/compatibility/class-wc-order-compatibility.php +517 -517
- includes/compatibility/class-wc-payment-gateway-compatibility.php +54 -54
- includes/compatibility/class-wc-product-compatibility.php +280 -280
- includes/templates/invoice/simple/micro/body.php +317 -317
- includes/templates/invoice/simple/micro/footer.php +14 -14
- includes/templates/invoice/simple/micro/header.php +17 -17
- includes/templates/invoice/simple/micro/style.css +139 -139
- includes/templates/invoice/simple/minimal/body.php +177 -163
- includes/templates/invoice/simple/minimal/footer.php +29 -29
- includes/templates/invoice/simple/minimal/header.php +39 -49
- includes/templates/invoice/simple/minimal/style.css +153 -153
- includes/templates/packing-slip/simple/minimal/body.php +133 -120
- includes/templates/packing-slip/simple/minimal/footer.php +26 -26
- includes/templates/packing-slip/simple/minimal/header.php +39 -49
- includes/templates/packing-slip/simple/minimal/style.css +80 -80
- includes/woocommerce-pdf-invoices.php +1060 -1060
- lang/woocommerce-pdf-invoices-cs_CZ.po +1949 -1949
- lang/woocommerce-pdf-invoices-de_DE.po +1712 -1712
- lang/woocommerce-pdf-invoices-es_ES.po +1896 -1896
- 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.
|
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.
|
15 |
-
*/
|
16 |
-
|
17 |
-
defined( 'ABSPATH' ) or exit;
|
18 |
-
|
19 |
-
/**
|
20 |
-
* @deprecated instead use WPI_VERSION.
|
21 |
-
*/
|
22 |
-
define( 'BEWPI_VERSION', '2.9.
|
23 |
-
|
24 |
-
define( 'WPI_VERSION', '2.9.
|
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 ) ?
|
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 .= ' ' . 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 .= ' ' . 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…', '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…', '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&plugin=' . $bewpi_plugin_file . '&plugin_status=' . $status . '&paged=' . $page . '&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&plugin=' . $bewpi_plugin_file . '&plugin_status=' . $status . '&paged=' . $page . '&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&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&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&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&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 '–';
|
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 '–';
|
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
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
</
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
<
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
<
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
</
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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( ' ', '', $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 |
-
|
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:
|
20 |
-
margin-right:
|
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:
|
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:
|
41 |
-
float: left;
|
42 |
-
margin-left:
|
43 |
-
line-height: 55px;
|
44 |
-
}
|
45 |
-
|
46 |
-
div.title div.watermark {
|
47 |
-
float: right;
|
48 |
-
margin-right:
|
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 |
-
$
|
21 |
-
$
|
22 |
-
$
|
23 |
-
$
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
<
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
<
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
?>
|
89 |
-
</td>
|
90 |
-
|
91 |
-
<td width="
|
92 |
-
<?php
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
38 |
-
|
39 |
-
|
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:
|
22 |
-
margin-right:
|
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:
|
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:
|
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…"
|
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…"
|
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…"
|
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…"
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|