Merge new root
--HG-- branch : 6.0
This commit is contained in:
commit
75c4df7fdf
5522 files changed
+928531
No files matched your search
@@ -0,0 +1,68 @@
|
||||
clone:
|
||||
hg:
|
||||
image: plugins/hg
|
||||
environment:
|
||||
- HG_SHARE_POOL=/root/.cache/hg
|
||||
volumes:
|
||||
- cache:/root/.cache
|
||||
|
||||
pipeline:
|
||||
tox:
|
||||
image: ${IMAGE}
|
||||
environment:
|
||||
- CFLAGS=-O0
|
||||
- DB_CACHE=/cache
|
||||
- TOX_TESTENV_PASSENV=CFLAGS DB_CACHE CI_BUILD_NUMBER CI_JOB_NUMBER CI_JOB_ID
|
||||
- POSTGRESQL_URI=postgresql://postgres@postgresql:5432/
|
||||
commands:
|
||||
- echo "[extensions]" >> /root/.hgrc
|
||||
- echo "hgext.share =" >> /root/.hgrc
|
||||
- echo "[share]" >> /root/.hgrc
|
||||
- echo "pool = /root/.cache/hg" >> /root/.hgrc
|
||||
- pip install tox
|
||||
- tox -e "${TOXENV}-${DATABASE}"
|
||||
volumes:
|
||||
- cache:/root/.cache
|
||||
check_dist:
|
||||
image: ${IMAGE}
|
||||
commands:
|
||||
- pip install twine
|
||||
- python setup.py sdist
|
||||
- twine check dist/*
|
||||
|
||||
services:
|
||||
postgresql:
|
||||
image: postgres
|
||||
environment:
|
||||
- POSTGRES_HOST_AUTH_METHOD=trust
|
||||
command: "-c fsync=off -c synchronous_commit=off -c full_page_writes=off"
|
||||
when:
|
||||
matrix:
|
||||
DATABASE: postgresql
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- IMAGE: python:3.6
|
||||
TOXENV: py36
|
||||
DATABASE: sqlite
|
||||
- IMAGE: python:3.6
|
||||
TOXENV: py36
|
||||
DATABASE: postgresql
|
||||
- IMAGE: python:3.7
|
||||
TOXENV: py37
|
||||
DATABASE: sqlite
|
||||
- IMAGE: python:3.7
|
||||
TOXENV: py37
|
||||
DATABASE: postgresql
|
||||
- IMAGE: python:3.8
|
||||
TOXENV: py38
|
||||
DATABASE: sqlite
|
||||
- IMAGE: python:3.8
|
||||
TOXENV: py38
|
||||
DATABASE: postgresql
|
||||
- IMAGE: python:3.9
|
||||
TOXENV: py39
|
||||
DATABASE: sqlite
|
||||
- IMAGE: python:3.9
|
||||
TOXENV: py39
|
||||
DATABASE: postgresql
|
||||
@@ -0,0 +1,2 @@
|
||||
[flake8]
|
||||
ignore=E123,E124,E126,E128,E741,W503
|
||||
@@ -0,0 +1,125 @@
|
||||
Version 6.0.3 - 2021-10-01
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 6.0.2 - 2021-09-16
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 6.0.1 - 2021-09-01
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 6.0.0 - 2021-05-03
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Deactivate variants when product is deactivated
|
||||
* Allow multiple templates to be added/removed on a category
|
||||
|
||||
Version 5.8.0 - 2020-11-02
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Remove support for Python 3.5
|
||||
* Allow the product template code to be set from a sequence
|
||||
* Set code column first in template tree view
|
||||
* Add default order on product and template
|
||||
* Check price_decimal configuration
|
||||
|
||||
Version 5.6.0 - 2020-05-04
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Add round_price
|
||||
* Make product code unique
|
||||
* Add code to template as variant prefix code
|
||||
* Hide product fields inherited from template when empty
|
||||
* Skip default products when template is created from product
|
||||
* Search also on variant name when searching on template record name
|
||||
|
||||
Version 5.4.0 - 2019-11-04
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Allow the product code to be set by a sequence
|
||||
* Allow UoM conversion between different categories
|
||||
* Add product identifiers
|
||||
|
||||
Version 5.2.0 - 2019-05-06
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Remove starting wildcard when searching on codes and numbers
|
||||
|
||||
Version 5.0.0 - 2018-10-01
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Remove support for Python 2.7
|
||||
|
||||
Version 4.8.0 - 2018-04-23
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Enforce digits length on Rounding Precision on Unit of Measure
|
||||
|
||||
Version 4.6.0 - 2017-10-30
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Show all products by category
|
||||
* Limit cost method to fixed for service
|
||||
* Move cost_price from Template to Product
|
||||
|
||||
Version 4.4.0 - 2017-05-01
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Add ceil and floor as uom rounding
|
||||
|
||||
Version 4.2.0 - 2016-11-28
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Add relate from Template to Products
|
||||
|
||||
Version 4.0.0 - 2016-05-02
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Replace category by categories on Template
|
||||
* Add Python3 support
|
||||
* Add configuration for default cost price method
|
||||
* Change Uom.round into an instance method
|
||||
* Add Function fields on Product from Template
|
||||
|
||||
Version 3.8.0 - 2015-11-02
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Be more strict on unit of measure conversion
|
||||
|
||||
Version 3.6.0 - 2015-04-20
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Add support for PyPy
|
||||
* Ensure that uom rouding is always greather than zero
|
||||
* Add price_digits
|
||||
* Add parameter price_decimal
|
||||
|
||||
Version 3.4.0 - 2014-10-20
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 3.2.0 - 2014-04-21
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 3.0.0 - 2013-10-21
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 2.8.0 - 2013-04-22
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 2.6.0 - 2012-10-22
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 2.4.0 - 2012-04-24
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Remove special uom search clause
|
||||
* New product types: Goods, Assets and Service
|
||||
* Category is no more required on product
|
||||
|
||||
Version 2.2.0 - 2011-10-24
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 2.0.0 - 2011-04-26
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 1.8.0 - 2010-11-01
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 1.6.0 - 2010-05-09
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Improve computation precision of UOM convertion
|
||||
|
||||
Version 1.4.0 - 2009-10-19
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 1.2.0 - 2009-04-20
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Allow egg installation
|
||||
|
||||
Version 1.0.0 - 2008-11-17
|
||||
* Initial release
|
||||
@@ -0,0 +1,17 @@
|
||||
Copyright (C) 2008-2021 Cédric Krier.
|
||||
Copyright (C) 2008-2013 Bertrand Chenal.
|
||||
Copyright (C) 2008-2021 B2CK SPRL.
|
||||
Copyright (C) 2004-2008 Tiny SPRL.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
@@ -0,0 +1,6 @@
|
||||
include CHANGELOG
|
||||
include COPYRIGHT
|
||||
include LICENSE
|
||||
include README.rst
|
||||
include doc/*
|
||||
include icons/LICENSE
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
doc/index.rst
|
||||
@@ -0,0 +1,33 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.pool import Pool
|
||||
from . import ir
|
||||
from . import uom
|
||||
from . import category
|
||||
from . import product
|
||||
from . import configuration
|
||||
from .product import price_digits, round_price
|
||||
from .uom import uom_conversion_digits
|
||||
|
||||
__all__ = [price_digits, round_price, uom_conversion_digits]
|
||||
|
||||
|
||||
def register():
|
||||
Pool.register(
|
||||
ir.Configuration,
|
||||
uom.UomCategory,
|
||||
uom.Uom,
|
||||
category.Category,
|
||||
product.Template,
|
||||
product.Product,
|
||||
product.ProductIdentifier,
|
||||
product.ProductListPrice,
|
||||
# before ProductCostPrice for migration
|
||||
product.ProductCostPriceMethod,
|
||||
product.ProductCostPrice,
|
||||
product.TemplateCategory,
|
||||
product.TemplateCategoryAll,
|
||||
configuration.Configuration,
|
||||
configuration.ConfigurationDefaultCostPriceMethod,
|
||||
module='product', type_='model')
|
||||
@@ -0,0 +1,38 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.model import ModelView, ModelSQL, fields, tree
|
||||
from trytond.pyson import PYSONEncoder
|
||||
|
||||
|
||||
class Category(tree(separator=' / '), ModelSQL, ModelView):
|
||||
"Product Category"
|
||||
__name__ = "product.category"
|
||||
name = fields.Char('Name', required=True, translate=True)
|
||||
parent = fields.Many2One(
|
||||
'product.category', "Parent", select=True,
|
||||
help="Used to add structure above the category.")
|
||||
childs = fields.One2Many(
|
||||
'product.category', 'parent', string="Children",
|
||||
help="Used to add structure below the category.")
|
||||
templates = fields.Many2Many(
|
||||
'product.template-product.category', 'category', 'template',
|
||||
"Products")
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Category, cls).__setup__()
|
||||
cls._order.insert(0, ('name', 'ASC'))
|
||||
cls._buttons.update({
|
||||
'add_products': {
|
||||
'icon': 'tryton-add',
|
||||
},
|
||||
})
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action('product.act_category_product')
|
||||
def add_products(cls, categories):
|
||||
return {
|
||||
'res_id': [categories[0].id],
|
||||
'pyson_domain': PYSONEncoder().encode(
|
||||
[('id', '=', categories[0].id)]),
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="category_view_list">
|
||||
<field name="model">product.category</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">category_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="category_view_tree">
|
||||
<field name="model">product.category</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">category_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="category_view_form">
|
||||
<field name="model">product.category</field>
|
||||
<field name="type">form</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">category_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="category_view_form_product">
|
||||
<field name="model">product.category</field>
|
||||
<field name="type">form</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">category_product_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_category_tree">
|
||||
<field name="name">Categories</field>
|
||||
<field name="res_model">product.category</field>
|
||||
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_category_tree_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="category_view_tree"/>
|
||||
<field name="act_window" ref="act_category_tree"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_category_tree_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="category_view_form"/>
|
||||
<field name="act_window" ref="act_category_tree"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_main_product"
|
||||
action="act_category_tree"
|
||||
sequence="20"
|
||||
id="menu_category_tree"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_category_list">
|
||||
<field name="name">Categories</field>
|
||||
<field name="res_model">product.category</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_category_list_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="category_view_list"/>
|
||||
<field name="act_window" ref="act_category_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_category_list_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="category_view_form"/>
|
||||
<field name="act_window" ref="act_category_list"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_category_tree"
|
||||
action="act_category_list"
|
||||
sequence="10"
|
||||
id="menu_category_list"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_category_product">
|
||||
<field name="name">Add products</field>
|
||||
<field name="res_model">product.category</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_category_product_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="category_view_form_product"/>
|
||||
<field name="act_window" ref="act_category_product"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="category_add_products_button">
|
||||
<field name="name">add_products</field>
|
||||
<field name="string">Add products</field>
|
||||
<field name="model" search="[('model', '=', 'product.category')]"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_product_category">
|
||||
<field name="model" search="[('model', '=', 'product.category')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_product_category_admin">
|
||||
<field name="model" search="[('model', '=', 'product.category')]"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
@@ -0,0 +1,73 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond import backend
|
||||
from trytond.model import (ModelView, ModelSQL, ModelSingleton,
|
||||
MultiValueMixin, ValueMixin, fields)
|
||||
from trytond.pool import Pool
|
||||
from trytond.tools.multivalue import migrate_property
|
||||
from trytond.pyson import Id
|
||||
|
||||
default_cost_price_method = fields.Selection(
|
||||
'get_cost_price_methods', "Default Cost Method",
|
||||
help="The default cost price method for new products.")
|
||||
|
||||
|
||||
@classmethod
|
||||
def get_cost_price_methods(cls):
|
||||
pool = Pool()
|
||||
Template = pool.get('product.template')
|
||||
field_name = 'cost_price_method'
|
||||
return (Template.fields_get([field_name])[field_name]['selection']
|
||||
+ [(None, '')])
|
||||
|
||||
|
||||
class Configuration(ModelSingleton, ModelSQL, ModelView, MultiValueMixin):
|
||||
'Product Configuration'
|
||||
__name__ = 'product.configuration'
|
||||
|
||||
default_cost_price_method = fields.MultiValue(default_cost_price_method)
|
||||
get_cost_price_methods = get_cost_price_methods
|
||||
product_sequence = fields.Many2One('ir.sequence', "Variant Sequence",
|
||||
domain=[
|
||||
('sequence_type', '=', Id('product', 'sequence_type_product')),
|
||||
],
|
||||
help="Used to generate the last part of the product code.")
|
||||
template_sequence = fields.Many2One('ir.sequence', "Product Sequence",
|
||||
domain=[
|
||||
('sequence_type', '=', Id('product', 'sequence_type_template')),
|
||||
],
|
||||
help="Used to generate the first part of the product code.")
|
||||
|
||||
@classmethod
|
||||
def default_default_cost_price_method(cls, **pattern):
|
||||
return cls.multivalue_model(
|
||||
'default_cost_price_method').default_default_cost_price_method()
|
||||
|
||||
|
||||
class ConfigurationDefaultCostPriceMethod(ModelSQL, ValueMixin):
|
||||
"Product Configuration Default Cost Price Method"
|
||||
__name__ = 'product.configuration.default_cost_price_method'
|
||||
default_cost_price_method = default_cost_price_method
|
||||
get_cost_price_methods = get_cost_price_methods
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
exist = backend.TableHandler.table_exist(cls._table)
|
||||
|
||||
super(ConfigurationDefaultCostPriceMethod, cls).__register__(
|
||||
module_name)
|
||||
|
||||
if not exist:
|
||||
cls._migrate_property([], [], [])
|
||||
|
||||
@classmethod
|
||||
def _migrate_property(cls, field_names, value_names, fields):
|
||||
field_names.append('default_cost_price_method')
|
||||
value_names.append('default_cost_price_method')
|
||||
migrate_property(
|
||||
'product.configuration', field_names, cls, value_names,
|
||||
fields=fields)
|
||||
|
||||
@classmethod
|
||||
def default_default_cost_price_method(cls):
|
||||
return 'fixed'
|
||||
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="product_configuration_view_form">
|
||||
<field name="model">product.configuration</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">configuration_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window"
|
||||
id="act_product_configuration_form">
|
||||
<field name="name">Configuration</field>
|
||||
<field name="res_model">product.configuration</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_product_configuration_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="product_configuration_view_form"/>
|
||||
<field name="act_window" ref="act_product_configuration_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_configuration"
|
||||
action="act_product_configuration_form"
|
||||
sequence="10"
|
||||
id="menu_product_configuration"
|
||||
icon="tryton-list"/>
|
||||
<record model="ir.ui.menu-res.group"
|
||||
id="menu_product_configuration_group_product_admin">
|
||||
<field name="menu" ref="menu_product_configuration"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_product_configuration">
|
||||
<field name="model" search="[('model', '=', 'product.configuration')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_product_configuration_product_admin">
|
||||
<field name="model" search="[('model', '=', 'product.configuration')]"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
<data noupdate="1">
|
||||
<record model="product.configuration.default_cost_price_method"
|
||||
id="cost_price_method">
|
||||
<field name="default_cost_price_method">fixed</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
@@ -0,0 +1,61 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
modules_url = 'https://docs.tryton.org/projects/modules-{module}/en/{series}/'
|
||||
trytond_url = 'https://docs.tryton.org/projects/server/en/{series}/'
|
||||
|
||||
|
||||
def get_info():
|
||||
import configparser
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
module_dir = os.path.dirname(os.path.dirname(__file__))
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read_file(open(os.path.join(module_dir, 'tryton.cfg')))
|
||||
info = dict(config.items('tryton'))
|
||||
|
||||
result = subprocess.run(
|
||||
[sys.executable, 'setup.py', '--name'],
|
||||
stdout=subprocess.PIPE, check=True, cwd=module_dir)
|
||||
info['name'] = result.stdout.decode('utf-8').strip()
|
||||
|
||||
result = subprocess.run(
|
||||
[sys.executable, 'setup.py', '--version'],
|
||||
stdout=subprocess.PIPE, check=True, cwd=module_dir)
|
||||
version = result.stdout.decode('utf-8').strip()
|
||||
if 'dev' in version:
|
||||
info['series'] = 'latest'
|
||||
else:
|
||||
info['series'] = '.'.join(version.split('.', 2)[:2])
|
||||
|
||||
for key in {'depends', 'extras_depend'}:
|
||||
info[key] = info.get(key, '').strip().splitlines()
|
||||
info['modules'] = set(info['depends'] + info['extras_depend'])
|
||||
info['modules'] -= {'ir', 'res'}
|
||||
|
||||
return info
|
||||
|
||||
|
||||
info = get_info()
|
||||
|
||||
master_doc = 'index'
|
||||
project = info['name']
|
||||
release = version = info['series']
|
||||
default_role = 'ref'
|
||||
highlight_language = 'none'
|
||||
extensions = [
|
||||
'sphinx.ext.intersphinx',
|
||||
]
|
||||
intersphinx_mapping = {
|
||||
'trytond': (trytond_url.format(series=version), None),
|
||||
}
|
||||
intersphinx_mapping.update({
|
||||
m: (modules_url.format(
|
||||
module=m.replace('_', '-'), series=version), None)
|
||||
for m in info['modules']
|
||||
})
|
||||
|
||||
del get_info, info, modules_url, trytond_url
|
||||
@@ -0,0 +1,41 @@
|
||||
*************
|
||||
Configuration
|
||||
*************
|
||||
|
||||
The *Product Module* uses some settings from the ``[product]`` section of the
|
||||
:doc:`configuration file <trytond:topics/configuration>`.
|
||||
|
||||
.. _config-product.price_decimal:
|
||||
|
||||
``price_decimal``
|
||||
=================
|
||||
|
||||
The ``price_decimal`` setting defines how many decimal places are used when
|
||||
storing `Products' <concept-product>` unit prices.
|
||||
|
||||
.. warning::
|
||||
|
||||
Once the database has been created you cannot reduce this value, doing so
|
||||
will break your system's data integrity.
|
||||
Also if you want to increase this value you must also manually change it in
|
||||
the database `IR Configuration <trytond:model-ir.configuration>`.
|
||||
|
||||
The default value is: ``4``
|
||||
|
||||
.. _config-product.uom_conversion_decimal:
|
||||
|
||||
``uom_conversion_decimal``
|
||||
==========================
|
||||
|
||||
The value from the ``uom_conversion_decimal`` setting defines the number of
|
||||
decimal places used when storing the conversion rates and factors between
|
||||
`Units of Measure <model-product.uom>`.
|
||||
|
||||
.. warning::
|
||||
|
||||
Once the database has been created you cannot reduce this value, doing so
|
||||
will break your system's data integrity.
|
||||
Also if you want to increase this value you must also manually change it in
|
||||
the database `IR Configuration <trytond:model-ir.configuration>`.
|
||||
|
||||
The default value is: ``12``
|
||||
@@ -0,0 +1,168 @@
|
||||
******
|
||||
Design
|
||||
******
|
||||
|
||||
The *Product Module* introduces the following concepts:
|
||||
|
||||
.. _concept-product:
|
||||
|
||||
Product
|
||||
=======
|
||||
|
||||
The *Product* is the main concept introduced by the *Product Module*.
|
||||
It represents an item or service that Tryton stores information about, and is
|
||||
often something that gets bought, sold, or produced.
|
||||
|
||||
In Tryton product definitions are made up from two parts, the
|
||||
`Product Template <model-product.template>` and the
|
||||
`Product Variant <model-product.product>`.
|
||||
Both of these are sometimes referred to as the *Product*, depending on the
|
||||
context.
|
||||
|
||||
Each product template can have many different product variants, but each
|
||||
product variant is based exclusively on one product template.
|
||||
|
||||
A product's full code is made up from a prefix code which is defined on the
|
||||
product template and a suffix code which is specified on the product variant.
|
||||
The full product code can then be used as the product's |SKU|_.
|
||||
|
||||
.. |SKU| replace:: :abbr:`SKU (Stock Keeping Unit)`
|
||||
.. _SKU: https://en.wikipedia.org/wiki/Stock_keeping_unit
|
||||
|
||||
.. _model-product.template:
|
||||
|
||||
Product Template
|
||||
----------------
|
||||
|
||||
The *Product Template* defines the set of properties common to a group of
|
||||
`Product Variants <model-product.product>`.
|
||||
These properties include things like its list price, its type, its code, what
|
||||
`Categories <model-product.category>` it is in, and what
|
||||
`Units of Measure <model-product.uom>` are used by default for quantities of
|
||||
the product.
|
||||
|
||||
.. seealso::
|
||||
|
||||
A list of product templates can be found by opening the main menu item:
|
||||
|
||||
|Product --> Products|__
|
||||
|
||||
.. |Product --> Products| replace:: :menuselection:`Product --> Products`
|
||||
__ https://demo.tryton.org/model/product.template
|
||||
|
||||
.. _model-product.product:
|
||||
|
||||
Product Variant
|
||||
---------------
|
||||
|
||||
Each *Product Variant* inherits many of its properties from its
|
||||
`Product Template <model-product.template>`.
|
||||
It does, however, have some properties that are specific to each variant
|
||||
such as the description, cost price, and suffix code which is important to
|
||||
distinguish between different variants.
|
||||
|
||||
The identifiers that are used to refer to a product are also specific to a
|
||||
product variant.
|
||||
A product identifier is made up from a type and a code.
|
||||
|
||||
Some of the supported types of identifier include:
|
||||
|
||||
* International Article Number (EAN)
|
||||
* International Standard Audiovisual Number (ISAN)
|
||||
* International Standard Book Number (ISBN)
|
||||
* International Standard Identifier for Libraries (ISIL)
|
||||
* International Securities Identification Number (ISIN)
|
||||
* International Standard Music Number (ISMN)
|
||||
|
||||
.. seealso::
|
||||
|
||||
A list of all the product variants is available from the main menu item:
|
||||
|
||||
|Product --> Products --> Variants|__
|
||||
|
||||
.. |Product --> Products --> Variants| replace:: :menuselection:`Product --> Products --> Variants`
|
||||
__ https://demo.tryton.org/model/product.product
|
||||
|
||||
.. _model-product.category:
|
||||
|
||||
Category
|
||||
========
|
||||
|
||||
The product *Category* concept provides a flexible way of grouping
|
||||
`Product Templates <model-product.template>` together.
|
||||
The categories can be structured by giving them a parent category and some
|
||||
sub-categories.
|
||||
|
||||
.. seealso::
|
||||
|
||||
A list of product categories can be found by opening the main menu item:
|
||||
|
||||
|Product --> Categories|__
|
||||
|
||||
.. |Product --> Categories| replace:: :menuselection:`Product --> Categories`
|
||||
__ https://demo.tryton.org/model/product.category
|
||||
|
||||
.. _model-product.uom:
|
||||
|
||||
Unit of Measure
|
||||
===============
|
||||
|
||||
The *Unit of Measure* concept provides the units by which the quantity of a
|
||||
`Product <concept-product>` is measured.
|
||||
These are things like, meter, mile, kilogram, hour, gallon, and so on.
|
||||
|
||||
Each unit of measure belongs to a
|
||||
`Unit of Measure Category <model-product.uom.category>`.
|
||||
|
||||
Quantities can be converted to a different unit of measure from the same
|
||||
category using the unit of measures' rates or factors.
|
||||
It is also possible to specify the rounding precision and number of decimal
|
||||
digits used when rounding or displaying values from the unit of measure.
|
||||
|
||||
.. seealso::
|
||||
|
||||
The units of measure can be found using the main menu item:
|
||||
|
||||
|Product --> Units of Measure|__
|
||||
|
||||
.. |Product --> Units of Measure| replace:: :menuselection:`Product --> Units of Measure`
|
||||
__ https://demo.tryton.org/model/product.uom
|
||||
|
||||
.. _model-product.uom.category:
|
||||
|
||||
Unit of Measure Category
|
||||
========================
|
||||
|
||||
A *Unit of Measure Category* is used to group together
|
||||
`Units of Measure <model-product.uom>` that are used to measure the same type
|
||||
of property.
|
||||
These are things like length, weight, time or volume.
|
||||
|
||||
.. seealso::
|
||||
|
||||
The units of measure can be found using the main menu item:
|
||||
|
||||
|Product --> Units of Measure --> Categories|__
|
||||
|
||||
.. |Product --> Units of Measure --> Categories| replace:: :menuselection:`Product --> Units of Measure --> Categories`
|
||||
__ https://demo.tryton.org/model/product.uom.category
|
||||
|
||||
.. _model-product.configuration:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
The product *Configuration* contains the settings which are used to configure
|
||||
the behaviour and default values for things associated with products.
|
||||
|
||||
There are configuration options for the sequences to use to automatically
|
||||
generate codes for `Products <concept-product>`.
|
||||
|
||||
.. seealso::
|
||||
|
||||
The product configuration can be found using the main menu item:
|
||||
|
||||
|Product --> Configuration --> Product Configuration|__
|
||||
|
||||
.. |Product --> Configuration --> Product Configuration| replace:: :menuselection:`Product --> Configuration --> Product Configuration`
|
||||
__ https://demo.tryton.org/model/product.configuration/1
|
||||
@@ -0,0 +1,15 @@
|
||||
##############
|
||||
Product Module
|
||||
##############
|
||||
|
||||
The *Product Module* defines the essential concepts needed to describe
|
||||
products in Tryton.
|
||||
It lets you define the basic properties of products and their variants,
|
||||
and allows you to record how the quantity of a product is measured.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
usage
|
||||
configuration
|
||||
design
|
||||
@@ -0,0 +1,74 @@
|
||||
*****
|
||||
Usage
|
||||
*****
|
||||
|
||||
The items found under the [:menuselection:`Product`] main menu item allow you
|
||||
to view and manage the products on your system.
|
||||
|
||||
.. _Using product templates and variants:
|
||||
|
||||
Using product templates and variants
|
||||
====================================
|
||||
|
||||
Tryton makes it easy to create `Products <model-product.template>` which have
|
||||
one or more slightly different `Variants <model-product.product>`.
|
||||
|
||||
A simple example of where you could use this is in a company that supplies
|
||||
clothes.
|
||||
Each type of shirt may come in a range of different sizes, but most of the
|
||||
properties of the shirt, such as the name, unit of measurement, categories,
|
||||
and so on, would be the same.
|
||||
So in this case you would create a single *Product* to represent the shirt,
|
||||
and a *Variant* for each of the different sizes.
|
||||
Structuring your products like this can help you manage and update them.
|
||||
|
||||
.. tip::
|
||||
|
||||
You may find that your products are not suited to being structured in this
|
||||
way.
|
||||
If so, don't worry, when you create a new *Product* from the
|
||||
[:menuselection:`Product --> Products`] menu item a single variant is
|
||||
automatically created for you and displayed as part of the product.
|
||||
|
||||
.. _Categorising products:
|
||||
|
||||
Categorising products
|
||||
=====================
|
||||
|
||||
It can be a good idea to organise your `Products <concept-product>` into
|
||||
groups.
|
||||
This makes it much easier to find and manage them effectively, especially if
|
||||
you have a lot of products on your system.
|
||||
|
||||
The product `Categories <model-product.category>` are designed for this
|
||||
purpose.
|
||||
You can create categories with any name you want, and then add the appropriate
|
||||
categories to each product.
|
||||
Each product can belong to as many, or as few, categories as required.
|
||||
The categories can also be organised into a
|
||||
structure, with each category having a parent category and some subcategories.
|
||||
This can help you classify your products more finely.
|
||||
|
||||
For example, a clothes supplier may use these categories::
|
||||
|
||||
Accessories
|
||||
Clothes
|
||||
Shirts
|
||||
Short sleeves
|
||||
Long sleeves
|
||||
Jumpers
|
||||
Range
|
||||
Spring Summer
|
||||
Autumn Winter
|
||||
Christmas
|
||||
|
||||
Based on these categories, you may decide that a particular lightweight shirt
|
||||
belongs in the ``Clothes / Shirts / Short sleeves`` and
|
||||
``Range / Spring Summer`` categories.
|
||||
|
||||
.. tip::
|
||||
|
||||
To get a list of all the products in a category first open the
|
||||
[:menuselection:`Product --> Categories`] menu item.
|
||||
Then when you open one of the categories listed here you will get a list
|
||||
of all the products in that category.
|
||||
@@ -0,0 +1,20 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.model.exceptions import ValidationError
|
||||
|
||||
|
||||
class TemplateValidationError(ValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class ProductValidationError(TemplateValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class UOMValidationError(ValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class InvalidIdentifierCode(ValidationError):
|
||||
pass
|
||||
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<path d="M13 13v8h8v-8h-8zM3 21h8v-8H3v8zM3 3v8h8V3H3zm13.66-1.31L11 7.34 16.66 13l5.66-5.66-5.66-5.65z"/>
|
||||
<path d="M0 0h24v24H0z" fill="none"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 244 B |
@@ -0,0 +1,24 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.config import config
|
||||
from trytond.model import fields
|
||||
from trytond.pool import PoolMeta
|
||||
|
||||
price_decimal = config.getint('product', 'price_decimal', default=4)
|
||||
|
||||
|
||||
class Configuration(metaclass=PoolMeta):
|
||||
__name__ = 'ir.configuration'
|
||||
product_price_decimal = fields.Integer("Product Price Decimal")
|
||||
|
||||
@classmethod
|
||||
def default_product_price_decimal(cls):
|
||||
return price_decimal
|
||||
|
||||
def check(self):
|
||||
super().check()
|
||||
if self.product_price_decimal != price_decimal:
|
||||
raise ValueError(
|
||||
"The price_decimal %s in [product] configuration section "
|
||||
"is different from the value %s in 'ir.configuration'." % (
|
||||
price_decimal, self.product_price_decimal))
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,997 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr "Decimals del preu de cost del producte"
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Fills"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Pare"
|
||||
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "Productes"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Mètode de cost per defecte"
|
||||
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "Seqüencia de la variant"
|
||||
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "Seqüencia del producte"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Mètode de cost per defecte"
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Preu de cost"
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "Producte"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Mètode de cost"
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "Plantilla"
|
||||
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "Codi"
|
||||
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "Producte"
|
||||
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipus"
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Preu de venda"
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "Plantilla"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "Codi"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "Codi només lectura"
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consumible"
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Preu de cost"
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Mètode de cost"
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Mètodes de cost"
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Preu de cost"
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr "Preu de cost"
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UdM per defecte"
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Categoria UdM per defecte"
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "Dígits de l'unitat per defecte"
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descripció"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr "Identificadors"
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Preu de venda"
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr "Preu de venda"
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Preus de venda"
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr "Codi prefix"
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr "Codi sufix"
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr "Plantilla de producte"
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipus"
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "Codi"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "Code només lectura"
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consumible"
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Preu de cost"
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Mètode de cost"
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Mètodes de cost"
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UdM per defecte"
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Categoria UdM per defecte"
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "Dígits de l'unitat per defecte"
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Preu de venda"
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Preus de venda"
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "Variants"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipus"
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "Plantilla"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "Plantilla"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr "Decimals a mostrar"
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr "Factor"
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr "Conversió"
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr "Precisió d'arrodoniment"
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr "Símbol"
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unitats de mesura"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr "Utilitzat per afegir una estructura per sota la categoria."
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr "Utilitzat per afegir una estructura per sobre la categoria."
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "El mètode de cost per defecte per als nous productes."
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr "Utilitzada per generar la part final del codi del producte."
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr "Utilitzada per generar la part inicial del codi del producte."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "El mètode de cost per defecte per als nous productes."
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr "El product que s'identifica pel codi."
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"Les categories a les que pertany el producte.\n"
|
||||
"Utilitzat per agrupar productes similars."
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr "El identificador únic de la variant."
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
"Marqueu per permetre l'assignació de moviments d'existències independentment"
|
||||
" del nivell d'existències."
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
"El import que costa comprar o fabricar la variant, o dur a terme el servei."
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "El mètode utilitzat per calcular el preu de cost."
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"La unitat de mesura per defecte del producte.\n"
|
||||
"S'utilitza internament per a calcular els nivells d'existències dels bens i actius."
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr "Altres identificadors associats a la variant."
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "El preu al que normalment es ven el producte."
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr "El identificador únic del producte (aka SKU)."
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
"El producte que defineix les propietats comunes que s'hereten a la variant."
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"Les categories a les que pertany el producte.\n"
|
||||
"Utilitzat per agrupar productes similars."
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
"Marqueu per permetre la reserva de moviments d'existències independentment "
|
||||
"del nivell d'existències."
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
"El import que costa comprar o fabricar el producte, o dur a terme el servei."
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "El mètode utilitzat per calcular el preu de cost."
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"La unitat de mesura per defecte del producte.\n"
|
||||
"S'utilitza internament per a calcular els nivells d'existències dels bens i actius."
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "El preu al que normalment es ven el producte."
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr "Les diferents variants que té el producte."
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
"La categoria que conté la unitat de mesura.\n"
|
||||
"Es pot realitzar conversions entre diferents unitats de mesura si pertanyen a la mateixa categoria."
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr "El nombre de dígits a mostrar desprès del separador decimal."
|
||||
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
"El coeficient de la fórmula:\n"
|
||||
"coeficient (unitat base) = 1 (aquesta unitat)"
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
"El coeficient de la fórmula:\n"
|
||||
"1 (unitat base) = coeficient (aquesta unitat)"
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr "La pressió utilitzada per arrodonir els valors."
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr "El símbol que representa la unitat de mesura."
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "Afegeix productes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Arbre de categories"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuració"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "Variants"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "Variants"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "Productes per categoria"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "Productes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unitats de mesura"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr "El \"%(type)s\" \"%(code)s\" del producte \"%(product)s\" no és vàlid."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr "El codi dels productes actius ha de ser únic."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr "El factor i el rati de la Udm \"%(uom)s\" són incompatibles."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr "No podeu modificar la categoria de la UdM \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr "No podeu modificar el factor de la UdM \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
"Si la UdM encara no s'ha fet servir es podrà eliminiar. Si noh ha de ser "
|
||||
"desactivada i en podeu crear una de nova."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr "No podeu modificar el rati de la UdM \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr "El rati i el factor no poden ser els dos igual a zero."
|
||||
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "Afegeix productes"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "Variant"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "Producte"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Arbre de categories"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuració"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "Productes"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "Variants"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuració"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr "Informes"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "Productes"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unitats de mesura"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "Categoria de producte"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "Configuració de productes"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr "Configuració del mètode de cost per defecte del producte"
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr "Preu de cost del producte"
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr "Mètode de cost per producte"
|
||||
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "Identificador de producte"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr "Preu de venda del producte"
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr "Variant de producte"
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr "Plantilla de producte"
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr "Plantilla - Categoria"
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr "Plantilla - Totes les categories"
|
||||
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Unitat de mesura"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "Àrea"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "Quirat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "Centímetre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "Centímetre cúbic"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "Peu cúbic"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "Polzada cúbica"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "Metre cúbic"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "Dia"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "Peu"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "Galó"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "Gram"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "Hectàrea"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "Hora"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "Polzada"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "Quilogram"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "Quilòmetre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "Litre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "Metre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "Milla"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "Mil·límetre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "Minut"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "Unça"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "Lliura"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "Segon"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "Centímetre quadrat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "Peu quadrat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "Polzada quadrada"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "Metre quadrat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "Iarda quadrada"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "Unitat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "Dia de treball"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "Iarda"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "peu³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "pul³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "peu"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "h"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "pul"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "peu²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "in²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "u"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "wd"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "Categoria d'unitat de mesura"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "Longitud"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "Superfície"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "Temps"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "Unitats"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "Volum"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "Pes"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "Administració de productes"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr "Número d'article internacional (EAN)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr "Número Internacional d'itenficador de Valors (ISIN)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr "Número estàndard Internacional del Audiovisual (ISAN)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr "Número estàndard Internacional de Llibres (ISBN)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr "Número estàndard Internacional del Lllibreries (ISIL)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr "Número estàndard Internacional de Música (ISMN)"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Mitjana"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fix"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Actius"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Béns"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "Serveis"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Mitjana"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fix"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Actius"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Béns"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "Serveis"
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "Fills"
|
||||
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "Seqüències"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,997 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr "Decimales del precio del producto"
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Hijos"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Padre"
|
||||
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "Productos"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Método de coste por defecto"
|
||||
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "Secuencia de la variante"
|
||||
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "Secuencia del producto"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Método de coste por defecto"
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Precio de coste"
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "Producto"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Método de costo"
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "Plantilla"
|
||||
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "Producto"
|
||||
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Precio de venta"
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "Plantilla"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorías"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorías"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "Código solo lectura"
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consumible"
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Precio de coste"
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Método de coste"
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Métodos de coste"
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Precio de coste"
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr "Precio de coste"
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UdM por defecto"
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Categoria UdM por defecto"
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "Decimales de unidad por defecto"
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr "Identificadores"
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Precio de venta"
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr "Precio de venta"
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Precios de venta"
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr "Código prefijo"
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr "Código sufijo"
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr "Plantilla de producto"
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorías"
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorías"
|
||||
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "Código solo lectura"
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consumible"
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Precio de coste"
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Método de coste"
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Métodos de coste"
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UdM por defecto"
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Categoria UdM por defecto"
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "Decimales de unidad por defecto"
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Precio de venta"
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Precios de venta"
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categoría"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "Plantilla"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categoría"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "Plantilla"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categoría"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr "Decimales a mostrar"
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr "Factor"
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr "Conversión"
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr "Precisión de redondeo"
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr "Símbolo"
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unidades de medida"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr "Utilizado para añadir una estructura por debajo de la categoría."
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr "Utilizado para añadir una estructura por encima de la categoría."
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "El método de coste por defecto para los nuevos productos."
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr "Utilizado para generar la parte final del código del producto."
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr "Utilizado para generar la parte inicial del código del producto."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "El método de coste por defecto para los nuevos productos."
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr "El producto que se identifica por el código."
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"Las categorías a las que pertenece el producto.\n"
|
||||
"Utilizado para agrupar productos similares."
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr "El identificador único de la variante."
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
"Marcar para permitir la asignación de movimientos de existencias "
|
||||
"independientemente del nivel de existencias."
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
"El importe que cuesta comprar o fabricar la variante, o dar el servicio."
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "El método utilizado para calcular el precio de coste."
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"La unidad de medida por defecto del prodcuto.\n"
|
||||
"Se utiliza internamente para calcular los niveles de existencias de los bienes y los activos."
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr "Otros identificadores associados a la variante."
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "El precio al que normalmente se vende el producto."
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr "El identificador único del producto (aka SKU)."
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
"El producto que define las propiedades comunes que se heredan a la variante."
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"Las categorías a las que pertenece el producto.\n"
|
||||
"Utilizado para agrupar productos similares."
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
"Marcar para permitir la reserva de movimientos de existencias "
|
||||
"independientemente del nivel de existencias."
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
"El importe que cuesta comprar o fabricar el producto, o dar el servicio."
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "El método utilizado para calcular el precio de coste."
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"La unidad de medida por defecto del prodcuto.\n"
|
||||
"Se utiliza internamente para calcular los niveles de existencias de los bienes y los activos."
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "El precio al que normalmente se vende el producto."
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr "Las diferentes variantes que tiene el producto."
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
"La categoría que contiene la unidad de medida.\n"
|
||||
"Se puede realizar conversiones entre distintas unidades de medida si pertenecen a la misma categoría."
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr "El número de dígitos a mostrar después del separador decimal."
|
||||
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
"El coeficiente de la fórmula:\n"
|
||||
"coeficiente (unidad base) = 1 (esta unidad)"
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
"El coeficiente de la fórmula:\n"
|
||||
"1 (unidad base) = coeficiente (esta unidad)"
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr "La presición utilizada para redondear los valores."
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr "El símbolo que representa la unidad de medida."
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categorías"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "Añadir productos"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Árbol de categorías"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuración"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "Productos por categoría"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "Productos"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categorías"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unidades de medida"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr "El \"%(type)s\" \"%(code)s\" del producto \"%(product)s\" no es valido."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr "El código de los productos activos debe ser único."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr "El factor y el ratio de la UdM \"%(uom)s\" son incompatibles."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr "No podéis modificar la categoría de la UdM \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr "No podéis modificar el factor de la UdM \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
"Si la UdM aún no esta en uso podrá ser eliminada. Sinó debe ser desactivada "
|
||||
"y podéis crear una de nueva."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr "No podéis modificar el ratio de la UdM \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr "El ratio i el factor no pueden ser a la vez zero."
|
||||
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "Añadir productos"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "Variante"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "Producto"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categorías"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Árbol de categorías"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuración"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "Productos"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuración"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr "Informes"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "Productos"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categorías"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unidades de medida"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "Categoría de producto"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "Configuración de productos"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr "Configuración del método de coste por defecto del producto"
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr "Precio de coste del producto"
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr "Método de coste por producto"
|
||||
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "Identificador de producto"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr "Precio de venta del producto"
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr "Variante de producto"
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr "Plantilla de producto"
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr "Plantilla - Categoría"
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr "Plantilla - Todas las categorías"
|
||||
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Unidad de medida"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "Área"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "Quilate"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "Centímetro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "Centímetro cúbico"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "Pie cúbico"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "Pulgada cúbica"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "Metro cúbico"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "Día"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "Pie"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "Galón"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "Gramo"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "Hectárea"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "Hora"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "Pulgada"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "Kilogramo"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "Kilómetro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "Litro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "Metro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "Milla"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "Milímetro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "Minuto"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "Onza"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "Libra"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "Segundo"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "Centímetro cuadrado"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "Pie cuadrado"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "Pulgada cuadrada"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "Metro cuadrado"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "Yarda cuadrada"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "Unidad"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "Día de trabajo"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "Yarda"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "pie³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "in³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "pie"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "h"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "in"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "pie²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "in²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "u"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "wd"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "Categoría de la Unidad de medida"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "Longitud"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "Superficie"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "Tiempo"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "Unidades"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "Volumen"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "Peso"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "Administración de productos"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr "Número de articulo internacional (EAN)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr "Numero Internacional de Identificación de Valores (ISIN)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr "Número Estándar Internacional de Audiovisual (ISAN)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr "Número Estándar Internacional de Libros (ISBN)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr "Número Estándar Internacional de Librerias (ISIL)"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr "Número Estándar Internacional de Música (ISMN)"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Promedio"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fijo"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Activos"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Bienes"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "Servicios"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Promedio"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fijo"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Activos"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Bienes"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "Servicios"
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "Hijos"
|
||||
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "Secuencias"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,995 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr "Toote omahind"
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Alam"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Ülem"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "Tooted"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Vaikimisi kulumeetod"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "Kauba mall"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "Kauba mall"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Vaikimisi kulumeetod"
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Ettevõte"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Ostuhind"
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "Toode"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "Ettevõte"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Omahinna meetod"
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "Mall"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "Kood"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "Toode"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tüüp"
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Ettevõte"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Müügihind"
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "Mall"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "Kood"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Tarvikud"
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Ostuhind"
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Omahinna meetod"
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Omahinna meetod"
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Ostuhind"
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr "Ostuhinnad"
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "Vaikimisi ühik"
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Vaikimisi kategooria ühik"
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "Kirjeldus"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Müügihind"
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr "Müügihind"
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Müügihinnad"
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr "Kauba mall"
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tüüp"
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "Kood"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Tarvikud"
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Ostuhind"
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Omahinna meetod"
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Omahinna meetod"
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "Vaikimisi ühik"
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Vaikimisi kategooria ühik"
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Müügihind"
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Müügihinnad"
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "Variandid"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tüüp"
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "Kategooria"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "Mall"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "Kategooria"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "Mall"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "Kategooria"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr "Näita numbriväärtusi"
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr "Faktor"
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr "Kurss"
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr "Ümardamise täpsus"
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr "Sümbol"
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Mõõtühik"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "Tooted"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "Seadistus"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "Variandid"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "Variandid"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "Tooted kategooria lõikes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "Tooted"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Mõõtühik"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "Tooted"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "Variandid"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "Toode"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Seadistus"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "Toode"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "Variandid"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Seadistus"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "Tooted"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Mõõtühik"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "Toote kategooria"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "Toote seadistus"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr "Toote seadistus vaikimisi omahinna meetod"
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr "Toote omahind"
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr "Toote omahinna meetod"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "Kauba mall"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr "Toote müügihind"
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr "Toote variant"
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr "Kauba mall"
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr "Mall - Kategooria"
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr "Mall - kõik kategooriad"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Mõõtühik"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "Aar"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "Karaat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "sentimeeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "Kuupmeeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "Kuupjalg"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "Kuuptoll"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "Kuupmeeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "Päev"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "Jalg"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "Gallon"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "Gramm"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "Hektar"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "Tund"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "Toll"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "Kilogramm"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "Kilomeeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "Liiter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "Meeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "Miil"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "Millimeeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "Minut"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "Unts"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "Nael"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "Sekund"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "Ruutsentimeeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "Ruutjalg"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "Ruuttoll"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "Ruutmeeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "Ruutjard"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "Ühik"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "Tööpäev"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "Jard"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "ft³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "in³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "ft"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "h"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "in"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "ft²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "in²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "u"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "wd"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "Mõõtühik"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "Pikkus"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "Pindala"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "Aeg"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "Ühikud"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "Maht"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "Kaal"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "Toote administreerimine"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Keskmine"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fikseeritud"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Põhivara"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Kaup"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "Teenus"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Keskmine"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fikseeritud"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Põhivarad"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Kaubad"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "Teenus"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "Alam"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "Kauba mall"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "Üldine"
|
||||
@@ -0,0 +1,999 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr "ارزش بها محصول"
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "زیر مجموعه"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "نام"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "منبع"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "محصولات"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "روش هزینه پیش فرض"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "الگوی محصول"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "الگوی محصول"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "روش هزینه پیش فرض"
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "شرکت"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "ارزش بها"
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "محصول"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "شرکت"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "روش ارزش بها"
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "الگو"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "کد"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "محصول"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr "نوع"
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "شرکت"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "لیست قیمت"
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "الگو"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "کد"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "مصرفی"
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "ارزش بها"
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "روش ارزش بها"
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "روش های ارزش بها"
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr "ارزش بها"
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr "قیمت های هزینه"
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "واحد اندازه گیری پیش فرض"
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "زیرمجموعه واحد اندازه گیری پیش فرض"
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "شرح"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "لیست قیمت"
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr "لیست قیمت"
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "لیست قیمت ها"
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "نام"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr "الگوی محصول"
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr "نوع"
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "کد"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "مصرفی"
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "ارزش بها"
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "روش ارزش بها"
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "روش های ارزش بها"
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "واحد اندازه گیری پیش فرض"
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "زیرمجموعه واحد اندازه گیری پیش فرض"
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "لیست قیمت"
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "لیست قیمت ها"
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "نام"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "متغیرها"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr "نوع"
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "دستهبندی"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "الگو"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "دستهبندی"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "الگو"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "دستهبندی"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr "نمایش ارقام"
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr "عامل"
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "نام"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr "نرخ"
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr "گرد کردن دقیق"
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr "نماد"
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "نام"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "واحدهای اندازه گیری"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
"ضریب برای فرمول: \n"
|
||||
"coef (واحد پایه) = 1 (این واحد)"
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
"ضریب برای فرمول:\n"
|
||||
"1 (واحد پایه) = coef (این واحد)"
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "محصولات"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "پیکربندی"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "متغیرها"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "متغیرها"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "محصول بوسیله زیرمجموعه"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "محصولات"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "واحدهای اندازه گیری"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "محصولات"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "متغیرها"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "محصول"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "پیکربندی"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "محصول"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "متغیرها"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "پیکربندی"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "محصولات"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "دسته بندی ها"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "واحدهای اندازه گیری"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "زیرمجموعه محصولات"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "پیکربندی محصول"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr "پیکربندی محصول روش ارزش بها پیش فرض"
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr "ارزش بها محصول"
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr "روش ارزش بها محصول"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "الگوی محصول"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr "لیست قیمت محصول"
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr "تنوع محصول"
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr "الگوی محصول"
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr "الگوی - زیرمجموعه"
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr "الگوی - تمام زیرمجموعه"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "واحد اندازه گیری"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "هست"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "عیار"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "سانتی متر"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "سانتی متر مکعب"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "فوت مکعب"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "اینچ مکعب"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "متر مکعب"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "روز"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "فوت"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "گالن"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "گرم"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "هکتار"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "ساعت"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "اینچ"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "کیلوگرم"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "کیلومتر"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "لیتر"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "متر"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "مایل"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "میلیمتر"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "دقیقه"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "اونس"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "پوند"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "ثانیه"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "سانتی متر مربع"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "فوت مربع"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "اینچ مربع"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "متر مربع"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "یارد مربع"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "واحد"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "روز کاری"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "یارد"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "ft³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "in³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "ft"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "h"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "in"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "ft²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "in²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "u"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "wd"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "واحد اندازه گیری"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "طول"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "سطح"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "زمان"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "واحدها"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "حجم/اندازه"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "وزن"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "مدیریت محصول"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "متوسط"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "درست شد"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "دارایی های"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "کالاها"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "خدمات"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "متوسط"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "درست شد"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "دارایی های"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "کالاها"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "خدمات"
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "زیر مجموعه"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "الگوی محصول"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "عمومی"
|
||||
@@ -0,0 +1,998 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "Products"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "Product by Category"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "Product by Category"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "Product"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "Product"
|
||||
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "Variants"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Units of Measure"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "Products"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "Variants"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "Variants"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "Product by Category"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "Products"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Units of Measure"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "Products"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "Variants"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "Product"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "Product"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "Variants"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "Products"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categories"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Units of Measure"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "Product by Category"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "Product Configuration"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "Product by Category"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Units of Measure"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "Are"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "Carat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "centimeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "Cubic centimeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "Cubic foot"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "Cubic inch"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "Cubic meter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "Day"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "Foot"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "Gallon"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "Gram"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "Hectare"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "Hour"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "Inch"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "Kilogram"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "Kilometer"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "Liter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "Meter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "Mile"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "Millimeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "Minute"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "Ounce"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "Pound"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "Second"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "Square centimeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "Square foot"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "Square inch"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "Square meter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "Square yard"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "Unit"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "Work Day"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "Yard"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "ft³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "in³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "ft"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "h"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "in"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "ft²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "in²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "u"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "wd"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "Units of Measure"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "Length"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "Surface"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "Time"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "Units"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "Weight"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "Product Administration"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "Product by Category"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,999 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr "Décimal de prix de revient de produit"
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Enfants"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Parent"
|
||||
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "Produits"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Méthode de coût par défaut"
|
||||
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "Séquence de variantes"
|
||||
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "Séquence de produit"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Méthode de coût par défaut"
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Prix de revient"
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produit"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Méthode de prix de revient"
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "Modèle"
|
||||
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "Code"
|
||||
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produit"
|
||||
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Prix listé"
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "Modèle"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "Code"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "Code en lecture seule"
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consommable"
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Prix de revient"
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Méthode de prix de revient"
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Méthodes de prix de revient"
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Prix de revient"
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr "Prix de revient"
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UDM par défaut"
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Catégorie d'UDM par défaut"
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "Décimales d'unité par défaut"
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr "Identifiants"
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Prix listé"
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr "Prix listé"
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Prix listés"
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr "Code préfixe"
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr "Code suffixe"
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr "Modèle produit"
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "Code"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "Code en lecture seule"
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consommable"
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Prix de revient"
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Méthode de prix de revient"
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Méthodes de prix de revient"
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UDM par défaut"
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Catégorie d'UDM par défaut"
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "Décimales d'unité par défaut"
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Prix listé"
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Prix listés"
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "Catégorie"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "Modèle"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "Catégorie"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "Modèle"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "Catégorie"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr "Décimales affichées"
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr "Facteur"
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr "Taux"
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr "Précision d'arrondi"
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr "Symbole"
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unités de mesure"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr "Utilisé pour ajouter une structure sous la catégorie."
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr "Utilisé pour ajouter une structure au-dessus de la catégorie."
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "La méthode du prix de revient par défaut pour les nouveaux produits."
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr "Utilisé pour générer la dernière partie du code produit."
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr "Utilisé pour générer la première partie du code produit."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "La méthode du prix de revient par défaut pour les nouveaux produits."
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr "Le produit identifié par le code."
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"Les catégories dans lesquelles se trouve le produit.\n"
|
||||
"Utilisé pour regrouper des produits similaires."
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr "Un identifiant unique pour la variante."
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
"Cochez cette case pour permettre l'attribution des mouvements de stock quel "
|
||||
"que soit le niveau de stock."
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Le montant qu'il coûte pour acheter ou fabriquer la variante, ou exécuter le"
|
||||
" service."
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "La méthode utilisée pour calculer le prix de revient."
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"L'unité de mesure standard pour le produit.\n"
|
||||
"Utilisé en interne lors du calcul des niveaux de stock de biens et d'actifs."
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr "Autres identifiants associés à la variante."
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "Le prix standard auquel le produit est vendu."
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr "L'identifiant unique du produit (alias UGS)."
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
"Le produit qui définit les propriétés communes héritées par la variante."
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"Les catégories dans lesquelles se trouve le produit.\n"
|
||||
"Utilisé pour regrouper des produits similaires."
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
"Cochez cette case pour permettre l'attribution des mouvements de stock quel "
|
||||
"que soit le niveau de stock."
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Le montant qu'il coûte pour acheter ou fabriquer la variante, ou exécuter le"
|
||||
" service."
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "La méthode utilisée pour calculer le prix de revient."
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"L'unité de mesure standard pour le produit.\n"
|
||||
"Utilisé en interne lors du calcul des niveaux de stock de biens et d'actifs."
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "Le prix standard auquel le produit est vendu."
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr "Les différentes variantes du produit."
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
"La catégorie contenant l'unité de mesure.\n"
|
||||
"Les conversions entre différentes unités de mesure peuvent être effectuées si elles appartiennent à la même catégorie."
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr "Le nombre de chiffres à afficher après le séparateur de décimal."
|
||||
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
"Le coefficient de la formule :\n"
|
||||
"coefficient (unité de base) = 1 (cette unité)"
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
"Le coefficient pour la formule :\n"
|
||||
"1 (unité de base) = coef (cette unité)"
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr "La précision à laquelle les valeurs sont arrondies."
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr "Le symbole qui représente l'unité de mesure."
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "Ajouter des produits"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "Produit par catégorie"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "Produits"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unités de mesure"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr "Le %(type)s « %(code)s » du produit « %(product)s » n'est pas valide."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr "Le code des produits actifs doit être unique."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr "Facteur et taux incompatibles sur l’UDM « %(uom)s »."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr "Vous ne pouvez pas modifier la catégorie d’UDM « %(uom)s »."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr "Vous ne pouvez pas modifier le facteur de l'UDM « %(uom)s »."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
"Si le UDM n'est toujours pas utilisé, vous pouvez la supprimer, sinon vous "
|
||||
"pouvez la désactiver et en créer une nouvelle."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr "Vous ne pouvez pas modifier le taux de l'UDM « %(uom)s »."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr "Le taux et le facteur ne peuvent pas être tous deux égaux à zéro."
|
||||
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "Ajouter des produits"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "Variante"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "Produit"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "Produit"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr "Rapports"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "Produits"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unités de mesure"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "Catégorie de produit"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "Configuration produit"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr "Configuration produit de la méthode de coût par défaut"
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr "Produit Prix de revient"
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr "Méthode de prix de revient de produit"
|
||||
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "Identifiant de produit"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr "Produit Prix listé"
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr "Variante produit"
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr "Modèle produit"
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr "Modèle - Catégorie"
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr "Modèle - Catégorie Toutes"
|
||||
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Unité de mesure"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "Are"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "Carat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "centimètre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "Centimètre cube"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "Pied cubique"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "Pouce cubique"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "Mètre cube"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "Jour"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "Pied"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "Gallon"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "Gramme"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "Hectare"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "Heure"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "Pouce"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "Kilogramme"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "Kilomètre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "Litre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "Mètre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "Mille"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "Millimètre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "Minute"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "Once"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "Livre"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "Seconde"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "Centimètre carré"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "Pied carré"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "Pouce carré"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "Mètre carré"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "Yard carré"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "Unité"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "Jour de travail"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "Yard"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "ft³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "in³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "j"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "ft"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "h"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "po"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "pi²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "po²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "u"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "jt"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "Catégorie d'unité de mesure"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "Longueur"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "Surface"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "Heure"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "Unités"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "Poids"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "Administration des produits"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr "Numéro d'article international"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr "Numéro international d'identification de titres"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr "Numéro audiovisuel international standard"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr "Numéro international normalisé de livre"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr "Identifiant international standard pour les bibliothèques"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr "Numéro international normalisé de musique"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Moyenne"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fixe"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Actifs"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Biens"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "Service"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Moyenne"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fixé"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Actifs"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Biens"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "Service"
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "Enfants"
|
||||
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "Séquences"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,984 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Cabang"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Induk"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "Produk"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "Urutan Produk"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "Urutan Produk"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Perusahaan"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produk"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "Perusahaan"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "Templat"
|
||||
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "Kode"
|
||||
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produk"
|
||||
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Perusahaan"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "Templat"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategori"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategori"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "Kode"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "Deskripsi"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "Kode"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "Kategori"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "Templat"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "Kategori"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "Templat"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "Kategori"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Satuan Ukuran"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "Produk"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "Konfigurasi"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Kategori"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Satuan Ukuran"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "Produk"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "Produk"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Kategori-kategori"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Kategori-kategori"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Konfigurasi"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "Produk"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Konfigurasi"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Satuan Ukuran"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "Kategori Produk"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "Konfigurasi Produk"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "Pengenal Produk"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Satuan Ukuran"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "Are"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "Karat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "sentimeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "Centimeter kubik"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "Kaki kubik"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "Inci kubik"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "Meter kubik"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "Hari"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "Kaki"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "Galon"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "Gram"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "Hektar"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "Jam"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "Inci"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "Kilogram"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "Kilometer"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "Liter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "Meter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "Millimeter"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "Menit"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "Ons"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "Detik"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "Centimeter persegi"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "Kaki persegi"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "Inci persegi"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "Meter persegi"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "Yard persegi"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "ft³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "Kategori Satuan Ukuran"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "Waktu"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "Berat"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Aktiva"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Barang"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "Jasa"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Aktiva"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Barang"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "Jasa"
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "Cabang"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "Urutan Produk"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "Umum"
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,998 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr "Prekės savikaina"
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Dukterinės"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Pavadinimas"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Motininė"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "Prekės"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Numatytasis savikainos metodas"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "Numeruotė"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "Numeruotė"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Numatytasis savikainos metodas"
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Organizacija"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Savikaina"
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "Prekė"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "Organizacija"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Savikainos metodas"
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "Prekės šablonas"
|
||||
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "Kodas"
|
||||
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "Prekė"
|
||||
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipas"
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Organizacija"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Pardavimo kaina"
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "Prekės šablonas"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "Kodas"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Vartojamoji"
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Savikaina"
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Savikainos metodas"
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Savikainos skaičiavimo metodai"
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Savikaina"
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr "Savikainos"
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "Numatytasis mato vienetas"
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Numatytojo mato vieneto kategorija"
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "Aprašymas"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr "Identifikatoriai"
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Pardavimo kaina"
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr "Pardavimo kaina"
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Pardavimo kainos"
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "Pavadinimas"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr "Prekės šablonas"
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipas"
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "Kodas"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Vartojamoji"
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Savikaina"
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Savikainos metodas"
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Savikainos skaičiavimo metodai"
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "Numatytasis mato vienetas"
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Numatytojo mato vieneto kategorija"
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Pardavimo kaina"
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Pardavimo kainos"
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "Pavadinimas"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "Variantai"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipas"
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "Kategorija"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "Prekės šablonas"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "Kategorija"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "Prekės šablonas"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "Kategorija"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr "Rodomų skaičių po kablelio skaičius"
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr "Perskaičiavimo į pagrindinį mato vienetą koeficientas"
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "Pavadinimas"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr "Pagrindinio mato vieneto koeficientas"
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr "Apvalinimo tikslumas"
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr "Simbolis"
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Pavadinimas"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Mato vienetai"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr "Šio identifikatoriaus aprašoma prekė."
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr "Pridėkite kitus prekės identifikatorius."
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr "Pridėkite kitus prekės identifikatorius."
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
"Koeficientas formulei:\n"
|
||||
"koeficientas (pagrindinis vienetas) = 1 (šis mato vienetas)"
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
"Koeficientas formulei:\n"
|
||||
"1 (bazinis vienetas) = koeficientas (šis vienetas)"
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "Prekės"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "Nuostatos"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "Variantai"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "Variantai"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "Prekės pagal kategoriją"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "Prekės"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Mato vienetai"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "Prekės"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "Variantai"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "Prekė"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Nuostatos"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "Prekė"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "Variantai"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Nuostatos"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "Prekės"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Mato vienetai"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "Prekės kategorija"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "Prekės nuostatos"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr "Numatytasis savikainos skaičiavimo būdas"
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr "Prekės savikaina"
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr "Prekės savikainos skaičiavimo būdas"
|
||||
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "Prekės identifikatorius"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr "Prekės kaina"
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr "Prekės variantas"
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr "Prekės šablonas"
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr "Šablono kategorija"
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr "Šablonas - visos kategorijos"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Mato vienetas"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "Aras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "Karatas"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "Centimetras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "Kubinis centimetras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "Kubinė pėda"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "Kubinis colis"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "Kubinis metras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "Diena"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "Pėda"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "Galonas"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "Gramas"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "Hektaras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "Valanda"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "Colis"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "Kilogramas"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "Kilometras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "Litras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "Metras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "Mylia"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "Millimetras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "Minutė"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "Uncija"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "Svaras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "Sekundė"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "Kvadratins centimetras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "Kvadratinė pėda"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "Kvadratinis colis"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "Kvadratinis metras"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "Kvadratinis jardas"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "Vienetas"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "Darbo diena"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "Jardas"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "ft³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "in³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "ft"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "val"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "in"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "ft²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "in²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "vnt"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "dd"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "Mato vienetas"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "Ilgis"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "Paviršius"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "Laikas"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "Vienetai"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "Tūris"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "Svoris"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "Prekių valdymas"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr "Tarptautinis artikulas"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr "Tarptautinis saugumo numeris"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr "Tarptautinis standartinis audiovizualinis numeris"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr "Tarptautinis standartinis knygos numeris"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr "Tarptautinis standartinis bibliotekų identifikatorius"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr "Tarptautinis standartinis muzikos numeris"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Vidutinė"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fiksuota"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Ilgalaikis turtas"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Prekės"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "Paslaugos"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Vidutinė kaina"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fiksuota"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Ilgalaikis turtas"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Prekės"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "Paslaugos"
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "Dukterinė"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "Numeruotė"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "Pagrindinis"
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,999 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr "Preço de Custo do Produto"
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Filhos"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Pai"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "Produtos"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Método de Custo Padrão"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "Modelo de produto"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "Modelo de produto"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Método de Custo Padrão"
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Preço de Custo"
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produto"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Método de preço de custo"
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "Modelo"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produto"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Preço de tabela"
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "Modelo"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consumível"
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Preço de Custo"
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Método do preço de custo"
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Métodos dos preços de custo"
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Preço de custo"
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr "Preço de Custo"
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UDM padrão"
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Categoria Padrão para UDM"
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descrição"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Preço de Tabela"
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr "Preço de tabela"
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Preços de tabela"
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr "Modelo de produto"
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consumível"
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Preço de custo"
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Método do preço de custo"
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Métodos dos preços de custo"
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UDM padrão"
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Categoria padrão para UDM"
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Preço de tabela"
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Preços de tabela"
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "Variante"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "Modelo"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "Modelo"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr "Dígitos a exibir"
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr "Fator"
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr "Taxa"
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr "Precisão para arredondamento"
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr "Símbolo"
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unidades de Medida"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
"Coeficiente para a fórmula:\n"
|
||||
"coef (unidade de base) = 1 (esta unidade)"
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
"Coeficiente para a fórmula:\n"
|
||||
"1 (unidade de base) = coef (esta unidade)"
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "Produtos"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuração"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "Produto por Categoria"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "Produtos"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unidades de Medida"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "Produtos"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "Variante"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "Produto"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuração"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "Produto"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "Variantes"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuração"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "Produtos"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unidades de Medida"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "Categoria do produto"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "Configuração do Produto"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr "Configuração do Produto Método de Preço de Custo Padrão"
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr "Preço de Custo do Produto"
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr "Método do preço de custo do produto"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "Modelo de produto"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr "Preço de Tabela do Produto"
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr "Variante do Produto"
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr "Modelo de produto"
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr "Modelo - Categoria"
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr "Modelo - Todas as Categorias"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Unidade de Medida"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "Are"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "Quilate"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "centímetro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "Centímetro cúbico"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "Pé cúbico"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "Polegada cúbica"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "Metro cúbico"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "Dia"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "Pé"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "Galão"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "Grama"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "Hectare"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "Hora"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "Polegada"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "Quilograma"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "Quilômetro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "Litro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "Metro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "Milha"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "Milímetro"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "Minuto"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "Onça"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "Libra"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "Segundo"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "Centímetro quadrado"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "Pé quadrado"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "Polegada quadrada"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "Metro quadrado"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "Jarda quadrada"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "Unidade"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "Dia de trabalho"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "Jarda"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "ft³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "in³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "ft"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "h"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "in"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "ft²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "in²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "u"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "dt"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "Unidade de Medida"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "Comprimento"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "Superfície"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "Tempo"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "Unidades"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "Peso"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "Administração de produtos"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Média"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fixo"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Ativos"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Mercadorias"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "Serviço"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Média"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fixo"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Ativos"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Mercadorias"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "Serviço"
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "Filhos"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "Modelo de produto"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
@@ -0,0 +1,998 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr "Zecimale Preț Produs"
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Copii"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Denumire"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Părinte"
|
||||
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "Produse"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Metoda cost implicit"
|
||||
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "Secvența produs"
|
||||
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "Secvența produs"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "Metoda cost implicit"
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Companie"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Cost"
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produs"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "Companie"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Metoda a pretului de cost"
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "Șablon"
|
||||
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "Cod"
|
||||
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produs"
|
||||
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tip"
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "Companie"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Lista de preturi"
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "Șablon"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "Cod"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "Cod numai pentru citit"
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consumabil"
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Cost"
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Metoda a pretului de cost"
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Metode Pret cost"
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Cost"
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr "Costuri"
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UM Implicita"
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Categorie implicita al UM"
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "Zecimale Implicite al Unității"
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descriere"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr "Identificatorii"
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Lista de preturi"
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr "Lista de preturi"
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Prețuri de lista"
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "Denumire"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr "Cod Prefix"
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr "Cod Suffix"
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr "Șablon Produs"
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tip"
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "Cod"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "Cod numai pentru citit"
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "Consumabil"
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "Cost"
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "Metoda a pretului de cost"
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "Metode Pret cost"
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "UM Implicita"
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "Categorie implicita al UM"
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "Zecimale Implicite al Unității"
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "Lista de preturi"
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "Prețuri de lista"
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "Denumire"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "Variante"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tip"
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categorie"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "Șablon"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categorie"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "Șablon"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "Categorie"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr "Afișare zecimale"
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr "Factor"
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "Denumire"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr "Impozit"
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr "Precizia rotunjire"
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr "Simbol"
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "Denumire"
|
||||
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unitați de masura"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr "Folosit pentru a adăuga structură sub categorie."
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr "Folosit pentru a adăuga structură deasupra categoriei."
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "Metoda implicita pentru costul produselor noi."
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr "Folosit pentru a genera codul produsului."
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr "Utilizat pentru a genera prima parte al codului produsului."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "Metoda prețului de cost implicit pentru produsele noi."
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr "Produsul identificat prin cod."
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"Categoriile în care se află produsul.\n"
|
||||
"Folosit pentru a grupa produse similare împreună."
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr "Un identificator unic pentru variantă."
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
"Bifați pentru a permite mișcari de stoc indiferent de nivelul stocului."
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Suma de cost pentru a achiziționa sau a produce varianta, sau a efectua "
|
||||
"serviciul."
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "Metoda utilizată pentru calcularea a costului."
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"Unitatea standard de măsură pentru produs.\n"
|
||||
"Folosit intern la calcularea nivelului stocului de bunuri și active."
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr "Alți identificatori asociați cu varianta."
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "Prețul standard la care se vinde produsul."
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr "Identificatorul unic pentru produs (adica SKU)."
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr ""
|
||||
"Produsul care defineşte proprietăţi comune care vor fi moştenite de "
|
||||
"varianta."
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"Categoriile în care se află produsul.\n"
|
||||
"Folosit pentru a grupa produse similare împreună."
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr ""
|
||||
"Bifați pentru a permite mișcari de stoc indiferent de nivelul stocului."
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr ""
|
||||
"Sumă care costă achiziţia sau producţia produsului, sau pentru a executa "
|
||||
"serviciul."
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "Metoda utilizată pentru calcularea a costului."
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"Unitatea standard de măsură pentru produs.\n"
|
||||
"Folosit intern la calcularea nivelului stocului de bunuri și active."
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "Prețul standard la care se vinde produsul."
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr "Variantele care există pentru acest produs."
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
"Categoria care conţine unitatea de măsură.\n"
|
||||
"Conversii între diferite unităţii de măsură pot fi efectuate dacă fac parte din acelaşi categorie."
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr "Numărul de cifre de afişat după zecimal."
|
||||
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
"Coeficientul al formulei.\n"
|
||||
"coeficient (unitate de bază) = 1 (din această unitate)"
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
"Coeficientul pentru formulă:\n"
|
||||
"1 (unitate de bază) = coef. (această unitate)"
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr "Precizia la care sunt rotunjite valori."
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr "Simbolul care reprezintă unitatea de măsură."
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "Adăugare Produse"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "Configurare"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "Variante"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "Variante"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "Produs în Categorie"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "Produse"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unități de Măsura"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr "%(type)s \"%(code)s\" nu este valabil pentru produsul \"%(product)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr "Codul al unui produs activ trebuie să fie unic."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr "Factor şi rata incompatibil pentru UM \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr "Nu se poate modifică categorie de UM \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr "Nu se poate modifică factorul al Unitaţii de Masură \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr ""
|
||||
"Dacă UM nu este utilizată se poate şterge, altfel se poate dezactiva în "
|
||||
"vedere creării unei noi UM."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr "Nu se poate modifică rate al UM \"%(uom)s\"."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr "Rata şi factor nu pot ambele sa fii egale cu zero."
|
||||
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "Adăugare Produse"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "Varianta"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "Produs"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configurare"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "Produs"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "Variante"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "Configurare"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr "Raportare"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "Produse"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "Categorii"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "Unitați de masura"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "Categorie de Produse"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "Configurare Produs"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr "Configurare de Produs Metodă Implicită pentru Cost"
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr "Cost al Produsului"
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr "Metodă Cost al Produsului"
|
||||
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "Identificator Produs"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr "Preţ de Lista Produs"
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr "Varianta Produs"
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr "Șablon Produs"
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr "Şablon - Categorie"
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr "Şablon - Categorie Toate"
|
||||
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Unitați de masura"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "Sunt"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "Carat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "centimetru"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "Centimetru cub"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "Picior cub"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "Țol cub"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "Metru cub"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "Zi"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "Picior"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "Galon"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "Gram"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "Hectar"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "Ora"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "Țol"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "Kilogram"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "Kilometru"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "Litru"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "Metru"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "Milă"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "Milimetru"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "Minut"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "Uncie"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "Livră"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "Secunda"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "Centimetru pătrat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "Picior Pătrat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "Ţol Pătrat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "Metru patrat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "Iard Pătrat"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "Unitate"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "Zi de lucru"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "Iard"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "ft³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "in³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "ft"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "h"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "in"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "ft²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "in²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "buc"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "wd"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "Unitați de masura"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "Lungime"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "Suprafața"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "Timp"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "Unitați"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "Volum"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "Greutate"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "Administrare Produs"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr "Cod International Articol"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Mediu"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fix"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Active"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Marfa"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "Serviciu"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "Mediu"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "Fix"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "Active"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "Marfa"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "Serviciu"
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "Copii"
|
||||
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "Secvențe"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,991 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:ir.configuration,product_price_decimal:"
|
||||
msgid "Product Price Decimal"
|
||||
msgstr "产品价格小数"
|
||||
|
||||
msgctxt "field:product.category,childs:"
|
||||
msgid "Children"
|
||||
msgstr "子类别"
|
||||
|
||||
msgctxt "field:product.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "名称"
|
||||
|
||||
msgctxt "field:product.category,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "父类别"
|
||||
|
||||
msgctxt "field:product.category,templates:"
|
||||
msgid "Products"
|
||||
msgstr "产品"
|
||||
|
||||
msgctxt "field:product.configuration,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "默认的成本法"
|
||||
|
||||
msgctxt "field:product.configuration,product_sequence:"
|
||||
msgid "Variant Sequence"
|
||||
msgstr "产品变体序列"
|
||||
|
||||
msgctxt "field:product.configuration,template_sequence:"
|
||||
msgid "Product Sequence"
|
||||
msgstr "产品序列"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "Default Cost Method"
|
||||
msgstr "默认的成本法"
|
||||
|
||||
msgctxt "field:product.cost_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "公司"
|
||||
|
||||
msgctxt "field:product.cost_price,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "成本价"
|
||||
|
||||
msgctxt "field:product.cost_price,product:"
|
||||
msgid "Product"
|
||||
msgstr "产品"
|
||||
|
||||
msgctxt "field:product.cost_price_method,company:"
|
||||
msgid "Company"
|
||||
msgstr "公司"
|
||||
|
||||
msgctxt "field:product.cost_price_method,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "成本价法"
|
||||
|
||||
msgctxt "field:product.cost_price_method,template:"
|
||||
msgid "Template"
|
||||
msgstr "模板"
|
||||
|
||||
msgctxt "field:product.identifier,code:"
|
||||
msgid "Code"
|
||||
msgstr "代码"
|
||||
|
||||
msgctxt "field:product.identifier,product:"
|
||||
msgid "Product"
|
||||
msgstr "产品"
|
||||
|
||||
msgctxt "field:product.identifier,type:"
|
||||
msgid "Type"
|
||||
msgstr "类型"
|
||||
|
||||
msgctxt "field:product.list_price,company:"
|
||||
msgid "Company"
|
||||
msgstr "公司"
|
||||
|
||||
msgctxt "field:product.list_price,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "定价"
|
||||
|
||||
msgctxt "field:product.list_price,template:"
|
||||
msgid "Template"
|
||||
msgstr "模板"
|
||||
|
||||
msgctxt "field:product.product,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "field:product.product,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "field:product.product,code:"
|
||||
msgid "Code"
|
||||
msgstr "代码"
|
||||
|
||||
msgctxt "field:product.product,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "只读代码"
|
||||
|
||||
msgctxt "field:product.product,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "消耗品"
|
||||
|
||||
msgctxt "field:product.product,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "成本价"
|
||||
|
||||
msgctxt "field:product.product,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "成本价法"
|
||||
|
||||
msgctxt "field:product.product,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "成本价法"
|
||||
|
||||
msgctxt "field:product.product,cost_price_uom:"
|
||||
msgid "Cost Price"
|
||||
msgstr "成本价"
|
||||
|
||||
msgctxt "field:product.product,cost_prices:"
|
||||
msgid "Cost Prices"
|
||||
msgstr "成本价"
|
||||
|
||||
msgctxt "field:product.product,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "默认计量单位"
|
||||
|
||||
msgctxt "field:product.product,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "默认计量单位类别"
|
||||
|
||||
msgctxt "field:product.product,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "默认计量单位有效数字"
|
||||
|
||||
msgctxt "field:product.product,description:"
|
||||
msgid "Description"
|
||||
msgstr "描述"
|
||||
|
||||
msgctxt "field:product.product,identifiers:"
|
||||
msgid "Identifiers"
|
||||
msgstr "标识"
|
||||
|
||||
msgctxt "field:product.product,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "定价"
|
||||
|
||||
msgctxt "field:product.product,list_price_uom:"
|
||||
msgid "List Price"
|
||||
msgstr "定价"
|
||||
|
||||
msgctxt "field:product.product,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "定价"
|
||||
|
||||
msgctxt "field:product.product,name:"
|
||||
msgid "Name"
|
||||
msgstr "名称"
|
||||
|
||||
msgctxt "field:product.product,prefix_code:"
|
||||
msgid "Prefix Code"
|
||||
msgstr "前缀代码"
|
||||
|
||||
msgctxt "field:product.product,suffix_code:"
|
||||
msgid "Suffix Code"
|
||||
msgstr "后缀代码"
|
||||
|
||||
msgctxt "field:product.product,template:"
|
||||
msgid "Product Template"
|
||||
msgstr "产品模板"
|
||||
|
||||
msgctxt "field:product.product,type:"
|
||||
msgid "Type"
|
||||
msgstr "类型"
|
||||
|
||||
msgctxt "field:product.template,categories:"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "field:product.template,categories_all:"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "field:product.template,code:"
|
||||
msgid "Code"
|
||||
msgstr "代码"
|
||||
|
||||
msgctxt "field:product.template,code_readonly:"
|
||||
msgid "Code Readonly"
|
||||
msgstr "代码(只读)"
|
||||
|
||||
msgctxt "field:product.template,consumable:"
|
||||
msgid "Consumable"
|
||||
msgstr "消耗品"
|
||||
|
||||
msgctxt "field:product.template,cost_price:"
|
||||
msgid "Cost Price"
|
||||
msgstr "成本价"
|
||||
|
||||
msgctxt "field:product.template,cost_price_method:"
|
||||
msgid "Cost Price Method"
|
||||
msgstr "成本价法"
|
||||
|
||||
msgctxt "field:product.template,cost_price_methods:"
|
||||
msgid "Cost Price Methods"
|
||||
msgstr "成本价法"
|
||||
|
||||
msgctxt "field:product.template,default_uom:"
|
||||
msgid "Default UOM"
|
||||
msgstr "默认计量单位"
|
||||
|
||||
msgctxt "field:product.template,default_uom_category:"
|
||||
msgid "Default UOM Category"
|
||||
msgstr "默认计量单位类别"
|
||||
|
||||
msgctxt "field:product.template,default_uom_digits:"
|
||||
msgid "Default Unit Digits"
|
||||
msgstr "默认计量单位有效数字"
|
||||
|
||||
msgctxt "field:product.template,list_price:"
|
||||
msgid "List Price"
|
||||
msgstr "定价"
|
||||
|
||||
msgctxt "field:product.template,list_prices:"
|
||||
msgid "List Prices"
|
||||
msgstr "定价"
|
||||
|
||||
msgctxt "field:product.template,name:"
|
||||
msgid "Name"
|
||||
msgstr "名称"
|
||||
|
||||
msgctxt "field:product.template,products:"
|
||||
msgid "Variants"
|
||||
msgstr "变体"
|
||||
|
||||
msgctxt "field:product.template,type:"
|
||||
msgid "Type"
|
||||
msgstr "类型"
|
||||
|
||||
msgctxt "field:product.template-product.category,category:"
|
||||
msgid "Category"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "field:product.template-product.category,template:"
|
||||
msgid "Template"
|
||||
msgstr "模板"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,category:"
|
||||
msgid "Category"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "field:product.template-product.category.all,template:"
|
||||
msgid "Template"
|
||||
msgstr "模板"
|
||||
|
||||
msgctxt "field:product.uom,category:"
|
||||
msgid "Category"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "field:product.uom,digits:"
|
||||
msgid "Display Digits"
|
||||
msgstr "显示数位"
|
||||
|
||||
msgctxt "field:product.uom,factor:"
|
||||
msgid "Factor"
|
||||
msgstr "换算因子"
|
||||
|
||||
msgctxt "field:product.uom,name:"
|
||||
msgid "Name"
|
||||
msgstr "名称"
|
||||
|
||||
msgctxt "field:product.uom,rate:"
|
||||
msgid "Rate"
|
||||
msgstr "换算率"
|
||||
|
||||
msgctxt "field:product.uom,rounding:"
|
||||
msgid "Rounding Precision"
|
||||
msgstr "舍入精度"
|
||||
|
||||
msgctxt "field:product.uom,symbol:"
|
||||
msgid "Symbol"
|
||||
msgstr "符号"
|
||||
|
||||
msgctxt "field:product.uom.category,name:"
|
||||
msgid "Name"
|
||||
msgstr "名称"
|
||||
|
||||
msgctxt "field:product.uom.category,uoms:"
|
||||
msgid "Units of Measure"
|
||||
msgstr "计量单位"
|
||||
|
||||
msgctxt "help:product.category,childs:"
|
||||
msgid "Used to add structure below the category."
|
||||
msgstr "用于在类别下面添加结构."
|
||||
|
||||
msgctxt "help:product.category,parent:"
|
||||
msgid "Used to add structure above the category."
|
||||
msgstr "用于在类别上面添加结构."
|
||||
|
||||
msgctxt "help:product.configuration,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "新产品默认使用的成本价格方法."
|
||||
|
||||
msgctxt "help:product.configuration,product_sequence:"
|
||||
msgid "Used to generate the last part of the product code."
|
||||
msgstr "用于生成产品代码的最后一部分."
|
||||
|
||||
msgctxt "help:product.configuration,template_sequence:"
|
||||
msgid "Used to generate the first part of the product code."
|
||||
msgstr "用于生成产品代码的第一部分."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.default_cost_price_method,default_cost_price_method:"
|
||||
msgid "The default cost price method for new products."
|
||||
msgstr "新产品默认使用的成本价格方法."
|
||||
|
||||
msgctxt "help:product.identifier,product:"
|
||||
msgid "The product identified by the code."
|
||||
msgstr "此代码标识的产品."
|
||||
|
||||
msgctxt "help:product.product,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"产品所属类别.\n"
|
||||
"用于将类似的产品聚在一组."
|
||||
|
||||
msgctxt "help:product.product,code:"
|
||||
msgid "A unique identifier for the variant."
|
||||
msgstr "变体的唯一标识符."
|
||||
|
||||
msgctxt "help:product.product,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr "选中此项后,将允许不考虑库存水平的情况下,分配库存移动."
|
||||
|
||||
msgctxt "help:product.product,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the variant, or carry out the "
|
||||
"service."
|
||||
msgstr "购买或制作产品变体或执行服务所需的费用."
|
||||
|
||||
msgctxt "help:product.product,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "用于计算成本价的方法."
|
||||
|
||||
msgctxt "help:product.product,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"产品的标准计量单位.\n"
|
||||
"在计算货物和资产的库存水平时内部使用."
|
||||
|
||||
msgctxt "help:product.product,identifiers:"
|
||||
msgid "Other identifiers associated with the variant."
|
||||
msgstr "变体的其它标识符."
|
||||
|
||||
msgctxt "help:product.product,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "产品销售的标准价格."
|
||||
|
||||
msgctxt "help:product.product,suffix_code:"
|
||||
msgid "The unique identifier for the product (aka SKU)."
|
||||
msgstr "产品的唯一标识符(也称为SKU)."
|
||||
|
||||
msgctxt "help:product.product,template:"
|
||||
msgid ""
|
||||
"The product that defines the common properties inherited by the variant."
|
||||
msgstr "用来定义公共属性的产品,这些公共属性会被产品的变体继承."
|
||||
|
||||
msgctxt "help:product.template,categories:"
|
||||
msgid ""
|
||||
"The categories that the product is in.\n"
|
||||
"Used to group similar products together."
|
||||
msgstr ""
|
||||
"产品所属类别.\n"
|
||||
"用来将类似的产品分组."
|
||||
|
||||
msgctxt "help:product.template,consumable:"
|
||||
msgid "Check to allow stock moves to be assigned regardless of stock level."
|
||||
msgstr "选中此项后,将允许在不考虑库存水平的情况下,分配库存移动."
|
||||
|
||||
msgctxt "help:product.template,cost_price:"
|
||||
msgid ""
|
||||
"The amount it costs to purchase or make the product, or carry out the "
|
||||
"service."
|
||||
msgstr "购买或制造产品或提供服务所需的费用."
|
||||
|
||||
msgctxt "help:product.template,cost_price_method:"
|
||||
msgid "The method used to calculate the cost price."
|
||||
msgstr "用于计算成本价的方法."
|
||||
|
||||
msgctxt "help:product.template,default_uom:"
|
||||
msgid ""
|
||||
"The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods and assets."
|
||||
msgstr ""
|
||||
"产品标准计量单位.\n"
|
||||
"在计算货物和资产的库存水平时内部使用."
|
||||
|
||||
msgctxt "help:product.template,list_price:"
|
||||
msgid "The standard price the product is sold at."
|
||||
msgstr "产品销售的标准价格."
|
||||
|
||||
msgctxt "help:product.template,products:"
|
||||
msgid "The different variants the product comes in."
|
||||
msgstr "产品不同变体."
|
||||
|
||||
msgctxt "help:product.uom,category:"
|
||||
msgid ""
|
||||
"The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they are in the same category."
|
||||
msgstr ""
|
||||
"计量单位类别.\n"
|
||||
"属于同类别的计量单位之间可以相互转换."
|
||||
|
||||
msgctxt "help:product.uom,digits:"
|
||||
msgid "The number of digits to display after the decimal separator."
|
||||
msgstr "小数点后显示的数字位数."
|
||||
|
||||
msgctxt "help:product.uom,factor:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)"
|
||||
msgstr ""
|
||||
"公式系数:\n"
|
||||
"系数 X 基本单位 = 1 X 当前单位"
|
||||
|
||||
msgctxt "help:product.uom,rate:"
|
||||
msgid ""
|
||||
"The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)"
|
||||
msgstr ""
|
||||
"换算公式的系数:\n"
|
||||
"1 X 基本单位 = 系数 X 当前单位"
|
||||
|
||||
msgctxt "help:product.uom,rounding:"
|
||||
msgid "The accuracy to which values are rounded."
|
||||
msgstr "四舍五入精度."
|
||||
|
||||
msgctxt "help:product.uom,symbol:"
|
||||
msgid "The symbol that represents the unit of measure."
|
||||
msgstr "表示计量单位的符号."
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_product"
|
||||
msgid "Add products"
|
||||
msgstr "添加产品"
|
||||
|
||||
msgctxt "model:ir.action,name:act_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_product_configuration_form"
|
||||
msgid "Configuration"
|
||||
msgstr "设置"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_form"
|
||||
msgid "Variants"
|
||||
msgstr "变体"
|
||||
|
||||
msgctxt "model:ir.action,name:act_product_from_template"
|
||||
msgid "Variants"
|
||||
msgstr "变体"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_by_category"
|
||||
msgid "Product by Category"
|
||||
msgstr "按类别划分的产品"
|
||||
|
||||
msgctxt "model:ir.action,name:act_template_form"
|
||||
msgid "Products"
|
||||
msgstr "产品"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "model:ir.action,name:act_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "计量单位"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_invalid_code"
|
||||
msgid "The %(type)s \"%(code)s\" for product \"%(product)s\" is not valid."
|
||||
msgstr "%(type)s \"%(code)s\" 对产品 \"%(product)s\" 是无效的."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_product_code_unique"
|
||||
msgid "Code of active product must be unique."
|
||||
msgstr "已启用产品的代码不能重复."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_incompatible_factor_rate"
|
||||
msgid "Incompatible factor and rate values on UOM \"%(uom)s\"."
|
||||
msgstr "与计量单位 \"%(uom)s\" 不兼容的换算因子和换算率."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_category"
|
||||
msgid "You cannot modify the category of UOM \"%(uom)s\"."
|
||||
msgstr "你不能改变计量单位 \"%(uom)s\" 的类别."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_factor"
|
||||
msgid "You cannot modify the factor of UOM \"%(uom)s\"."
|
||||
msgstr "你不能编辑计量单位 \"%(uom)s\" 的换算因子."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_options"
|
||||
msgid ""
|
||||
"If the UOM is still not used, you can delete it otherwise you can deactivate"
|
||||
" it and create a new one."
|
||||
msgstr "如果计量单位一直没有使用过,你可以删除。否则你可以停用它并且新建一个。"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_modify_rate"
|
||||
msgid "You cannot modify the rate of UOM \"%(uom)s\"."
|
||||
msgstr "你不能修改计量单位 \"%(uom)s\" 的换算率."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_uom_no_zero_factor_rate"
|
||||
msgid "Rate and factor can not be both equal to zero."
|
||||
msgstr "换算率和换算因子不能同时为零."
|
||||
|
||||
msgctxt "model:ir.model.button,string:category_add_products_button"
|
||||
msgid "Add products"
|
||||
msgstr "添加产品"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_product"
|
||||
msgid "Variant"
|
||||
msgstr "变体"
|
||||
|
||||
msgctxt "model:ir.sequence.type,name:sequence_type_template"
|
||||
msgid "Product"
|
||||
msgstr "产品"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_list"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_category_tree"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "设置"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_main_product"
|
||||
msgid "Product"
|
||||
msgstr "产品"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_product"
|
||||
msgid "Variants"
|
||||
msgstr "变体"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_product_configuration"
|
||||
msgid "Configuration"
|
||||
msgstr "设置"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_reporting"
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_template"
|
||||
msgid "Products"
|
||||
msgstr "产品设置"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_category_form"
|
||||
msgid "Categories"
|
||||
msgstr "类别"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_uom_form"
|
||||
msgid "Units of Measure"
|
||||
msgstr "计量单位"
|
||||
|
||||
msgctxt "model:product.category,name:"
|
||||
msgid "Product Category"
|
||||
msgstr "按类别划分的产品"
|
||||
|
||||
msgctxt "model:product.configuration,name:"
|
||||
msgid "Product Configuration"
|
||||
msgstr "产品设置"
|
||||
|
||||
msgctxt "model:product.configuration.default_cost_price_method,name:"
|
||||
msgid "Product Configuration Default Cost Price Method"
|
||||
msgstr "产品设置 - 默认的成本价法"
|
||||
|
||||
msgctxt "model:product.cost_price,name:"
|
||||
msgid "Product Cost Price"
|
||||
msgstr "产品成本价"
|
||||
|
||||
msgctxt "model:product.cost_price_method,name:"
|
||||
msgid "Product Cost Price Method"
|
||||
msgstr "产品成本价法"
|
||||
|
||||
msgctxt "model:product.identifier,name:"
|
||||
msgid "Product Identifier"
|
||||
msgstr "产品标识"
|
||||
|
||||
msgctxt "model:product.list_price,name:"
|
||||
msgid "Product List Price"
|
||||
msgstr "产品定价"
|
||||
|
||||
msgctxt "model:product.product,name:"
|
||||
msgid "Product Variant"
|
||||
msgstr "产品变体"
|
||||
|
||||
msgctxt "model:product.template,name:"
|
||||
msgid "Product Template"
|
||||
msgstr "产品模板"
|
||||
|
||||
msgctxt "model:product.template-product.category,name:"
|
||||
msgid "Template - Category"
|
||||
msgstr "模板 - 类别"
|
||||
|
||||
msgctxt "model:product.template-product.category.all,name:"
|
||||
msgid "Template - Category All"
|
||||
msgstr "模板 -所有类别"
|
||||
|
||||
msgctxt "model:product.uom,name:"
|
||||
msgid "Unit of Measure"
|
||||
msgstr "计量单位"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_are"
|
||||
msgid "Are"
|
||||
msgstr "公亩"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_carat"
|
||||
msgid "Carat"
|
||||
msgstr "克拉"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_centimeter"
|
||||
msgid "centimeter"
|
||||
msgstr "厘米"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_centimeter"
|
||||
msgid "Cubic centimeter"
|
||||
msgstr "立方厘米"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_foot"
|
||||
msgid "Cubic foot"
|
||||
msgstr "立方英尺"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_inch"
|
||||
msgid "Cubic inch"
|
||||
msgstr "立方英寸"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_cubic_meter"
|
||||
msgid "Cubic meter"
|
||||
msgstr "立方米"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_day"
|
||||
msgid "Day"
|
||||
msgstr "天"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_foot"
|
||||
msgid "Foot"
|
||||
msgstr "英尺"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gallon"
|
||||
msgid "Gallon"
|
||||
msgstr "加仑"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_gram"
|
||||
msgid "Gram"
|
||||
msgstr "加仑"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hectare"
|
||||
msgid "Hectare"
|
||||
msgstr "公顷"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_hour"
|
||||
msgid "Hour"
|
||||
msgstr "小时"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_inch"
|
||||
msgid "Inch"
|
||||
msgstr "英寸"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilogram"
|
||||
msgid "Kilogram"
|
||||
msgstr "千克"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_kilometer"
|
||||
msgid "Kilometer"
|
||||
msgstr "千米"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_liter"
|
||||
msgid "Liter"
|
||||
msgstr "公升"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_meter"
|
||||
msgid "Meter"
|
||||
msgstr "米"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_mile"
|
||||
msgid "Mile"
|
||||
msgstr "英里"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_millimeter"
|
||||
msgid "Millimeter"
|
||||
msgstr "毫米"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_minute"
|
||||
msgid "Minute"
|
||||
msgstr "分钟"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_ounce"
|
||||
msgid "Ounce"
|
||||
msgstr "盎司"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_pound"
|
||||
msgid "Pound"
|
||||
msgstr "英镑"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_second"
|
||||
msgid "Second"
|
||||
msgstr "秒钟"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_centimeter"
|
||||
msgid "Square centimeter"
|
||||
msgstr "平方厘米"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_foot"
|
||||
msgid "Square foot"
|
||||
msgstr "平方英尺"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_inch"
|
||||
msgid "Square inch"
|
||||
msgstr "平方英寸"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_meter"
|
||||
msgid "Square meter"
|
||||
msgstr "平方米"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_square_yard"
|
||||
msgid "Square yard"
|
||||
msgstr "平方码"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_unit"
|
||||
msgid "Unit"
|
||||
msgstr "单位"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_work_day"
|
||||
msgid "Work Day"
|
||||
msgstr "工作日"
|
||||
|
||||
msgctxt "model:product.uom,name:uom_yard"
|
||||
msgid "Yard"
|
||||
msgstr "码"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_are"
|
||||
msgid "a"
|
||||
msgstr "a"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_carat"
|
||||
msgid "c"
|
||||
msgstr "c"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_centimeter"
|
||||
msgid "cm"
|
||||
msgstr "cm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_centimeter"
|
||||
msgid "cm³"
|
||||
msgstr "cm³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_foot"
|
||||
msgid "ft³"
|
||||
msgstr "ft³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_inch"
|
||||
msgid "in³"
|
||||
msgstr "in³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_cubic_meter"
|
||||
msgid "m³"
|
||||
msgstr "m³"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_day"
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_foot"
|
||||
msgid "ft"
|
||||
msgstr "ft"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gallon"
|
||||
msgid "gal"
|
||||
msgstr "gal"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hectare"
|
||||
msgid "ha"
|
||||
msgstr "ha"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_hour"
|
||||
msgid "h"
|
||||
msgstr "h"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_inch"
|
||||
msgid "in"
|
||||
msgstr "in"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilogram"
|
||||
msgid "kg"
|
||||
msgstr "kg"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_kilometer"
|
||||
msgid "km"
|
||||
msgstr "km"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_liter"
|
||||
msgid "l"
|
||||
msgstr "l"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_meter"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_mile"
|
||||
msgid "mi"
|
||||
msgstr "mi"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_millimeter"
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_minute"
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_ounce"
|
||||
msgid "oz"
|
||||
msgstr "oz"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_pound"
|
||||
msgid "lb"
|
||||
msgstr "lb"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_centimeter"
|
||||
msgid "cm²"
|
||||
msgstr "cm²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_foot"
|
||||
msgid "ft²"
|
||||
msgstr "ft²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_inch"
|
||||
msgid "in²"
|
||||
msgstr "in²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_meter"
|
||||
msgid "m²"
|
||||
msgstr "m²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_square_yard"
|
||||
msgid "yd²"
|
||||
msgstr "yd²"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_unit"
|
||||
msgid "u"
|
||||
msgstr "u"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_work_day"
|
||||
msgid "wd"
|
||||
msgstr "wd"
|
||||
|
||||
msgctxt "model:product.uom,symbol:uom_yard"
|
||||
msgid "yd"
|
||||
msgstr "yd"
|
||||
|
||||
msgctxt "model:product.uom.category,name:"
|
||||
msgid "Unit of Measure Category"
|
||||
msgstr "计量单位类别"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_length"
|
||||
msgid "Length"
|
||||
msgstr "长度"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_surface"
|
||||
msgid "Surface"
|
||||
msgstr "面积"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_time"
|
||||
msgid "Time"
|
||||
msgstr "时间"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_unit"
|
||||
msgid "Units"
|
||||
msgstr "单位"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_volume"
|
||||
msgid "Volume"
|
||||
msgstr "体积或容量"
|
||||
|
||||
msgctxt "model:product.uom.category,name:uom_cat_weight"
|
||||
msgid "Weight"
|
||||
msgstr "重量"
|
||||
|
||||
msgctxt "model:res.group,name:group_product_admin"
|
||||
msgid "Product Administration"
|
||||
msgstr "产品管理"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Article Number"
|
||||
msgstr "国际商品编码"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Securities Identification Number"
|
||||
msgstr "国际证券识别码"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Audiovisual Number"
|
||||
msgstr "国际标准音视频编号"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Book Number"
|
||||
msgstr "国际标准书号"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Identifier for Libraries"
|
||||
msgstr "图书馆国际标准标识符"
|
||||
|
||||
msgctxt "selection:product.identifier,type:"
|
||||
msgid "International Standard Music Number"
|
||||
msgstr "国际标准乐谱号"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "平均成本价法"
|
||||
|
||||
msgctxt "selection:product.product,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "固定成本价法"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Assets"
|
||||
msgstr "资产"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Goods"
|
||||
msgstr "货物"
|
||||
|
||||
msgctxt "selection:product.product,type:"
|
||||
msgid "Service"
|
||||
msgstr "服务"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Average"
|
||||
msgstr "平均成本价法"
|
||||
|
||||
msgctxt "selection:product.template,cost_price_method:"
|
||||
msgid "Fixed"
|
||||
msgstr "固定成本价法"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Assets"
|
||||
msgstr "资产"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Goods"
|
||||
msgstr "货物"
|
||||
|
||||
msgctxt "selection:product.template,type:"
|
||||
msgid "Service"
|
||||
msgstr "服务"
|
||||
|
||||
msgctxt "view:product.category:"
|
||||
msgid "Children"
|
||||
msgstr "子类别"
|
||||
|
||||
msgctxt "view:product.configuration:"
|
||||
msgid "Sequences"
|
||||
msgstr "产品序列"
|
||||
|
||||
msgctxt "view:product.template:"
|
||||
msgid "General"
|
||||
msgstr "常规"
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data grouped="1">
|
||||
<record model="ir.message" id="msg_uom_modify_factor">
|
||||
<field name="text">You cannot modify the factor of UOM "%(uom)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_uom_modify_rate">
|
||||
<field name="text">You cannot modify the rate of UOM "%(uom)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_uom_modify_category">
|
||||
<field name="text">You cannot modify the category of UOM "%(uom)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_uom_modify_options">
|
||||
<field name="text">If the UOM is still not used, you can delete it otherwise you can deactivate it and create a new one.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_uom_incompatible_factor_rate">
|
||||
<field name="text">Incompatible factor and rate values on UOM "%(uom)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_uom_no_zero_factor_rate">
|
||||
<field name="text">Rate and factor can not be both equal to zero.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_invalid_code">
|
||||
<field name="text">The %(type)s "%(code)s" for product "%(product)s" is not valid.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_product_code_unique">
|
||||
<field name="text">Code of active product must be unique.</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
@@ -0,0 +1,829 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import copy
|
||||
import logging
|
||||
from decimal import Decimal
|
||||
from importlib import import_module
|
||||
|
||||
import stdnum
|
||||
import stdnum.exceptions
|
||||
from sql import Null, Column, Literal
|
||||
from sql.operators import Equal
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import (
|
||||
ModelView, ModelSQL, Model, UnionMixin, DeactivableMixin, sequence_ordered,
|
||||
Exclude, fields)
|
||||
from trytond.pyson import Eval, If
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond import backend
|
||||
from trytond.tools import lstrip_wildcard
|
||||
from trytond.tools.multivalue import migrate_property
|
||||
from trytond.modules.company.model import (
|
||||
CompanyMultiValueMixin, CompanyValueMixin)
|
||||
from .exceptions import InvalidIdentifierCode
|
||||
from .ir import price_decimal
|
||||
|
||||
|
||||
__all__ = ['price_digits', 'round_price', 'TemplateFunction']
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
TYPES = [
|
||||
('goods', 'Goods'),
|
||||
('assets', 'Assets'),
|
||||
('service', 'Service'),
|
||||
]
|
||||
COST_PRICE_METHODS = [
|
||||
('fixed', 'Fixed'),
|
||||
('average', 'Average'),
|
||||
]
|
||||
|
||||
price_digits = (16, price_decimal)
|
||||
|
||||
|
||||
def round_price(value, rounding=None):
|
||||
"Round price using the price digits"
|
||||
if isinstance(value, int):
|
||||
return Decimal(value)
|
||||
return value.quantize(
|
||||
Decimal(1) / 10 ** price_digits[1], rounding=rounding)
|
||||
|
||||
|
||||
class Template(
|
||||
DeactivableMixin, ModelSQL, ModelView, CompanyMultiValueMixin):
|
||||
"Product Template"
|
||||
__name__ = "product.template"
|
||||
_order_name = 'rec_name'
|
||||
name = fields.Char(
|
||||
"Name", size=None, required=True, translate=True, select=True)
|
||||
code_readonly = fields.Function(
|
||||
fields.Boolean("Code Readonly"), 'get_code_readonly')
|
||||
code = fields.Char(
|
||||
"Code", select=True,
|
||||
states={
|
||||
'readonly': Eval('code_readonly', False),
|
||||
},
|
||||
depends=['code_readonly'])
|
||||
type = fields.Selection(TYPES, "Type", required=True)
|
||||
consumable = fields.Boolean('Consumable',
|
||||
states={
|
||||
'invisible': Eval('type', 'goods') != 'goods',
|
||||
},
|
||||
depends=['type'],
|
||||
help="Check to allow stock moves to be assigned "
|
||||
"regardless of stock level.")
|
||||
list_price = fields.MultiValue(fields.Numeric(
|
||||
"List Price", required=True, digits=price_digits,
|
||||
help="The standard price the product is sold at."))
|
||||
list_prices = fields.One2Many(
|
||||
'product.list_price', 'template', "List Prices")
|
||||
cost_price = fields.Function(fields.Numeric(
|
||||
"Cost Price", digits=price_digits,
|
||||
help="The amount it costs to purchase or make the product, "
|
||||
"or carry out the service."),
|
||||
'get_cost_price')
|
||||
cost_price_method = fields.MultiValue(fields.Selection(
|
||||
COST_PRICE_METHODS, "Cost Price Method", required=True,
|
||||
help="The method used to calculate the cost price."))
|
||||
cost_price_methods = fields.One2Many(
|
||||
'product.cost_price_method', 'template', "Cost Price Methods")
|
||||
default_uom = fields.Many2One('product.uom', "Default UOM", required=True,
|
||||
help="The standard unit of measure for the product.\n"
|
||||
"Used internally when calculating the stock levels of goods "
|
||||
"and assets.")
|
||||
default_uom_category = fields.Function(
|
||||
fields.Many2One('product.uom.category', 'Default UOM Category'),
|
||||
'on_change_with_default_uom_category',
|
||||
searcher='search_default_uom_category')
|
||||
default_uom_digits = fields.Function(fields.Integer("Default Unit Digits"),
|
||||
'on_change_with_default_uom_digits')
|
||||
categories = fields.Many2Many(
|
||||
'product.template-product.category', 'template', 'category',
|
||||
"Categories",
|
||||
help="The categories that the product is in.\n"
|
||||
"Used to group similar products together.")
|
||||
categories_all = fields.Many2Many(
|
||||
'product.template-product.category.all',
|
||||
'template', 'category', "Categories", readonly=True)
|
||||
products = fields.One2Many(
|
||||
'product.product', 'template', "Variants",
|
||||
domain=[
|
||||
If(~Eval('active'), ('active', '=', False), ()),
|
||||
],
|
||||
depends=['active'],
|
||||
help="The different variants the product comes in.")
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
super(Template, cls).__register__(module_name)
|
||||
|
||||
table = cls.__table_handler__(module_name)
|
||||
|
||||
# Migration from 3.8: rename category into categories
|
||||
if table.column_exist('category'):
|
||||
logger.warning(
|
||||
'The column "category" on table "%s" must be dropped manually',
|
||||
cls._table)
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls._order.insert(0, ('rec_name', 'ASC'))
|
||||
|
||||
@classmethod
|
||||
def multivalue_model(cls, field):
|
||||
pool = Pool()
|
||||
if field == 'list_price':
|
||||
return pool.get('product.list_price')
|
||||
elif field == 'cost_price_method':
|
||||
return pool.get('product.cost_price_method')
|
||||
return super(Template, cls).multivalue_model(field)
|
||||
|
||||
@classmethod
|
||||
def order_rec_name(cls, tables):
|
||||
table, _ = tables[None]
|
||||
return [table.code, table.name]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.code:
|
||||
return '[' + self.code + '] ' + self.name
|
||||
else:
|
||||
return self.name
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
if clause[1].startswith('!') or clause[1].startswith('not '):
|
||||
bool_op = 'AND'
|
||||
else:
|
||||
bool_op = 'OR'
|
||||
code_value = clause[2]
|
||||
if clause[1].endswith('like'):
|
||||
code_value = lstrip_wildcard(clause[2])
|
||||
return [bool_op,
|
||||
('name',) + tuple(clause[1:]),
|
||||
('code', clause[1], code_value) + tuple(clause[3:]),
|
||||
('products.code', clause[1], code_value) + tuple(clause[3:]),
|
||||
('products.identifiers.code', clause[1], code_value)
|
||||
+ tuple(clause[3:]),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def default_type():
|
||||
return 'goods'
|
||||
|
||||
@staticmethod
|
||||
def default_consumable():
|
||||
return False
|
||||
|
||||
def get_cost_price(self, name):
|
||||
if len(self.products) == 1:
|
||||
product, = self.products
|
||||
return product.cost_price
|
||||
|
||||
@classmethod
|
||||
def default_cost_price_method(cls, **pattern):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('product.configuration')
|
||||
return Configuration(1).get_multivalue(
|
||||
'default_cost_price_method', **pattern)
|
||||
|
||||
@classmethod
|
||||
def default_products(cls):
|
||||
transaction = Transaction()
|
||||
if (transaction.user == 0
|
||||
or not transaction.context.get('default_products', True)):
|
||||
return []
|
||||
return [{}]
|
||||
|
||||
@classmethod
|
||||
def default_code_readonly(cls):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('product.configuration')
|
||||
config = Configuration(1)
|
||||
return bool(config.template_sequence)
|
||||
|
||||
def get_code_readonly(self, name):
|
||||
return self.default_code_readonly()
|
||||
|
||||
@fields.depends('type', 'cost_price_method')
|
||||
def on_change_type(self):
|
||||
if self.type == 'service':
|
||||
self.cost_price_method = 'fixed'
|
||||
|
||||
@fields.depends('default_uom')
|
||||
def on_change_with_default_uom_category(self, name=None):
|
||||
if self.default_uom:
|
||||
return self.default_uom.category.id
|
||||
|
||||
@classmethod
|
||||
def search_default_uom_category(cls, name, clause):
|
||||
return [('default_uom.category' + clause[0].lstrip(name),)
|
||||
+ tuple(clause[1:])]
|
||||
|
||||
@fields.depends('default_uom')
|
||||
def on_change_with_default_uom_digits(self, name=None):
|
||||
if self.default_uom:
|
||||
return self.default_uom.digits
|
||||
|
||||
@classmethod
|
||||
def _new_code(cls):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('product.configuration')
|
||||
config = Configuration(1)
|
||||
sequence = config.template_sequence
|
||||
if sequence:
|
||||
return sequence.get()
|
||||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
pool = Pool()
|
||||
Product = pool.get('product.product')
|
||||
vlist = [v.copy() for v in vlist]
|
||||
for values in vlist:
|
||||
values.setdefault('products', None)
|
||||
if not values.get('code'):
|
||||
values['code'] = cls._new_code()
|
||||
templates = super(Template, cls).create(vlist)
|
||||
products = sum((t.products for t in templates), ())
|
||||
Product.sync_code(products)
|
||||
return templates
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
pool = Pool()
|
||||
Product = pool.get('product.product')
|
||||
super().write(*args)
|
||||
templates = sum(args[0:None:2], [])
|
||||
products = sum((t.products for t in templates), ())
|
||||
Product.sync_code(products)
|
||||
|
||||
@classmethod
|
||||
def copy(cls, templates, default=None):
|
||||
if default is None:
|
||||
default = {}
|
||||
else:
|
||||
default = default.copy()
|
||||
default.setdefault('code', None)
|
||||
return super().copy(templates, default=default)
|
||||
|
||||
@classmethod
|
||||
def search_global(cls, text):
|
||||
for record, rec_name, icon in super(Template, cls).search_global(text):
|
||||
icon = icon or 'tryton-product'
|
||||
yield record, rec_name, icon
|
||||
|
||||
|
||||
class TemplateFunction(fields.Function):
|
||||
|
||||
def __init__(self, field):
|
||||
super(TemplateFunction, self).__init__(
|
||||
field, 'get_template', searcher='search_template')
|
||||
# Disable on_change as it is managed by on_change_template
|
||||
self.on_change = set()
|
||||
self.on_change_with = set()
|
||||
|
||||
def __copy__(self):
|
||||
return TemplateFunction(copy.copy(self._field))
|
||||
|
||||
def __deepcopy__(self, memo):
|
||||
return TemplateFunction(copy.deepcopy(self._field, memo))
|
||||
|
||||
@staticmethod
|
||||
def order(name):
|
||||
@classmethod
|
||||
def order(cls, tables):
|
||||
pool = Pool()
|
||||
Template = pool.get('product.template')
|
||||
product, _ = tables[None]
|
||||
if 'template' not in tables:
|
||||
template = Template.__table__()
|
||||
tables['template'] = {
|
||||
None: (template, product.template == template.id),
|
||||
}
|
||||
return getattr(Template, name).convert_order(
|
||||
name, tables['template'], Template)
|
||||
return order
|
||||
|
||||
def definition(self, model, language):
|
||||
pool = Pool()
|
||||
Template = pool.get('product.template')
|
||||
definition = super().definition(model, language)
|
||||
definition['searchable'] = self._field.definition(
|
||||
Template, language)['searchable']
|
||||
return definition
|
||||
|
||||
|
||||
class Product(
|
||||
DeactivableMixin, ModelSQL, ModelView, CompanyMultiValueMixin):
|
||||
"Product Variant"
|
||||
__name__ = "product.product"
|
||||
_order_name = 'rec_name'
|
||||
template = fields.Many2One(
|
||||
'product.template', "Product Template",
|
||||
required=True, ondelete='CASCADE', select=True,
|
||||
search_context={'default_products': False},
|
||||
domain=[
|
||||
If(Eval('active'), ('active', '=', True), ()),
|
||||
],
|
||||
depends=['active'],
|
||||
help="The product that defines the common properties "
|
||||
"inherited by the variant.")
|
||||
code_readonly = fields.Function(fields.Boolean('Code Readonly'),
|
||||
'get_code_readonly')
|
||||
prefix_code = fields.Function(fields.Char(
|
||||
"Prefix Code",
|
||||
states={
|
||||
'invisible': ~Eval('prefix_code'),
|
||||
}),
|
||||
'on_change_with_prefix_code')
|
||||
suffix_code = fields.Char(
|
||||
"Suffix Code",
|
||||
states={
|
||||
'readonly': Eval('code_readonly', False),
|
||||
},
|
||||
depends=['code_readonly'],
|
||||
help="The unique identifier for the product (aka SKU).")
|
||||
code = fields.Char("Code", readonly=True, select=True,
|
||||
help="A unique identifier for the variant.")
|
||||
identifiers = fields.One2Many(
|
||||
'product.identifier', 'product', "Identifiers",
|
||||
help="Other identifiers associated with the variant.")
|
||||
cost_price = fields.MultiValue(fields.Numeric(
|
||||
"Cost Price", required=True, digits=price_digits,
|
||||
help="The amount it costs to purchase or make the variant, "
|
||||
"or carry out the service."))
|
||||
cost_prices = fields.One2Many(
|
||||
'product.cost_price', 'product', "Cost Prices")
|
||||
description = fields.Text("Description", translate=True)
|
||||
list_price_uom = fields.Function(fields.Numeric('List Price',
|
||||
digits=price_digits), 'get_price_uom')
|
||||
cost_price_uom = fields.Function(fields.Numeric('Cost Price',
|
||||
digits=price_digits), 'get_price_uom')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
pool = Pool()
|
||||
Template = pool.get('product.template')
|
||||
|
||||
if not hasattr(cls, '_no_template_field'):
|
||||
cls._no_template_field = set()
|
||||
cls._no_template_field.update(['products'])
|
||||
|
||||
super(Product, cls).__setup__()
|
||||
cls.__access__.add('template')
|
||||
cls._order.insert(0, ('rec_name', 'ASC'))
|
||||
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints = [
|
||||
('code_exclude', Exclude(t, (t.code, Equal),
|
||||
where=(t.active == Literal(True))
|
||||
& (t.code != '')),
|
||||
'product.msg_product_code_unique'),
|
||||
]
|
||||
|
||||
for attr in dir(Template):
|
||||
tfield = getattr(Template, attr)
|
||||
if not isinstance(tfield, fields.Field):
|
||||
continue
|
||||
if attr in cls._no_template_field:
|
||||
continue
|
||||
field = getattr(cls, attr, None)
|
||||
if not field or isinstance(field, TemplateFunction):
|
||||
tfield = copy.deepcopy(tfield)
|
||||
if hasattr(tfield, 'field'):
|
||||
tfield.field = None
|
||||
invisible_state = ~Eval('template')
|
||||
if 'invisible' in tfield.states:
|
||||
tfield.states['invisible'] |= invisible_state
|
||||
else:
|
||||
tfield.states['invisible'] = invisible_state
|
||||
if 'template' not in tfield.depends:
|
||||
tfield.depends.append('template')
|
||||
setattr(cls, attr, TemplateFunction(tfield))
|
||||
order_method = getattr(cls, 'order_%s' % attr, None)
|
||||
if (not order_method
|
||||
and not isinstance(tfield, (
|
||||
fields.Function,
|
||||
fields.One2Many,
|
||||
fields.Many2Many))):
|
||||
order_method = TemplateFunction.order(attr)
|
||||
setattr(cls, 'order_%s' % attr, order_method)
|
||||
if isinstance(tfield, fields.One2Many):
|
||||
getattr(cls, attr).setter = '_set_template_function'
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module):
|
||||
table = cls.__table__()
|
||||
table_h = cls.__table_handler__(module)
|
||||
fill_suffix_code = (
|
||||
table_h.column_exist('code')
|
||||
and not table_h.column_exist('suffix_code'))
|
||||
super().__register__(module)
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
# Migration from 5.4: split code into prefix/suffix
|
||||
if fill_suffix_code:
|
||||
cursor.execute(*table.update(
|
||||
[table.suffix_code],
|
||||
[table.code]))
|
||||
|
||||
@classmethod
|
||||
def _set_template_function(cls, products, name, value):
|
||||
# Prevent NotImplementedError for One2Many
|
||||
pass
|
||||
|
||||
@fields.depends('template', '_parent_template.id')
|
||||
def on_change_template(self):
|
||||
for name, field in self._fields.items():
|
||||
if isinstance(field, TemplateFunction):
|
||||
if self.template:
|
||||
value = getattr(self.template, name, None)
|
||||
else:
|
||||
value = None
|
||||
setattr(self, name, value)
|
||||
|
||||
def get_template(self, name):
|
||||
value = getattr(self.template, name)
|
||||
if isinstance(value, Model):
|
||||
field = getattr(self.__class__, name)
|
||||
if field._type == 'reference':
|
||||
return str(value)
|
||||
return value.id
|
||||
elif (isinstance(value, (list, tuple))
|
||||
and value and isinstance(value[0], Model)):
|
||||
return [r.id for r in value]
|
||||
else:
|
||||
return value
|
||||
|
||||
@fields.depends('template', '_parent_template.code')
|
||||
def on_change_with_prefix_code(self, name=None):
|
||||
if self.template:
|
||||
return self.template.code
|
||||
|
||||
@classmethod
|
||||
def multivalue_model(cls, field):
|
||||
pool = Pool()
|
||||
if field == 'cost_price':
|
||||
return pool.get('product.cost_price')
|
||||
return super(Product, cls).multivalue_model(field)
|
||||
|
||||
@classmethod
|
||||
def default_cost_price(cls, **pattern):
|
||||
return Decimal(0)
|
||||
|
||||
@classmethod
|
||||
def search_template(cls, name, clause):
|
||||
return [('template.' + clause[0],) + tuple(clause[1:])]
|
||||
|
||||
@classmethod
|
||||
def order_rec_name(cls, tables):
|
||||
pool = Pool()
|
||||
Template = pool.get('product.template')
|
||||
product, _ = tables[None]
|
||||
if 'template' not in tables:
|
||||
template = Template.__table__()
|
||||
tables['template'] = {
|
||||
None: (template, product.template == template.id),
|
||||
}
|
||||
else:
|
||||
template = tables['template']
|
||||
return [product.code] + Template.name.convert_order('name',
|
||||
tables['template'], Template)
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.code:
|
||||
return '[' + self.code + '] ' + self.name
|
||||
else:
|
||||
return self.name
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
if clause[1].startswith('!') or clause[1].startswith('not '):
|
||||
bool_op = 'AND'
|
||||
else:
|
||||
bool_op = 'OR'
|
||||
code_value = clause[2]
|
||||
if clause[1].endswith('like'):
|
||||
code_value = lstrip_wildcard(clause[2])
|
||||
return [bool_op,
|
||||
('code', clause[1], code_value) + tuple(clause[3:]),
|
||||
('identifiers.code', clause[1], code_value) + tuple(clause[3:]),
|
||||
('template.name',) + tuple(clause[1:]),
|
||||
('template.code', clause[1], code_value) + tuple(clause[3:]),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def get_price_uom(products, name):
|
||||
Uom = Pool().get('product.uom')
|
||||
res = {}
|
||||
field = name[:-4]
|
||||
if Transaction().context.get('uom'):
|
||||
to_uom = Uom(Transaction().context['uom'])
|
||||
else:
|
||||
to_uom = None
|
||||
for product in products:
|
||||
price = getattr(product, field)
|
||||
if to_uom and product.default_uom.category == to_uom.category:
|
||||
res[product.id] = Uom.compute_price(
|
||||
product.default_uom, price, to_uom)
|
||||
else:
|
||||
res[product.id] = price
|
||||
return res
|
||||
|
||||
@classmethod
|
||||
def search_global(cls, text):
|
||||
for id_, rec_name, icon in super(Product, cls).search_global(text):
|
||||
icon = icon or 'tryton-product'
|
||||
yield id_, rec_name, icon
|
||||
|
||||
@classmethod
|
||||
def default_code_readonly(cls):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('product.configuration')
|
||||
config = Configuration(1)
|
||||
return bool(config.product_sequence)
|
||||
|
||||
def get_code_readonly(self, name):
|
||||
return self.default_code_readonly()
|
||||
|
||||
@classmethod
|
||||
def _new_suffix_code(cls):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('product.configuration')
|
||||
config = Configuration(1)
|
||||
sequence = config.product_sequence
|
||||
if sequence:
|
||||
return sequence.get()
|
||||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
vlist = [x.copy() for x in vlist]
|
||||
for values in vlist:
|
||||
if not values.get('suffix_code'):
|
||||
values['suffix_code'] = cls._new_suffix_code()
|
||||
products = super().create(vlist)
|
||||
cls.sync_code(products)
|
||||
return products
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
super().write(*args)
|
||||
products = sum(args[0:None:2], [])
|
||||
cls.sync_code(products)
|
||||
|
||||
@classmethod
|
||||
def copy(cls, products, default=None):
|
||||
if default is None:
|
||||
default = {}
|
||||
else:
|
||||
default = default.copy()
|
||||
default.setdefault('suffix_code', None)
|
||||
default.setdefault('code', None)
|
||||
return super().copy(products, default=default)
|
||||
|
||||
@property
|
||||
def list_price_used(self):
|
||||
transaction = Transaction()
|
||||
with transaction.reset_context(), \
|
||||
transaction.set_context(self._context):
|
||||
return self.template.get_multivalue('list_price')
|
||||
|
||||
@classmethod
|
||||
def sync_code(cls, products):
|
||||
for product in products:
|
||||
code = ''.join(filter(None, [
|
||||
product.prefix_code, product.suffix_code]))
|
||||
if not code:
|
||||
code = None
|
||||
if code != product.code:
|
||||
product.code = code
|
||||
cls.save(products)
|
||||
|
||||
|
||||
class ProductListPrice(ModelSQL, CompanyValueMixin):
|
||||
"Product List Price"
|
||||
__name__ = 'product.list_price'
|
||||
template = fields.Many2One(
|
||||
'product.template', "Template", ondelete='CASCADE', select=True,
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends=['company'])
|
||||
list_price = fields.Numeric("List Price", digits=price_digits)
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
exist = backend.TableHandler.table_exist(cls._table)
|
||||
|
||||
super(ProductListPrice, cls).__register__(module_name)
|
||||
|
||||
if not exist:
|
||||
cls._migrate_property([], [], [])
|
||||
|
||||
@classmethod
|
||||
def _migrate_property(cls, field_names, value_names, fields):
|
||||
field_names.append('list_price')
|
||||
value_names.append('list_price')
|
||||
fields.append('company')
|
||||
migrate_property(
|
||||
'product.template', field_names, cls, value_names,
|
||||
parent='template', fields=fields)
|
||||
|
||||
|
||||
class ProductCostPriceMethod(ModelSQL, CompanyValueMixin):
|
||||
"Product Cost Price Method"
|
||||
__name__ = 'product.cost_price_method'
|
||||
template = fields.Many2One(
|
||||
'product.template', "Template", ondelete='CASCADE', select=True,
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends=['company'])
|
||||
cost_price_method = fields.Selection(
|
||||
'get_cost_price_methods', "Cost Price Method")
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
pool = Pool()
|
||||
ProductCostPrice = pool.get('product.cost_price')
|
||||
sql_table = cls.__table__()
|
||||
cost_price = ProductCostPrice.__table__()
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
exist = backend.TableHandler.table_exist(cls._table)
|
||||
cost_price_exist = backend.TableHandler.table_exist(
|
||||
ProductCostPrice._table)
|
||||
|
||||
super(ProductCostPriceMethod, cls).__register__(module_name)
|
||||
|
||||
# Migrate from 4.4: move cost_price_method from ProductCostPrice
|
||||
if not exist and not cost_price_exist:
|
||||
cls._migrate_property([], [], [])
|
||||
elif not exist and cost_price_exist:
|
||||
cost_price_table = backend.TableHandler(
|
||||
ProductCostPrice, module_name)
|
||||
if cost_price_table.column_exist('template'):
|
||||
columns = ['create_uid', 'create_date',
|
||||
'write_uid', 'write_date',
|
||||
'template', 'cost_price_method']
|
||||
cursor.execute(*sql_table.insert(
|
||||
columns=[Column(sql_table, c) for c in columns],
|
||||
values=cost_price.select(
|
||||
*[Column(cost_price, c) for c in columns])))
|
||||
|
||||
@classmethod
|
||||
def _migrate_property(cls, field_names, value_names, fields):
|
||||
field_names.append('cost_price_method')
|
||||
value_names.append('cost_price_method')
|
||||
fields.append('company')
|
||||
migrate_property(
|
||||
'product.template', field_names, cls, value_names,
|
||||
parent='template', fields=fields)
|
||||
|
||||
@classmethod
|
||||
def get_cost_price_methods(cls):
|
||||
pool = Pool()
|
||||
Template = pool.get('product.template')
|
||||
field_name = 'cost_price_method'
|
||||
methods = Template.fields_get([field_name])[field_name]['selection']
|
||||
methods.append((None, ''))
|
||||
return methods
|
||||
|
||||
|
||||
class ProductCostPrice(ModelSQL, CompanyValueMixin):
|
||||
"Product Cost Price"
|
||||
__name__ = 'product.cost_price'
|
||||
product = fields.Many2One(
|
||||
'product.product', "Product", ondelete='CASCADE', select=True,
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends=['company'])
|
||||
cost_price = fields.Numeric(
|
||||
"Cost Price", digits=price_digits)
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
pool = Pool()
|
||||
Product = pool.get('product.product')
|
||||
sql_table = cls.__table__()
|
||||
product = Product.__table__()
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
exist = backend.TableHandler.table_exist(cls._table)
|
||||
|
||||
super(ProductCostPrice, cls).__register__(module_name)
|
||||
|
||||
table = cls.__table_handler__(module_name)
|
||||
if not exist:
|
||||
# Create template column for property migration
|
||||
table.add_column('template', 'INTEGER')
|
||||
cls._migrate_property([], [], [])
|
||||
|
||||
# Migration from 4.4: replace template by product
|
||||
if table.column_exist('template'):
|
||||
columns = ['create_uid', 'create_date',
|
||||
'write_uid', 'write_date', 'cost_price']
|
||||
cursor.execute(*sql_table.insert(
|
||||
columns=[Column(sql_table, c) for c in columns]
|
||||
+ [sql_table.product],
|
||||
values=sql_table.join(product,
|
||||
condition=sql_table.template == product.template
|
||||
).select(
|
||||
*[Column(sql_table, c) for c in columns]
|
||||
+ [product.id],
|
||||
where=(sql_table.template != Null)
|
||||
& (sql_table.product == Null))))
|
||||
cursor.execute(*sql_table.delete(
|
||||
where=(sql_table.template != Null)
|
||||
& (sql_table.product == Null)))
|
||||
table.drop_column('template')
|
||||
|
||||
@classmethod
|
||||
def _migrate_property(cls, field_names, value_names, fields):
|
||||
field_names.append('cost_price')
|
||||
value_names.append('cost_price')
|
||||
fields.append('company')
|
||||
migrate_property(
|
||||
'product.template', field_names, cls, value_names,
|
||||
parent='template', fields=fields)
|
||||
|
||||
|
||||
class TemplateCategory(ModelSQL):
|
||||
'Template - Category'
|
||||
__name__ = 'product.template-product.category'
|
||||
template = fields.Many2One('product.template', 'Template',
|
||||
ondelete='CASCADE', required=True, select=True)
|
||||
category = fields.Many2One('product.category', 'Category',
|
||||
ondelete='CASCADE', required=True, select=True)
|
||||
|
||||
|
||||
class TemplateCategoryAll(UnionMixin, ModelSQL):
|
||||
"Template - Category All"
|
||||
__name__ = 'product.template-product.category.all'
|
||||
template = fields.Many2One('product.template', "Template")
|
||||
category = fields.Many2One('product.category', "Category")
|
||||
|
||||
@classmethod
|
||||
def union_models(cls):
|
||||
return ['product.template-product.category']
|
||||
|
||||
|
||||
class ProductIdentifier(sequence_ordered(), ModelSQL, ModelView):
|
||||
"Product Identifier"
|
||||
__name__ = 'product.identifier'
|
||||
_rec_name = 'code'
|
||||
product = fields.Many2One('product.product', "Product", ondelete='CASCADE',
|
||||
required=True, select=True,
|
||||
help="The product identified by the code.")
|
||||
type = fields.Selection([
|
||||
(None, ''),
|
||||
('ean', "International Article Number"),
|
||||
('isan', "International Standard Audiovisual Number"),
|
||||
('isbn', "International Standard Book Number"),
|
||||
('isil', "International Standard Identifier for Libraries"),
|
||||
('isin', "International Securities Identification Number"),
|
||||
('ismn', "International Standard Music Number"),
|
||||
], "Type")
|
||||
type_string = type.translated('type')
|
||||
code = fields.Char("Code", required=True)
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.__access__.add('product')
|
||||
|
||||
@fields.depends('type', 'code')
|
||||
def on_change_with_code(self):
|
||||
if self.type and self.type != 'other':
|
||||
try:
|
||||
module = import_module('stdnum.%s' % self.type)
|
||||
return module.compact(self.code)
|
||||
except ImportError:
|
||||
pass
|
||||
except stdnum.exceptions.ValidationError:
|
||||
pass
|
||||
return self.code
|
||||
|
||||
def pre_validate(self):
|
||||
super().pre_validate()
|
||||
self.check_code()
|
||||
|
||||
@fields.depends('type', 'product', 'code')
|
||||
def check_code(self):
|
||||
if self.type:
|
||||
try:
|
||||
module = import_module('stdnum.%s' % self.type)
|
||||
except ModuleNotFoundError:
|
||||
return
|
||||
if not module.is_valid(self.code):
|
||||
if self.product and self.product.id > 0:
|
||||
product = self.product.rec_name
|
||||
else:
|
||||
product = ''
|
||||
raise InvalidIdentifierCode(
|
||||
gettext('product.msg_invalid_code',
|
||||
type=self.type_string,
|
||||
code=self.code,
|
||||
product=product))
|
||||
@@ -0,0 +1,240 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<record model="res.group" id="group_product_admin">
|
||||
<field name="name">Product Administration</field>
|
||||
</record>
|
||||
<record model="res.user-res.group" id="user_admin_group_product_admin">
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.icon" id="product_icon">
|
||||
<field name="name">tryton-product</field>
|
||||
<field name="path">icons/tryton-product.svg</field>
|
||||
</record>
|
||||
<menuitem
|
||||
name="Product"
|
||||
sequence="30"
|
||||
id="menu_main_product"
|
||||
icon="tryton-product"/>
|
||||
|
||||
<menuitem
|
||||
name="Configuration"
|
||||
parent="menu_main_product"
|
||||
sequence="0"
|
||||
id="menu_configuration"
|
||||
icon="tryton-settings"/>
|
||||
<record model="ir.ui.menu-res.group"
|
||||
id="menu_product_group_product_admin">
|
||||
<field name="menu" ref="menu_configuration"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
name="Reporting"
|
||||
parent="menu_main_product"
|
||||
sequence="100"
|
||||
id="menu_reporting"/>
|
||||
|
||||
<record model="ir.ui.view" id="template_view_tree">
|
||||
<field name="model">product.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">template_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="template_view_form">
|
||||
<field name="model">product.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">template_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_template_form">
|
||||
<field name="name">Products</field>
|
||||
<field name="res_model">product.template</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_template_list_view">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="template_view_tree"/>
|
||||
<field name="act_window" ref="act_template_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_template_form_view">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="template_view_form"/>
|
||||
<field name="act_window" ref="act_template_form"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_main_product"
|
||||
action="act_template_form"
|
||||
sequence="10"
|
||||
id="menu_template"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_template_by_category">
|
||||
<field name="name">Product by Category</field>
|
||||
<field name="res_model">product.template</field>
|
||||
<field name="context"
|
||||
eval="{'categories': [Eval('active_id')]}" pyson="1"/>
|
||||
<field name="domain"
|
||||
eval="[('categories_all','child_of', [Eval('active_id')], 'parent')]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_template_by_category_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="template_view_tree"/>
|
||||
<field name="act_window" ref="act_template_by_category"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_template_by_category_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="template_view_form"/>
|
||||
<field name="act_window" ref="act_template_by_category"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_template_by_category_keyword1">
|
||||
<field name="keyword">tree_open</field>
|
||||
<field name="model">product.category,-1</field>
|
||||
<field name="action" ref="act_template_by_category"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="product_view_tree">
|
||||
<field name="model">product.product</field>
|
||||
<field name="type" eval="None"/>
|
||||
<field name="inherit" ref="template_view_tree"/>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">product_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="product_view_tree_simple">
|
||||
<field name="model">product.product</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">product_tree_simple</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="product_view_form">
|
||||
<field name="model">product.product</field>
|
||||
<field name="type" eval="None"/>
|
||||
<field name="inherit" ref="template_view_form"/>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">product_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="product_view_form_simple">
|
||||
<field name="model">product.product</field>
|
||||
<field name="type">form</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">product_form_simple</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_product_form">
|
||||
<field name="name">Variants</field>
|
||||
<field name="res_model">product.product</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_product_list_view">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="product_view_tree"/>
|
||||
<field name="act_window" ref="act_product_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_product_form_view">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="product_view_form"/>
|
||||
<field name="act_window" ref="act_product_form"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_template"
|
||||
action="act_product_form"
|
||||
sequence="10"
|
||||
id="menu_product"
|
||||
icon="tryton-list"/>
|
||||
|
||||
<record model="ir.model.access" id="access_product_template">
|
||||
<field name="model" search="[('model', '=', 'product.template')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_product_template_admin">
|
||||
<field name="model" search="[('model', '=', 'product.template')]"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_product_from_template">
|
||||
<field name="name">Variants</field>
|
||||
<field name="res_model">product.product</field>
|
||||
<field name="domain" pyson="1"
|
||||
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('template', '=', Eval('active_id')), ('template', 'in', Eval('active_ids')))]"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_product_from_template_list_view">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="product_view_tree"/>
|
||||
<field name="act_window" ref="act_product_from_template"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_productfrom_template_form_view">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="product_view_form"/>
|
||||
<field name="act_window" ref="act_product_from_template"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword"
|
||||
id="act_product_from_template_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">product.template,-1</field>
|
||||
<field name="action" ref="act_product_from_template"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="identifier_view_form">
|
||||
<field name="model">product.identifier</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">identifier_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="identifier_view_list">
|
||||
<field name="model">product.identifier</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">identifier_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="identifier_view_list_sequence">
|
||||
<field name="model">product.identifier</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">identifier_list_sequence</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.sequence.type" id="sequence_type_product">
|
||||
<field name="name">Variant</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_product_group_admin">
|
||||
<field name="sequence_type" ref="sequence_type_product"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_product_group_product_admin">
|
||||
<field name="sequence_type" ref="sequence_type_product"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence.type" id="sequence_type_template">
|
||||
<field name="name">Product</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_template_group_admin">
|
||||
<field name="sequence_type" ref="sequence_type_template"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_template_group_template_admin">
|
||||
<field name="sequence_type" ref="sequence_type_template"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
||||
Executable
+153
@@ -0,0 +1,153 @@
|
||||
#!/usr/bin/env python3
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
import io
|
||||
import os
|
||||
import re
|
||||
from configparser import ConfigParser
|
||||
from setuptools import setup, find_packages
|
||||
|
||||
|
||||
def read(fname):
|
||||
content = io.open(
|
||||
os.path.join(os.path.dirname(__file__), fname),
|
||||
'r', encoding='utf-8').read()
|
||||
content = re.sub(
|
||||
r'(?m)^\.\. toctree::\r?\n((^$|^\s.*$)\r?\n)*', '', content)
|
||||
return content
|
||||
|
||||
|
||||
def get_require_version(name):
|
||||
if minor_version % 2:
|
||||
require = '%s >= %s.%s.dev0, < %s.%s'
|
||||
else:
|
||||
require = '%s >= %s.%s, < %s.%s'
|
||||
require %= (name, major_version, minor_version,
|
||||
major_version, minor_version + 1)
|
||||
return require
|
||||
|
||||
|
||||
config = ConfigParser()
|
||||
config.read_file(open(os.path.join(os.path.dirname(__file__), 'tryton.cfg')))
|
||||
info = dict(config.items('tryton'))
|
||||
for key in ('depends', 'extras_depend', 'xml'):
|
||||
if key in info:
|
||||
info[key] = info[key].strip().splitlines()
|
||||
version = info.get('version', '0.0.1')
|
||||
major_version, minor_version, _ = version.split('.', 2)
|
||||
major_version = int(major_version)
|
||||
minor_version = int(minor_version)
|
||||
name = 'trytond_product'
|
||||
|
||||
download_url = 'http://downloads.tryton.org/%s.%s/' % (
|
||||
major_version, minor_version)
|
||||
if minor_version % 2:
|
||||
version = '%s.%s.dev0' % (major_version, minor_version)
|
||||
download_url = (
|
||||
'hg+http://hg.tryton.org/modules/%s#egg=%s-%s' % (
|
||||
name[8:], name, version))
|
||||
local_version = []
|
||||
if os.environ.get('CI_JOB_ID'):
|
||||
local_version.append(os.environ['CI_JOB_ID'])
|
||||
else:
|
||||
for build in ['CI_BUILD_NUMBER', 'CI_JOB_NUMBER']:
|
||||
if os.environ.get(build):
|
||||
local_version.append(os.environ[build])
|
||||
else:
|
||||
local_version = []
|
||||
break
|
||||
if local_version:
|
||||
version += '+' + '.'.join(local_version)
|
||||
|
||||
requires = ['python-sql', 'python-stdnum']
|
||||
for dep in info.get('depends', []):
|
||||
if not re.match(r'(ir|res)(\W|$)', dep):
|
||||
requires.append(get_require_version('trytond_%s' % dep))
|
||||
requires.append(get_require_version('trytond'))
|
||||
|
||||
tests_require = [get_require_version('proteus')]
|
||||
dependency_links = []
|
||||
if minor_version % 2:
|
||||
dependency_links.append(
|
||||
'https://trydevpi.tryton.org/?local_version='
|
||||
+ '.'.join(local_version))
|
||||
|
||||
setup(name=name,
|
||||
version=version,
|
||||
description='Tryton module with products',
|
||||
long_description=read('README.rst'),
|
||||
author='Tryton',
|
||||
author_email='bugs@tryton.org',
|
||||
url='http://www.tryton.org/',
|
||||
download_url=download_url,
|
||||
project_urls={
|
||||
"Bug Tracker": 'https://bugs.tryton.org/',
|
||||
"Documentation": 'https://docs.tryton.org/projects/modules-product/',
|
||||
"Forum": 'https://www.tryton.org/forum',
|
||||
"Source Code": 'https://hg.tryton.org/modules/product',
|
||||
},
|
||||
keywords='tryton product',
|
||||
package_dir={'trytond.modules.product': '.'},
|
||||
packages=(
|
||||
['trytond.modules.product']
|
||||
+ ['trytond.modules.product.%s' % p for p in find_packages()]
|
||||
),
|
||||
package_data={
|
||||
'trytond.modules.product': (info.get('xml', [])
|
||||
+ ['tryton.cfg', 'view/*.xml', 'locale/*.po', 'icons/*.svg',
|
||||
'tests/*.rst']),
|
||||
},
|
||||
classifiers=[
|
||||
'Development Status :: 5 - Production/Stable',
|
||||
'Environment :: Plugins',
|
||||
'Framework :: Tryton',
|
||||
'Intended Audience :: Developers',
|
||||
'Intended Audience :: Financial and Insurance Industry',
|
||||
'Intended Audience :: Legal Industry',
|
||||
'Intended Audience :: Manufacturing',
|
||||
'License :: OSI Approved :: '
|
||||
'GNU General Public License v3 or later (GPLv3+)',
|
||||
'Natural Language :: Bulgarian',
|
||||
'Natural Language :: Catalan',
|
||||
'Natural Language :: Chinese (Simplified)',
|
||||
'Natural Language :: Czech',
|
||||
'Natural Language :: Dutch',
|
||||
'Natural Language :: English',
|
||||
'Natural Language :: Finnish',
|
||||
'Natural Language :: French',
|
||||
'Natural Language :: German',
|
||||
'Natural Language :: Hungarian',
|
||||
'Natural Language :: Indonesian',
|
||||
'Natural Language :: Italian',
|
||||
'Natural Language :: Persian',
|
||||
'Natural Language :: Polish',
|
||||
'Natural Language :: Portuguese (Brazilian)',
|
||||
'Natural Language :: Romanian',
|
||||
'Natural Language :: Russian',
|
||||
'Natural Language :: Slovenian',
|
||||
'Natural Language :: Spanish',
|
||||
'Natural Language :: Turkish',
|
||||
'Operating System :: OS Independent',
|
||||
'Programming Language :: Python :: 3',
|
||||
'Programming Language :: Python :: 3.6',
|
||||
'Programming Language :: Python :: 3.7',
|
||||
'Programming Language :: Python :: 3.8',
|
||||
'Programming Language :: Python :: 3.9',
|
||||
'Programming Language :: Python :: Implementation :: CPython',
|
||||
'Programming Language :: Python :: Implementation :: PyPy',
|
||||
'Topic :: Office/Business',
|
||||
],
|
||||
license='GPL-3',
|
||||
python_requires='>=3.6',
|
||||
install_requires=requires,
|
||||
dependency_links=dependency_links,
|
||||
zip_safe=False,
|
||||
entry_points="""
|
||||
[trytond.modules]
|
||||
product = trytond.modules.product
|
||||
""",
|
||||
test_suite='tests',
|
||||
test_loader='trytond.test_loader:Loader',
|
||||
tests_require=tests_require,
|
||||
)
|
||||
@@ -0,0 +1,9 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
try:
|
||||
from trytond.modules.product.tests.test_product import suite
|
||||
except ImportError:
|
||||
from .test_product import suite
|
||||
|
||||
__all__ = ['suite']
|
||||
@@ -0,0 +1,49 @@
|
||||
===========================
|
||||
Product Identifier Scenario
|
||||
===========================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('product')
|
||||
|
||||
Create product::
|
||||
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = 'product'
|
||||
>>> template.default_uom = unit
|
||||
>>> template.type = 'service'
|
||||
>>> template.list_price = Decimal('40')
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
The identifier code is computed when set::
|
||||
|
||||
>>> identifier = product.identifiers.new()
|
||||
>>> identifier.type = 'ean'
|
||||
>>> identifier.code = '123 456 7890 123'
|
||||
>>> identifier.code
|
||||
'1234567890123'
|
||||
|
||||
An Error is raised for invalid code::
|
||||
|
||||
>>> product.save() # doctest: +IGNORE_EXCEPTION_DETAIL
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
InvalidIdentifierCode: ...
|
||||
|
||||
Valid codes are saved correctly::
|
||||
|
||||
>>> identifier.code = '978-0-471-11709-4'
|
||||
>>> product.save()
|
||||
>>> identifier, = product.identifiers
|
||||
>>> identifier.code
|
||||
'9780471117094'
|
||||
@@ -0,0 +1,57 @@
|
||||
========================
|
||||
Product Variant Scenario
|
||||
========================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('product')
|
||||
|
||||
Create a template::
|
||||
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = "Product"
|
||||
>>> template.default_uom = unit
|
||||
>>> template.list_price = Decimal('42.0000')
|
||||
>>> template.code = "PROD"
|
||||
>>> template.save()
|
||||
>>> len(template.products)
|
||||
1
|
||||
>>> product, = template.products
|
||||
>>> product.code
|
||||
'PROD'
|
||||
>>> product.suffix_code = "001"
|
||||
>>> product.save()
|
||||
>>> product.code
|
||||
'PROD001'
|
||||
|
||||
Create a variant::
|
||||
|
||||
>>> Product = Model.get('product.product')
|
||||
>>> product = Product()
|
||||
>>> product.template = template
|
||||
>>> product.name
|
||||
'Product'
|
||||
>>> product.list_price
|
||||
Decimal('42.0000')
|
||||
>>> product.suffix_code = "002"
|
||||
>>> product.save()
|
||||
>>> product.list_price
|
||||
Decimal('42.0000')
|
||||
>>> product.code
|
||||
'PROD002'
|
||||
|
||||
Change template code::
|
||||
|
||||
>>> template.code = "PRD"
|
||||
>>> template.save()
|
||||
>>> sorted([p.code for p in template.products])
|
||||
['PRD001', 'PRD002']
|
||||
@@ -0,0 +1,475 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import doctest
|
||||
import unittest
|
||||
from decimal import Decimal
|
||||
import trytond.tests.test_tryton
|
||||
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
|
||||
from trytond.tests.test_tryton import doctest_teardown
|
||||
from trytond.tests.test_tryton import doctest_checker
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
from trytond.modules.company.tests import CompanyTestMixin
|
||||
|
||||
from ..product import round_price
|
||||
|
||||
|
||||
class ProductTestCase(CompanyTestMixin, ModuleTestCase):
|
||||
'Test Product module'
|
||||
module = 'product'
|
||||
|
||||
@with_transaction()
|
||||
def test_uom_non_zero_rate_factor(self):
|
||||
'Test uom non_zero_rate_factor constraint'
|
||||
pool = Pool()
|
||||
UomCategory = pool.get('product.uom.category')
|
||||
Uom = pool.get('product.uom')
|
||||
transaction = Transaction()
|
||||
category, = UomCategory.create([{'name': 'Test'}])
|
||||
|
||||
self.assertRaises(Exception, Uom.create, [{
|
||||
'name': 'Test',
|
||||
'symbol': 'T',
|
||||
'category': category.id,
|
||||
'rate': 0,
|
||||
'factor': 0,
|
||||
}])
|
||||
transaction.rollback()
|
||||
|
||||
def create():
|
||||
category, = UomCategory.create([{'name': 'Test'}])
|
||||
return Uom.create([{
|
||||
'name': 'Test',
|
||||
'symbol': 'T',
|
||||
'category': category.id,
|
||||
'rate': 1.0,
|
||||
'factor': 1.0,
|
||||
}])[0]
|
||||
|
||||
uom = create()
|
||||
self.assertRaises(Exception, Uom.write, [uom], {
|
||||
'rate': 0.0,
|
||||
})
|
||||
transaction.rollback()
|
||||
|
||||
uom = create()
|
||||
self.assertRaises(Exception, Uom.write, [uom], {
|
||||
'factor': 0.0,
|
||||
})
|
||||
transaction.rollback()
|
||||
|
||||
uom = create()
|
||||
self.assertRaises(Exception, Uom.write, [uom], {
|
||||
'rate': 0.0,
|
||||
'factor': 0.0,
|
||||
})
|
||||
transaction.rollback()
|
||||
|
||||
@with_transaction()
|
||||
def test_uom_check_factor_and_rate(self):
|
||||
'Test uom check_factor_and_rate constraint'
|
||||
pool = Pool()
|
||||
UomCategory = pool.get('product.uom.category')
|
||||
Uom = pool.get('product.uom')
|
||||
transaction = Transaction()
|
||||
category, = UomCategory.create([{'name': 'Test'}])
|
||||
|
||||
self.assertRaises(Exception, Uom.create, [{
|
||||
'name': 'Test',
|
||||
'symbol': 'T',
|
||||
'category': category.id,
|
||||
'rate': 2,
|
||||
'factor': 2,
|
||||
}])
|
||||
transaction.rollback()
|
||||
|
||||
def create():
|
||||
category, = UomCategory.create([{'name': 'Test'}])
|
||||
return Uom.create([{
|
||||
'name': 'Test',
|
||||
'symbol': 'T',
|
||||
'category': category.id,
|
||||
'rate': 1.0,
|
||||
'factor': 1.0,
|
||||
}])[0]
|
||||
|
||||
uom = create()
|
||||
self.assertRaises(Exception, Uom.write, [uom], {
|
||||
'rate': 2.0,
|
||||
})
|
||||
transaction.rollback()
|
||||
|
||||
uom = create()
|
||||
self.assertRaises(Exception, Uom.write, [uom], {
|
||||
'factor': 2.0,
|
||||
})
|
||||
transaction.rollback()
|
||||
|
||||
@with_transaction()
|
||||
def test_uom_select_accurate_field(self):
|
||||
'Test uom select_accurate_field function'
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
tests = [
|
||||
('Meter', 'factor'),
|
||||
('Kilometer', 'factor'),
|
||||
('centimeter', 'rate'),
|
||||
('Foot', 'factor'),
|
||||
]
|
||||
for name, result in tests:
|
||||
uom, = Uom.search([
|
||||
('name', '=', name),
|
||||
], limit=1)
|
||||
self.assertEqual(result, uom.accurate_field)
|
||||
|
||||
@with_transaction()
|
||||
def test_uom_compute_qty(self):
|
||||
'Test uom compute_qty function'
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
tests = [
|
||||
('Kilogram', 100, 'Gram', 100000, 100000),
|
||||
('Gram', 1, 'Pound', 0.0022046226218487759, 0.0),
|
||||
('Second', 5, 'Minute', 0.083333333333333343, 0.08),
|
||||
('Second', 25, 'Hour', 0.0069444444444444441, 0.01),
|
||||
('Millimeter', 3, 'Inch', 0.11811023622047245, 0.12),
|
||||
('Millimeter', 0, 'Inch', 0, 0),
|
||||
('Millimeter', None, 'Inch', None, None),
|
||||
]
|
||||
for from_name, qty, to_name, result, rounded_result in tests:
|
||||
from_uom, = Uom.search([
|
||||
('name', '=', from_name),
|
||||
], limit=1)
|
||||
to_uom, = Uom.search([
|
||||
('name', '=', to_name),
|
||||
], limit=1)
|
||||
self.assertEqual(result, Uom.compute_qty(
|
||||
from_uom, qty, to_uom, False))
|
||||
self.assertEqual(rounded_result, Uom.compute_qty(
|
||||
from_uom, qty, to_uom, True))
|
||||
self.assertEqual(0.2, Uom.compute_qty(None, 0.2, None, False))
|
||||
self.assertEqual(0.2, Uom.compute_qty(None, 0.2, None, True))
|
||||
|
||||
tests_exceptions = [
|
||||
('Millimeter', 3, 'Pound', ValueError),
|
||||
('Kilogram', 'not a number', 'Pound', TypeError),
|
||||
]
|
||||
for from_name, qty, to_name, exception in tests_exceptions:
|
||||
from_uom, = Uom.search([
|
||||
('name', '=', from_name),
|
||||
], limit=1)
|
||||
to_uom, = Uom.search([
|
||||
('name', '=', to_name),
|
||||
], limit=1)
|
||||
self.assertRaises(exception, Uom.compute_qty,
|
||||
from_uom, qty, to_uom, False)
|
||||
self.assertRaises(exception, Uom.compute_qty,
|
||||
from_uom, qty, to_uom, True)
|
||||
self.assertRaises(ValueError, Uom.compute_qty,
|
||||
None, qty, to_uom, True)
|
||||
self.assertRaises(ValueError, Uom.compute_qty,
|
||||
from_uom, qty, None, True)
|
||||
|
||||
@with_transaction()
|
||||
def test_uom_compute_qty_category(self):
|
||||
"Test uom compute_qty with different category"
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
|
||||
g, = Uom.search([
|
||||
('name', '=', "Gram"),
|
||||
], limit=1)
|
||||
m3, = Uom.search([
|
||||
('name', '=', "Cubic meter"),
|
||||
], limit=1)
|
||||
|
||||
for quantity, result, keys in [
|
||||
(10000, 0.02, dict(factor=2)),
|
||||
(20000, 0.01, dict(rate=2)),
|
||||
(30000, 0.01, dict(rate=3, factor=0.333333, round=False)),
|
||||
]:
|
||||
msg = 'quantity: %r, keys: %r' % (quantity, keys)
|
||||
self.assertEqual(
|
||||
Uom.compute_qty(g, quantity, m3, **keys), result,
|
||||
msg=msg)
|
||||
|
||||
@with_transaction()
|
||||
def test_uom_compute_price(self):
|
||||
'Test uom compute_price function'
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
tests = [
|
||||
('Kilogram', Decimal('100'), 'Gram', Decimal('0.1')),
|
||||
('Gram', Decimal('1'), 'Pound', Decimal('453.59237')),
|
||||
('Second', Decimal('5'), 'Minute', Decimal('300')),
|
||||
('Second', Decimal('25'), 'Hour', Decimal('90000')),
|
||||
('Millimeter', Decimal('3'), 'Inch', Decimal('76.2')),
|
||||
('Millimeter', Decimal('0'), 'Inch', Decimal('0')),
|
||||
('Millimeter', None, 'Inch', None),
|
||||
]
|
||||
for from_name, price, to_name, result in tests:
|
||||
from_uom, = Uom.search([
|
||||
('name', '=', from_name),
|
||||
], limit=1)
|
||||
to_uom, = Uom.search([
|
||||
('name', '=', to_name),
|
||||
], limit=1)
|
||||
self.assertEqual(result, Uom.compute_price(
|
||||
from_uom, price, to_uom))
|
||||
self.assertEqual(Decimal('0.2'), Uom.compute_price(
|
||||
None, Decimal('0.2'), None))
|
||||
|
||||
tests_exceptions = [
|
||||
('Millimeter', Decimal('3'), 'Pound', ValueError),
|
||||
('Kilogram', 'not a number', 'Pound', TypeError),
|
||||
]
|
||||
for from_name, price, to_name, exception in tests_exceptions:
|
||||
from_uom, = Uom.search([
|
||||
('name', '=', from_name),
|
||||
], limit=1)
|
||||
to_uom, = Uom.search([
|
||||
('name', '=', to_name),
|
||||
], limit=1)
|
||||
self.assertRaises(exception, Uom.compute_price,
|
||||
from_uom, price, to_uom)
|
||||
self.assertRaises(ValueError, Uom.compute_price,
|
||||
None, price, to_uom)
|
||||
self.assertRaises(ValueError, Uom.compute_price,
|
||||
from_uom, price, None)
|
||||
|
||||
@with_transaction()
|
||||
def test_uom_compute_price_category(self):
|
||||
"Test uom compute_price with different category"
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
|
||||
g, = Uom.search([
|
||||
('name', '=', "Gram"),
|
||||
], limit=1)
|
||||
m3, = Uom.search([
|
||||
('name', '=', "Cubic meter"),
|
||||
], limit=1)
|
||||
|
||||
for price, result, keys in [
|
||||
(Decimal('0.001'), Decimal('500'), dict(factor=2)),
|
||||
(Decimal('0.002'), Decimal('4000'), dict(rate=2)),
|
||||
(Decimal('0.003'), Decimal('9000'), dict(
|
||||
rate=3, factor=0.333333)),
|
||||
]:
|
||||
msg = 'price: %r, keys: %r' % (price, keys)
|
||||
self.assertEqual(
|
||||
Uom.compute_price(g, price, m3, **keys), result,
|
||||
msg=msg)
|
||||
|
||||
@with_transaction()
|
||||
def test_product_search_domain(self):
|
||||
'Test product.product search_domain function'
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
Template = pool.get('product.template')
|
||||
Product = pool.get('product.product')
|
||||
|
||||
kilogram, = Uom.search([
|
||||
('name', '=', 'Kilogram'),
|
||||
], limit=1)
|
||||
millimeter, = Uom.search([
|
||||
('name', '=', 'Millimeter'),
|
||||
])
|
||||
pt1, pt2 = Template.create([{
|
||||
'name': 'P1',
|
||||
'type': 'goods',
|
||||
'list_price': Decimal(20),
|
||||
'default_uom': kilogram.id,
|
||||
'products': [('create', [{
|
||||
'code': '1',
|
||||
}])]
|
||||
}, {
|
||||
'name': 'P2',
|
||||
'type': 'goods',
|
||||
'list_price': Decimal(20),
|
||||
'default_uom': millimeter.id,
|
||||
'products': [('create', [{
|
||||
'code': '2',
|
||||
}])]
|
||||
}])
|
||||
p, = Product.search([
|
||||
('default_uom.name', '=', 'Kilogram'),
|
||||
])
|
||||
self.assertEqual(p, pt1.products[0])
|
||||
p, = Product.search([
|
||||
('default_uom.name', '=', 'Millimeter'),
|
||||
])
|
||||
self.assertEqual(p, pt2.products[0])
|
||||
|
||||
@with_transaction()
|
||||
def test_search_domain_conversion(self):
|
||||
'Test the search domain conversion'
|
||||
pool = Pool()
|
||||
Category = pool.get('product.category')
|
||||
Template = pool.get('product.template')
|
||||
Product = pool.get('product.product')
|
||||
Uom = pool.get('product.uom')
|
||||
|
||||
category1, = Category.create([{'name': 'Category1'}])
|
||||
category2, = Category.create([{'name': 'Category2'}])
|
||||
uom, = Uom.search([], limit=1)
|
||||
values1 = {
|
||||
'name': 'Some product-1',
|
||||
'categories': [('add', [category1.id])],
|
||||
'type': 'goods',
|
||||
'list_price': Decimal('10'),
|
||||
'default_uom': uom.id,
|
||||
'products': [('create', [{}])],
|
||||
}
|
||||
values2 = {
|
||||
'name': 'Some product-2',
|
||||
'categories': [('add', [category2.id])],
|
||||
'type': 'goods',
|
||||
'list_price': Decimal('10'),
|
||||
'default_uom': uom.id,
|
||||
'products': [('create', [{}])],
|
||||
}
|
||||
|
||||
# This is a false positive as there is 1 product with the
|
||||
# template 1 and the same product with category 1. If you do not
|
||||
# create two categories (or any other relation on the template
|
||||
# model) you wont be able to check as in most cases the
|
||||
# id of the template and the related model would be same (1).
|
||||
# So two products have been created with same category. So that
|
||||
# domain ('template.categories', '=', 1) will return 2 records which
|
||||
# it supposed to be.
|
||||
template1, template2, template3, template4 = Template.create(
|
||||
[values1, values1.copy(), values2, values2.copy()]
|
||||
)
|
||||
self.assertEqual(Product.search([], count=True), 4)
|
||||
self.assertEqual(
|
||||
Product.search([
|
||||
('categories', '=', category1.id),
|
||||
], count=True), 2)
|
||||
|
||||
self.assertEqual(
|
||||
Product.search([
|
||||
('template.categories', '=', category1.id),
|
||||
], count=True), 2)
|
||||
|
||||
self.assertEqual(
|
||||
Product.search([
|
||||
('categories', '=', category2.id),
|
||||
], count=True), 2)
|
||||
self.assertEqual(
|
||||
Product.search([
|
||||
('template.categories', '=', category2.id),
|
||||
], count=True), 2)
|
||||
|
||||
@with_transaction()
|
||||
def test_uom_rounding(self):
|
||||
'Test uom rounding functions'
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
tests = [
|
||||
(2.53, .1, 2.5, 2.6, 2.5),
|
||||
(3.8, .1, 3.8, 3.8, 3.8),
|
||||
(3.7, .1, 3.7, 3.7, 3.7),
|
||||
(1.3, .5, 1.5, 1.5, 1.0),
|
||||
(1.1, .3, 1.2, 1.2, 0.9),
|
||||
(17, 10, 20, 20, 10),
|
||||
(7, 10, 10, 10, 0),
|
||||
(4, 10, 0, 10, 0),
|
||||
(17, 15, 15, 30, 15),
|
||||
(2.5, 1.4, 2.8, 2.8, 1.4),
|
||||
]
|
||||
for number, precision, round, ceil, floor in tests:
|
||||
uom = Uom(rounding=precision)
|
||||
self.assertEqual(uom.round(number), round)
|
||||
self.assertEqual(uom.ceil(number), ceil)
|
||||
self.assertEqual(uom.floor(number), floor)
|
||||
|
||||
@with_transaction()
|
||||
def test_product_order(self):
|
||||
'Test product field order'
|
||||
pool = Pool()
|
||||
Template = pool.get('product.template')
|
||||
Product = pool.get('product.product')
|
||||
Uom = pool.get('product.uom')
|
||||
|
||||
uom, = Uom.search([], limit=1)
|
||||
values1 = {
|
||||
'name': 'Product A',
|
||||
'type': 'assets',
|
||||
'list_price': Decimal('10'),
|
||||
'default_uom': uom.id,
|
||||
'products': [('create', [{'suffix_code': 'AA'}])],
|
||||
}
|
||||
values2 = {
|
||||
'name': 'Product B',
|
||||
'type': 'goods',
|
||||
'list_price': Decimal('10'),
|
||||
'default_uom': uom.id,
|
||||
'products': [('create', [{'suffix_code': 'BB'}])],
|
||||
}
|
||||
|
||||
template1, template2 = Template.create([values1, values2])
|
||||
product1, product2 = Product.search([])
|
||||
|
||||
# Non-inherited field.
|
||||
self.assertEqual(
|
||||
Product.search([], order=[('code', 'ASC')]), [product1, product2])
|
||||
self.assertEqual(
|
||||
Product.search([], order=[('code', 'DESC')]), [product2, product1])
|
||||
self.assertEqual(Product.search(
|
||||
[('name', 'like', '%')], order=[('code', 'ASC')]),
|
||||
[product1, product2])
|
||||
self.assertEqual(Product.search(
|
||||
[('name', 'like', '%')], order=[('code', 'DESC')]),
|
||||
[product2, product1])
|
||||
|
||||
# Inherited field with custom order.
|
||||
self.assertEqual(
|
||||
Product.search([], order=[('name', 'ASC')]), [product1, product2])
|
||||
self.assertEqual(
|
||||
Product.search([], order=[('name', 'DESC')]), [product2, product1])
|
||||
self.assertEqual(Product.search(
|
||||
[('name', 'like', '%')], order=[('name', 'ASC')]),
|
||||
[product1, product2])
|
||||
self.assertEqual(Product.search(
|
||||
[('name', 'like', '%')], order=[('name', 'DESC')]),
|
||||
[product2, product1])
|
||||
|
||||
# Inherited field without custom order.
|
||||
self.assertEqual(
|
||||
Product.search([], order=[('type', 'ASC')]), [product1, product2])
|
||||
self.assertEqual(
|
||||
Product.search([], order=[('type', 'DESC')]), [product2, product1])
|
||||
self.assertEqual(Product.search(
|
||||
[('name', 'like', '%')], order=[('type', 'ASC')]),
|
||||
[product1, product2])
|
||||
self.assertEqual(Product.search(
|
||||
[('name', 'like', '%')], order=[('type', 'DESC')]),
|
||||
[product2, product1])
|
||||
|
||||
def test_round_price(self):
|
||||
for value, result in [
|
||||
(Decimal('1'), Decimal('1.0000')),
|
||||
(Decimal('1.12345'), Decimal('1.1234')),
|
||||
(1, Decimal('1')),
|
||||
]:
|
||||
with self.subTest(value=value):
|
||||
self.assertEqual(round_price(value), result)
|
||||
|
||||
|
||||
def suite():
|
||||
suite = trytond.tests.test_tryton.suite()
|
||||
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
|
||||
ProductTestCase))
|
||||
suite.addTests(doctest.DocFileSuite(
|
||||
'scenario_product_variant.rst',
|
||||
tearDown=doctest_teardown, encoding='utf-8',
|
||||
checker=doctest_checker,
|
||||
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
|
||||
suite.addTests(doctest.DocFileSuite(
|
||||
'scenario_product_identifier.rst',
|
||||
tearDown=doctest_teardown, encoding='utf-8',
|
||||
checker=doctest_checker,
|
||||
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
|
||||
return suite
|
||||
@@ -0,0 +1,15 @@
|
||||
[tox]
|
||||
envlist = {py36,py37,py38,py39}-{sqlite,postgresql},pypy3-{sqlite,postgresql}
|
||||
|
||||
[testenv]
|
||||
commands = {envpython} setup.py test
|
||||
deps =
|
||||
{py36,py37,py38,py39}-postgresql: psycopg2 >= 2.5
|
||||
pypy3-postgresql: psycopg2cffi >= 2.5
|
||||
py36-sqlite: sqlitebck
|
||||
setenv =
|
||||
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
|
||||
postgresql: TRYTOND_DATABASE_URI={env:POSTGRESQL_URI:postgresql://}
|
||||
sqlite: DB_NAME={env:SQLITE_NAME::memory:}
|
||||
postgresql: DB_NAME={env:POSTGRESQL_NAME:test}
|
||||
install_command = pip install --pre --find-links https://trydevpi.tryton.org/?local_version={env:CI_JOB_ID:{env:CI_BUILD_NUMBER}.{env:CI_JOB_NUMBER}} {opts} {packages}
|
||||
@@ -0,0 +1,12 @@
|
||||
[tryton]
|
||||
version=6.0.4
|
||||
depends:
|
||||
company
|
||||
ir
|
||||
res
|
||||
xml:
|
||||
product.xml
|
||||
category.xml
|
||||
uom.xml
|
||||
configuration.xml
|
||||
message.xml
|
||||
@@ -0,0 +1,317 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from decimal import Decimal
|
||||
from math import ceil, floor, log10
|
||||
|
||||
from trytond.config import config
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import (
|
||||
ModelView, ModelSQL, DeactivableMixin, fields, Check, SymbolMixin)
|
||||
from trytond.model.exceptions import AccessError
|
||||
from trytond.pyson import Eval
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
from .exceptions import UOMValidationError
|
||||
|
||||
__all__ = ['uom_conversion_digits']
|
||||
|
||||
uom_conversion_digits = (
|
||||
config.getint('product', 'uom_conversion_decimal', default=12),) * 2
|
||||
|
||||
|
||||
class UomCategory(ModelSQL, ModelView):
|
||||
"Unit of Measure Category"
|
||||
__name__ = 'product.uom.category'
|
||||
name = fields.Char('Name', required=True, translate=True)
|
||||
uoms = fields.One2Many('product.uom', 'category', "Units of Measure")
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(UomCategory, cls).__setup__()
|
||||
cls._order.insert(0, ('name', 'ASC'))
|
||||
|
||||
|
||||
class Uom(SymbolMixin, DeactivableMixin, ModelSQL, ModelView):
|
||||
"Unit of Measure"
|
||||
__name__ = 'product.uom'
|
||||
name = fields.Char("Name", size=None, required=True, translate=True)
|
||||
symbol = fields.Char(
|
||||
"Symbol", size=10, required=True, translate=True,
|
||||
help="The symbol that represents the unit of measure.")
|
||||
category = fields.Many2One(
|
||||
'product.uom.category', "Category", required=True, ondelete='RESTRICT',
|
||||
help="The category that contains the unit of measure.\n"
|
||||
"Conversions between different units of measure can be done if they "
|
||||
"are in the same category.")
|
||||
rate = fields.Float(
|
||||
"Rate", digits=uom_conversion_digits, required=True,
|
||||
help="The coefficient for the formula:\n"
|
||||
"1 (base unit) = coef (this unit)")
|
||||
factor = fields.Float(
|
||||
"Factor", digits=uom_conversion_digits, required=True,
|
||||
help="The coefficient for the formula:\n"
|
||||
"coefficient (base unit) = 1 (this unit)")
|
||||
rounding = fields.Float(
|
||||
"Rounding Precision", digits=(12, Eval('digits', 12)), required=True,
|
||||
domain=[
|
||||
('rounding', '>', 0),
|
||||
],
|
||||
depends=['digits'],
|
||||
help="The accuracy to which values are rounded.")
|
||||
digits = fields.Integer(
|
||||
"Display Digits", required=True,
|
||||
help="The number of digits to display after the decimal separator.")
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Uom, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('non_zero_rate_factor', Check(t, (t.rate != 0) | (t.factor != 0)),
|
||||
'product.msg_uom_no_zero_factor_rate')
|
||||
]
|
||||
cls._order.insert(0, ('name', 'ASC'))
|
||||
|
||||
@classmethod
|
||||
def check_xml_record(cls, records, values):
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def default_rate():
|
||||
return 1.0
|
||||
|
||||
@staticmethod
|
||||
def default_factor():
|
||||
return 1.0
|
||||
|
||||
@staticmethod
|
||||
def default_rounding():
|
||||
return 0.01
|
||||
|
||||
@staticmethod
|
||||
def default_digits():
|
||||
return 2
|
||||
|
||||
@fields.depends('factor')
|
||||
def on_change_factor(self):
|
||||
if (self.factor or 0.0) == 0.0:
|
||||
self.rate = 0.0
|
||||
else:
|
||||
self.rate = round(1.0 / self.factor, uom_conversion_digits[1])
|
||||
|
||||
@fields.depends('rate')
|
||||
def on_change_rate(self):
|
||||
if (self.rate or 0.0) == 0.0:
|
||||
self.factor = 0.0
|
||||
else:
|
||||
self.factor = round(
|
||||
1.0 / self.rate, uom_conversion_digits[1])
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
if clause[1].startswith('!') or clause[1].startswith('not '):
|
||||
bool_op = 'AND'
|
||||
else:
|
||||
bool_op = 'OR'
|
||||
return [bool_op,
|
||||
(cls._rec_name,) + tuple(clause[1:]),
|
||||
('symbol',) + tuple(clause[1:]),
|
||||
]
|
||||
|
||||
def round(self, number):
|
||||
return _round(self, number, func=round)
|
||||
|
||||
def ceil(self, number):
|
||||
return _round(self, number, func=ceil)
|
||||
|
||||
def floor(self, number):
|
||||
return _round(self, number, func=floor)
|
||||
|
||||
@classmethod
|
||||
def validate(cls, uoms):
|
||||
super(Uom, cls).validate(uoms)
|
||||
for uom in uoms:
|
||||
uom.check_factor_and_rate()
|
||||
|
||||
def check_factor_and_rate(self):
|
||||
"Check coherence between factor and rate"
|
||||
if self.rate == self.factor == 0.0:
|
||||
return
|
||||
if (self.rate != round(
|
||||
1.0 / self.factor, uom_conversion_digits[1])
|
||||
and self.factor != round(
|
||||
1.0 / self.rate, uom_conversion_digits[1])):
|
||||
raise UOMValidationError(
|
||||
gettext('product.msg_uom_incompatible_factor_rate',
|
||||
uom=self.rec_name))
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
if Transaction().user == 0:
|
||||
super(Uom, cls).write(*args)
|
||||
return
|
||||
|
||||
actions = iter(args)
|
||||
all_uoms = []
|
||||
for uoms, values in zip(actions, actions):
|
||||
if 'rate' not in values and 'factor' not in values \
|
||||
and 'category' not in values:
|
||||
continue
|
||||
all_uoms += uoms
|
||||
|
||||
old_uom = dict((uom.id, (uom.factor, uom.rate, uom.category))
|
||||
for uom in all_uoms)
|
||||
|
||||
super(Uom, cls).write(*args)
|
||||
|
||||
for uom in all_uoms:
|
||||
for i, field in enumerate(['factor', 'rate', 'category']):
|
||||
if getattr(uom, field) != old_uom[uom.id][i]:
|
||||
raise AccessError(
|
||||
gettext('product.msg_uom_modify_%s' % field,
|
||||
uom=uom.rec_name),
|
||||
gettext('product.msg_uom_modify_options'))
|
||||
|
||||
@property
|
||||
def accurate_field(self):
|
||||
"""
|
||||
Select the more accurate field.
|
||||
It chooses the field that has the least decimal.
|
||||
"""
|
||||
return _accurate_operator(self.factor, self.rate)
|
||||
|
||||
@classmethod
|
||||
def compute_qty(cls, from_uom, qty, to_uom, round=True,
|
||||
factor=None, rate=None):
|
||||
"""
|
||||
Convert quantity for given uom's.
|
||||
|
||||
When converting between uom's from different categories the factor and
|
||||
rate provide the ratio to use to convert between the category's base
|
||||
uom's.
|
||||
"""
|
||||
if not qty or (from_uom is None and to_uom is None):
|
||||
return qty
|
||||
if from_uom is None:
|
||||
raise ValueError("missing from_uom")
|
||||
if to_uom is None:
|
||||
raise ValueError("missing to_uom")
|
||||
if from_uom.category.id != to_uom.category.id:
|
||||
if not factor and not rate:
|
||||
raise ValueError(
|
||||
"cannot convert between %s and %s without a factor or rate"
|
||||
% (from_uom.category.name, to_uom.category.name))
|
||||
elif factor or rate:
|
||||
raise ValueError("factor and rate not allowed for same category")
|
||||
|
||||
if from_uom.accurate_field == 'factor':
|
||||
amount = qty * from_uom.factor
|
||||
else:
|
||||
amount = qty / from_uom.rate
|
||||
|
||||
if factor and rate:
|
||||
if _accurate_operator(factor, rate) == 'rate':
|
||||
factor = None
|
||||
else:
|
||||
rate = None
|
||||
if factor:
|
||||
amount *= factor
|
||||
elif rate:
|
||||
amount /= rate
|
||||
|
||||
if to_uom.accurate_field == 'factor':
|
||||
amount = amount / to_uom.factor
|
||||
else:
|
||||
amount = amount * to_uom.rate
|
||||
|
||||
if round:
|
||||
amount = to_uom.round(amount)
|
||||
|
||||
return amount
|
||||
|
||||
@classmethod
|
||||
def compute_price(cls, from_uom, price, to_uom, factor=None, rate=None):
|
||||
"""
|
||||
Convert price for given uom's.
|
||||
|
||||
When converting between uom's from different categories the factor and
|
||||
rate provide the ratio to use to convert between the category's base
|
||||
uom's.
|
||||
"""
|
||||
if not price or (from_uom is None and to_uom is None):
|
||||
return price
|
||||
if from_uom is None:
|
||||
raise ValueError("missing from_uom")
|
||||
if to_uom is None:
|
||||
raise ValueError("missing to_uom")
|
||||
if from_uom.category.id != to_uom.category.id:
|
||||
if not factor and not rate:
|
||||
raise ValueError(
|
||||
"cannot convert between %s and %s without a factor or rate"
|
||||
% (from_uom.category.name, to_uom.category.name))
|
||||
elif factor or rate:
|
||||
raise ValueError("factor and rate not allow for same category")
|
||||
|
||||
format_ = '%%.%df' % uom_conversion_digits[1]
|
||||
|
||||
if from_uom.accurate_field == 'factor':
|
||||
new_price = price / Decimal(format_ % from_uom.factor)
|
||||
else:
|
||||
new_price = price * Decimal(format_ % from_uom.rate)
|
||||
|
||||
if factor and rate:
|
||||
if _accurate_operator(factor, rate) == 'rate':
|
||||
factor = None
|
||||
else:
|
||||
rate = None
|
||||
if factor:
|
||||
new_price /= Decimal(factor)
|
||||
elif rate:
|
||||
new_price *= Decimal(rate)
|
||||
|
||||
if to_uom.accurate_field == 'factor':
|
||||
new_price = new_price * Decimal(format_ % to_uom.factor)
|
||||
else:
|
||||
new_price = new_price / Decimal(format_ % to_uom.rate)
|
||||
|
||||
return new_price
|
||||
|
||||
|
||||
def _round(uom, number, func=round):
|
||||
if not number:
|
||||
# Avoid unnecessary computation
|
||||
return number
|
||||
precision = uom.rounding
|
||||
# Convert precision into an integer greater than 1 to avoid precision lost.
|
||||
# This works for most cases because rounding is often: n * 10**i
|
||||
if precision < 1:
|
||||
exp = -floor(log10(precision))
|
||||
factor = 10 ** exp
|
||||
number *= factor
|
||||
precision *= factor
|
||||
else:
|
||||
factor = 1
|
||||
# Divide by factor which is an integer to avoid precision lost due to
|
||||
# multiplication by float < 1.
|
||||
# example:
|
||||
# >>> 3 * 0.1
|
||||
# 0.30000000000000004
|
||||
# >>> 3 / 10.
|
||||
# 0.3
|
||||
return func(number / precision) * precision / factor
|
||||
|
||||
|
||||
def _accurate_operator(factor, rate):
|
||||
lengths = {}
|
||||
for name, value in [('rate', rate), ('factor', factor)]:
|
||||
format_ = '%%.%df' % uom_conversion_digits[1]
|
||||
lengths[name] = len((format_ % value).split('.')[1].rstrip('0'))
|
||||
if lengths['rate'] < lengths['factor']:
|
||||
return 'rate'
|
||||
elif lengths['factor'] < lengths['rate']:
|
||||
return 'factor'
|
||||
elif factor >= 1.0:
|
||||
return 'factor'
|
||||
else:
|
||||
return 'rate'
|
||||
@@ -0,0 +1,353 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="uom_view_tree">
|
||||
<field name="model">product.uom</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">uom_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="uom_view_form">
|
||||
<field name="model">product.uom</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">uom_form</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_uom_form">
|
||||
<field name="name">Units of Measure</field>
|
||||
<field name="res_model">product.uom</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_uom_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="uom_view_tree"/>
|
||||
<field name="act_window" ref="act_uom_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_uom_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="uom_view_form"/>
|
||||
<field name="act_window" ref="act_uom_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_configuration"
|
||||
action="act_uom_form"
|
||||
sequence="50"
|
||||
id="menu_uom_form"/>
|
||||
|
||||
<record model="ir.ui.view" id="uom_category_view_tree">
|
||||
<field name="model">product.uom.category</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">uom_category_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="uom_category_view_form">
|
||||
<field name="model">product.uom.category</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">uom_category_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_uom_category_form">
|
||||
<field name="name">Categories</field>
|
||||
<field name="res_model">product.uom.category</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_uom_category_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="uom_category_view_tree"/>
|
||||
<field name="act_window" ref="act_uom_category_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_uom_category_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="uom_category_view_form"/>
|
||||
<field name="act_window" ref="act_uom_category_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_uom_form"
|
||||
action="act_uom_category_form"
|
||||
sequence="20"
|
||||
id="menu_uom_category_form"/>
|
||||
|
||||
<record model="product.uom.category" id="uom_cat_unit">
|
||||
<field name="name">Units</field>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_unit">
|
||||
<field name="name">Unit</field>
|
||||
<field name="symbol">u</field>
|
||||
<field name="category" ref="uom_cat_unit"/>
|
||||
<field name="rate" eval="1."/>
|
||||
<field name="factor" eval="1."/>
|
||||
<field name="rounding" eval="1."/>
|
||||
<field name="digits" eval="0"/>
|
||||
</record>
|
||||
|
||||
<record model="product.uom.category" id="uom_cat_weight">
|
||||
<field name="name">Weight</field>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_kilogram">
|
||||
<field name="name">Kilogram</field>
|
||||
<field name="symbol">kg</field>
|
||||
<field name="category" ref="uom_cat_weight"/>
|
||||
<field name="factor" eval="1."/>
|
||||
<field name="rate" eval="1."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_gram">
|
||||
<field name="name">Gram</field>
|
||||
<field name="symbol">g</field>
|
||||
<field name="category" ref="uom_cat_weight"/>
|
||||
<field name="factor" eval="0.001"/>
|
||||
<field name="rate" eval="1000."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_carat">
|
||||
<field name="name">Carat</field>
|
||||
<field name="symbol">c</field>
|
||||
<field name="category" ref="uom_cat_weight"/>
|
||||
<field name="factor" eval="0.0002"/>
|
||||
<field name="rate" eval="5000."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_pound">
|
||||
<field name="name">Pound</field>
|
||||
<field name="symbol">lb</field>
|
||||
<field name="category" ref="uom_cat_weight"/>
|
||||
<field name="factor" eval="0.45359237"/>
|
||||
<field name="rate" eval="round(1.0 / 0.45359237, 12)"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_ounce">
|
||||
<field name="name">Ounce</field>
|
||||
<field name="symbol">oz</field>
|
||||
<field name="category" ref="uom_cat_weight"/>
|
||||
<field name="factor" eval="0.028349523125"/>
|
||||
<field name="rate" eval="round(1.0 / 0.028349523125, 12)"/>
|
||||
</record>
|
||||
|
||||
<record model="product.uom.category" id="uom_cat_time">
|
||||
<field name="name">Time</field>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_second">
|
||||
<field name="name">Second</field>
|
||||
<field name="symbol">s</field>
|
||||
<field name="category" ref="uom_cat_time"/>
|
||||
<field name="factor" eval="round(1.0 / 3600, 12)"/>
|
||||
<field name="rate" eval="3600."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_minute">
|
||||
<field name="name">Minute</field>
|
||||
<field name="symbol">min</field>
|
||||
<field name="category" ref="uom_cat_time"/>
|
||||
<field name="factor" eval="round(1.0 / 60, 12)"/>
|
||||
<field name="rate" eval="60."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_hour">
|
||||
<field name="name">Hour</field>
|
||||
<field name="symbol">h</field>
|
||||
<field name="category" ref="uom_cat_time"/>
|
||||
<field name="factor" eval="1."/>
|
||||
<field name="rate" eval="1."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_work_day">
|
||||
<field name="name">Work Day</field>
|
||||
<field name="symbol">wd</field>
|
||||
<field name="category" ref="uom_cat_time"/>
|
||||
<field name="factor" eval="8."/>
|
||||
<field name="rate" eval="0.125"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_day">
|
||||
<field name="name">Day</field>
|
||||
<field name="symbol">d</field>
|
||||
<field name="category" ref="uom_cat_time"/>
|
||||
<field name="factor" eval="24."/>
|
||||
<field name="rate" eval="round(1.0 / 24, 12)"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="product.uom.category" id="uom_cat_length">
|
||||
<field name="name">Length</field>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_meter">
|
||||
<field name="name">Meter</field>
|
||||
<field name="symbol">m</field>
|
||||
<field name="category" ref="uom_cat_length"/>
|
||||
<field name="factor" eval="1."/>
|
||||
<field name="rate" eval="1."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_kilometer">
|
||||
<field name="name">Kilometer</field>
|
||||
<field name="symbol">km</field>
|
||||
<field name="category" ref="uom_cat_length"/>
|
||||
<field name="factor" eval="1000."/>
|
||||
<field name="rate" eval="0.001"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_centimeter">
|
||||
<field name="name">centimeter</field>
|
||||
<field name="symbol">cm</field>
|
||||
<field name="category" ref="uom_cat_length"/>
|
||||
<field name="factor" eval="0.01"/>
|
||||
<field name="rate" eval="100."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_millimeter">
|
||||
<field name="name">Millimeter</field>
|
||||
<field name="symbol">mm</field>
|
||||
<field name="category" ref="uom_cat_length"/>
|
||||
<field name="factor" eval="0.001"/>
|
||||
<field name="rate" eval="1000."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_foot">
|
||||
<field name="name">Foot</field>
|
||||
<field name="symbol">ft</field>
|
||||
<field name="category" ref="uom_cat_length"/>
|
||||
<field name="factor" eval="0.3048"/>
|
||||
<field name="rate" eval="round(1.0 / 0.3048, 12)"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_yard">
|
||||
<field name="name">Yard</field>
|
||||
<field name="symbol">yd</field>
|
||||
<field name="category" ref="uom_cat_length"/>
|
||||
<field name="factor" eval="0.9144"/>
|
||||
<field name="rate" eval="round(1.0/ 0.9144, 12)"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_inch">
|
||||
<field name="name">Inch</field>
|
||||
<field name="symbol">in</field>
|
||||
<field name="category" ref="uom_cat_length"/>
|
||||
<field name="factor" eval="0.0254"/>
|
||||
<field name="rate" eval="round(1.0 / 0.0254, 12)"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_mile">
|
||||
<field name="name">Mile</field>
|
||||
<field name="symbol">mi</field>
|
||||
<field name="category" ref="uom_cat_length"/>
|
||||
<field name="factor" eval="1609.344"/>
|
||||
<field name="rate" eval="round(1.0 / 1609.344, 12)"/>
|
||||
</record>
|
||||
|
||||
<record model="product.uom.category" id="uom_cat_volume">
|
||||
<field name="name">Volume</field>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_cubic_meter">
|
||||
<field name="name">Cubic meter</field>
|
||||
<field name="symbol">m³</field>
|
||||
<field name="category" ref="uom_cat_volume"/>
|
||||
<field name="factor" eval="1000."/>
|
||||
<field name="rate" eval="0.001"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_liter">
|
||||
<field name="name">Liter</field>
|
||||
<field name="symbol">l</field>
|
||||
<field name="category" ref="uom_cat_volume"/>
|
||||
<field name="factor" eval="1."/>
|
||||
<field name="rate" eval="1."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_cubic_centimeter">
|
||||
<field name="name">Cubic centimeter</field>
|
||||
<field name="symbol">cm³</field>
|
||||
<field name="category" ref="uom_cat_volume"/>
|
||||
<field name="factor" eval="0.001"/>
|
||||
<field name="rate" eval="1000."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_cubic_inch">
|
||||
<field name="name">Cubic inch</field>
|
||||
<field name="symbol">in³</field>
|
||||
<field name="category" ref="uom_cat_volume"/>
|
||||
<field name="factor" eval="0.016387064"/>
|
||||
<field name="rate" eval="round(1.0 / 0.016387064, 12)"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_cubic_foot">
|
||||
<field name="name">Cubic foot</field>
|
||||
<field name="symbol">ft³</field>
|
||||
<field name="category" ref="uom_cat_volume"/>
|
||||
<field name="factor" eval="28.316846592"/>
|
||||
<field name="rate" eval="round(1.0 / 28.316846592, 12)"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_gallon">
|
||||
<field name="name">Gallon</field>
|
||||
<field name="symbol">gal</field>
|
||||
<field name="category" ref="uom_cat_volume"/>
|
||||
<field name="factor" eval="3.785411784"/>
|
||||
<field name="rate" eval="round(1.0 / 3.785411784, 12)"/>
|
||||
</record>
|
||||
|
||||
<record model="product.uom.category" id="uom_cat_surface">
|
||||
<field name="name">Surface</field>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_square_meter">
|
||||
<field name="name">Square meter</field>
|
||||
<field name="symbol">m²</field>
|
||||
<field name="category" ref="uom_cat_surface"/>
|
||||
<field name="factor" eval="1."/>
|
||||
<field name="rate" eval="1."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_square_centimeter">
|
||||
<field name="name">Square centimeter</field>
|
||||
<field name="symbol">cm²</field>
|
||||
<field name="category" ref="uom_cat_surface"/>
|
||||
<field name="factor" eval="0.0001"/>
|
||||
<field name="rate" eval="10000."/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_are">
|
||||
<field name="name">Are</field>
|
||||
<field name="symbol">a</field>
|
||||
<field name="category" ref="uom_cat_surface"/>
|
||||
<field name="factor" eval="100."/>
|
||||
<field name="rate" eval="0.01"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_hectare">
|
||||
<field name="name">Hectare</field>
|
||||
<field name="symbol">ha</field>
|
||||
<field name="category" ref="uom_cat_surface"/>
|
||||
<field name="factor" eval="10000."/>
|
||||
<field name="rate" eval="0.0001"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_square_inch">
|
||||
<field name="name">Square inch</field>
|
||||
<field name="symbol">in²</field>
|
||||
<field name="category" ref="uom_cat_surface"/>
|
||||
<field name="factor" eval="0.00064516"/>
|
||||
<field name="rate" eval="round(1.0 / 0.00064516, 12)"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_square_foot">
|
||||
<field name="name">Square foot</field>
|
||||
<field name="symbol">ft²</field>
|
||||
<field name="category" ref="uom_cat_surface"/>
|
||||
<field name="factor" eval="0.09290304"/>
|
||||
<field name="rate" eval="round(1.0 / 0.09290304, 12)"/>
|
||||
</record>
|
||||
<record model="product.uom" id="uom_square_yard">
|
||||
<field name="name">Square yard</field>
|
||||
<field name="symbol">yd²</field>
|
||||
<field name="category" ref="uom_cat_surface"/>
|
||||
<field name="factor" eval="0.83612736"/>
|
||||
<field name="rate" eval="round(1.0 / 0.83612736, 12)"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="ir.model.access" id="access_uom">
|
||||
<field name="model" search="[('model', '=', 'product.uom')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_uom_admin">
|
||||
<field name="model" search="[('model', '=', 'product.uom')]"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_uom_category">
|
||||
<field name="model" search="[('model', '=', 'product.uom.category')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_uom_category_admin">
|
||||
<field name="model" search="[('model', '=', 'product.uom.category')]"/>
|
||||
<field name="group" ref="group_product_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form>
|
||||
<label name="name"/>
|
||||
<field name="name"/>
|
||||
<label name="parent"/>
|
||||
<field name="parent"/>
|
||||
<group colspan="2" col="-1" id="checkboxes">
|
||||
<!-- Add here some checkboxes ! -->
|
||||
</group>
|
||||
<button name="add_products" colspan="2"/>
|
||||
<notebook colspan="4">
|
||||
<page string="Children" col="1" id="childs">
|
||||
<field name="childs"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tree>
|
||||
<field name="rec_name" expand="1"/>
|
||||
<field name="name" tree_invisible="1"/>
|
||||
</tree>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form col="2">
|
||||
<label name="name"/>
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="templates" colspan="2"/>
|
||||
</form>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tree keyword_open="1">
|
||||
<field name="name" expand="1"/>
|
||||
<field name="parent" tree_invisible="1"/>
|
||||
<field name="childs" tree_invisible="1"/>
|
||||
</tree>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form>
|
||||
<label name="default_cost_price_method"/>
|
||||
<field name="default_cost_price_method"/>
|
||||
<separator id="sequences" string="Sequences" colspan="4"/>
|
||||
<label name="template_sequence"/>
|
||||
<field name="template_sequence"/>
|
||||
<label name="product_sequence"/>
|
||||
<field name="product_sequence"/>
|
||||
</form>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form>
|
||||
<label name="product"/>
|
||||
<field name="product"/>
|
||||
<label name="sequence"/>
|
||||
<field name="sequence"/>
|
||||
<label name="type"/>
|
||||
<field name="type"/>
|
||||
<label name="code"/>
|
||||
<field name="code"/>
|
||||
</form>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tree>
|
||||
<field name="product"/>
|
||||
<field name="type"/>
|
||||
<field name="code" expand="1"/>
|
||||
</tree>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tree sequence="sequence">
|
||||
<field name="product"/>
|
||||
<field name="type"/>
|
||||
<field name="code" expand="1"/>
|
||||
</tree>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="/form/field[@name='code']" position="replace">
|
||||
<group col="-1" name="code" string="">
|
||||
<field name="prefix_code"/>
|
||||
<field name="suffix_code"/>
|
||||
</group>
|
||||
</xpath>
|
||||
<xpath expr="/form/notebook/page[@id='general']/label[@name='type']"
|
||||
position="before">
|
||||
<label name="template"/>
|
||||
<field name="template" colspan="3"/>
|
||||
</xpath>
|
||||
<xpath expr="/form/notebook/page/field[@name='products']" position="replace">
|
||||
<group id="description" colspan="2" col="1" yexpand="1" yfill="1">
|
||||
<separator name="description"/>
|
||||
<field name="description"/>
|
||||
</group>
|
||||
</xpath>
|
||||
<xpath expr="/form/notebook/page[@id='general']" position="after">
|
||||
<page name="identifiers" col="1">
|
||||
<field name="identifiers" pre_validate="1"
|
||||
view_ids="product.identifier_view_list_sequence"/>
|
||||
</page>
|
||||
</xpath>
|
||||
</data>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form>
|
||||
<label name="template"/>
|
||||
<field name="template"/>
|
||||
<newline/>
|
||||
<label name="code"/>
|
||||
<group col="-1" name="code" string="">
|
||||
<field name="prefix_code"/>
|
||||
<field name="suffix_code"/>
|
||||
</group>
|
||||
<label name="active"/>
|
||||
<field name="active" xexpand="0" width="100"/>
|
||||
<label name="cost_price"/>
|
||||
<field name="cost_price"/>
|
||||
<field name="identifiers" colspan="4" pre_validate="1" view_ids="product.identifier_view_list_sequence"/>
|
||||
<separator name="description" colspan="4"/>
|
||||
<field name="description" colspan="4"/>
|
||||
</form>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="//field[@name='products']" position="replace">
|
||||
</xpath>
|
||||
</data>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tree>
|
||||
<field name="rec_name" expand="1"/>
|
||||
</tree>
|
||||
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form col="6">
|
||||
<label name="name"/>
|
||||
<field name="name" xexpand="1"/>
|
||||
<label name="code"/>
|
||||
<field name="code"/>
|
||||
<label name="active"/>
|
||||
<field name="active" xexpand="0" width="100"/>
|
||||
|
||||
<notebook colspan="6">
|
||||
<page string="General" id="general">
|
||||
<label name="type"/>
|
||||
<field name="type"/>
|
||||
<group colspan="2" col="-1" id="checkboxes">
|
||||
<label name="consumable"/>
|
||||
<field name="consumable" xexpand="0" width="25"/>
|
||||
</group>
|
||||
<label name="default_uom"/>
|
||||
<field name="default_uom" />
|
||||
<newline/>
|
||||
<label name="list_price"/>
|
||||
<field name="list_price"/>
|
||||
<newline/>
|
||||
<label name="cost_price"/>
|
||||
<field name="cost_price"/>
|
||||
<label name="cost_price_method"/>
|
||||
<field name="cost_price_method"/>
|
||||
<newline/>
|
||||
<field name="products" mode="form,tree" colspan="2"
|
||||
view_ids="product.product_view_form_simple"/>
|
||||
<field name="categories" colspan="2"
|
||||
view_ids="product.category_view_list"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tree>
|
||||
<field name="code" expand="1"/>
|
||||
<field name="name" expand="2"/>
|
||||
<field name="list_price"/>
|
||||
<field name="cost_price"/>
|
||||
<field name="type"/>
|
||||
<field name="default_uom"/>
|
||||
<field name="products"/>
|
||||
</tree>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form col="6">
|
||||
<label name="name"/>
|
||||
<field name="name"/>
|
||||
</form>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tree>
|
||||
<field name="name" expand="1"/>
|
||||
</tree>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form col="4">
|
||||
<label name="name"/>
|
||||
<field name="name"/>
|
||||
<label name="category"/>
|
||||
<field name="category"/>
|
||||
<label name="symbol"/>
|
||||
<field name="symbol"/>
|
||||
<label name="active"/>
|
||||
<field name="active"/>
|
||||
<label name="factor"/>
|
||||
<field name="factor"/>
|
||||
<label name="rate"/>
|
||||
<field name="rate"/>
|
||||
<label name="rounding"/>
|
||||
<field name="rounding"/>
|
||||
<label name="digits"/>
|
||||
<field name="digits"/>
|
||||
</form>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tree>
|
||||
<field name="name" expand="2"/>
|
||||
<field name="symbol"/>
|
||||
<field name="category" expand="1"/>
|
||||
<field name="factor"/>
|
||||
<field name="rate"/>
|
||||
<field name="rounding"/>
|
||||
</tree>
|
||||
@@ -0,0 +1,68 @@
|
||||
clone:
|
||||
hg:
|
||||
image: plugins/hg
|
||||
environment:
|
||||
- HG_SHARE_POOL=/root/.cache/hg
|
||||
volumes:
|
||||
- cache:/root/.cache
|
||||
|
||||
pipeline:
|
||||
tox:
|
||||
image: ${IMAGE}
|
||||
environment:
|
||||
- CFLAGS=-O0
|
||||
- DB_CACHE=/cache
|
||||
- TOX_TESTENV_PASSENV=CFLAGS DB_CACHE CI_BUILD_NUMBER CI_JOB_NUMBER CI_JOB_ID
|
||||
- POSTGRESQL_URI=postgresql://postgres@postgresql:5432/
|
||||
commands:
|
||||
- echo "[extensions]" >> /root/.hgrc
|
||||
- echo "hgext.share =" >> /root/.hgrc
|
||||
- echo "[share]" >> /root/.hgrc
|
||||
- echo "pool = /root/.cache/hg" >> /root/.hgrc
|
||||
- pip install tox
|
||||
- tox -e "${TOXENV}-${DATABASE}"
|
||||
volumes:
|
||||
- cache:/root/.cache
|
||||
check_dist:
|
||||
image: ${IMAGE}
|
||||
commands:
|
||||
- pip install twine
|
||||
- python setup.py sdist
|
||||
- twine check dist/*
|
||||
|
||||
services:
|
||||
postgresql:
|
||||
image: postgres
|
||||
environment:
|
||||
- POSTGRES_HOST_AUTH_METHOD=trust
|
||||
command: "-c fsync=off -c synchronous_commit=off -c full_page_writes=off"
|
||||
when:
|
||||
matrix:
|
||||
DATABASE: postgresql
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- IMAGE: python:3.6
|
||||
TOXENV: py36
|
||||
DATABASE: sqlite
|
||||
- IMAGE: python:3.6
|
||||
TOXENV: py36
|
||||
DATABASE: postgresql
|
||||
- IMAGE: python:3.7
|
||||
TOXENV: py37
|
||||
DATABASE: sqlite
|
||||
- IMAGE: python:3.7
|
||||
TOXENV: py37
|
||||
DATABASE: postgresql
|
||||
- IMAGE: python:3.8
|
||||
TOXENV: py38
|
||||
DATABASE: sqlite
|
||||
- IMAGE: python:3.8
|
||||
TOXENV: py38
|
||||
DATABASE: postgresql
|
||||
- IMAGE: python:3.9
|
||||
TOXENV: py39
|
||||
DATABASE: sqlite
|
||||
- IMAGE: python:3.9
|
||||
TOXENV: py39
|
||||
DATABASE: postgresql
|
||||
@@ -0,0 +1,2 @@
|
||||
[flake8]
|
||||
ignore=E123,E124,E126,E128,E741,W503
|
||||
@@ -0,0 +1,34 @@
|
||||
Version 6.0.0 - 2021-05-03
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 5.8.0 - 2020-11-02
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Remove support for Python 3.5
|
||||
|
||||
Version 5.6.0 - 2020-05-04
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 5.4.0 - 2019-11-04
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 5.2.0 - 2019-05-06
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 5.0.0 - 2018-10-01
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Remove support for Python 2.7
|
||||
|
||||
Version 4.8.0 - 2018-04-23
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 4.6.0 - 2017-10-30
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 4.4.0 - 2017-05-01
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 4.2.0 - 2016-11-28
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
|
||||
Version 4.0.0 - 2016-05-02
|
||||
* Initial release
|
||||
@@ -0,0 +1,15 @@
|
||||
Copyright (C) 2015-2021 Cédric Krier.
|
||||
Copyright (C) 2015-2021 B2CK SPRL.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
@@ -0,0 +1,5 @@
|
||||
include CHANGELOG
|
||||
include COPYRIGHT
|
||||
include LICENSE
|
||||
include README.rst
|
||||
include doc/*
|
||||
@@ -0,0 +1 @@
|
||||
doc/index.rst
|
||||
@@ -0,0 +1,14 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.pool import Pool
|
||||
from . import product
|
||||
|
||||
|
||||
def register():
|
||||
Pool.register(
|
||||
product.Template,
|
||||
product.Product,
|
||||
product.ClassificationDummy,
|
||||
product.ClassificationTreeDummy,
|
||||
module='product_classification', type_='model')
|
||||
@@ -0,0 +1,6 @@
|
||||
Product Classification Module
|
||||
#############################
|
||||
|
||||
The Product Classification module defines the tools for other modules to create
|
||||
classifications of products.
|
||||
It adds a reference field *classification* to the product template.
|
||||
@@ -0,0 +1,54 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Условие за плащане"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Наследници"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Условие за плащане"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Родител"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Класификация"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Класификация"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Класификация"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Seleccionable"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Fills"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Pare"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Seleccionable"
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classificació"
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classificació"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Classificacions"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr "Classificació de productes de prova"
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr "Arbre de la classificació de productes de prova"
|
||||
@@ -0,0 +1,51 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Namu"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Namu"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classifications"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Wählbar"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Untergeordnet (Klassifizierungen)"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Übergeordnet (Klassifizierung)"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Wählbar"
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Klassifizierung"
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Klassifizierung"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Klassifizierungen"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr "Pseudoartikelklassifizierung"
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr "Pseudoartikelklassifizierungsbaum"
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Seleccionable"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Hijos"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Padre"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Seleccionable"
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Clasificación"
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Clasificación"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Clasificaciones"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr "Clasificación de productos de prueba"
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr "Árbol de la clasificación de productos de prueba"
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nimetus"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Valitav"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Alamjaotis"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nimetus"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Ülemjaotis"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Valitav"
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Liigitus"
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Liigitus"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Liigitus"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr "Test toote liigitus"
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr "Test toote liigituse puu"
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "نام"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "قابل انتخاب"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "زیر مجموعه"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "نام"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "منبع"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "قابل انتخاب"
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "طبقه بندی"
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "طبقه بندی"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "انواع محصول"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr "طبقه بندی محصول ساختگی"
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr "درخت طبقه بندی محصول ساختگی"
|
||||
@@ -0,0 +1,49 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classifications"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Sélectionnable"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Enfants"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Parent"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Sélectionnable"
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classification"
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classification"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr "Classification produit factice"
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr "Arbre de classification produit factice"
|
||||
@@ -0,0 +1,53 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Név"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Gyermek (csomag)"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Név"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Szülő (csomag)"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classifications"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Cabang"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Induk"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,48 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Selezionabile"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Figlio"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Padre"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "Selezionabile"
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classificazione"
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classificazione"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr "Classificazione d'esempio del prodotto"
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr "Albero della classificazione d'esempio del prodotto"
|
||||
@@ -0,0 +1,48 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "ຊື່"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "ເລືອກໄດ້"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "ບັນຊີຍ່ອຍ"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "ຊື"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "ບັນຊີແມ່"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "ເລືອກໄດ້"
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "ການຈັດປະເພດ"
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "ການຈັດປະເພດ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr "ການຈັດປະເພດ ຜະລິດຕະພັນ"
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr "ຕາຕະລາງຈັດປະເພດ ຜະລິດຕະພັນ"
|
||||
@@ -0,0 +1,51 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Namu"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Namu"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classifications"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Classifications"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.classification.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Naam"
|
||||
|
||||
msgctxt "field:product.classification.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "selecteerbaar"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,childs:"
|
||||
msgid "Children"
|
||||
msgstr "Onderliggende niveaus"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,name:"
|
||||
msgid "Name"
|
||||
msgstr "Naam"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,parent:"
|
||||
msgid "Parent"
|
||||
msgstr "Bovenliggend niveau"
|
||||
|
||||
msgctxt "field:product.classification_tree.dummy,selectable:"
|
||||
msgid "Selectable"
|
||||
msgstr "selecteerbaar"
|
||||
|
||||
msgctxt "field:product.product,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classificatie"
|
||||
|
||||
msgctxt "field:product.template,classification:"
|
||||
msgid "Classification"
|
||||
msgstr "Classificatie"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_classification"
|
||||
msgid "Classifications"
|
||||
msgstr "Classificatie"
|
||||
|
||||
msgctxt "model:product.classification.dummy,name:"
|
||||
msgid "Dummy Product Classification"
|
||||
msgstr "Dummy Productclassificatie"
|
||||
|
||||
msgctxt "model:product.classification_tree.dummy,name:"
|
||||
msgid "Dummy Product Classification Tree"
|
||||
msgstr "Dummy productclassificatieboom"
|
||||
Loaded 100 of 5522 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user