diff --git a/setup/stock_mts_mto_rule/odoo/addons/stock_mts_mto_rule b/setup/stock_mts_mto_rule/odoo/addons/stock_mts_mto_rule new file mode 120000 index 000000000..de51d31cf --- /dev/null +++ b/setup/stock_mts_mto_rule/odoo/addons/stock_mts_mto_rule @@ -0,0 +1 @@ +../../../../stock_mts_mto_rule \ No newline at end of file diff --git a/setup/stock_mts_mto_rule/setup.py b/setup/stock_mts_mto_rule/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/stock_mts_mto_rule/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/stock_mts_mto_rule/README.rst b/stock_mts_mto_rule/README.rst new file mode 100644 index 000000000..38fb4659a --- /dev/null +++ b/stock_mts_mto_rule/README.rst @@ -0,0 +1,93 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +================== +Stock MTS+MTO Rule +================== + +This module add a Make To Stock + Make to Order Route. + +If you choose the make to stock + make to order rule instead of the make to +order route, the creation of a purchase order will depend on the virtual stock. +There are 3 cases : + +1. The virtual stock of the product is 0 + => It will act exactly like the make to order route. + +2. The virtual stock is equal to the quantity ordered + => It will act exactly like a make to stock route + +3. The virtual stock is more than 0 but less than ordered quantity + => On part of the products will be taken from stock and a purchase order + will be created for the rest. So it will act like both make to order and + make to stock rule. + +Example : +We have a virtual stock of : 1 product A +A sale Order is made for 3 products A. +2 Procurements will be created : + +1. 1 with a make to stock rule and a quantity of 1 + +2. 1 with a make to order rule and a quantity of 2. + +After validation, a purchase order with 2 products will be created. + +Configuration +============= + +You have to select 'Use MTO+MTS rules' on the company's warehouse form. + +Usage +===== + +You have to select the mts+mto route on the product form. +You should not select both the mts+mto route and the mto route. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/153/13.0 + +Known issues +============ + +If you cancel a delivery order and then recreate it from Recreate +Delivery Order button in sale order form, then the stock level at the time of +the Re-Creation won't be taken into account. So if a purchase order was created +when the sale order was first validated, a similar purchase order will be created +during the Re-creation of the delivery order, even if not needed regarding the actual stock. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Florian da Costa +* Jared Kipe + +Do not contact contributors directly about support or help with technical issues. + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/stock_mts_mto_rule/__init__.py b/stock_mts_mto_rule/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/stock_mts_mto_rule/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_mts_mto_rule/__manifest__.py b/stock_mts_mto_rule/__manifest__.py new file mode 100644 index 000000000..138d0b159 --- /dev/null +++ b/stock_mts_mto_rule/__manifest__.py @@ -0,0 +1,16 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Stock MTS+MTO Rule", + "summary": "Add a MTS+MTO route", + "version": "13.0.1.0.1", + "development_status": "Mature", + "category": "Warehouse", + "website": "https://github.com/OCA/stock-logistics-warehouse", + "author": "Akretion,Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["stock"], + "data": ["data/stock_data.xml", "view/pull_rule.xml", "view/warehouse.xml"], +} diff --git a/stock_mts_mto_rule/data/stock_data.xml b/stock_mts_mto_rule/data/stock_data.xml new file mode 100644 index 000000000..28fb7eac3 --- /dev/null +++ b/stock_mts_mto_rule/data/stock_data.xml @@ -0,0 +1,11 @@ + + + + + Make To Order + Make To Stock + 5 + + + diff --git a/stock_mts_mto_rule/i18n/cs_CZ.po b/stock_mts_mto_rule/i18n/cs_CZ.po new file mode 100644 index 000000000..430d4b29f --- /dev/null +++ b/stock_mts_mto_rule/i18n/cs_CZ.po @@ -0,0 +1,126 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# Lukáš Spurný , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-27 11:37+0000\n" +"PO-Revision-Date: 2018-02-27 11:37+0000\n" +"Last-Translator: Lukáš Spurný , 2018\n" +"Language-Team: Czech (Czech Republic) (https://www.transifex.com/oca/" +"teams/23907/cs_CZ/)\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "" + +#~ msgid "Procurement Rule" +#~ msgstr "Pravidlo zadávání zakázek" + +#~ msgid "Procurement" +#~ msgstr "Zakázka" diff --git a/stock_mts_mto_rule/i18n/de.po b/stock_mts_mto_rule/i18n/de.po new file mode 100644 index 000000000..58cab11e1 --- /dev/null +++ b/stock_mts_mto_rule/i18n/de.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 03:53+0000\n" +"PO-Revision-Date: 2017-11-30 03:53+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "Wähle aus MTO und MTS" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" +"Wird diese neue Route in der Produktdetailsicht gewählt, wird eine " +"Beschaffung nur dann bewirkt, wenn der Planbestand unter 0 fällt, " +"anderenfalls wird das Produkt aus dem Bestand genommen." + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "MTO-Regel" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "MTO+MTS-Regel" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "MTS-Regel" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "MTS+MTO" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "MTO Auftragsfertigung + MTS Lagerfertigung" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +#, fuzzy +msgid "Stock Rule" +msgstr "MTS-Regel" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "Verwende MTO+MTS-Regeln" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Lager" + +#~ msgid "Can't find MTO Rule on the warehouse" +#~ msgstr "Kann MTO-Regel zum Lager nicht finden" + +#~ msgid "Can't find MTS Rule on the warehouse" +#~ msgstr "Kann MTS-Regel zum Lager nicht finden" + +#~ msgid "Can't find any generic MTS+MTO route." +#~ msgstr "Kann keine allg. MTO- oder MTS-Route finden" + +#~ msgid "Procurement Rule" +#~ msgstr "Beschaffungsregel" + +#~ msgid "Mto+Mts Procurement" +#~ msgstr "MTO+MTS-Beschaffung" + +#~ msgid "Procurement" +#~ msgstr "Beschaffung" + +#~ msgid "Procurements" +#~ msgstr "Beschaffungen" diff --git a/stock_mts_mto_rule/i18n/es.po b/stock_mts_mto_rule/i18n/es.po new file mode 100644 index 000000000..40bfae467 --- /dev/null +++ b/stock_mts_mto_rule/i18n/es.po @@ -0,0 +1,147 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +# Pedro M. Baeza , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 03:53+0000\n" +"PO-Revision-Date: 2017-11-30 03:53+0000\n" +"Last-Translator: Pedro M. Baeza , 2017\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "Escoja entre \"bajo existencias\" o \"bajo pedido\"" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" +"Si se selecciona esta nueva ruta en la vista formulario de producto, se " +"creará un pedido de compra sólo si la cantidad virtual es menor de 0. Si no, " +"se cogerá el producto desde existencias." + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "Regla \"bajo pedido\"" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "Regla MTO+MTS" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "Regla \"bajo existencias\"" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "MTS+MTO" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "Bajo pedido + bajo existencias" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +#, fuzzy +msgid "Stock Rule" +msgstr "Regla \"bajo existencias\"" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "Usar reglas MTO+MTS" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Almacén" + +#~ msgid "Can't find MTO Rule on the warehouse" +#~ msgstr "No se puede encontrar un regla \"bajo pedido\" en el almacén" + +#~ msgid "Can't find MTS Rule on the warehouse" +#~ msgstr "No se puede encontrar una regla \"bajo existencias\" en el almacén" + +#~ msgid "Can't find any generic MTS+MTO route." +#~ msgstr "" +#~ "No se puede encontrar una regla genérica MTS+MTO - \"bajo existencias" +#~ "+bajo pedido\"." + +#~ msgid "Procurement Rule" +#~ msgstr "Regla de abastecimiento" + +#~ msgid "Mto+Mts Procurement" +#~ msgstr "Abastecimiento MTO+MTS" + +#~ msgid "Procurement" +#~ msgstr "Abastecimiento" + +#~ msgid "Procurements" +#~ msgstr "Abastecimientos" diff --git a/stock_mts_mto_rule/i18n/es_MX.po b/stock_mts_mto_rule/i18n/es_MX.po new file mode 100644 index 000000000..2af486809 --- /dev/null +++ b/stock_mts_mto_rule/i18n/es_MX.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 02:58+0000\n" +"PO-Revision-Date: 2017-07-28 02:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "" + +#~ msgid "Procurement" +#~ msgstr "Contratación" diff --git a/stock_mts_mto_rule/i18n/fr.po b/stock_mts_mto_rule/i18n/fr.po new file mode 100644 index 000000000..ad099c56c --- /dev/null +++ b/stock_mts_mto_rule/i18n/fr.po @@ -0,0 +1,148 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +# Quentin THEURET , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-27 11:37+0000\n" +"PO-Revision-Date: 2018-02-27 11:37+0000\n" +"Last-Translator: Quentin THEURET , 2018\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" +"Choisir entre MTS(Make To Stock: Produit géré en stock) et MTO(Make To " +"Order: Produit fabriqué à la commande). " + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" +"Si cette nouvelle route est sélectionnée sur la vue formulaire du produit, " +"une commande d'achat sera créée seulement si le stock virtuel est inférieur " +"à 0, sinon, le produit sera pris en stock." + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "MTO (Fab. à la demande)" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "MTS: Produit stocké" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +#, fuzzy +msgid "Stock Rule" +msgstr "MTS: Produit stocké" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Entrepôt" + +#~ msgid "Can't find MTO Rule on the warehouse" +#~ msgstr "" +#~ "Ne trouve pas la règle MTO (Make To Order: Fabrication à la commande) de " +#~ "l'entrepôt" + +#~ msgid "Can't find MTS Rule on the warehouse" +#~ msgstr "" +#~ "Ne trouve pas la règle MTS (Make To Stock: produit géré en stock) de " +#~ "l'entrepôt" + +#~ msgid "Can't find any generic MTS+MTO route." +#~ msgstr "Aucune règle par défaut MTS+MTO configurée. " + +#~ msgid "Procurement Rule" +#~ msgstr "Règle d'approvisionnement" + +#~ msgid "Procurement" +#~ msgstr "Procurement" + +#~ msgid "Procurements" +#~ msgstr "Approvisionnements" diff --git a/stock_mts_mto_rule/i18n/fr_FR.po b/stock_mts_mto_rule/i18n/fr_FR.po new file mode 100644 index 000000000..bd78ad46e --- /dev/null +++ b/stock_mts_mto_rule/i18n/fr_FR.po @@ -0,0 +1,121 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 02:58+0000\n" +"PO-Revision-Date: 2019-07-02 10:43+0000\n" +"Last-Translator: Julien Thomazeau \n" +"Language-Team: French (France) (https://www.transifex.com/oca/teams/23907/" +"fr_FR/)\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.7.1\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "Production à la demande + Production sur stock" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Entrepôt " diff --git a/stock_mts_mto_rule/i18n/hr.po b/stock_mts_mto_rule/i18n/hr.po new file mode 100644 index 000000000..03157b471 --- /dev/null +++ b/stock_mts_mto_rule/i18n/hr.po @@ -0,0 +1,143 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-27 11:37+0000\n" +"PO-Revision-Date: 2018-02-27 11:37+0000\n" +"Last-Translator: Bole , 2018\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "Izaberite između MTO i MTS pravila" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "MTO pravilo" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "MTO+MTS pravilo" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "MTS pravilo" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "MTS+MTO" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "Make To Order + Make To Stock" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +#, fuzzy +msgid "Stock Rule" +msgstr "MTS pravilo" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "Koristi MTO+MTS pravila" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Skladište" + +#~ msgid "Can't find MTO Rule on the warehouse" +#~ msgstr "Nemogu naći MTO pravilo na skladištu" + +#~ msgid "Can't find MTS Rule on the warehouse" +#~ msgstr "Nemogu naći MTO pravilo na skladištu" + +#~ msgid "Can't find any generic MTS+MTO route." +#~ msgstr "Nemogu naći nijedno generičko MTO+MTS pravilo." + +#~ msgid "Procurement Rule" +#~ msgstr "Pavilo nabave" + +#~ msgid "Mto+Mts Procurement" +#~ msgstr "Mto+Mts Nabava" + +#~ msgid "Procurement" +#~ msgstr "Nabava" + +#~ msgid "Procurements" +#~ msgstr "Nabave" diff --git a/stock_mts_mto_rule/i18n/it.po b/stock_mts_mto_rule/i18n/it.po new file mode 100644 index 000000000..2eb148751 --- /dev/null +++ b/stock_mts_mto_rule/i18n/it.po @@ -0,0 +1,125 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 02:58+0000\n" +"PO-Revision-Date: 2017-07-28 02:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Magazzino" + +#~ msgid "Procurement Rule" +#~ msgstr "Regola d'Approvvigionamento" + +#~ msgid "Procurement" +#~ msgstr "Approvvigionamento" diff --git a/stock_mts_mto_rule/i18n/nl.po b/stock_mts_mto_rule/i18n/nl.po new file mode 100644 index 000000000..59a956b11 --- /dev/null +++ b/stock_mts_mto_rule/i18n/nl.po @@ -0,0 +1,119 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 02:58+0000\n" +"PO-Revision-Date: 2017-07-28 02:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Magazijn" diff --git a/stock_mts_mto_rule/i18n/nl_NL.po b/stock_mts_mto_rule/i18n/nl_NL.po new file mode 100644 index 000000000..5c2d73406 --- /dev/null +++ b/stock_mts_mto_rule/i18n/nl_NL.po @@ -0,0 +1,120 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-23 00:57+0000\n" +"PO-Revision-Date: 2017-06-23 00:57+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "Kies tussen MTS en MTO" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "MTO Regel" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "Op Order + Op Voorrad" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Magazijn" diff --git a/stock_mts_mto_rule/i18n/pt_BR.po b/stock_mts_mto_rule/i18n/pt_BR.po new file mode 100644 index 000000000..f405726b8 --- /dev/null +++ b/stock_mts_mto_rule/i18n/pt_BR.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 02:58+0000\n" +"PO-Revision-Date: 2017-07-28 02:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Armazém" + +#~ msgid "Procurement" +#~ msgstr "Aprovisionamento" diff --git a/stock_mts_mto_rule/i18n/pt_PT.po b/stock_mts_mto_rule/i18n/pt_PT.po new file mode 100644 index 000000000..d3ddb70b0 --- /dev/null +++ b/stock_mts_mto_rule/i18n/pt_PT.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-27 11:37+0000\n" +"PO-Revision-Date: 2018-02-27 11:37+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/" +"teams/23907/pt_PT/)\n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "" + +#~ msgid "Procurement" +#~ msgstr "Aquisições" diff --git a/stock_mts_mto_rule/i18n/ro.po b/stock_mts_mto_rule/i18n/ro.po new file mode 100644 index 000000000..b593efc11 --- /dev/null +++ b/stock_mts_mto_rule/i18n/ro.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 02:58+0000\n" +"PO-Revision-Date: 2017-07-28 02:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "" + +#~ msgid "Procurement" +#~ msgstr "Aprovizionare" diff --git a/stock_mts_mto_rule/i18n/sk.po b/stock_mts_mto_rule/i18n/sk.po new file mode 100644 index 000000000..567a455f8 --- /dev/null +++ b/stock_mts_mto_rule/i18n/sk.po @@ -0,0 +1,122 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-27 11:37+0000\n" +"PO-Revision-Date: 2018-02-27 11:37+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Slovak (https://www.transifex.com/oca/teams/23907/sk/)\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "" + +#~ msgid "Procurement" +#~ msgstr "Obstarávanie" diff --git a/stock_mts_mto_rule/i18n/sl.po b/stock_mts_mto_rule/i18n/sl.po new file mode 100644 index 000000000..79d416dc4 --- /dev/null +++ b/stock_mts_mto_rule/i18n/sl.po @@ -0,0 +1,145 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-31 08:35+0000\n" +"PO-Revision-Date: 2020-08-11 10:59+0000\n" +"Last-Translator: Matjaz Mozetic \n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " +"n%100==4 ? 2 : 3;\n" +"X-Generator: Weblate 3.10\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "Izbira med 'Na zalogo' in 'Po naročilu'" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" +"Če je na prikazu obrazca proizvoda izbrana ta proga, se nabavni nalog " +"ustvari le, če je navidezna zaloga manj od 0. V nasprotnem primeru se " +"proizvod vzame iz zaloge" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "Pravilo 'Po naročilu'" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "Pravilo 'Po naročilu' + 'Na zalogo'" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "Pravilo 'Na zalogo'" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "Na zalogo + Po naročilu" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "Naredi po naročilu + Naredi na zalogo" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "Pravilo zalog" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "Uporabi pravila Po naročilu + Na zalogo" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "Skladišče" + +#~ msgid "Can't find MTO Rule on the warehouse" +#~ msgstr "Za skladišče ni pravila 'po naročilu'" + +#~ msgid "Can't find MTS Rule on the warehouse" +#~ msgstr "Za skladišče ni pravila 'na zalogo'" + +#~ msgid "Can't find any generic MTS+MTO route." +#~ msgstr "Ni generične proge 'na zalogo' + 'po naročilu'" + +#~ msgid "Procurement Rule" +#~ msgstr "Oskrbovalno pravilo" + +#~ msgid "Mto+Mts Procurement" +#~ msgstr "Oskrbovanja 'po naročilu'+'na zalogo'" + +#~ msgid "Procurement" +#~ msgstr "Oskrbovanje" + +#~ msgid "Procurements" +#~ msgstr "Oskrbovanja" diff --git a/stock_mts_mto_rule/i18n/stock_mts_mto_rule.pot b/stock_mts_mto_rule/i18n/stock_mts_mto_rule.pot new file mode 100644 index 000000000..8a75668c9 --- /dev/null +++ b/stock_mts_mto_rule/i18n/stock_mts_mto_rule.pot @@ -0,0 +1,110 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "If this new route is selected on product form view, a purchase order will be created only if the virtual stock is less than 0 else, the product will be taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "Inconsistency between the source locations of the mts and mto rules linked to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "" + diff --git a/stock_mts_mto_rule/i18n/tr_TR.po b/stock_mts_mto_rule/i18n/tr_TR.po new file mode 100644 index 000000000..2a12da600 --- /dev/null +++ b/stock_mts_mto_rule/i18n/tr_TR.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-27 11:37+0000\n" +"PO-Revision-Date: 2018-02-27 11:37+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/" +"tr_TR/)\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "" + +#~ msgid "Procurement" +#~ msgstr "Satın alma" diff --git a/stock_mts_mto_rule/i18n/vi_VN.po b/stock_mts_mto_rule/i18n/vi_VN.po new file mode 100644 index 000000000..8d79ba27e --- /dev/null +++ b/stock_mts_mto_rule/i18n/vi_VN.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 02:58+0000\n" +"PO-Revision-Date: 2017-07-28 02:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/oca/" +"teams/23907/vi_VN/)\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "" + +#~ msgid "Procurement" +#~ msgstr "Mua sắm / Cung ứng" diff --git a/stock_mts_mto_rule/i18n/zh_CN.po b/stock_mts_mto_rule/i18n/zh_CN.po new file mode 100644 index 000000000..b6c30d41e --- /dev/null +++ b/stock_mts_mto_rule/i18n/zh_CN.po @@ -0,0 +1,124 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_mts_mto_rule +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 02:58+0000\n" +"PO-Revision-Date: 2019-10-10 17:37+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.8\n" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__action +msgid "Action" +msgstr "动作" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Buy" +msgstr "购买" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Choose between MTS and MTO" +msgstr "在MTS和MTO之间选择" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,help:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "" +"If this new route is selected on product form view, a purchase order will be " +"created only if the virtual stock is less than 0 else, the product will be " +"taken from stocks" +msgstr "如果在产品表单视图中选择了此新路线,则仅当虚拟库存小于0时才创建采购订单,否则将从库存中提取产品" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:28 +#, python-format +msgid "" +"Inconsistency between the source locations of the mts and mto rules linked " +"to the procurement rule: %s! It should be the same." +msgstr "链接到采购规则的MTS和MTO规则的源位置不一致:%s!应该是一样的。" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mto_rule_id +msgid "MTO Rule" +msgstr "MTO规则" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mts_mto_rule_id +msgid "MTO+MTS rule" +msgstr "MTO+MTS 规则" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_rule__mts_rule_id +msgid "MTS Rule" +msgstr "MTS规则" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:36 +#, python-format +msgid "MTS+MTO" +msgstr "MTS+MTO" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_warehouse.py:57 +#: model:stock.location.route,name:stock_mts_mto_rule.route_mto_mts +#, python-format +msgid "Make To Order + Make To Stock" +msgstr "按订单生产+按库存生产" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Manufacture" +msgstr "制造" + +#. module: stock_mts_mto_rule +#: code:addons/stock_mts_mto_rule/models/stock_rule.py:23 +#, python-format +msgid "No MTS or MTO rule configured on procurement rule: %s!" +msgstr "采购规则上未配置MTS或MTO规则:%s!" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull & Push" +msgstr "推拉" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Pull From" +msgstr "拉" + +#. module: stock_mts_mto_rule +#: selection:stock.rule,action:0 +msgid "Push To" +msgstr "推" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_rule +msgid "Stock Rule" +msgstr "库存规则" + +#. module: stock_mts_mto_rule +#: model:ir.model.fields,field_description:stock_mts_mto_rule.field_stock_warehouse__mto_mts_management +msgid "Use MTO+MTS rules" +msgstr "使用MTO+MTS规则" + +#. module: stock_mts_mto_rule +#: model:ir.model,name:stock_mts_mto_rule.model_stock_warehouse +msgid "Warehouse" +msgstr "仓库" + +#~ msgid "Procurement" +#~ msgstr "补货" diff --git a/stock_mts_mto_rule/models/__init__.py b/stock_mts_mto_rule/models/__init__.py new file mode 100644 index 000000000..58f5bc0da --- /dev/null +++ b/stock_mts_mto_rule/models/__init__.py @@ -0,0 +1,2 @@ +from . import stock_rule +from . import stock_warehouse diff --git a/stock_mts_mto_rule/models/stock_rule.py b/stock_mts_mto_rule/models/stock_rule.py new file mode 100644 index 000000000..e122a0cb8 --- /dev/null +++ b/stock_mts_mto_rule/models/stock_rule.py @@ -0,0 +1,106 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError +from odoo.osv import expression +from odoo.tools import float_compare, float_is_zero + + +class StockRule(models.Model): + _inherit = "stock.rule" + + action = fields.Selection( + selection_add=[("split_procurement", "Choose between MTS and MTO")] + ) + mts_rule_id = fields.Many2one("stock.rule", string="MTS Rule", check_company=True) + mto_rule_id = fields.Many2one("stock.rule", string="MTO Rule", check_company=True) + + @api.constrains("action", "mts_rule_id", "mto_rule_id") + def _check_mts_mto_rule(self): + for rule in self: + if rule.action == "split_procurement": + if not rule.mts_rule_id or not rule.mto_rule_id: + msg = _( + "No MTS or MTO rule configured on procurement " "rule: %s!" + ) % (rule.name,) + raise ValidationError(msg) + if ( + rule.mts_rule_id.location_src_id.id + != rule.mto_rule_id.location_src_id.id + ): + msg = _( + "Inconsistency between the source locations of " + "the mts and mto rules linked to the procurement " + "rule: %s! It should be the same." + ) % (rule.name,) + raise ValidationError(msg) + + def get_mto_qty_to_order(self, product, product_qty, product_uom, values): + self.ensure_one() + precision = self.env["decimal.precision"].precision_get( + "Product Unit of Measure" + ) + src_location_id = self.mts_rule_id.location_src_id.id + product_location = product.with_context(location=src_location_id) + virtual_available = product_location.virtual_available + qty_available = product.uom_id._compute_quantity(virtual_available, product_uom) + if float_compare(qty_available, 0.0, precision_digits=precision) > 0: + if ( + float_compare(qty_available, product_qty, precision_digits=precision) + >= 0 + ): + return 0.0 + else: + return product_qty - qty_available + return product_qty + + def _run_split_procurement(self, procurements): + precision = self.env["decimal.precision"].precision_get( + "Product Unit of Measure" + ) + for procurement, rule in procurements: + domain = self.env["procurement.group"]._get_moves_to_assign_domain( + procurement.company_id.id + ) + needed_qty = rule.get_mto_qty_to_order( + procurement.product_id, + procurement.product_qty, + procurement.product_uom, + procurement.values, + ) + if float_is_zero(needed_qty, precision_digits=precision): + getattr(self.env["stock.rule"], "_run_%s" % rule.mts_rule_id.action)( + [(procurement, rule.mts_rule_id)] + ) + elif ( + float_compare( + needed_qty, procurement.product_qty, precision_digits=precision + ) + == 0.0 + ): + getattr(self.env["stock.rule"], "_run_%s" % rule.mto_rule_id.action)( + [(procurement, rule.mto_rule_id)] + ) + else: + mts_qty = procurement.product_qty - needed_qty + mts_procurement = procurement._replace(product_qty=mts_qty) + getattr(self.env["stock.rule"], "_run_%s" % rule.mts_rule_id.action)( + [(mts_procurement, rule.mts_rule_id)] + ) + + # Search all confirmed stock_moves of mts_procuremet and assign them + # to adjust the product's free qty + group_id = mts_procurement.values.get("group_id") + group_domain = expression.AND( + [domain, [("group_id", "=", group_id.id)]] + ) + moves_to_assign = self.env["stock.move"].search( + group_domain, order="priority desc, date_expected asc" + ) + moves_to_assign._action_assign() + + mto_procurement = procurement._replace(product_qty=needed_qty) + getattr(self.env["stock.rule"], "_run_%s" % rule.mto_rule_id.action)( + [(mto_procurement, rule.mto_rule_id)] + ) + return True diff --git a/stock_mts_mto_rule/models/stock_warehouse.py b/stock_mts_mto_rule/models/stock_warehouse.py new file mode 100644 index 000000000..c63675fab --- /dev/null +++ b/stock_mts_mto_rule/models/stock_warehouse.py @@ -0,0 +1,104 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, fields, models + + +class StockWarehouse(models.Model): + _inherit = "stock.warehouse" + + mto_mts_management = fields.Boolean( + "Use MTO+MTS rules", + help="If this new route is selected on product form view, a " + "purchase order will be created only if the virtual stock is " + "less than 0 else, the product will be taken from stocks", + ) + mts_mto_rule_id = fields.Many2one("stock.rule", "MTO+MTS rule", check_company=True) + + def _get_all_routes(self): + routes = super(StockWarehouse, self)._get_all_routes() + routes |= self.mapped("mts_mto_rule_id.route_id") + return routes + + def _update_name_and_code(self, new_name=False, new_code=False): + res = super(StockWarehouse, self)._update_name_and_code(new_name, new_code) + if not new_name: + return res + for warehouse in self.filtered("mts_mto_rule_id"): + warehouse.mts_mto_rule_id.write( + { + "name": warehouse.mts_mto_rule_id.name.replace( + warehouse.name, new_name, 1 + ), + } + ) + return res + + def _get_route_name(self, route_type): + if route_type == "mts_mto": + return _("MTS+MTO") + return super(StockWarehouse, self)._get_route_name(route_type) + + def _get_global_route_rules_values(self): + rule = self.get_rules_dict()[self.id][self.delivery_steps] + rule = [r for r in rule if r.from_loc == self.lot_stock_id][0] + location_id = rule.from_loc + location_dest_id = rule.dest_loc + picking_type_id = rule.picking_type + res = super(StockWarehouse, self)._get_global_route_rules_values() + res.update( + { + "mts_mto_rule_id": { + "depends": ["delivery_steps", "mto_mts_management"], + "create_values": { + "action": "pull", + "procure_method": "make_to_order", + "company_id": self.company_id.id, + "auto": "manual", + "propagate_cancel": True, + "route_id": self._find_global_route( + "stock_mts_mto_rule.route_mto_mts", + _("Make To Order + Make To Stock"), + ).id, + }, + "update_values": { + "active": self.mto_mts_management, + "name": self._format_rulename( + location_id, location_dest_id, "MTS+MTO" + ), + "location_id": location_dest_id.id, + "location_src_id": location_id.id, + "picking_type_id": picking_type_id.id, + }, + }, + } + ) + return res + + def _create_or_update_global_routes_rules(self): + res = super(StockWarehouse, self)._create_or_update_global_routes_rules() + + if ( + self.mto_mts_management + and self.mts_mto_rule_id + and self.mts_mto_rule_id.action != "split_procurement" + ): + # Cannot create or update with the 'split_procurement' action due + # to constraint and the fact that the constrained rule_ids may + # not exist during the initial (or really any) calls of + # _get_global_route_rules_values + rule = self.env["stock.rule"].search( + [ + ("location_id", "=", self.mts_mto_rule_id.location_id.id), + ("location_src_id", "=", self.mts_mto_rule_id.location_src_id.id), + ("route_id", "=", self.delivery_route_id.id), + ], + limit=1, + ) + self.mts_mto_rule_id.write( + { + "action": "split_procurement", + "mts_rule_id": rule.id, + "mto_rule_id": self.mto_pull_id.id, + } + ) + return res diff --git a/stock_mts_mto_rule/static/description/icon.png b/stock_mts_mto_rule/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/stock_mts_mto_rule/static/description/icon.png differ diff --git a/stock_mts_mto_rule/tests/__init__.py b/stock_mts_mto_rule/tests/__init__.py new file mode 100644 index 000000000..51420794c --- /dev/null +++ b/stock_mts_mto_rule/tests/__init__.py @@ -0,0 +1 @@ +from . import test_mto_mts_route diff --git a/stock_mts_mto_rule/tests/test_mto_mts_route.py b/stock_mts_mto_rule/tests/test_mto_mts_route.py new file mode 100644 index 000000000..0f4609192 --- /dev/null +++ b/stock_mts_mto_rule/tests/test_mto_mts_route.py @@ -0,0 +1,246 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import exceptions +from odoo.tests.common import TransactionCase + + +class TestMtoMtsRoute(TransactionCase): + def _create_quant(self, qty): + self.quant = self.env["stock.quant"].create( + { + "owner_id": self.company_partner.id, + "location_id": self.env.ref("stock.stock_location_stock").id, + "product_id": self.product.id, + "quantity": qty, + } + ) + + def test_standard_mto_route(self): + mto_route = self.env.ref("stock.route_warehouse0_mto") + self.product.route_ids = [(6, 0, [mto_route.id])] + self.env["procurement.group"].run( + [ + self.group.Procurement( + self.product, + 2.0, + self.uom, + self.customer_loc, + self.product.name, + "test", + self.warehouse.company_id, + self.procurement_vals, + ) + ] + ) + moves = self.move_obj.search([("group_id", "=", self.group.id)]) + self.assertEqual(len(moves), 2) + + def test_standard_mts_route(self): + self.env["procurement.group"].run( + [ + self.group.Procurement( + self.product, + 2.0, + self.uom, + self.customer_loc, + self.product.name, + "test", + self.warehouse.company_id, + self.procurement_vals, + ) + ] + ) + moves = self.move_obj.search([("group_id", "=", self.group.id)]) + self.assertEqual(len(moves), 1) + + def test_mts_mto_route_split(self): + mto_mts_route = self.env.ref("stock_mts_mto_rule.route_mto_mts") + self.product.route_ids = [(6, 0, [mto_mts_route.id])] + self._create_quant(1.0) + self.env["procurement.group"].run( + [ + self.group.Procurement( + self.product, + 2.0, + self.uom, + self.customer_loc, + self.product.name, + "test", + self.warehouse.company_id, + self.procurement_vals, + ) + ] + ) + moves = self.env["stock.move"].search([("group_id", "=", self.group.id)]) + self.assertEqual(3, len(moves)) + move_mts = self.env["stock.move"].search( + [ + ("group_id", "=", self.group.id), + ("location_dest_id", "=", self.customer_loc.id), + ("procure_method", "=", "make_to_stock"), + ] + ) + self.assertEqual(1, len(move_mts)) + self.assertEqual(1.0, move_mts.product_uom_qty) + self.assertEqual("assigned", move_mts.state) + move_mto = self.env["stock.move"].search( + [ + ("group_id", "=", self.group.id), + ("location_dest_id", "=", self.customer_loc.id), + ("procure_method", "=", "make_to_order"), + ] + ) + self.assertEqual(1, len(move_mto)) + self.assertEqual("waiting", move_mto.state) + + def test_mts_mto_route_mto_only(self): + mto_mts_route = self.env.ref("stock_mts_mto_rule.route_mto_mts") + self.product.route_ids = [(6, 0, [mto_mts_route.id])] + self.env["procurement.group"].run( + [ + self.group.Procurement( + self.product, + 2.0, + self.uom, + self.customer_loc, + self.product.name, + "test", + self.warehouse.company_id, + self.procurement_vals, + ) + ] + ) + moves = self.env["stock.move"].search( + [ + ("group_id", "=", self.group.id), + ("location_dest_id", "=", self.customer_loc.id), + ] + ) + self.assertEqual(1, len(moves)) + self.assertEqual(2.0, moves[0].product_uom_qty) + self.assertEqual("make_to_order", moves[0].procure_method) + + def test_mts_mto_route_mts_only(self): + mto_mts_route = self.env.ref("stock_mts_mto_rule.route_mto_mts") + self.product.route_ids = [(6, 0, [mto_mts_route.id])] + self._create_quant(3.0) + self.env["procurement.group"].run( + [ + self.group.Procurement( + self.product, + 2.0, + self.uom, + self.customer_loc, + self.product.name, + "test", + self.warehouse.company_id, + self.procurement_vals, + ) + ] + ) + moves = self.env["stock.move"].search([("group_id", "=", self.group.id)]) + self.assertEqual(1, len(moves)) + self.assertEqual(2.0, moves[0].product_uom_qty) + self.assertEqual("make_to_stock", moves[0].procure_method) + + def test_mts_mto_rule_contrains(self): + rule = self.env["stock.rule"].search( + [("action", "=", "split_procurement")], limit=1 + ) + with self.assertRaises(exceptions.ValidationError): + rule.write({"mts_rule_id": False}) + with self.assertRaises(exceptions.ValidationError): + rule.write({"mts_rule_id": self.dummy_rule.id}) + + def test_mts_mto_route_mto_removed(self): + self.env.ref("stock_mts_mto_rule.route_mto_mts").unlink() + with self.assertRaises(exceptions.UserError): + # mts_mto_rule_id is checked as a global rule + self.warehouse.mts_mto_rule_id = False + + def test_mts_mto_route_mts_removed(self): + self.warehouse.mto_mts_management = True + rules = self.env["stock.rule"].search( + [ + ("location_src_id", "=", self.warehouse.lot_stock_id.id), + ("route_id", "=", self.warehouse.delivery_route_id.id), + ] + ) + self.env.cr.execute( + "UPDATE stock_move SET rule_id = NULL WHERE rule_id IN %s", + (tuple(rules.ids),), + ) + self.warehouse.mts_mto_rule_id = False + self.warehouse.mto_mts_management = True + self.assertTrue(self.warehouse.mts_mto_rule_id) + + def test_mts_mto_route_mto_no_mts_rule(self): + self.warehouse.mts_mto_rule_id = False + self.warehouse.mto_pull_id = False + self.warehouse.mto_mts_management = True + self.assertTrue(self.warehouse.mts_mto_rule_id) + + def test_create_routes(self): + self.warehouse._create_or_update_route() + mts_mto_route = self.warehouse.mts_mto_rule_id + self.assertEqual(mts_mto_route.warehouse_id, self.warehouse) + self.assertEqual( + mts_mto_route.location_id, self.warehouse.mto_pull_id.location_id + ) + self.assertEqual( + mts_mto_route.picking_type_id, self.warehouse.mto_pull_id.picking_type_id + ) + self.assertEqual( + mts_mto_route.route_id, self.env.ref("stock_mts_mto_rule.route_mto_mts") + ) + + def test_remove_mts_mto_management(self): + warehouse_rule = self.warehouse.mts_mto_rule_id + self.assertTrue(self.warehouse.mts_mto_rule_id) + self.warehouse.mto_mts_management = False + self.assertFalse(warehouse_rule.active) + + def test_get_all_routes_for_wh(self): + routes = self.warehouse._get_all_routes() + self.assertTrue(self.warehouse.mts_mto_rule_id) + self.assertTrue(self.warehouse.mts_mto_rule_id.route_id in routes) + + def test_rename_warehouse(self): + rule_name = self.warehouse.mts_mto_rule_id.name + new_warehouse_name = "NewName" + new_rule_name = rule_name.replace(self.warehouse.name, new_warehouse_name, 1) + self.warehouse.name = new_warehouse_name + self.assertEqual(new_rule_name, self.warehouse.mts_mto_rule_id.name) + + def setUp(self): + super(TestMtoMtsRoute, self).setUp() + self.move_obj = self.env["stock.move"] + self.warehouse = self.env.ref("stock.warehouse0") + self.uom = self.env["uom.uom"].browse(1) + self.warehouse.mto_mts_management = True + self.customer_loc = self.env.ref("stock.stock_location_customers") + self.product = self.env["product.product"].create( + {"name": "Test product", "type": "product"} + ) + self.company_partner = self.env.ref("base.main_partner") + self.group = self.env["procurement.group"].create({"name": "test"}) + self.procurement_vals = {"warehouse_id": self.warehouse, "group_id": self.group} + # Since mrp and purchase modules may not be installed, we need to + # create a dummy step to show that mts, mto, and mts+mto flows work. + # Else, if purchase/manufacture are not installed, the mto would fail. + route_vals = { + "warehouse_selectable": True, + "name": "dummy route", + } + self.dummy_route = self.env["stock.location.route"].create(route_vals) + rule_vals = { + "location_id": self.env.ref("stock.stock_location_stock").id, + "location_src_id": self.env.ref("stock.stock_location_suppliers").id, + "action": "pull", + "warehouse_id": self.warehouse.id, + "picking_type_id": self.env.ref("stock.picking_type_out").id, + "name": "dummy rule", + "route_id": self.dummy_route.id, + } + self.dummy_rule = self.env["stock.rule"].create(rule_vals) + self.warehouse.write({"route_ids": [(4, self.dummy_route.id)]}) diff --git a/stock_mts_mto_rule/view/pull_rule.xml b/stock_mts_mto_rule/view/pull_rule.xml new file mode 100644 index 000000000..3117d7ba7 --- /dev/null +++ b/stock_mts_mto_rule/view/pull_rule.xml @@ -0,0 +1,41 @@ + + + + stock.location.route.form.mts.mto + stock.location.route + + + + + + + + + + stock.rule.form.mts.mto + stock.rule + + + + + + + + + diff --git a/stock_mts_mto_rule/view/warehouse.xml b/stock_mts_mto_rule/view/warehouse.xml new file mode 100644 index 000000000..0abc6e5d8 --- /dev/null +++ b/stock_mts_mto_rule/view/warehouse.xml @@ -0,0 +1,13 @@ + + + + view_warehouse_inherited + stock.warehouse + + + + + + + +